56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| module.exports = function generateApiListDoc() {
 | |
| 
 | |
|   return {
 | |
|     $runAfter: ['extra-docs-added'],
 | |
|     $runBefore: ['rendering-docs'],
 | |
|     outputFolder: null,
 | |
|     $validate: {outputFolder: {presence: true}},
 | |
|     $process: function(docs) {
 | |
|       docs.push({
 | |
|         docType: 'api-list-data',
 | |
|         template: 'json-doc.template.json',
 | |
|         path: this.outputFolder + '/api-list.json',
 | |
|         outputPath: this.outputFolder + '/api-list.json',
 | |
|         data: docs
 | |
|           .filter(doc => doc.docType === 'module')
 | |
|           .map(getModuleInfo)
 | |
|       });
 | |
|     }
 | |
|   };
 | |
| };
 | |
| 
 | |
| function getModuleInfo(moduleDoc) {
 | |
|   const moduleName = moduleDoc.id.replace(/\/index$/, '');
 | |
|   return {
 | |
|     name: moduleName.toLowerCase(),
 | |
|     title: moduleName,
 | |
|     items: moduleDoc.exports
 | |
|                   // Ignore internals and private exports (indicated by the ɵ prefix)
 | |
|                   .filter(doc => !doc.internal && !doc.privateExport).map(getExportInfo)
 | |
|   };
 | |
| }
 | |
| 
 | |
| function getExportInfo(exportDoc) {
 | |
|   return {
 | |
|     name: exportDoc.name.toLowerCase(),
 | |
|     title: exportDoc.name,
 | |
|     path: exportDoc.path,
 | |
|     docType: getDocType(exportDoc),
 | |
|     stability: getStability(exportDoc),
 | |
|     securityRisk: !!exportDoc.security
 | |
|   };
 | |
| }
 | |
| 
 | |
| function getDocType(doc) {
 | |
|   // We map `let` and `var` types to `const`
 | |
|   if (['let', 'var'].indexOf(doc.docType) !== -1) {
 | |
|     return 'const';
 | |
|   }
 | |
|   return doc.docType;
 | |
| }
 | |
| 
 | |
| const stabilityProperties = ['stable', 'experimental', 'deprecated'];
 | |
| function getStability(doc) {
 | |
|   return stabilityProperties.find(prop => doc.hasOwnProperty(prop)) || '';
 | |
| }
 |