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/markBarredODocsAsPrivate')) | ||||
|         .processor(require('./processors/filterPrivateDocs')) | ||||
|         .processor(require('./processors/filterMembers')) | ||||
|         .processor(require('./processors/computeSearchTitle')) | ||||
|         .processor(require('./processors/simplifyMemberAnchors')) | ||||
|         .processor(require('./processors/computeStability')) | ||||
| @ -176,6 +177,12 @@ module.exports = | ||||
|           filterContainedDocs.docTypes = API_CONTAINED_DOC_TYPES; | ||||
|         }) | ||||
| 
 | ||||
|         .config(function(filterMembers) { | ||||
|           filterMembers.notAllowedPatterns.push( | ||||
|             /^ng[A-Z].*Def$/ | ||||
|           ); | ||||
|         }) | ||||
| 
 | ||||
| 
 | ||||
|         .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