From 499e3d778d772a3ab9f565d05da5b6a4b5411022 Mon Sep 17 00:00:00 2001 From: Nick Colley Date: Fri, 18 Nov 2022 16:01:56 +0000 Subject: [PATCH] feat(reporter): include default reporter Make reporting simpler so if you just want to see an output you dont need to do anything. BREAKING CHANGE: Retext plugins will report by default, set `reporter` to `false` to avoid this. --- README.md | 5 ++++- docs/text.md | 26 +++++++++++++++++++++++++- package-lock.json | 42 +++++++++++------------------------------- package.json | 6 +++--- src/rehype.js | 2 +- test/index.test.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 90 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 1128796..36ff0c7 100644 --- a/README.md +++ b/README.md @@ -46,12 +46,13 @@ It will render like this: | textTransforms | [retext plugins] | `[]` | | transformsDirectory | directory with your transforms | `"."` | | textParser | retext parser | [retext-english] | -| reporter | [vfile reporter] | `undefined` | +| reporter | [vfile reporter] | [vfile-reporter] | [remark plugins]: https://unifiedjs.com/explore/keyword/remark [rehype plugins]: https://unifiedjs.com/explore/keyword/rehype [retext plugins]: https://unifiedjs.com/explore/keyword/retext [retext-english]: https://www.npmjs.com/package/retext-english +[vfile-reporter]: https://github.com/vfile/vfile-reporter [vfile reporter]: https://github.com/vfile/vfile#reporters --- @@ -76,6 +77,8 @@ It will render like this: ### [Reporting and linting with retext](./docs/text.md) +- [Configuring the reporter](./docs/text.md#configuring-the-reporter) +- [Turning off default reporter](./docs/text.md#turning-off-default-reporter) - [Configuring text parser language](./docs/text.md#configuring-text-parser-language) ### Configure options for transforms diff --git a/docs/text.md b/docs/text.md index d58833c..eaadf88 100644 --- a/docs/text.md +++ b/docs/text.md @@ -1,12 +1,22 @@ # Reporting and linting with retext +The default reporter used is [`vfile-reporter`](https://github.com/vfile/vfile-reporter). + +```javascript +eleventyConfig.addPlugin(EleventyUnifiedPlugin, { + textTransforms: ["retext-repeated-words"], +}); +``` + +## Configuring the reporter + ```bash npm install eleventy-plugin-unified retext-repeated-words vfile-reporter ``` ```javascript eleventyConfig.addPlugin(EleventyUnifiedPlugin, { - reporter: "vfile-reporter", + reporter: "vfile-reporter-json", textTransforms: ["retext-repeated-words"], }); ``` @@ -22,6 +32,20 @@ eleventyConfig.addPlugin(EleventyUnifiedPlugin, { }); ``` + +## Turning off default reporter + +```bash +npm install eleventy-plugin-unified retext-latin +``` + +```javascript +eleventyConfig.addPlugin(EleventyUnifiedPlugin, { + reporter: false, + textTransforms: ["retext-repeated-words"], +}); +``` + ## Configuring text parser language ```bash diff --git a/package-lock.json b/package-lock.json index e93a27a..8ce9383 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,8 @@ "remark-parse": "^10.0.1", "remark-rehype": "^10.1.0", "retext-english": "^4.1.0", - "unified": "^10.1.2" + "unified": "^10.1.2", + "vfile-reporter": "^7.0.4" }, "devDependencies": { "@11ty/eleventy": "^1.0.2", @@ -36,8 +37,7 @@ "retext-repeated-words": "^4.2.0", "semantic-release": "^19.0.5", "to-mock": "^1.6.2", - "unist-util-visit": "^4.1.1", - "vfile-reporter": "^7.0.4" + "unist-util-visit": "^4.1.1" }, "engines": { "node": ">= 16" @@ -1505,8 +1505,7 @@ "node_modules/@types/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", - "dev": true + "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==" }, "node_modules/@types/unist": { "version": "2.0.6", @@ -1625,7 +1624,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -3322,8 +3320,7 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/easy-extender": { "version": "2.3.4", @@ -3431,8 +3428,7 @@ "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/encodeurl": { "version": "1.0.2", @@ -12451,7 +12447,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -12481,7 +12476,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -13416,7 +13410,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.4.tgz", "integrity": "sha512-4cWalUnLrEnbeUQ+hARG5YZtaHieVK3Jp4iG5HslttkVl+MHunSGNAIrODOTLbtjWsNZJRMCkL66AhvZAYuJ9A==", - "dev": true, "dependencies": { "@types/supports-color": "^8.0.0", "string-width": "^5.0.0", @@ -13434,7 +13427,6 @@ "version": "9.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.3.tgz", "integrity": "sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==", - "dev": true, "engines": { "node": ">=12" }, @@ -13446,7 +13438,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.0.tgz", "integrity": "sha512-fJNctnuMi3l4ikTVcKpxTbzHeCgvDhnI44amA3NVDvA6rTC6oKCFpCVyT5n2fFMr3ebfr+WVQZedOCd73rzSxg==", - "dev": true, "dependencies": { "vfile-message": "^3.0.0" }, @@ -13459,7 +13450,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.0.tgz", "integrity": "sha512-foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA==", - "dev": true, "dependencies": { "vfile-message": "^3.0.0" }, @@ -14953,8 +14943,7 @@ "@types/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", - "dev": true + "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==" }, "@types/unist": { "version": "2.0.6", @@ -15042,8 +15031,7 @@ "ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" }, "ansi-styles": { "version": "6.2.1", @@ -16350,8 +16338,7 @@ "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "easy-extender": { "version": "2.3.4", @@ -16437,8 +16424,7 @@ "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "encodeurl": { "version": "1.0.2", @@ -22961,7 +22947,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "requires": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -22981,7 +22966,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, "requires": { "ansi-regex": "^6.0.1" } @@ -23638,7 +23622,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.4.tgz", "integrity": "sha512-4cWalUnLrEnbeUQ+hARG5YZtaHieVK3Jp4iG5HslttkVl+MHunSGNAIrODOTLbtjWsNZJRMCkL66AhvZAYuJ9A==", - "dev": true, "requires": { "@types/supports-color": "^8.0.0", "string-width": "^5.0.0", @@ -23651,8 +23634,7 @@ "supports-color": { "version": "9.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.3.tgz", - "integrity": "sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==", - "dev": true + "integrity": "sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==" } } }, @@ -23660,7 +23642,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.0.tgz", "integrity": "sha512-fJNctnuMi3l4ikTVcKpxTbzHeCgvDhnI44amA3NVDvA6rTC6oKCFpCVyT5n2fFMr3ebfr+WVQZedOCd73rzSxg==", - "dev": true, "requires": { "vfile-message": "^3.0.0" } @@ -23669,7 +23650,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.0.tgz", "integrity": "sha512-foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA==", - "dev": true, "requires": { "vfile-message": "^3.0.0" } diff --git a/package.json b/package.json index df84810..4af5f0a 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,8 @@ "remark-parse": "^10.0.1", "remark-rehype": "^10.1.0", "retext-english": "^4.1.0", - "unified": "^10.1.2" + "unified": "^10.1.2", + "vfile-reporter": "^7.0.4" }, "devDependencies": { "@11ty/eleventy": "^1.0.2", @@ -59,8 +60,7 @@ "retext-repeated-words": "^4.2.0", "semantic-release": "^19.0.5", "to-mock": "^1.6.2", - "unist-util-visit": "^4.1.1", - "vfile-reporter": "^7.0.4" + "unist-util-visit": "^4.1.1" }, "release": { "branches": [ diff --git a/src/rehype.js b/src/rehype.js index be81472..fb59125 100644 --- a/src/rehype.js +++ b/src/rehype.js @@ -34,7 +34,7 @@ export default async function rehype( htmlTransforms, textTransforms, textParser = "retext-english", - reporter, + reporter = "vfile-reporter", transformsDirectory, pageContext, eleventyConfig, diff --git a/test/index.test.js b/test/index.test.js index f0839c6..45fd8c1 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -111,6 +111,29 @@ test.serial("reporter › console.logs", async (assert) => { }); }); +test.serial("reporter › default reporter", async (assert) => { + await new Promise((resolve) => { + const MockedConsole = toMock(global.console); + const RealConsole = global.console; + MockedConsole.log = (log) => { + assert.truthy(log.includes("once, not twice")); + global.console = RealConsole; + resolve(); + }; + const eleventyConfig = { + addTransform: async (type, render) => { + const context = { inputPath: "index.md", outputPath: "index.html" }; + await render.call(context, "

and and

"); + }, + }; + + global.console = MockedConsole; + index(eleventyConfig, { + textTransforms: ["retext-repeated-words"], + }); + }); +}); + test.serial("reporter › vfile-reporter", async (assert) => { await new Promise((resolve) => { const MockedConsole = toMock(global.console); @@ -134,3 +157,26 @@ test.serial("reporter › vfile-reporter", async (assert) => { }); }); }); + +test.serial("reporter › disable reporter", async (assert) => { + const MockedConsole = toMock(global.console); + const RealConsole = global.console; + let consoleWasCalled = false; + MockedConsole.log = () => { + global.console = RealConsole; + consoleWasCalled = true; + }; + const eleventyConfig = { + addTransform: async (type, render) => { + const context = { inputPath: "index.md", outputPath: "index.html" }; + await render.call(context, "

and and

"); + }, + }; + + global.console = MockedConsole; + index(eleventyConfig, { + reporter: false, + textTransforms: ["retext-repeated-words"], + }); + assert.false(consoleWasCalled); +});