From 7a8491163332ee06705a0e827048b8945e80b68b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:49:24 +0000 Subject: [PATCH 01/25] Bump @stylistic/eslint-plugin from 2.11.0 to 2.12.0 Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 2.11.0 to 2.12.0. - [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases) - [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v2.12.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@stylistic/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index aba2cd01..0b886f59 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "@eslint/js": "9.16.0", "@iktakahiro/markdown-it-katex": "4.0.1", "@playwright/test": "1.49.0", - "@stylistic/eslint-plugin": "2.11.0", + "@stylistic/eslint-plugin": "2.12.0", "ajv": "8.17.1", "ava": "6.2.0", "c8": "10.1.2", From 74d0a4235dce9de3a761b8803de4adf26e96d344 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 15:35:05 +0000 Subject: [PATCH 02/25] Bump eslint-plugin-n from 17.14.0 to 17.15.0 Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 17.14.0 to 17.15.0. - [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.14.0...v17.15.0) --- updated-dependencies: - dependency-name: eslint-plugin-n dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0b886f59..97ab8041 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "del": "8.0.0", "eslint": "9.16.0", "eslint-plugin-jsdoc": "50.6.0", - "eslint-plugin-n": "17.14.0", + "eslint-plugin-n": "17.15.0", "eslint-plugin-unicorn": "56.0.1", "nano-spawn": "0.2.0", "markdown-it-emoji": "3.0.0", From e4ed428bc7cbc792f8730cf938ad97e9a160ec89 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 15:34:54 +0000 Subject: [PATCH 03/25] Bump @playwright/test from 1.49.0 to 1.49.1 Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.49.0 to 1.49.1. - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.49.0...v1.49.1) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 97ab8041..ff457f33 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "devDependencies": { "@eslint/js": "9.16.0", "@iktakahiro/markdown-it-katex": "4.0.1", - "@playwright/test": "1.49.0", + "@playwright/test": "1.49.1", "@stylistic/eslint-plugin": "2.12.0", "ajv": "8.17.1", "ava": "6.2.0", From 73f6efe65e91999d849b619f450be69c7cbba439 Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 10 Dec 2024 19:15:27 -0800 Subject: [PATCH 04/25] Update indirect playwright dependencies to 1.49.1. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ff457f33..2ec17cca 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,9 @@ "lint-dockerfile": "docker run --rm -i hadolint/hadolint:latest-alpine < docker/Dockerfile", "lint-watch": "git ls-files | entr npm run lint", "playwright-install-bare": "npm run playwright-install-npm && playwright install", - "playwright-install-npm": "npm install --no-save playwright@1.49.0", + "playwright-install-npm": "npm install --no-save playwright@1.49.1", "playwright-test": "playwright test --config ./webworker/playwright.config.mjs", - "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:v1.49.0 npm run playwright-test", + "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:v1.49.1 npm run playwright-test", "schema": "cpy ./node_modules/markdownlint/schema/markdownlint-config-schema.json ./schema --flat", "test": "ava --timeout=1m test/append-to-array-test.js test/fs-mock-test.js test/fs-virtual-test.js test/markdownlint-cli2-test.js test/markdownlint-cli2-test-exec.js test/markdownlint-cli2-test-exports.js test/markdownlint-cli2-test-fs.js test/markdownlint-cli2-test-main.js test/merge-options-test.js test/resolve-and-require-test.js", "test-cover": "c8 --100 npm test", From 0c749fedcca3fa41faa5cd343291dabf5a973e65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:42:27 +0000 Subject: [PATCH 05/25] Bump c8 from 10.1.2 to 10.1.3 Bumps [c8](https://github.com/bcoe/c8) from 10.1.2 to 10.1.3. - [Release notes](https://github.com/bcoe/c8/releases) - [Changelog](https://github.com/bcoe/c8/blob/main/CHANGELOG.md) - [Commits](https://github.com/bcoe/c8/compare/v10.1.2...v10.1.3) --- updated-dependencies: - dependency-name: c8 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2ec17cca..dcd1480b 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@stylistic/eslint-plugin": "2.12.0", "ajv": "8.17.1", "ava": "6.2.0", - "c8": "10.1.2", + "c8": "10.1.3", "cpy": "11.1.0", "cpy-cli": "5.0.0", "del": "8.0.0", From f0a1c9574bd6e68f09e379f7f70f7bfe49f7e16b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:42:19 +0000 Subject: [PATCH 06/25] Bump eslint-plugin-jsdoc from 50.6.0 to 50.6.1 Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.6.0 to 50.6.1. - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.0...v50.6.1) --- updated-dependencies: - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dcd1480b..9b6e8df0 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "cpy-cli": "5.0.0", "del": "8.0.0", "eslint": "9.16.0", - "eslint-plugin-jsdoc": "50.6.0", + "eslint-plugin-jsdoc": "50.6.1", "eslint-plugin-n": "17.15.0", "eslint-plugin-unicorn": "56.0.1", "nano-spawn": "0.2.0", From c2d724411bfc77d0fbe8a6df79aec6f8d72a53e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:42:01 +0000 Subject: [PATCH 07/25] Bump @stylistic/eslint-plugin from 2.12.0 to 2.12.1 Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 2.12.0 to 2.12.1. - [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases) - [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v2.12.1/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@stylistic/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9b6e8df0..130d3053 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "@eslint/js": "9.16.0", "@iktakahiro/markdown-it-katex": "4.0.1", "@playwright/test": "1.49.1", - "@stylistic/eslint-plugin": "2.12.0", + "@stylistic/eslint-plugin": "2.12.1", "ajv": "8.17.1", "ava": "6.2.0", "c8": "10.1.3", From ddd226908e4f0979a2842e9752e2366e11587fd0 Mon Sep 17 00:00:00 2001 From: David Anson Date: Thu, 12 Dec 2024 19:52:24 -0800 Subject: [PATCH 08/25] Convert to an ECMAScript module. --- .gitattributes | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/sarif.yml | 2 +- .gitignore | 4 +- append-to-array.js => append-to-array.mjs | 5 +- doc/OutputFormatters.md | 2 +- eslint.config.mjs | 22 +- export-markdownlint-helpers.js | 5 - export-markdownlint-helpers.mjs | 3 + export-markdownlint-promise.mjs | 3 + export-markdownlint.js | 5 - export-markdownlint.mjs | 3 + markdownlint-cli2-bin.mjs | 16 ++ markdownlint-cli2.js => markdownlint-cli2.mjs | 144 ++++-------- merge-options.js => merge-options.mjs | 4 +- package.json | 48 ++-- parsers/{jsonc-parse.js => jsonc-parse.mjs} | 6 +- parsers/parsers.js | 16 -- parsers/parsers.mjs | 14 ++ parsers/{yaml-parse.js => yaml-parse.mjs} | 6 +- ...-and-require.js => resolve-and-require.mjs | 4 +- schema/markdownlint-cli2-config-schema.json | 4 +- schema/markdownlint-config-schema.json | 212 +++++++++--------- ...array-test.js => append-to-array-test.mjs} | 7 +- .../config/any-blockquote.cjs | 2 +- .../config/any-blockquote.mjs | 2 +- .../.markdownlint-cli2.jsonc | 2 +- .../.markdownlint-cli2.cjs | 2 +- .../rules/any-blockquote.cjs} | 2 +- .../.markdownlint-cli2.jsonc | 2 +- .../rules/{throws.js => throws.cjs} | 0 test/customRules/.markdownlint-cli2.jsonc | 6 +- .../dir/subdir/.markdownlint-cli2.jsonc | 2 +- .../customRules/dir3/.markdownlint-cli2.jsonc | 2 +- test/customRules/rules/all-rules.cjs | 10 + test/customRules/rules/all-rules.js | 10 - .../rules/any-blockquote.cjs} | 2 +- .../{every-n-lines.js => every-n-lines.cjs} | 0 .../rules/{first-line.js => first-line.cjs} | 0 .../rules/{second-line.js => second-line.cjs} | 0 test/esm-helpers.mjs | 35 +++ test/{fs-mock-test.js => fs-mock-test.mjs} | 28 +-- test/{fs-mock.js => fs-mock.mjs} | 14 +- ...fs-virtual-test.js => fs-virtual-test.mjs} | 15 +- ...es.js => markdownlint-cli2-test-cases.mjs} | 27 ++- ...xec.js => markdownlint-cli2-test-exec.mjs} | 32 ++- test/markdownlint-cli2-test-exports.js | 31 --- test/markdownlint-cli2-test-exports.mjs | 34 +++ ...st-fs.js => markdownlint-cli2-test-fs.mjs} | 10 +- ...ain.js => markdownlint-cli2-test-main.mjs} | 8 +- ...li2-test.js => markdownlint-cli2-test.mjs} | 68 +++--- ...options-test.js => merge-options-test.mjs} | 6 +- .../dir/dir/.markdownlint-cli2.jsonc | 2 +- .../dir/dir/.markdownlint-cli2.jsonc | 2 +- .../dir/dir/.markdownlint-cli2.jsonc | 2 +- .../dir/dir/.markdownlint-cli2.jsonc | 2 +- .../{first-line.js => first-line.cjs} | 0 .../.markdownlint-cli2.jsonc | 2 +- .../.markdownlint-cli2.jsonc | 2 +- .../.markdownlint-cli2.jsonc | 2 +- .../.markdownlint-cli2.jsonc | 2 +- ...e-test.js => resolve-and-require-test.mjs} | 34 +-- ....md => markdownlint-cli2-test-exec.mjs.md} | 4 +- ...p => markdownlint-cli2-test-exec.mjs.snap} | Bin ...js.md => markdownlint-cli2-test-fs.mjs.md} | 4 +- ...nap => markdownlint-cli2-test-fs.mjs.snap} | Bin ....md => markdownlint-cli2-test-main.mjs.md} | 4 +- ...p => markdownlint-cli2-test-main.mjs.snap} | Bin .../scripts/any-blockquote.cjs | 2 +- .../scripts/any-blockquote.mjs | 2 +- webworker/{fs-virtual.js => fs-virtual.cjs} | 0 webworker/index.html | 8 +- webworker/index.js | 5 - .../{module-empty.js => module-empty.cjs} | 0 webworker/module-stub.cjs | 8 + webworker/{os-stub.js => os-stub.cjs} | 0 .../{process-stub.js => process-stub.cjs} | 1 + ...n-magic-stub.js => unicorn-magic-stub.cjs} | 0 .../{webpack.config.js => webpack.config.cjs} | 25 ++- .../{webworker-test.js => webworker-test.cjs} | 0 80 files changed, 499 insertions(+), 505 deletions(-) rename append-to-array.js => append-to-array.mjs (87%) delete mode 100644 export-markdownlint-helpers.js create mode 100644 export-markdownlint-helpers.mjs create mode 100644 export-markdownlint-promise.mjs delete mode 100644 export-markdownlint.js create mode 100644 export-markdownlint.mjs create mode 100644 markdownlint-cli2-bin.mjs rename markdownlint-cli2.js => markdownlint-cli2.mjs (90%) rename merge-options.js => merge-options.mjs (92%) rename parsers/{jsonc-parse.js => jsonc-parse.mjs} (84%) delete mode 100644 parsers/parsers.js create mode 100644 parsers/parsers.mjs rename parsers/{yaml-parse.js => yaml-parse.mjs} (74%) rename resolve-and-require.js => resolve-and-require.mjs (91%) rename test/{append-to-array-test.js => append-to-array-test.mjs} (94%) rename test/{customRules/rules/any-blockquote.js => customRules-pre-imported/rules/any-blockquote.cjs} (94%) rename test/customRules-throws/rules/{throws.js => throws.cjs} (100%) create mode 100644 test/customRules/rules/all-rules.cjs delete mode 100644 test/customRules/rules/all-rules.js rename test/{customRules-pre-imported/rules/any-blockquote.js => customRules/rules/any-blockquote.cjs} (94%) rename test/customRules/rules/{every-n-lines.js => every-n-lines.cjs} (100%) rename test/customRules/rules/{first-line.js => first-line.cjs} (100%) rename test/customRules/rules/{second-line.js => second-line.cjs} (100%) create mode 100644 test/esm-helpers.mjs rename test/{fs-mock-test.js => fs-mock-test.mjs} (73%) rename test/{fs-mock.js => fs-mock.mjs} (87%) rename test/{fs-virtual-test.js => fs-virtual-test.mjs} (88%) rename test/{markdownlint-cli2-test-cases.js => markdownlint-cli2-test-cases.mjs} (97%) rename test/{markdownlint-cli2-test-exec.js => markdownlint-cli2-test-exec.mjs} (86%) delete mode 100644 test/markdownlint-cli2-test-exports.js create mode 100644 test/markdownlint-cli2-test-exports.mjs rename test/{markdownlint-cli2-test-fs.js => markdownlint-cli2-test-fs.mjs} (81%) rename test/{markdownlint-cli2-test-main.js => markdownlint-cli2-test-main.mjs} (83%) rename test/{markdownlint-cli2-test.js => markdownlint-cli2-test.mjs} (90%) rename test/{merge-options-test.js => merge-options-test.mjs} (96%) rename test/nested-options-config/{first-line.js => first-line.cjs} (100%) rename test/{resolve-and-require-test.js => resolve-and-require-test.mjs} (69%) rename test/snapshots/{markdownlint-cli2-test-exec.js.md => markdownlint-cli2-test-exec.mjs.md} (99%) rename test/snapshots/{markdownlint-cli2-test-exec.js.snap => markdownlint-cli2-test-exec.mjs.snap} (100%) rename test/snapshots/{markdownlint-cli2-test-fs.js.md => markdownlint-cli2-test-fs.mjs.md} (99%) rename test/snapshots/{markdownlint-cli2-test-fs.js.snap => markdownlint-cli2-test-fs.mjs.snap} (100%) rename test/snapshots/{markdownlint-cli2-test-main.js.md => markdownlint-cli2-test-main.mjs.md} (99%) rename test/snapshots/{markdownlint-cli2-test-main.js.snap => markdownlint-cli2-test-main.mjs.snap} (100%) rename webworker/{fs-virtual.js => fs-virtual.cjs} (100%) delete mode 100644 webworker/index.js rename webworker/{module-empty.js => module-empty.cjs} (100%) create mode 100644 webworker/module-stub.cjs rename webworker/{os-stub.js => os-stub.cjs} (100%) rename webworker/{process-stub.js => process-stub.cjs} (89%) rename webworker/{unicorn-magic-stub.js => unicorn-magic-stub.cjs} (100%) rename webworker/{webpack.config.js => webpack.config.cjs} (70%) rename webworker/{webworker-test.js => webworker-test.cjs} (100%) diff --git a/.gitattributes b/.gitattributes index e86c06b0..770f3ca8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -markdownlint-cli2.js eol=lf +markdownlint-cli2-bin.mjs eol=lf diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d4293e5..0a15be04 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,7 +76,7 @@ jobs: - name: Install markdownlint-cli2 dependencies locally run: sudo npm install --no-package-lock --production - name: Lint with formatters - run: node ./markdownlint-cli2 CONTRIBUTING.md README.md + run: node ./markdownlint-cli2-bin.mjs CONTRIBUTING.md README.md lint-dockerfile: runs-on: ubuntu-latest diff --git a/.github/workflows/sarif.yml b/.github/workflows/sarif.yml index 2f23e04a..63466225 100644 --- a/.github/workflows/sarif.yml +++ b/.github/workflows/sarif.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v4 - run: npm install --no-package-lock - - run: node markdownlint-cli2.js --config .github/sarif.markdownlint-cli2.jsonc '**/README.md' '#node_modules' + - run: node markdownlint-cli2-bin.mjs --config .github/sarif.markdownlint-cli2.jsonc '**/README.md' '#node_modules' continue-on-error: true - uses: github/codeql-action/upload-sarif@v3 with: diff --git a/.gitignore b/.gitignore index f09431b6..85f9fcd9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,5 @@ npm-debug.log !test/customRules/node_modules !test/markdownItPlugins/module/node_modules !test/outputFormatters-module/node_modules -webworker/markdownlint-cli2-webworker.js -webworker/setImmediate.js +webworker/markdownlint-cli2-webworker.cjs +webworker/setImmediate.cjs diff --git a/append-to-array.js b/append-to-array.mjs similarity index 87% rename from append-to-array.js rename to append-to-array.mjs index 4002d699..1635cee2 100644 --- a/append-to-array.js +++ b/append-to-array.mjs @@ -1,7 +1,5 @@ // @ts-check -"use strict"; - const sliceSize = 1000; /** @@ -21,5 +19,4 @@ const appendToArray = (destination, source) => { } }; -appendToArray.sliceSize = sliceSize; -module.exports = appendToArray; +export { appendToArray as default, sliceSize }; diff --git a/doc/OutputFormatters.md b/doc/OutputFormatters.md index d7f9cacd..d518ac19 100644 --- a/doc/OutputFormatters.md +++ b/doc/OutputFormatters.md @@ -63,4 +63,4 @@ For a `.markdownlint-cli2.jsonc` like: [formatter-junit]: ../formatter-junit/markdownlint-cli2-formatter-junit.js [formatter-sarif]: ../formatter-sarif/markdownlint-cli2-formatter-sarif.js [markdownlint-cli2-formatter]: https://www.npmjs.com/search?q=keywords:markdownlint-cli2-formatter -[markdownlint-d-ts]: https://github.com/DavidAnson/markdownlint/blob/v0.36.1/lib/markdownlint.d.ts +[markdownlint-d-ts]: https://github.com/DavidAnson/markdownlint/blob/v0.37.0/lib/markdownlint.d.mts diff --git a/eslint.config.mjs b/eslint.config.mjs index 4255d5f4..da8ca728 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -21,14 +21,11 @@ export default [ { "ignores": [ "test/*/**", - "webworker/markdownlint-cli2-webworker.js", - "webworker/setImmediate.js" + "webworker/markdownlint-cli2-webworker.cjs", + "webworker/setImmediate.cjs" ] }, { - "languageOptions": { - "sourceType": "commonjs" - }, "linterOptions": { "reportUnusedDisableDirectives": true }, @@ -60,7 +57,6 @@ export default [ "@stylistic/padded-blocks": "off", "unicorn/no-null": "off", - "unicorn/prefer-module": "off", "unicorn/prefer-string-raw": "off", "unicorn/prefer-string-replace-all": "off", "unicorn/prevent-abbreviations": "off" @@ -68,10 +64,20 @@ export default [ }, { "files": [ - "**/*.mjs" + "**/*-formatter-*.js", + "webworker/*.cjs" ], "languageOptions": { - "sourceType": "module" + "sourceType": "commonjs", + "globals": { + "__dirname": "readonly", + "__filename": "readonly", + "module": "readonly", + "require": "readonly" + } + }, + "rules": { + "unicorn/prefer-module": "off" } } ]; diff --git a/export-markdownlint-helpers.js b/export-markdownlint-helpers.js deleted file mode 100644 index 44cfe31a..00000000 --- a/export-markdownlint-helpers.js +++ /dev/null @@ -1,5 +0,0 @@ -// @ts-check - -"use strict"; - -module.exports = require("markdownlint/helpers"); diff --git a/export-markdownlint-helpers.mjs b/export-markdownlint-helpers.mjs new file mode 100644 index 00000000..6598099d --- /dev/null +++ b/export-markdownlint-helpers.mjs @@ -0,0 +1,3 @@ +// @ts-check + +export { default } from "markdownlint/helpers"; diff --git a/export-markdownlint-promise.mjs b/export-markdownlint-promise.mjs new file mode 100644 index 00000000..105e36da --- /dev/null +++ b/export-markdownlint-promise.mjs @@ -0,0 +1,3 @@ +// @ts-check + +export * from "markdownlint/promise"; diff --git a/export-markdownlint.js b/export-markdownlint.js deleted file mode 100644 index b3f98eb0..00000000 --- a/export-markdownlint.js +++ /dev/null @@ -1,5 +0,0 @@ -// @ts-check - -"use strict"; - -module.exports = require("markdownlint"); diff --git a/export-markdownlint.mjs b/export-markdownlint.mjs new file mode 100644 index 00000000..89310996 --- /dev/null +++ b/export-markdownlint.mjs @@ -0,0 +1,3 @@ +// @ts-check + +export * from "markdownlint"; diff --git a/markdownlint-cli2-bin.mjs b/markdownlint-cli2-bin.mjs new file mode 100644 index 00000000..ba0bfdfd --- /dev/null +++ b/markdownlint-cli2-bin.mjs @@ -0,0 +1,16 @@ +#!/usr/bin/env node + +import { "main" as markdownlintCli2 } from "./markdownlint-cli2.mjs"; + +const params = { + "argv": process.argv.slice(2), + "logMessage": console.log, + "logError": console.error, + "allowStdin": true +}; +try { + process.exitCode = await markdownlintCli2(params); +} catch (error) { + console.error(error); + process.exitCode = 2; +} diff --git a/markdownlint-cli2.js b/markdownlint-cli2.mjs similarity index 90% rename from markdownlint-cli2.js rename to markdownlint-cli2.mjs index 83685309..46c3cb72 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.mjs @@ -1,38 +1,30 @@ -#!/usr/bin/env node - -// @ts-check - -"use strict"; - // @ts-ignore -// eslint-disable-next-line camelcase, no-inline-comments, no-undef -const dynamicRequire = (typeof __non_webpack_require__ === "undefined") ? require : /* c8 ignore next */ __non_webpack_require__; -// Capture native require implementation for dynamic loading of modules // Requires -const pathDefault = require("node:path"); +import fsNode from "node:fs"; +import { createRequire } from "node:module"; +const dynamicRequire = createRequire(import.meta.url); +import os from "node:os"; +import pathDefault from "node:path"; const pathPosix = pathDefault.posix; -const { pathToFileURL } = require("node:url"); -const markdownlintLibrary = require("markdownlint"); -const { - applyFixes, - "getVersion": getLibraryVersion, - "promises": markdownlintPromises -} = markdownlintLibrary; -const { - markdownlint, - "extendConfig": markdownlintExtendConfig, - "readConfig": markdownlintReadConfig -} = markdownlintPromises; -const appendToArray = require("./append-to-array"); -const mergeOptions = require("./merge-options"); -const resolveAndRequire = require("./resolve-and-require"); +import { pathToFileURL } from "node:url"; +import { globby } from "globby"; +import micromatch from "micromatch"; +import { applyFixes, getVersion } from "markdownlint"; +import { lint, extendConfig, readConfig } from "markdownlint/promise"; +import { expandTildePath } from "markdownlint/helpers"; +import appendToArray from "./append-to-array.mjs"; +import mergeOptions from "./merge-options.mjs"; +import resolveAndRequire from "./resolve-and-require.mjs"; +import parsers from "./parsers/parsers.mjs"; +import jsoncParse from "./parsers/jsonc-parse.mjs"; +import yamlParse from "./parsers/yaml-parse.mjs"; // Variables const packageName = "markdownlint-cli2"; const packageVersion = "0.16.0"; const libraryName = "markdownlint"; -const libraryVersion = getLibraryVersion(); +const libraryVersion = getVersion(); const bannerMessage = `${packageName} v${packageVersion} (${libraryName} v${libraryVersion})`; const dotOnlySubstitute = "*.{md,markdown}"; const utf8 = "utf8"; @@ -40,15 +32,6 @@ const utf8 = "utf8"; // No-op function const noop = () => null; -// Gets a JSONC parser -const getJsoncParse = () => require("./parsers/jsonc-parse.js"); - -// Gets a YAML parser -const getYamlParse = () => require("./parsers/yaml-parse.js"); - -// Gets an ordered array of parsers -const getParsers = () => require("./parsers/parsers.js"); - // Negates a glob const negateGlob = (glob) => `!${glob}`; @@ -63,25 +46,19 @@ const throwForConfigurationFile = (file, error) => { // Return a posix path (even on Windows) const posixPath = (p) => p.split(pathDefault.sep).join(pathPosix.sep); -// Expands a path with a tilde to an absolute path -const expandTildePath = (id) => { - const markdownlintRuleHelpers = require("markdownlint/helpers"); - return markdownlintRuleHelpers.expandTildePath(id, require("node:os")); -}; - // Resolves module paths relative to the specified directory const resolveModulePaths = (dir, modulePaths) => ( - modulePaths.map((path) => pathDefault.resolve(dir, expandTildePath(path))) + modulePaths.map((path) => pathDefault.resolve(dir, expandTildePath(path, os))) ); // Read a JSON(C) or YAML file and return the object -const readConfig = (fs, dir, name, otherwise) => () => { +const readConfigFile = (fs, dir, name, otherwise) => () => { const file = pathPosix.join(dir, name); return fs.promises.access(file). then( - () => markdownlintReadConfig( + () => readConfig( file, - getParsers(), + parsers, fs ), otherwise @@ -95,7 +72,7 @@ const importOrRequireResolve = async (dirOrDirs, id, noRequire) => { return null; } const dirs = Array.isArray(dirOrDirs) ? dirOrDirs : [ dirOrDirs ]; - const expandId = expandTildePath(id); + const expandId = expandTildePath(id, os); const errors = []; // Try to load via require(...) try { @@ -162,10 +139,10 @@ const importOrRequireConfig = (fs, dir, name, noRequire, otherwise) => () => { // Extend a config object if it has 'extends' property const getExtendedConfig = (config, configPath, fs) => { if (config.extends) { - return markdownlintExtendConfig( + return extendConfig( config, configPath, - getParsers(), + parsers, fs ); } @@ -181,9 +158,9 @@ const readOptionsOrConfig = async (configPath, fs, noRequire) => { let config = null; try { if (basename.endsWith(".markdownlint-cli2.jsonc")) { - options = getJsoncParse()(await fs.promises.readFile(configPath, utf8)); + options = jsoncParse(await fs.promises.readFile(configPath, utf8)); } else if (basename.endsWith(".markdownlint-cli2.yaml")) { - options = getYamlParse()(await fs.promises.readFile(configPath, utf8)); + options = yamlParse(await fs.promises.readFile(configPath, utf8)); } else if ( basename.endsWith(".markdownlint-cli2.cjs") || basename.endsWith(".markdownlint-cli2.mjs") @@ -195,7 +172,7 @@ const readOptionsOrConfig = async (configPath, fs, noRequire) => { basename.endsWith(".markdownlint.yaml") || basename.endsWith(".markdownlint.yml") ) { - config = await markdownlintReadConfig(configPath, getParsers(), fs); + config = await readConfig(configPath, parsers, fs); } else if ( basename.endsWith(".markdownlint.cjs") || basename.endsWith(".markdownlint.mjs") @@ -221,13 +198,12 @@ const readOptionsOrConfig = async (configPath, fs, noRequire) => { }; // Filter a list of files to ignore by glob -const removeIgnoredFiles = (dir, files, ignores) => { - const micromatch = require("micromatch"); - return micromatch( +const removeIgnoredFiles = (dir, files, ignores) => ( + micromatch( files.map((file) => pathPosix.relative(dir, file)), ignores - ).map((file) => pathPosix.join(dir, file)); -}; + ).map((file) => pathPosix.join(dir, file)) +); // Process/normalize command-line arguments and return glob patterns const processArgv = (argv) => { @@ -340,10 +316,10 @@ const getAndProcessDirInfo = ( tasks.push( fs.promises.access(captureFile(markdownlintCli2Jsonc)). then( - () => fs.promises.readFile(file, utf8).then(getJsoncParse()), + () => fs.promises.readFile(file, utf8).then(jsoncParse), () => fs.promises.access(captureFile(markdownlintCli2Yaml)). then( - () => fs.promises.readFile(file, utf8).then(getYamlParse()), + () => fs.promises.readFile(file, utf8).then(yamlParse), () => fs.promises.access(captureFile(markdownlintCli2Cjs)). then( () => importOrRequireResolve(dir, file, noRequire), @@ -358,7 +334,7 @@ const getAndProcessDirInfo = ( then( () => fs.promises. readFile(file, utf8). - then(getJsoncParse()). + then(jsoncParse). then((obj) => obj[packageName]), noop ) @@ -387,19 +363,19 @@ const getAndProcessDirInfo = ( // Load markdownlint object(s) const readConfigs = - readConfig( + readConfigFile( fs, dir, ".markdownlint.jsonc", - readConfig( + readConfigFile( fs, dir, ".markdownlint.json", - readConfig( + readConfigFile( fs, dir, ".markdownlint.yaml", - readConfig( + readConfigFile( fs, dir, ".markdownlint.yml", @@ -548,8 +524,6 @@ const enumerateFiles = async ( }) ); // Process glob patterns - // eslint-disable-next-line no-inline-comments - const { globby } = await import(/* webpackMode: "eager" */ "globby"); const files = [ ...await globby(expandedDirectories, globbyOptions), ...filteredLiteralFiles @@ -797,7 +771,7 @@ const lintFiles = (fs, dirInfos, fileContents) => { "files": filteredFiles, "strings": filteredStrings, "config": markdownlintConfig || markdownlintOptions.config, - "configParsers": getParsers(), + "configParsers": parsers, "customRules": markdownlintOptions.customRules, "frontMatter": markdownlintOptions.frontMatter ? new RegExp(markdownlintOptions.frontMatter, "u") @@ -805,11 +779,10 @@ const lintFiles = (fs, dirInfos, fileContents) => { "handleRuleFailures": true, "markdownItPlugins": markdownlintOptions.markdownItPlugins, "noInlineConfig": Boolean(markdownlintOptions.noInlineConfig), - "resultVersion": 3, fs }; // Invoke markdownlint - let task = markdownlint(options); + let task = lint(options); // For any fixable errors, read file, apply fixes, and write it back if (markdownlintOptions.fix) { task = task.then((results) => { @@ -832,7 +805,7 @@ const lintFiles = (fs, dirInfos, fileContents) => { } } return Promise.all(subTasks). - then(() => markdownlint(options)). + then(() => lint(options)). then((fixResults) => ({ ...results, ...fixResults @@ -899,7 +872,8 @@ const outputSummary = async ( const dirs = [ dir, ...modulePaths ]; const formattersAndParams = outputFormatters ? await importOrRequireIdsAndParams(dirs, outputFormatters, noRequire) - : [ [ require("markdownlint-cli2-formatter-default") ] ]; + // eslint-disable-next-line no-inline-comments, unicorn/no-await-expression-member + : [ [ (await import(/* webpackMode: "eager" */ "markdownlint-cli2-formatter-default")).default ] ]; await Promise.all(formattersAndParams.map((formatterAndParams) => { const [ formatter, ...formatterParams ] = formatterAndParams; return formatter(formatterOptions, ...formatterParams); @@ -909,7 +883,7 @@ const outputSummary = async ( }; // Main function -const main = async (params) => { +export const main = async (params) => { // Capture parameters const { directory, @@ -926,7 +900,7 @@ const main = async (params) => { } = params; const logMessage = params.logMessage || noop; const logError = params.logError || noop; - const fs = params.fs || require("node:fs"); + const fs = params.fs || fsNode; const baseDirSystem = (directory && pathDefault.resolve(directory)) || process.cwd(); @@ -1003,7 +977,7 @@ const main = async (params) => { // Add stdin as a non-file input if necessary if (useStdin) { const key = pathPosix.join(baseDir, "stdin"); - const { text } = require("node:stream/consumers"); + const { text } = await import("node:stream/consumers"); nonFileContents = { ...nonFileContents, [key]: await text(process.stdin) @@ -1089,27 +1063,3 @@ const main = async (params) => { // Return result return errorsPresent ? 1 : 0; }; - -// Export functions -module.exports = { - main -}; - -// Run if invoked as a CLI -if (require.main === module) { - const params = { - "argv": process.argv.slice(2), - "logMessage": console.log, - "logError": console.error, - "allowStdin": true - }; - main(params). - then((exitCode) => { - process.exitCode = exitCode; - }). - // eslint-disable-next-line unicorn/prefer-top-level-await - catch((error) => { - console.error(error); - process.exitCode = 2; - }); -} diff --git a/merge-options.js b/merge-options.mjs similarity index 92% rename from merge-options.js rename to merge-options.mjs index 915f5e45..8c294188 100644 --- a/merge-options.js +++ b/merge-options.mjs @@ -1,7 +1,5 @@ // @ts-check -"use strict"; - /** * Merges two options objects by combining config and replacing properties. * @param {object} first First options object. @@ -24,4 +22,4 @@ const mergeOptions = (first, second) => { return merged; }; -module.exports = mergeOptions; +export default mergeOptions; diff --git a/package.json b/package.json index 130d3053..f4c244be 100644 --- a/package.json +++ b/package.json @@ -7,18 +7,18 @@ "url": "https://dlaa.me/" }, "license": "MIT", - "type": "commonjs", - "main": "./markdownlint-cli2.js", + "type": "module", "exports": { - ".": "./markdownlint-cli2.js", - "./markdownlint": "./export-markdownlint.js", - "./markdownlint/helpers": "./export-markdownlint-helpers.js", - "./parsers": "./parsers/parsers.js", - "./parsers/jsonc": "./parsers/jsonc-parse.js", - "./parsers/yaml": "./parsers/yaml-parse.js" + ".": "./markdownlint-cli2.mjs", + "./markdownlint": "./export-markdownlint.mjs", + "./markdownlint/helpers": "./export-markdownlint-helpers.mjs", + "./markdownlint/promise": "./export-markdownlint-promise.mjs", + "./parsers": "./parsers/parsers.mjs", + "./parsers/jsonc": "./parsers/jsonc-parse.mjs", + "./parsers/yaml": "./parsers/yaml-parse.mjs" }, "bin": { - "markdownlint-cli2": "markdownlint-cli2.js" + "markdownlint-cli2": "markdownlint-cli2-bin.mjs" }, "homepage": "https://github.com/DavidAnson/markdownlint-cli2", "repository": { @@ -39,7 +39,7 @@ "playwright-test": "playwright test --config ./webworker/playwright.config.mjs", "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:v1.49.1 npm run playwright-test", "schema": "cpy ./node_modules/markdownlint/schema/markdownlint-config-schema.json ./schema --flat", - "test": "ava --timeout=1m test/append-to-array-test.js test/fs-mock-test.js test/fs-virtual-test.js test/markdownlint-cli2-test.js test/markdownlint-cli2-test-exec.js test/markdownlint-cli2-test-exports.js test/markdownlint-cli2-test-fs.js test/markdownlint-cli2-test-main.js test/merge-options-test.js test/resolve-and-require-test.js", + "test": "ava --timeout=1m test/append-to-array-test.mjs test/fs-mock-test.mjs test/fs-virtual-test.mjs test/markdownlint-cli2-test.mjs test/markdownlint-cli2-test-exec.mjs test/markdownlint-cli2-test-exports.mjs test/markdownlint-cli2-test-fs.mjs test/markdownlint-cli2-test-main.mjs test/merge-options-test.mjs test/resolve-and-require-test.mjs", "test-cover": "c8 --100 npm test", "test-docker-hub-image": "VERSION=$(node -e \"process.stdout.write(require('./package.json').version)\") && docker image rm davidanson/markdownlint-cli2:v$VERSION davidanson/markdownlint-cli2:latest || true && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2:v$VERSION \"*.md\" && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2:latest \"*.md\"", "test-docker-hub-image-rules": "VERSION=$(node -e \"process.stdout.write(require('./package.json').version)\") && docker image rm davidanson/markdownlint-cli2-rules:v$VERSION davidanson/markdownlint-cli2-rules:latest || true && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2-rules:v$VERSION \"*.md\" && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2-rules:latest \"*.md\"", @@ -47,26 +47,28 @@ "test-docker-image-rules": "VERSION=$(node -e \"process.stdout.write(require('./package.json').version)\") && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2-rules:v$VERSION \"*.md\"", "test-invoke-as-cli": "markdownlint-cli2 CHANGELOG.md", "test-watch": "git ls-files | entr npm run test", - "update-snapshots": "ava --timeout=1m --update-snapshots test/markdownlint-cli2-test-exec.js test/markdownlint-cli2-test-fs.js test/markdownlint-cli2-test-main.js", + "update-snapshots": "ava --timeout=1m --update-snapshots test/markdownlint-cli2-test-exec.mjs test/markdownlint-cli2-test-fs.mjs test/markdownlint-cli2-test-main.mjs", "webworker": "cd webworker && webpack --mode none", - "webworker-install": "npm install --no-package-lock --no-save path-browserify setimmediate stream-browserify util webpack-cli && cpy ./node_modules/setimmediate/setImmediate.js ./webworker --flat" + "webworker-install": "npm install --no-package-lock --no-save path-browserify setimmediate stream-browserify util webpack-cli && cpy ./node_modules/setimmediate/setImmediate.js ./webworker --flat --rename=setImmediate.cjs" }, "engines": { "node": ">=18" }, "files": [ - "append-to-array.js", + "append-to-array.mjs", "CHANGELOG.md", - "export-markdownlint.js", - "export-markdownlint-helpers.js", + "export-markdownlint.mjs", + "export-markdownlint-helpers.mjs", + "export-markdownlint-promise.mjs", "LICENSE", - "markdownlint-cli2.js", - "merge-options.js", - "parsers/parsers.js", - "parsers/jsonc-parse.js", - "parsers/yaml-parse.js", + "markdownlint-cli2.mjs", + "markdownlint-cli2-bin.mjs", + "merge-options.mjs", + "parsers/parsers.mjs", + "parsers/jsonc-parse.mjs", + "parsers/yaml-parse.mjs", "README.md", - "resolve-and-require.js", + "resolve-and-require.mjs", "schema/markdownlint-cli2-config-schema.json", "schema/markdownlint-config-schema.json", "schema/ValidatingConfiguration.md" @@ -75,7 +77,7 @@ "globby": "14.0.2", "js-yaml": "4.1.0", "jsonc-parser": "3.3.1", - "markdownlint": "0.36.1", + "markdownlint": "0.37.0", "markdownlint-cli2-formatter-default": "0.0.5", "micromatch": "4.0.8" }, @@ -94,7 +96,6 @@ "eslint-plugin-jsdoc": "50.6.1", "eslint-plugin-n": "17.15.0", "eslint-plugin-unicorn": "56.0.1", - "nano-spawn": "0.2.0", "markdown-it-emoji": "3.0.0", "markdown-it-for-inline": "2.0.1", "markdownlint-cli2-formatter-codequality": "0.0.5", @@ -105,6 +106,7 @@ "markdownlint-cli2-formatter-summarize": "0.0.7", "markdownlint-cli2-formatter-template": "0.0.2", "markdownlint-rule-extended-ascii": "0.1.0", + "nano-spawn": "0.2.0", "npm-run-all": "4.1.5" }, "keywords": [ diff --git a/parsers/jsonc-parse.js b/parsers/jsonc-parse.mjs similarity index 84% rename from parsers/jsonc-parse.js rename to parsers/jsonc-parse.mjs index 3dd30300..446f1778 100644 --- a/parsers/jsonc-parse.js +++ b/parsers/jsonc-parse.mjs @@ -1,8 +1,6 @@ // @ts-check -"use strict"; - -const { parse, printParseErrorCode } = require("jsonc-parser"); +import { parse, printParseErrorCode } from "jsonc-parser"; /** * Parses a JSONC string, returning the corresponding object. @@ -21,4 +19,4 @@ const jsoncParse = (text) => { return result; }; -module.exports = jsoncParse; +export default jsoncParse; diff --git a/parsers/parsers.js b/parsers/parsers.js deleted file mode 100644 index 0676305d..00000000 --- a/parsers/parsers.js +++ /dev/null @@ -1,16 +0,0 @@ -// @ts-check - -"use strict"; - -const jsoncParse = require("./jsonc-parse"); -const yamlParse = require("./yaml-parse"); - -/** - * Array of parser objects ordered by priority. - */ -const parsers = [ - jsoncParse, - yamlParse -]; - -module.exports = parsers; diff --git a/parsers/parsers.mjs b/parsers/parsers.mjs new file mode 100644 index 00000000..8b89bb0c --- /dev/null +++ b/parsers/parsers.mjs @@ -0,0 +1,14 @@ +// @ts-check + +import jsoncParse from "./jsonc-parse.mjs"; +import yamlParse from "./yaml-parse.mjs"; + +/** + * Array of parser objects ordered by priority. + */ +const parsers = [ + jsoncParse, + yamlParse +]; + +export default parsers; diff --git a/parsers/yaml-parse.js b/parsers/yaml-parse.mjs similarity index 74% rename from parsers/yaml-parse.js rename to parsers/yaml-parse.mjs index 22ff335f..0cf404df 100644 --- a/parsers/yaml-parse.js +++ b/parsers/yaml-parse.mjs @@ -1,8 +1,6 @@ // @ts-check -"use strict"; - -const yaml = require("js-yaml"); +import yaml from "js-yaml"; /** * Parses a YAML string, returning the corresponding object. @@ -11,4 +9,4 @@ const yaml = require("js-yaml"); */ const yamlParse = (text) => yaml.load(text); -module.exports = yamlParse; +export default yamlParse; diff --git a/resolve-and-require.js b/resolve-and-require.mjs similarity index 91% rename from resolve-and-require.js rename to resolve-and-require.mjs index 9507698c..8650ee2e 100644 --- a/resolve-and-require.js +++ b/resolve-and-require.mjs @@ -1,7 +1,5 @@ // @ts-check -"use strict"; - /** * Wrapper for calling Node's require.resolve/require with an additional path. * @param {object} req Node's require implementation (or equivalent). @@ -16,4 +14,4 @@ const resolveAndRequire = (req, id, dirs) => { return req(resolved); }; -module.exports = resolveAndRequire; +export default resolveAndRequire; diff --git a/schema/markdownlint-cli2-config-schema.json b/schema/markdownlint-cli2-config-schema.json index 8807180a..af97593a 100644 --- a/schema/markdownlint-cli2-config-schema.json +++ b/schema/markdownlint-cli2-config-schema.json @@ -10,8 +10,8 @@ "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.16.0/schema/markdownlint-cli2-config-schema.json" }, "config": { - "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/schema/.markdownlint.jsonc", - "$ref": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.36.1/schema/markdownlint-config-schema.json", + "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/schema/.markdownlint.jsonc", + "$ref": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.0/schema/markdownlint-config-schema.json", "default": {} }, "customRules": { diff --git a/schema/markdownlint-config-schema.json b/schema/markdownlint-config-schema.json index 31753a70..cf7dea4f 100644 --- a/schema/markdownlint-config-schema.json +++ b/schema/markdownlint-config-schema.json @@ -1,13 +1,13 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.36.1/schema/markdownlint-config-schema.json", + "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.0/schema/markdownlint-config-schema.json", "title": "markdownlint configuration schema", "type": "object", "properties": { "$schema": { "description": "JSON Schema URI (expected by some editors)", "type": "string", - "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.36.1/schema/markdownlint-config-schema.json" + "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.0/schema/markdownlint-config-schema.json" }, "default": { "description": "Default state for all rules", @@ -23,17 +23,17 @@ "default": null }, "MD001": { - "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md001.md", + "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md001.md", "type": "boolean", "default": true }, "heading-increment": { - "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md001.md", + "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md001.md", "type": "boolean", "default": true }, "MD003": { - "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md003.md", + "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md003.md", "type": [ "boolean", "object" @@ -57,7 +57,7 @@ "additionalProperties": false }, "heading-style": { - "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md003.md", + "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md003.md", "type": [ "boolean", "object" @@ -81,7 +81,7 @@ "additionalProperties": false }, "MD004": { - "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md004.md", + "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md004.md", "type": [ "boolean", "object" @@ -104,7 +104,7 @@ "additionalProperties": false }, "ul-style": { - "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md004.md", + "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md004.md", "type": [ "boolean", "object" @@ -127,17 +127,17 @@ "additionalProperties": false }, "MD005": { - "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md005.md", + "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md005.md", "type": "boolean", "default": true }, "list-indent": { - "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md005.md", + "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md005.md", "type": "boolean", "default": true }, "MD007": { - "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md007.md", + "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md007.md", "type": [ "boolean", "object" @@ -165,7 +165,7 @@ "additionalProperties": false }, "ul-indent": { - "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md007.md", + "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md007.md", "type": [ "boolean", "object" @@ -193,7 +193,7 @@ "additionalProperties": false }, "MD009": { - "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md009.md", + "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md009.md", "type": [ "boolean", "object" @@ -220,7 +220,7 @@ "additionalProperties": false }, "no-trailing-spaces": { - "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md009.md", + "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md009.md", "type": [ "boolean", "object" @@ -247,7 +247,7 @@ "additionalProperties": false }, "MD010": { - "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md010.md", + "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md010.md", "type": [ "boolean", "object" @@ -277,7 +277,7 @@ "additionalProperties": false }, "no-hard-tabs": { - "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md010.md", + "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md010.md", "type": [ "boolean", "object" @@ -307,17 +307,17 @@ "additionalProperties": false }, "MD011": { - "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md011.md", + "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md011.md", "type": "boolean", "default": true }, "no-reversed-links": { - "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md011.md", + "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md011.md", "type": "boolean", "default": true }, "MD012": { - "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md012.md", + "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md012.md", "type": [ "boolean", "object" @@ -334,7 +334,7 @@ "additionalProperties": false }, "no-multiple-blanks": { - "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md012.md", + "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md012.md", "type": [ "boolean", "object" @@ -351,7 +351,7 @@ "additionalProperties": false }, "MD013": { - "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md013.md", + "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md013.md", "type": [ "boolean", "object" @@ -405,7 +405,7 @@ "additionalProperties": false }, "line-length": { - "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md013.md", + "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md013.md", "type": [ "boolean", "object" @@ -459,57 +459,57 @@ "additionalProperties": false }, "MD014": { - "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md014.md", + "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md014.md", "type": "boolean", "default": true }, "commands-show-output": { - "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md014.md", + "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md014.md", "type": "boolean", "default": true }, "MD018": { - "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md018.md", + "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md018.md", "type": "boolean", "default": true }, "no-missing-space-atx": { - "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md018.md", + "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md018.md", "type": "boolean", "default": true }, "MD019": { - "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md019.md", + "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md019.md", "type": "boolean", "default": true }, "no-multiple-space-atx": { - "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md019.md", + "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md019.md", "type": "boolean", "default": true }, "MD020": { - "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md020.md", + "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md020.md", "type": "boolean", "default": true }, "no-missing-space-closed-atx": { - "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md020.md", + "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md020.md", "type": "boolean", "default": true }, "MD021": { - "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md021.md", + "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md021.md", "type": "boolean", "default": true }, "no-multiple-space-closed-atx": { - "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md021.md", + "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md021.md", "type": "boolean", "default": true }, "MD022": { - "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md022.md", + "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md022.md", "type": [ "boolean", "object" @@ -544,7 +544,7 @@ "additionalProperties": false }, "blanks-around-headings": { - "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md022.md", + "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md022.md", "type": [ "boolean", "object" @@ -579,17 +579,17 @@ "additionalProperties": false }, "MD023": { - "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md023.md", + "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md023.md", "type": "boolean", "default": true }, "heading-start-left": { - "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md023.md", + "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md023.md", "type": "boolean", "default": true }, "MD024": { - "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md024.md", + "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md024.md", "type": [ "boolean", "object" @@ -605,7 +605,7 @@ "additionalProperties": false }, "no-duplicate-heading": { - "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md024.md", + "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md024.md", "type": [ "boolean", "object" @@ -621,7 +621,7 @@ "additionalProperties": false }, "MD025": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md025.md", "type": [ "boolean", "object" @@ -644,7 +644,7 @@ "additionalProperties": false }, "single-title": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md025.md", "type": [ "boolean", "object" @@ -667,7 +667,7 @@ "additionalProperties": false }, "single-h1": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md025.md", "type": [ "boolean", "object" @@ -690,7 +690,7 @@ "additionalProperties": false }, "MD026": { - "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md026.md", + "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md026.md", "type": [ "boolean", "object" @@ -706,7 +706,7 @@ "additionalProperties": false }, "no-trailing-punctuation": { - "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md026.md", + "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md026.md", "type": [ "boolean", "object" @@ -722,27 +722,27 @@ "additionalProperties": false }, "MD027": { - "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md027.md", + "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md027.md", "type": "boolean", "default": true }, "no-multiple-space-blockquote": { - "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md027.md", + "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md027.md", "type": "boolean", "default": true }, "MD028": { - "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md028.md", + "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md028.md", "type": "boolean", "default": true }, "no-blanks-blockquote": { - "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md028.md", + "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md028.md", "type": "boolean", "default": true }, "MD029": { - "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md029.md", + "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md029.md", "type": [ "boolean", "object" @@ -764,7 +764,7 @@ "additionalProperties": false }, "ol-prefix": { - "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md029.md", + "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md029.md", "type": [ "boolean", "object" @@ -786,7 +786,7 @@ "additionalProperties": false }, "MD030": { - "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md030.md", + "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md030.md", "type": [ "boolean", "object" @@ -821,7 +821,7 @@ "additionalProperties": false }, "list-marker-space": { - "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md030.md", + "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md030.md", "type": [ "boolean", "object" @@ -856,7 +856,7 @@ "additionalProperties": false }, "MD031": { - "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md031.md", + "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md031.md", "type": [ "boolean", "object" @@ -872,7 +872,7 @@ "additionalProperties": false }, "blanks-around-fences": { - "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md031.md", + "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md031.md", "type": [ "boolean", "object" @@ -888,17 +888,17 @@ "additionalProperties": false }, "MD032": { - "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md032.md", + "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md032.md", "type": "boolean", "default": true }, "blanks-around-lists": { - "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md032.md", + "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md032.md", "type": "boolean", "default": true }, "MD033": { - "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md033.md", + "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md033.md", "type": [ "boolean", "object" @@ -917,7 +917,7 @@ "additionalProperties": false }, "no-inline-html": { - "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md033.md", + "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md033.md", "type": [ "boolean", "object" @@ -936,17 +936,17 @@ "additionalProperties": false }, "MD034": { - "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md034.md", + "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md034.md", "type": "boolean", "default": true }, "no-bare-urls": { - "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md034.md", + "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md034.md", "type": "boolean", "default": true }, "MD035": { - "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md035.md", + "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md035.md", "type": [ "boolean", "object" @@ -962,7 +962,7 @@ "additionalProperties": false }, "hr-style": { - "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md035.md", + "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md035.md", "type": [ "boolean", "object" @@ -978,7 +978,7 @@ "additionalProperties": false }, "MD036": { - "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md036.md", + "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md036.md", "type": [ "boolean", "object" @@ -994,7 +994,7 @@ "additionalProperties": false }, "no-emphasis-as-heading": { - "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md036.md", + "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md036.md", "type": [ "boolean", "object" @@ -1010,37 +1010,37 @@ "additionalProperties": false }, "MD037": { - "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md037.md", + "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md037.md", "type": "boolean", "default": true }, "no-space-in-emphasis": { - "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md037.md", + "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md037.md", "type": "boolean", "default": true }, "MD038": { - "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md038.md", + "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md038.md", "type": "boolean", "default": true }, "no-space-in-code": { - "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md038.md", + "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md038.md", "type": "boolean", "default": true }, "MD039": { - "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md039.md", + "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md039.md", "type": "boolean", "default": true }, "no-space-in-links": { - "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md039.md", + "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md039.md", "type": "boolean", "default": true }, "MD040": { - "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md040.md", + "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md040.md", "type": [ "boolean", "object" @@ -1064,7 +1064,7 @@ "additionalProperties": false }, "fenced-code-language": { - "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md040.md", + "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md040.md", "type": [ "boolean", "object" @@ -1088,7 +1088,7 @@ "additionalProperties": false }, "MD041": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md041.md", "type": [ "boolean", "object" @@ -1111,7 +1111,7 @@ "additionalProperties": false }, "first-line-heading": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md041.md", "type": [ "boolean", "object" @@ -1134,7 +1134,7 @@ "additionalProperties": false }, "first-line-h1": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md041.md", "type": [ "boolean", "object" @@ -1157,17 +1157,17 @@ "additionalProperties": false }, "MD042": { - "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md042.md", + "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md042.md", "type": "boolean", "default": true }, "no-empty-links": { - "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md042.md", + "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md042.md", "type": "boolean", "default": true }, "MD043": { - "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md043.md", + "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md043.md", "type": [ "boolean", "object" @@ -1192,7 +1192,7 @@ "additionalProperties": false }, "required-headings": { - "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md043.md", + "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md043.md", "type": [ "boolean", "object" @@ -1217,7 +1217,7 @@ "additionalProperties": false }, "MD044": { - "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md044.md", + "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md044.md", "type": [ "boolean", "object" @@ -1246,7 +1246,7 @@ "additionalProperties": false }, "proper-names": { - "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md044.md", + "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md044.md", "type": [ "boolean", "object" @@ -1275,17 +1275,17 @@ "additionalProperties": false }, "MD045": { - "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md045.md", + "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md045.md", "type": "boolean", "default": true }, "no-alt-text": { - "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md045.md", + "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md045.md", "type": "boolean", "default": true }, "MD046": { - "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md046.md", + "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md046.md", "type": [ "boolean", "object" @@ -1306,7 +1306,7 @@ "additionalProperties": false }, "code-block-style": { - "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md046.md", + "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md046.md", "type": [ "boolean", "object" @@ -1327,17 +1327,17 @@ "additionalProperties": false }, "MD047": { - "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md047.md", + "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md047.md", "type": "boolean", "default": true }, "single-trailing-newline": { - "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md047.md", + "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md047.md", "type": "boolean", "default": true }, "MD048": { - "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md048.md", + "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md048.md", "type": [ "boolean", "object" @@ -1358,7 +1358,7 @@ "additionalProperties": false }, "code-fence-style": { - "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md048.md", + "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md048.md", "type": [ "boolean", "object" @@ -1379,7 +1379,7 @@ "additionalProperties": false }, "MD049": { - "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md049.md", + "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md049.md", "type": [ "boolean", "object" @@ -1400,7 +1400,7 @@ "additionalProperties": false }, "emphasis-style": { - "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md049.md", + "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md049.md", "type": [ "boolean", "object" @@ -1421,7 +1421,7 @@ "additionalProperties": false }, "MD050": { - "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md050.md", + "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md050.md", "type": [ "boolean", "object" @@ -1442,7 +1442,7 @@ "additionalProperties": false }, "strong-style": { - "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md050.md", + "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md050.md", "type": [ "boolean", "object" @@ -1463,7 +1463,7 @@ "additionalProperties": false }, "MD051": { - "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md051.md", + "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md051.md", "type": [ "boolean", "object" @@ -1479,7 +1479,7 @@ "additionalProperties": false }, "link-fragments": { - "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md051.md", + "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md051.md", "type": [ "boolean", "object" @@ -1495,7 +1495,7 @@ "additionalProperties": false }, "MD052": { - "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md052.md", + "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md052.md", "type": [ "boolean", "object" @@ -1511,7 +1511,7 @@ "additionalProperties": false }, "reference-links-images": { - "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md052.md", + "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md052.md", "type": [ "boolean", "object" @@ -1527,7 +1527,7 @@ "additionalProperties": false }, "MD053": { - "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md053.md", + "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md053.md", "type": [ "boolean", "object" @@ -1548,7 +1548,7 @@ "additionalProperties": false }, "link-image-reference-definitions": { - "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md053.md", + "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md053.md", "type": [ "boolean", "object" @@ -1569,7 +1569,7 @@ "additionalProperties": false }, "MD054": { - "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md054.md", + "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md054.md", "type": [ "boolean", "object" @@ -1610,7 +1610,7 @@ "additionalProperties": false }, "link-image-style": { - "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md054.md", + "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md054.md", "type": [ "boolean", "object" @@ -1651,7 +1651,7 @@ "additionalProperties": false }, "MD055": { - "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md055.md", + "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md055.md", "type": [ "boolean", "object" @@ -1674,7 +1674,7 @@ "additionalProperties": false }, "table-pipe-style": { - "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md055.md", + "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md055.md", "type": [ "boolean", "object" @@ -1697,22 +1697,22 @@ "additionalProperties": false }, "MD056": { - "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md056.md", + "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md056.md", "type": "boolean", "default": true }, "table-column-count": { - "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md056.md", + "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md056.md", "type": "boolean", "default": true }, "MD058": { - "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md058.md", + "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md058.md", "type": "boolean", "default": true }, "blanks-around-tables": { - "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/doc/md058.md", + "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md058.md", "type": "boolean", "default": true }, diff --git a/test/append-to-array-test.js b/test/append-to-array-test.mjs similarity index 94% rename from test/append-to-array-test.js rename to test/append-to-array-test.mjs index aca4c704..9540dbce 100644 --- a/test/append-to-array-test.js +++ b/test/append-to-array-test.mjs @@ -1,10 +1,7 @@ // @ts-check -"use strict"; - -const test = require("ava").default; -const appendToArray = require("../append-to-array"); -const { sliceSize } = appendToArray; +import test from "ava"; +import appendToArray, { sliceSize } from "../append-to-array.mjs"; const makeArray = (minimum, maximum) => { const length = maximum - minimum + 1; diff --git a/test/config-relative-commonjs/config/any-blockquote.cjs b/test/config-relative-commonjs/config/any-blockquote.cjs index 7e10e220..2de8e13a 100644 --- a/test/config-relative-commonjs/config/any-blockquote.cjs +++ b/test/config-relative-commonjs/config/any-blockquote.cjs @@ -2,7 +2,7 @@ "use strict"; -/** @type import("markdownlint").Rule */ +/** @type {import("markdownlint").Rule} */ module.exports = { "names": [ "any-blockquote" ], "description": "Rule that reports an error for any blockquote", diff --git a/test/config-relative-module/config/any-blockquote.mjs b/test/config-relative-module/config/any-blockquote.mjs index 210715cf..c9c83709 100644 --- a/test/config-relative-module/config/any-blockquote.mjs +++ b/test/config-relative-module/config/any-blockquote.mjs @@ -1,6 +1,6 @@ // @ts-check -/** @type import("markdownlint").Rule */ +/** @type {import("markdownlint").Rule} */ const rule = { "names": [ "any-blockquote" ], "description": "Rule that reports an error for any blockquote", diff --git a/test/customRules-invalid/.markdownlint-cli2.jsonc b/test/customRules-invalid/.markdownlint-cli2.jsonc index f6719bd5..e198464b 100644 --- a/test/customRules-invalid/.markdownlint-cli2.jsonc +++ b/test/customRules-invalid/.markdownlint-cli2.jsonc @@ -1,5 +1,5 @@ { "customRules": [ - "markdownlint" + "micromatch" ] } diff --git a/test/customRules-pre-imported/.markdownlint-cli2.cjs b/test/customRules-pre-imported/.markdownlint-cli2.cjs index 98fa5da8..5ba88bee 100644 --- a/test/customRules-pre-imported/.markdownlint-cli2.cjs +++ b/test/customRules-pre-imported/.markdownlint-cli2.cjs @@ -2,7 +2,7 @@ "use strict"; -const anyBlockquote = require("./rules/any-blockquote.js"); +const anyBlockquote = require("./rules/any-blockquote.cjs"); module.exports = { "customRules": [ diff --git a/test/customRules/rules/any-blockquote.js b/test/customRules-pre-imported/rules/any-blockquote.cjs similarity index 94% rename from test/customRules/rules/any-blockquote.js rename to test/customRules-pre-imported/rules/any-blockquote.cjs index 7e10e220..2de8e13a 100644 --- a/test/customRules/rules/any-blockquote.js +++ b/test/customRules-pre-imported/rules/any-blockquote.cjs @@ -2,7 +2,7 @@ "use strict"; -/** @type import("markdownlint").Rule */ +/** @type {import("markdownlint").Rule} */ module.exports = { "names": [ "any-blockquote" ], "description": "Rule that reports an error for any blockquote", diff --git a/test/customRules-throws/.markdownlint-cli2.jsonc b/test/customRules-throws/.markdownlint-cli2.jsonc index 59e833f9..5d41a132 100644 --- a/test/customRules-throws/.markdownlint-cli2.jsonc +++ b/test/customRules-throws/.markdownlint-cli2.jsonc @@ -1,5 +1,5 @@ { "customRules": [ - "./rules/throws.js" + "./rules/throws.cjs" ] } diff --git a/test/customRules-throws/rules/throws.js b/test/customRules-throws/rules/throws.cjs similarity index 100% rename from test/customRules-throws/rules/throws.js rename to test/customRules-throws/rules/throws.cjs diff --git a/test/customRules/.markdownlint-cli2.jsonc b/test/customRules/.markdownlint-cli2.jsonc index 1350bd58..599aee08 100644 --- a/test/customRules/.markdownlint-cli2.jsonc +++ b/test/customRules/.markdownlint-cli2.jsonc @@ -1,8 +1,8 @@ { "customRules": [ - "./rules/any-blockquote.js", - "./rules/every-n-lines.js", - "./rules/first-line.js" + "./rules/any-blockquote.cjs", + "./rules/every-n-lines.cjs", + "./rules/first-line.cjs" ], "config": { "every-n-lines": { diff --git a/test/customRules/dir/subdir/.markdownlint-cli2.jsonc b/test/customRules/dir/subdir/.markdownlint-cli2.jsonc index ab641367..66c3cb4b 100644 --- a/test/customRules/dir/subdir/.markdownlint-cli2.jsonc +++ b/test/customRules/dir/subdir/.markdownlint-cli2.jsonc @@ -1,6 +1,6 @@ { "customRules": [ - "../../rules/first-line.js", + "../../rules/first-line.cjs", "../../node_modules/markdownlint-rule-sample-commonjs", "../../node_modules/markdownlint-rule-sample-module/sample-rule.mjs", "markdownlint-rule-extended-ascii" diff --git a/test/customRules/dir3/.markdownlint-cli2.jsonc b/test/customRules/dir3/.markdownlint-cli2.jsonc index 0fed617e..e9a71c6c 100644 --- a/test/customRules/dir3/.markdownlint-cli2.jsonc +++ b/test/customRules/dir3/.markdownlint-cli2.jsonc @@ -1,6 +1,6 @@ { "customRules": [ - "../rules/all-rules", + "../rules/all-rules.cjs", "../node_modules/markdownlint-rule-sample-commonjs", "../node_modules/markdownlint-rule-sample-module/sample-rule.mjs" ] diff --git a/test/customRules/rules/all-rules.cjs b/test/customRules/rules/all-rules.cjs new file mode 100644 index 00000000..b333a173 --- /dev/null +++ b/test/customRules/rules/all-rules.cjs @@ -0,0 +1,10 @@ +// @ts-check + +"use strict"; + +module.exports = [ + require("./any-blockquote.cjs"), + require("./every-n-lines.cjs"), + require("./first-line.cjs"), + require("./second-line.cjs") +]; diff --git a/test/customRules/rules/all-rules.js b/test/customRules/rules/all-rules.js deleted file mode 100644 index 32817133..00000000 --- a/test/customRules/rules/all-rules.js +++ /dev/null @@ -1,10 +0,0 @@ -// @ts-check - -"use strict"; - -module.exports = [ - require("./any-blockquote"), - require("./every-n-lines"), - require("./first-line"), - require("./second-line") -]; diff --git a/test/customRules-pre-imported/rules/any-blockquote.js b/test/customRules/rules/any-blockquote.cjs similarity index 94% rename from test/customRules-pre-imported/rules/any-blockquote.js rename to test/customRules/rules/any-blockquote.cjs index 7e10e220..2de8e13a 100644 --- a/test/customRules-pre-imported/rules/any-blockquote.js +++ b/test/customRules/rules/any-blockquote.cjs @@ -2,7 +2,7 @@ "use strict"; -/** @type import("markdownlint").Rule */ +/** @type {import("markdownlint").Rule} */ module.exports = { "names": [ "any-blockquote" ], "description": "Rule that reports an error for any blockquote", diff --git a/test/customRules/rules/every-n-lines.js b/test/customRules/rules/every-n-lines.cjs similarity index 100% rename from test/customRules/rules/every-n-lines.js rename to test/customRules/rules/every-n-lines.cjs diff --git a/test/customRules/rules/first-line.js b/test/customRules/rules/first-line.cjs similarity index 100% rename from test/customRules/rules/first-line.js rename to test/customRules/rules/first-line.cjs diff --git a/test/customRules/rules/second-line.js b/test/customRules/rules/second-line.cjs similarity index 100% rename from test/customRules/rules/second-line.js rename to test/customRules/rules/second-line.cjs diff --git a/test/esm-helpers.mjs b/test/esm-helpers.mjs new file mode 100644 index 00000000..093e202f --- /dev/null +++ b/test/esm-helpers.mjs @@ -0,0 +1,35 @@ +// @ts-check + +import fs from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +/** + * Gets the file name of the current module. + * Shims import.meta.filename for Node 18. + * @param {object} meta ESM import.meta object. + * @returns {string} File name. + */ +// eslint-disable-next-line no-underscore-dangle +export const __filename = (meta) => fileURLToPath(meta.url); + +/** + * Gets the directory name of the current module. + * Shims import.meta.dirname for Node 18. + * @param {object} meta ESM import.meta object. + * @returns {string} Directory name. + */ +// eslint-disable-next-line no-underscore-dangle +export const __dirname = (meta) => path.dirname(__filename(meta)); + +/** + * Imports a file as JSON. + * Avoids "ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time". + * @param {object} meta ESM import.meta object. + * @param {string} file JSON file to import. + * @returns {Promise} JSON object. + */ +export const importWithTypeJson = async (meta, file) => ( + // @ts-ignore + JSON.parse(await fs.readFile(path.resolve(__dirname(meta), file))) +); diff --git a/test/fs-mock-test.js b/test/fs-mock-test.mjs similarity index 73% rename from test/fs-mock-test.js rename to test/fs-mock-test.mjs index f9734e64..4b25de9b 100644 --- a/test/fs-mock-test.js +++ b/test/fs-mock-test.mjs @@ -1,19 +1,19 @@ // @ts-check -"use strict"; - -const path = require("node:path"); -const { promisify } = require("node:util"); -const test = require("ava").default; -const FsMock = require("./fs-mock"); +import fsNodePromises from "node:fs/promises"; +import path from "node:path"; +import { promisify } from "node:util"; +import test from "ava"; +import { __dirname, __filename } from "./esm-helpers.mjs"; +import FsMock from "./fs-mock.mjs"; const mockPath = "/mock"; -const thisFile = path.basename(__filename); +const thisFile = path.basename(__filename(import.meta)); const testFile = path.join(mockPath, thisFile); test("fsMock.stat", async (t) => { t.plan(2); - const fs = new FsMock(__dirname); + const fs = new FsMock(__dirname(import.meta)); const fsStat = promisify(fs.stat); // @ts-ignore const stat = await fsStat(testFile); @@ -23,7 +23,7 @@ test("fsMock.stat", async (t) => { test("fsMock.lstat", async (t) => { t.plan(3); - const fs = new FsMock(__dirname); + const fs = new FsMock(__dirname(import.meta)); const fsLstat = promisify(fs.lstat); // @ts-ignore const stat = await fsLstat(testFile); @@ -34,7 +34,7 @@ test("fsMock.lstat", async (t) => { test("fsMock.lstat symbolic links", async (t) => { t.plan(3); - const fs = new FsMock(__dirname, true); + const fs = new FsMock(__dirname(import.meta), true); const fsLstat = promisify(fs.lstat); // @ts-ignore const stat = await fsLstat(testFile); @@ -45,7 +45,7 @@ test("fsMock.lstat symbolic links", async (t) => { test("fsMock.readdir", async (t) => { t.plan(3); - const fs = new FsMock(__dirname); + const fs = new FsMock(__dirname(import.meta)); const fsReaddir = promisify(fs.readdir); // @ts-ignore const files = await fsReaddir(mockPath); @@ -56,7 +56,7 @@ test("fsMock.readdir", async (t) => { test("fsMock.*", async (t) => { t.plan(1); - const fs = new FsMock(__dirname); + const fs = new FsMock(__dirname(import.meta)); const fsAccess = promisify(fs.access); // @ts-ignore await fsAccess(testFile); @@ -74,7 +74,7 @@ test("fsMock.*", async (t) => { test("fsMock.promises.*", async (t) => { t.plan(2); - const fs = new FsMock(__dirname); + const fs = new FsMock(__dirname(import.meta)); const tempName = "fs-mock.tmp"; const tempFile = path.join(mockPath, tempName); await t.throwsAsync(() => fs.promises.access(tempFile)); @@ -82,5 +82,5 @@ test("fsMock.promises.*", async (t) => { await fs.promises.access(tempFile); await fs.promises.stat(tempFile); t.is(await fs.promises.readFile(tempFile, "utf8"), tempFile); - await require("node:fs").promises.unlink(path.join(__dirname, tempName)); + await fsNodePromises.unlink(path.join(__dirname(import.meta), tempName)); }); diff --git a/test/fs-mock.js b/test/fs-mock.mjs similarity index 87% rename from test/fs-mock.js rename to test/fs-mock.mjs index ad3a4580..655b5d88 100644 --- a/test/fs-mock.js +++ b/test/fs-mock.mjs @@ -1,13 +1,11 @@ // @ts-check -"use strict"; +import fs from "node:fs"; +import nodePath from "node:path"; -const fs = require("node:fs"); - -const mapPath = (base, mockPath) => { - const path = require("node:path"); - return path.resolve(base, path.relative("/mock", mockPath)); -}; +const mapPath = (base, mockPath) => ( + nodePath.resolve(base, nodePath.relative("/mock", mockPath)) +); class fsMock { constructor(base, symbolicLinks) { @@ -56,4 +54,4 @@ class fsMock { } } -module.exports = fsMock; +export default fsMock; diff --git a/test/fs-virtual-test.js b/test/fs-virtual-test.mjs similarity index 88% rename from test/fs-virtual-test.js rename to test/fs-virtual-test.mjs index 1887bc70..ac33a79a 100644 --- a/test/fs-virtual-test.js +++ b/test/fs-virtual-test.mjs @@ -1,19 +1,18 @@ // @ts-check -"use strict"; - -const path = require("node:path"); -const { promisify } = require("node:util"); -const test = require("ava").default; -const FsVirtual = require("../webworker/fs-virtual"); +import path from "node:path"; +import { promisify } from "node:util"; +import test from "ava"; +import { __filename } from "./esm-helpers.mjs"; +import FsVirtual from "../webworker/fs-virtual.cjs"; const mockPath = "/mock"; -const thisFile = path.basename(__filename); +const thisFile = path.basename(__filename(import.meta)); const testFile = path.join(mockPath, thisFile); const missingFile = `${mockPath}/missing`; const virtualFiles = [ - [ "/mock/fs-virtual-test.js", "// content" ] + [ "/mock/fs-virtual-test.mjs", "// content" ] ]; test("fsVirtual.stat", async (t) => { diff --git a/test/markdownlint-cli2-test-cases.js b/test/markdownlint-cli2-test-cases.mjs similarity index 97% rename from test/markdownlint-cli2-test-cases.js rename to test/markdownlint-cli2-test-cases.mjs index 11fdfad6..ac654fac 100644 --- a/test/markdownlint-cli2-test-cases.js +++ b/test/markdownlint-cli2-test-cases.mjs @@ -1,11 +1,10 @@ // @ts-check -"use strict"; - -const fs = require("node:fs").promises; -const os = require("node:os"); -const path = require("node:path"); -const test = require("ava").default; +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import test from "ava"; +import { __dirname } from "./esm-helpers.mjs"; const noop = () => null; const empty = () => ""; @@ -13,7 +12,7 @@ const sanitize = (str) => str. replace(/\r/gu, ""). replace(/\bv\d+\.\d+\.\d+\b/gu, "vX.Y.Z"). replace(/ :.+[/\\]sentinel/gu, " :[PATH]"); -const sameFileSystem = (path.relative(os.homedir(), __dirname) !== __dirname); +const sameFileSystem = (path.relative(os.homedir(), __dirname(import.meta)) !== __dirname(import.meta)); const isModule = (file) => file.endsWith(".cjs") || file.endsWith(".mjs"); const testCases = ({ @@ -57,7 +56,7 @@ const testCases = ({ } test(`${name} (${host})`, (t) => { t.plan(3); - const directory = path.join(__dirname, cwd || name); + const directory = path.join(__dirname(import.meta), cwd || name); return ((pre || noop)(name, shadow) || Promise.resolve()). then(invoke(directory, args, noRequire, env, script)). then((result) => Promise.all([ @@ -143,13 +142,13 @@ const testCases = ({ const copyDirectory = (dir, alt) => import("cpy").then((cpy) => ( cpy.default( - path.join(__dirname, (alt || dir), "**"), - path.join(__dirname, directoryName(dir)) + path.join(__dirname(import.meta), (alt || dir), "**"), + path.join(__dirname(import.meta), directoryName(dir)) ) )); const deleteDirectory = (dir) => import("del").then((del) => ( - del.deleteAsync(path.join(__dirname, directoryName(dir))) + del.deleteAsync(path.join(__dirname(import.meta), directoryName(dir))) )); testCase({ @@ -588,7 +587,7 @@ const testCases = ({ }); const literalFilesAbsoluteFile = absolute( - path.join(__dirname, "literal-files"), + path.join(__dirname(import.meta), "literal-files"), "sentinel/dir(1)/(view)me.md" ). split(path.sep). @@ -670,7 +669,7 @@ const testCases = ({ "name": `config-files-${configFile}-absolute-arg`, "args": [ "--config", - path.join(__dirname, "config-files", `cfg/${configFile}`), + path.join(__dirname(import.meta), "config-files", `cfg/${configFile}`), "**/*.md" ], "exitCode": 1, @@ -1161,4 +1160,4 @@ const testCases = ({ }; -module.exports = testCases; +export default testCases; diff --git a/test/markdownlint-cli2-test-exec.js b/test/markdownlint-cli2-test-exec.mjs similarity index 86% rename from test/markdownlint-cli2-test-exec.js rename to test/markdownlint-cli2-test-exec.mjs index 394262f5..25749219 100644 --- a/test/markdownlint-cli2-test-exec.js +++ b/test/markdownlint-cli2-test-exec.mjs @@ -1,22 +1,21 @@ // @ts-check -"use strict"; - -const fs = require("node:fs/promises"); -const path = require("node:path"); -const test = require("ava").default; -const testCases = require("./markdownlint-cli2-test-cases"); +import fs from "node:fs/promises"; +import path from "node:path"; +import test from "ava"; +import spawn from "nano-spawn"; +import testCases from "./markdownlint-cli2-test-cases.mjs"; +import { __dirname } from "./esm-helpers.mjs"; const absolute = (rootDir, file) => path.join(rootDir, file); -const repositoryPath = (name) => path.join(__dirname, "..", name); +const repositoryPath = (name) => path.join(__dirname(import.meta), "..", name); const invoke = (directory, args, noRequire, env, script) => async () => { await fs.access(directory); - const { "default": spawn } = await import("nano-spawn"); return spawn( "node", [ - repositoryPath(script || "markdownlint-cli2.js"), + repositoryPath(script || "markdownlint-cli2-bin.mjs"), ...args ], { @@ -42,20 +41,19 @@ testCases({ "includeAbsolute": true }); -const invokeStdin = async (args, stdin, cwd) => { - const { "default": spawn } = await import("nano-spawn"); - return spawn( +const invokeStdin = (args, stdin, cwd) => ( + spawn( "node", [ - repositoryPath("markdownlint-cli2.js"), + repositoryPath("markdownlint-cli2-bin.mjs"), ...args ], { cwd, "stdin": { "string": stdin } } - ); -}; + ) +); const validInput = "# Heading\n\nText\n"; const invalidInput = "# Heading\n\nText"; @@ -160,7 +158,7 @@ test("- parameter uses base directory configuration", (t) => { return invokeStdin( [ "-" ], invalidInput, - path.join(__dirname, "stdin") + path.join(__dirname(import.meta), "stdin") ). then(() => t.fail()). catch((error) => { @@ -174,7 +172,7 @@ test("- parameter not treated as stdin in configuration file globs", (t) => { return invokeStdin( [], invalidInput, - path.join(__dirname, "stdin-globs") + path.join(__dirname(import.meta), "stdin-globs") ). then(() => t.pass()). catch(() => t.fail()); diff --git a/test/markdownlint-cli2-test-exports.js b/test/markdownlint-cli2-test-exports.js deleted file mode 100644 index de1713c1..00000000 --- a/test/markdownlint-cli2-test-exports.js +++ /dev/null @@ -1,31 +0,0 @@ -// @ts-check - -"use strict"; - -const test = require("ava").default; -const packageJson = require("../package.json"); - -const exportMappings = new Map([ - [ ".", ".." ], - [ "./markdownlint", "markdownlint" ], - [ "./markdownlint/helpers", "markdownlint/helpers" ], - [ "./parsers", "../parsers/parsers.js" ], - [ "./parsers/jsonc", "../parsers/jsonc-parse.js" ], - [ "./parsers/yaml", "../parsers/yaml-parse.js" ] -]); - -test("exportMappings", (t) => { - t.deepEqual( - Object.keys(packageJson.exports), - [ ...exportMappings.keys() ] - ); -}); - -for (const [ exportName, exportPath ] of exportMappings) { - test(exportName, (t) => { - t.is( - require(exportName.replace(/^\./u, packageJson.name)), - require(exportPath) - ); - }); -} diff --git a/test/markdownlint-cli2-test-exports.mjs b/test/markdownlint-cli2-test-exports.mjs new file mode 100644 index 00000000..a5ef3561 --- /dev/null +++ b/test/markdownlint-cli2-test-exports.mjs @@ -0,0 +1,34 @@ +// @ts-check + +import test from "ava"; +import { importWithTypeJson } from "./esm-helpers.mjs"; +const packageJson = await importWithTypeJson(import.meta, "../package.json"); + +const exportMappings = new Map([ + [ ".", "../markdownlint-cli2.mjs" ], + [ "./markdownlint", "markdownlint" ], + [ "./markdownlint/helpers", "markdownlint/helpers" ], + [ "./markdownlint/promise", "markdownlint/promise" ], + [ "./parsers", "../parsers/parsers.mjs" ], + [ "./parsers/jsonc", "../parsers/jsonc-parse.mjs" ], + [ "./parsers/yaml", "../parsers/yaml-parse.mjs" ] +]); + +test("exportMappings", (t) => { + t.deepEqual( + Object.keys(packageJson.exports), + [ ...exportMappings.keys() ] + ); +}); + +for (const [ exportName, exportPath ] of exportMappings) { + test(exportName, async (t) => { + const commonJs = exportPath.includes("helpers"); + const importExportName = await import(exportName.replace(/^\./u, packageJson.name)); + const importExportPath = await import(exportPath); + t.deepEqual( + commonJs ? importExportName.default : importExportName, + commonJs ? importExportPath.default : importExportPath + ); + }); +} diff --git a/test/markdownlint-cli2-test-fs.js b/test/markdownlint-cli2-test-fs.mjs similarity index 81% rename from test/markdownlint-cli2-test-fs.js rename to test/markdownlint-cli2-test-fs.mjs index d2b703af..8306a1c2 100644 --- a/test/markdownlint-cli2-test-fs.js +++ b/test/markdownlint-cli2-test-fs.mjs @@ -1,11 +1,9 @@ // @ts-check -"use strict"; - -const path = require("node:path"); -const { "main": markdownlintCli2 } = require("../markdownlint-cli2.js"); -const testCases = require("./markdownlint-cli2-test-cases"); -const FsMock = require("./fs-mock"); +import path from "node:path"; +import { "main" as markdownlintCli2 } from "../markdownlint-cli2.mjs"; +import testCases from "./markdownlint-cli2-test-cases.mjs"; +import FsMock from "./fs-mock.mjs"; const mockDirectory = "/mock"; const linesEndingWithNewLine = diff --git a/test/markdownlint-cli2-test-main.js b/test/markdownlint-cli2-test-main.mjs similarity index 83% rename from test/markdownlint-cli2-test-main.js rename to test/markdownlint-cli2-test-main.mjs index 80e61ca7..067e3bec 100644 --- a/test/markdownlint-cli2-test-main.js +++ b/test/markdownlint-cli2-test-main.mjs @@ -1,10 +1,8 @@ // @ts-check -"use strict"; - -const path = require("node:path"); -const { "main": markdownlintCli2 } = require("../markdownlint-cli2.js"); -const testCases = require("./markdownlint-cli2-test-cases"); +import path from "node:path"; +import { "main" as markdownlintCli2 } from "../markdownlint-cli2.mjs"; +import testCases from "./markdownlint-cli2-test-cases.mjs"; const linesEndingWithNewLine = (lines) => lines.map((line) => `${line}\n`).join(""); diff --git a/test/markdownlint-cli2-test.js b/test/markdownlint-cli2-test.mjs similarity index 90% rename from test/markdownlint-cli2-test.js rename to test/markdownlint-cli2-test.mjs index 43c3f4b7..5e56419e 100644 --- a/test/markdownlint-cli2-test.js +++ b/test/markdownlint-cli2-test.mjs @@ -1,20 +1,23 @@ // @ts-check -"use strict"; - -const fs = require("node:fs/promises"); -const path = require("node:path"); -const Ajv = require("ajv"); -const test = require("ava").default; -const { "main": markdownlintCli2 } = require("../markdownlint-cli2.js"); -const jsoncParse = require("../parsers/jsonc-parse.js"); -const yamlParse = require("../parsers/yaml-parse.js"); -const FsMock = require("./fs-mock"); -const FsVirtual = require("../webworker/fs-virtual"); +import nodeFs from "node:fs"; +import fs from "node:fs/promises"; +import path from "node:path"; +import Ajv from "ajv"; +import test from "ava"; +import { globby } from "globby"; +import { __dirname, importWithTypeJson } from "./esm-helpers.mjs"; +const packageJson = await importWithTypeJson(import.meta, "../package.json"); +import { "main" as markdownlintCli2 } from "../markdownlint-cli2.mjs"; +import jsoncParse from "../parsers/jsonc-parse.mjs"; +import yamlParse from "../parsers/yaml-parse.mjs"; +import FsMock from "./fs-mock.mjs"; +import FsVirtual from "../webworker/fs-virtual.cjs"; +import firstLine from "./customRules/rules/first-line.cjs"; const schemaIdVersionRe = /^.*v(?\d+\.\d+\.\d+).*$/u; -const markdownlintConfigSchemaDefinition = require("../schema/markdownlint-config-schema.json"); -const markdownlintCli2ConfigSchemaDefinition = require("../schema/markdownlint-cli2-config-schema.json"); +const markdownlintConfigSchemaDefinition = await importWithTypeJson(import.meta, "../schema/markdownlint-config-schema.json"); +const markdownlintCli2ConfigSchemaDefinition = await importWithTypeJson(import.meta, "../schema/markdownlint-cli2-config-schema.json"); const outputFormatterLengthIs = (t, length) => (options) => { const { results } = options; @@ -23,7 +26,6 @@ const outputFormatterLengthIs = (t, length) => (options) => { test("name and version", (t) => { t.plan(3); - const packageJson = require("../package.json"); const logMessage = (msg) => { const match = (/^(?\S+)\sv(?\S+)\s/u).exec(msg); if (match) { @@ -77,7 +79,7 @@ test("validateMarkdownlintConfigSchema", async (t) => { const validateConfigSchema = ajv.compile(markdownlintConfigSchemaDefinition); t.is( markdownlintConfigSchemaDefinition.$id.replace(schemaIdVersionRe, "$"), - require("../package.json").dependencies.markdownlint + packageJson.dependencies.markdownlint ); t.is( markdownlintConfigSchemaDefinition.$id, @@ -85,7 +87,6 @@ test("validateMarkdownlintConfigSchema", async (t) => { ); // Validate instances - const { globby } = await import("globby"); const files = await globby( [ "**/*.markdownlint.(json|jsonc)", @@ -123,7 +124,7 @@ test("validateMarkdownlintCli2ConfigSchema", async (t) => { const validateConfigSchema = ajv.compile(markdownlintCli2ConfigSchemaDefinition); t.is( markdownlintCli2ConfigSchemaDefinition.$id.replace(schemaIdVersionRe, "$"), - require("../package.json").version + packageJson.version ); t.is( markdownlintCli2ConfigSchemaDefinition.$id, @@ -131,7 +132,6 @@ test("validateMarkdownlintCli2ConfigSchema", async (t) => { ); // Validate instances - const { globby } = await import("globby"); const files = await globby( [ "**/*.markdownlint-cli2.(json|jsonc)", @@ -200,7 +200,7 @@ test("main options default", (t) => { "directory": "test/main-options-default", "argv": [ "info.md" ], "optionsDefault": { - "customRules": [ require("./customRules/rules/first-line") ] + "customRules": [ firstLine ] } }) ]). @@ -294,7 +294,7 @@ test("alternate file contents with ignores", (t) => { test("extension scenario, file, no changes", (t) => { t.plan(2); return markdownlintCli2({ - "directory": __dirname, + "directory": __dirname(import.meta), "argv": [ ":./markdownlint-json/viewme.md" ], "optionsOverride": { "outputFormatters": [ [ outputFormatterLengthIs(t, 4) ] ] @@ -306,7 +306,7 @@ test("extension scenario, file, no changes", (t) => { test("extension scenario, file, changes", (t) => { t.plan(2); return markdownlintCli2({ - "directory": __dirname, + "directory": __dirname(import.meta), "argv": [ ":./markdownlint-json/viewme.md" ], "fileContents": { "./markdownlint-json/viewme.md": "# Title\n\n> Tagline \n\n\n" @@ -321,7 +321,7 @@ test("extension scenario, file, changes", (t) => { test("extension scenario, no file", (t) => { t.plan(2); return markdownlintCli2({ - "directory": __dirname, + "directory": __dirname(import.meta), "argv": [], "nonFileContents": { "untitled-1": "# Title\n\nText\t\n" @@ -336,7 +336,7 @@ test("extension scenario, no file", (t) => { test("extension scenario, no file, empty", (t) => { t.plan(2); return markdownlintCli2({ - "directory": __dirname, + "directory": __dirname(import.meta), "argv": [], "nonFileContents": { "untitled-1": "" @@ -360,7 +360,7 @@ test("extension scenario, ignores handled", (t) => { }; const argv = Object.keys(fileContents).map((key) => `:${key}`); return markdownlintCli2({ - "directory": path.join(__dirname, "extension-scenario-ignores"), + "directory": path.join(__dirname(import.meta), "extension-scenario-ignores"), argv, fileContents, "optionsOverride": { @@ -372,7 +372,7 @@ test("extension scenario, ignores handled", (t) => { test("extension scenario, ignores handled, absolute paths", (t) => { t.plan(2); - const directory = path.join(__dirname, "extension-scenario-ignores"); + const directory = path.join(__dirname(import.meta), "extension-scenario-ignores"); const fileContents = Object.fromEntries( Object.entries({ "viewme.md": "Heading", @@ -401,7 +401,7 @@ test("extension scenario, ignores handled, absolute paths", (t) => { test("extension scenario, globs ignored/filtered", (t) => { t.plan(2); return markdownlintCli2({ - "directory": path.join(__dirname, "extension-scenario-globs"), + "directory": path.join(__dirname(import.meta), "extension-scenario-globs"), "argv": [ ":viewme.md", ":dir/viewme.md", @@ -425,14 +425,14 @@ test("extension scenario, globs ignored/filtered", (t) => { test("backslash translation", (t) => { t.plan(2); return markdownlintCli2({ - "directory": __dirname, + "directory": __dirname(import.meta), "argv": [ "./markdownlint-json/viewme.md", "markdownlint-jsonc/viewme.md", - path.join(__dirname, "markdownlint-cli2-jsonc/viewme.md"), + path.join(__dirname(import.meta), "markdownlint-cli2-jsonc/viewme.md"), ".\\markdownlint-yml\\viewme.md", "markdownlint-yaml\\viewme.md", - path.join(__dirname, "markdownlint-cli2-yaml\\viewme.md") + path.join(__dirname(import.meta), "markdownlint-cli2-yaml\\viewme.md") ], "optionsOverride": { "outputFormatters": [ [ outputFormatterLengthIs(t, 24) ] ] @@ -563,7 +563,7 @@ test("custom fs, using node:fs", (t) => { "optionsOverride": { "outputFormatters": [ [ outputFormatterLengthIs(t, 10) ] ] }, - "fs": require("node:fs") + "fs": nodeFs }). then((exitCode) => { t.is(exitCode, 1); @@ -578,7 +578,7 @@ test("custom fs, using node:fs and noRequire=false", (t) => { "optionsOverride": { "outputFormatters": [ [ outputFormatterLengthIs(t, 11) ] ] }, - "fs": require("node:fs"), + "fs": nodeFs, "noRequire": false }). then((exitCode) => { @@ -594,7 +594,7 @@ test("custom fs, using node:fs and noRequire=true", (t) => { "optionsOverride": { "outputFormatters": [ [ outputFormatterLengthIs(t, 14) ] ] }, - "fs": require("node:fs"), + "fs": nodeFs, "noRequire": true }). then((exitCode) => { @@ -610,7 +610,7 @@ test("custom fs, using fsMock", (t) => { "optionsOverride": { "outputFormatters": [ [ outputFormatterLengthIs(t, 10) ] ] }, - "fs": new FsMock(path.join(__dirname, "markdownlint-cli2-jsonc")), + "fs": new FsMock(path.join(__dirname(import.meta), "markdownlint-cli2-jsonc")), "noRequire": true }). then((exitCode) => { @@ -626,7 +626,7 @@ test("custom fs, using fsMock simulating symbolic links", (t) => { "optionsOverride": { "outputFormatters": [ [ outputFormatterLengthIs(t, 10) ] ] }, - "fs": new FsMock(path.join(__dirname, "markdownlint-cli2-jsonc"), true), + "fs": new FsMock(path.join(__dirname(import.meta), "markdownlint-cli2-jsonc"), true), "noRequire": true }). then((exitCode) => { diff --git a/test/merge-options-test.js b/test/merge-options-test.mjs similarity index 96% rename from test/merge-options-test.js rename to test/merge-options-test.mjs index a13ade7f..ada5c695 100644 --- a/test/merge-options-test.js +++ b/test/merge-options-test.mjs @@ -1,9 +1,7 @@ // @ts-check -"use strict"; - -const test = require("ava").default; -const mergeOptions = require("../merge-options"); +import test from "ava"; +import mergeOptions from "../merge-options.mjs"; test("null/null", (t) => { t.plan(1); diff --git a/test/nested-options-config/config-options-disjoint-empty/dir/dir/.markdownlint-cli2.jsonc b/test/nested-options-config/config-options-disjoint-empty/dir/dir/.markdownlint-cli2.jsonc index 3b0219dc..9f3778dd 100644 --- a/test/nested-options-config/config-options-disjoint-empty/dir/dir/.markdownlint-cli2.jsonc +++ b/test/nested-options-config/config-options-disjoint-empty/dir/dir/.markdownlint-cli2.jsonc @@ -1,5 +1,5 @@ { "customRules": [ - "../../../first-line.js" + "../../../first-line.cjs" ] } diff --git a/test/nested-options-config/config-options-disjoint/dir/dir/.markdownlint-cli2.jsonc b/test/nested-options-config/config-options-disjoint/dir/dir/.markdownlint-cli2.jsonc index 3b0219dc..9f3778dd 100644 --- a/test/nested-options-config/config-options-disjoint/dir/dir/.markdownlint-cli2.jsonc +++ b/test/nested-options-config/config-options-disjoint/dir/dir/.markdownlint-cli2.jsonc @@ -1,5 +1,5 @@ { "customRules": [ - "../../../first-line.js" + "../../../first-line.cjs" ] } diff --git a/test/nested-options-config/config-options-overlap-empty/dir/dir/.markdownlint-cli2.jsonc b/test/nested-options-config/config-options-overlap-empty/dir/dir/.markdownlint-cli2.jsonc index 4569433e..c8e78b72 100644 --- a/test/nested-options-config/config-options-overlap-empty/dir/dir/.markdownlint-cli2.jsonc +++ b/test/nested-options-config/config-options-overlap-empty/dir/dir/.markdownlint-cli2.jsonc @@ -1,6 +1,6 @@ { "customRules": [ - "../../../first-line.js" + "../../../first-line.cjs" ], "config": { "no-space-in-code": false diff --git a/test/nested-options-config/config-options-overlap/dir/dir/.markdownlint-cli2.jsonc b/test/nested-options-config/config-options-overlap/dir/dir/.markdownlint-cli2.jsonc index 4569433e..c8e78b72 100644 --- a/test/nested-options-config/config-options-overlap/dir/dir/.markdownlint-cli2.jsonc +++ b/test/nested-options-config/config-options-overlap/dir/dir/.markdownlint-cli2.jsonc @@ -1,6 +1,6 @@ { "customRules": [ - "../../../first-line.js" + "../../../first-line.cjs" ], "config": { "no-space-in-code": false diff --git a/test/nested-options-config/first-line.js b/test/nested-options-config/first-line.cjs similarity index 100% rename from test/nested-options-config/first-line.js rename to test/nested-options-config/first-line.cjs diff --git a/test/nested-options-config/options-config-disjoint-empty/.markdownlint-cli2.jsonc b/test/nested-options-config/options-config-disjoint-empty/.markdownlint-cli2.jsonc index 37174581..07bd66bb 100644 --- a/test/nested-options-config/options-config-disjoint-empty/.markdownlint-cli2.jsonc +++ b/test/nested-options-config/options-config-disjoint-empty/.markdownlint-cli2.jsonc @@ -1,5 +1,5 @@ { "customRules": [ - "../first-line.js" + "../first-line.cjs" ] } diff --git a/test/nested-options-config/options-config-disjoint/.markdownlint-cli2.jsonc b/test/nested-options-config/options-config-disjoint/.markdownlint-cli2.jsonc index 37174581..07bd66bb 100644 --- a/test/nested-options-config/options-config-disjoint/.markdownlint-cli2.jsonc +++ b/test/nested-options-config/options-config-disjoint/.markdownlint-cli2.jsonc @@ -1,5 +1,5 @@ { "customRules": [ - "../first-line.js" + "../first-line.cjs" ] } diff --git a/test/nested-options-config/options-config-overlap-empty/.markdownlint-cli2.jsonc b/test/nested-options-config/options-config-overlap-empty/.markdownlint-cli2.jsonc index 8c0936d0..ee852567 100644 --- a/test/nested-options-config/options-config-overlap-empty/.markdownlint-cli2.jsonc +++ b/test/nested-options-config/options-config-overlap-empty/.markdownlint-cli2.jsonc @@ -1,6 +1,6 @@ { "customRules": [ - "../first-line.js" + "../first-line.cjs" ], "config": { "no-space-in-code": false diff --git a/test/nested-options-config/options-config-overlap/.markdownlint-cli2.jsonc b/test/nested-options-config/options-config-overlap/.markdownlint-cli2.jsonc index 8c0936d0..ee852567 100644 --- a/test/nested-options-config/options-config-overlap/.markdownlint-cli2.jsonc +++ b/test/nested-options-config/options-config-overlap/.markdownlint-cli2.jsonc @@ -1,6 +1,6 @@ { "customRules": [ - "../first-line.js" + "../first-line.cjs" ], "config": { "no-space-in-code": false diff --git a/test/resolve-and-require-test.js b/test/resolve-and-require-test.mjs similarity index 69% rename from test/resolve-and-require-test.js rename to test/resolve-and-require-test.mjs index 49038b38..54049592 100644 --- a/test/resolve-and-require-test.js +++ b/test/resolve-and-require-test.mjs @@ -1,37 +1,37 @@ // @ts-check -"use strict"; +import test from "ava"; +import path from "node:path"; +import { __dirname } from "./esm-helpers.mjs"; +import resolveAndRequire from "../resolve-and-require.mjs"; -const test = require("ava").default; -const path = require("node:path"); -const resolveAndRequire = require("../resolve-and-require"); - -/* eslint-disable n/no-missing-require */ +import { createRequire } from "node:module"; +const require = createRequire(import.meta.url); test("built-in module", (t) => { t.plan(1); t.deepEqual( require("node:fs"), - resolveAndRequire(require, "fs", [ __dirname ]) + resolveAndRequire(require, "fs", [ __dirname(import.meta) ]) ); }); test("locally-installed module", (t) => { t.plan(1); t.deepEqual( - require("markdownlint"), - resolveAndRequire(require, "markdownlint", [ __dirname ]) + require("micromatch"), + resolveAndRequire(require, "micromatch", [ __dirname(import.meta) ]) ); }); -test("relative (to __dirname) path to module", (t) => { +test("relative (to __dirname(import.meta)) path to module", (t) => { t.plan(1); t.deepEqual( require("./customRules/node_modules/markdownlint-rule-sample-commonjs"), resolveAndRequire( require, "./customRules/node_modules/markdownlint-rule-sample-commonjs", - [ __dirname ] + [ __dirname(import.meta) ] ) ); }); @@ -48,7 +48,7 @@ test("module in alternate node_modules", (t) => { resolveAndRequire( require, "markdownlint-rule-sample-commonjs", - [ path.join(__dirname, "customRules") ] + [ path.join(__dirname(import.meta), "customRules") ] ) ); }); @@ -67,7 +67,7 @@ test("module in alternate node_modules and no require.resolve.paths", (t) => { resolveAndRequire( require, "markdownlint-rule-sample-commonjs", - [ path.join(__dirname, "customRules") ] + [ path.join(__dirname(import.meta), "customRules") ] ) ); }); @@ -75,12 +75,12 @@ test("module in alternate node_modules and no require.resolve.paths", (t) => { test("module local, relative, and in alternate node_modules", (t) => { t.plan(3); const dirs = [ - __dirname, - path.join(__dirname, "customRules") + __dirname(import.meta), + path.join(__dirname(import.meta), "customRules") ]; t.deepEqual( - require("markdownlint"), - resolveAndRequire(require, "markdownlint", dirs) + require("micromatch"), + resolveAndRequire(require, "micromatch", dirs) ); t.deepEqual( require("./customRules/node_modules/markdownlint-rule-sample-commonjs"), diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.mjs.md similarity index 99% rename from test/snapshots/markdownlint-cli2-test-exec.js.md rename to test/snapshots/markdownlint-cli2-test-exec.mjs.md index 9981bbff..a0eb78ec 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.mjs.md @@ -1,6 +1,6 @@ -# Snapshot report for `test/markdownlint-cli2-test-exec.js` +# Snapshot report for `test/markdownlint-cli2-test-exec.mjs` -The actual snapshot is saved in `markdownlint-cli2-test-exec.js.snap`. +The actual snapshot is saved in `markdownlint-cli2-test-exec.mjs.snap`. Generated by [AVA](https://avajs.dev). diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.mjs.snap similarity index 100% rename from test/snapshots/markdownlint-cli2-test-exec.js.snap rename to test/snapshots/markdownlint-cli2-test-exec.mjs.snap diff --git a/test/snapshots/markdownlint-cli2-test-fs.js.md b/test/snapshots/markdownlint-cli2-test-fs.mjs.md similarity index 99% rename from test/snapshots/markdownlint-cli2-test-fs.js.md rename to test/snapshots/markdownlint-cli2-test-fs.mjs.md index 47abcbb8..d76a9c20 100644 --- a/test/snapshots/markdownlint-cli2-test-fs.js.md +++ b/test/snapshots/markdownlint-cli2-test-fs.mjs.md @@ -1,6 +1,6 @@ -# Snapshot report for `test/markdownlint-cli2-test-fs.js` +# Snapshot report for `test/markdownlint-cli2-test-fs.mjs` -The actual snapshot is saved in `markdownlint-cli2-test-fs.js.snap`. +The actual snapshot is saved in `markdownlint-cli2-test-fs.mjs.snap`. Generated by [AVA](https://avajs.dev). diff --git a/test/snapshots/markdownlint-cli2-test-fs.js.snap b/test/snapshots/markdownlint-cli2-test-fs.mjs.snap similarity index 100% rename from test/snapshots/markdownlint-cli2-test-fs.js.snap rename to test/snapshots/markdownlint-cli2-test-fs.mjs.snap diff --git a/test/snapshots/markdownlint-cli2-test-main.js.md b/test/snapshots/markdownlint-cli2-test-main.mjs.md similarity index 99% rename from test/snapshots/markdownlint-cli2-test-main.js.md rename to test/snapshots/markdownlint-cli2-test-main.mjs.md index 2262b32b..d5683840 100644 --- a/test/snapshots/markdownlint-cli2-test-main.js.md +++ b/test/snapshots/markdownlint-cli2-test-main.mjs.md @@ -1,6 +1,6 @@ -# Snapshot report for `test/markdownlint-cli2-test-main.js` +# Snapshot report for `test/markdownlint-cli2-test-main.mjs` -The actual snapshot is saved in `markdownlint-cli2-test-main.js.snap`. +The actual snapshot is saved in `markdownlint-cli2-test-main.mjs.snap`. Generated by [AVA](https://avajs.dev). diff --git a/test/snapshots/markdownlint-cli2-test-main.js.snap b/test/snapshots/markdownlint-cli2-test-main.mjs.snap similarity index 100% rename from test/snapshots/markdownlint-cli2-test-main.js.snap rename to test/snapshots/markdownlint-cli2-test-main.mjs.snap diff --git a/test/tilde-paths-commonjs/scripts/any-blockquote.cjs b/test/tilde-paths-commonjs/scripts/any-blockquote.cjs index 7e10e220..2de8e13a 100644 --- a/test/tilde-paths-commonjs/scripts/any-blockquote.cjs +++ b/test/tilde-paths-commonjs/scripts/any-blockquote.cjs @@ -2,7 +2,7 @@ "use strict"; -/** @type import("markdownlint").Rule */ +/** @type {import("markdownlint").Rule} */ module.exports = { "names": [ "any-blockquote" ], "description": "Rule that reports an error for any blockquote", diff --git a/test/tilde-paths-module/scripts/any-blockquote.mjs b/test/tilde-paths-module/scripts/any-blockquote.mjs index 210715cf..c9c83709 100644 --- a/test/tilde-paths-module/scripts/any-blockquote.mjs +++ b/test/tilde-paths-module/scripts/any-blockquote.mjs @@ -1,6 +1,6 @@ // @ts-check -/** @type import("markdownlint").Rule */ +/** @type {import("markdownlint").Rule} */ const rule = { "names": [ "any-blockquote" ], "description": "Rule that reports an error for any blockquote", diff --git a/webworker/fs-virtual.js b/webworker/fs-virtual.cjs similarity index 100% rename from webworker/fs-virtual.js rename to webworker/fs-virtual.cjs diff --git a/webworker/index.html b/webworker/index.html index e6f2ec36..93697b1c 100644 --- a/webworker/index.html +++ b/webworker/index.html @@ -10,9 +10,9 @@
- - - - + + + + diff --git a/webworker/index.js b/webworker/index.js deleted file mode 100644 index 0f19a768..00000000 --- a/webworker/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// @ts-check - -"use strict"; - -module.exports = require("../markdownlint-cli2.js"); diff --git a/webworker/module-empty.js b/webworker/module-empty.cjs similarity index 100% rename from webworker/module-empty.js rename to webworker/module-empty.cjs diff --git a/webworker/module-stub.cjs b/webworker/module-stub.cjs new file mode 100644 index 00000000..fec94871 --- /dev/null +++ b/webworker/module-stub.cjs @@ -0,0 +1,8 @@ +// @ts-check + +"use strict"; + +module.exports = { + // @ts-ignore + "createRequire": () => require +}; diff --git a/webworker/os-stub.js b/webworker/os-stub.cjs similarity index 100% rename from webworker/os-stub.js rename to webworker/os-stub.cjs diff --git a/webworker/process-stub.js b/webworker/process-stub.cjs similarity index 89% rename from webworker/process-stub.js rename to webworker/process-stub.cjs index f4245d09..6db93931 100644 --- a/webworker/process-stub.js +++ b/webworker/process-stub.cjs @@ -3,6 +3,7 @@ "use strict"; module.exports = { + "argv": [], "cwd": () => "/", "env": {}, "versions": { diff --git a/webworker/unicorn-magic-stub.js b/webworker/unicorn-magic-stub.cjs similarity index 100% rename from webworker/unicorn-magic-stub.js rename to webworker/unicorn-magic-stub.cjs diff --git a/webworker/webpack.config.js b/webworker/webpack.config.cjs similarity index 70% rename from webworker/webpack.config.js rename to webworker/webpack.config.cjs index 2fcc75ee..ae385325 100644 --- a/webworker/webpack.config.js +++ b/webworker/webpack.config.cjs @@ -7,12 +7,13 @@ const webpack = require("webpack"); const nodeModulePrefixRe = /^node:/u; +/** @type {import("webpack").Configuration} */ module.exports = { "target": "webworker", - "entry": "./index.js", + "entry": "../markdownlint-cli2.mjs", "output": { "path": __dirname, - "filename": "markdownlint-cli2-webworker.js", + "filename": "markdownlint-cli2-webworker.cjs", "library": { "name": "markdownlintCli2", "type": "var" @@ -31,14 +32,14 @@ module.exports = { new webpack.NormalModuleReplacementPlugin( /^stream\/(?:consumers|promises)$/u, (resource) => { - resource.request = require.resolve("./module-empty.js"); + resource.request = require.resolve("./module-empty.cjs"); } ), // Intercept existing "unicorn-magic" package to provide missing import new webpack.NormalModuleReplacementPlugin( /^unicorn-magic$/u, (resource) => { - resource.request = require.resolve("./unicorn-magic-stub.js"); + resource.request = require.resolve("./unicorn-magic-stub.cjs"); } ), // Intercept use of "process" to provide implementation @@ -50,12 +51,18 @@ module.exports = { "fallback": { "buffer": false, "fs": false, - "os": require.resolve("./os-stub.js"), + "module": require.resolve("./module-stub.cjs"), + "os": require.resolve("./os-stub.cjs"), "path": require.resolve("path-browserify"), - "process": require.resolve("./process-stub.js"), - "process-wrapper": require.resolve("./process-stub.js"), + "process": require.resolve("./process-stub.cjs"), + "process-wrapper": require.resolve("./process-stub.cjs"), "stream": require.resolve("stream-browserify"), - "url": require.resolve("./module-empty.js") + "url": require.resolve("./module-empty.cjs") } - } + }, + "ignoreWarnings": [ + { + "message": /dependencies cannot be statically extracted/u + } + ] }; diff --git a/webworker/webworker-test.js b/webworker/webworker-test.cjs similarity index 100% rename from webworker/webworker-test.js rename to webworker/webworker-test.cjs From e4d89ef3bc9a39c8a2f5ceb185da0398df6bd242 Mon Sep 17 00:00:00 2001 From: David Anson Date: Thu, 12 Dec 2024 20:16:58 -0800 Subject: [PATCH 09/25] Change tool/driver/name of SARIF formatter to markdownlint-cli2 (fixes #455). --- .../markdownlint-cli2-formatter-sarif.js | 2 +- .../markdownlint-cli2-test-exec.mjs.md | 8 ++++---- .../markdownlint-cli2-test-exec.mjs.snap | Bin 18517 -> 18511 bytes .../markdownlint-cli2-test-main.mjs.md | 8 ++++---- .../markdownlint-cli2-test-main.mjs.snap | Bin 14374 -> 14365 bytes 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/formatter-sarif/markdownlint-cli2-formatter-sarif.js b/formatter-sarif/markdownlint-cli2-formatter-sarif.js index 4552bc6f..d2124f95 100644 --- a/formatter-sarif/markdownlint-cli2-formatter-sarif.js +++ b/formatter-sarif/markdownlint-cli2-formatter-sarif.js @@ -25,7 +25,7 @@ const outputFormatter = (options, params) => { { "tool": { "driver": { - "name": packageJson.name, + "name": Object.keys(packageJson.peerDependencies)[0], "version": packageJson.version, "informationUri": packageJson.homepage, "rules": sarifRules diff --git a/test/snapshots/markdownlint-cli2-test-exec.mjs.md b/test/snapshots/markdownlint-cli2-test-exec.mjs.md index a0eb78ec..6a2cc9c3 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.mjs.md +++ b/test/snapshots/markdownlint-cli2-test-exec.mjs.md @@ -3356,7 +3356,7 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ + "name": "markdownlint-cli2",␊ "version": "0.0.2",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ @@ -4966,7 +4966,7 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ + "name": "markdownlint-cli2",␊ "version": "0.0.2",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ @@ -5343,7 +5343,7 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ + "name": "markdownlint-cli2",␊ "version": "0.0.2",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ @@ -5648,7 +5648,7 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ + "name": "markdownlint-cli2",␊ "version": "0.0.2",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": []␊ diff --git a/test/snapshots/markdownlint-cli2-test-exec.mjs.snap b/test/snapshots/markdownlint-cli2-test-exec.mjs.snap index 3c13475f84445bd08d527a13fbd45f14ac661a22..b68eeacd0ed88e29247ee35b846f92cf46338a8f 100644 GIT binary patch delta 16899 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 U*^$iLP`&B@4^i1%AK`@r0MvBCN&o-= diff --git a/test/snapshots/markdownlint-cli2-test-main.mjs.md b/test/snapshots/markdownlint-cli2-test-main.mjs.md index d5683840..64905d7b 100644 --- a/test/snapshots/markdownlint-cli2-test-main.mjs.md +++ b/test/snapshots/markdownlint-cli2-test-main.mjs.md @@ -3560,7 +3560,7 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ + "name": "markdownlint-cli2",␊ "version": "0.0.2",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ @@ -4204,7 +4204,7 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ + "name": "markdownlint-cli2",␊ "version": "0.0.2",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ @@ -4583,7 +4583,7 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ + "name": "markdownlint-cli2",␊ "version": "0.0.2",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ @@ -4890,7 +4890,7 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ + "name": "markdownlint-cli2",␊ "version": "0.0.2",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": []␊ diff --git a/test/snapshots/markdownlint-cli2-test-main.mjs.snap b/test/snapshots/markdownlint-cli2-test-main.mjs.snap index 798533a3c6a3cd9798b6b081c68c6baf064e28dd..154a4c72aa2441ff98a835a0413312ee1bb9dd0b 100644 GIT binary patch delta 12679 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 From f7db4ee04218fff082168dc7b87a0a6bc52965bd Mon Sep 17 00:00:00 2001 From: David Anson Date: Thu, 12 Dec 2024 20:23:12 -0800 Subject: [PATCH 10/25] Update formatter-sarif to version 0.0.3. --- formatter-sarif/package.json | 2 +- package.json | 2 +- .../markdownlint-cli2-test-exec.mjs.md | 12 ++++++------ .../markdownlint-cli2-test-exec.mjs.snap | Bin 18511 -> 18507 bytes .../markdownlint-cli2-test-main.mjs.md | 8 ++++---- .../markdownlint-cli2-test-main.mjs.snap | Bin 14365 -> 14366 bytes 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/formatter-sarif/package.json b/formatter-sarif/package.json index a0a581e9..1a32301d 100644 --- a/formatter-sarif/package.json +++ b/formatter-sarif/package.json @@ -1,6 +1,6 @@ { "name": "markdownlint-cli2-formatter-sarif", - "version": "0.0.2", + "version": "0.0.3", "description": "An output formatter for markdownlint-cli2 that writes results to a file in Static Analysis Results Interchange Format/SARIF", "author": { "name": "David Anson", diff --git a/package.json b/package.json index f4c244be..bfb19a2c 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "markdownlint-cli2-formatter-json": "0.0.8", "markdownlint-cli2-formatter-junit": "0.0.12", "markdownlint-cli2-formatter-pretty": "0.0.7", - "markdownlint-cli2-formatter-sarif": "0.0.2", + "markdownlint-cli2-formatter-sarif": "0.0.3", "markdownlint-cli2-formatter-summarize": "0.0.7", "markdownlint-cli2-formatter-template": "0.0.2", "markdownlint-rule-extended-ascii": "0.1.0", diff --git a/test/snapshots/markdownlint-cli2-test-exec.mjs.md b/test/snapshots/markdownlint-cli2-test-exec.mjs.md index 6a2cc9c3..8df1378b 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.mjs.md +++ b/test/snapshots/markdownlint-cli2-test-exec.mjs.md @@ -3357,7 +3357,7 @@ Generated by [AVA](https://avajs.dev). "tool": {␊ "driver": {␊ "name": "markdownlint-cli2",␊ - "version": "0.0.2",␊ + "version": "0.0.3",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ {␊ @@ -4305,8 +4305,8 @@ Generated by [AVA](https://avajs.dev). {␊ "tool": {␊ "driver": {␊ - "name": "markdownlint-cli2-formatter-sarif",␊ - "version": "0.0.2",␊ + "name": "markdownlint-cli2",␊ + "version": "0.0.3",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ {␊ @@ -4967,7 +4967,7 @@ Generated by [AVA](https://avajs.dev). "tool": {␊ "driver": {␊ "name": "markdownlint-cli2",␊ - "version": "0.0.2",␊ + "version": "0.0.3",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ {␊ @@ -5344,7 +5344,7 @@ Generated by [AVA](https://avajs.dev). "tool": {␊ "driver": {␊ "name": "markdownlint-cli2",␊ - "version": "0.0.2",␊ + "version": "0.0.3",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": [␊ {␊ @@ -5649,7 +5649,7 @@ Generated by [AVA](https://avajs.dev). "tool": {␊ "driver": {␊ "name": "markdownlint-cli2",␊ - "version": "0.0.2",␊ + "version": "0.0.3",␊ "informationUri": "https://github.com/DavidAnson/markdownlint-cli2",␊ "rules": []␊ }␊ diff --git a/test/snapshots/markdownlint-cli2-test-exec.mjs.snap b/test/snapshots/markdownlint-cli2-test-exec.mjs.snap index b68eeacd0ed88e29247ee35b846f92cf46338a8f..3250a6be8e5943bf6094a1e60676be175317c74c 100644 GIT binary patch delta 17843 zcmb@tQ;?-m7c5w|ZM)01ZL7<+ty8vb+qP|2mu=hCRnz}}M|b9BZp5626Fb)4YsHE0 zJnYQ;GUwufr{aMXh17+JRO}2LoGt8Kh}>9UK!HBX+NXf53tpeqB4%DJjl=l-(=zpxH< zG{)t~n*)hB{xc8;*c(__SQuKbLnI7@3<}uqNc9Dw-5gl3pW=`D{z2nO3hUX)bKu3_ zYl?^q>VMe++G_T(hZ|JEbFIz;9sA>Zl(&oX46(V2?hy5uso>Dt+sJt0U1LOUKH7V{G1?vf!H(Md*6c)G;CJH&s(dN>3pX3?qjo6-Vy|Rdj#Wy14LT;84ILZPRJVFnkxMRu?8%_`k*Fk-!sNbGo z1>*>sZ{Ge5=-KJg=}=>M7*f;{UL*>179edkWm-utGt__CwxRS(pI>T&+x6^qNAt*}Wyg=B_t=4Tvz$ zuw+4H`|)e4RzEFJHgcoz1kX&Pp+k@z7&sw-kYwwbMCh=C_mY786>%(?o{`TD*(c^f zDOzpZ#TmF^96HsOn@sZp)&WZq5yE)GcTjwLhyBjE1_tZql9W*hfz$~7GaeT^s8^q@ zmPTm+f6|r5nsV#G*{0gO4>zotbOU%uVD1Pr4$vfA4+ID>RZ(`xy$bwXuO*~(f&$Z{ z+_17E#49k)i$Bj0!3dy0SE#Fx#*$A(=Dxx_s8?a9{jGwsYtA+yJ0^R3lxx6xV5dMH z3AJa>J5s>65iwB9aZcepUT7Y*N?#XvF*yeSj?p6jdbfeB`y!&x37c@8&ojqbI&7BR zCtiVsL9XE;h4_1{oV|6Z9(NxGCH^7YEvQ$l_l%fmwAs(oZjFJhPYmPo*E-;O*;uYK-I6yLV_I=jT~^WFCR% zCI|0^w9YdfaQ_}xbWsd%D&?Dn2(KIx(3*Z1cFrv;9ei5`Sgw)0@NLOr4Q-p6=M^WN9tYCjmbQ1GF} zlcrw4w}D{rCTl+n)8!#kBWX=@vSl!>i>!%hH5w`WarUd13Ar%?6lSo51AYboJ3*Lj zaT(j#V%fW-AL4ws*VpIM!sbQjM;t}}?-~~0r}iRF3^}c5Kb(qLI`dF6cIh;uX(%;| zY=+_Fe@b@CjMs737QnEV$=GGnoTj7HEb+02LkEp2NrFFP~+pAG->3_z#t z(6V#Sfb8-D+(OV#<2aJ^d*fX#Wh9_ubq zmuM(NlmUTo+xnf)R$Ot0H%YN=IJ@T?g)!r!yd;UWSH2%J2kRTRZdQp~q7iFW)t@rB zmCK@!B{ikLP9jHsrU5#0P(63cj{wT_{TJmuw`e@`J-$-o$5(9j)iJYn8g}CnoFBlJ zON3zuL?~q~$E&%8q~8tVMX0~uen*RlAS5Q{RM>;-(o0;zjoeUC16Lp^vdTa#^FA-im@yVk!U*I17JNisO zJCg-Qxu!f8dG-^D&T4ujqcTY|BJ}l)-rYY_wGhAnk!{> zoTwnqCM33P$4%M73B$*1%E0>fp4&ph;XdHU$SKykUe-z#TBSM`~ku` z+W!DI>tqKVMK zbwxRP1@wG8TF~3+*xn3Q(oGK4QceBlVhDp^)}T`<_BMU{2haj#&)c+$u}_H4*lK2@ zJN)O*g$=wOyDea1lW}g-iC+BinA~1r8|J3>!$13ZM5WfjIBW67Puku=W@r-{lJs7AcZ5rx_-PZ~O z3vR-C__VkQJAgz5x2u%>d%Dufn90(?C7bdf^yPqb3AWGtF@@iQBuWSQrWJm$oZqpQ&P-cT*O{d$X-_9 zrX_Tp=(iE=wGr>O5$<$BA?dX2n0#abYnWJMJ1iC337`DrHWIUg&ERD$@AAt3B;Pg9 zb1Y;(9st-${^{m=^-SwI)pg3{IOMS(cil-p?Iw+VtbLnFyO%wezbMgFmdRR>##NTa zU6SIdPIQwbZK!5RRp@_!{xeI-xWQQl1B*~eBYl&9!5c=@DQ9K17}xmMqtA|hK;Of! z&KdeHt^o@xDxd*t?Km#rx{z%g1dUd300fN(FCVZbR?r~A9Mlm%9b!U%v_XI5lJi(g zrUlgP^Z7zj+xkS4(yc-b*Cb!U(q)(Jwf8KqtMI__`Z>Ia_yDQretoC>4(2Wt=Hgyl zVN!nc49#;k+&o#@GP&P3RpZ_BFeRmu<+korv!t*jIRO`MovL5w@YhP$_E3M*+Sd7& z<`KaEI{ay(4%S4Hjy_Nw4tttKF&)w&)xe574ALYtsXOy@&^@i)a_;aPDFzsSc3d(}Nu`qc2armhAEHU{?CUEhY*MYk;*PFUX>cI;=H`N0D>t}jWpy^?* z`itfNxpY_je!m(i0jP0flG#w^UJtWKyn%2J(uU3&o#9^(mj#_y_`a7O%j(I_gkb5o z#5~@vtZ;^DylNkQDbN<{F(alH&7c&uRdHsRU0S%mnaGW(_Y%T6Pr@E0uL9*I%8U4Kab;$wpsF_NK=?hSd^{|(8yYjnwvzK%sdcu!-0G-m8w|F-#iytyMm^nrJd;)MwL+&^#56GxURUqEWOLdEvECq`qcN2 znVt^7-=+i5$$qcjpdPJJq`)HfChZMc+yA@!2*w=C@W%e)j5+qrIc^a;;Jw;BC!ANM zU5~qf#Jr1mlvvP;Ln4R5;r|vLTWxX_3XRDb7)>`cu3Gcps^c1UL(;_%92*1Zne_9W zaNewP#eNcxISL$b-h2R$`5Is2ax_-$cqT9RI2;1@T+~nv4Of$Kpx+Ng8BSYJM4pdD zpQ}26&9$Q0kY-J6%^P2EJ*$_GghP{O zhj~!@bD;NxLex##*9q);#SQU3ZdeUCc9#?4?`Jq{+%vD`^=r2+Ta8_X+^ajc*=9FQ zz-Iw>(-cGI7P9_QDokN@%W6y-uil?;c@9mmnBmh1aGSZ%9`MC^fpOzc?}6fl|}uCgP^v;^css$#l66zO08T&+Oz}AX5r*7U~SC30Y|~ zW#**D3xap^ zA5C4 z;8xjH+#&4_UYpzS_GAu@P)`oGRB@j473P}c0@|gXRH*G1+1I+c2Hsz-Q9%RUZgj4v zmwA7Z0ub@x`t;LKd!LNGXP|#7lPVD-fYp;&kr)6KmtcPxK7D(hcKu$?&N$uO$M0h; z^0}QiGqo#obuhVuxi4b1i(F4Pds*uQoGu%CZsv0|<3fVmo5+=zmPbMS(I3~gAT(A) z*$HyLma1r822-lFMfu9we;vMS{AlZff3N&i-}@O$DIyhKX~Iv!SKeCYvQ;rup;$>M zl#c_ncENPI|H9;W?IXfw zxLrd|d3mBQ5b#2IWLQ~o2DtVmrT<*9$j%`hpENvLg-_f}k#$XROnh%7IU-Y&rjSe5 zQ`0yd4Kvwf95eI^&rawS0%xr2moI5HmxuF+wC^K ztOQim=Y2Jz^YG1+uJZ7`i-d_dJTNu5h7Vm(6=z&`$YX4Xy|QpU51$t9 z#Rx^w6Nv3%?`sgkNmty>Lq(k8V>S>b0ywPsi^XpO89PZLXQ7RL4cFrfpJhT#awL9F zPU1=x4G#}ciOenpB?FFr^GcmfF7}WT1JI`w%C6>s7eVJTLZ9%%s^Tti3V*KsZaKeB zQh-op4NlvQqnd59<;kSh{c)3MO_SELi>Y(OFfS;%49p>5T;pdaEO{tkT_HA!i)Ulf zo&G+bYOLxb^7~yTy%JzBf=brbx!{uLIsXk0j<4X^Yk6MiTLavJH4~P)_ou**-nQY8 z?e?J2Uu?O7$?M)wKxNH#+?WUuqyAZU8!3a=U&PjaStnwwkMh|p3ahSLrdNMS%Uide z_&S<@hDh}db%8{@B1%6XVm~X)u~i})w(eqqMvBE}p+s^>j#CWk#t1vXSFtG;KL4CH6kMd?xvx5LGJXu9Xp@z9YBY>uYA|oJZ0-A#IMN=M6Z36mGslOOB z2|r3hnS|uLzZ;%{GCh0EoU7nZBI@+Ifl**Y1Rn-!%Is)57p^Qf<9U7FV!`4% z7K{1+n4>GN%8hG$V#CNZFg%;xeAPR~K|M?5&$ZDZ~3yy*;J$}ucm>8f2 z3w>hDh&^C3OfVI`iOw7-1wnzGZn7pZp=ip-h!`{hMM3)VTRc34IgkrWR+JIBVT`13 zdcc5kAj8BU(NLdUBqL}5A%NxI1h6DzQv?W}pBYgwRAg@k61$WLs1tq0fqt+dKbTPE z&43Qf{|>k%5iUnTp6)V036uha^Q9u0?tph`MnXeSV7;g^CVOID$x~C1q=&D0BP*Tg z)?XH<2OFRm?UIXTxDVJR8U+SGhw`Dr{ijJZG6IT%PKTY3M6vXMlYwpnZHOayC z+mz!Ca#qK)Z@v}noNw~NIy&B2|D-|ASf1m5H}yYx(D$D_=zj=kH%Fuq8(D!-a`adb z6$6>_gi15=jIH5eYY-!mfYZPP)i4gNsyURd8eX|7rx{wBJ*1v|Gxyk_&kbGiFrv8- z&X2GxyDqX+bwz)g=6r47a+Ny@J>L1+?%es><=V2g|7O6a)fI6B^E|+Rz;WakAzY8W z&V>tvW_AGLj{pFI-rNUQj{;6X4bL40Z8@_ehzl4KNf@+cJQo&*A*pzOBjD75YZ1Q; zP{YUvoPsQpK+WOv=1DnC<8lCn^UXY^FG7h2NnaRMI74;5QQyxE=n8KTaXy#ELf2ad zmbrPrAf>lJKAMeEKO`U<^<~dRr}&;FgTg-|G%tU_kc|RTqv^1J+hx*KDc@pgFxQ&s zbXeAQC+tlQEI&8w=d`~t7@qvLnQBWn9v(v=$)W%q!j0o=BdI&Pt6NQp5@_0Wy5Dt( zz2@h~$r2=!r4vsyp%Aoj7u*5wxxj$E2NLz)dJMSn7(FDE?LjKjTQIRJMD~THTY!Qw zRc2VP7gh$Os9c$-4K!s7!gZFQp*$!{&PWxcHL(i3OjoG%LeEm=Dt(QVywwe(DZqsU znC7KaZT?h-FBAR)Zw?-E4*7i3?-y=5SPHd@1x?E+rtwr9)0K_>OXtBK&y*O2 z==%{U2rT09E|$*tzLMF)``egdJn8%uR0t@YR~eGK{1#39u%;`L%A{O{Wg$C5zNTE& zCi}EDZQAE)jtL!drsjL3tn*U*nN2BE_RLU7U~*@b7Z^5 zWFs7w#V%`_w$(^>)*D&SAD)4E=hBtMI`^`S+y>pf4W+d>wNpA+v^DJYh)iAFn}j)a zBCPTPszX$gL3_?8cYRmX2MkD@bPLW7zl7{5YY)}sU=25XQa90>PjlY>I6qH4o+np< z;Kz&PLV^SU1L`e%)?*@aKKaX4#2?_ zUVJVE+Si{5L6Za_UPW?u=0>bc!@}j)AFmvdjHoUl4J_k1InUaZBRoGu%kC+|8NqWtipZ z!SuV5Rj^5;7pVRA(S5%cxN^^31Gt3%eRJ}&u%bxNT=%O{bV}v|3nxe|`Y?Kb)&JC| zox8dDRL1xnmP=u(%(`!HG@C1xBT(dAw)aqvkz8QK^+>pFd6HF<10og#DhB;9awZ;eU8ATrm8ov!qSS>T(KH(v$XU%%VZ8hNlb5$JLB2!tAf z_HX@8iv-^Hdk}wyogh+g`CM&Zi!D&9kb6!9|^N4el?E)aaJW!?WKO0vCj*&5AeUc^wo@zO4>_4-zn$<1*cs059?1U^t zxD;+4@(_5NwWo9Xnyub}eh&?$(yREbnE6+sqT1BPQ$*BbO{54nD@U=S2wLk!f zF~p6uQaIY32KS|g(kRLW2gRKE*Jq+l4VB^S{}uxW7c zv|;`b+f$_$U(?z}qT-)ZQQHYr=3xWY(HVToA;4^htftsu)0*Ab<>k5t?~qPFGFaMp$N!m5-nIY+xc0jtQqT}*Hct+qtL-m ziGUdCE!J1SROVZRg1D}WipZ#iuCaQC5E`u~lgr>tMv_IgVz|tx~qo_ zbstrWcJWwyV zRYl81v@k-~l*!f9*wh+4^vVG>JgvcnfvVLg&k6Rtm9kq_)zzNmGL3=6gPr8qp{81y z)xU=dsvl`o;fe*t*cz(C6Db}G;pC*2!%)=8tH(3Lxxv~UsDW#xQ>mpDmGfz{NDjo* z)W{c<<#hj`siBjp9mDIX<+HQGk7p^Wn5cz{6hkG>{#uL$?Ve963+e{czgxJ@^-;5j zBO21AmR3cU;=nY<$A&>Hnv9@<>#ETDQDsJ!Po=USc_LR~J<>1}p|R;U$FC8yZ`5bO zaOj_{QQ7cYwQ4PC9z>xW5T_yqXI5mU=0jytSQVC2HBw_|T4BK;s_FHw2@WDjhX%;X z?W2?7gwn4lPe$d$Y5PlHzQ)1FTUd3HR6r19X69RV2cu6cy5>kE(m)l0sPQg`HcpUE zpb@L9N@0S@1Z9>)MygFYT7(9x(`syp>qQ((f0`_NJk}-Aaubm!dW4mS2S(PHV|Rm# z*$7oP$AOl>i|5-|r`~}aNBMvi8BsPC^_thj~W} z$3=z&EvTq)>S&mUyDKaLtABMHo>GO00w^0 z`jW{AHa!&uhM91L-VgFuLZ4T2mn%xVx=PZogAV)`v`VyXM$?sI<7Tz?3fvT1{SJ7I zf#HKWTX7{)ex8AM8|cKQ>la2XJ24n*EMRn-F1` zx%F{#+qqzr^DDTe`U)p>92~J@KqhOXVpUml(hg45kh%$Z9$WcM z+s)eU)=_S(9Ip&V_v(qnr1M1%|o9nx;X=(t?H4v!hdzB|7xcBwf9U`4} zD*M@1xIqa0Yu~f(O*$-uC3}qoN%Zk3PblqcK)jjp!TF6&$J)Mh`bp$rqd>7n2IyM{ zHF)=Qxj2;5cg%Qs3cBU({}m=3p7bmcQlU3bzL8@W|Zq1(=Eq)m|Z*oPz34%wBI+Y7=9hX zQ({QW1lKk!iWeO5x~4*Ssi0+b_}7DSE=#f20w2S6t-HgtKCls)be~y{nOT;NS)Ux-y`tXI9Fi7AEq`9!kZyBF!Q#$T z0zAdcyZL)+6p7Rx0L1iUGeiMfdAVnfk&c2^Q6;WDj6s)T4=z$OsWl7pQL+`!%na}x zkn;XTCzVlEvWn9gw>}~*qn=!;&i0AU#cBV7A`r-7jo-lkMIGSb{Z|9z5G_t=(Ue@Q zHP$RHX#Vj&;WQ5q@@O-_0W9u~bdktO{<8s9qBmA=Cig=H;C`ON;4?Y@nC+68bH1rS za_aXU4Q6`aAvml5`|VY!X?Xq%89-LLyCD;_*VVf{P0WB5&G|OrKXlbMr`$JQe!`oD zRobgia|xRG^;E!N9xa*Bi|YByp03dtH4nTjm$38@ZQT*t!8pywwU27)^t2;FQ)O&D z#53E-d=aY*@PyW^H(}ud79~s_D7JqsS<-`^@qSAw4_g<#{xPfHm2Ts>^@ou|hV?hR za|B#1$u#ta#O&C_QFRKk__M?2$lS$H^O)oY&KZ?C8S#kZZ3!Y#U38{6y=T{%mHXL? zVmpL{)bXTzU_ze)ZMMh#)GoL_`_K_gL9pBX`UsddV5qV=HWWA2x_v)P&!lt9c~>j9 zMi)CSWk1-hq4nG0`n+-ff-~@V5EVv-u9e9 zvBxv|#E-ep%#_uXl>geO#PPO947cG;+O^t>g3ZR(6CBl_j%5D^OB44vj9E39Bfo`eoec7+q`Y z+;F|W$%3)MOOM(|@Y1M&>3sglna*vU{0=7MBlDUbICb z5pZfv9kXPnV~kKt>5lUnCk&f;X^;h;n&XxkaV@`M6PMPa(q~rIK2b8~(P9tCA}y7b zZOcrz3KLfuMm^oV`n4~K9^52#Uce^GN%u#afyGkbo=#)0>&;hO@hW-Nl7=EP*yr*T z;O#4r^xAy+K$cY8Wa-+>^%0-BK{g{Y9u0?L@16|DeE(?0TplS^7SFE$y=CtLi+)D$ zm-mNGx&^*d=y;K7Wq2Yr+UkKWQz=IAx)W+>CIQ~YDoORadVZ1OHN(zr+<8CCi#~%d zYms+%d*q(kw8?Z?IY_(Y)}1?ZKvdWraHM>`WQQ=5VLJn1QQJYC&P;^ziPvQ#;u7jn z*}w_t6Z*ER1i`r>G4q}F?EI^DfUmwDoeW_KFT_TKLB~$T$-G(TI*3+fuX_WVp_&n% z41q0Dm?>`{6TB$HPyFvM;%8uh@cyJs8aP146FX-ACGS$F7f7qN%;`zim6kCIs6KgW zJw;wor{~|(?R(R3sva@Ce&T$93Y;#ube+ZowyUacTD<#I!|CPd+oklj9e%LN z<3YkoP>%vc8u$&&<={Nl>q^J?%+gDEI`}#nNiRJ{w zKvR-I;KhhfiIjiJe@`KW&o-G7F|L07s@9uDlFpP*WEVjITV67;J=B@1<7`^?qDHrL zFtHDmbX0(WQ7xi?OcbYV-GER5HZ+k%!I_V&1=mN{cD<^`+fwJmUSWO$6q5`nL-arZ zp)B&27K6(NB%}r@9Ag)^hD+$c3UZPz^sSOD3IO9ml2zAbhh6!yaN!wm( zaUmuZJBz2mjQIOwH>4v25Lnx47sczi-qa3umpi zuq}yEAK(e9_S}6?&wFI1|# z94>-*?!<|u{h5c;sIMul+mbUQ)cv##7#!4{8G_>;o84}mDE&>|NA&nD6ZI=fvM4W$WDH^M6#1-7;62}wZ$1)M;_w!xGB6d8UMIWWUax)a zv>mP?HDe@3_)v^cUM;QY-wo7IY0cf}qSORNfFoj}mB`xcGH@U_luTAEj87w;a}W-` z($HBK?T77Pd{Idvq?cr3Aq3D;W>v$rYAm0KEVK|&Y84erMAQ2dU;HbSS(TNu8Le7m zN0GL|?fN6;Fw{wn4xN1DTH?8lKT}wbNlpccR*cz$48Eaos<5z}W-+*++*qyAMNPaE zB!L~zXeyq3!9O$>J!e&n?4pIHjXl%{_qj`D^?Xt5KV0huLh&Eh0{pL%tu|%8Os`D_ zeB@>Y@fy2CHn9Xabc=G4B}Ug3f0`rHm3WV#;Z7Tx(0ol2RdTgaBt&?vMOl^jm;&eq zLj+H)uomg+I?bbA_9zb1F%l_RSurVWh^|uVjG~%t zWJC3|GD)u1oXM_wA&~)S<>eHq=t_$wddUUU5g&?!mBHv*s7hf#_C;r}fE!?)6k3(! z{9-{ZcCq28%1Y_NlFZI(>Pi~P%1PYrN2PWaa=c*d-8Qv8#H!8F19IA3)*`z=zAm?DB&4ZIT=MTIaD?!RkZbFI5{@BkT4ns z0~;bkDDok}($YH^6nK#|E9zr2)0-p)A|8MjD%ZACi7&HN_WB|kWTI7iWv%qMXe1HQ z5+07GGMOpVKd{j`{kt**yckZZTSQe+O?D2mvDzlP? zPADWcxm7w7YDq;=ITlknMOQh|!17-dc$MANmk04Tj^Ugec*QxE zFuBvPc}3Teek5#lNDC^(k&X|&IfhGb@LZm_+3)=*#Is{FmRg^o%9{x7-4f)Xa;2aT z-r01mrat*}T@xlU545|?HhZMSAX$*>sL-@upv8d}rGgf3wi{VBT{bFw;% zTDu(?+A*V)*8vY(Ob@vVCxKLrg{LHMn2s_w*#)&%f{j*Pz0Mv(Cnur5ovj2rZLWA za1c?@00e>rYvaX@DVy zLS?VL(Q~rN15Q*e;r<*gvl_FHV~TtiryPaVswONOSuTT)z?eeM1&B56FYij%4o)iy zmzWfG81mDKrW?Muj$dBf{vtV|huY8kxMLbofOfYaScXZ8nuhsFMs+i-!N9eYBak!> z65Y@eXlkym?y!oW7Iex(HYEmD1ug~yYG}`@8X89%mxlC%;XG|5GdfK6; zo)#N8rUwWlkvVpo#{5nMKeGU8p@dF}DlwY{<#%<)<;v{i>U{l4cxuwev^Mvaw#CF` zK!>(hO~GfnZgsPXScR2ZlYTD(m4Sxgz+}eeJFx^iDIFn>=$FoSReeJOupx`h+lG;{HAA~^4v4CPuG+Q z&Uu|VuDJv0kEstbk#{i1W4=z#@@_4qBrD?W4`Z^Pqyr=HnyQEVw>()HNUKPbhA9ygOfOla`cnl2hhW0x#dwJRa;c8 zTbLbUh_yqqYV8#n*8Au1U<790SC5V@t~#bYS^Vc3bsco^uP#>oy)-!g3o>c3r7M-^ zqf4i&Y6|Bm#k2r+x2%d;Nk-JJ1cHyW1Xfm>N1a;LMw`0X&4N{o*YSI%7iAVf4G|+V zHMV#}`_h!+nzHwoHDLG;G8#{bb7o`&1@Z33yWZ~H5#Mzu?|CbQX9@QPp0A{wZQ=>B zi8w?=8;>+Z#+xS_w(3Z+iez3H*bPT#RVDH&wYV&uX->I_w`Dnne5;9SlKn!oRj}2n z7?xeEje$y5v6Xp9DtpJAOOr@0?C!Gj#MOH8$@>j`EYB}Zc>ugsO7HHu1q3Sec7jZa zLKhdSc`F-ke#c3v!KAXkqKhP@Gy{;V$Cd#HH$~Y!)5mwv*bjZ>S@4;VQYoFcu+JrBE-y0GH zq`{*k9LNH3!~m-rJ8qzeR1%HXtlyM_C?Jxf9(OI{3%+F$vwgNFP6h1W?w=xSHHoTMUmgtuac)8(S7 zh&U?Q6VKFc+!m3Y&e?nbSsP1ICdISX6rsVw(a_ofTcNEwp@nIblu5?Yq*(CU%D$}? z(D4;Gz1{32TCg0tFdDLH^0o1&DItNEc|6u#iOjTA*x8DB$ImO5f;1{x*#VK-!MTO; z&PWx2 z%8AI*#i+`b5gkc0w10Pb#y~TGKV`zxN$eF_3BB&Bx-;=}J$0dM{Q){*I z@32L=byI`J3sRAkib$!_sr3NF0~}`|W9mkT@KK0f(Z|%p$m&b7bCfPva~7>CeL>7i zxL_8l(4dGsedY=7m~}O}>0C9pt%99NiZhuC-`-JT)>|(ZBP;x)JwE%Q4&3scdy=Bn z&H0IG|3*C$OdbtgRQSG*=n(+Fi%hgqr*rEgEsM~$M#n-+!lmtLBv$sZq^%lwPlpq& zlRji4?w~mt8kD$WKBPd?2+XzS`@Q3c;Ym4ZYWA(HL+#|X!iqty_o&=P3q_1zvxS+V z$svaA?-X8AsoRBB9X3W(X={g@d@pNX9zMdbODr!nb;1Z z&5NmAN_l>|gAB1KlV;(ns2d-e4F2pa0qy~Y%&$REm4OBtguv$@WZd)ZA6d$4s`FfO zV1~b)y^V&4Ks_pQ1OnI{u-I%hf?~=AsxZL$y|>AshMajz0B*5wa3sEY+Wj2<(vLab zI^&)G^G;s4#(JNE$9~57B_8%VW*z#ygdg^LI6T8bY6vV68j|vIYJR;B!ZJ8O&N)M_ zG86U2&PfuZph_Ut;^CR>04yEb=q#U{RgTv7-|>il23ka+UjTPLDBH9~kOMA$5t6%{ zBcq4H8-8uR?ILQF|FxGFC2etF z9pGg149sODfgcm)4YRgMZbU?YMsn#w5*V7nLbE#zvG1qDom3na%NF@&{ZubU6G=xmDY?x*_2rvQy{>DA-WG-;}5B6rfpMkX;ZZIV3^P}vW26e_AXfb3i z3p^7W`S%MzpM(5+dy|$tw`3R-^xs!g@>?jU0rfpCIe!pPD$1PlftEC{OoaJ=D*xT~ z_@9c_Mo}eze@*{$_21DzssEnS7$y5}a~f@0%zuXek8@Q>|DEeo2>sv9&lHroYgOi} zU+*TGgos!7!;k-buq=jopTC-A*LL?fZ|d|<+W{^)hwZ1FH`a5utf=g;x~X16%J!NU z@G?CB!wL@C=g^X!`sJ*P<*aIOrS1|PlacGnnAasP+&KqEr;5?-6hPN_yZ67?l)V$) z>+aW&_)b(9-fP#K!`7~^neHJyYz6b?&EB0*&Gbc}TQY4`QP4_LwE^>O#4Yz!<+sJZ zT)^lMep`aAqgQ_;U8ec(<*ki1A&I0pSYmzvWpHmMs<0B9SSB1d+!Wq)--P3q0Oj{F z@Yvs5$gWd^MOVqq%#*uYCs=FHaQ{^9_22A?z;u*M3zER59exp^ia_L2&J&?1R5M(g z)G-+hscbLPme3viEVVMVKMxLd6VLYeSaE^K~mRdqR8Gq2pvTb#R#(Eq9 z*UvH5b@p2pzK7zMQ?0#{J|EA#c^kkPoGD6(eryBft2_S;?tHO_^8Y;UZ2uBtd57%+ z|DNi)RgP0jpcEnlP7+0ZxcbP!!nHEkNljoKE!_fdRz=PJ7pmmA{G zaZ8lW9P`Z+&r-XJWLn)(iy&rYR9yw2&~YIE2v!>_7Sq6af$<_z+lOxO$K)}UGuUyAM$U=JWHz&m?6ctUyV?iMkqXQfEO1Jo zA78H?He!j+3K()j%Cn25iJT8!=&35~CFQrQF6`yc$GvZBJ;Kku-Ere@E9R7$p^T`hW0tb9e!8LVz&-vUAnM9dZcl5#j{xyuGXIbykdyukp`jkd{WpYmRk`HkM_QFlnqdXNCrkU<;SDL|uY_Gvd|MsZ zT)WTZmtFV^AHSux!*5gEfmL46m894yqbDjzR6#-Y;EswU@}8aC4X25VA-u0rVv5X^ z9Tnc)kQ_YzH(8d(XUY^Xi@F`2jl`OZJUCR3};r|OhMYyd_;w=uc{h3CX zX0p5>N!YLs9Vx7^t<6bdpd(T;YgIqGM5nGi<|BOuCQjkAQwXSX2A6-1UGnPEV%K>O z9iIp#IeD~A@cUy-m_K3S264c&;tANF0=VY9{=8AXYbTzurkF4IsI9%jq{$A60Zq)df`V(XZ zmBw~$R}^hSP!)q9&qr>`J97QLZ~C18J%oWtf0t9kdu?X#c#OTSf0f^IoY~SK4@lpC zfcf2bSCOj8$`8wgYz>Nr)rv3Uv&seei1|O_7;UWGp#O)R4V&S^c8rC<*m>OoOz-c4 z{ojkK8VJmCrU2JMVB7rQ)y#a+-YvAWgw&^SL5&7~b=8Wk@QF%NSX1DDSYhCr{9a_! zRcPAeF;MkLux2C1@<)J}ElX|uT-x6U=31nK`(YvSky?b7&i&xNhSl}dFhGF!G0UcJ zAl~LzH|E-51nRL7?f2x*0;$dm_WP;x!`y@Ulg1P8hxPjH!Es^S*+k=*27eZzARRYa zG7*=tX=0W1T&R{4tPWoAS~S83m@2pT3*zNs#^aUV(mIdE10>*m+>`5&(>^Ty4OK0Gn!s$iCv@aF_j<>&e!lPn0-B#I+)+4 ztyu`S4YqP^`5vFRjxf~InM@t2^xBy8$)`(HPUlnqvNGaUZ_}FXenZWrnh|I8v^IOF0IE-50`On&GQKv7shzPNnc;wQ`@@`?LwwSR@Q6-CK zjBmC@`pvj8XmJC1;~IvPi!8!+yzrPwJvho5#7CEyZwH@4YbPI&o;VQx<=(MmVSr{W z8@#3uTPspG6zD+zoz7Hg-p$_=fbOa!malVNOfbV%t`NWpSaS)1z!PlZKZ!0)?o}Ky zF@`5b2Bx@J>quofU?QqXp z_WSE3MZmLYn}kYMVHvEH3}#?#tDs0$f+VIQhAt3wv+aA6P-lk$Yt!LVBc1lTVZ99~ z84paXyih`{nH!$>Z`1ng{QoUq1EBn(`AoNnosD7UVqj$(7}*e~Tm&B3I(KXm54(}C>Ye{ccco@2X@7gei7E#)YYcXe7MYhNMve4vxtJbp0sLY#Va zaZAQo0y2@rL=qE8OeA$HlE$t# zKtBCM)U|(9R|Z-9CO?Akmyy|>R)17 zczsFcmE@CH$2o|p zIHux%n2KX6j;T1N;x3hnJ9{aq zGxlNZ!`P<*`<#85@DFm$`I&?=4m$i#>T=M3m-d^3{uQ@J9JEDp7P92*&$72aCYjvy z6z>1AE*byamAxk8o6kh~vq@S8uts>R*V<<#ajb&Ya+b@MZK`vqNvoO((hZxY*%Xuq zv&uiK!QIpj1WMSZy$|S7oBd84Z!Z!f7er#z{FXyP3JzS)9r&IXQpMqOzfxBm{=e6M z_gWnO!)t8I;qq=dL>gjLtRcYt=ppcKkD=z%_Z zYQoD^5oLquuI&F)*LHid->&Qj&+MumhU-?JbgW1&^g%2pGdq%*8>%<`{{iDwsE3h- F1ON$CgERmD delta 17825 zcmbTdQWMP$aq-usJ) zwQ|K|9Pn%$u!4}P5RtO2fxVNtoimXuD-0-5YluPrb607R1`71XXQuIwJEz_Z8Sn4e zOFTl)#*}Ce!bm8f|308s-Bwjc>Yi95UZtg-rB(5!-Lziu3K*jIT}{7Wtrj;I@Df5_ z8ZyOJ5~{Af*a;w|$TkJ=NFBf=Qoyki3yrBlGn zzjzA#z_~?}{@`m1wE3nUw!Lu2IB~^%xWpWOGmJX?1SDbt%K}^@@Ob%R^&Hb%W*IlW zW%k;Wehc(iv$tS z0eAS*MWi-es2DHM+iDXpq_yktz*N~qdb`!L4Oe(GOTfmpKd+Js{ctKE>Q5iu#2~0C&SrFBM?Yp7>D-W0V>)- znHXF14p7v6?iz)w$Yw(!JCAFa&ynaH#aEmi1W>#hSVrHdF$S_Y1hJ#+QD&bjhqWBuF4=iA9wo7(~r5f=#IP;EgvIAEzfe%W&x<9_23AD_R~?#16OF;aj$2#~Nv(eRRZQRq6E2x8h= z!!~yJDOKN@s^V;l4}|HDEF}eu1JWSrqhBoOtVe*qNiK0V9S>9q7ZB%RxtDz1&1Ols z4ge(P&unW!4K(j;hwu5O0h>_(J0936S;jV;jO`vb7Lo$;I-XyttNXdEh`wh~O1u|A zPJ%!k>Ry@FDlQTa98jIS_G~Qid~D7W^p#8z$IlPvEx>%E8R_HBT{jVy3?3Rvv}l-nfUs6;I1ZWM+jZ!RFT=ocZi7zZSo+B@j7Kc=lU=ba}l2$)lH<0M9}YI3@{aiS(Z>X zi^^BLNe00!0(?B*T@}`^Lw?~(dOsN%JziQ#TCt_n9Rah-q#I1YDVwIT3?^ZhOfi{+ zQ2)o&p*Ywi&{7CaSEX#4#d4U0T{^{OGD6KNm+mkT^kdS#omco;#jaQt ze=4mkcs~vq`{`z#X3iU%^U`Rncz9_jOB;C#o5jS!I6DN7y)6w-Ct>MIy z&z{TSaz~Ph^M?#M1Yg6;yM^;c>II(1J@|lV2`5cNg&dN~Y6dT|LCOK}Vr3bktv?{{ z+-)J{29wV90{3YdYXjLn5`ZBW02jbs_Aq3{V3ce+zo!Z&A|X0lU-TMK%Hll*@h3y3#X(Sg}dCax+VS-0pnF zYDQ|#fH0W#_af|!#JoHj!1QtU{c`)A)pGKDrkuD}Z}K6;MId7W_vU>(iNn`3R6TMxbW9zFlciZZ^2N3)QKE-%C#Heo>SRPH% zykA?+(U;(tiX%!@hwxzVU28f$CaEj-joL8WCFTqTqd=J>D8Lsv5sdWkb zXeKSliFGB~r{avSF2*x4T`*WsG%aFSh%przGF=1A*LcK|H*N;dEAVAL+kk9vRc}HJ zgSr@!7KLnBuxwJ(Y$Ccbf>@ zi30_6Q~!84T|Y2*&2}E~*^RjE#9eeT&w7aCo#@My<-0*Kcx=L&w1Tqmr~GwCsT($|VS>j}$fvHHL5^PKO=W9&6SaJL5Ugk!%2R ze|x?X)3!NNq46kH!ZOX4GIQPLdg{B#?#MZ^yL<^RCOksyy586?zK6aJKsdXWP##y< zzCd-I3%5v?wMrfYf1_tZw|>QTYq- zxek9BuYxiaW1+Vwp`pl$Gpfukbl`!{JMo< z#ZNoylYunlX(|k!d>TEeJdaJfk@Q`95pd${%Jrcy7Qb~z$w{?BRsBv+2ACe_YP^~K z@5}4F&xiF$X+WhjgT$H~-)6X3%q_TckOo}#@Eq?(xIE;d^2fdGWO`Rx1}t;iDbC64 z>M~cT+KcAlCn|;#V>;yIylMFSrb?Dfqe~O7cSDIG?Ji;n_c6HRgq7c{gn7-7&AZzL zP5qBo?{*1bC<#m1FjXO(xi;#oMrTe(Z|004P*?O`7ob!8^n&=JY4Mdj6Dh&+z1d9@ zi~UVocCQ{Mm4?Hx(QN2|i1DINLCT7)u@!h$lih-!TjHV?er^~-%8JLx`(U$TFY`b! zZeVCi%8Hx5J~s8+l!Im3#eZsqSy@NMg?V}S59WUsR~_d(ALZU9;ucdm;QZ=)hYb&V zA#PIun1pKU7idT8#ED?YT}k`>=2q?)uh_#j<(Na?+6ONkAmFc3;4B!<4=@M676KP!N* zar_n=2UUOJ&(uDxi^|mU*AD+TVf%V8tf(nuh|Mfm7sP^mzxYwf${XwL%9q>qw)B=d zY+S6F+mazFpZn%NK(?mcL+Gytc+Bj*Kj+|TO3G@NVlm1@*kq*zRIDADsggI+q^pcq zNtvp!R62@P-j`DMlbQZuDQx&vm;m@~GF7sbBm1_@CnqKE$C8+ko-|ctOhL{{oi3?i zsf0n5vha{DQ_nO!fCj5f_n(DQg}N^Fqk0-@yBK8y5c#Fw1VeUlq=J%5>}MmOs0RAk ztoE`Q`uP_7P|iyI#0>e{ub#CkVVOGVq|&K=fN(D#(#k5eodw*s%QR>?)Q zLA5qPi<_wSL?-TF7cQ@KA^wzQy6S{N%9*Zo(6wgC$LfiC4*KSBzrJo~O2@;Kz;dEL zB0e18PbzB9qmkD%^iN4*1!6d`X(AgEBcSF2?CavINB8~amzT41RwwU~yEvOdcDs!% zy^4GdEWR+li+J^X$AgVt#wuaE%et=Hsa)0QK!4|YLK&8&5pZ9GhqY~Br6mb2qWt%n z3cA<6lq!8ej`CLW-Df4Bvj*hn+?V$D=WAjfIsbe;W*mXq_B^YlypB5YTtcx_9I&Ya zuER4chvqaKrbBgf9G87IP(aL44jMVKTXs#G)i>gz+ZHmTRioeRJXU_OP1=3vHc|W0 z@jlq`F1v2`_59h$Td?3N7Fql^zv1&8Hbbu$Pi&2wsd4Ma)$u1eGV?<(E-KaSGEBy2F&kn21EYk7c`UlIf@#{&l&PmSk@8?7ZWNOkxa;e%}s%>2s zZ~w;h2X;zISFTBj;>umU>Pla)51*)yT-L;HWI5pSL^u=y0PO5lvx~kqr_B#Vmy35| zkg{zvAr0+m5ADcoOrzxUY)rQzaU5<}WF_8#LkD!(U!I$U-z`Yp)6rcH@29T?hy@X2 zNSvdus*pqR=bfyB#N1=QZ9^_a(M5`e z2l`3GC#OPEfP4BJGG~*so%p!kh~rYF=M$ha{}UOJ_n5(DaToacAJ1MlJl{hpKWK_N zr>%N1O%6HAgd*#{XvvfYNo%=Do~wD06*Wst+K=lPiyDwKof?Q}4xQG~Q?L694t`~Hu;{#G+SW{{4bI<+-L(Lxk} zwZUp1z;ws}6tbOC**Tzp`*c5Q)LH4kn)pX<9+gBMgFX9|7YVpjy- ziM~6S4zOJelZb>!kuK4oh;Vu~mjR(u`8%LDz~iAy_fMVcj*(rh$)rGUkJic>gNz9! z{XjMoIByGZC&xEW%X^MjL-pu zgqe66U{(9@IcBN?yne!a=7pA<*H!l@Zz<2`uiH6J6X)}$#`j>LEs86H%W_aRRn%$@ zU{F(`RA`2ohj5iC{VMZhG6Y}DByA%7n{d_S9q}de4DdeJ8gk*By z9}Y=D@T|!9X9Jn_t`84^f+{U<%}j_HP(?|V*4uvsmWb*_M;TLb6m&%u5|KaXNr$Ac`|;o?NYcXAjF1)o>enUi z$*?eu*VQKEPxb4E_ND)e5HKFb0vVY7V@eVb9@dSC+&Uo&_Q05?uODC_04`E~)wc!v z-vDmN#DBt}{^~G6_mcsJ2&BVUZUS`ZhQUBl;k;Aq@)?Aci zgqfi0Z%_)RI`ugvnfv>|26JFS{&R?ASQHEu*^80nKZgKliAXZSmz_bcs#3yh*QiHp z6wQuipFMxH@w_RC8EU$x9k#siMzbC9UMlfMzX<-p-&qI1RwHC`!GUFP8CREi0g3-H zUyyV?-{?wq#u`aHX-H+He`>P%Is4F31 zv@8)y2?nVo3o20yFVRhau1jRFI}nNB^_!p@-{Bo%iEfy3tvL(ld{|F#iaA&?OL?lb zI&nE*g4(sAVoyVk2x40a2HJzV=x@>7q(%mz*WV@TT`)7WS*q^?rB5}(2+ELwzJ}R} z-!fm;V}}WSo<64clz5LjIs6s-@%*O&}xGL?T{RT z*c+wzCT5LH4R1X29U(`Rn*zEc8n~0OMU1%DNaNwnI^FmCSey(QPHzY`555@?Y#0T zH$Y@?yd40P)iS%DhPziN7{BM6upnQdpJyQzsW2e@1hIokslfPi+Z)V)TdH^4LCx2tTwoR8SGpnN z2v9Vv7I=Qg?1$n1(Z6a*)dLX`{)g~Zwhn-_OVk0kX4sAGs}y*j*7ImKFM29tUQPu_ zEI|qJ?US<}#IJTvZ8T%&(bnX$sd@uhlb&B9 zbMMl=_SP*IN7~YM zd*(zY1ooSU;tbRhr-uHbcm>PmdWI-)Og+*>#CX)=J}pH*iaALf?ac{$j}HS3^bw$X zGOjCh+)HgE?dfgbWJc!Tu>cQ(P1QiBJvTtWAe2&pOEy5iv9y4)Sa>e<%{CVKPZasj zS3vP~=!7Lr$ixsb75yPO4qT2`>Qivy^WhFJyLBOEmg`F$W!jNdjPiaE|INW~(VfoK{_`23H=+n$M$Z=ScqV?Q&T zc&pLMe5Qk0?k{q}Z{<8z7sWrUe;JG6jTLPs!=;I)eLV_Q2lf|pz2`vp8VP`a9tR(w zuVV#w5dx^MdpW$!vkVXK7?IM&byduwr+ZmZF|4W)#Vb!Tr$^z&Lc;NL5`jlsF5Vt6 zQ?7FK0SBA55b;wcQ4DSZGDqcA$@gpd>l^)8FF zgrGlVBExBJ7w!-dm|UR5Kwr=>^5az%1m|IekO+v-lmM48+z4_D-pI@Y zQE?urh|Sn@v)=%Y;4Z_A5+d~o<68+FL$OpbF-4UkXc5KH3gfeiC>d}P8?K=gV(9{4 zczjx(+DM6|CpjX<=6>|>p;;6Ri6)%tOu`Mc=QK6&s_}{#QR%_^IKQ-1HtUK28mf$Z zK^>0yIi+M`4q4s(P<0NI@q~~Dl5vttuxCfyy3*r^BqBh-^LW`ZUS0`RLOuw*i#bk7 z4UR%^R}~J5U7C8T>@X6VbWlan1lB=5v2=z7Oan6;F~<}!4Q4T+RkTRLh!T?XhGKXR-65Kht_V0NFm@ z8wp{5*&4J>1d!sQ^R{qG0GQYkoAL^n%BmqDKZ%nUQ?51Ijn+&zn;{mvXWHr2HeAPQG;9KYqM7dRJOEBeqQ0}Yw_#|h z^4Hky$mmT0Wy@O%uKTqE3l9KL#hc^H2Rl!gnd896;Q>tHhjLZY6)9rO`-N;@8k6Xa ze8c?2I+~Oy+Y`8jngx`@1&J#oG}16TMv|};Ad8aXR&qE-qb|5Pgn)3zyTewXraqPd zx7_JxIaV8TaqM7@=>*52+)RgW2_xe2`6 zV7SdtI`$otrXznrbCkDAE2zBw^{-5gRZ@){S#C54PsW2*UZRwtKg>A>7I4UAT>WmE zRdF`ZxW=W62}y<)w_smyd#y5=hpN0plALzZaosH3xYM!;E%a%X*8y%$KDQN15^j$v z%-zJK<_EHWJ$nGyd0$vx`cbYSTF-VbhKhR=>aX5HHEx{&UJ^S44Suxjo_C-ekRX(K zhk(PryB0&02-U}2OZZ~|VzBVnk8k`?1e=M_9OJuo&p_(F1ljNHi?jGRSacLz?xLn^ zkomGW_g^X_k^iVFKmYwaqO|CY2(A&<^7yOnw24gS(_KK=3GfIP)ExAg$#L3urd`+P zUbfrr`%yLI(F!q;9w@6eX#A&&`^Uu~=Pp-_84}~Od(XyXgZr4B=~I&NJx*i|;r=Y0 zl2nbg!=h~`mn?xs40M+uKmJ}l(f=c%d_T?Ya`eCg#`5C z3YBSJF@%}S?xEPdX-)Ae#Gf|7uI_JIe}{-ss_Lcna3;2c&A?P-vKNRd_*U;^q(JP8iwZI zVFG}OuI5yTem9@abP-)9EQi}f;LvqIZn1B?;n3|2ge59Ph; zj;8S_1wX9ZF9DfR>V`v@h*;yyl`jVJN*axoRnIdMnGivkhg!xk_j9?|O z$brpxDKA=~o4U62cMjJJN)Ly4dW|+V`&W%hz*P`S$QJ2@}cLV5ERtb*{UE)Lz&g z>yUADVd$%a#z^R<5EYBWU#!Uhi8U(W!lDs4Z0SryWpOpN5#vKFoz1_7n}e-pbQK=j z6u!SMO>!CjF1$D}xePe_(V;I!q8L;4*ZblLOat3~=_`>KetsRre7}5*yOij6aQ)II z-Qwi_g=h`ReRG0{N2y6H&_r(>R9p>oDsLtsb5(n?aePZC^ix!{NhInEII^aXT{PCz zN6Dx0Abg4wK*+o@N(V{FbxDc1P*}H$N@`H(F)nJFDx7g`um<52mq|~vWoKSSh%O1E zoatRx8;GZYGD}<#u?n--tZLRZUGP27s_ApP`-sY0qt0IZBf|#$wle$j?n`lFv3e{? zA!)XFZtnC*%-$@S5gLaLz$V+drouKpI9WDUKu?q-_Q^qM+dajgnbY~?uhvSk#B~mw zC^o7HPo&3QKGI?<#L3@qK@Q0z#a&yXDBsY?FP6P#-M)-F8Q^@s_j`SOim@m0*c{0;ep7CJY*zcvp`7c zA#*2KC2U{;=>`Niu$hhYTu`6j;6qz5q2TvLF<{6EeiGVQ z@#?+mmf2`ppWN=ou^7!=-aX+f)N7cP0sdVlY;h?8&bi?TfgO~|8!L^D1Qe1dQ4Hu2 zz`(4A%%phcwmQYpx-R#nHcHfcsYO3)SaeFiC5rX|N(UYo>X`6_^ER6pmgJaEuq5R> z&c4X!{gT%+*i5(}TQWW2ggfWk%{l>x$Zb9!ug~*qm)&-q29JVK)|LMxAG%RkC?Yx2 z$ENldtqw!JW{e(-_AKx>Gj^ab5ZA_Vwg;@%TMeL?vH{ABaK2})GN{3)UVyV7?~u-s z_#Xs74WV}Lq{G$+-Y7TTsLy_^!&bFX%*Qq-SIh&~H7y|gu*cp02^LaKV1dwpl#fgO z^KAf@(H?Tv338Pst}SME?5lwyhCrK}Ypm;M;b4Mf;nb{jtbXvp1MK}wp5I&>vFTu7 z{O3QcPG^bEKXe31BZUl} zUZ>7|k%=6-Tp=_wgO?EjXgU+&{fNDb_iC!_D zEI5^&>?|T54jmqW9{eJX6HU58r_=YaEnizjT1?X6L-DIRwj@qXW)TfcIv$QdQltuS z+E7MS5y56ab*`RFr;{9CE?5K~y2fHG$(EOIBzEG09PU{?Q5{XZ`}^y9$)&^jzeuMO zc{-s92e4EUQQ+0uI1ApJS8JVb6o{&|oLqVX9}yj3A~;fl`r7 zW*!m|Nnu+=Gd408woVh#T`{OexuC^pw-e!8ZjVWeXuu(iRbAt=jv$eqH<3gh%I8mF zS5b18WChp2xi5$?2FI-!$W&O(ClSVOUE=Zmnz^-s-rOwTM=C% z?%Sk#@Ad*xBcDVgr=nI!kwv~MsHjLVFE3%Ril~4|sJMryrBT4mfH;yZqi&!XBvt~G zJVCb@1=jUWW=1~>o))jP`@=a5aR(rl8D4N!ng1gqgt2fpCs0S;$Ye3;8CA0~adw~3M=!_9* z^>{j+RS&ZA03sTNVG$duOuhseWJ9rJXQ4W_vVUn*y%{gmRKk4Nv3N&Ru2tJ2HwwqB zg>Bfs2&bf?5``t61Zs>e6e0yp5?go-HiY3J#nJ$nS_I_=30+YE8G}8rH7|@lEcw|X zuc;rZX>#H0e}E?q3y>;?#7-i1fHZ?csTb&y-S6neoQwjY)<4jss1I0?B#7{!`T2R~ zT@_%Fo74}948^ykgP3#!)$jA zDUrHlTnj^HJZH7sqs4P|0Iu^^64DmGvmtzuFK@KYR~?u7v*p6=E6hF}S=pMf6W6uI zihJh++f-kM-&(<$9g6GE$(#1*GIS`?lS6+G*q-X*>kE{u(Srw4=VdgFWJ8X@Qcg4) zP1JRDlNaIs7c_$UV)Y11lH2?XRddBmEiFVgxpHof3P7`3Wbp@Kg&vksRiD~HQLb0t zC=W(@-TSB}ZeX=R>j8V5Hls501!b~c{n&>|cN1J!xne8!ScUEDC`b6(0$$m9xjXdP z2iXICI89qtOVym)Q9oG+q}h-_(^g?=M6z)^?72OHfo{?#P;AFD-CkR}XI_Sbf!|7l zZGeWC4B!weo!fGyc=cM{GC1F}Sz6<_A?4CaBDH^zQOhDO(8}0Q)%wAzyqZ(`LFoJb ziMz{#%S%+FC5`ZU@8hR4NIK*S+p#q%nah3fMUlDMvg|>bt8o&j+R! zhYJ{eHV&BfusAqAanLy2Vh-##3&aCvCZc9Lv*1xGAA8NIJN zPDWZz8dfwp-+QJmM=t244JTIIWUBunPwyHjxDbD3jg(1-)6*_qWROb?-(X)6h7Ui1 zU7fvCuI=c z1X$5Eu|y?nq|_0)lDGFAM@ys{SO`naFx(iN>)Q;EyUQ-YPAkvAs!Iv)SXN5m;p)(p za1}R>7&i20PHhb*LC{U!THDd%ibQn*56v~gXVR6`1ma9HPZ4E|~bBxnIv;Iv{!S^WT3a9{PFnBE{?>14MB|XDkF<55`vKE7z3) z8Ep&B`^q6XCq;{wGP}Mg+%M&u8YkFMCf}NDnZdn;J}GH1fFVK?+pm^X2;oB#K>YmP z*>%{U-r5;;$XoyT*5>E9M2B z5)JRI*&-<5+0&^78fpTTXoul@B)t{i^n-1Gxt?j6Yf=Tj7^cvPoY-wsqku}$aI)F3hEi@c9e(| zHBlu}Ze66bj>r3&BB0j+Vu9kS0XJI~?xIMqTM07>YlN(W&SY})xZCzCURBD-dUd?YNMp!W! zmmtYwL?_^|8q?YE%ix>nU?*Pud9VOZzCzs1sW1EMkp7xno70#ky*t{!1ic8{kg#AQ z3oBNOCnL3buX%lY<49l20I*t6O9^N2&aGJxrN?eh&UlPUVql`aQa@Ixw>X~L$e%~M z8+zmVkmBO~Bdcz%DV6Y#>`g6i%6+Y=!qyU3xJ;U{prObJ^1e6$_y{CIHecKqZQ>j! z|F2Nv|BW*IR<3Y>yag1#*QBra>EbgTJgzLPa*Z zCeAVc;xvK>gSYZ5d83(f#!F`>*L9U2H+z}NyKiYBwhWoGI72f3)!(_S^%ZNszZsbU z)Sx8wv-Oi4qGn;GIFS!8xJNf7GbWagxd5|9s436=z^AqEy{SsP`8JHxB{lK5H*0qY~dt=yU}A@lcj%26`Tw z@O*iA^VcRNz;8Nfp+!+{FYA*~t*)Zlwl zzfAgSq-ic=ZKvg7jI10k@UWJQb$+iHxuMEp0EzQ zC`KIgH4$57?-B)S?VFO~W5uhFHkR^~@$o#p=~yT*%oOI}PPiM6*b%xpMKUqe(fVxW zlI$BL6oMrYulG3N#x`5d7TU}@QtiSyY8VJLfa`z%@I+l6Ajn?WA!${s7PMTZ*a3pZ zQql8&f)OH&B#K-l)k};uESWel26iVj06EL{Ie`_M} zCj-plHZWKQ`PeWx%(U#0USVOv+BLdZh!$u{*YJuj^f!P@Q&JINk0kM-NyvcX+ayTq zee0Kas9Rp0ZpR4dEj`}6QLB~f7*)YRJ!UP4=)uqUQSl*MAaDEqVw$Lw0F`U2XdJ;_> z7NvhLfGXnlJ_`OBDSXQvz{221FBIsPMih1UTo~NHsBPUd)~S3(EzGZ(9?@MFiK38& zPyd}=3ywR+x)(N}ZixvKkLekG&Pa)=x2Zfs?}|KU+n~@M#IZpNVj~9zjmX_@o&m7K ztF2c}`qg;e^s7ByWhP$c$uCjb_Tb}h-yGXiugjW*6SKnLuB>o*due7Wu+^Y2m3KuG z9Z852a=hDR0#do-nd60?t#4DaW4;Og{PqGSFUxf5P6LFW)4sxK2b!fo#G(=fT+op) zW{6=p@>28r$w@-*oU|+h?_us=)pWpaX+`&+w}iq56G=1=>(z;_sR8ztM@A=^jE(Zj zZc}x-jE%n=+;0n?6D*C*1BG--e@B84#p zjvQ0N0@feR@%DPMW68wD zjsUlX&(=9iB51Qg%XKro7Vomiq80obkQy{=v%-73*?aGQ>ckuEo^{9?bl9p~<-X3w zZVbZ*TYMuY@i|1pjRhDuoIzd9T(vc)Q^Sf{@LQ&gG2Q(7H$!9> zdNQxl)^b4~F|FR>74Q{qC+_0%oeX8zOvq{K@Id~0$IPyEv1HKsv}BtR#gni(L&(vKOSXrYw^F7gsoO!ZeM>aC6se%6{DH;FJ^tMNKj8Ri3YXfY98EbeA%l8yfB zmteY|NXF&N0ow^g0*{TwyCIXB2POj;oX9n~-FxoI`hX^SC-K5^^~zBVM#tv%^7Cr& z2>5*SaH|OY^7v*lYI|P6)6s=fYpcJjn}E`E^EP4TcVRp*P=@cm&dQ4u4sQZOHsRbi z5K(D(1}kQprZbb+1$SS2g{i{bb&<7RXW+Q$x?gwxemUVZm2rc-5AQ_*sQPHR9gc+R zdZ*z`VZ;II!ugAi2`77LFzLy^r9L$>^a1+KDSC(xZ%_9m-M%@{KQ!d1zJ8B=P9?-8 zB}2R4b{8c>yO+tc{YRpIDLDS4%)M&LVU<`;VusS zfBjROgvnY`Tsi@wQ=mUC{;9jNFYsREYn||3{?SWU?a`(KrumafcItq0c8zNo)u{-K^ zA9Lt^fE)b^G+SZ6Ziu64yh1=AT$-q2Fc%+h;NemKH3>uUkn>v8SalwoG6iJ8x8;Dl zj!_Cpw^`uPA~szejSp~Ud+S0va1uVPp}-Xq*ix;j{1>tsvlr6d3^j~q zvr^(NSPwgn-fIzFGPHjpK@Sy~K$^`t78`=>S?OuZI2Sttf&h)xw5M&HHQhZ9S5MKn z)plFvKI zuNjUT%-MZ%7Xaf_*yWC0g^hs+NnZ$d@D9ZKU+LFTjI5>1P&j^WkStL6x-U<=%3P|H zuWHEieY!uyNuEWGKHH#=j)dc9EwcdP+Zd=!l^dhs&c>rZrU0LmEWn_k72H8O4ca=f zl1T8mTRI!kb+ai3(~Fd`LYA`BAxE7JgI;ipcq^m~2l$#_(4K~p=tP7dDT&MxFFCg? zALU*sj=@e$eNL1$Vq+y_r{s0rRV-%7q$`_-mlKrn^-AdldrSFy5$7q*)sC*x9_A-i zW)P9IG~_TuSB1w8-ey@Ed=2H6TN!-m3G~cjtn3ST^V7uS6m=d5p9aehyH*y$GS$TB z5?fA80ERbh^)tCPwg!RMcQSocOYQl9?2wUw>`7I)e8tuTbAZLsMwB`gkb<#bhLzac zUth)p-}nn+gqWTRQ`W%VJy>8#TGju}o^4s@J3`wuiGyuqL7`Yux1Yv(qkgP`f#LN1 zXZ*~@)JprW9$AC&&}zR=z$dcb=sJ}EXR)Fjo@L;-20m4_}$*=>n?xYt3{K&9;$@b$@OOSsgMZ zujx8b%i1C z9{Pn@&r49Y^r;y^0AC5u4WoB^&BHh0&yX(fO{{Mh{YiI-)_S|h+XAR8P9R3sQHsw? zcW`tP1jz8A?eeOvQMO`Op3dyA3;Wg!%hmvG`rgx!8H@7XZgTlf^f|OS5vRE&hgM#f zrcI#WKSUs!4x7{rX0*Ppv@8Z|2Ls?ejmf3km-ID!q#u#^fTkAhMvfI|R&8B_3rzlH zl*kb?VhTeWKajx|qwpJ^6a8JQ; zw!8Se< z@7^Z`i1$;4gK+67vl&6Ze{0aw9YGi7%i$_3T3gOn<;=Rxy>V$d-q$pxh>E3=y>e+C4mpuCyQXvunoLpi? zJ^iR+q0t~^3j`CAn4>U|A2@j?=PR(o`7d85VAc6~Cizo{-%)plYX-Np@E&jEH^Ujv zj(Kf=QgFQRczM+$RK#|kX&|gOZ6Tv}JVl}OQq%PEMOX1CrHCFDPrhu65llYfCcVwv z$W;Ihhl{uP*hQ$p4qiBVkj2Lu)URCzMby>rlMc&+&edm4*)CUf{EN|%dXFxqTJZxY z!2QzFohdt?*W1n+o*RtuSd%yW#)-@7F-`sy|BjF3TXOLU~*0h619zil5Pr~!a z8lC@d=_)L@?V>|zAUs7O@G-e7G62NrCD;R&=SMtcEq3&Js|;3e^KgZI!%{z_`Aj?U z-RezaW0<)ZSlI?fHpD3xfk(E^9h=0%uH#^9@ZV*?Yy~L03Xn|#!+U~#2Te9&T+|tB zH)4ODt4)0SBvd`o?a|bx=;=bz(uJU-EzrQTQ z7%bZW$&P}fQ&6O%nH|U8RvBzNsAxXZEn;V5n7J5O*#<^7#3>hnN4Cx#o5aJe<6vv> z?-=&GW`EY6>yFV#cj;{PMr}Qtt& zZd(db*P6wq&~hPAvITT(hDR;{cWj$4Hi(2BN5Hm#-!0&G+*I17plpq)ZIU*+ql*hd z6FW)|+dCO_+TO_^so-c(zB0^9q3xJ>FhSud0mFFgxsT|lgRVTRoA~?B)-G9jp%Z_9 z|C7U0e^!<%K;-Q3fYcvcz_;hv?&C$(Dp5;0O5|Og7RlOI$UPtEkW`k zKM{59pVpN^pX~Rs>2F>&6Bk~N;7EV0QM+vQ%S);Emi98!m>tL5_Bag;#=tkP?zJ&+_$)I9m@&YN0cH%WpjR)6+TNy)%Uvb;B-Vd%4q_^f zsW_(Mn2KX6j;XjyrQ*(BO6s_2Bk z9qzS)`}u>Eq*XR3X}2KGGQ7EU=4tQB^aAD)b0swh?^Fgs80#?BVXTwgCL^q~P~wbz z82d2xX}~^bUncy6TyuUVp^Sfn4*zmp4*Jr5bI`xx_K1VFNX|l*oc&q$_QxcXo1Vh` zKh!1TpS`lzWPJ0PD1SCd%K+90Z}nRHtR#+A&|1!N*|JS_4mD|2GeNpx(=?lc@?ci^ zXEnH++JQg`+qCxqJ!-SxiR0}>V&sBIjGEtaNJznf>$wBp^FpdPeC~gj>x#qw_xfIo z!~gyo+j6+PTMm(i7!_*>a6fto{ODxZ{OK+5Ab!3)E`93HdW+S=NF1p&1(6AtlV^Y| zJqd#cv&Rqn*Lglp*=SjvwFJ>S`Kzl&S#6i7L83(OJvs?OL|eTJ zAxL)BxbOSTy)$?2%$+myJ7>=G%*pl0^AJ}xQRRfbvi0zGa`)l%lOQJqojG!^L3JOQ z#6_+@md35U49a46#`n2nN50nS(5uba){2Yr0>Az?j}lOIxbT0L-K2hFM7qN2;qmvf z2mhw&;Y3}W`N~n~Moc%JgraH z$rEioag$S~VOK4Rab8O^By>m zd(iq%)h^I@c>le-{!V+0MARkt-4kePO%Pwl+8mUeHB-DFm0?C+crndY*CgkHMx9v;R*?ntJ z>eNjNj^zD5-!KB+PSZmQul|meiYKM?Lf|ix|DuSJ6B->q>n`X9HA8prUn>>xKZJW{ z8qz4D0m!N@{YNHCf+{ld47|EIBBL-7N_^1x++K5uS)Od z%unbv&dh2c!PZ3~qAmbIriJ?53v|8D<(p#p93-Rq~uxPEbr@bJ>8%%C1I>iO9z_EIj$Fb6Ybt=ug(;`jahjy_(QESp=3-oxG%7$ zns_6$^h|cR4JzO+kENW5o0UzNC7-1IL^5rsBHQ2UTgIg5wqvkdNy8;-b>q3`OiiHO zt1Nmu4*?LhnTfOH$~5hkY8!PjP-}mGU!P{!tWo#`k@AhCZ8LO3sl%eZ#3_B4&}U2g zbadRTYRO3Q^Xne$>JL<4>-IAwNowx+*O+cK*INo_l}e3Z=>E)s0%!fBPbBO)4T|dR zm1vecG|!TF_i;j9qVUyL?uz2TTl-xAw$nVmVh1p7Q}&5H>=Ubgi$Krj+oQYBpCSX# z$@{K;QTBy|>>ms@jW5%3P>(DuWCJ0Gtvl$C2+T+C@Og*<JFX7Tw~gQL#WvvlVnsAFaT zllK!nA-MRGK6GEC^(nxGy07CC^xQ^ zl;_Vl=6N;*KPIGjsXuC(c=tCC;LzjWr+d*MYCD(E0R!(hkRD~k8JhKqUuX|QEoB9a zCmXVPdwG{wXmvhjfK*cP0}c;NQRe3Hx`$h0sWN?r+VD<>?JbE4>pS0Y%TrS#7thcK zA3v=fdbG&19a6@$X8|pjXS5tWYlrIh4=IOaO;#bAkc$RM@%vl5P>3%;tG}cm$F(-C z2k|}SFOGuBtPO)8;yu^*lJ1(3w)dpo@^A=yPsGN&D(!2xN2y8jp9VysktZ8^yiN-R zoNP~zlgf|g1>|DE2Nun<`c;^V=@hat%~qxS9hYaZ?1pj)s`O{@M81F&y)>jVC77^P=Ko-?RYsMFy0esxc;n%n6D3-LK$Lb3L&Bl{ zO59`rWM<^K{N27Q+>K`7guBF-73Bdj;O57)(WIqEIjU!A2G^(C`ki{q?xfPM$z-D5 zt`lSMvFNn2u6cXxmU&yNBl|hSJK^DGGo=;ojdcxT%P|wPJB__BcE526J6PXkejnA8 z|DYA!Js|dl!|0xOg6&_QiXaik4*C)7jO&eyW0DLNNAL)4y%#|TxHY{uJlUGf10sa7 zd~6$=ZAN*&(PR18x+GjGKYt@aDwZJNbIQxhPRMHnY>LM_Ox)A0z=2?&M7#8tdw~x* zEve3X&lAY$*&t>}#_DCrM#&(fP-w@4Ki;-ajdd6Pm>DfyWNJR2=o}RLl5@8&kqLP& zi?n?mX^U2NVA|Ggvy{!@F2xS%0lJC~bf&x;;~8q?8Y+7uCOAK=s-;-BSqq8L0~obgfu_jPI2)E{&quwIsPZ|38} z(k*6q{}?ub1JN?E1cfYv&YYk!l-(vLVN3pq7qS0~#;CeN%cB$?;DouYr zRGLH-tLd+pH(#G5oVq4a>kQU7ej`}8aZ5^dA9uU^x*uw=c*gxBZc@ZZ&!Y>xj&Pb^ zF0BVXXoytu6JG1Ak8c5`pJ2`eBU$W?)+qZ6I;Ns(q#4G#q)JQn4F*3PcQW=`y44Cp z8TYJ_j>}POKbrVU-EctBdQ@LkQ#D-O{3hU?(F|@vTr{-6$)Kiu*ubS!Jnw@v#ddx# z$4j5B4Z@2Zf$RFSmq1-UHlN|oxb^scO}@~}kiE$Hi*MiPc60$N=07EYj;>_0IV_Ka zxv`#IXYGR%SLP=Atoid!`t5;oY{T!5y~>zP_#+*DM=ZY$^vaBaF;6oxXjem!XI; z>8fKjo6P)Ctiv7>Wy3#yom`1rug=3dJ(+|g2n8;RzSp?7zhNMa&m6ned}2W_k$rIe|~b1{y>$6+8q!w|ExmCW&DsT&A_W)vRijN1+P? zWNmtc^;~-khH=)5msj1xQQ%?LB{(iE-}nayr8${*9mXd9D{I_|!}bQrN&v(e^# z;8(8n^iM&p9CC8m1snE{h=sqqV8>ACxif9LKnG%1+CvWS)j5K?+vi!MtMW1wVcVn! zVG|zDH2JHSe9=yJ@{gQfwnL?P`|cOA0u7c?A~V-~v3Je<347Zvx%%^EBM#>P34u~| z*g?{DyN&!$)!k`YpNW(>RR=ZLlX&&P;n1~IiwToEe_7fLG$AUkX)Y&5h=S)D*g;=6 z3Kr=i!Sk30+^i#t?n7#woWw|+Kwm)xw^RtjNI(=IfW=i> zGJrSaH)Rwhhy$bq3IUyge%)Fn>>*VR0UiHiVfX&0x9L0ngeWd^-m}j>K;5Pf*~FR~ zeHv1#oBXiaO+5CffIx*fj2uMY&pM|rZxJnNX%uHWpWC5Igzx7aG0mc6rCE3uq~KjLN5irD?aRx@)P@ z&a@jJ|JU*uyRrV{qavgbkdFUyY6rmMChya8I*;<19-mUeNNq|T}lpr<`q$UEc zD1Z#kHA$i{Z{@4XfIec974x#$>=_PECFJq%OxG)Vuoa%}R7Yrw<6*N-rMYPzMYwO6Z?kraBfEXXQYE%`CV z9c~Q3&36Cf2ed)l`puRq#>@(9OT~Fb$yJpEV)oF zH^}V}{PikfUnuLw`*j{+q?@L7Q+p~S<^Vi8I`k0=zLQd`v6Mko>2$PMQ5U=MwF^bB3JSOd9Z9)+%^@?|ex52hzeH)b<#0y(O6 z)4bdLE3pMkvtLU)4)sRNGT$H{Lp#n*+cR%)KLfa)oDV6sDT^d;8IxXf55Ii!u47}M zY4=9cA2)^~IU%=m;Z8wK>S%>_nFEeu;(ATMwV^Z0E|bLgDxwhFY*ibvzc}r-<7plk zjBN6?mnn&)JS$!p&mJ62yD%vw2eK>VOrcm}))=U&MW*iOBR^$c&&@4Q4$44Wym{?N zrpi0ZV46bI@o=?irfyfXL5Hzv%jM7LF&UyUCmx)H%V4w)prj%-@}tnawD`R&UW@^B zcsojRL1QeSf34>dXT%2!>SIRr1?>2{uX4MT`U7hcB0Patl*sZmtEHP4Fx%wgW3T;$ zxp0v2$<|^J{0)+^q<9+*75e49l-{B|^x63u$F3s-k;_U+$@Hc5baJeRSw3SUh7Oo+ zEx4a<@yqFu&OLrSLUxoLPpYT(Z7=sE($;{_6+A$uV`9S>zGoB_-End80!4OvIKQk@ zHd9{%ku{Gy6c42cS1+Rgme9|_o4OzDgNs5U0+~0~1TB22!F*DKJn^YC@20x6Y1HP< zGWf_Q^&Crv@(o!q&DWCI15(e4)>A&q|JI?9doq(HB=%NpcTqpz@BB|lL0QVMsfnH- z<=HUe_+naV$!PjQi&d-C)yw!XKrm>Nys6UH`2f*GZU0{BMlP2Gn6Q~pC>VW-Et&n( zf(TW({Krj)hxvV)lLgThgXBC#Gq;6}bk*vFC2iH~$LN~B2kKK(o9p}awz7%dJ*l*p zPw&jqvq8A~ylvB*AIhvpDp&Sgr6xLrX!9moz6@SC>th1XScDDH)8Yk#zSWHw+7lbn zt=e|29R$amwO0@VU{C6&JGLVehmy%ht_%+Gd@D_4NRW+Hfod-~7(Pr<0uJ8wG@9ci zVgF7=0E+QefOy%YWL**7Hkt=!1+g4#EAEoeJems)UUwKsJesa%#VooWEGAn%^zKIa z2Q1#!2!j)sR&sC8gx$?C!wYx53pg}*5|%6%3t!CULOlV-81zlfeyV<`Kt(WPfNg6U zMDdL1HLVbudIa@c&W6Knk6Co7gr+s9ka5)vRWG{i&Nv?YoQGl9QNJukAzt)nh%v84N2#Q3}=O05}+ylm-)> zb7Kn8y*I8w*ooE$cN!aIJtyt71!U@#xSEJMD7i<^Yzn#ZWyFLghdQf?+E;y3F7SDZ zjaF7W7k4yf5d5PW#;#=M1b=zOx>;!#usWY%I|8(Ag}N|L#$V95SxELC7wK-L!J zt1&M42h08a7oDxmEFF3VRbLqumOBb0-pNYc@2M=^O7l8Q$k2COMt|3dORB?K8)tu; zMDM|y@4^G3jVI}T@GB~>#Qb}=++`Uc4gzGz5_gvocei;WAXY#kJ7}G6F zj5)2WV?oOV8U(3wy12O9oual8wv7n;#t}S+bvfyOqJ{=~;IIG}fs;E*j8~jfK1-&} zDGfEGk?#V16Egi!WW`j)AHOLUjGh|A? zx2)brzezz4F+BE3Of_r@9M-sVRP|Bx;3 za4g+n&8qQQw30=~)Bi?eM04nkBLj*R`R#GB2jSe+jUbMdZIKd1^@1i>nqkr$V3 zsJ@7VML?X)d+Jgab7?!v?wj5)rg2C)c&*7USiSh`0XAJ z(=Jcji5iQuTLZiAcMmX=afxG=j^+ph#D}+ETm4U~j<^Rn96_u2_ET(v3W5s7q-G~U zXFLxiS?T=ET~>XU+>+T~Czz>_y@?r6G209E-R zp~&mW$~{!ZsR^gMdEISwru33h&;b`Z?qQzcO~X9md4IZfAQ4b&F%dDn6vmgX``R@R z_G_d9`NV*d?lJ|D3c2?WETq58bJO}Tgf-C95SmO_!N{BW?Q7@+pDvSN?)U!np>;;b z$IJeoPZQD^tZU9slcz=_xL!SdJ8P@vvv2;`Q2vUcTf|+ISj>iQYnv|enj{i(mjuZW z+x6Xajm?0vNInHFk_;_U<7Hn{@X=wBC^U2ymRRau2ecuAOHyBrcGQk{vSzlSfuO1i zbKb+Gn0D#8$SUl!C2My@=fV@_!J{~oi6=Jp&MMC0x4kO!U0I{1ml9UJ6SEd=R=M{w zCbA;}D|68l$>rIq2-^BDvF&zCMw})-!m;PsE!wlTk+DE2Q~}&no{{F5LN4hp49{6r z@H1HT$5|;=3qfE_2tIx1fn&fTV=v(D_q>g2k1BhJB9k{$bW=xP#{O!auFaKY@xtF> zRHjiias`{+!Ix9La-###Vg=B1;lhK=pA(%8^(6AbM9`2u$(O%IRJ$MaX|ZaFTS6EeZW zKt7i_tqm4>kEi__U8={zs1UR7+Qme%?22q7pM|nn7@8a;J~WTEk~+hLxv<;yvL+WZ zYKP@ZT`ATw#C{Ec7Lur~3qoV{KJ!U#XTUli&6!l7n}13p8eoT~9{U_H=jP0ff37CB zMFQ+6{Sd0ElY-l^w(&a62jt;c_RUhjDqFc5B#9>3`uBl+Yv$TqA?^&A(!3&$i^w6$ z2Auy!0*v#p;{6TYCk1+Prm94OF}!$~kt(fgYNSPPS{sxM*>UxjmSabPWGJ%8MTHCQ zag4cV7tn3KyiSNDTn2hG`>%TjVy`tzjk(uje4IEY=I>YtB{U3X5&lm(_6r3}b?E7!-S6kN`vUc^2z||sfM^*b;Q{tR zBx^rIpJ8G=6V5KU$s$EFJeKl}`A z--kyZDwFec<0kF}+DVAFLz1fXs5#)rXDG$KEUcR&2Y0HL0Fz7COqLoPg>Eh8{5IcN zNI}eDPtoT?{rMDPzi{Xn;7i^DzRF`2eX~eHuzwUq25b?u*xnBpWze`GWiOAz4(svr zjSR-*Rk$B~BzGg>qoL=xiqPChi5DAC@Bo1-{YUamQQcuQZ$z(u5 zpkJU9tQDM2{E$Z=7Ti;;p1%d8@IU+aBtP);K9-aee|TG~!)<)>(cMuEkL6FFdSTc- zjrflcA`mr*A7o7C{)YAtM!h9i^}M1t^_#hc^iXeVuVqjKDz2K$@3a_3Yfb8Rx-uT3 z;Z-4@1;FPDSJ~yV;_95;&E3CD%Bu}-%;wx`n|$56lKA6{IL<9Gb}Em(ocnlLRayI6 zAysWT3oBPGk8L2&NerUxvGJ#}6YB9z*fh!qjS6cG(U0OEsUEEQ z=A4YY)ASH%qHbap=ZREcQ&;J>wJB&i6z;oT1In|=;m=+5_;(+)v*Bs^7l6U9I-uqb z)ihu4XAWiE1;tU)CdL%gL4loTc;di*ZlHBb;Gd&MPXa{5&x7^GFAHS4Xlz=zAH3zY zZ4r*?!xPccy+9#jZFOT2MYV!PJnS>yBZMa7(h3HOo_5VdLwy)N_#7JEFe{ZV4?2Im z16HQg&5NwjkLgDiG2A6hxDxT7wYM_bC$WZB-tdbOTU+%KzM ztLv=Yg+D`*OO71}@R-1(VvQ{j*GQoydvJLgUz$i|{uR>e@1qpy3Qgv#W8%#fo$i`= zi?JM-P9=8%-A2dtw>kGKEbNe;~2ut`N4tsi_}kuL+I}x7Q@t zRN=j!i#V&};yG;n(IrL1PDq+_+fV^p*_%&@#3>yCF@dB&FwjaTQQAcj-I0%(w1nLz zqS-{h_svFUU+7014t#ae_@9Jgp7_E6l|QFueBSJJPKAEPF~Tn))mYUN5O_~}{xN;7Dp24p%j*~?x@$UJZ~Q%Fmn-f!9yM1~ zLo$%2++i!QVuLMpeaorjon+H>|^Gfqlp8X<_>o4&&Ps0nt46!q#8EAYC-0$U7&%VAe(q5 zRI@)KFQcJnFaTPmmK;7beYiYUj odTawPUUsr=yY$0)2SYQluYD}E9{K0b-`**@3AadT;Nyb+3tiQg$N&HU From f72fac26b01689a8f8c7a98069746c7d82356dd5 Mon Sep 17 00:00:00 2001 From: David Anson Date: Sat, 14 Dec 2024 21:39:42 -0800 Subject: [PATCH 11/25] Update dependency: markdownlint to 0.37.1. --- doc/OutputFormatters.md | 2 +- package.json | 2 +- schema/markdownlint-cli2-config-schema.json | 4 +- schema/markdownlint-config-schema.json | 212 ++++++++++---------- webworker/webpack.config.cjs | 1 + 5 files changed, 111 insertions(+), 110 deletions(-) diff --git a/doc/OutputFormatters.md b/doc/OutputFormatters.md index d518ac19..3390e465 100644 --- a/doc/OutputFormatters.md +++ b/doc/OutputFormatters.md @@ -63,4 +63,4 @@ For a `.markdownlint-cli2.jsonc` like: [formatter-junit]: ../formatter-junit/markdownlint-cli2-formatter-junit.js [formatter-sarif]: ../formatter-sarif/markdownlint-cli2-formatter-sarif.js [markdownlint-cli2-formatter]: https://www.npmjs.com/search?q=keywords:markdownlint-cli2-formatter -[markdownlint-d-ts]: https://github.com/DavidAnson/markdownlint/blob/v0.37.0/lib/markdownlint.d.mts +[markdownlint-d-ts]: https://github.com/DavidAnson/markdownlint/blob/v0.37.1/lib/markdownlint.d.mts diff --git a/package.json b/package.json index bfb19a2c..fee89bcf 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "globby": "14.0.2", "js-yaml": "4.1.0", "jsonc-parser": "3.3.1", - "markdownlint": "0.37.0", + "markdownlint": "0.37.1", "markdownlint-cli2-formatter-default": "0.0.5", "micromatch": "4.0.8" }, diff --git a/schema/markdownlint-cli2-config-schema.json b/schema/markdownlint-cli2-config-schema.json index af97593a..b5856409 100644 --- a/schema/markdownlint-cli2-config-schema.json +++ b/schema/markdownlint-cli2-config-schema.json @@ -10,8 +10,8 @@ "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.16.0/schema/markdownlint-cli2-config-schema.json" }, "config": { - "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/schema/.markdownlint.jsonc", - "$ref": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.0/schema/markdownlint-config-schema.json", + "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/schema/.markdownlint.jsonc", + "$ref": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.1/schema/markdownlint-config-schema.json", "default": {} }, "customRules": { diff --git a/schema/markdownlint-config-schema.json b/schema/markdownlint-config-schema.json index cf7dea4f..01d494dd 100644 --- a/schema/markdownlint-config-schema.json +++ b/schema/markdownlint-config-schema.json @@ -1,13 +1,13 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.0/schema/markdownlint-config-schema.json", + "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.1/schema/markdownlint-config-schema.json", "title": "markdownlint configuration schema", "type": "object", "properties": { "$schema": { "description": "JSON Schema URI (expected by some editors)", "type": "string", - "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.0/schema/markdownlint-config-schema.json" + "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.1/schema/markdownlint-config-schema.json" }, "default": { "description": "Default state for all rules", @@ -23,17 +23,17 @@ "default": null }, "MD001": { - "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md001.md", + "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md001.md", "type": "boolean", "default": true }, "heading-increment": { - "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md001.md", + "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md001.md", "type": "boolean", "default": true }, "MD003": { - "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md003.md", + "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md003.md", "type": [ "boolean", "object" @@ -57,7 +57,7 @@ "additionalProperties": false }, "heading-style": { - "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md003.md", + "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md003.md", "type": [ "boolean", "object" @@ -81,7 +81,7 @@ "additionalProperties": false }, "MD004": { - "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md004.md", + "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md004.md", "type": [ "boolean", "object" @@ -104,7 +104,7 @@ "additionalProperties": false }, "ul-style": { - "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md004.md", + "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md004.md", "type": [ "boolean", "object" @@ -127,17 +127,17 @@ "additionalProperties": false }, "MD005": { - "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md005.md", + "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md005.md", "type": "boolean", "default": true }, "list-indent": { - "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md005.md", + "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md005.md", "type": "boolean", "default": true }, "MD007": { - "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md007.md", + "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md007.md", "type": [ "boolean", "object" @@ -165,7 +165,7 @@ "additionalProperties": false }, "ul-indent": { - "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md007.md", + "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md007.md", "type": [ "boolean", "object" @@ -193,7 +193,7 @@ "additionalProperties": false }, "MD009": { - "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md009.md", + "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md009.md", "type": [ "boolean", "object" @@ -220,7 +220,7 @@ "additionalProperties": false }, "no-trailing-spaces": { - "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md009.md", + "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md009.md", "type": [ "boolean", "object" @@ -247,7 +247,7 @@ "additionalProperties": false }, "MD010": { - "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md010.md", + "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md010.md", "type": [ "boolean", "object" @@ -277,7 +277,7 @@ "additionalProperties": false }, "no-hard-tabs": { - "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md010.md", + "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md010.md", "type": [ "boolean", "object" @@ -307,17 +307,17 @@ "additionalProperties": false }, "MD011": { - "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md011.md", + "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md011.md", "type": "boolean", "default": true }, "no-reversed-links": { - "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md011.md", + "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md011.md", "type": "boolean", "default": true }, "MD012": { - "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md012.md", + "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md012.md", "type": [ "boolean", "object" @@ -334,7 +334,7 @@ "additionalProperties": false }, "no-multiple-blanks": { - "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md012.md", + "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md012.md", "type": [ "boolean", "object" @@ -351,7 +351,7 @@ "additionalProperties": false }, "MD013": { - "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md013.md", + "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md013.md", "type": [ "boolean", "object" @@ -405,7 +405,7 @@ "additionalProperties": false }, "line-length": { - "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md013.md", + "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md013.md", "type": [ "boolean", "object" @@ -459,57 +459,57 @@ "additionalProperties": false }, "MD014": { - "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md014.md", + "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md014.md", "type": "boolean", "default": true }, "commands-show-output": { - "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md014.md", + "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md014.md", "type": "boolean", "default": true }, "MD018": { - "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md018.md", + "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md018.md", "type": "boolean", "default": true }, "no-missing-space-atx": { - "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md018.md", + "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md018.md", "type": "boolean", "default": true }, "MD019": { - "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md019.md", + "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md019.md", "type": "boolean", "default": true }, "no-multiple-space-atx": { - "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md019.md", + "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md019.md", "type": "boolean", "default": true }, "MD020": { - "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md020.md", + "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md020.md", "type": "boolean", "default": true }, "no-missing-space-closed-atx": { - "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md020.md", + "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md020.md", "type": "boolean", "default": true }, "MD021": { - "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md021.md", + "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md021.md", "type": "boolean", "default": true }, "no-multiple-space-closed-atx": { - "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md021.md", + "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md021.md", "type": "boolean", "default": true }, "MD022": { - "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md022.md", + "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md022.md", "type": [ "boolean", "object" @@ -544,7 +544,7 @@ "additionalProperties": false }, "blanks-around-headings": { - "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md022.md", + "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md022.md", "type": [ "boolean", "object" @@ -579,17 +579,17 @@ "additionalProperties": false }, "MD023": { - "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md023.md", + "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md023.md", "type": "boolean", "default": true }, "heading-start-left": { - "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md023.md", + "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md023.md", "type": "boolean", "default": true }, "MD024": { - "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md024.md", + "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md024.md", "type": [ "boolean", "object" @@ -605,7 +605,7 @@ "additionalProperties": false }, "no-duplicate-heading": { - "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md024.md", + "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md024.md", "type": [ "boolean", "object" @@ -621,7 +621,7 @@ "additionalProperties": false }, "MD025": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md025.md", "type": [ "boolean", "object" @@ -644,7 +644,7 @@ "additionalProperties": false }, "single-title": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md025.md", "type": [ "boolean", "object" @@ -667,7 +667,7 @@ "additionalProperties": false }, "single-h1": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md025.md", "type": [ "boolean", "object" @@ -690,7 +690,7 @@ "additionalProperties": false }, "MD026": { - "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md026.md", + "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md026.md", "type": [ "boolean", "object" @@ -706,7 +706,7 @@ "additionalProperties": false }, "no-trailing-punctuation": { - "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md026.md", + "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md026.md", "type": [ "boolean", "object" @@ -722,27 +722,27 @@ "additionalProperties": false }, "MD027": { - "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md027.md", + "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md027.md", "type": "boolean", "default": true }, "no-multiple-space-blockquote": { - "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md027.md", + "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md027.md", "type": "boolean", "default": true }, "MD028": { - "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md028.md", + "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md028.md", "type": "boolean", "default": true }, "no-blanks-blockquote": { - "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md028.md", + "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md028.md", "type": "boolean", "default": true }, "MD029": { - "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md029.md", + "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md029.md", "type": [ "boolean", "object" @@ -764,7 +764,7 @@ "additionalProperties": false }, "ol-prefix": { - "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md029.md", + "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md029.md", "type": [ "boolean", "object" @@ -786,7 +786,7 @@ "additionalProperties": false }, "MD030": { - "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md030.md", + "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md030.md", "type": [ "boolean", "object" @@ -821,7 +821,7 @@ "additionalProperties": false }, "list-marker-space": { - "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md030.md", + "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md030.md", "type": [ "boolean", "object" @@ -856,7 +856,7 @@ "additionalProperties": false }, "MD031": { - "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md031.md", + "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md031.md", "type": [ "boolean", "object" @@ -872,7 +872,7 @@ "additionalProperties": false }, "blanks-around-fences": { - "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md031.md", + "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md031.md", "type": [ "boolean", "object" @@ -888,17 +888,17 @@ "additionalProperties": false }, "MD032": { - "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md032.md", + "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md032.md", "type": "boolean", "default": true }, "blanks-around-lists": { - "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md032.md", + "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md032.md", "type": "boolean", "default": true }, "MD033": { - "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md033.md", + "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md033.md", "type": [ "boolean", "object" @@ -917,7 +917,7 @@ "additionalProperties": false }, "no-inline-html": { - "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md033.md", + "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md033.md", "type": [ "boolean", "object" @@ -936,17 +936,17 @@ "additionalProperties": false }, "MD034": { - "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md034.md", + "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md034.md", "type": "boolean", "default": true }, "no-bare-urls": { - "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md034.md", + "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md034.md", "type": "boolean", "default": true }, "MD035": { - "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md035.md", + "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md035.md", "type": [ "boolean", "object" @@ -962,7 +962,7 @@ "additionalProperties": false }, "hr-style": { - "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md035.md", + "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md035.md", "type": [ "boolean", "object" @@ -978,7 +978,7 @@ "additionalProperties": false }, "MD036": { - "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md036.md", + "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md036.md", "type": [ "boolean", "object" @@ -994,7 +994,7 @@ "additionalProperties": false }, "no-emphasis-as-heading": { - "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md036.md", + "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md036.md", "type": [ "boolean", "object" @@ -1010,37 +1010,37 @@ "additionalProperties": false }, "MD037": { - "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md037.md", + "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md037.md", "type": "boolean", "default": true }, "no-space-in-emphasis": { - "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md037.md", + "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md037.md", "type": "boolean", "default": true }, "MD038": { - "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md038.md", + "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md038.md", "type": "boolean", "default": true }, "no-space-in-code": { - "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md038.md", + "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md038.md", "type": "boolean", "default": true }, "MD039": { - "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md039.md", + "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md039.md", "type": "boolean", "default": true }, "no-space-in-links": { - "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md039.md", + "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md039.md", "type": "boolean", "default": true }, "MD040": { - "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md040.md", + "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md040.md", "type": [ "boolean", "object" @@ -1064,7 +1064,7 @@ "additionalProperties": false }, "fenced-code-language": { - "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md040.md", + "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md040.md", "type": [ "boolean", "object" @@ -1088,7 +1088,7 @@ "additionalProperties": false }, "MD041": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md041.md", "type": [ "boolean", "object" @@ -1111,7 +1111,7 @@ "additionalProperties": false }, "first-line-heading": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md041.md", "type": [ "boolean", "object" @@ -1134,7 +1134,7 @@ "additionalProperties": false }, "first-line-h1": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md041.md", "type": [ "boolean", "object" @@ -1157,17 +1157,17 @@ "additionalProperties": false }, "MD042": { - "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md042.md", + "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md042.md", "type": "boolean", "default": true }, "no-empty-links": { - "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md042.md", + "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md042.md", "type": "boolean", "default": true }, "MD043": { - "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md043.md", + "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md043.md", "type": [ "boolean", "object" @@ -1192,7 +1192,7 @@ "additionalProperties": false }, "required-headings": { - "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md043.md", + "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md043.md", "type": [ "boolean", "object" @@ -1217,7 +1217,7 @@ "additionalProperties": false }, "MD044": { - "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md044.md", + "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md044.md", "type": [ "boolean", "object" @@ -1246,7 +1246,7 @@ "additionalProperties": false }, "proper-names": { - "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md044.md", + "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md044.md", "type": [ "boolean", "object" @@ -1275,17 +1275,17 @@ "additionalProperties": false }, "MD045": { - "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md045.md", + "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md045.md", "type": "boolean", "default": true }, "no-alt-text": { - "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md045.md", + "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md045.md", "type": "boolean", "default": true }, "MD046": { - "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md046.md", + "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md046.md", "type": [ "boolean", "object" @@ -1306,7 +1306,7 @@ "additionalProperties": false }, "code-block-style": { - "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md046.md", + "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md046.md", "type": [ "boolean", "object" @@ -1327,17 +1327,17 @@ "additionalProperties": false }, "MD047": { - "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md047.md", + "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md047.md", "type": "boolean", "default": true }, "single-trailing-newline": { - "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md047.md", + "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md047.md", "type": "boolean", "default": true }, "MD048": { - "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md048.md", + "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md048.md", "type": [ "boolean", "object" @@ -1358,7 +1358,7 @@ "additionalProperties": false }, "code-fence-style": { - "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md048.md", + "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md048.md", "type": [ "boolean", "object" @@ -1379,7 +1379,7 @@ "additionalProperties": false }, "MD049": { - "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md049.md", + "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md049.md", "type": [ "boolean", "object" @@ -1400,7 +1400,7 @@ "additionalProperties": false }, "emphasis-style": { - "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md049.md", + "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md049.md", "type": [ "boolean", "object" @@ -1421,7 +1421,7 @@ "additionalProperties": false }, "MD050": { - "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md050.md", + "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md050.md", "type": [ "boolean", "object" @@ -1442,7 +1442,7 @@ "additionalProperties": false }, "strong-style": { - "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md050.md", + "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md050.md", "type": [ "boolean", "object" @@ -1463,7 +1463,7 @@ "additionalProperties": false }, "MD051": { - "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md051.md", + "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md051.md", "type": [ "boolean", "object" @@ -1479,7 +1479,7 @@ "additionalProperties": false }, "link-fragments": { - "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md051.md", + "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md051.md", "type": [ "boolean", "object" @@ -1495,7 +1495,7 @@ "additionalProperties": false }, "MD052": { - "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md052.md", + "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md052.md", "type": [ "boolean", "object" @@ -1511,7 +1511,7 @@ "additionalProperties": false }, "reference-links-images": { - "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md052.md", + "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md052.md", "type": [ "boolean", "object" @@ -1527,7 +1527,7 @@ "additionalProperties": false }, "MD053": { - "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md053.md", + "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md053.md", "type": [ "boolean", "object" @@ -1548,7 +1548,7 @@ "additionalProperties": false }, "link-image-reference-definitions": { - "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md053.md", + "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md053.md", "type": [ "boolean", "object" @@ -1569,7 +1569,7 @@ "additionalProperties": false }, "MD054": { - "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md054.md", + "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md054.md", "type": [ "boolean", "object" @@ -1610,7 +1610,7 @@ "additionalProperties": false }, "link-image-style": { - "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md054.md", + "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md054.md", "type": [ "boolean", "object" @@ -1651,7 +1651,7 @@ "additionalProperties": false }, "MD055": { - "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md055.md", + "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md055.md", "type": [ "boolean", "object" @@ -1674,7 +1674,7 @@ "additionalProperties": false }, "table-pipe-style": { - "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md055.md", + "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md055.md", "type": [ "boolean", "object" @@ -1697,22 +1697,22 @@ "additionalProperties": false }, "MD056": { - "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md056.md", + "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md056.md", "type": "boolean", "default": true }, "table-column-count": { - "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md056.md", + "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md056.md", "type": "boolean", "default": true }, "MD058": { - "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md058.md", + "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md058.md", "type": "boolean", "default": true }, "blanks-around-tables": { - "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.0/doc/md058.md", + "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md058.md", "type": "boolean", "default": true }, diff --git a/webworker/webpack.config.cjs b/webworker/webpack.config.cjs index ae385325..d63f20e2 100644 --- a/webworker/webpack.config.cjs +++ b/webworker/webpack.config.cjs @@ -48,6 +48,7 @@ module.exports = { }) ], "resolve": { + "conditionNames": [ "import", "require" ], "fallback": { "buffer": false, "fs": false, From f47f5babc9ecbfc071b5c379f61b2e215fa4df3a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:16:38 +0000 Subject: [PATCH 12/25] Bump eslint from 9.16.0 to 9.17.0 Bumps [eslint](https://github.com/eslint/eslint) from 9.16.0 to 9.17.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v9.16.0...v9.17.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fee89bcf..54c5ca52 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "cpy": "11.1.0", "cpy-cli": "5.0.0", "del": "8.0.0", - "eslint": "9.16.0", + "eslint": "9.17.0", "eslint-plugin-jsdoc": "50.6.1", "eslint-plugin-n": "17.15.0", "eslint-plugin-unicorn": "56.0.1", From 62a267934a263121cf0a379873570a5fbde72e84 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:16:47 +0000 Subject: [PATCH 13/25] Bump @eslint/js from 9.16.0 to 9.17.0 Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.16.0 to 9.17.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.17.0/packages/js) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 54c5ca52..700dfa10 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "micromatch": "4.0.8" }, "devDependencies": { - "@eslint/js": "9.16.0", + "@eslint/js": "9.17.0", "@iktakahiro/markdown-it-katex": "4.0.1", "@playwright/test": "1.49.1", "@stylistic/eslint-plugin": "2.12.1", From 5520b559b7fb5153d02efa8bd3fb98adb1d97a66 Mon Sep 17 00:00:00 2001 From: David Anson Date: Sun, 15 Dec 2024 23:07:05 -0800 Subject: [PATCH 14/25] Use import() only (no more require()) when loading modules for custom rules, plugins, output formatters, and configuration. --- markdownlint-cli2.mjs | 138 +++++++++--------- package.json | 4 +- resolve-and-require.mjs | 17 --- resolve-module.mjs | 16 ++ .../dir/subdir/.markdownlint-cli2.jsonc | 2 +- .../customRules/dir2/.markdownlint-cli2.jsonc | 2 +- .../customRules/dir3/.markdownlint-cli2.jsonc | 2 +- test/customRules/dir4/.markdownlint-cli2.mjs | 4 + test/markdownlint-cli2-test-cases.mjs | 36 ++--- test/markdownlint-cli2-test-exec.mjs | 4 +- test/markdownlint-cli2-test-fs.mjs | 6 +- test/markdownlint-cli2-test-main.mjs | 6 +- test/markdownlint-cli2-test.mjs | 14 +- .../.markdownlint-cli2.jsonc | 2 + ...quire-test.mjs => resolve-module-test.mjs} | 38 ++--- .../markdownlint-cli2-test-exec.mjs.md | 13 +- .../markdownlint-cli2-test-exec.mjs.snap | Bin 18507 -> 18546 bytes .../markdownlint-cli2-test-main.mjs.md | 13 +- .../markdownlint-cli2-test-main.mjs.snap | Bin 14366 -> 14403 bytes 19 files changed, 168 insertions(+), 149 deletions(-) delete mode 100644 resolve-and-require.mjs create mode 100644 resolve-module.mjs rename test/{resolve-and-require-test.mjs => resolve-module-test.mjs} (63%) diff --git a/markdownlint-cli2.mjs b/markdownlint-cli2.mjs index 46c3cb72..f3d046d9 100755 --- a/markdownlint-cli2.mjs +++ b/markdownlint-cli2.mjs @@ -1,6 +1,6 @@ // @ts-ignore -// Requires +// Imports import fsNode from "node:fs"; import { createRequire } from "node:module"; const dynamicRequire = createRequire(import.meta.url); @@ -15,7 +15,7 @@ import { lint, extendConfig, readConfig } from "markdownlint/promise"; import { expandTildePath } from "markdownlint/helpers"; import appendToArray from "./append-to-array.mjs"; import mergeOptions from "./merge-options.mjs"; -import resolveAndRequire from "./resolve-and-require.mjs"; +import resolveModule from "./resolve-module.mjs"; import parsers from "./parsers/parsers.mjs"; import jsoncParse from "./parsers/jsonc-parse.mjs"; import yamlParse from "./parsers/yaml-parse.mjs"; @@ -65,73 +65,65 @@ const readConfigFile = (fs, dir, name, otherwise) => () => { ); }; -// Import or resolve/require a module ID with a custom directory in the path -const importOrRequireResolve = async (dirOrDirs, id, noRequire) => { - if (typeof id === "string") { - if (noRequire) { - return null; - } - const dirs = Array.isArray(dirOrDirs) ? dirOrDirs : [ dirOrDirs ]; - const expandId = expandTildePath(id, os); - const errors = []; - // Try to load via require(...) - try { - const isModule = /\.mjs$/iu.test(expandId); - if (!isModule) { - // Try not to use require for modules due to breaking change in Node 22.12: - // https://github.com/nodejs/node/releases/tag/v22.12.0 - return resolveAndRequire(dynamicRequire, expandId, dirs); - } - } catch (error) { - errors.push(error); - } - // Try to load via import(...) +// Import a module ID with a custom directory in the path +const importModule = async (dirOrDirs, id, noImport) => { + if (typeof id !== "string") { + return id; + } else if (noImport) { + return null; + } + const dirs = Array.isArray(dirOrDirs) ? dirOrDirs : [ dirOrDirs ]; + const expandId = expandTildePath(id, os); + const errors = []; + let moduleName = null; + try { try { - // eslint-disable-next-line n/no-unsupported-features/node-builtins - const isURL = !pathDefault.isAbsolute(expandId) && URL.canParse(expandId); - const urlString = ( - isURL ? new URL(expandId) : pathToFileURL(pathDefault.resolve(dirs[0], expandId)) - ).toString(); - // eslint-disable-next-line no-inline-comments - const module = await import(/* webpackIgnore: true */ urlString); - return module.default; + moduleName = pathToFileURL(resolveModule(dynamicRequire, expandId, dirs)); } catch (error) { errors.push(error); + moduleName = + // eslint-disable-next-line n/no-unsupported-features/node-builtins + (!pathDefault.isAbsolute(expandId) && URL.canParse(expandId)) + ? new URL(expandId) + : pathToFileURL(pathDefault.resolve(dirs[0], expandId)); } - // Give up + // eslint-disable-next-line no-inline-comments + const module = await import(/* webpackIgnore: true */ moduleName); + return module.default; + } catch (error) { + errors.push(error); throw new AggregateError( errors, - `Unable to require or import module '${id}'.` + `Unable to import module '${id}'.` ); } - return id; }; -// Import or require an array of modules by ID -const importOrRequireIds = (dirs, ids, noRequire) => ( +// Import an array of modules by ID +const importModuleIds = (dirs, ids, noImport) => ( Promise.all( ids.map( - (id) => importOrRequireResolve(dirs, id, noRequire) + (id) => importModule(dirs, id, noImport) ) ).then((results) => results.filter(Boolean)) ); -// Import or require an array of modules by ID (preserving parameters) -const importOrRequireIdsAndParams = (dirs, idsAndParams, noRequire) => ( +// Import an array of modules by ID (preserving parameters) +const importModuleIdsAndParams = (dirs, idsAndParams, noImport) => ( Promise.all( idsAndParams.map( - (idAndParams) => importOrRequireResolve(dirs, idAndParams[0], noRequire). + (idAndParams) => importModule(dirs, idAndParams[0], noImport). then((module) => module && [ module, ...idAndParams.slice(1) ]) ) ).then((results) => results.filter(Boolean)) ); -// Import or require a JavaScript file and return the exported object -const importOrRequireConfig = (fs, dir, name, noRequire, otherwise) => () => { +// Import a JavaScript file and return the exported object +const importConfig = (fs, dir, name, noImport, otherwise) => () => { const file = pathPosix.join(dir, name); return fs.promises.access(file). then( - () => importOrRequireResolve(dir, name, noRequire), + () => importModule(dir, name, noImport), otherwise ); }; @@ -151,7 +143,7 @@ const getExtendedConfig = (config, configPath, fs) => { }; // Read an options or config file in any format and return the object -const readOptionsOrConfig = async (configPath, fs, noRequire) => { +const readOptionsOrConfig = async (configPath, fs, noImport) => { const basename = pathPosix.basename(configPath); const dirname = pathPosix.dirname(configPath); let options = null; @@ -165,7 +157,7 @@ const readOptionsOrConfig = async (configPath, fs, noRequire) => { basename.endsWith(".markdownlint-cli2.cjs") || basename.endsWith(".markdownlint-cli2.mjs") ) { - options = await importOrRequireResolve(dirname, basename, noRequire); + options = await importModule(dirname, basename, noImport); } else if ( basename.endsWith(".markdownlint.jsonc") || basename.endsWith(".markdownlint.json") || @@ -177,7 +169,7 @@ const readOptionsOrConfig = async (configPath, fs, noRequire) => { basename.endsWith(".markdownlint.cjs") || basename.endsWith(".markdownlint.mjs") ) { - config = await importOrRequireResolve(dirname, basename, noRequire); + config = await importModule(dirname, basename, noImport); } else { throw new Error( "File name should be (or end with) one of the supported types " + @@ -288,7 +280,7 @@ const getAndProcessDirInfo = ( dirToDirInfo, dir, relativeDir, - noRequire, + noImport, allowPackageJson ) => { // Create dirInfo @@ -322,10 +314,10 @@ const getAndProcessDirInfo = ( () => fs.promises.readFile(file, utf8).then(yamlParse), () => fs.promises.access(captureFile(markdownlintCli2Cjs)). then( - () => importOrRequireResolve(dir, file, noRequire), + () => importModule(dir, file, noImport), () => fs.promises.access(captureFile(markdownlintCli2Mjs)). then( - () => importOrRequireResolve(dir, file, noRequire), + () => importModule(dir, file, noImport), () => (allowPackageJson ? fs.promises.access(captureFile(packageJson)) // eslint-disable-next-line prefer-promise-reject-errors @@ -379,16 +371,16 @@ const getAndProcessDirInfo = ( fs, dir, ".markdownlint.yml", - importOrRequireConfig( + importConfig( fs, dir, ".markdownlint.cjs", - noRequire, - importOrRequireConfig( + noImport, + importConfig( fs, dir, ".markdownlint.mjs", - noRequire, + noImport, noop ) ) @@ -417,7 +409,7 @@ const getBaseOptions = async ( options, fixDefault, noGlobs, - noRequire + noImport ) => { const tasks = []; const dirToDirInfo = {}; @@ -427,7 +419,7 @@ const getBaseOptions = async ( dirToDirInfo, baseDir, relativeDir, - noRequire, + noImport, true ); await Promise.all(tasks); @@ -468,7 +460,7 @@ const enumerateFiles = async ( dirToDirInfo, gitignore, ignoreFiles, - noRequire + noImport ) => { const tasks = []; /** @type {import("globby").Options} */ @@ -536,7 +528,7 @@ const enumerateFiles = async ( dirToDirInfo, dir, null, - noRequire, + noImport, false ); dirInfo.files.push(file); @@ -549,7 +541,7 @@ const enumerateParents = async ( fs, baseDir, dirToDirInfo, - noRequire + noImport ) => { const tasks = []; @@ -578,7 +570,7 @@ const enumerateParents = async ( dirToDirInfo, dir, null, - noRequire, + noImport, false ); lastDirInfo.parent = dirInfo; @@ -603,7 +595,7 @@ const createDirInfos = async ( optionsOverride, gitignore, ignoreFiles, - noRequire + noImport ) => { await enumerateFiles( fs, @@ -613,13 +605,13 @@ const createDirInfos = async ( dirToDirInfo, gitignore, ignoreFiles, - noRequire + noImport ); await enumerateParents( fs, baseDir, dirToDirInfo, - noRequire + noImport ); // Merge file lists with identical configuration @@ -650,10 +642,10 @@ const createDirInfos = async ( ); if (markdownlintOptions && markdownlintOptions.customRules) { tasks.push( - importOrRequireIds( + importModuleIds( [ effectiveDir, ...effectiveModulePaths ], markdownlintOptions.customRules, - noRequire + noImport ).then((customRules) => { // Expand nested arrays (for packages that export multiple rules) markdownlintOptions.customRules = customRules.flat(); @@ -662,10 +654,10 @@ const createDirInfos = async ( } if (markdownlintOptions && markdownlintOptions.markdownItPlugins) { tasks.push( - importOrRequireIdsAndParams( + importModuleIdsAndParams( [ effectiveDir, ...effectiveModulePaths ], markdownlintOptions.markdownItPlugins, - noRequire + noImport ).then((markdownItPlugins) => { markdownlintOptions.markdownItPlugins = markdownItPlugins; }) @@ -858,7 +850,7 @@ const outputSummary = async ( modulePaths, logMessage, logError, - noRequire + noImport ) => { const errorsPresent = (summary.length > 0); if (errorsPresent || outputFormatters) { @@ -871,7 +863,7 @@ const outputSummary = async ( const dir = relativeDir || baseDir; const dirs = [ dir, ...modulePaths ]; const formattersAndParams = outputFormatters - ? await importOrRequireIdsAndParams(dirs, outputFormatters, noRequire) + ? await importModuleIdsAndParams(dirs, outputFormatters, noImport) // eslint-disable-next-line no-inline-comments, unicorn/no-await-expression-member : [ [ (await import(/* webpackMode: "eager" */ "markdownlint-cli2-formatter-default")).default ] ]; await Promise.all(formattersAndParams.map((formatterAndParams) => { @@ -891,7 +883,7 @@ export const main = async (params) => { optionsDefault, optionsOverride, fileContents, - noRequire, + noImport, allowStdin } = params; let { @@ -948,7 +940,7 @@ export const main = async (params) => { const resolvedConfigPath = posixPath(pathDefault.resolve(baseDirSystem, configPath)); optionsArgv = - await readOptionsOrConfig(resolvedConfigPath, fs, noRequire); + await readOptionsOrConfig(resolvedConfigPath, fs, noImport); relativeDir = pathPosix.dirname(resolvedConfigPath); } // Process arguments and get base options @@ -961,7 +953,7 @@ export const main = async (params) => { optionsArgv || optionsDefault, fixDefault, noGlobs, - noRequire + noImport ); } finally { if (!baseOptions?.baseMarkdownlintOptions.noBanner) { @@ -1020,7 +1012,7 @@ export const main = async (params) => { optionsOverride, gitignore, ignoreFiles, - noRequire + noImport ); // Output linting status if (showProgress) { @@ -1058,7 +1050,7 @@ export const main = async (params) => { modulePaths, logMessage, logError, - noRequire + noImport ); // Return result return errorsPresent ? 1 : 0; diff --git a/package.json b/package.json index 700dfa10..b7e4cf7f 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "playwright-test": "playwright test --config ./webworker/playwright.config.mjs", "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:v1.49.1 npm run playwright-test", "schema": "cpy ./node_modules/markdownlint/schema/markdownlint-config-schema.json ./schema --flat", - "test": "ava --timeout=1m test/append-to-array-test.mjs test/fs-mock-test.mjs test/fs-virtual-test.mjs test/markdownlint-cli2-test.mjs test/markdownlint-cli2-test-exec.mjs test/markdownlint-cli2-test-exports.mjs test/markdownlint-cli2-test-fs.mjs test/markdownlint-cli2-test-main.mjs test/merge-options-test.mjs test/resolve-and-require-test.mjs", + "test": "ava --timeout=1m test/append-to-array-test.mjs test/fs-mock-test.mjs test/fs-virtual-test.mjs test/markdownlint-cli2-test.mjs test/markdownlint-cli2-test-exec.mjs test/markdownlint-cli2-test-exports.mjs test/markdownlint-cli2-test-fs.mjs test/markdownlint-cli2-test-main.mjs test/merge-options-test.mjs test/resolve-module-test.mjs", "test-cover": "c8 --100 npm test", "test-docker-hub-image": "VERSION=$(node -e \"process.stdout.write(require('./package.json').version)\") && docker image rm davidanson/markdownlint-cli2:v$VERSION davidanson/markdownlint-cli2:latest || true && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2:v$VERSION \"*.md\" && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2:latest \"*.md\"", "test-docker-hub-image-rules": "VERSION=$(node -e \"process.stdout.write(require('./package.json').version)\") && docker image rm davidanson/markdownlint-cli2-rules:v$VERSION davidanson/markdownlint-cli2-rules:latest || true && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2-rules:v$VERSION \"*.md\" && docker run --rm -v $PWD:/workdir davidanson/markdownlint-cli2-rules:latest \"*.md\"", @@ -68,7 +68,7 @@ "parsers/jsonc-parse.mjs", "parsers/yaml-parse.mjs", "README.md", - "resolve-and-require.mjs", + "resolve-module.mjs", "schema/markdownlint-cli2-config-schema.json", "schema/markdownlint-config-schema.json", "schema/ValidatingConfiguration.md" diff --git a/resolve-and-require.mjs b/resolve-and-require.mjs deleted file mode 100644 index 8650ee2e..00000000 --- a/resolve-and-require.mjs +++ /dev/null @@ -1,17 +0,0 @@ -// @ts-check - -/** - * Wrapper for calling Node's require.resolve/require with an additional path. - * @param {object} req Node's require implementation (or equivalent). - * @param {string} id Package identifier to require. - * @param {string[]} dirs Directories to include when resolving paths. - * @returns {object} Exported module content. - */ -const resolveAndRequire = (req, id, dirs) => { - const resolvePaths = req.resolve.paths ? req.resolve.paths("") : []; - const paths = [ ...dirs, ...resolvePaths ]; - const resolved = req.resolve(id, { paths }); - return req(resolved); -}; - -export default resolveAndRequire; diff --git a/resolve-module.mjs b/resolve-module.mjs new file mode 100644 index 00000000..13c87ac5 --- /dev/null +++ b/resolve-module.mjs @@ -0,0 +1,16 @@ +// @ts-check + +/** + * Wrapper for calling Node's require.resolve with additional paths. + * @param {object} require Node's require implementation (or equivalent). + * @param {string} request Module path to require. + * @param {string[]} paths Paths to resolve module location from. + * @returns {string} Resolved file name. + */ +const resolveModule = (require, request, paths) => { + const resolvePaths = require.resolve.paths ? require.resolve.paths("") : []; + const allPaths = [ ...paths, ...resolvePaths ]; + return require.resolve(request, { "paths": allPaths }); +}; + +export default resolveModule; diff --git a/test/customRules/dir/subdir/.markdownlint-cli2.jsonc b/test/customRules/dir/subdir/.markdownlint-cli2.jsonc index 66c3cb4b..5bb6868d 100644 --- a/test/customRules/dir/subdir/.markdownlint-cli2.jsonc +++ b/test/customRules/dir/subdir/.markdownlint-cli2.jsonc @@ -1,7 +1,7 @@ { "customRules": [ "../../rules/first-line.cjs", - "../../node_modules/markdownlint-rule-sample-commonjs", + "../../node_modules/markdownlint-rule-sample-commonjs/sample-rule.cjs", "../../node_modules/markdownlint-rule-sample-module/sample-rule.mjs", "markdownlint-rule-extended-ascii" ] diff --git a/test/customRules/dir2/.markdownlint-cli2.jsonc b/test/customRules/dir2/.markdownlint-cli2.jsonc index 8a668d71..9c7b3fec 100644 --- a/test/customRules/dir2/.markdownlint-cli2.jsonc +++ b/test/customRules/dir2/.markdownlint-cli2.jsonc @@ -1,6 +1,6 @@ { "customRules": [ "markdownlint-rule-sample-commonjs", - "../node_modules/markdownlint-rule-sample-module/sample-rule.mjs" + "markdownlint-rule-sample-module" ] } diff --git a/test/customRules/dir3/.markdownlint-cli2.jsonc b/test/customRules/dir3/.markdownlint-cli2.jsonc index e9a71c6c..a931ee9b 100644 --- a/test/customRules/dir3/.markdownlint-cli2.jsonc +++ b/test/customRules/dir3/.markdownlint-cli2.jsonc @@ -2,6 +2,6 @@ "customRules": [ "../rules/all-rules.cjs", "../node_modules/markdownlint-rule-sample-commonjs", - "../node_modules/markdownlint-rule-sample-module/sample-rule.mjs" + "../node_modules/markdownlint-rule-sample-module" ] } diff --git a/test/customRules/dir4/.markdownlint-cli2.mjs b/test/customRules/dir4/.markdownlint-cli2.mjs index f3d232e0..06e30e27 100644 --- a/test/customRules/dir4/.markdownlint-cli2.mjs +++ b/test/customRules/dir4/.markdownlint-cli2.mjs @@ -2,6 +2,10 @@ const options = { "customRules": [ + (new URL( + "../node_modules/markdownlint-rule-sample-commonjs/sample-rule.cjs", + import.meta.url + )).toString(), (new URL( "../node_modules/markdownlint-rule-sample-module/sample-rule.mjs", import.meta.url diff --git a/test/markdownlint-cli2-test-cases.mjs b/test/markdownlint-cli2-test-cases.mjs index ac654fac..41f1c50b 100644 --- a/test/markdownlint-cli2-test-cases.mjs +++ b/test/markdownlint-cli2-test-cases.mjs @@ -19,7 +19,7 @@ const testCases = ({ host, invoke, absolute, - includeNoRequire, + includeNoImport, includeEnv, includeScript, includeRequire, @@ -38,7 +38,7 @@ const testCases = ({ stderrRe, pre, post, - noRequire, + noImport, usesRequire } = options; const usesEnv = Boolean(env); @@ -46,7 +46,7 @@ const testCases = ({ // eslint-disable-next-line unicorn/no-array-callback-reference const usesAbsolute = args.some(path.isAbsolute); if ( - (noRequire && !includeNoRequire) || + (noImport && !includeNoImport) || (usesEnv && !includeEnv) || (usesRequire && !includeRequire) || (usesScript && !includeScript) || @@ -58,7 +58,7 @@ const testCases = ({ t.plan(3); const directory = path.join(__dirname(import.meta), cwd || name); return ((pre || noop)(name, shadow) || Promise.resolve()). - then(invoke(directory, args, noRequire, env, script)). + then(invoke(directory, args, noImport, env, script)). then((result) => Promise.all([ result, fs.readFile( @@ -359,7 +359,7 @@ const testCases = ({ "name": "markdownlint-cjs-invalid", "args": [ ".*" ], "exitCode": 2, - "stderrRe": /Unable to require or import module '.*\.markdownlint\.cjs'/u, + "stderrRe": /Unable to import module '.*\.markdownlint\.cjs'/u, "usesRequire": true }); @@ -367,7 +367,7 @@ const testCases = ({ "name": "markdownlint-mjs-invalid", "args": [ ".*" ], "exitCode": 2, - "stderrRe": /Unable to require or import module '.*\.markdownlint\.mjs'/u, + "stderrRe": /Unable to import module '.*\.markdownlint\.mjs'/u, "usesRequire": true }); @@ -491,7 +491,7 @@ const testCases = ({ "name": "markdownlint-cli2-cjs-invalid", "args": [ ".*" ], "exitCode": 2, - "stderrRe": /'[^']*\.markdownlint-cli2\.cjs'.*Unable to require or import module '/u, + "stderrRe": /'[^']*\.markdownlint-cli2\.cjs'.*Unable to import module '/u, "usesRequire": true }); @@ -499,7 +499,7 @@ const testCases = ({ "name": "markdownlint-cli2-mjs-invalid", "args": [ ".*" ], "exitCode": 2, - "stderrRe": /'[^']*\.markdownlint-cli2\.mjs'.*Unable to require or import module '/u, + "stderrRe": /'[^']*\.markdownlint-cli2\.mjs'.*Unable to import module '/u, "usesRequire": true }); @@ -679,7 +679,7 @@ const testCases = ({ } const unableToParseJsonc = "Unable to parse JSONC content"; - const unableToRequireOrImport = "Unable to require or import module"; + const unableToRequireOrImport = "Unable to import module"; const invalidConfigFiles = [ [ "invalid.markdownlint-cli2.jsonc", unableToParseJsonc ], [ "invalid.markdownlint-cli2.cjs", unableToRequireOrImport ], @@ -813,7 +813,7 @@ const testCases = ({ "name": "customRules-missing", "args": [ ".*" ], "exitCode": 2, - "stderrRe": /Unable to require or import module 'missing-package'\./u, + "stderrRe": /Unable to import module 'missing-package'\./u, "usesRequire": true }); @@ -843,7 +843,7 @@ const testCases = ({ "name": "markdownItPlugins-missing", "args": [ ".*" ], "exitCode": 2, - "stderrRe": /Unable to require or import module 'missing-package'\./u, + "stderrRe": /Unable to import module 'missing-package'\./u, "usesRequire": true }); @@ -929,7 +929,7 @@ const testCases = ({ "name": "outputFormatters-missing", "args": [ ".*" ], "exitCode": 2, - "stderrRe": /Unable to require or import module 'missing-package'\./u, + "stderrRe": /Unable to import module 'missing-package'\./u, "usesRequire": true }); @@ -990,7 +990,7 @@ const testCases = ({ "args": [ "**/*.md" ], "exitCode": 1, "cwd": "markdownlint-cjs", - "noRequire": true + "noImport": true }); testCase({ @@ -998,7 +998,7 @@ const testCases = ({ "args": [ "**/*.md" ], "exitCode": 1, "cwd": "markdownlint-mjs", - "noRequire": true + "noImport": true }); testCase({ @@ -1006,7 +1006,7 @@ const testCases = ({ "args": [ "**/*.md" ], "exitCode": 1, "cwd": "markdownlint-cli2-cjs", - "noRequire": true + "noImport": true }); testCase({ @@ -1014,7 +1014,7 @@ const testCases = ({ "args": [ "**/*.md" ], "exitCode": 1, "cwd": "markdownlint-cli2-mjs", - "noRequire": true + "noImport": true }); testCase({ @@ -1022,7 +1022,7 @@ const testCases = ({ "args": [ "**/*.md" ], "exitCode": 1, "cwd": "customRules", - "noRequire": true + "noImport": true }); testCase({ @@ -1030,7 +1030,7 @@ const testCases = ({ "args": [ "**/*.md" ], "exitCode": 1, "cwd": "markdownItPlugins", - "noRequire": true + "noImport": true }); if (sameFileSystem) { diff --git a/test/markdownlint-cli2-test-exec.mjs b/test/markdownlint-cli2-test-exec.mjs index 25749219..bff481b2 100644 --- a/test/markdownlint-cli2-test-exec.mjs +++ b/test/markdownlint-cli2-test-exec.mjs @@ -10,7 +10,7 @@ import { __dirname } from "./esm-helpers.mjs"; const absolute = (rootDir, file) => path.join(rootDir, file); const repositoryPath = (name) => path.join(__dirname(import.meta), "..", name); -const invoke = (directory, args, noRequire, env, script) => async () => { +const invoke = (directory, args, noImport, env, script) => async () => { await fs.access(directory); return spawn( "node", @@ -34,7 +34,7 @@ testCases({ "host": "exec", invoke, absolute, - "includeNoRequire": false, + "includeNoImport": false, "includeEnv": true, "includeScript": true, "includeRequire": true, diff --git a/test/markdownlint-cli2-test-fs.mjs b/test/markdownlint-cli2-test-fs.mjs index 8306a1c2..8ca84531 100644 --- a/test/markdownlint-cli2-test-fs.mjs +++ b/test/markdownlint-cli2-test-fs.mjs @@ -9,7 +9,7 @@ const mockDirectory = "/mock"; const linesEndingWithNewLine = (lines) => lines.map((line) => `${line}\n`).join(""); -const invoke = (directory, args, noRequire) => () => { +const invoke = (directory, args, noImport) => () => { const stdouts = []; const stderrs = []; return markdownlintCli2({ @@ -17,7 +17,7 @@ const invoke = (directory, args, noRequire) => () => { "argv": args, "logMessage": (msg) => stdouts.push(msg), "logError": (msg) => stderrs.push(msg), - noRequire, + noImport, "fs": new FsMock(directory) }). then( @@ -40,7 +40,7 @@ testCases({ "host": "fs", invoke, absolute, - "includeNoRequire": true, + "includeNoImport": true, "includeEnv": false, "includeScript": false, "includeRequire": false, diff --git a/test/markdownlint-cli2-test-main.mjs b/test/markdownlint-cli2-test-main.mjs index 067e3bec..2f17c551 100644 --- a/test/markdownlint-cli2-test-main.mjs +++ b/test/markdownlint-cli2-test-main.mjs @@ -7,7 +7,7 @@ import testCases from "./markdownlint-cli2-test-cases.mjs"; const linesEndingWithNewLine = (lines) => lines.map((line) => `${line}\n`).join(""); -const invoke = (directory, args, noRequire) => () => { +const invoke = (directory, args, noImport) => () => { const stdouts = []; const stderrs = []; return markdownlintCli2({ @@ -15,7 +15,7 @@ const invoke = (directory, args, noRequire) => () => { "argv": args, "logMessage": (msg) => stdouts.push(msg), "logError": (msg) => stderrs.push(msg), - noRequire + noImport }). then( (exitCode) => exitCode, @@ -37,7 +37,7 @@ testCases({ "host": "main", invoke, absolute, - "includeNoRequire": true, + "includeNoImport": true, "includeEnv": false, "includeScript": false, "includeRequire": true, diff --git a/test/markdownlint-cli2-test.mjs b/test/markdownlint-cli2-test.mjs index 5e56419e..2f8dd6a9 100644 --- a/test/markdownlint-cli2-test.mjs +++ b/test/markdownlint-cli2-test.mjs @@ -475,7 +475,7 @@ test("custom fs, extension scenario for untitled", (t) => { writeFile } }, - "noRequire": true + "noImport": true }). then((exitCode) => { t.is(exitCode, 1); @@ -570,7 +570,7 @@ test("custom fs, using node:fs", (t) => { }); }); -test("custom fs, using node:fs and noRequire=false", (t) => { +test("custom fs, using node:fs and noImport=false", (t) => { t.plan(2); return markdownlintCli2({ "directory": "test/markdownlint-cjs", @@ -579,14 +579,14 @@ test("custom fs, using node:fs and noRequire=false", (t) => { "outputFormatters": [ [ outputFormatterLengthIs(t, 11) ] ] }, "fs": nodeFs, - "noRequire": false + "noImport": false }). then((exitCode) => { t.is(exitCode, 1); }); }); -test("custom fs, using node:fs and noRequire=true", (t) => { +test("custom fs, using node:fs and noImport=true", (t) => { t.plan(2); return markdownlintCli2({ "directory": "test/markdownlint-cjs", @@ -595,7 +595,7 @@ test("custom fs, using node:fs and noRequire=true", (t) => { "outputFormatters": [ [ outputFormatterLengthIs(t, 14) ] ] }, "fs": nodeFs, - "noRequire": true + "noImport": true }). then((exitCode) => { t.is(exitCode, 1); @@ -611,7 +611,7 @@ test("custom fs, using fsMock", (t) => { "outputFormatters": [ [ outputFormatterLengthIs(t, 10) ] ] }, "fs": new FsMock(path.join(__dirname(import.meta), "markdownlint-cli2-jsonc")), - "noRequire": true + "noImport": true }). then((exitCode) => { t.is(exitCode, 1); @@ -627,7 +627,7 @@ test("custom fs, using fsMock simulating symbolic links", (t) => { "outputFormatters": [ [ outputFormatterLengthIs(t, 10) ] ] }, "fs": new FsMock(path.join(__dirname(import.meta), "markdownlint-cli2-jsonc"), true), - "noRequire": true + "noImport": true }). then((exitCode) => { t.is(exitCode, 1); diff --git a/test/outputFormatters-module/.markdownlint-cli2.jsonc b/test/outputFormatters-module/.markdownlint-cli2.jsonc index f64f929a..3769a370 100644 --- a/test/outputFormatters-module/.markdownlint-cli2.jsonc +++ b/test/outputFormatters-module/.markdownlint-cli2.jsonc @@ -1,6 +1,8 @@ { "outputFormatters": [ [ "output-formatter-sample-commonjs" ], + [ "output-formatter-sample-module" ], + [ "./node_modules/output-formatter-sample-commonjs/sample-formatter.cjs" ], [ "./node_modules/output-formatter-sample-module/sample-formatter.mjs" ] ] } diff --git a/test/resolve-and-require-test.mjs b/test/resolve-module-test.mjs similarity index 63% rename from test/resolve-and-require-test.mjs rename to test/resolve-module-test.mjs index 54049592..2db0f549 100644 --- a/test/resolve-and-require-test.mjs +++ b/test/resolve-module-test.mjs @@ -3,7 +3,7 @@ import test from "ava"; import path from "node:path"; import { __dirname } from "./esm-helpers.mjs"; -import resolveAndRequire from "../resolve-and-require.mjs"; +import resolve from "../resolve-module.mjs"; import { createRequire } from "node:module"; const require = createRequire(import.meta.url); @@ -11,24 +11,24 @@ const require = createRequire(import.meta.url); test("built-in module", (t) => { t.plan(1); t.deepEqual( - require("node:fs"), - resolveAndRequire(require, "fs", [ __dirname(import.meta) ]) + require.resolve("node:fs"), + resolve(require, "node:fs", [ __dirname(import.meta) ]) ); }); test("locally-installed module", (t) => { t.plan(1); t.deepEqual( - require("micromatch"), - resolveAndRequire(require, "micromatch", [ __dirname(import.meta) ]) + require.resolve("micromatch"), + resolve(require, "micromatch", [ __dirname(import.meta) ]) ); }); test("relative (to __dirname(import.meta)) path to module", (t) => { t.plan(1); t.deepEqual( - require("./customRules/node_modules/markdownlint-rule-sample-commonjs"), - resolveAndRequire( + require.resolve("./customRules/node_modules/markdownlint-rule-sample-commonjs"), + resolve( require, "./customRules/node_modules/markdownlint-rule-sample-commonjs", [ __dirname(import.meta) ] @@ -40,12 +40,12 @@ test("module in alternate node_modules", (t) => { t.plan(2); t.throws( // @ts-ignore - () => require("markdownlint-rule-sample-commonjs"), + () => require.resolve("markdownlint-rule-sample-commonjs"), { "code": "MODULE_NOT_FOUND" } ); t.deepEqual( - require("./customRules/node_modules/markdownlint-rule-sample-commonjs"), - resolveAndRequire( + require.resolve("./customRules/node_modules/markdownlint-rule-sample-commonjs"), + resolve( require, "markdownlint-rule-sample-commonjs", [ path.join(__dirname(import.meta), "customRules") ] @@ -59,12 +59,12 @@ test("module in alternate node_modules and no require.resolve.paths", (t) => { delete require.resolve.paths; t.throws( // @ts-ignore - () => require("markdownlint-rule-sample-commonjs"), + () => require.resolve("markdownlint-rule-sample-commonjs"), { "code": "MODULE_NOT_FOUND" } ); t.deepEqual( - require("./customRules/node_modules/markdownlint-rule-sample-commonjs"), - resolveAndRequire( + require.resolve("./customRules/node_modules/markdownlint-rule-sample-commonjs"), + resolve( require, "markdownlint-rule-sample-commonjs", [ path.join(__dirname(import.meta), "customRules") ] @@ -79,20 +79,20 @@ test("module local, relative, and in alternate node_modules", (t) => { path.join(__dirname(import.meta), "customRules") ]; t.deepEqual( - require("micromatch"), - resolveAndRequire(require, "micromatch", dirs) + require.resolve("micromatch"), + resolve(require, "micromatch", dirs) ); t.deepEqual( - require("./customRules/node_modules/markdownlint-rule-sample-commonjs"), - resolveAndRequire( + require.resolve("./customRules/node_modules/markdownlint-rule-sample-commonjs"), + resolve( require, "./customRules/node_modules/markdownlint-rule-sample-commonjs", dirs ) ); t.deepEqual( - require("./customRules/node_modules/markdownlint-rule-sample-commonjs"), - resolveAndRequire( + require.resolve("./customRules/node_modules/markdownlint-rule-sample-commonjs"), + resolve( require, "markdownlint-rule-sample-commonjs", dirs diff --git a/test/snapshots/markdownlint-cli2-test-exec.mjs.md b/test/snapshots/markdownlint-cli2-test-exec.mjs.md index 8df1378b..314fb669 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.mjs.md +++ b/test/snapshots/markdownlint-cli2-test-exec.mjs.md @@ -2726,6 +2726,7 @@ Generated by [AVA](https://avajs.dev). dir3/hr.md:2 second-line Rule that reports an error for the second line␊ dir3/hr.md:3 sample-rule-commonjs Sample rule (commonjs) [Sample error for hr]␊ dir3/hr.md:3 sample-rule-module Sample rule (module) [Sample error for hr]␊ + dir4/hr.md:3 sample-rule-commonjs Sample rule (commonjs) [Sample error for hr]␊ dir4/hr.md:3 sample-rule-module Sample rule (module) [Sample error for hr]␊ viewme.md:1 every-n-lines Rule that reports an error every N lines [This rule threw an exception: getLineMetadata is not a function]␊ viewme.md:1 first-line Rule that reports an error for the first line␊ @@ -2738,7 +2739,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 9 file(s)␊ - Summary: 44 error(s)`, + Summary: 45 error(s)`, } ## customRules-pre-imported (exec) @@ -5705,6 +5706,16 @@ Generated by [AVA](https://avajs.dev). mjs: viewme.md 5 MD012/no-multiple-blanks␊ mjs: viewme.md 6 MD025/single-title/single-h1␊ mjs: viewme.md 12 MD019/no-multiple-space-atx␊ + mjs: viewme.md 14 MD047/single-trailing-newline␊ + cjs: viewme.md 3 MD009/no-trailing-spaces␊ + cjs: viewme.md 5 MD012/no-multiple-blanks␊ + cjs: viewme.md 6 MD025/single-title/single-h1␊ + cjs: viewme.md 12 MD019/no-multiple-space-atx␊ + cjs: viewme.md 14 MD047/single-trailing-newline␊ + mjs: viewme.md 3 MD009/no-trailing-spaces␊ + mjs: viewme.md 5 MD012/no-multiple-blanks␊ + mjs: viewme.md 6 MD025/single-title/single-h1␊ + mjs: viewme.md 12 MD019/no-multiple-space-atx␊ mjs: viewme.md 14 MD047/single-trailing-newline`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ diff --git a/test/snapshots/markdownlint-cli2-test-exec.mjs.snap b/test/snapshots/markdownlint-cli2-test-exec.mjs.snap index 3250a6be8e5943bf6094a1e60676be175317c74c..b09248bc12242a39b2b17fc62240e84880f83fba 100644 GIT binary patch delta 16994 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 delta 16994 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 Tl9?N-H~s$s<5j4Kk%a^RCS{( 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 z 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

Ooh^#oi9@TU(Kk!Wa-w-r?~c%M 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 RmCV1Wl(NnH(y&lq{}=K-_kI8X From 543127a7f8bfe165825ec300386c22b0b7b1fb60 Mon Sep 17 00:00:00 2001 From: David Anson Date: Wed, 18 Dec 2024 21:56:39 -0800 Subject: [PATCH 15/25] Update dependency: markdownlint to 0.37.2. --- doc/OutputFormatters.md | 2 +- package.json | 2 +- schema/markdownlint-cli2-config-schema.json | 4 +- schema/markdownlint-config-schema.json | 212 ++++++++++---------- webworker/webpack.config.cjs | 2 +- 5 files changed, 111 insertions(+), 111 deletions(-) diff --git a/doc/OutputFormatters.md b/doc/OutputFormatters.md index 3390e465..b240be6b 100644 --- a/doc/OutputFormatters.md +++ b/doc/OutputFormatters.md @@ -63,4 +63,4 @@ For a `.markdownlint-cli2.jsonc` like: [formatter-junit]: ../formatter-junit/markdownlint-cli2-formatter-junit.js [formatter-sarif]: ../formatter-sarif/markdownlint-cli2-formatter-sarif.js [markdownlint-cli2-formatter]: https://www.npmjs.com/search?q=keywords:markdownlint-cli2-formatter -[markdownlint-d-ts]: https://github.com/DavidAnson/markdownlint/blob/v0.37.1/lib/markdownlint.d.mts +[markdownlint-d-ts]: https://github.com/DavidAnson/markdownlint/blob/v0.37.2/lib/markdownlint.d.mts diff --git a/package.json b/package.json index b7e4cf7f..8312c193 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "globby": "14.0.2", "js-yaml": "4.1.0", "jsonc-parser": "3.3.1", - "markdownlint": "0.37.1", + "markdownlint": "0.37.2", "markdownlint-cli2-formatter-default": "0.0.5", "micromatch": "4.0.8" }, diff --git a/schema/markdownlint-cli2-config-schema.json b/schema/markdownlint-cli2-config-schema.json index b5856409..d6a3dda6 100644 --- a/schema/markdownlint-cli2-config-schema.json +++ b/schema/markdownlint-cli2-config-schema.json @@ -10,8 +10,8 @@ "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.16.0/schema/markdownlint-cli2-config-schema.json" }, "config": { - "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/schema/.markdownlint.jsonc", - "$ref": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.1/schema/markdownlint-config-schema.json", + "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/schema/.markdownlint.jsonc", + "$ref": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.2/schema/markdownlint-config-schema.json", "default": {} }, "customRules": { diff --git a/schema/markdownlint-config-schema.json b/schema/markdownlint-config-schema.json index 01d494dd..c430d8c7 100644 --- a/schema/markdownlint-config-schema.json +++ b/schema/markdownlint-config-schema.json @@ -1,13 +1,13 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.1/schema/markdownlint-config-schema.json", + "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.2/schema/markdownlint-config-schema.json", "title": "markdownlint configuration schema", "type": "object", "properties": { "$schema": { "description": "JSON Schema URI (expected by some editors)", "type": "string", - "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.1/schema/markdownlint-config-schema.json" + "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.2/schema/markdownlint-config-schema.json" }, "default": { "description": "Default state for all rules", @@ -23,17 +23,17 @@ "default": null }, "MD001": { - "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md001.md", + "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md001.md", "type": "boolean", "default": true }, "heading-increment": { - "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md001.md", + "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md001.md", "type": "boolean", "default": true }, "MD003": { - "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md003.md", + "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md003.md", "type": [ "boolean", "object" @@ -57,7 +57,7 @@ "additionalProperties": false }, "heading-style": { - "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md003.md", + "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md003.md", "type": [ "boolean", "object" @@ -81,7 +81,7 @@ "additionalProperties": false }, "MD004": { - "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md004.md", + "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md004.md", "type": [ "boolean", "object" @@ -104,7 +104,7 @@ "additionalProperties": false }, "ul-style": { - "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md004.md", + "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md004.md", "type": [ "boolean", "object" @@ -127,17 +127,17 @@ "additionalProperties": false }, "MD005": { - "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md005.md", + "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md005.md", "type": "boolean", "default": true }, "list-indent": { - "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md005.md", + "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md005.md", "type": "boolean", "default": true }, "MD007": { - "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md007.md", + "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md007.md", "type": [ "boolean", "object" @@ -165,7 +165,7 @@ "additionalProperties": false }, "ul-indent": { - "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md007.md", + "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md007.md", "type": [ "boolean", "object" @@ -193,7 +193,7 @@ "additionalProperties": false }, "MD009": { - "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md009.md", + "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md009.md", "type": [ "boolean", "object" @@ -220,7 +220,7 @@ "additionalProperties": false }, "no-trailing-spaces": { - "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md009.md", + "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md009.md", "type": [ "boolean", "object" @@ -247,7 +247,7 @@ "additionalProperties": false }, "MD010": { - "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md010.md", + "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md010.md", "type": [ "boolean", "object" @@ -277,7 +277,7 @@ "additionalProperties": false }, "no-hard-tabs": { - "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md010.md", + "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md010.md", "type": [ "boolean", "object" @@ -307,17 +307,17 @@ "additionalProperties": false }, "MD011": { - "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md011.md", + "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md011.md", "type": "boolean", "default": true }, "no-reversed-links": { - "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md011.md", + "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md011.md", "type": "boolean", "default": true }, "MD012": { - "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md012.md", + "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md012.md", "type": [ "boolean", "object" @@ -334,7 +334,7 @@ "additionalProperties": false }, "no-multiple-blanks": { - "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md012.md", + "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md012.md", "type": [ "boolean", "object" @@ -351,7 +351,7 @@ "additionalProperties": false }, "MD013": { - "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md013.md", + "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md013.md", "type": [ "boolean", "object" @@ -405,7 +405,7 @@ "additionalProperties": false }, "line-length": { - "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md013.md", + "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md013.md", "type": [ "boolean", "object" @@ -459,57 +459,57 @@ "additionalProperties": false }, "MD014": { - "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md014.md", + "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md014.md", "type": "boolean", "default": true }, "commands-show-output": { - "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md014.md", + "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md014.md", "type": "boolean", "default": true }, "MD018": { - "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md018.md", + "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md018.md", "type": "boolean", "default": true }, "no-missing-space-atx": { - "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md018.md", + "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md018.md", "type": "boolean", "default": true }, "MD019": { - "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md019.md", + "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md019.md", "type": "boolean", "default": true }, "no-multiple-space-atx": { - "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md019.md", + "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md019.md", "type": "boolean", "default": true }, "MD020": { - "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md020.md", + "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md020.md", "type": "boolean", "default": true }, "no-missing-space-closed-atx": { - "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md020.md", + "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md020.md", "type": "boolean", "default": true }, "MD021": { - "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md021.md", + "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md021.md", "type": "boolean", "default": true }, "no-multiple-space-closed-atx": { - "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md021.md", + "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md021.md", "type": "boolean", "default": true }, "MD022": { - "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md022.md", + "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md022.md", "type": [ "boolean", "object" @@ -544,7 +544,7 @@ "additionalProperties": false }, "blanks-around-headings": { - "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md022.md", + "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md022.md", "type": [ "boolean", "object" @@ -579,17 +579,17 @@ "additionalProperties": false }, "MD023": { - "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md023.md", + "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md023.md", "type": "boolean", "default": true }, "heading-start-left": { - "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md023.md", + "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md023.md", "type": "boolean", "default": true }, "MD024": { - "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md024.md", + "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md024.md", "type": [ "boolean", "object" @@ -605,7 +605,7 @@ "additionalProperties": false }, "no-duplicate-heading": { - "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md024.md", + "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md024.md", "type": [ "boolean", "object" @@ -621,7 +621,7 @@ "additionalProperties": false }, "MD025": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md025.md", "type": [ "boolean", "object" @@ -644,7 +644,7 @@ "additionalProperties": false }, "single-title": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md025.md", "type": [ "boolean", "object" @@ -667,7 +667,7 @@ "additionalProperties": false }, "single-h1": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md025.md", "type": [ "boolean", "object" @@ -690,7 +690,7 @@ "additionalProperties": false }, "MD026": { - "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md026.md", + "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md026.md", "type": [ "boolean", "object" @@ -706,7 +706,7 @@ "additionalProperties": false }, "no-trailing-punctuation": { - "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md026.md", + "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md026.md", "type": [ "boolean", "object" @@ -722,27 +722,27 @@ "additionalProperties": false }, "MD027": { - "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md027.md", + "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md027.md", "type": "boolean", "default": true }, "no-multiple-space-blockquote": { - "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md027.md", + "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md027.md", "type": "boolean", "default": true }, "MD028": { - "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md028.md", + "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md028.md", "type": "boolean", "default": true }, "no-blanks-blockquote": { - "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md028.md", + "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md028.md", "type": "boolean", "default": true }, "MD029": { - "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md029.md", + "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md029.md", "type": [ "boolean", "object" @@ -764,7 +764,7 @@ "additionalProperties": false }, "ol-prefix": { - "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md029.md", + "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md029.md", "type": [ "boolean", "object" @@ -786,7 +786,7 @@ "additionalProperties": false }, "MD030": { - "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md030.md", + "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md030.md", "type": [ "boolean", "object" @@ -821,7 +821,7 @@ "additionalProperties": false }, "list-marker-space": { - "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md030.md", + "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md030.md", "type": [ "boolean", "object" @@ -856,7 +856,7 @@ "additionalProperties": false }, "MD031": { - "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md031.md", + "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md031.md", "type": [ "boolean", "object" @@ -872,7 +872,7 @@ "additionalProperties": false }, "blanks-around-fences": { - "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md031.md", + "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md031.md", "type": [ "boolean", "object" @@ -888,17 +888,17 @@ "additionalProperties": false }, "MD032": { - "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md032.md", + "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md032.md", "type": "boolean", "default": true }, "blanks-around-lists": { - "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md032.md", + "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md032.md", "type": "boolean", "default": true }, "MD033": { - "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md033.md", + "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md033.md", "type": [ "boolean", "object" @@ -917,7 +917,7 @@ "additionalProperties": false }, "no-inline-html": { - "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md033.md", + "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md033.md", "type": [ "boolean", "object" @@ -936,17 +936,17 @@ "additionalProperties": false }, "MD034": { - "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md034.md", + "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md034.md", "type": "boolean", "default": true }, "no-bare-urls": { - "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md034.md", + "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md034.md", "type": "boolean", "default": true }, "MD035": { - "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md035.md", + "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md035.md", "type": [ "boolean", "object" @@ -962,7 +962,7 @@ "additionalProperties": false }, "hr-style": { - "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md035.md", + "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md035.md", "type": [ "boolean", "object" @@ -978,7 +978,7 @@ "additionalProperties": false }, "MD036": { - "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md036.md", + "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md036.md", "type": [ "boolean", "object" @@ -994,7 +994,7 @@ "additionalProperties": false }, "no-emphasis-as-heading": { - "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md036.md", + "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md036.md", "type": [ "boolean", "object" @@ -1010,37 +1010,37 @@ "additionalProperties": false }, "MD037": { - "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md037.md", + "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md037.md", "type": "boolean", "default": true }, "no-space-in-emphasis": { - "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md037.md", + "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md037.md", "type": "boolean", "default": true }, "MD038": { - "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md038.md", + "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md038.md", "type": "boolean", "default": true }, "no-space-in-code": { - "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md038.md", + "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md038.md", "type": "boolean", "default": true }, "MD039": { - "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md039.md", + "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md039.md", "type": "boolean", "default": true }, "no-space-in-links": { - "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md039.md", + "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md039.md", "type": "boolean", "default": true }, "MD040": { - "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md040.md", + "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md040.md", "type": [ "boolean", "object" @@ -1064,7 +1064,7 @@ "additionalProperties": false }, "fenced-code-language": { - "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md040.md", + "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md040.md", "type": [ "boolean", "object" @@ -1088,7 +1088,7 @@ "additionalProperties": false }, "MD041": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md041.md", "type": [ "boolean", "object" @@ -1111,7 +1111,7 @@ "additionalProperties": false }, "first-line-heading": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md041.md", "type": [ "boolean", "object" @@ -1134,7 +1134,7 @@ "additionalProperties": false }, "first-line-h1": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md041.md", "type": [ "boolean", "object" @@ -1157,17 +1157,17 @@ "additionalProperties": false }, "MD042": { - "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md042.md", + "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md042.md", "type": "boolean", "default": true }, "no-empty-links": { - "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md042.md", + "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md042.md", "type": "boolean", "default": true }, "MD043": { - "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md043.md", + "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md043.md", "type": [ "boolean", "object" @@ -1192,7 +1192,7 @@ "additionalProperties": false }, "required-headings": { - "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md043.md", + "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md043.md", "type": [ "boolean", "object" @@ -1217,7 +1217,7 @@ "additionalProperties": false }, "MD044": { - "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md044.md", + "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md044.md", "type": [ "boolean", "object" @@ -1246,7 +1246,7 @@ "additionalProperties": false }, "proper-names": { - "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md044.md", + "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md044.md", "type": [ "boolean", "object" @@ -1275,17 +1275,17 @@ "additionalProperties": false }, "MD045": { - "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md045.md", + "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md045.md", "type": "boolean", "default": true }, "no-alt-text": { - "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md045.md", + "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md045.md", "type": "boolean", "default": true }, "MD046": { - "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md046.md", + "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md046.md", "type": [ "boolean", "object" @@ -1306,7 +1306,7 @@ "additionalProperties": false }, "code-block-style": { - "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md046.md", + "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md046.md", "type": [ "boolean", "object" @@ -1327,17 +1327,17 @@ "additionalProperties": false }, "MD047": { - "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md047.md", + "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md047.md", "type": "boolean", "default": true }, "single-trailing-newline": { - "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md047.md", + "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md047.md", "type": "boolean", "default": true }, "MD048": { - "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md048.md", + "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md048.md", "type": [ "boolean", "object" @@ -1358,7 +1358,7 @@ "additionalProperties": false }, "code-fence-style": { - "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md048.md", + "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md048.md", "type": [ "boolean", "object" @@ -1379,7 +1379,7 @@ "additionalProperties": false }, "MD049": { - "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md049.md", + "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md049.md", "type": [ "boolean", "object" @@ -1400,7 +1400,7 @@ "additionalProperties": false }, "emphasis-style": { - "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md049.md", + "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md049.md", "type": [ "boolean", "object" @@ -1421,7 +1421,7 @@ "additionalProperties": false }, "MD050": { - "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md050.md", + "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md050.md", "type": [ "boolean", "object" @@ -1442,7 +1442,7 @@ "additionalProperties": false }, "strong-style": { - "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md050.md", + "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md050.md", "type": [ "boolean", "object" @@ -1463,7 +1463,7 @@ "additionalProperties": false }, "MD051": { - "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md051.md", + "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md051.md", "type": [ "boolean", "object" @@ -1479,7 +1479,7 @@ "additionalProperties": false }, "link-fragments": { - "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md051.md", + "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md051.md", "type": [ "boolean", "object" @@ -1495,7 +1495,7 @@ "additionalProperties": false }, "MD052": { - "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md052.md", + "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md052.md", "type": [ "boolean", "object" @@ -1511,7 +1511,7 @@ "additionalProperties": false }, "reference-links-images": { - "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md052.md", + "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md052.md", "type": [ "boolean", "object" @@ -1527,7 +1527,7 @@ "additionalProperties": false }, "MD053": { - "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md053.md", + "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md053.md", "type": [ "boolean", "object" @@ -1548,7 +1548,7 @@ "additionalProperties": false }, "link-image-reference-definitions": { - "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md053.md", + "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md053.md", "type": [ "boolean", "object" @@ -1569,7 +1569,7 @@ "additionalProperties": false }, "MD054": { - "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md054.md", + "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md054.md", "type": [ "boolean", "object" @@ -1610,7 +1610,7 @@ "additionalProperties": false }, "link-image-style": { - "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md054.md", + "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md054.md", "type": [ "boolean", "object" @@ -1651,7 +1651,7 @@ "additionalProperties": false }, "MD055": { - "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md055.md", + "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md055.md", "type": [ "boolean", "object" @@ -1674,7 +1674,7 @@ "additionalProperties": false }, "table-pipe-style": { - "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md055.md", + "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md055.md", "type": [ "boolean", "object" @@ -1697,22 +1697,22 @@ "additionalProperties": false }, "MD056": { - "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md056.md", + "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md056.md", "type": "boolean", "default": true }, "table-column-count": { - "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md056.md", + "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md056.md", "type": "boolean", "default": true }, "MD058": { - "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md058.md", + "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md058.md", "type": "boolean", "default": true }, "blanks-around-tables": { - "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.1/doc/md058.md", + "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md058.md", "type": "boolean", "default": true }, diff --git a/webworker/webpack.config.cjs b/webworker/webpack.config.cjs index d63f20e2..4b2c0732 100644 --- a/webworker/webpack.config.cjs +++ b/webworker/webpack.config.cjs @@ -48,7 +48,7 @@ module.exports = { }) ], "resolve": { - "conditionNames": [ "import", "require" ], + "conditionNames": [ "markdownlint-imports-node", "..." ], "fallback": { "buffer": false, "fs": false, From 827a3b0cddee15695725ca3ead907ecf965849e9 Mon Sep 17 00:00:00 2001 From: David Anson Date: Wed, 18 Dec 2024 22:06:10 -0800 Subject: [PATCH 16/25] Add sentences-per-line third-party custom rule to Dockerfile-rules. --- docker/Dockerfile-rules | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile-rules b/docker/Dockerfile-rules index e1b4375e..27308351 100644 --- a/docker/Dockerfile-rules +++ b/docker/Dockerfile-rules @@ -22,6 +22,7 @@ RUN npm install --global --no-package-lock --production \ markdownlint-rule-titlecase \ markdownlint-rule-trace-template-headers \ markdownlint-rules-foliant \ - markdownlint-rules-grav-pages + markdownlint-rules-grav-pages \ + sentences-per-line USER node From 55c26613eafa3b2e3a915d6a0e50003f1b6d295e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:08:32 +0000 Subject: [PATCH 17/25] Bump chalk from 5.3.0 to 5.4.0 in /formatter-pretty Bumps [chalk](https://github.com/chalk/chalk) from 5.3.0 to 5.4.0. - [Release notes](https://github.com/chalk/chalk/releases) - [Commits](https://github.com/chalk/chalk/compare/v5.3.0...v5.4.0) --- updated-dependencies: - dependency-name: chalk dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- formatter-pretty/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/formatter-pretty/package.json b/formatter-pretty/package.json index eb8a0098..3b834d6f 100644 --- a/formatter-pretty/package.json +++ b/formatter-pretty/package.json @@ -22,7 +22,7 @@ "markdownlint-cli2": ">=0.0.4" }, "dependencies": { - "chalk": "5.3.0", + "chalk": "5.4.0", "terminal-link": "3.0.0" }, "keywords": [ From c2bc2a0b45ae692687bade25cc6d8960a303a895 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 15:29:59 +0000 Subject: [PATCH 18/25] Bump eslint-plugin-n from 17.15.0 to 17.15.1 Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 17.15.0 to 17.15.1. - [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.15.0...v17.15.1) --- updated-dependencies: - dependency-name: eslint-plugin-n dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8312c193..0bcf8da3 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "del": "8.0.0", "eslint": "9.17.0", "eslint-plugin-jsdoc": "50.6.1", - "eslint-plugin-n": "17.15.0", + "eslint-plugin-n": "17.15.1", "eslint-plugin-unicorn": "56.0.1", "markdown-it-emoji": "3.0.0", "markdown-it-for-inline": "2.0.1", From 7b3ac509c14f391dd108652798d69dee439fe0ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 15:39:57 +0000 Subject: [PATCH 19/25] Bump chalk from 5.4.0 to 5.4.1 in /formatter-pretty Bumps [chalk](https://github.com/chalk/chalk) from 5.4.0 to 5.4.1. - [Release notes](https://github.com/chalk/chalk/releases) - [Commits](https://github.com/chalk/chalk/compare/v5.4.0...v5.4.1) --- updated-dependencies: - dependency-name: chalk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- formatter-pretty/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/formatter-pretty/package.json b/formatter-pretty/package.json index 3b834d6f..ef531acf 100644 --- a/formatter-pretty/package.json +++ b/formatter-pretty/package.json @@ -22,7 +22,7 @@ "markdownlint-cli2": ">=0.0.4" }, "dependencies": { - "chalk": "5.4.0", + "chalk": "5.4.1", "terminal-link": "3.0.0" }, "keywords": [ From 6f6d7e8224398777a62234644319869bf66d2baf Mon Sep 17 00:00:00 2001 From: David Anson Date: Mon, 23 Dec 2024 22:48:32 +0000 Subject: [PATCH 20/25] Reword configuration file name exception text for clarity (fixes #481). --- markdownlint-cli2.mjs | 5 +++-- test/markdownlint-cli2-test-cases.mjs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/markdownlint-cli2.mjs b/markdownlint-cli2.mjs index f3d046d9..2aaeebac 100755 --- a/markdownlint-cli2.mjs +++ b/markdownlint-cli2.mjs @@ -172,8 +172,9 @@ const readOptionsOrConfig = async (configPath, fs, noImport) => { config = await importModule(dirname, basename, noImport); } else { throw new Error( - "File name should be (or end with) one of the supported types " + - "(e.g., '.markdownlint.json' or 'example.markdownlint-cli2.jsonc')." + "Configuration file should be one of the supported names " + + "(e.g., '.markdownlint-cli2.jsonc') or a prefix with a supported name " + + "(e.g., 'example.markdownlint-cli2.jsonc')." ); } } catch (error) { diff --git a/test/markdownlint-cli2-test-cases.mjs b/test/markdownlint-cli2-test-cases.mjs index 41f1c50b..cd0278fe 100644 --- a/test/markdownlint-cli2-test-cases.mjs +++ b/test/markdownlint-cli2-test-cases.mjs @@ -722,7 +722,7 @@ const testCases = ({ "args": [ "--config", "cfg/unrecognized.jsonc", "**/*.md" ], "exitCode": 2, "stderrRe": - /Unable to use configuration file '[^']*cfg\/unrecognized\.jsonc'; File name should be \(or end with\) one of the supported types \(e\.g\., '\.markdownlint\.json' or 'example\.markdownlint-cli2\.jsonc'\)\./u, + /Unable to use configuration file '[^']*cfg\/unrecognized\.jsonc'; Configuration file should be one of the supported names \(e\.g\., '\.markdownlint-cli2\.jsonc'\) or a prefix with a supported name \(e\.g\., 'example\.markdownlint-cli2\.jsonc'\)\./u, "cwd": "config-files" }); From 0439c8adea14508c6ec0a142bc5dbc3d1efb2617 Mon Sep 17 00:00:00 2001 From: David Anson Date: Wed, 25 Dec 2024 19:48:51 -0800 Subject: [PATCH 21/25] Update to version 0.17.0. --- .pre-commit-hooks.yaml | 3 --- CHANGELOG.md | 6 +++++ README.md | 6 ++--- markdownlint-cli2.mjs | 2 +- package.json | 2 +- schema/markdownlint-cli2-config-schema.json | 30 ++++++++++----------- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/.pre-commit-hooks.yaml b/.pre-commit-hooks.yaml index 9df01f4a..f1bca628 100644 --- a/.pre-commit-hooks.yaml +++ b/.pre-commit-hooks.yaml @@ -4,18 +4,15 @@ entry: markdownlint-cli2 language: node types: [markdown] - minimum_pre_commit_version: 0.16.0 - id: markdownlint-cli2-docker name: markdownlint-cli2-docker description: "Checks the style of Markdown/CommonMark files." entry: davidanson/markdownlint-cli2 language: docker_image types: [markdown] - minimum_pre_commit_version: 0.16.0 - id: markdownlint-cli2-rules-docker name: markdownlint-cli2-rules-docker description: "Checks the style of Markdown/CommonMark files." entry: davidanson/markdownlint-cli2-rules language: docker_image types: [markdown] - minimum_pre_commit_version: 0.16.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index a33dafe8..de6dbc8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.17.0 + +- Convert to ECMAScript modules +- Use import() when loading modules +- Update dependencies (including `markdownlint`) + ## 0.16.0 - Try not to use require for modules (due to Node 22.12) diff --git a/README.md b/README.md index 9d4d97bd..a78841e3 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ A container image [`davidanson/markdownlint-cli2`][docker-hub-markdownlint-cli2] can also be used (e.g., as part of a CI pipeline): ```bash -docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.16.0 "**/*.md" "#node_modules" +docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.17.0 "**/*.md" "#node_modules" ``` Notes: @@ -166,7 +166,7 @@ Notes: - A custom working directory can be specified with Docker's `-w` flag: ```bash - docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.16.0 "**/*.md" "#node_modules" + docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.17.0 "**/*.md" "#node_modules" ``` For convenience, the container image @@ -413,7 +413,7 @@ reference to the `repos` list in that project's `.pre-commit-config.yaml` like: ```yaml - repo: https://github.com/DavidAnson/markdownlint-cli2 - rev: v0.16.0 + rev: v0.17.0 hooks: - id: markdownlint-cli2 ``` diff --git a/markdownlint-cli2.mjs b/markdownlint-cli2.mjs index 2aaeebac..b8a13fce 100755 --- a/markdownlint-cli2.mjs +++ b/markdownlint-cli2.mjs @@ -22,7 +22,7 @@ import yamlParse from "./parsers/yaml-parse.mjs"; // Variables const packageName = "markdownlint-cli2"; -const packageVersion = "0.16.0"; +const packageVersion = "0.17.0"; const libraryName = "markdownlint"; const libraryVersion = getVersion(); const bannerMessage = `${packageName} v${packageVersion} (${libraryName} v${libraryVersion})`; diff --git a/package.json b/package.json index 0bcf8da3..a0aee5cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "markdownlint-cli2", - "version": "0.16.0", + "version": "0.17.0", "description": "A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the `markdownlint` library", "author": { "name": "David Anson", diff --git a/schema/markdownlint-cli2-config-schema.json b/schema/markdownlint-cli2-config-schema.json index d6a3dda6..40a35160 100644 --- a/schema/markdownlint-cli2-config-schema.json +++ b/schema/markdownlint-cli2-config-schema.json @@ -1,13 +1,13 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.16.0/schema/markdownlint-cli2-config-schema.json", + "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.17.0/schema/markdownlint-cli2-config-schema.json", "title": "markdownlint-cli2 configuration schema", "type": "object", "properties": { "$schema": { "description": "JSON Schema URI (expected by some editors)", "type": "string", - "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.16.0/schema/markdownlint-cli2-config-schema.json" + "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.17.0/schema/markdownlint-cli2-config-schema.json" }, "config": { "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/schema/.markdownlint.jsonc", @@ -15,7 +15,7 @@ "default": {} }, "customRules": { - "description": "Module names or paths of custom rules to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Module names or paths of custom rules to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -25,18 +25,18 @@ } }, "fix": { - "description": "Whether to enable fixing of linting errors reported by rules that emit fix information : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to enable fixing of linting errors reported by rules that emit fix information : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "frontMatter": { - "description": "Regular expression used to match and ignore any front matter at the beginning of a document : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Regular expression used to match and ignore any front matter at the beginning of a document : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "string", "minLength": 1, "default": "" }, "gitignore": { - "description": "Whether to ignore files referenced by .gitignore (or glob expression) (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to ignore files referenced by .gitignore (or glob expression) (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": [ "boolean", "string" @@ -44,7 +44,7 @@ "default": false }, "globs": { - "description": "Glob expressions to include when linting (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Glob expressions to include when linting (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -54,7 +54,7 @@ } }, "ignores": { - "description": "Glob expressions to ignore when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Glob expressions to ignore when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -64,7 +64,7 @@ } }, "markdownItPlugins": { - "description": "markdown-it plugins to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "markdown-it plugins to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -84,7 +84,7 @@ } }, "modulePaths": { - "description": "Additional paths to resolve module locations from : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Additional paths to resolve module locations from : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -94,22 +94,22 @@ } }, "noBanner": { - "description": "Whether to disable the display of the banner message and version numbers on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable the display of the banner message and version numbers on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "noInlineConfig": { - "description": "Whether to disable support of HTML comments within Markdown content : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable support of HTML comments within Markdown content : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "noProgress": { - "description": "Whether to disable the display of progress on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable the display of progress on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "outputFormatters": { - "description": "Output formatters to load and use to customize markdownlint-cli2 output (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Output formatters to load and use to customize markdownlint-cli2 output (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -129,7 +129,7 @@ } }, "showFound": { - "description": "Whether to show the list of found files on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.16.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to show the list of found files on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false } From 08bb5271fb6e9969a09e280461dade1e249263c8 Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 31 Dec 2024 04:04:40 +0000 Subject: [PATCH 22/25] Add CI job that verifies tests pass when using pnpm (vs. npm). --- .github/workflows/ci.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a15be04..b399bee8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,6 +30,23 @@ jobs: - name: Run All Validations run: npm run ci + run-tests-pnpm: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Use pnpm latest + uses: pnpm/action-setup@v4 + with: + version: latest + - name: Use Node.js latest + uses: actions/setup-node@v4 + with: + node-version: latest + - name: Install dependencies + run: pnpm install + - name: Run CI Tests + run: npm test + run-tests-webworker: runs-on: ubuntu-latest steps: From 3692f4bea02050fe009b3426ff40d91602c8c977 Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 31 Dec 2024 04:12:51 +0000 Subject: [PATCH 23/25] Copy formatter-pretty dependencies to package.json as devDependencies to get tests passing under pnpm. --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a0aee5cd..5c0ca54e 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,7 @@ "ajv": "8.17.1", "ava": "6.2.0", "c8": "10.1.3", + "chalk": "5.4.1", "cpy": "11.1.0", "cpy-cli": "5.0.0", "del": "8.0.0", @@ -107,7 +108,8 @@ "markdownlint-cli2-formatter-template": "0.0.2", "markdownlint-rule-extended-ascii": "0.1.0", "nano-spawn": "0.2.0", - "npm-run-all": "4.1.5" + "npm-run-all": "4.1.5", + "terminal-link": "3.0.0" }, "keywords": [ "markdown", From 35b2bac2da0bec59bf197f79aa070d88bdbfd618 Mon Sep 17 00:00:00 2001 From: David Anson Date: Mon, 30 Dec 2024 20:49:38 -0800 Subject: [PATCH 24/25] Update dependency: markdownlint to 0.37.3. --- doc/OutputFormatters.md | 2 +- package.json | 2 +- schema/markdownlint-cli2-config-schema.json | 4 +- schema/markdownlint-config-schema.json | 212 ++++++++++---------- 4 files changed, 110 insertions(+), 110 deletions(-) diff --git a/doc/OutputFormatters.md b/doc/OutputFormatters.md index b240be6b..d7ffcd2c 100644 --- a/doc/OutputFormatters.md +++ b/doc/OutputFormatters.md @@ -63,4 +63,4 @@ For a `.markdownlint-cli2.jsonc` like: [formatter-junit]: ../formatter-junit/markdownlint-cli2-formatter-junit.js [formatter-sarif]: ../formatter-sarif/markdownlint-cli2-formatter-sarif.js [markdownlint-cli2-formatter]: https://www.npmjs.com/search?q=keywords:markdownlint-cli2-formatter -[markdownlint-d-ts]: https://github.com/DavidAnson/markdownlint/blob/v0.37.2/lib/markdownlint.d.mts +[markdownlint-d-ts]: https://github.com/DavidAnson/markdownlint/blob/v0.37.3/lib/markdownlint.d.mts diff --git a/package.json b/package.json index 5c0ca54e..a937ef62 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "globby": "14.0.2", "js-yaml": "4.1.0", "jsonc-parser": "3.3.1", - "markdownlint": "0.37.2", + "markdownlint": "0.37.3", "markdownlint-cli2-formatter-default": "0.0.5", "micromatch": "4.0.8" }, diff --git a/schema/markdownlint-cli2-config-schema.json b/schema/markdownlint-cli2-config-schema.json index 40a35160..df511396 100644 --- a/schema/markdownlint-cli2-config-schema.json +++ b/schema/markdownlint-cli2-config-schema.json @@ -10,8 +10,8 @@ "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.17.0/schema/markdownlint-cli2-config-schema.json" }, "config": { - "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/schema/.markdownlint.jsonc", - "$ref": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.2/schema/markdownlint-config-schema.json", + "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/schema/.markdownlint.jsonc", + "$ref": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.3/schema/markdownlint-config-schema.json", "default": {} }, "customRules": { diff --git a/schema/markdownlint-config-schema.json b/schema/markdownlint-config-schema.json index c430d8c7..7b4723d6 100644 --- a/schema/markdownlint-config-schema.json +++ b/schema/markdownlint-config-schema.json @@ -1,13 +1,13 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.2/schema/markdownlint-config-schema.json", + "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.3/schema/markdownlint-config-schema.json", "title": "markdownlint configuration schema", "type": "object", "properties": { "$schema": { "description": "JSON Schema URI (expected by some editors)", "type": "string", - "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.2/schema/markdownlint-config-schema.json" + "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.37.3/schema/markdownlint-config-schema.json" }, "default": { "description": "Default state for all rules", @@ -23,17 +23,17 @@ "default": null }, "MD001": { - "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md001.md", + "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md001.md", "type": "boolean", "default": true }, "heading-increment": { - "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md001.md", + "description": "MD001/heading-increment : Heading levels should only increment by one level at a time : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md001.md", "type": "boolean", "default": true }, "MD003": { - "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md003.md", + "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md003.md", "type": [ "boolean", "object" @@ -57,7 +57,7 @@ "additionalProperties": false }, "heading-style": { - "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md003.md", + "description": "MD003/heading-style : Heading style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md003.md", "type": [ "boolean", "object" @@ -81,7 +81,7 @@ "additionalProperties": false }, "MD004": { - "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md004.md", + "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md004.md", "type": [ "boolean", "object" @@ -104,7 +104,7 @@ "additionalProperties": false }, "ul-style": { - "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md004.md", + "description": "MD004/ul-style : Unordered list style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md004.md", "type": [ "boolean", "object" @@ -127,17 +127,17 @@ "additionalProperties": false }, "MD005": { - "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md005.md", + "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md005.md", "type": "boolean", "default": true }, "list-indent": { - "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md005.md", + "description": "MD005/list-indent : Inconsistent indentation for list items at the same level : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md005.md", "type": "boolean", "default": true }, "MD007": { - "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md007.md", + "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md007.md", "type": [ "boolean", "object" @@ -165,7 +165,7 @@ "additionalProperties": false }, "ul-indent": { - "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md007.md", + "description": "MD007/ul-indent : Unordered list indentation : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md007.md", "type": [ "boolean", "object" @@ -193,7 +193,7 @@ "additionalProperties": false }, "MD009": { - "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md009.md", + "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md009.md", "type": [ "boolean", "object" @@ -220,7 +220,7 @@ "additionalProperties": false }, "no-trailing-spaces": { - "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md009.md", + "description": "MD009/no-trailing-spaces : Trailing spaces : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md009.md", "type": [ "boolean", "object" @@ -247,7 +247,7 @@ "additionalProperties": false }, "MD010": { - "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md010.md", + "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md010.md", "type": [ "boolean", "object" @@ -277,7 +277,7 @@ "additionalProperties": false }, "no-hard-tabs": { - "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md010.md", + "description": "MD010/no-hard-tabs : Hard tabs : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md010.md", "type": [ "boolean", "object" @@ -307,17 +307,17 @@ "additionalProperties": false }, "MD011": { - "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md011.md", + "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md011.md", "type": "boolean", "default": true }, "no-reversed-links": { - "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md011.md", + "description": "MD011/no-reversed-links : Reversed link syntax : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md011.md", "type": "boolean", "default": true }, "MD012": { - "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md012.md", + "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md012.md", "type": [ "boolean", "object" @@ -334,7 +334,7 @@ "additionalProperties": false }, "no-multiple-blanks": { - "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md012.md", + "description": "MD012/no-multiple-blanks : Multiple consecutive blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md012.md", "type": [ "boolean", "object" @@ -351,7 +351,7 @@ "additionalProperties": false }, "MD013": { - "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md013.md", + "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md013.md", "type": [ "boolean", "object" @@ -405,7 +405,7 @@ "additionalProperties": false }, "line-length": { - "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md013.md", + "description": "MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md013.md", "type": [ "boolean", "object" @@ -459,57 +459,57 @@ "additionalProperties": false }, "MD014": { - "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md014.md", + "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md014.md", "type": "boolean", "default": true }, "commands-show-output": { - "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md014.md", + "description": "MD014/commands-show-output : Dollar signs used before commands without showing output : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md014.md", "type": "boolean", "default": true }, "MD018": { - "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md018.md", + "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md018.md", "type": "boolean", "default": true }, "no-missing-space-atx": { - "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md018.md", + "description": "MD018/no-missing-space-atx : No space after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md018.md", "type": "boolean", "default": true }, "MD019": { - "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md019.md", + "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md019.md", "type": "boolean", "default": true }, "no-multiple-space-atx": { - "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md019.md", + "description": "MD019/no-multiple-space-atx : Multiple spaces after hash on atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md019.md", "type": "boolean", "default": true }, "MD020": { - "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md020.md", + "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md020.md", "type": "boolean", "default": true }, "no-missing-space-closed-atx": { - "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md020.md", + "description": "MD020/no-missing-space-closed-atx : No space inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md020.md", "type": "boolean", "default": true }, "MD021": { - "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md021.md", + "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md021.md", "type": "boolean", "default": true }, "no-multiple-space-closed-atx": { - "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md021.md", + "description": "MD021/no-multiple-space-closed-atx : Multiple spaces inside hashes on closed atx style heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md021.md", "type": "boolean", "default": true }, "MD022": { - "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md022.md", + "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md022.md", "type": [ "boolean", "object" @@ -544,7 +544,7 @@ "additionalProperties": false }, "blanks-around-headings": { - "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md022.md", + "description": "MD022/blanks-around-headings : Headings should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md022.md", "type": [ "boolean", "object" @@ -579,17 +579,17 @@ "additionalProperties": false }, "MD023": { - "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md023.md", + "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md023.md", "type": "boolean", "default": true }, "heading-start-left": { - "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md023.md", + "description": "MD023/heading-start-left : Headings must start at the beginning of the line : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md023.md", "type": "boolean", "default": true }, "MD024": { - "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md024.md", + "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md024.md", "type": [ "boolean", "object" @@ -605,7 +605,7 @@ "additionalProperties": false }, "no-duplicate-heading": { - "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md024.md", + "description": "MD024/no-duplicate-heading : Multiple headings with the same content : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md024.md", "type": [ "boolean", "object" @@ -621,7 +621,7 @@ "additionalProperties": false }, "MD025": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md025.md", "type": [ "boolean", "object" @@ -644,7 +644,7 @@ "additionalProperties": false }, "single-title": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md025.md", "type": [ "boolean", "object" @@ -667,7 +667,7 @@ "additionalProperties": false }, "single-h1": { - "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md025.md", + "description": "MD025/single-title/single-h1 : Multiple top-level headings in the same document : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md025.md", "type": [ "boolean", "object" @@ -690,7 +690,7 @@ "additionalProperties": false }, "MD026": { - "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md026.md", + "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md026.md", "type": [ "boolean", "object" @@ -706,7 +706,7 @@ "additionalProperties": false }, "no-trailing-punctuation": { - "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md026.md", + "description": "MD026/no-trailing-punctuation : Trailing punctuation in heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md026.md", "type": [ "boolean", "object" @@ -722,27 +722,27 @@ "additionalProperties": false }, "MD027": { - "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md027.md", + "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md027.md", "type": "boolean", "default": true }, "no-multiple-space-blockquote": { - "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md027.md", + "description": "MD027/no-multiple-space-blockquote : Multiple spaces after blockquote symbol : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md027.md", "type": "boolean", "default": true }, "MD028": { - "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md028.md", + "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md028.md", "type": "boolean", "default": true }, "no-blanks-blockquote": { - "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md028.md", + "description": "MD028/no-blanks-blockquote : Blank line inside blockquote : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md028.md", "type": "boolean", "default": true }, "MD029": { - "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md029.md", + "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md029.md", "type": [ "boolean", "object" @@ -764,7 +764,7 @@ "additionalProperties": false }, "ol-prefix": { - "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md029.md", + "description": "MD029/ol-prefix : Ordered list item prefix : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md029.md", "type": [ "boolean", "object" @@ -786,7 +786,7 @@ "additionalProperties": false }, "MD030": { - "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md030.md", + "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md030.md", "type": [ "boolean", "object" @@ -821,7 +821,7 @@ "additionalProperties": false }, "list-marker-space": { - "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md030.md", + "description": "MD030/list-marker-space : Spaces after list markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md030.md", "type": [ "boolean", "object" @@ -856,7 +856,7 @@ "additionalProperties": false }, "MD031": { - "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md031.md", + "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md031.md", "type": [ "boolean", "object" @@ -872,7 +872,7 @@ "additionalProperties": false }, "blanks-around-fences": { - "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md031.md", + "description": "MD031/blanks-around-fences : Fenced code blocks should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md031.md", "type": [ "boolean", "object" @@ -888,17 +888,17 @@ "additionalProperties": false }, "MD032": { - "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md032.md", + "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md032.md", "type": "boolean", "default": true }, "blanks-around-lists": { - "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md032.md", + "description": "MD032/blanks-around-lists : Lists should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md032.md", "type": "boolean", "default": true }, "MD033": { - "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md033.md", + "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md033.md", "type": [ "boolean", "object" @@ -917,7 +917,7 @@ "additionalProperties": false }, "no-inline-html": { - "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md033.md", + "description": "MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md033.md", "type": [ "boolean", "object" @@ -936,17 +936,17 @@ "additionalProperties": false }, "MD034": { - "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md034.md", + "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md034.md", "type": "boolean", "default": true }, "no-bare-urls": { - "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md034.md", + "description": "MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md034.md", "type": "boolean", "default": true }, "MD035": { - "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md035.md", + "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md035.md", "type": [ "boolean", "object" @@ -962,7 +962,7 @@ "additionalProperties": false }, "hr-style": { - "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md035.md", + "description": "MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md035.md", "type": [ "boolean", "object" @@ -978,7 +978,7 @@ "additionalProperties": false }, "MD036": { - "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md036.md", + "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md036.md", "type": [ "boolean", "object" @@ -994,7 +994,7 @@ "additionalProperties": false }, "no-emphasis-as-heading": { - "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md036.md", + "description": "MD036/no-emphasis-as-heading : Emphasis used instead of a heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md036.md", "type": [ "boolean", "object" @@ -1010,37 +1010,37 @@ "additionalProperties": false }, "MD037": { - "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md037.md", + "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md037.md", "type": "boolean", "default": true }, "no-space-in-emphasis": { - "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md037.md", + "description": "MD037/no-space-in-emphasis : Spaces inside emphasis markers : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md037.md", "type": "boolean", "default": true }, "MD038": { - "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md038.md", + "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md038.md", "type": "boolean", "default": true }, "no-space-in-code": { - "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md038.md", + "description": "MD038/no-space-in-code : Spaces inside code span elements : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md038.md", "type": "boolean", "default": true }, "MD039": { - "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md039.md", + "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md039.md", "type": "boolean", "default": true }, "no-space-in-links": { - "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md039.md", + "description": "MD039/no-space-in-links : Spaces inside link text : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md039.md", "type": "boolean", "default": true }, "MD040": { - "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md040.md", + "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md040.md", "type": [ "boolean", "object" @@ -1064,7 +1064,7 @@ "additionalProperties": false }, "fenced-code-language": { - "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md040.md", + "description": "MD040/fenced-code-language : Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md040.md", "type": [ "boolean", "object" @@ -1088,7 +1088,7 @@ "additionalProperties": false }, "MD041": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md041.md", "type": [ "boolean", "object" @@ -1111,7 +1111,7 @@ "additionalProperties": false }, "first-line-heading": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md041.md", "type": [ "boolean", "object" @@ -1134,7 +1134,7 @@ "additionalProperties": false }, "first-line-h1": { - "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md041.md", + "description": "MD041/first-line-heading/first-line-h1 : First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md041.md", "type": [ "boolean", "object" @@ -1157,17 +1157,17 @@ "additionalProperties": false }, "MD042": { - "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md042.md", + "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md042.md", "type": "boolean", "default": true }, "no-empty-links": { - "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md042.md", + "description": "MD042/no-empty-links : No empty links : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md042.md", "type": "boolean", "default": true }, "MD043": { - "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md043.md", + "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md043.md", "type": [ "boolean", "object" @@ -1192,7 +1192,7 @@ "additionalProperties": false }, "required-headings": { - "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md043.md", + "description": "MD043/required-headings : Required heading structure : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md043.md", "type": [ "boolean", "object" @@ -1217,7 +1217,7 @@ "additionalProperties": false }, "MD044": { - "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md044.md", + "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md044.md", "type": [ "boolean", "object" @@ -1246,7 +1246,7 @@ "additionalProperties": false }, "proper-names": { - "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md044.md", + "description": "MD044/proper-names : Proper names should have the correct capitalization : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md044.md", "type": [ "boolean", "object" @@ -1275,17 +1275,17 @@ "additionalProperties": false }, "MD045": { - "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md045.md", + "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md045.md", "type": "boolean", "default": true }, "no-alt-text": { - "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md045.md", + "description": "MD045/no-alt-text : Images should have alternate text (alt text) : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md045.md", "type": "boolean", "default": true }, "MD046": { - "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md046.md", + "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md046.md", "type": [ "boolean", "object" @@ -1306,7 +1306,7 @@ "additionalProperties": false }, "code-block-style": { - "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md046.md", + "description": "MD046/code-block-style : Code block style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md046.md", "type": [ "boolean", "object" @@ -1327,17 +1327,17 @@ "additionalProperties": false }, "MD047": { - "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md047.md", + "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md047.md", "type": "boolean", "default": true }, "single-trailing-newline": { - "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md047.md", + "description": "MD047/single-trailing-newline : Files should end with a single newline character : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md047.md", "type": "boolean", "default": true }, "MD048": { - "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md048.md", + "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md048.md", "type": [ "boolean", "object" @@ -1358,7 +1358,7 @@ "additionalProperties": false }, "code-fence-style": { - "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md048.md", + "description": "MD048/code-fence-style : Code fence style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md048.md", "type": [ "boolean", "object" @@ -1379,7 +1379,7 @@ "additionalProperties": false }, "MD049": { - "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md049.md", + "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md049.md", "type": [ "boolean", "object" @@ -1400,7 +1400,7 @@ "additionalProperties": false }, "emphasis-style": { - "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md049.md", + "description": "MD049/emphasis-style : Emphasis style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md049.md", "type": [ "boolean", "object" @@ -1421,7 +1421,7 @@ "additionalProperties": false }, "MD050": { - "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md050.md", + "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md050.md", "type": [ "boolean", "object" @@ -1442,7 +1442,7 @@ "additionalProperties": false }, "strong-style": { - "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md050.md", + "description": "MD050/strong-style : Strong style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md050.md", "type": [ "boolean", "object" @@ -1463,7 +1463,7 @@ "additionalProperties": false }, "MD051": { - "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md051.md", + "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md051.md", "type": [ "boolean", "object" @@ -1479,7 +1479,7 @@ "additionalProperties": false }, "link-fragments": { - "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md051.md", + "description": "MD051/link-fragments : Link fragments should be valid : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md051.md", "type": [ "boolean", "object" @@ -1495,7 +1495,7 @@ "additionalProperties": false }, "MD052": { - "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md052.md", + "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md052.md", "type": [ "boolean", "object" @@ -1511,7 +1511,7 @@ "additionalProperties": false }, "reference-links-images": { - "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md052.md", + "description": "MD052/reference-links-images : Reference links and images should use a label that is defined : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md052.md", "type": [ "boolean", "object" @@ -1527,7 +1527,7 @@ "additionalProperties": false }, "MD053": { - "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md053.md", + "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md053.md", "type": [ "boolean", "object" @@ -1548,7 +1548,7 @@ "additionalProperties": false }, "link-image-reference-definitions": { - "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md053.md", + "description": "MD053/link-image-reference-definitions : Link and image reference definitions should be needed : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md053.md", "type": [ "boolean", "object" @@ -1569,7 +1569,7 @@ "additionalProperties": false }, "MD054": { - "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md054.md", + "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md054.md", "type": [ "boolean", "object" @@ -1610,7 +1610,7 @@ "additionalProperties": false }, "link-image-style": { - "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md054.md", + "description": "MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md054.md", "type": [ "boolean", "object" @@ -1651,7 +1651,7 @@ "additionalProperties": false }, "MD055": { - "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md055.md", + "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md055.md", "type": [ "boolean", "object" @@ -1674,7 +1674,7 @@ "additionalProperties": false }, "table-pipe-style": { - "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md055.md", + "description": "MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md055.md", "type": [ "boolean", "object" @@ -1697,22 +1697,22 @@ "additionalProperties": false }, "MD056": { - "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md056.md", + "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md056.md", "type": "boolean", "default": true }, "table-column-count": { - "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md056.md", + "description": "MD056/table-column-count : Table column count : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md056.md", "type": "boolean", "default": true }, "MD058": { - "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md058.md", + "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md058.md", "type": "boolean", "default": true }, "blanks-around-tables": { - "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md058.md", + "description": "MD058/blanks-around-tables : Tables should be surrounded by blank lines : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/doc/md058.md", "type": "boolean", "default": true }, From af14a2e768b741b941255b4c6b875339b4acbb73 Mon Sep 17 00:00:00 2001 From: David Anson Date: Mon, 30 Dec 2024 21:00:17 -0800 Subject: [PATCH 25/25] Update to version 0.17.1. --- CHANGELOG.md | 4 +++ README.md | 6 ++--- markdownlint-cli2.mjs | 2 +- package.json | 2 +- schema/markdownlint-cli2-config-schema.json | 30 ++++++++++----------- 5 files changed, 24 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de6dbc8b..f307dc1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.17.1 + +- Update dependencies (including `markdownlint`) + ## 0.17.0 - Convert to ECMAScript modules diff --git a/README.md b/README.md index a78841e3..9dc51c63 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ A container image [`davidanson/markdownlint-cli2`][docker-hub-markdownlint-cli2] can also be used (e.g., as part of a CI pipeline): ```bash -docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.17.0 "**/*.md" "#node_modules" +docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.17.1 "**/*.md" "#node_modules" ``` Notes: @@ -166,7 +166,7 @@ Notes: - A custom working directory can be specified with Docker's `-w` flag: ```bash - docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.17.0 "**/*.md" "#node_modules" + docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.17.1 "**/*.md" "#node_modules" ``` For convenience, the container image @@ -413,7 +413,7 @@ reference to the `repos` list in that project's `.pre-commit-config.yaml` like: ```yaml - repo: https://github.com/DavidAnson/markdownlint-cli2 - rev: v0.17.0 + rev: v0.17.1 hooks: - id: markdownlint-cli2 ``` diff --git a/markdownlint-cli2.mjs b/markdownlint-cli2.mjs index b8a13fce..6e287bea 100755 --- a/markdownlint-cli2.mjs +++ b/markdownlint-cli2.mjs @@ -22,7 +22,7 @@ import yamlParse from "./parsers/yaml-parse.mjs"; // Variables const packageName = "markdownlint-cli2"; -const packageVersion = "0.17.0"; +const packageVersion = "0.17.1"; const libraryName = "markdownlint"; const libraryVersion = getVersion(); const bannerMessage = `${packageName} v${packageVersion} (${libraryName} v${libraryVersion})`; diff --git a/package.json b/package.json index a937ef62..65a9ac18 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "markdownlint-cli2", - "version": "0.17.0", + "version": "0.17.1", "description": "A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the `markdownlint` library", "author": { "name": "David Anson", diff --git a/schema/markdownlint-cli2-config-schema.json b/schema/markdownlint-cli2-config-schema.json index df511396..20e3c3b9 100644 --- a/schema/markdownlint-cli2-config-schema.json +++ b/schema/markdownlint-cli2-config-schema.json @@ -1,13 +1,13 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.17.0/schema/markdownlint-cli2-config-schema.json", + "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.17.1/schema/markdownlint-cli2-config-schema.json", "title": "markdownlint-cli2 configuration schema", "type": "object", "properties": { "$schema": { "description": "JSON Schema URI (expected by some editors)", "type": "string", - "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.17.0/schema/markdownlint-cli2-config-schema.json" + "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.17.1/schema/markdownlint-cli2-config-schema.json" }, "config": { "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.37.3/schema/.markdownlint.jsonc", @@ -15,7 +15,7 @@ "default": {} }, "customRules": { - "description": "Module names or paths of custom rules to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Module names or paths of custom rules to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -25,18 +25,18 @@ } }, "fix": { - "description": "Whether to enable fixing of linting errors reported by rules that emit fix information : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to enable fixing of linting errors reported by rules that emit fix information : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "frontMatter": { - "description": "Regular expression used to match and ignore any front matter at the beginning of a document : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Regular expression used to match and ignore any front matter at the beginning of a document : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "string", "minLength": 1, "default": "" }, "gitignore": { - "description": "Whether to ignore files referenced by .gitignore (or glob expression) (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to ignore files referenced by .gitignore (or glob expression) (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": [ "boolean", "string" @@ -44,7 +44,7 @@ "default": false }, "globs": { - "description": "Glob expressions to include when linting (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Glob expressions to include when linting (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -54,7 +54,7 @@ } }, "ignores": { - "description": "Glob expressions to ignore when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Glob expressions to ignore when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -64,7 +64,7 @@ } }, "markdownItPlugins": { - "description": "markdown-it plugins to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "markdown-it plugins to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -84,7 +84,7 @@ } }, "modulePaths": { - "description": "Additional paths to resolve module locations from : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Additional paths to resolve module locations from : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -94,22 +94,22 @@ } }, "noBanner": { - "description": "Whether to disable the display of the banner message and version numbers on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable the display of the banner message and version numbers on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "noInlineConfig": { - "description": "Whether to disable support of HTML comments within Markdown content : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable support of HTML comments within Markdown content : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "noProgress": { - "description": "Whether to disable the display of progress on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable the display of progress on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "outputFormatters": { - "description": "Output formatters to load and use to customize markdownlint-cli2 output (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Output formatters to load and use to customize markdownlint-cli2 output (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -129,7 +129,7 @@ } }, "showFound": { - "description": "Whether to show the list of found files on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to show the list of found files on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.17.1/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }