2017-01-26 09:03:53 -05: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 08:10:52 -04:00
|
|
|
const apiPackage = require('../angular-api-package');
|
|
|
|
const contentPackage = require('../angular-content-package');
|
2017-05-08 10:38:52 -04:00
|
|
|
const { extname, resolve } = require('canonical-path');
|
|
|
|
const { existsSync } = require('fs');
|
|
|
|
const { SRC_PATH } = require('../config');
|
2017-02-21 11:57:19 -05:00
|
|
|
|
2017-04-21 08:10:52 -04:00
|
|
|
module.exports = new Package('angular.io', [gitPackage, apiPackage, contentPackage])
|
2017-04-01 02:01:44 -04:00
|
|
|
|
2017-04-21 08:10:52 -04:00
|
|
|
// This processor relies upon the versionInfo. See below...
|
|
|
|
.processor(require('./processors/processNavigationMap'))
|
2018-01-15 11:10:32 -05:00
|
|
|
.processor(require('./processors/cleanGeneratedFiles'))
|
2017-01-26 09:03:53 -05:00
|
|
|
|
2017-04-21 08:10:52 -04: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 08:30:30 -04:00
|
|
|
})
|
2017-02-21 11:57:19 -05:00
|
|
|
|
2017-10-30 17:26:37 -04:00
|
|
|
.config(function(checkAnchorLinksProcessor, linkInlineTagDef, renderExamples) {
|
2017-05-10 05:22:51 -04:00
|
|
|
|
|
|
|
// Fail the processing if there is an invalid link
|
|
|
|
linkInlineTagDef.failOnBadLink = true;
|
|
|
|
|
2017-04-25 08:30:30 -04: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.
|
|
|
|
checkAnchorLinksProcessor.checkDoc = (doc) => doc.path && doc.outputPath && extname(doc.outputPath) === '.json';
|
|
|
|
// 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 10:38:52 -04: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 18:53:32 -04:00
|
|
|
checkAnchorLinksProcessor.pathVariants = ['', '/', '.html', '/index.html', '#top-of-page'];
|
2017-07-06 08:35:58 -04:00
|
|
|
checkAnchorLinksProcessor.errorOnUnmatchedLinks = true;
|
2017-10-30 17:26:37 -04:00
|
|
|
|
|
|
|
// Make sure we fail if the examples are not right
|
|
|
|
renderExamples.ignoreBrokenExamples = false;
|
|
|
|
|
2017-10-06 03:28:46 -04:00
|
|
|
})
|
|
|
|
|
|
|
|
.config(function(renderLinkInfo, postProcessHtml) {
|
|
|
|
renderLinkInfo.docTypes = postProcessHtml.docTypes;
|
2017-04-21 08:10:52 -04:00
|
|
|
});
|