fix(docs-infra): ignore ng*Def
members in API docs (#31378)
`ng*Def` properties (such as `ngInjectorDef`) are not considered part of the public API and should not appear in the API docs. This commit adds a filter to remove these properties from the docs metadata. PR Close #31378
This commit is contained in:
parent
efbce7501b
commit
9364a14d36
@ -29,6 +29,7 @@ module.exports =
|
|||||||
.processor(require('./processors/processClassLikeMembers'))
|
.processor(require('./processors/processClassLikeMembers'))
|
||||||
.processor(require('./processors/markBarredODocsAsPrivate'))
|
.processor(require('./processors/markBarredODocsAsPrivate'))
|
||||||
.processor(require('./processors/filterPrivateDocs'))
|
.processor(require('./processors/filterPrivateDocs'))
|
||||||
|
.processor(require('./processors/filterMembers'))
|
||||||
.processor(require('./processors/computeSearchTitle'))
|
.processor(require('./processors/computeSearchTitle'))
|
||||||
.processor(require('./processors/simplifyMemberAnchors'))
|
.processor(require('./processors/simplifyMemberAnchors'))
|
||||||
.processor(require('./processors/computeStability'))
|
.processor(require('./processors/computeStability'))
|
||||||
@ -176,6 +177,12 @@ module.exports =
|
|||||||
filterContainedDocs.docTypes = API_CONTAINED_DOC_TYPES;
|
filterContainedDocs.docTypes = API_CONTAINED_DOC_TYPES;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.config(function(filterMembers) {
|
||||||
|
filterMembers.notAllowedPatterns.push(
|
||||||
|
/^ng[A-Z].*Def$/
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
.config(function(computePathsProcessor, EXPORT_DOC_TYPES, generateApiListDoc) {
|
.config(function(computePathsProcessor, EXPORT_DOC_TYPES, generateApiListDoc) {
|
||||||
|
|
||||||
|
21
aio/tools/transforms/angular-api-package/processors/filterMembers.js
vendored
Normal file
21
aio/tools/transforms/angular-api-package/processors/filterMembers.js
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* Filter out members (i.e. static and instance properties and methods) that match specific
|
||||||
|
* patterns. Patterns can be added (as `RegExp`s) to the `notAllowedPatterns` array.
|
||||||
|
*
|
||||||
|
* (By default, no members are excluded.)
|
||||||
|
*/
|
||||||
|
module.exports = function filterMembers() {
|
||||||
|
return {
|
||||||
|
$runAfter: ['processing-docs'],
|
||||||
|
$runBefore: ['docs-processed'],
|
||||||
|
notAllowedPatterns: [],
|
||||||
|
$process(docs) {
|
||||||
|
const isAllowed = ({name}) => !this.notAllowedPatterns.some(re => re.test(name));
|
||||||
|
|
||||||
|
docs.forEach(doc => {
|
||||||
|
if (doc.statics) doc.statics = doc.statics.filter(isAllowed);
|
||||||
|
if (doc.members) doc.members = doc.members.filter(isAllowed);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
@ -0,0 +1,102 @@
|
|||||||
|
const processorFactory = require('./filterMembers');
|
||||||
|
const testPackage = require('../../helpers/test-package');
|
||||||
|
const Dgeni = require('dgeni');
|
||||||
|
|
||||||
|
describe('filterMembers processor', () => {
|
||||||
|
|
||||||
|
it('should be available on the injector', () => {
|
||||||
|
const dgeni = new Dgeni([testPackage('angular-api-package')]);
|
||||||
|
const injector = dgeni.configureInjector();
|
||||||
|
const processor = injector.get('filterMembers');
|
||||||
|
expect(processor.$process).toBeDefined();
|
||||||
|
expect(processor.$runAfter).toEqual(['processing-docs']);
|
||||||
|
expect(processor.$runBefore).toEqual(['docs-processed']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should remove members that match one of the not allowed patterns', () => {
|
||||||
|
const processor = processorFactory();
|
||||||
|
processor.notAllowedPatterns = [/^foo/, /bar$/];
|
||||||
|
const docs = [
|
||||||
|
// Doc without members.
|
||||||
|
{ },
|
||||||
|
|
||||||
|
// Doc with static members only.
|
||||||
|
{
|
||||||
|
statics: [
|
||||||
|
{ name: 'fooStatic' }, // Will be removed.
|
||||||
|
{ name: 'FOOStatic' },
|
||||||
|
{ name: 'barStatic' },
|
||||||
|
{ name: 'statiCbar' }, // Will be removed.
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
// Doc with instance members only.
|
||||||
|
{
|
||||||
|
members: [
|
||||||
|
{ name: 'fooInstance' }, // Will be removed.
|
||||||
|
{ name: 'FOOInstance' },
|
||||||
|
{ name: 'barInstance' },
|
||||||
|
{ name: 'instancEbar' }, // Will be removed.
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
// Doc with both static and instance members.
|
||||||
|
{
|
||||||
|
statics: [
|
||||||
|
{ name: 'fooStatic' }, // Will be removed.
|
||||||
|
{ name: 'FOOStatic' },
|
||||||
|
{ name: 'barStatic' },
|
||||||
|
{ name: 'statiCbar' }, // Will be removed.
|
||||||
|
],
|
||||||
|
members: [
|
||||||
|
{ name: 'fooInstance' }, // Will be removed.
|
||||||
|
{ name: 'FOOInstance' },
|
||||||
|
{ name: 'barInstance' },
|
||||||
|
{ name: 'instancEbar' }, // Will be removed.
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
processor.$process(docs);
|
||||||
|
|
||||||
|
expect(docs).toEqual([
|
||||||
|
{ },
|
||||||
|
{
|
||||||
|
statics: [ { name: 'FOOStatic' }, { name: 'barStatic' } ],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
members: [ { name: 'FOOInstance' }, { name: 'barInstance' } ],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
statics: [ { name: 'FOOStatic' }, { name: 'barStatic' } ],
|
||||||
|
members: [ { name: 'FOOInstance' }, { name: 'barInstance' } ],
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should remove no members by default', () => {
|
||||||
|
const processor = processorFactory();
|
||||||
|
const expectedDocs = [
|
||||||
|
{
|
||||||
|
statics: [
|
||||||
|
{ name: '' },
|
||||||
|
{ name: 'foo' },
|
||||||
|
{ name: '__bar' },
|
||||||
|
{ name: 'ngBazDef' },
|
||||||
|
],
|
||||||
|
members: [
|
||||||
|
{ name: '' },
|
||||||
|
{ name: 'foo' },
|
||||||
|
{ name: '__bar' },
|
||||||
|
{ name: 'ngBazDef' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const actualDocs = JSON.parse(JSON.stringify(expectedDocs));
|
||||||
|
|
||||||
|
processor.$process(actualDocs);
|
||||||
|
|
||||||
|
expect(processor.notAllowedPatterns).toEqual([]);
|
||||||
|
expect(actualDocs).toEqual(expectedDocs);
|
||||||
|
});
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user