| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							| 
									
										
										
										
											2020-05-19 12:08:49 -07:00
										 |  |  |  * Copyright Google LLC All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Use of this source code is governed by an MIT-style license that can be | 
					
						
							|  |  |  |  * found in the LICENSE file at https://angular.io/license
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | const path = require('path'); | 
					
						
							|  |  |  | const Package = require('dgeni').Package; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-14 13:02:40 +00:00
										 |  |  | const gitPackage = require('dgeni-packages/git'); | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | const jsdocPackage = require('dgeni-packages/jsdoc'); | 
					
						
							|  |  |  | const nunjucksPackage = require('dgeni-packages/nunjucks'); | 
					
						
							|  |  |  | const linksPackage = require('../links-package'); | 
					
						
							|  |  |  | const examplesPackage = require('../examples-package'); | 
					
						
							|  |  |  | const targetPackage = require('../target-package'); | 
					
						
							|  |  |  | const remarkPackage = require('../remark-package'); | 
					
						
							| 
									
										
										
										
											2019-07-01 15:37:51 +01:00
										 |  |  | const postProcessPackage = require('dgeni-packages/post-process-html'); | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-28 10:28:36 +01:00
										 |  |  | const { PROJECT_ROOT, CONTENTS_PATH, OUTPUT_PATH, DOCS_OUTPUT_PATH, TEMPLATES_PATH, AIO_PATH, requireFolder } = require('../config'); | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | module.exports = new Package('angular-base', [ | 
					
						
							| 
									
										
										
										
											2020-11-14 13:02:40 +00:00
										 |  |  |   gitPackage, jsdocPackage, nunjucksPackage, linksPackage, examplesPackage, targetPackage, remarkPackage, postProcessPackage | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | ]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Register the processors
 | 
					
						
							|  |  |  |   .processor(require('./processors/generateKeywords')) | 
					
						
							| 
									
										
										
										
											2018-01-21 17:24:05 +00:00
										 |  |  |   .processor(require('./processors/createSitemap')) | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |   .processor(require('./processors/checkUnbalancedBackTicks')) | 
					
						
							|  |  |  |   .processor(require('./processors/convertToJson')) | 
					
						
							|  |  |  |   .processor(require('./processors/fixInternalDocumentLinks')) | 
					
						
							| 
									
										
										
										
											2017-04-28 10:28:36 +01:00
										 |  |  |   .processor(require('./processors/copyContentAssets')) | 
					
						
							| 
									
										
										
										
											2017-10-06 08:28:46 +01:00
										 |  |  |   .processor(require('./processors/renderLinkInfo')) | 
					
						
							| 
									
										
										
										
											2018-03-13 22:24:47 +00:00
										 |  |  |   .processor(require('./processors/checkContentRules')) | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // overrides base packageInfo and returns the one for the 'angular/angular' repo.
 | 
					
						
							|  |  |  |   .factory('packageInfo', function() { return require(path.resolve(PROJECT_ROOT, 'package.json')); }) | 
					
						
							|  |  |  |   .factory(require('./readers/json')) | 
					
						
							| 
									
										
										
										
											2017-04-28 10:28:36 +01:00
										 |  |  |   .factory(require('./services/copyFolder')) | 
					
						
							| 
									
										
										
										
											2017-04-28 15:05:05 +01:00
										 |  |  |   .factory(require('./services/getImageDimensions')) | 
					
						
							| 
									
										
										
										
											2020-11-14 13:02:40 +00:00
										 |  |  |   .factory(require('./services/getPreviousMajorVersions')) | 
					
						
							| 
									
										
										
										
											2019-06-14 14:39:13 +03:00
										 |  |  |   .factory(require('./services/auto-link-filters/filterPipes')) | 
					
						
							|  |  |  |   .factory(require('./services/auto-link-filters/filterAmbiguousDirectiveAliases')) | 
					
						
							|  |  |  |   .factory(require('./services/auto-link-filters/ignoreHttpInUrls')) | 
					
						
							| 
									
										
										
										
											2020-01-17 11:42:55 -05:00
										 |  |  |   .factory(require('./services/auto-link-filters/ignoreGenericWords')) | 
					
						
							| 
									
										
										
										
											2017-04-28 15:05:05 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   .factory(require('./post-processors/add-image-dimensions')) | 
					
						
							| 
									
										
										
										
											2017-05-10 18:34:19 +01:00
										 |  |  |   .factory(require('./post-processors/auto-link-code')) | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-18 21:47:21 -05:00
										 |  |  |   // Configure jsdoc-style tag parsing
 | 
					
						
							|  |  |  |   .config(function(inlineTagProcessor) { | 
					
						
							|  |  |  |     inlineTagProcessor.inlineTagDefinitions.push(require('./inline-tag-defs/custom-search-defs/')); | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |   .config(function(checkAnchorLinksProcessor) { | 
					
						
							| 
									
										
										
										
											2017-04-25 13:30:30 +01:00
										 |  |  |     // This is disabled here to prevent false negatives for the `docs-watch` task.
 | 
					
						
							|  |  |  |     // It is re-enabled in the main `angular.io-package`
 | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |     checkAnchorLinksProcessor.$enabled = false; | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Where do we get the source files?
 | 
					
						
							|  |  |  |   .config(function(readFilesProcessor, collectExamples, generateKeywordsProcessor, jsonFileReader) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     readFilesProcessor.fileReaders.push(jsonFileReader); | 
					
						
							|  |  |  |     readFilesProcessor.basePath = PROJECT_ROOT; | 
					
						
							|  |  |  |     readFilesProcessor.sourceFiles = []; | 
					
						
							|  |  |  |     collectExamples.exampleFolders = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     generateKeywordsProcessor.ignoreWordsFile = path.resolve(__dirname, 'ignore.words'); | 
					
						
							|  |  |  |     generateKeywordsProcessor.docTypesToIgnore = ['example-region']; | 
					
						
							| 
									
										
										
										
											2020-10-24 14:07:46 +03:00
										 |  |  |     generateKeywordsProcessor.propertiesToIgnore = ['basePath', 'renderedContent']; | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Where do we write the output files?
 | 
					
						
							|  |  |  |   .config(function(writeFilesProcessor) { writeFilesProcessor.outputFolder = DOCS_OUTPUT_PATH; }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Target environments
 | 
					
						
							|  |  |  |   .config(function(targetEnvironments) { | 
					
						
							|  |  |  |     const ALLOWED_LANGUAGES = ['ts', 'js', 'dart']; | 
					
						
							|  |  |  |     const TARGET_LANGUAGE = 'ts'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ALLOWED_LANGUAGES.forEach(target => targetEnvironments.addAllowed(target)); | 
					
						
							|  |  |  |     targetEnvironments.activate(TARGET_LANGUAGE); | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Configure nunjucks rendering of docs via templates
 | 
					
						
							|  |  |  |   .config(function( | 
					
						
							|  |  |  |       renderDocsProcessor, templateFinder, templateEngine, getInjectables) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Where to find the templates for the doc rendering
 | 
					
						
							|  |  |  |     templateFinder.templateFolders = [TEMPLATES_PATH]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Standard patterns for matching docs to templates
 | 
					
						
							|  |  |  |     templateFinder.templatePatterns = [ | 
					
						
							|  |  |  |       '${ doc.template }', '${ doc.id }.${ doc.docType }.template.html', | 
					
						
							|  |  |  |       '${ doc.id }.template.html', '${ doc.docType }.template.html', | 
					
						
							|  |  |  |       '${ doc.id }.${ doc.docType }.template.js', '${ doc.id }.template.js', | 
					
						
							|  |  |  |       '${ doc.docType }.template.js', '${ doc.id }.${ doc.docType }.template.json', | 
					
						
							|  |  |  |       '${ doc.id }.template.json', '${ doc.docType }.template.json', 'common.template.html' | 
					
						
							|  |  |  |     ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Nunjucks and Angular conflict in their template bindings so change Nunjucks
 | 
					
						
							|  |  |  |     templateEngine.config.tags = {variableStart: '{$', variableEnd: '$}'}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     templateEngine.filters = | 
					
						
							|  |  |  |         templateEngine.filters.concat(getInjectables(requireFolder(__dirname, './rendering'))); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // helpers are made available to the nunjucks templates
 | 
					
						
							|  |  |  |     renderDocsProcessor.helpers.relativePath = function(from, to) { | 
					
						
							|  |  |  |       return path.relative(from, to); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-28 10:28:36 +01:00
										 |  |  |   .config(function(copyContentAssetsProcessor) { | 
					
						
							|  |  |  |     copyContentAssetsProcessor.assetMappings.push( | 
					
						
							|  |  |  |       { from: path.resolve(CONTENTS_PATH, 'images'), to: path.resolve(OUTPUT_PATH, 'images') } | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   }) | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // We are not going to be relaxed about ambiguous links
 | 
					
						
							|  |  |  |   .config(function(getLinkInfo) { | 
					
						
							|  |  |  |     getLinkInfo.useFirstAmbiguousLink = false; | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .config(function(computePathsProcessor, generateKeywordsProcessor) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     generateKeywordsProcessor.outputFolder = 'app'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Replace any path templates inherited from other packages
 | 
					
						
							|  |  |  |     // (we want full and transparent control)
 | 
					
						
							|  |  |  |     computePathsProcessor.pathTemplates = [ | 
					
						
							|  |  |  |       {docTypes: ['example-region'], getOutputPath: function() {}}, | 
					
						
							|  |  |  |     ]; | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-27 14:04:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-17 11:42:55 -05:00
										 |  |  |   .config(function(postProcessHtml, addImageDimensions, autoLinkCode, filterPipes, filterAmbiguousDirectiveAliases, ignoreHttpInUrls, ignoreGenericWords) { | 
					
						
							| 
									
										
										
										
											2017-04-28 15:05:05 +01:00
										 |  |  |     addImageDimensions.basePath = path.resolve(AIO_PATH, 'src'); | 
					
						
							| 
									
										
										
										
											2020-01-17 11:42:55 -05:00
										 |  |  |     autoLinkCode.customFilters = [ignoreGenericWords, ignoreHttpInUrls, filterPipes, filterAmbiguousDirectiveAliases]; | 
					
						
							| 
									
										
										
										
											2017-04-27 14:04:51 +01:00
										 |  |  |     postProcessHtml.plugins = [ | 
					
						
							| 
									
										
										
										
											2017-04-28 15:05:05 +01:00
										 |  |  |       require('./post-processors/autolink-headings'), | 
					
						
							| 
									
										
										
										
											2017-05-10 10:59:50 +01:00
										 |  |  |       addImageDimensions, | 
					
						
							|  |  |  |       require('./post-processors/h1-checker'), | 
					
						
							| 
									
										
										
										
											2017-05-10 18:34:19 +01:00
										 |  |  |       autoLinkCode, | 
					
						
							| 
									
										
										
										
											2017-04-27 14:04:51 +01:00
										 |  |  |     ]; | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |   .config(function(convertToJsonProcessor) { | 
					
						
							|  |  |  |     convertToJsonProcessor.docTypes = []; | 
					
						
							|  |  |  |   }); |