64 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								const { dirname } = require('canonical-path');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = function processPackages() {
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    $runAfter: ['extractDecoratedClassesProcessor'],
							 | 
						||
| 
								 | 
							
								    $runBefore: ['computing-ids'],
							 | 
						||
| 
								 | 
							
								    $process(docs) {
							 | 
						||
| 
								 | 
							
								      const packageContentFiles = {};
							 | 
						||
| 
								 | 
							
								      const packageMap = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      docs = docs.filter(doc => {
							 | 
						||
| 
								 | 
							
								        if (doc.docType === 'package-content') {
							 | 
						||
| 
								 | 
							
								          packageContentFiles[dirname(doc.fileInfo.filePath)] = doc;
							 | 
						||
| 
								 | 
							
								          return false;
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								          return true;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      docs.forEach(doc => {
							 | 
						||
| 
								 | 
							
								        if (doc.docType === 'module') {
							 | 
						||
| 
								 | 
							
								          // Convert the doc type from "module" to "package"
							 | 
						||
| 
								 | 
							
								          doc.docType = 'package';
							 | 
						||
| 
								 | 
							
								          // The name is actually the full id
							 | 
						||
| 
								 | 
							
								          doc.name = `@angular/${doc.id}`;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          // Partition the exports into groups by type
							 | 
						||
| 
								 | 
							
								          if (doc.exports) {
							 | 
						||
| 
								 | 
							
								            doc.classes = doc.exports.filter(doc => doc.docType === 'class');
							 | 
						||
| 
								 | 
							
								            doc.decorators = doc.exports.filter(doc => doc.docType === 'decorator');
							 | 
						||
| 
								 | 
							
								            doc.functions = doc.exports.filter(doc => doc.docType === 'function');
							 | 
						||
| 
								 | 
							
								            doc.structures = doc.exports.filter(doc => doc.docType === 'enum' || doc.docType === 'interface');
							 | 
						||
| 
								 | 
							
								            doc.directives = doc.exports.filter(doc => doc.docType === 'directive');
							 | 
						||
| 
								 | 
							
								            doc.pipes = doc.exports.filter(doc => doc.docType === 'pipe');
							 | 
						||
| 
								 | 
							
								            doc.types = doc.exports.filter(doc => doc.docType === 'type-alias' || doc.docType === 'const');
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          // Copy over docs from the PACKAGE.md file that is used to document packages
							 | 
						||
| 
								 | 
							
								          const readmeDoc = packageContentFiles[dirname(doc.fileInfo.filePath)];
							 | 
						||
| 
								 | 
							
								          if (readmeDoc) {
							 | 
						||
| 
								 | 
							
								            doc.shortDescription = readmeDoc.shortDescription;
							 | 
						||
| 
								 | 
							
								            doc.description = readmeDoc.description;
							 | 
						||
| 
								 | 
							
								            doc.see = readmeDoc.see;
							 | 
						||
| 
								 | 
							
								            doc.fileInfo = readmeDoc.fileInfo;
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          // Compute the primary/secondary entry point relationships
							 | 
						||
| 
								 | 
							
								          const packageParts = doc.id.split('/');
							 | 
						||
| 
								 | 
							
								          const primaryPackageName = packageParts[0];
							 | 
						||
| 
								 | 
							
								          doc.isPrimaryPackage = packageParts.length === 1;
							 | 
						||
| 
								 | 
							
								          doc.packageInfo = packageMap[primaryPackageName] = packageMap[primaryPackageName] || { primary: undefined, secondary: [] };
							 | 
						||
| 
								 | 
							
								          if (doc.isPrimaryPackage) {
							 | 
						||
| 
								 | 
							
								            doc.packageInfo.primary = doc;
							 | 
						||
| 
								 | 
							
								          } else {
							 | 
						||
| 
								 | 
							
								            doc.packageInfo.secondary.push(doc);
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return docs;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								};
							 |