| 
									
										
										
										
											2017-01-26 14:03:53 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							|  |  |  |  * Copyright Google Inc. All Rights Reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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 Package = require('dgeni').Package; | 
					
						
							|  |  |  | const gitPackage = require('dgeni-packages/git'); | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  | const apiPackage = require('../angular-api-package'); | 
					
						
							|  |  |  | const contentPackage = require('../angular-content-package'); | 
					
						
							| 
									
										
										
										
											2018-09-14 10:05:57 +01:00
										 |  |  | const cliDocsPackage = require('../cli-docs-package'); | 
					
						
							| 
									
										
										
										
											2017-05-08 15:38:52 +01:00
										 |  |  | const { extname, resolve } = require('canonical-path'); | 
					
						
							|  |  |  | const { existsSync } = require('fs'); | 
					
						
							|  |  |  | const { SRC_PATH } = require('../config'); | 
					
						
							| 
									
										
										
										
											2017-02-21 16:57:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-14 10:05:57 +01:00
										 |  |  | module.exports = new Package('angular.io', [gitPackage, apiPackage, contentPackage, cliDocsPackage]) | 
					
						
							| 
									
										
										
										
											2017-04-01 07:01:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |   // This processor relies upon the versionInfo. See below...
 | 
					
						
							|  |  |  |   .processor(require('./processors/processNavigationMap')) | 
					
						
							| 
									
										
										
										
											2018-03-09 08:34:58 +00:00
										 |  |  |   .processor(require('./processors/createOverviewDump')) | 
					
						
							| 
									
										
										
										
											2018-01-15 16:10:32 +00:00
										 |  |  |   .processor(require('./processors/cleanGeneratedFiles')) | 
					
						
							| 
									
										
										
										
											2017-01-26 14:03:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |   // We don't include this in the angular-base package because the `versionInfo` stuff
 | 
					
						
							|  |  |  |   // accesses the file system and git, which is slow.
 | 
					
						
							|  |  |  |   .config(function(renderDocsProcessor, versionInfo) { | 
					
						
							|  |  |  |     // Add the version data to the renderer, for use in things like github links
 | 
					
						
							|  |  |  |     renderDocsProcessor.extraData.versionInfo = versionInfo; | 
					
						
							| 
									
										
										
										
											2017-04-25 13:30:30 +01:00
										 |  |  |   }) | 
					
						
							| 
									
										
										
										
											2017-02-21 16:57:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-30 21:26:37 +00:00
										 |  |  |   .config(function(checkAnchorLinksProcessor, linkInlineTagDef, renderExamples) { | 
					
						
							| 
									
										
										
										
											2017-05-10 10:22:51 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Fail the processing if there is an invalid link
 | 
					
						
							|  |  |  |     linkInlineTagDef.failOnBadLink = true; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-25 13:30:30 +01:00
										 |  |  |     checkAnchorLinksProcessor.$enabled = true; | 
					
						
							|  |  |  |     // since we encode the HTML to JSON we need to ensure that this processor runs before that encoding happens.
 | 
					
						
							|  |  |  |     checkAnchorLinksProcessor.$runBefore = ['convertToJsonProcessor']; | 
					
						
							|  |  |  |     checkAnchorLinksProcessor.$runAfter = ['fixInternalDocumentLinks']; | 
					
						
							|  |  |  |     // We only want to check docs that are going to be output as JSON docs.
 | 
					
						
							| 
									
										
										
										
											2018-09-14 14:08:48 +01:00
										 |  |  |     checkAnchorLinksProcessor.checkDoc = (doc) => doc.path && doc.outputPath && extname(doc.outputPath) === '.json' && doc.docType !== 'json-doc'; | 
					
						
							| 
									
										
										
										
											2017-04-25 13:30:30 +01:00
										 |  |  |     // Since we have a `base[href="/"]` arrangement all links are relative to that and not relative to the source document's path
 | 
					
						
							|  |  |  |     checkAnchorLinksProcessor.base = '/'; | 
					
						
							| 
									
										
										
										
											2017-05-08 15:38:52 +01:00
										 |  |  |     // Ignore links to local assets
 | 
					
						
							|  |  |  |     // (This is not optimal in terms of performance without making changes to dgeni-packages there is no other way.
 | 
					
						
							|  |  |  |     //  That being said do this only add 500ms onto the ~30sec doc-gen run - so not a huge issue)
 | 
					
						
							|  |  |  |     checkAnchorLinksProcessor.ignoredLinks.push({ | 
					
						
							|  |  |  |       test(url) { | 
					
						
							|  |  |  |         return (existsSync(resolve(SRC_PATH, url))); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-05-09 23:53:32 +01:00
										 |  |  |     checkAnchorLinksProcessor.pathVariants = ['', '/', '.html', '/index.html', '#top-of-page']; | 
					
						
							| 
									
										
										
										
											2017-07-06 13:35:58 +01:00
										 |  |  |     checkAnchorLinksProcessor.errorOnUnmatchedLinks = true; | 
					
						
							| 
									
										
										
										
											2017-10-30 21:26:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Make sure we fail if the examples are not right
 | 
					
						
							|  |  |  |     renderExamples.ignoreBrokenExamples = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 08:28:46 +01:00
										 |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .config(function(renderLinkInfo, postProcessHtml) { | 
					
						
							|  |  |  |     renderLinkInfo.docTypes = postProcessHtml.docTypes; | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |   }); |