build(docs-infra): remove legacy jsdoc tag processing (#26039)
PR Close #26039
This commit is contained in:
		
							parent
							
								
									cf8ad24dcf
								
							
						
					
					
						commit
						3808416479
					
				| @ -14,7 +14,6 @@ const { API_SOURCE_PATH, API_TEMPLATES_PATH, requireFolder } = require('../confi | ||||
| module.exports = new Package('angular-api', [basePackage, typeScriptPackage]) | ||||
| 
 | ||||
|   // Register the processors
 | ||||
|   .processor(require('./processors/migrateLegacyJSDocTags')) | ||||
|   .processor(require('./processors/splitDescription')) | ||||
|   .processor(require('./processors/convertPrivateClassesToInterfaces')) | ||||
|   .processor(require('./processors/generateApiListDoc')) | ||||
|  | ||||
| @ -42,7 +42,7 @@ const {mergeProperties} = require('../../helpers/utils'); | ||||
|  * | ||||
|  * Finally we want to capture the documentation attached to the call signature interface of the | ||||
|  * associated decorator (1). We copy across the properties that we care about from this call | ||||
|  * signature (e.g. description, whatItDoes and howToUse). | ||||
|  * signature (e.g. `description` and `usageNotes`). | ||||
|  */ | ||||
| 
 | ||||
| module.exports = function mergeDecoratorDocs(log) { | ||||
|  | ||||
| @ -1,36 +0,0 @@ | ||||
| module.exports = function migrateLegacyJSDocTags(log, createDocMessage) { | ||||
|   return { | ||||
|     $runAfter: ['tags-extracted'], | ||||
|     $runBefore: ['processing-docs'], | ||||
|     $process(docs) { | ||||
|       let migrated = false; | ||||
|       docs.forEach(doc => { | ||||
|         if (doc.howToUse) { | ||||
|           if (doc.usageNotes) { | ||||
|             throw new Error(createDocMessage('`@usageNotes` and the deprecated `@howToUse` are not allowed on the same doc', doc)); | ||||
|           } | ||||
|           log.debug(createDocMessage('Using deprecated `@howToUse` tag as though it was `@usageNotes` tag', doc)); | ||||
|           doc.usageNotes = doc.howToUse; | ||||
|           doc.howToUse = null; | ||||
|           migrated = true; | ||||
|         } | ||||
| 
 | ||||
|         if (doc.whatItDoes) { | ||||
|           log.debug(createDocMessage('Merging the content of `@whatItDoes` tag into the description.', doc)); | ||||
|           if (doc.description) { | ||||
|             doc.description = `${doc.whatItDoes}\n\n${doc.description}`; | ||||
|           } else { | ||||
|             doc.description = doc.whatItDoes; | ||||
|           } | ||||
|           doc.whatItDoes = null; | ||||
|           migrated = true; | ||||
|         } | ||||
|       }); | ||||
| 
 | ||||
|       if (migrated) { | ||||
|         log.warn('Some deprecated tags were migrated.'); | ||||
|         log.warn('This automatic handling will be removed in a future version of the doc generation.\n'); | ||||
|       } | ||||
|     } | ||||
|   }; | ||||
| }; | ||||
| @ -1,66 +0,0 @@ | ||||
| const testPackage = require('../../helpers/test-package'); | ||||
| const processorFactory = require('./migrateLegacyJSDocTags'); | ||||
| const log = require('dgeni/lib/mocks/log')(false); | ||||
| const createDocMessage = require('dgeni-packages/base/services/createDocMessage')(); | ||||
| const Dgeni = require('dgeni'); | ||||
| 
 | ||||
| describe('migrateLegacyJSDocTags processor', () => { | ||||
| 
 | ||||
|   it('should be available on the injector', () => { | ||||
|     const dgeni = new Dgeni([testPackage('angular-api-package')]); | ||||
|     const injector = dgeni.configureInjector(); | ||||
|     const processor = injector.get('migrateLegacyJSDocTags'); | ||||
|     expect(processor.$process).toBeDefined(); | ||||
|   }); | ||||
| 
 | ||||
|   it('should run before the correct processor', () => { | ||||
|     const processor = processorFactory(log, createDocMessage); | ||||
|     expect(processor.$runBefore).toEqual(['processing-docs']); | ||||
|   }); | ||||
| 
 | ||||
|   it('should run after the correct processor', () => { | ||||
|     const processor = processorFactory(log, createDocMessage); | ||||
|     expect(processor.$runAfter).toEqual(['tags-extracted']); | ||||
|   }); | ||||
| 
 | ||||
|   it('should migrate `howToUse` property to `usageNotes` property', () => { | ||||
|     const processor = processorFactory(log, createDocMessage); | ||||
|     const docs = [ | ||||
|       { howToUse: 'this is how to use it' } | ||||
|     ]; | ||||
|     processor.$process(docs); | ||||
|     expect(docs[0].howToUse).toBe(null); | ||||
|     expect(docs[0].usageNotes).toEqual('this is how to use it'); | ||||
|   }); | ||||
| 
 | ||||
|   it('should migrate `whatItDoes` property to the `description`', () => { | ||||
|     const processor = processorFactory(log, createDocMessage); | ||||
|     const docs = [ | ||||
|       { whatItDoes: 'what it does' }, | ||||
|       { whatItDoes: 'what it does', description: 'the description' }, | ||||
|       { description: 'the description' } | ||||
|     ]; | ||||
|     processor.$process(docs); | ||||
|     expect(docs[0].whatItDoes).toBe(null); | ||||
|     expect(docs[0].description).toEqual('what it does'); | ||||
| 
 | ||||
|     expect(docs[1].whatItDoes).toBe(null); | ||||
|     expect(docs[1].description).toEqual('what it does\n\nthe description'); | ||||
| 
 | ||||
|     expect(docs[2].whatItDoes).toBeUndefined(); | ||||
|     expect(docs[2].description).toEqual('the description'); | ||||
|   }); | ||||
| 
 | ||||
|   it('should ignore docs that have neither `howToUse` nor `whatItDoes` properties', () => { | ||||
|     const processor = processorFactory(log, createDocMessage); | ||||
|     const docs = [ | ||||
|       { }, | ||||
|       { description: 'the description' } | ||||
|     ]; | ||||
|     processor.$process(docs); | ||||
|     expect(docs).toEqual([ | ||||
|       { }, | ||||
|       { description: 'the description' } | ||||
|     ]); | ||||
|   }); | ||||
| }); | ||||
| @ -5,7 +5,7 @@ | ||||
|  */ | ||||
| module.exports = function splitDescription() { | ||||
|   return { | ||||
|     $runAfter: ['tags-extracted', 'migrateLegacyJSDocTags'], | ||||
|     $runAfter: ['tags-extracted'], | ||||
|     $runBefore: ['processing-docs'], | ||||
|     docTypes: [], | ||||
|     $process(docs) { | ||||
|  | ||||
| @ -18,7 +18,7 @@ describe('splitDescription processor', () => { | ||||
| 
 | ||||
|   it('should run after the correct processor', () => { | ||||
|     const processor = processorFactory(); | ||||
|     expect(processor.$runAfter).toEqual(['tags-extracted', 'migrateLegacyJSDocTags']); | ||||
|     expect(processor.$runAfter).toEqual(['tags-extracted']); | ||||
|   }); | ||||
| 
 | ||||
|   it('should split the `description` property into the first paragraph and other paragraphs', () => { | ||||
|  | ||||
| @ -1,11 +0,0 @@ | ||||
| module.exports = function(log, createDocMessage) { | ||||
|   return { | ||||
|     name: 'howToUse', | ||||
|     deprecated: true, | ||||
|     transforms(doc, tag, value) { | ||||
|       log.warn(createDocMessage('Deprecated `@howToUse` tag found', doc)); | ||||
|       log.warn('PLEASE FIX by renaming to `@usageNotes.'); | ||||
|       return value; | ||||
|     } | ||||
|   }; | ||||
| }; | ||||
| @ -1,11 +0,0 @@ | ||||
| module.exports = function(log, createDocMessage) { | ||||
|   return { | ||||
|     name: 'whatItDoes', | ||||
|     deprecated: true, | ||||
|     transforms(doc, tag, value) { | ||||
|       log.warn(createDocMessage('Deprecated `@whatItDoes` tag found', doc)); | ||||
|       log.warn('PLEASE FIX by adding the content of this tag as the first paragraph of the `@description` tag.'); | ||||
|       return value; | ||||
|     } | ||||
|   }; | ||||
| }; | ||||
| @ -8,10 +8,9 @@ other templates. Templates can also import macros from other template files. | ||||
| When extending a template, parent must declare blocks that can be overridden by the | ||||
| child. The template extension hierarchy looks like this (with declared blocks in parentheses): | ||||
| 
 | ||||
| - layout/base.template.html (base) | ||||
|   - module.template.html | ||||
|   - layout/api-base.template.html (jumpNav, jumpNavLinks, whatItDoes, infoBar, securityConsiderations, | ||||
|     deprecationNotes, howToUse, details) | ||||
| - layout/base.template.html (bread-crumbs, header, embedded contents and body) | ||||
|   - package.template.html | ||||
|   - export-base.template.html (short-description, security-notes, deprecation, overview, see-also, details, usageNotes) | ||||
|     - class.template.html | ||||
|       - directive.template.html | ||||
|     - enum.template.html | ||||
| @ -21,8 +20,10 @@ child. The template extension hierarchy looks like this (with declared blocks in | ||||
|     - decorator.template.html | ||||
|     - function.template.html | ||||
|     - interface.template.html | ||||
|       - value-module.template.html | ||||
|     - type-alias.template.html | ||||
|     - pipe.template.html | ||||
|     - ngmodule.template.html | ||||
| 
 | ||||
| # Doc Properties | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user