diff --git a/aio/package.json b/aio/package.json index 801720a758..2a30ef38de 100644 --- a/aio/package.json +++ b/aio/package.json @@ -112,7 +112,7 @@ "cross-spawn": "^5.1.0", "css-selector-parser": "^1.3.0", "dgeni": "^0.4.11", - "dgeni-packages": "^0.27.1", + "dgeni-packages": "^0.27.5", "entities": "^1.1.1", "eslint": "^3.19.0", "eslint-plugin-jasmine": "^2.2.0", diff --git a/aio/tools/transforms/angular-base-package/index.js b/aio/tools/transforms/angular-base-package/index.js index c884065e6d..836170636b 100644 --- a/aio/tools/transforms/angular-base-package/index.js +++ b/aio/tools/transforms/angular-base-package/index.js @@ -14,7 +14,7 @@ const linksPackage = require('../links-package'); const examplesPackage = require('../examples-package'); const targetPackage = require('../target-package'); const remarkPackage = require('../remark-package'); -const postProcessPackage = require('../post-process-package'); +const postProcessPackage = require('dgeni-packages/post-process-html'); const { PROJECT_ROOT, CONTENTS_PATH, OUTPUT_PATH, DOCS_OUTPUT_PATH, TEMPLATES_PATH, AIO_PATH, requireFolder } = require('../config'); diff --git a/aio/tools/transforms/post-process-package/index.js b/aio/tools/transforms/post-process-package/index.js deleted file mode 100644 index 559bc57d55..0000000000 --- a/aio/tools/transforms/post-process-package/index.js +++ /dev/null @@ -1,5 +0,0 @@ -var Package = require('dgeni').Package; -var base = require('dgeni-packages/base'); - -module.exports = new Package('post-process-package', [base]) - .processor(require('./processors/post-process-html')); diff --git a/aio/tools/transforms/post-process-package/processors/post-process-html.js b/aio/tools/transforms/post-process-package/processors/post-process-html.js deleted file mode 100644 index 5f8f837bf5..0000000000 --- a/aio/tools/transforms/post-process-package/processors/post-process-html.js +++ /dev/null @@ -1,49 +0,0 @@ -const rehype = require('rehype'); - -/** - * @dgProcessor postProcessHtml - * - * @description - * Use the rehype processing engine to manipulate the - * `renderedContent` HTML via rehype "plugins" that work with HTML ASTs (HASTs). - * See https://github.com/wooorm/rehype - * - * Each plugin is a factory function that will be called with the "rehype" engine as `this`. - * The factory should return a "transform" function that takes a HAST and returns a `boolean` or `undefined`. - * The HAST can be mutated by the "transform" function. - * If `false` is returned then the processing stops with that plugin. - * - * @property docTypes {string[]} the `docTypes` of docs that should be post-processed - * @property plugins {Function[]} the rehype plugins that will modify the HAST. - * - */ -module.exports = function postProcessHtml(log, createDocMessage) { - return { - $runAfter: ['docs-rendered'], - $runBefore: ['writing-files'], - docTypes: [], - plugins: [], - $process(docs) { - const engine = rehype() - .data('settings', { fragment: true }); - this.plugins.forEach(plugin => engine.use(plugin)); - - let vFile; - - docs - .filter(doc => this.docTypes.indexOf(doc.docType) !== -1) - .forEach(doc => { - try { - vFile = engine.processSync(doc.renderedContent); - doc.renderedContent = vFile.contents; - vFile.messages.forEach(m => { - log.warn(createDocMessage(m.message, doc)); - }); - doc.vFile = vFile; - } catch(e) { - throw new Error(createDocMessage(e.message, doc)); - } - }); - } - }; -}; diff --git a/aio/tools/transforms/post-process-package/processors/post-process-html.spec.js b/aio/tools/transforms/post-process-package/processors/post-process-html.spec.js deleted file mode 100644 index f6423bf598..0000000000 --- a/aio/tools/transforms/post-process-package/processors/post-process-html.spec.js +++ /dev/null @@ -1,84 +0,0 @@ -const testPackage = require('../../helpers/test-package'); -const Dgeni = require('dgeni'); - -describe('postProcessHtml', function() { - let dgeni, injector, processor, createDocMessage; - - beforeEach(function() { - dgeni = new Dgeni([testPackage('post-process-package', true)]); - injector = dgeni.configureInjector(); - createDocMessage = injector.get('createDocMessage'); - processor = injector.get('postProcessHtml'); - processor.docTypes = ['a', 'b']; - }); - - it('should be available from the injector', () => { - expect(processor).toBeDefined(); - }); - - it('should only process docs that match the specified docTypes', () => { - const elements = []; - const captureFirstElement = ast => { - elements.push(ast.children[0].tagName); - }; - processor.plugins = [() => captureFirstElement]; - - const docs = [ - { docType: 'a', renderedContent: '' }, - { docType: 'b', renderedContent: '' }, - { docType: 'c', renderedContent: '' }, - { docType: 'd', renderedContent: '' }, - ]; - processor.$process(docs); - expect(elements).toEqual(['a', 'b']); - }); - - it('should run all the plugins on each doc', () => { - const capitalizeFirstElement = ast => { - ast.children[0].tagName = ast.children[0].tagName.toUpperCase(); - }; - const addOneToFirstElement = ast => { - ast.children[0].tagName = ast.children[0].tagName + '1'; - }; - const elements = []; - const captureFirstElement = ast => { - elements.push(ast.children[0].tagName); - }; - - const docs = [ - { docType: 'a', renderedContent: '' }, - { docType: 'b', renderedContent: '' }, - { docType: 'c', renderedContent: '' }, - { docType: 'd', renderedContent: '' }, - ]; - - processor.plugins = [ - () => capitalizeFirstElement, - () => addOneToFirstElement, - () => captureFirstElement - ]; - processor.$process(docs); - expect(elements).toEqual(['A1', 'B1']); - }); - - it('should report non-fatal errors', () => { - const log = injector.get('log'); - const addWarning = (ast, file) => { - file.message('There was a problem'); - }; - processor.plugins = [() => addWarning]; - processor.$process([{ docType: 'a', renderedContent: '' }]); - expect(log.warn).toHaveBeenCalledWith('There was a problem - doc (a) '); - }); - - it('should throw on fatal errors', () => { - const log = injector.get('log'); - const addError = (ast, file) => { - file.fail('There was an error'); - }; - const doc = { docType: 'a', renderedContent: '' }; - processor.plugins = [() => addError]; - expect(() => processor.$process([doc])).toThrowError(createDocMessage('There was an error', doc)); - expect(log.error).not.toHaveBeenCalled(); - }); -}); diff --git a/aio/yarn.lock b/aio/yarn.lock index 711822ea43..8610a74b46 100644 --- a/aio/yarn.lock +++ b/aio/yarn.lock @@ -2947,10 +2947,10 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" -dgeni-packages@^0.27.1: - version "0.27.2" - resolved "https://registry.yarnpkg.com/dgeni-packages/-/dgeni-packages-0.27.2.tgz#ca1b40147a56668db2f4a2f09a374c6355f45cfa" - integrity sha512-hLZz5FeUTw50+yYE3nVHjpuWSve3YasqcDqq3t6ACxIfy0l/L60jzmBFjTGBbNYvn2qBAVzUEGNOQ2gzbFXBGQ== +dgeni-packages@^0.27.5: + version "0.27.5" + resolved "https://registry.yarnpkg.com/dgeni-packages/-/dgeni-packages-0.27.5.tgz#65b2ed1be6e85937c502d94df0ad16108bcaa801" + integrity sha512-GHLRu/CZoqQDfSKAWis5GkZFSAcK1jQos0P/f0mbZTWGCZpqicSRWTfzCjNAOYdk660jp/fab5/EvRX1um1Bdw== dependencies: canonical-path "^1.0.0" catharsis "^0.8.1" @@ -2967,6 +2967,7 @@ dgeni-packages@^0.27.1: mkdirp-promise "^5.0.0" node-html-encoder "0.0.2" nunjucks "^3.1.6" + rehype "^8.0.0" semver "^5.2.0" shelljs "^0.7.0" source-map-support "^0.4.15" @@ -4727,6 +4728,17 @@ hast-util-from-parse5@^4.0.0: web-namespaces "^1.1.2" xtend "^4.0.1" +hast-util-from-parse5@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.1.tgz#7da8841d707dcf7be73715f7f3b14e021c4e469a" + integrity sha512-UfPzdl6fbxGAxqGYNThRUhRlDYY7sXu6XU9nQeX4fFZtV+IHbyEJtd+DUuwOqNV4z3K05E/1rIkoVr/JHmeWWA== + dependencies: + ccount "^1.0.3" + hastscript "^5.0.0" + property-information "^5.0.0" + web-namespaces "^1.1.2" + xtend "^4.0.1" + hast-util-has-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-1.0.2.tgz#4c9c3c6122fcc84a5b7c40a573940aaa4b8a8278" @@ -4762,6 +4774,22 @@ hast-util-to-html@^4.0.0: unist-util-is "^2.0.0" xtend "^4.0.1" +hast-util-to-html@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-6.0.1.tgz#46f4f8d4d2e39c0510268c873a82c360766a0366" + integrity sha512-9LjLAsO2gPO9H6N0VxZsK4sqNZY1A0lMNDfdpMseryV18Hri2++guFfPmjY58PzmtBlBvDflqktxjSm2I1o1yg== + dependencies: + ccount "^1.0.0" + comma-separated-tokens "^1.0.1" + hast-util-is-element "^1.0.0" + hast-util-whitespace "^1.0.0" + html-void-elements "^1.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + stringify-entities "^2.0.0" + unist-util-is "^3.0.0" + xtend "^4.0.1" + hast-util-to-string@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-1.0.1.tgz#b28055cdca012d3c8fd048757c8483d0de0d002c" @@ -4779,6 +4807,16 @@ hastscript@^4.0.0: property-information "^4.0.0" space-separated-tokens "^1.0.0" +hastscript@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.0.tgz#a19b3cca6a26a2bcd0f1b1eac574af9427c1c7df" + integrity sha512-7mOQX5VfVs/gmrOGlN8/EDfp1GqV6P3gTNVt+KnX4gbYhpASTM8bklFdFQCbFRAadURXAmw0R1QQdBdqp7jswQ== + dependencies: + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.2.0" + property-information "^5.0.1" + space-separated-tokens "^1.0.0" + hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -5353,6 +5391,11 @@ is-decimal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.1.tgz#f5fb6a94996ad9e8e3761fbfbd091f1fca8c4e82" +is-decimal@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.3.tgz#381068759b9dc807d8c0dc0bfbae2b68e1da48b7" + integrity sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -8187,6 +8230,13 @@ property-information@^4.0.0: dependencies: xtend "^4.0.1" +property-information@^5.0.0, property-information@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.1.0.tgz#e4755eee5319f03f7f6f5a9bc1a6a7fea6609e2c" + integrity sha512-tODH6R3+SwTkAQckSp2S9xyYX8dEKYkeXw+4TmJzTxnNzd6mQPu1OD4f9zPrvw/Rm4wpPgI+Zp63mNSGNzUgHg== + dependencies: + xtend "^4.0.1" + protochain@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/protochain/-/protochain-1.0.5.tgz#991c407e99de264aadf8f81504b5e7faf7bfa260" @@ -8715,6 +8765,15 @@ rehype-parse@^5.0.0: parse5 "^5.0.0" xtend "^4.0.1" +rehype-parse@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.1.tgz#a5401d7f4144d5e17cbb69be11f05a2a7ba87e27" + integrity sha512-FrGSbOzcGxIvWty1qHjKTvHT4WBTt7C6JLs65EkvFPa7ZKraSmsoDDj6al1eBxaXS1t/kiGdPYazUe58Mgflgw== + dependencies: + hast-util-from-parse5 "^5.0.0" + parse5 "^5.0.0" + xtend "^4.0.1" + rehype-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/rehype-slug/-/rehype-slug-2.0.2.tgz#a0d5a4118548ee6165b1f911a213a13e284d91ba" @@ -8733,6 +8792,14 @@ rehype-stringify@^4.0.0: hast-util-to-html "^4.0.0" xtend "^4.0.1" +rehype-stringify@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-6.0.0.tgz#a8a573b6f9bf98916955978acd746c37cfd88ac0" + integrity sha512-grV/hhA7z9GbUJZk0ILzprSE0YY9lvTmYuvgRjXdFXrrag5gNeqXBQIuG1m4zFW6PFm0YYnJ/qgf5y6yui4VsA== + dependencies: + hast-util-to-html "^6.0.0" + xtend "^4.0.1" + rehype@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/rehype/-/rehype-6.0.0.tgz#873d4686c52d694560cf5d3f9e4440115840491d" @@ -8741,6 +8808,15 @@ rehype@^6.0.0: rehype-stringify "^4.0.0" unified "^7.0.0" +rehype@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/rehype/-/rehype-8.0.0.tgz#d0776cfcc353dd15c4c03b2de76d78a6c302e69c" + integrity sha512-fqcYo/q4Xka0ZvS6abiHtZsN7/TauTzTZQfXqtWACo9Qz76Vv/8uzhOizAfDBjVPhbnDl3xPIMRArUdcV/xFaA== + dependencies: + rehype-parse "^6.0.0" + rehype-stringify "^6.0.0" + unified "^7.0.0" + remark-html@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/remark-html/-/remark-html-8.0.0.tgz#9fcb859a6f3cb40f3ef15402950f1a62ec301b3a" @@ -9997,6 +10073,17 @@ stringify-entities@^1.0.1: is-alphanumerical "^1.0.0" is-hexadecimal "^1.0.0" +stringify-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-2.0.0.tgz#fa7ca6614b355fb6c28448140a20c4ede7462827" + integrity sha512-fqqhZzXyAM6pGD9lky/GOPq6V4X0SeTAFBl0iXb/BzOegl40gpf/bV3QQP7zULNYvjr6+Dx8SCaDULjVoOru0A== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.2" + is-hexadecimal "^1.0.0" + stringmap@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" @@ -10728,6 +10815,11 @@ unist-util-is@^2.1.2: resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.2.tgz#1193fa8f2bfbbb82150633f3a8d2eb9a1c1d55db" integrity sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw== +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + unist-util-modify-children@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-1.1.1.tgz#66d7e6a449e6f67220b976ab3cb8b5ebac39e51d"