@mnaoumov/typescript-dev-toolkit 0.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +15 -1
- package/bundlers/esbuild-impl/change-extension-plugin/package.json +6 -0
- package/bundlers/esbuild-impl/custom-esbuild-options-plugin/package.json +6 -0
- package/bundlers/esbuild-impl/fix-esm-plugin/package.json +6 -0
- package/bundlers/esbuild-impl/index/package.json +6 -0
- package/bundlers/esbuild-impl/package.json +6 -0
- package/bundlers/esbuild-impl/preprocess-plugin/package.json +6 -0
- package/bundlers/esbuild-impl/svelte-wrapper-plugin/package.json +6 -0
- package/bundlers/index/package.json +6 -0
- package/bundlers/package.json +6 -0
- package/dist/lib/cjs/build.cjs +191 -0
- package/dist/lib/cjs/build.d.cts +59 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/change-extension-plugin.cjs +139 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/change-extension-plugin.d.cts +25 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +96 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +14 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-esm-plugin.cjs +106 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-esm-plugin.d.cts +13 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +111 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +6 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +211 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +143 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +129 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +14 -0
- package/dist/lib/cjs/bundlers/index.cjs +99 -0
- package/dist/lib/cjs/bundlers/index.d.cts +2 -0
- package/dist/lib/cjs/check-project-types.cjs +163 -0
- package/dist/lib/cjs/check-project-types.d.cts +92 -0
- package/dist/lib/cjs/cli-utils.cjs +276 -0
- package/dist/lib/cjs/cli-utils.d.cts +123 -0
- package/dist/lib/cjs/code-generator.cjs +96 -0
- package/dist/lib/cjs/code-generator.d.cts +14 -0
- package/dist/lib/cjs/commitlint-config.cjs +110 -0
- package/dist/lib/cjs/commitlint-config.d.cts +14 -0
- package/dist/lib/cjs/commitlint-forbidden-patterns.cjs +110 -0
- package/dist/lib/cjs/commitlint-forbidden-patterns.d.cts +37 -0
- package/dist/lib/cjs/commitlint-spellcheck-header.cjs +126 -0
- package/dist/lib/cjs/commitlint-spellcheck-header.d.cts +40 -0
- package/dist/lib/cjs/env-toggle.cjs +133 -0
- package/dist/lib/cjs/env-toggle.d.cts +42 -0
- package/dist/lib/cjs/exec.cjs +455 -0
- package/dist/lib/cjs/exec.d.cts +162 -0
- package/dist/lib/cjs/forbidden-patterns.cjs +157 -0
- package/dist/lib/cjs/forbidden-patterns.d.cts +57 -0
- package/dist/lib/cjs/formatters/dprint.cjs +108 -0
- package/dist/lib/cjs/formatters/dprint.d.cts +33 -0
- package/dist/lib/cjs/formatters/index.cjs +99 -0
- package/dist/lib/cjs/formatters/index.d.cts +2 -0
- package/dist/lib/cjs/fs.cjs +123 -0
- package/dist/lib/cjs/fs.d.cts +80 -0
- package/dist/lib/cjs/gate.cjs +140 -0
- package/dist/lib/cjs/gate.d.cts +93 -0
- package/dist/lib/cjs/git.cjs +109 -0
- package/dist/lib/cjs/git.d.cts +37 -0
- package/dist/lib/cjs/index.cjs +186 -0
- package/dist/lib/cjs/index.d.cts +35 -0
- package/dist/lib/cjs/json.cjs +141 -0
- package/dist/lib/cjs/json.d.cts +102 -0
- package/dist/lib/cjs/library-build.cjs +483 -0
- package/dist/lib/cjs/library-build.d.cts +101 -0
- package/dist/lib/cjs/library-references.d.cts +5 -0
- package/dist/lib/cjs/linters/cspell-content.cjs +124 -0
- package/dist/lib/cjs/linters/cspell-content.d.cts +46 -0
- package/dist/lib/cjs/linters/cspell.cjs +103 -0
- package/dist/lib/cjs/linters/cspell.d.cts +36 -0
- package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.cjs +94 -0
- package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.d.cts +49 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +1068 -0
- package/dist/lib/cjs/linters/eslint-config.d.cts +123 -0
- package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +130 -0
- package/dist/lib/cjs/linters/eslint-no-restricted-syntax.d.cts +27 -0
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +116 -0
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.d.cts +26 -0
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +132 -0
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +13 -0
- package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +175 -0
- package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.cjs +290 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.cjs +265 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.d.cts +41 -0
- package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.cjs +134 -0
- package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.d.cts +20 -0
- package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.cjs +217 -0
- package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.d.cts +36 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.cjs +126 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.cjs +125 -0
- package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.d.cts +20 -0
- package/dist/lib/cjs/linters/eslint-rules/require-method-template.cjs +181 -0
- package/dist/lib/cjs/linters/eslint-rules/require-method-template.d.cts +14 -0
- package/dist/lib/cjs/linters/eslint-rules/require-super-call.cjs +217 -0
- package/dist/lib/cjs/linters/eslint-rules/require-super-call.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.cjs +92 -0
- package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.d.cts +18 -0
- package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.cjs +92 -0
- package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.d.cts +23 -0
- package/dist/lib/cjs/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +20 -0
- package/dist/lib/cjs/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.cts +17 -0
- package/dist/lib/cjs/linters/eslint.cjs +196 -0
- package/dist/lib/cjs/linters/eslint.d.cts +74 -0
- package/dist/lib/cjs/linters/index.cjs +138 -0
- package/dist/lib/cjs/linters/index.d.cts +15 -0
- package/dist/lib/cjs/linters/lint-ignores.cjs +91 -0
- package/dist/lib/cjs/linters/lint-ignores.d.cts +30 -0
- package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +169 -0
- package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +11 -0
- package/dist/lib/cjs/linters/markdownlint-content.cjs +120 -0
- package/dist/lib/cjs/linters/markdownlint-content.d.cts +47 -0
- package/dist/lib/cjs/linters/markdownlint-ignores.cjs +95 -0
- package/dist/lib/cjs/linters/markdownlint-ignores.d.cts +35 -0
- package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +99 -0
- package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
- package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.cjs +152 -0
- package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.d.cts +35 -0
- package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1344 -0
- package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2.d.cts +67 -0
- package/dist/lib/cjs/linters/markdownlint.cjs +151 -0
- package/dist/lib/cjs/linters/markdownlint.d.cts +32 -0
- package/dist/lib/cjs/linters/over-exposure.cjs +685 -0
- package/dist/lib/cjs/linters/over-exposure.d.cts +357 -0
- package/dist/lib/cjs/nano-staged-config.cjs +148 -0
- package/dist/lib/cjs/nano-staged-config.d.cts +54 -0
- package/dist/lib/cjs/npm-publish.cjs +93 -0
- package/dist/lib/cjs/npm-publish.d.cts +19 -0
- package/dist/lib/cjs/npm-run.cjs +120 -0
- package/dist/lib/cjs/npm-run.d.cts +34 -0
- package/dist/lib/cjs/npm.cjs +200 -0
- package/dist/lib/cjs/npm.d.cts +168 -0
- package/dist/lib/cjs/package-lock-integrity.cjs +134 -0
- package/dist/lib/cjs/package-lock-integrity.d.cts +38 -0
- package/dist/lib/cjs/package-manager.cjs +291 -0
- package/dist/lib/cjs/package-manager.d.cts +93 -0
- package/dist/lib/cjs/released-issues.cjs +178 -0
- package/dist/lib/cjs/released-issues.d.cts +79 -0
- package/dist/lib/cjs/repo-paths.cjs +167 -0
- package/dist/lib/cjs/repo-paths.d.cts +318 -0
- package/dist/lib/cjs/root.cjs +150 -0
- package/dist/lib/cjs/root.d.cts +107 -0
- package/dist/lib/cjs/test-runners/index.cjs +102 -0
- package/dist/lib/cjs/test-runners/index.d.cts +3 -0
- package/dist/lib/cjs/test-runners/vitest-config.cjs +126 -0
- package/dist/lib/cjs/test-runners/vitest-config.d.cts +90 -0
- package/dist/lib/cjs/test-runners/vitest.cjs +115 -0
- package/dist/lib/cjs/test-runners/vitest.d.cts +52 -0
- package/dist/lib/cjs/validate-declarations.cjs +120 -0
- package/dist/lib/cjs/validate-declarations.d.cts +37 -0
- package/dist/lib/cjs/version.cjs +758 -0
- package/dist/lib/cjs/version.d.cts +418 -0
- package/dist/lib/esm/build.d.mts +59 -0
- package/dist/lib/esm/build.mjs +165 -0
- package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.d.mts +25 -0
- package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.mjs +101 -0
- package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.mts +14 -0
- package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +59 -0
- package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.d.mts +13 -0
- package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.mjs +69 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +6 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +60 -0
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +143 -0
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +176 -0
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +14 -0
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +82 -0
- package/dist/lib/esm/bundlers/index.d.mts +2 -0
- package/dist/lib/esm/bundlers/index.mjs +52 -0
- package/dist/lib/esm/check-project-types.d.mts +92 -0
- package/dist/lib/esm/check-project-types.mjs +123 -0
- package/dist/lib/esm/cli-utils.d.mts +123 -0
- package/dist/lib/esm/cli-utils.mjs +225 -0
- package/dist/lib/esm/code-generator.d.mts +14 -0
- package/dist/lib/esm/code-generator.mjs +59 -0
- package/dist/lib/esm/commitlint-config.d.mts +14 -0
- package/dist/lib/esm/commitlint-config.mjs +79 -0
- package/dist/lib/esm/commitlint-forbidden-patterns.d.mts +37 -0
- package/dist/lib/esm/commitlint-forbidden-patterns.mjs +75 -0
- package/dist/lib/esm/commitlint-spellcheck-header.d.mts +40 -0
- package/dist/lib/esm/commitlint-spellcheck-header.mjs +87 -0
- package/dist/lib/esm/env-toggle.d.mts +42 -0
- package/dist/lib/esm/env-toggle.mjs +84 -0
- package/dist/lib/esm/exec.d.mts +162 -0
- package/dist/lib/esm/exec.mjs +410 -0
- package/dist/lib/esm/forbidden-patterns.d.mts +57 -0
- package/dist/lib/esm/forbidden-patterns.mjs +108 -0
- package/dist/lib/esm/formatters/dprint.d.mts +33 -0
- package/dist/lib/esm/formatters/dprint.mjs +75 -0
- package/dist/lib/esm/formatters/index.d.mts +2 -0
- package/dist/lib/esm/formatters/index.mjs +52 -0
- package/dist/lib/esm/fs.d.mts +80 -0
- package/dist/lib/esm/fs.mjs +89 -0
- package/dist/lib/esm/gate.d.mts +93 -0
- package/dist/lib/esm/gate.mjs +106 -0
- package/dist/lib/esm/git.d.mts +37 -0
- package/dist/lib/esm/git.mjs +72 -0
- package/dist/lib/esm/index.d.mts +35 -0
- package/dist/lib/esm/index.mjs +110 -0
- package/dist/lib/esm/json.d.mts +102 -0
- package/dist/lib/esm/json.mjs +106 -0
- package/dist/lib/esm/library-build.d.mts +101 -0
- package/dist/lib/esm/library-build.mjs +443 -0
- package/dist/lib/esm/library-references.d.mts +5 -0
- package/dist/lib/esm/linters/cspell-content.d.mts +46 -0
- package/dist/lib/esm/linters/cspell-content.mjs +87 -0
- package/dist/lib/esm/linters/cspell.d.mts +36 -0
- package/dist/lib/esm/linters/cspell.mjs +69 -0
- package/dist/lib/esm/linters/eslint-agnostic-core-boundary.d.mts +49 -0
- package/dist/lib/esm/linters/eslint-agnostic-core-boundary.mjs +57 -0
- package/dist/lib/esm/linters/eslint-config.d.mts +123 -0
- package/dist/lib/esm/linters/eslint-config.mjs +1022 -0
- package/dist/lib/esm/linters/eslint-no-restricted-syntax.d.mts +27 -0
- package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +93 -0
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.d.mts +26 -0
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +77 -0
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +13 -0
- package/dist/lib/esm/linters/eslint-rules/index.mjs +74 -0
- package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +144 -0
- package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.mjs +277 -0
- package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.d.mts +41 -0
- package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.mjs +227 -0
- package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.d.mts +20 -0
- package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.mjs +96 -0
- package/dist/lib/esm/linters/eslint-rules/params-options-name-match.d.mts +36 -0
- package/dist/lib/esm/linters/eslint-rules/params-options-name-match.mjs +179 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.mjs +88 -0
- package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.d.mts +20 -0
- package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.mjs +87 -0
- package/dist/lib/esm/linters/eslint-rules/require-method-template.d.mts +14 -0
- package/dist/lib/esm/linters/eslint-rules/require-method-template.mjs +142 -0
- package/dist/lib/esm/linters/eslint-rules/require-super-call.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/require-super-call.mjs +183 -0
- package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.d.mts +18 -0
- package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.mjs +55 -0
- package/dist/lib/esm/linters/eslint-rules/ts-estree-node.d.mts +23 -0
- package/dist/lib/esm/linters/eslint-rules/ts-estree-node.mjs +55 -0
- package/dist/lib/esm/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +20 -0
- package/dist/lib/esm/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.mts +17 -0
- package/dist/lib/esm/linters/eslint.d.mts +74 -0
- package/dist/lib/esm/linters/eslint.mjs +159 -0
- package/dist/lib/esm/linters/index.d.mts +15 -0
- package/dist/lib/esm/linters/index.mjs +78 -0
- package/dist/lib/esm/linters/lint-ignores.d.mts +30 -0
- package/dist/lib/esm/linters/lint-ignores.mjs +54 -0
- package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +11 -0
- package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +122 -0
- package/dist/lib/esm/linters/markdownlint-content.d.mts +47 -0
- package/dist/lib/esm/linters/markdownlint-content.mjs +83 -0
- package/dist/lib/esm/linters/markdownlint-ignores.d.mts +35 -0
- package/dist/lib/esm/linters/markdownlint-ignores.mjs +57 -0
- package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
- package/dist/lib/esm/linters/markdownlint-rules/index.mjs +52 -0
- package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.d.mts +35 -0
- package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.mjs +114 -0
- package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1344 -0
- package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2.d.mts +67 -0
- package/dist/lib/esm/linters/markdownlint.d.mts +32 -0
- package/dist/lib/esm/linters/markdownlint.mjs +124 -0
- package/dist/lib/esm/linters/over-exposure.d.mts +357 -0
- package/dist/lib/esm/linters/over-exposure.mjs +672 -0
- package/dist/lib/esm/nano-staged-config.d.mts +54 -0
- package/dist/lib/esm/nano-staged-config.mjs +103 -0
- package/dist/lib/esm/npm-publish.d.mts +19 -0
- package/dist/lib/esm/npm-publish.mjs +56 -0
- package/dist/lib/esm/npm-run.d.mts +34 -0
- package/dist/lib/esm/npm-run.mjs +81 -0
- package/dist/lib/esm/npm.d.mts +168 -0
- package/dist/lib/esm/npm.mjs +155 -0
- package/dist/lib/esm/package-lock-integrity.d.mts +38 -0
- package/dist/lib/esm/package-lock-integrity.mjs +99 -0
- package/dist/lib/esm/package-manager.d.mts +93 -0
- package/dist/lib/esm/package-manager.mjs +245 -0
- package/dist/lib/esm/released-issues.d.mts +79 -0
- package/dist/lib/esm/released-issues.mjs +143 -0
- package/dist/lib/esm/repo-paths.d.mts +318 -0
- package/dist/lib/esm/repo-paths.mjs +130 -0
- package/dist/lib/esm/root.d.mts +107 -0
- package/dist/lib/esm/root.mjs +115 -0
- package/dist/lib/esm/test-runners/index.d.mts +3 -0
- package/dist/lib/esm/test-runners/index.mjs +54 -0
- package/dist/lib/esm/test-runners/vitest-config.d.mts +90 -0
- package/dist/lib/esm/test-runners/vitest-config.mjs +86 -0
- package/dist/lib/esm/test-runners/vitest.d.mts +52 -0
- package/dist/lib/esm/test-runners/vitest.mjs +76 -0
- package/dist/lib/esm/validate-declarations.d.mts +37 -0
- package/dist/lib/esm/validate-declarations.mjs +87 -0
- package/dist/lib/esm/version.d.mts +418 -0
- package/dist/lib/esm/version.mjs +723 -0
- package/formatters/dprint/package.json +6 -0
- package/formatters/index/package.json +6 -0
- package/formatters/package.json +6 -0
- package/linters/cspell/package.json +6 -0
- package/linters/cspell-content/package.json +6 -0
- package/linters/eslint/package.json +6 -0
- package/linters/eslint-agnostic-core-boundary/package.json +6 -0
- package/linters/eslint-config/package.json +6 -0
- package/linters/eslint-no-restricted-syntax/package.json +6 -0
- package/linters/eslint-rules/in-house-plugin/package.json +6 -0
- package/linters/eslint-rules/index/package.json +6 -0
- package/linters/eslint-rules/no-async-callback-to-unsafe-return/package.json +6 -0
- package/linters/eslint-rules/no-unresolved-jsdoc-link/package.json +6 -0
- package/linters/eslint-rules/no-unused-params-members/package.json +6 -0
- package/linters/eslint-rules/no-used-underscore-variables/package.json +6 -0
- package/linters/eslint-rules/package.json +6 -0
- package/linters/eslint-rules/params-options-name-match/package.json +6 -0
- package/linters/eslint-rules/prefer-noop-async/package.json +6 -0
- package/linters/eslint-rules/readonly-params-options-result-members/package.json +6 -0
- package/linters/eslint-rules/require-method-template/package.json +6 -0
- package/linters/eslint-rules/require-super-call/package.json +6 -0
- package/linters/eslint-rules/rule-tester-helper/package.json +6 -0
- package/linters/eslint-rules/ts-estree-node/package.json +6 -0
- package/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs/package.json +4 -0
- package/linters/eslint-types/@types/eslint-plugin-verify-tsdoc/package.json +4 -0
- package/linters/index/package.json +6 -0
- package/linters/lint-ignores/package.json +6 -0
- package/linters/markdownlint/package.json +6 -0
- package/linters/markdownlint-cli2-config/package.json +6 -0
- package/linters/markdownlint-content/package.json +6 -0
- package/linters/markdownlint-ignores/package.json +6 -0
- package/linters/markdownlint-rules/index/package.json +6 -0
- package/linters/markdownlint-rules/no-soft-break-in-paragraph/package.json +6 -0
- package/linters/markdownlint-rules/package.json +6 -0
- package/linters/markdownlint-types/@types/markdownlint-cli2/package.json +4 -0
- package/linters/markdownlint-types/@types/markdownlint-cli2-config-schema/package.json +4 -0
- package/linters/over-exposure/package.json +6 -0
- package/linters/package.json +6 -0
- package/package.json +329 -13
- package/test-runners/index/package.json +6 -0
- package/test-runners/package.json +6 -0
- package/test-runners/vitest/package.json +6 -0
- package/test-runners/vitest-config/package.json +6 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return '/';
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: 'android'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const existingProcess = globalThis.process;
|
|
23
|
+
|
|
24
|
+
if (!existingProcess) {
|
|
25
|
+
globalThis.process = browserProcess;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (existingProcess.versions?.node) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const existingProcessRecord = existingProcess;
|
|
34
|
+
|
|
35
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
36
|
+
existingProcessRecord[key] ??= value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
existingProcessRecord['browser'] = true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
(function initEsm() {
|
|
43
|
+
ensureDisposeSymbols();
|
|
44
|
+
ensureBrowserProcess();
|
|
45
|
+
})();
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
import { assertNonNullable } from "@mnaoumov/typescript-lib/type-guards";
|
|
49
|
+
const MESSAGE_ID = "noUsedUnderscoreVariables";
|
|
50
|
+
const noUsedUnderscoreVariables = {
|
|
51
|
+
create(context) {
|
|
52
|
+
return {
|
|
53
|
+
":function"(node) {
|
|
54
|
+
const scope = context.sourceCode.getScope(node);
|
|
55
|
+
for (const variable of scope.variables) {
|
|
56
|
+
if (!variable.name.startsWith("_")) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const definitionNode = variable.defs[0];
|
|
60
|
+
assertNonNullable(definitionNode, "User-declared _-prefixed variables always have at least one definition");
|
|
61
|
+
const functionBody = node.body;
|
|
62
|
+
const bodyRange = functionBody?.range;
|
|
63
|
+
const isParameter = definitionNode.type === "Parameter";
|
|
64
|
+
const hasBodyReferences = variable.references.some((reference) => {
|
|
65
|
+
if (!reference.isRead()) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
return !isParameter || !bodyRange || !reference.identifier.range || reference.identifier.range[0] >= bodyRange[0] && reference.identifier.range[1] <= bodyRange[1];
|
|
69
|
+
});
|
|
70
|
+
if (hasBodyReferences) {
|
|
71
|
+
context.report({
|
|
72
|
+
data: { name: variable.name },
|
|
73
|
+
messageId: MESSAGE_ID,
|
|
74
|
+
node: definitionNode.name
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
meta: {
|
|
82
|
+
docs: {
|
|
83
|
+
description: "Disallow `_`-prefixed parameters and local variables that are actually used"
|
|
84
|
+
},
|
|
85
|
+
messages: {
|
|
86
|
+
[MESSAGE_ID]: '"{{ name }}" has a `_` prefix but is used. Remove the `_` prefix since it is not unused.'
|
|
87
|
+
},
|
|
88
|
+
schema: [],
|
|
89
|
+
type: "problem"
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
export {
|
|
93
|
+
MESSAGE_ID,
|
|
94
|
+
noUsedUnderscoreVariables
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlc1xuICpcbiAqIFJlcG9ydHMgYW4gZXJyb3Igd2hlbiBhIHBhcmFtZXRlciBvciBsb2NhbCB2YXJpYWJsZSB3aXRoIGEgYF9gIHByZWZpeCBpc1xuICogYWN0dWFsbHkgcmVmZXJlbmNlZCBpbiB0aGUgZnVuY3Rpb24gYm9keS4gVGhlIGBfYCBwcmVmaXggY29udmVudGlvbiBzaWduYWxzXG4gKiBcInRoaXMgaWRlbnRpZmllciBpcyBpbnRlbnRpb25hbGx5IHVudXNlZFwiIFx1MjAxNCBpZiBpdCBJUyB1c2VkLCB0aGUgcHJlZml4IGlzXG4gKiBtaXNsZWFkaW5nIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuXG5pbnRlcmZhY2UgTm9kZVdpdGhCb2R5IHtcbiAgYm9keT86IFJ1bGUuTm9kZTtcbn1cblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSB2YXJpYWJsZSBjYXJyaWVzIGEgYF9gIHByZWZpeCAoc2lnbmFsbGluZyB1bnVzZWQpIGJ1dCBpcyBhY3R1YWxseSB1c2VkLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdub1VzZWRVbmRlcnNjb3JlVmFyaWFibGVzJztcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSBkaXNhbGxvd2luZyBgX2AtcHJlZml4ZWQgcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQsIHNpbmNlIHRoZSBwcmVmaXggYWR2ZXJ0aXNlcyB0aGVtIGFzIHVudXNlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVXNlZFVuZGVyc2NvcmVWYXJpYWJsZXM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gY29udGV4dC5zb3VyY2VDb2RlLmdldFNjb3BlKG5vZGUpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdmFyaWFibGUgb2Ygc2NvcGUudmFyaWFibGVzKSB7XG4gICAgICAgICAgaWYgKCF2YXJpYWJsZS5uYW1lLnN0YXJ0c1dpdGgoJ18nKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGVmaW5pdGlvbk5vZGUgPSB2YXJpYWJsZS5kZWZzWzBdO1xuICAgICAgICAgIGFzc2VydE5vbk51bGxhYmxlKGRlZmluaXRpb25Ob2RlLCAnVXNlci1kZWNsYXJlZCBfLXByZWZpeGVkIHZhcmlhYmxlcyBhbHdheXMgaGF2ZSBhdCBsZWFzdCBvbmUgZGVmaW5pdGlvbicpO1xuXG4gICAgICAgICAgLy8gRm9yIHBhcmFtZXRlcnMsIG9ubHkgY291bnQgcmVmZXJlbmNlcyBpbnNpZGUgdGhlIGZ1bmN0aW9uIGJvZHlcbiAgICAgICAgICAvLyAobm90IGluIHR5cGUgYW5ub3RhdGlvbnMgbGlrZSBgYXNzZXJ0cyBfb2JqIGlzIFRgKS5cbiAgICAgICAgICAvLyBGb3IgbG9jYWwgdmFyaWFibGVzLCBhbnkgcmVhZCByZWZlcmVuY2UgY291bnRzLlxuICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uQm9keSA9IChub2RlIGFzIE5vZGVXaXRoQm9keSkuYm9keTtcbiAgICAgICAgICBjb25zdCBib2R5UmFuZ2UgPSBmdW5jdGlvbkJvZHk/LnJhbmdlO1xuICAgICAgICAgIGNvbnN0IGlzUGFyYW1ldGVyID0gZGVmaW5pdGlvbk5vZGUudHlwZSA9PT0gJ1BhcmFtZXRlcic7XG4gICAgICAgICAgY29uc3QgaGFzQm9keVJlZmVyZW5jZXMgPSB2YXJpYWJsZS5yZWZlcmVuY2VzLnNvbWUoKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFyZWZlcmVuY2UuaXNSZWFkKCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTG9jYWwgdmFyaWFibGVzIG9yIGZhbGxiYWNrOiBjb3VudCBhbGwgcmVhZHNcbiAgICAgICAgICAgIHJldHVybiAhaXNQYXJhbWV0ZXIgfHwgIWJvZHlSYW5nZSB8fCAhcmVmZXJlbmNlLmlkZW50aWZpZXIucmFuZ2VcbiAgICAgICAgICAgICAgfHwgKHJlZmVyZW5jZS5pZGVudGlmaWVyLnJhbmdlWzBdID49IGJvZHlSYW5nZVswXSAmJiByZWZlcmVuY2UuaWRlbnRpZmllci5yYW5nZVsxXSA8PSBib2R5UmFuZ2VbMV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChoYXNCb2R5UmVmZXJlbmNlcykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7IG5hbWU6IHZhcmlhYmxlLm5hbWUgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lELFxuICAgICAgICAgICAgICBub2RlOiBkZWZpbml0aW9uTm9kZS5uYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdEaXNhbGxvdyBgX2AtcHJlZml4ZWQgcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnXCJ7eyBuYW1lIH19XCIgaGFzIGEgYF9gIHByZWZpeCBidXQgaXMgdXNlZC4gUmVtb3ZlIHRoZSBgX2AgcHJlZml4IHNpbmNlIGl0IGlzIG5vdCB1bnVzZWQuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUEsU0FBUyx5QkFBeUI7QUFTM0IsTUFBTSxhQUFhO0FBS25CLE1BQU0sNEJBQTZDO0FBQUEsRUFDeEQsT0FBTyxTQUFTO0FBQ2QsV0FBTztBQUFBLE1BQ0wsWUFBWSxNQUF1QjtBQUNqQyxjQUFNLFFBQVEsUUFBUSxXQUFXLFNBQVMsSUFBSTtBQUU5QyxtQkFBVyxZQUFZLE1BQU0sV0FBVztBQUN0QyxjQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsR0FBRyxHQUFHO0FBQ2xDO0FBQUEsVUFDRjtBQUVBLGdCQUFNLGlCQUFpQixTQUFTLEtBQUssQ0FBQztBQUN0Qyw0QkFBa0IsZ0JBQWdCLHdFQUF3RTtBQUsxRyxnQkFBTSxlQUFnQixLQUFzQjtBQUM1QyxnQkFBTSxZQUFZLGNBQWM7QUFDaEMsZ0JBQU0sY0FBYyxlQUFlLFNBQVM7QUFDNUMsZ0JBQU0sb0JBQW9CLFNBQVMsV0FBVyxLQUFLLENBQUMsY0FBYztBQUNoRSxnQkFBSSxDQUFDLFVBQVUsT0FBTyxHQUFHO0FBQ3ZCLHFCQUFPO0FBQUEsWUFDVDtBQUVBLG1CQUFPLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLFdBQVcsU0FDckQsVUFBVSxXQUFXLE1BQU0sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLFVBQVUsV0FBVyxNQUFNLENBQUMsS0FBSyxVQUFVLENBQUM7QUFBQSxVQUNyRyxDQUFDO0FBQ0QsY0FBSSxtQkFBbUI7QUFDckIsb0JBQVEsT0FBTztBQUFBLGNBQ2IsTUFBTSxFQUFFLE1BQU0sU0FBUyxLQUFLO0FBQUEsY0FDNUIsV0FBVztBQUFBLGNBQ1gsTUFBTSxlQUFlO0FBQUEsWUFDdkIsQ0FBQztBQUFBLFVBQ0g7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsQ0FBQyxVQUFVLEdBQUc7QUFBQSxJQUNoQjtBQUFBLElBQ0EsUUFBUSxDQUFDO0FBQUEsSUFDVCxNQUFNO0FBQUEsRUFDUjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* ESLint rule: params-options-name-match
|
|
6
|
+
*
|
|
7
|
+
* Ensures that parameter-bag type names match the function or constructor they
|
|
8
|
+
* belong to, on two axes — a prefix derived from the owner and a suffix derived
|
|
9
|
+
* from how the bag is passed.
|
|
10
|
+
*
|
|
11
|
+
* Prefix (owner):
|
|
12
|
+
* - `fooBar(params: FooBar…)` — PascalCase of the function name
|
|
13
|
+
* - `class Baz { constructor(params: BazConstructor…) }` — ClassName + `Constructor`
|
|
14
|
+
* - `class Baz { method(params: BazMethod…) }` — ClassName + PascalCase(methodName)
|
|
15
|
+
*
|
|
16
|
+
* Suffix (whether the bag is a required sole argument):
|
|
17
|
+
* - `Params` only when the bag is the SOLE and REQUIRED parameter —
|
|
18
|
+
* `fooBar(params: FooBarParams)`
|
|
19
|
+
* - `Options` otherwise. That is: an OPTIONAL bag — `fooBar(options?: FooBarOptions)`
|
|
20
|
+
* or `fooBar(options: FooBarOptions = {})` — or a bag SUPPLEMENTARY to other
|
|
21
|
+
* parameters — `fooBar(baz: string, options: FooBarOptions)`.
|
|
22
|
+
*
|
|
23
|
+
* Only checks parameters whose type annotation name ends with `Params` or
|
|
24
|
+
* `Options`. Only checks exported functions and members of exported classes
|
|
25
|
+
* (regardless of accessibility — `public`, `protected`, and `private` are all
|
|
26
|
+
* checked) to avoid false positives from internal options-passthrough helpers.
|
|
27
|
+
*/
|
|
28
|
+
import type { Rule } from 'eslint';
|
|
29
|
+
/**
|
|
30
|
+
Message ID reported when a parameter-bag type's name does not match the expected name (prefix and required/optional suffix) for its function or constructor.
|
|
31
|
+
*/
|
|
32
|
+
export declare const MESSAGE_ID = "paramsOptionsNameMatch";
|
|
33
|
+
/**
|
|
34
|
+
* ESLint rule requiring `*Params`/`*Options` type names to match their owning function or constructor, and to use the suffix that matches the sole-vs-supplementary argument convention.
|
|
35
|
+
*/
|
|
36
|
+
export declare const paramsOptionsNameMatch: Rule.RuleModule;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return '/';
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: 'android'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const existingProcess = globalThis.process;
|
|
23
|
+
|
|
24
|
+
if (!existingProcess) {
|
|
25
|
+
globalThis.process = browserProcess;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (existingProcess.versions?.node) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const existingProcessRecord = existingProcess;
|
|
34
|
+
|
|
35
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
36
|
+
existingProcessRecord[key] ??= value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
existingProcessRecord['browser'] = true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
(function initEsm() {
|
|
43
|
+
ensureDisposeSymbols();
|
|
44
|
+
ensureBrowserProcess();
|
|
45
|
+
})();
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
const PARAMS_OPTIONS_SUFFIX_PATTERN = /(?:Params|Options)$/;
|
|
49
|
+
const PARAMS_SUFFIX = "Params";
|
|
50
|
+
const OPTIONS_SUFFIX = "Options";
|
|
51
|
+
const MESSAGE_ID = "paramsOptionsNameMatch";
|
|
52
|
+
const paramsOptionsNameMatch = {
|
|
53
|
+
create(context) {
|
|
54
|
+
return {
|
|
55
|
+
":function[params.length>0]"(node) {
|
|
56
|
+
if (!isInExportedScope(node)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const functionNode = node;
|
|
60
|
+
const expectedPrefix = getExpectedPrefix(node);
|
|
61
|
+
if (!expectedPrefix) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const isSoleParameter = functionNode.params.length === 1;
|
|
65
|
+
for (const parameter of functionNode.params) {
|
|
66
|
+
const typeInfo = getTypeAnnotationInfo(parameter);
|
|
67
|
+
if (!typeInfo || !PARAMS_OPTIONS_SUFFIX_PATTERN.test(typeInfo.name)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const expectedSuffix = isSoleParameter && !isOptionalParameter(parameter) ? PARAMS_SUFFIX : OPTIONS_SUFFIX;
|
|
71
|
+
const expectedName = `${expectedPrefix}${expectedSuffix}`;
|
|
72
|
+
if (typeInfo.name !== expectedName) {
|
|
73
|
+
context.report({
|
|
74
|
+
data: {
|
|
75
|
+
actualName: typeInfo.name,
|
|
76
|
+
expectedName
|
|
77
|
+
},
|
|
78
|
+
messageId: MESSAGE_ID,
|
|
79
|
+
node: typeInfo.node
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
meta: {
|
|
87
|
+
docs: {
|
|
88
|
+
description: "Require `*Params`/`*Options` type names to match the owning function/constructor (prefix) and the sole-vs-supplementary argument convention (suffix)"
|
|
89
|
+
},
|
|
90
|
+
messages: {
|
|
91
|
+
[MESSAGE_ID]: 'Type "{{ actualName }}" does not match the expected name "{{ expectedName }}" for this function/constructor.'
|
|
92
|
+
},
|
|
93
|
+
schema: [],
|
|
94
|
+
type: "suggestion"
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
function getClassName(methodDefinition) {
|
|
98
|
+
const classBody = methodDefinition.parent;
|
|
99
|
+
const classNode = classBody?.parent;
|
|
100
|
+
return !classNode || !("id" in classNode) || !classNode.id || typeof classNode.id !== "object" || !("name" in classNode.id) || typeof classNode.id.name !== "string" ? void 0 : classNode.id.name;
|
|
101
|
+
}
|
|
102
|
+
function getExpectedPrefix(node) {
|
|
103
|
+
const methodPrefix = getMethodExpectedPrefix(node);
|
|
104
|
+
return methodPrefix ?? getFunctionExpectedPrefix(node);
|
|
105
|
+
}
|
|
106
|
+
function getFunctionExpectedPrefix(node) {
|
|
107
|
+
if ("id" in node && node.id && typeof node.id === "object" && "name" in node.id && typeof node.id.name === "string") {
|
|
108
|
+
return toPascalCase(node.id.name);
|
|
109
|
+
}
|
|
110
|
+
return node.parent?.type === "VariableDeclarator" && "id" in node.parent && node.parent.id && typeof node.parent.id === "object" && "name" in node.parent.id && typeof node.parent.id.name === "string" ? toPascalCase(node.parent.id.name) : void 0;
|
|
111
|
+
}
|
|
112
|
+
function getMethodExpectedPrefix(node) {
|
|
113
|
+
const methodDefinition = node.parent;
|
|
114
|
+
if (methodDefinition?.type !== "MethodDefinition") {
|
|
115
|
+
return void 0;
|
|
116
|
+
}
|
|
117
|
+
if (!("key" in methodDefinition) || !methodDefinition.key || typeof methodDefinition.key !== "object" || !("name" in methodDefinition.key) || typeof methodDefinition.key.name !== "string") {
|
|
118
|
+
return void 0;
|
|
119
|
+
}
|
|
120
|
+
const methodName = methodDefinition.key.name;
|
|
121
|
+
const className = getClassName(methodDefinition);
|
|
122
|
+
if (!className) {
|
|
123
|
+
return void 0;
|
|
124
|
+
}
|
|
125
|
+
return methodName === "constructor" ? `${className}Constructor` : className + toPascalCase(methodName);
|
|
126
|
+
}
|
|
127
|
+
function getTypeAnnotationInfo(parameter) {
|
|
128
|
+
const target = parameter.type === "AssignmentPattern" ? parameter.left : parameter;
|
|
129
|
+
if (!("typeAnnotation" in target) || !target.typeAnnotation) {
|
|
130
|
+
return void 0;
|
|
131
|
+
}
|
|
132
|
+
const annotation = target.typeAnnotation;
|
|
133
|
+
const typeNode = annotation["typeAnnotation"];
|
|
134
|
+
if (!typeNode || typeof typeNode !== "object") {
|
|
135
|
+
return void 0;
|
|
136
|
+
}
|
|
137
|
+
const typeNodeObject = typeNode;
|
|
138
|
+
if (typeNodeObject["type"] === "TSTypeReference" && typeNodeObject["typeName"] && typeof typeNodeObject["typeName"] === "object") {
|
|
139
|
+
const typeName = typeNodeObject["typeName"];
|
|
140
|
+
if (typeName["type"] === "Identifier" && typeof typeName["name"] === "string") {
|
|
141
|
+
return { name: typeName["name"], node: typeNode };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return void 0;
|
|
145
|
+
}
|
|
146
|
+
function isInExportedScope(node) {
|
|
147
|
+
const methodDefinition = node.parent;
|
|
148
|
+
if (methodDefinition?.type === "MethodDefinition") {
|
|
149
|
+
const classBody = methodDefinition.parent;
|
|
150
|
+
const classNode = classBody?.parent;
|
|
151
|
+
if (!classNode) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
const classParent = classNode.parent;
|
|
155
|
+
return classParent?.type === "ExportNamedDeclaration" || classParent?.type === "ExportDefaultDeclaration";
|
|
156
|
+
}
|
|
157
|
+
if (node.type === "FunctionDeclaration") {
|
|
158
|
+
const parentNode = node.parent;
|
|
159
|
+
return parentNode?.type === "ExportNamedDeclaration" || parentNode?.type === "ExportDefaultDeclaration";
|
|
160
|
+
}
|
|
161
|
+
if (node.parent?.type === "VariableDeclarator") {
|
|
162
|
+
const variableDeclaration = node.parent.parent;
|
|
163
|
+
if (variableDeclaration?.parent?.type === "ExportNamedDeclaration") {
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
function isOptionalParameter(parameter) {
|
|
170
|
+
return parameter.type === "AssignmentPattern" || parameter.optional === true;
|
|
171
|
+
}
|
|
172
|
+
function toPascalCase(name) {
|
|
173
|
+
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
174
|
+
}
|
|
175
|
+
export {
|
|
176
|
+
MESSAGE_ID,
|
|
177
|
+
paramsOptionsNameMatch
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaFxuICpcbiAqIEVuc3VyZXMgdGhhdCBwYXJhbWV0ZXItYmFnIHR5cGUgbmFtZXMgbWF0Y2ggdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRoZXlcbiAqIGJlbG9uZyB0bywgb24gdHdvIGF4ZXMgXHUyMDE0IGEgcHJlZml4IGRlcml2ZWQgZnJvbSB0aGUgb3duZXIgYW5kIGEgc3VmZml4IGRlcml2ZWRcbiAqIGZyb20gaG93IHRoZSBiYWcgaXMgcGFzc2VkLlxuICpcbiAqIFByZWZpeCAob3duZXIpOlxuICogLSBgZm9vQmFyKHBhcmFtczogRm9vQmFyXHUyMDI2KWAgXHUyMDE0IFBhc2NhbENhc2Ugb2YgdGhlIGZ1bmN0aW9uIG5hbWVcbiAqIC0gYGNsYXNzIEJheiB7IGNvbnN0cnVjdG9yKHBhcmFtczogQmF6Q29uc3RydWN0b3JcdTIwMjYpIH1gIFx1MjAxNCBDbGFzc05hbWUgKyBgQ29uc3RydWN0b3JgXG4gKiAtIGBjbGFzcyBCYXogeyBtZXRob2QocGFyYW1zOiBCYXpNZXRob2RcdTIwMjYpIH1gIFx1MjAxNCBDbGFzc05hbWUgKyBQYXNjYWxDYXNlKG1ldGhvZE5hbWUpXG4gKlxuICogU3VmZml4ICh3aGV0aGVyIHRoZSBiYWcgaXMgYSByZXF1aXJlZCBzb2xlIGFyZ3VtZW50KTpcbiAqIC0gYFBhcmFtc2Agb25seSB3aGVuIHRoZSBiYWcgaXMgdGhlIFNPTEUgYW5kIFJFUVVJUkVEIHBhcmFtZXRlciBcdTIwMTRcbiAqICAgYGZvb0JhcihwYXJhbXM6IEZvb0JhclBhcmFtcylgXG4gKiAtIGBPcHRpb25zYCBvdGhlcndpc2UuIFRoYXQgaXM6IGFuIE9QVElPTkFMIGJhZyBcdTIwMTQgYGZvb0JhcihvcHRpb25zPzogRm9vQmFyT3B0aW9ucylgXG4gKiAgIG9yIGBmb29CYXIob3B0aW9uczogRm9vQmFyT3B0aW9ucyA9IHt9KWAgXHUyMDE0IG9yIGEgYmFnIFNVUFBMRU1FTlRBUlkgdG8gb3RoZXJcbiAqICAgcGFyYW1ldGVycyBcdTIwMTQgYGZvb0JhcihiYXo6IHN0cmluZywgb3B0aW9uczogRm9vQmFyT3B0aW9ucylgLlxuICpcbiAqIE9ubHkgY2hlY2tzIHBhcmFtZXRlcnMgd2hvc2UgdHlwZSBhbm5vdGF0aW9uIG5hbWUgZW5kcyB3aXRoIGBQYXJhbXNgIG9yXG4gKiBgT3B0aW9uc2AuIE9ubHkgY2hlY2tzIGV4cG9ydGVkIGZ1bmN0aW9ucyBhbmQgbWVtYmVycyBvZiBleHBvcnRlZCBjbGFzc2VzXG4gKiAocmVnYXJkbGVzcyBvZiBhY2Nlc3NpYmlsaXR5IFx1MjAxNCBgcHVibGljYCwgYHByb3RlY3RlZGAsIGFuZCBgcHJpdmF0ZWAgYXJlIGFsbFxuICogY2hlY2tlZCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGZyb20gaW50ZXJuYWwgb3B0aW9ucy1wYXNzdGhyb3VnaCBoZWxwZXJzLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUnVsZS5Ob2RlIHBhcmVudC9wcm9wZXJ0eSB0eXBlcyBhcmUgd2lkZXIgdGhhbiB3aGF0IHRoZSB0eXBlIGNoZWNrZXIgaW5mZXJzOyBkZWZlbnNpdmUgY2hlY2tzIGFyZSBhcHByb3ByaWF0ZSBmb3IgQVNUIHRyYXZlcnNhbC4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuY29uc3QgUEFSQU1TX09QVElPTlNfU1VGRklYX1BBVFRFUk4gPSAvKD86UGFyYW1zfE9wdGlvbnMpJC87XG5jb25zdCBQQVJBTVNfU1VGRklYID0gJ1BhcmFtcyc7XG5jb25zdCBPUFRJT05TX1NVRkZJWCA9ICdPcHRpb25zJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBwYXJhbWV0ZXItYmFnIHR5cGUncyBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIChwcmVmaXggYW5kIHJlcXVpcmVkL29wdGlvbmFsIHN1ZmZpeCkgZm9yIGl0cyBmdW5jdGlvbiBvciBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncGFyYW1zT3B0aW9uc05hbWVNYXRjaCc7XG5cbmludGVyZmFjZSBGdW5jdGlvbk5vZGVXaXRoUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGFyYW1zOiBSdWxlLk5vZGVbXTtcbn1cblxuaW50ZXJmYWNlIE1heWJlT3B0aW9uYWxOb2RlIHtcbiAgcmVhZG9ubHkgb3B0aW9uYWw/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVHlwZUFubm90YXRpb25JbmZvIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBub2RlOiBSdWxlLk5vZGU7XG59XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIGAqUGFyYW1zYC9gKk9wdGlvbnNgIHR5cGUgbmFtZXMgdG8gbWF0Y2ggdGhlaXIgb3duaW5nIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yLCBhbmQgdG8gdXNlIHRoZSBzdWZmaXggdGhhdCBtYXRjaGVzIHRoZSBzb2xlLXZzLXN1cHBsZW1lbnRhcnkgYXJndW1lbnQgY29udmVudGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcmFtc09wdGlvbnNOYW1lTWF0Y2g6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbltwYXJhbXMubGVuZ3RoPjBdJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc0luRXhwb3J0ZWRTY29wZShub2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25Ob2RlV2l0aFBhcmFtcyAmIFJ1bGUuTm9kZTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBnZXRFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgICAgICAgaWYgKCFleHBlY3RlZFByZWZpeCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzU29sZVBhcmFtZXRlciA9IGZ1bmN0aW9uTm9kZS5wYXJhbXMubGVuZ3RoID09PSAxO1xuXG4gICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uTm9kZS5wYXJhbXMpIHtcbiAgICAgICAgICBjb25zdCB0eXBlSW5mbyA9IGdldFR5cGVBbm5vdGF0aW9uSW5mbyhwYXJhbWV0ZXIpO1xuICAgICAgICAgIGlmICghdHlwZUluZm8gfHwgIVBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOLnRlc3QodHlwZUluZm8ubmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEEgcmVxdWlyZWQgc29sZS1hcmd1bWVudCBiYWcgXHUyMTkyIGAqUGFyYW1zYC4gQW4gb3B0aW9uYWwgYmFnIChgP2Agb3IgYSBkZWZhdWx0XG4gICAgICAgICAgLy8gdmFsdWUpIG9yIGEgYmFnIHN1cHBsZW1lbnRhcnkgdG8gb3RoZXIgcGFyYW1ldGVycyBcdTIxOTIgYCpPcHRpb25zYC5cbiAgICAgICAgICBjb25zdCBleHBlY3RlZFN1ZmZpeCA9IGlzU29sZVBhcmFtZXRlciAmJiAhaXNPcHRpb25hbFBhcmFtZXRlcihwYXJhbWV0ZXIpID8gUEFSQU1TX1NVRkZJWCA6IE9QVElPTlNfU1VGRklYO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IGAke2V4cGVjdGVkUHJlZml4fSR7ZXhwZWN0ZWRTdWZmaXh9YDtcblxuICAgICAgICAgIGlmICh0eXBlSW5mby5uYW1lICE9PSBleHBlY3RlZE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFjdHVhbE5hbWU6IHR5cGVJbmZvLm5hbWUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWROYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICAgICAgbm9kZTogdHlwZUluZm8ubm9kZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBgKlBhcmFtc2AvYCpPcHRpb25zYCB0eXBlIG5hbWVzIHRvIG1hdGNoIHRoZSBvd25pbmcgZnVuY3Rpb24vY29uc3RydWN0b3IgKHByZWZpeCkgYW5kIHRoZSBzb2xlLXZzLXN1cHBsZW1lbnRhcnkgYXJndW1lbnQgY29udmVudGlvbiAoc3VmZml4KSdcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdUeXBlIFwie3sgYWN0dWFsTmFtZSB9fVwiIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIFwie3sgZXhwZWN0ZWROYW1lIH19XCIgZm9yIHRoaXMgZnVuY3Rpb24vY29uc3RydWN0b3IuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKG1ldGhvZERlZmluaXRpb246IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGNsYXNzQm9keSA9IG1ldGhvZERlZmluaXRpb24ucGFyZW50O1xuICBjb25zdCBjbGFzc05vZGUgPSBjbGFzc0JvZHk/LnBhcmVudDtcbiAgcmV0dXJuICFjbGFzc05vZGUgfHwgISgnaWQnIGluIGNsYXNzTm9kZSkgfHwgIWNsYXNzTm9kZS5pZCB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkICE9PSAnb2JqZWN0JyB8fCAhKCduYW1lJyBpbiBjbGFzc05vZGUuaWQpXG4gICAgICB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkLm5hbWUgIT09ICdzdHJpbmcnXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IGNsYXNzTm9kZS5pZC5uYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRFeHBlY3RlZFByZWZpeChub2RlOiBSdWxlLk5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBtZXRob2RQcmVmaXggPSBnZXRNZXRob2RFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgcmV0dXJuIG1ldGhvZFByZWZpeCA/PyBnZXRGdW5jdGlvbkV4cGVjdGVkUHJlZml4KG5vZGUpO1xufVxuXG5mdW5jdGlvbiBnZXRGdW5jdGlvbkV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIE5hbWVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uOiBmdW5jdGlvbiBmb29CYXIocGFyYW1zOiBGb29CYXJQYXJhbXMpXG4gIGlmICgnaWQnIGluIG5vZGUgJiYgbm9kZS5pZCAmJiB0eXBlb2Ygbm9kZS5pZCA9PT0gJ29iamVjdCcgJiYgJ25hbWUnIGluIG5vZGUuaWQgJiYgdHlwZW9mIG5vZGUuaWQubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdG9QYXNjYWxDYXNlKG5vZGUuaWQubmFtZSk7XG4gIH1cblxuICAvLyBBcnJvdyBmdW5jdGlvbiBhc3NpZ25lZCB0byBhIHZhcmlhYmxlOiBjb25zdCBmb29CYXIgPSAocGFyYW1zOiBGb29CYXJQYXJhbXMpID0+IC4uLlxuICByZXR1cm4gbm9kZS5wYXJlbnQ/LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InICYmICdpZCcgaW4gbm9kZS5wYXJlbnQgJiYgbm9kZS5wYXJlbnQuaWQgJiYgdHlwZW9mIG5vZGUucGFyZW50LmlkID09PSAnb2JqZWN0JyAmJiAnbmFtZScgaW4gbm9kZS5wYXJlbnQuaWRcbiAgICAgICYmIHR5cGVvZiBub2RlLnBhcmVudC5pZC5uYW1lID09PSAnc3RyaW5nJ1xuICAgID8gdG9QYXNjYWxDYXNlKG5vZGUucGFyZW50LmlkLm5hbWUpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE1ldGhvZEV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1ldGhvZERlZmluaXRpb24gPSBub2RlLnBhcmVudDtcbiAgaWYgKG1ldGhvZERlZmluaXRpb24/LnR5cGUgIT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIE1ldGhvZERlZmluaXRpb24gYWx3YXlzIGhhcyBhIG5hbWVkIGtleS4gKi9cbiAgaWYgKFxuICAgICEoJ2tleScgaW4gbWV0aG9kRGVmaW5pdGlvbikgfHwgIW1ldGhvZERlZmluaXRpb24ua2V5IHx8IHR5cGVvZiBtZXRob2REZWZpbml0aW9uLmtleSAhPT0gJ29iamVjdCcgfHwgISgnbmFtZScgaW4gbWV0aG9kRGVmaW5pdGlvbi5rZXkpIHx8IHR5cGVvZiBtZXRob2REZWZpbml0aW9uLmtleS5uYW1lICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZERlZmluaXRpb24ua2V5Lm5hbWU7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGdldENsYXNzTmFtZShtZXRob2REZWZpbml0aW9uKTtcbiAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicgPyBgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JgIDogY2xhc3NOYW1lICsgdG9QYXNjYWxDYXNlKG1ldGhvZE5hbWUpO1xufVxuXG5mdW5jdGlvbiBnZXRUeXBlQW5ub3RhdGlvbkluZm8ocGFyYW1ldGVyOiBSdWxlLk5vZGUpOiBUeXBlQW5ub3RhdGlvbkluZm8gfCB1bmRlZmluZWQge1xuICAvLyBVbndyYXAgYSBkZWZhdWx0ZWQgcGFyYW1ldGVyIHN1Y2ggYXMgYG9wdGlvbnM6IEZvb09wdGlvbnMgPSB7fWAuXG4gIC8vIEl0cyB0eXBlIGFubm90YXRpb24gbGl2ZXMgb24gdGhlIEFzc2lnbm1lbnRQYXR0ZXJuJ3MgbGVmdC1oYW5kIGJpbmRpbmcuXG4gIGNvbnN0IHRhcmdldCA9IHBhcmFtZXRlci50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nID8gcGFyYW1ldGVyLmxlZnQgOiBwYXJhbWV0ZXI7XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVHlwZVNjcmlwdC1wYXJzZWQgcGFyYW1zIGFsd2F5cyBoYXZlIHR5cGVBbm5vdGF0aW9uIHdoZW4gdHlwZWQuICovXG4gIGlmICghKCd0eXBlQW5ub3RhdGlvbicgaW4gdGFyZ2V0KSB8fCAhdGFyZ2V0LnR5cGVBbm5vdGF0aW9uKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gIGNvbnN0IGFubm90YXRpb24gPSB0YXJnZXQudHlwZUFubm90YXRpb24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHR5cGVOb2RlID0gYW5ub3RhdGlvblsndHlwZUFubm90YXRpb24nXTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogdGhlIFR5cGVTY3JpcHQgcGFyc2VyIGFsd2F5cyBwcm9kdWNlcyBhbiBBU1Qgbm9kZSBmb3IgdHlwZUFubm90YXRpb24uICovXG4gIGlmICghdHlwZU5vZGUgfHwgdHlwZW9mIHR5cGVOb2RlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCB0eXBlTm9kZU9iamVjdCA9IHR5cGVOb2RlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8vIERpcmVjdCByZWZlcmVuY2U6IEZvb0JhclBhcmFtc1xuICBpZiAodHlwZU5vZGVPYmplY3RbJ3R5cGUnXSA9PT0gJ1RTVHlwZVJlZmVyZW5jZScgJiYgdHlwZU5vZGVPYmplY3RbJ3R5cGVOYW1lJ10gJiYgdHlwZW9mIHR5cGVOb2RlT2JqZWN0Wyd0eXBlTmFtZSddID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5vZGVPYmplY3RbJ3R5cGVOYW1lJ10gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVFNUeXBlUmVmZXJlbmNlIHR5cGVOYW1lIGlzIGFsd2F5cyBhbiBJZGVudGlmaWVyIHdpdGggYSBzdHJpbmcgbmFtZS4gKi9cbiAgICBpZiAodHlwZU5hbWVbJ3R5cGUnXSA9PT0gJ0lkZW50aWZpZXInICYmIHR5cGVvZiB0eXBlTmFtZVsnbmFtZSddID09PSAnc3RyaW5nJykge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIHJldHVybiB7IG5hbWU6IHR5cGVOYW1lWyduYW1lJ10sIG5vZGU6IHR5cGVOb2RlIGFzIFJ1bGUuTm9kZSB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzSW5FeHBvcnRlZFNjb3BlKG5vZGU6IFJ1bGUuTm9kZSk6IGJvb2xlYW4ge1xuICAvLyBDbGFzcyBtZXRob2Qgb3IgY29uc3RydWN0b3I6IGNoZWNrIHRoYXQgdGhlIGNsYXNzIGlzIGV4cG9ydGVkLCByZWdhcmRsZXNzIG9mIGFjY2Vzc2liaWxpdHlcbiAgLy8gKHB1YmxpYy9wcm90ZWN0ZWQvcHJpdmF0ZSBtZW1iZXJzIGFyZSBhbGwgY2hlY2tlZCkuXG4gIGNvbnN0IG1ldGhvZERlZmluaXRpb24gPSBub2RlLnBhcmVudDtcbiAgaWYgKG1ldGhvZERlZmluaXRpb24/LnR5cGUgPT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgIC8vIENoZWNrIGlmIHRoZSBjbGFzcyBpdHNlbGYgaXMgZXhwb3J0ZWRcbiAgICBjb25zdCBjbGFzc0JvZHkgPSBtZXRob2REZWZpbml0aW9uLnBhcmVudDtcbiAgICBjb25zdCBjbGFzc05vZGUgPSBjbGFzc0JvZHk/LnBhcmVudDtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIGFsd2F5cyBoYXMgcGFyZW50IGNoYWluIGZvciBjbGFzcyBtZXRob2RzLiAqL1xuICAgIGlmICghY2xhc3NOb2RlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY29uc3QgY2xhc3NQYXJlbnQgPSBjbGFzc05vZGUucGFyZW50O1xuICAgIHJldHVybiBjbGFzc1BhcmVudD8udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nIHx8IGNsYXNzUGFyZW50Py50eXBlID09PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJztcbiAgfVxuXG4gIC8vIFRvcC1sZXZlbCBmdW5jdGlvbjogY2hlY2sgaWYgZXhwb3J0ZWRcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nKSB7XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50O1xuICAgIHJldHVybiBwYXJlbnROb2RlPy50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicgfHwgcGFyZW50Tm9kZT8udHlwZSA9PT0gJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbic7XG4gIH1cblxuICAvLyBBcnJvdyBmdW5jdGlvbiBpbiB2YXJpYWJsZTogY2hlY2sgaWYgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGlzIGV4cG9ydGVkXG4gIGlmIChub2RlLnBhcmVudD8udHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRvcicpIHtcbiAgICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uID0gbm9kZS5wYXJlbnQucGFyZW50O1xuICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uPy5wYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc09wdGlvbmFsUGFyYW1ldGVyKHBhcmFtZXRlcjogUnVsZS5Ob2RlKTogYm9vbGVhbiB7XG4gIC8vIGBvcHRpb25zOiBGb29PcHRpb25zID0ge31gIGlzIGFuIEFzc2lnbm1lbnRQYXR0ZXJuOyBgb3B0aW9ucz86IEZvb09wdGlvbnNgIGNhcnJpZXMgYW5cbiAgLy8gYG9wdGlvbmFsYCBmbGFnLiBCb3RoIG1ha2UgdGhlIGJhZyBvcHRpb25hbCBcdTIxOTIgYCpPcHRpb25zYC5cbiAgcmV0dXJuIHBhcmFtZXRlci50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nIHx8IChwYXJhbWV0ZXIgYXMgTWF5YmVPcHRpb25hbE5vZGUpLm9wdGlvbmFsID09PSB0cnVlO1xufVxuXG5mdW5jdGlvbiB0b1Bhc2NhbENhc2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xufVxuXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUmUtZW5hYmxlIGFmdGVyIEFTVCB0cmF2ZXJzYWwgY29kZSwgd2hpY2ggaXMgbm93IHRoZSB3aG9sZSBmaWxlOiB0aGUgcHJlZml4IGhlbHBlcnMgbW92ZWQgdG8gbW9kdWxlIHNjb3BlIGFuZCB3YWxrIHRo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
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.mts" />
|
|
2
|
+
import type { Rule } from 'eslint';
|
|
3
|
+
/**
|
|
4
|
+
Message ID reported when `Promise.resolve()` is used for an async no-op instead of `noopAsync()`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MESSAGE_ID = "preferNoopAsync";
|
|
7
|
+
/**
|
|
8
|
+
* ESLint rule preferring `noopAsync()` over `Promise.resolve()` for an async no-op.
|
|
9
|
+
*/
|
|
10
|
+
export declare const preferNoopAsync: Rule.RuleModule;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return '/';
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: 'android'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const existingProcess = globalThis.process;
|
|
23
|
+
|
|
24
|
+
if (!existingProcess) {
|
|
25
|
+
globalThis.process = browserProcess;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (existingProcess.versions?.node) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const existingProcessRecord = existingProcess;
|
|
34
|
+
|
|
35
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
36
|
+
existingProcessRecord[key] ??= value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
existingProcessRecord['browser'] = true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
(function initEsm() {
|
|
43
|
+
ensureDisposeSymbols();
|
|
44
|
+
ensureBrowserProcess();
|
|
45
|
+
})();
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
import { toTSESTreeNode } from "./ts-estree-node.mjs";
|
|
49
|
+
const MESSAGE_ID = "preferNoopAsync";
|
|
50
|
+
const preferNoopAsync = {
|
|
51
|
+
create(context) {
|
|
52
|
+
return {
|
|
53
|
+
"CallExpression"(node) {
|
|
54
|
+
const callNode = toTSESTreeNode(node);
|
|
55
|
+
if (!isPromiseResolveWithNoArguments(callNode)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
context.report({
|
|
59
|
+
fix(fixer) {
|
|
60
|
+
return fixer.replaceText(node, "noopAsync()");
|
|
61
|
+
},
|
|
62
|
+
messageId: MESSAGE_ID,
|
|
63
|
+
node
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
meta: {
|
|
69
|
+
docs: {
|
|
70
|
+
description: "Prefer `noopAsync()` over `Promise.resolve()`"
|
|
71
|
+
},
|
|
72
|
+
fixable: "code",
|
|
73
|
+
messages: {
|
|
74
|
+
[MESSAGE_ID]: "Use `noopAsync()` instead of `Promise.resolve()` for async no-ops."
|
|
75
|
+
},
|
|
76
|
+
schema: [],
|
|
77
|
+
type: "suggestion"
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
function isPromiseResolveWithNoArguments(node) {
|
|
81
|
+
const callee = node.callee;
|
|
82
|
+
return node.arguments.length === 0 && callee.type === "MemberExpression" && callee.object.type === "Identifier" && callee.object.name === "Promise" && callee.property.type === "Identifier" && callee.property.name === "resolve";
|
|
83
|
+
}
|
|
84
|
+
export {
|
|
85
|
+
MESSAGE_ID,
|
|
86
|
+
preferNoopAsync
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3ByZWZlci1ub29wLWFzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHByZWZlci1ub29wLWFzeW5jXG4gKlxuICogUmVwb3J0cyBgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKClgIGFuZCBzdWdnZXN0cyByZXBsYWNpbmcgaXQgd2l0aFxuICogYGF3YWl0IG5vb3BBc3luYygpYCBmb3IgY29uc2lzdGVuY3kgYW5kIHJlYWRhYmlsaXR5LlxuICpcbiAqIGBub29wQXN5bmMoKWAgZnJvbSB0aGUgcHJvamVjdCdzIGBmdW5jdGlvbi50c2AgbW9kdWxlIGlzIHRoZSBjb252ZW50aW9uYWxcbiAqIHdheSB0byBleHByZXNzIGFuIGludGVudGlvbmFsIGFzeW5jIG5vLW9wLlxuICovXG5pbXBvcnQgdHlwZSB7IFRTRVNUcmVlIH0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmltcG9ydCB7IHRvVFNFU1RyZWVOb2RlIH0gZnJvbSAnLi90cy1lc3RyZWUtbm9kZS50cyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGBQcm9taXNlLnJlc29sdmUoKWAgaXMgdXNlZCBmb3IgYW4gYXN5bmMgbm8tb3AgaW5zdGVhZCBvZiBgbm9vcEFzeW5jKClgLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdwcmVmZXJOb29wQXN5bmMnO1xuXG4vKipcbiAqIEVTTGludCBydWxlIHByZWZlcnJpbmcgYG5vb3BBc3luYygpYCBvdmVyIGBQcm9taXNlLnJlc29sdmUoKWAgZm9yIGFuIGFzeW5jIG5vLW9wLlxuICovXG5leHBvcnQgY29uc3QgcHJlZmVyTm9vcEFzeW5jOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdDYWxsRXhwcmVzc2lvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhbGxOb2RlID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG5cbiAgICAgICAgaWYgKCFpc1Byb21pc2VSZXNvbHZlV2l0aE5vQXJndW1lbnRzKGNhbGxOb2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBmaXgoZml4ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXhlci5yZXBsYWNlVGV4dChub2RlLCAnbm9vcEFzeW5jKCknKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZWZlciBgbm9vcEFzeW5jKClgIG92ZXIgYFByb21pc2UucmVzb2x2ZSgpYCdcbiAgICB9LFxuICAgIGZpeGFibGU6ICdjb2RlJyxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnVXNlIGBub29wQXN5bmMoKWAgaW5zdGVhZCBvZiBgUHJvbWlzZS5yZXNvbHZlKClgIGZvciBhc3luYyBuby1vcHMuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgUHJvbWlzZS5yZXNvbHZlKClgIHdpdGggbm8gYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGNhbGwgZXhwcmVzc2lvbiBub2RlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGBQcm9taXNlLnJlc29sdmUoKWAgd2l0aCBubyBhcmd1bWVudHMuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvbWlzZVJlc29sdmVXaXRoTm9Bcmd1bWVudHMobm9kZTogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgY29uc3QgY2FsbGVlID0gbm9kZS5jYWxsZWU7XG5cbiAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLiAqL1xuICByZXR1cm4gbm9kZS5hcmd1bWVudHMubGVuZ3RoID09PSAwXG4gICAgJiYgY2FsbGVlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJ1xuICAgICYmIGNhbGxlZS5vYmplY3QudHlwZSA9PT0gJ0lkZW50aWZpZXInICYmIGNhbGxlZS5vYmplY3QubmFtZSA9PT0gJ1Byb21pc2UnXG4gICAgJiYgY2FsbGVlLnByb3BlcnR5LnR5cGUgPT09ICdJZGVudGlmaWVyJyAmJiBjYWxsZWUucHJvcGVydHkubmFtZSA9PT0gJ3Jlc29sdmUnO1xuICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZW51bS1jb21wYXJpc29uIC0tIEFTVCBub2RlIHR5cGUgc3RyaW5nIGxpdGVyYWxzIG1hdGNoIHRoZSBUU0VTVHJlZSBlbnVtIHZhbHVlcy4gKi9cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsU0FBUyxzQkFBc0I7QUFLeEIsTUFBTSxhQUFhO0FBS25CLE1BQU0sa0JBQW1DO0FBQUEsRUFDOUMsT0FBTyxTQUFTO0FBQ2QsV0FBTztBQUFBLE1BQ0wsaUJBQWlCLE1BQXVCO0FBQ3RDLGNBQU0sV0FBVyxlQUFlLElBQUk7QUFFcEMsWUFBSSxDQUFDLGdDQUFnQyxRQUFRLEdBQUc7QUFDOUM7QUFBQSxRQUNGO0FBRUEsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsSUFBSSxPQUFPO0FBQ1QsbUJBQU8sTUFBTSxZQUFZLE1BQU0sYUFBYTtBQUFBLFVBQzlDO0FBQUEsVUFDQSxXQUFXO0FBQUEsVUFDWDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxNQUNSLENBQUMsVUFBVSxHQUFHO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsTUFBTTtBQUFBLEVBQ1I7QUFDRjtBQVFBLFNBQVMsZ0NBQWdDLE1BQXdDO0FBQy9FLFFBQU0sU0FBUyxLQUFLO0FBR3BCLFNBQU8sS0FBSyxVQUFVLFdBQVcsS0FDNUIsT0FBTyxTQUFTLHNCQUNoQixPQUFPLE9BQU8sU0FBUyxnQkFBZ0IsT0FBTyxPQUFPLFNBQVMsYUFDOUQsT0FBTyxTQUFTLFNBQVMsZ0JBQWdCLE9BQU8sU0FBUyxTQUFTO0FBRXpFOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* ESLint rule: readonly-params-options-result-members
|
|
6
|
+
*
|
|
7
|
+
* Reports an error when an interface or type alias whose name ends with
|
|
8
|
+
* `Params`, `Options`, or `Result` has a property signature that is not
|
|
9
|
+
* `readonly`. Parameter/options/result bags should be immutable — callers
|
|
10
|
+
* should never mutate the object they received.
|
|
11
|
+
*/
|
|
12
|
+
import type { Rule } from 'eslint';
|
|
13
|
+
/**
|
|
14
|
+
Message ID reported when a member of a `*Params`/`*Options`/`*Result` interface is not declared `readonly`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const MESSAGE_ID = "readonlyParamsOptionsResultMembers";
|
|
17
|
+
/**
|
|
18
|
+
* ESLint rule requiring every property of a `*Params`, `*Options`, or `*Result` interface to be `readonly`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const readonlyParamsOptionsResultMembers: Rule.RuleModule;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return '/';
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: 'android'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const existingProcess = globalThis.process;
|
|
23
|
+
|
|
24
|
+
if (!existingProcess) {
|
|
25
|
+
globalThis.process = browserProcess;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (existingProcess.versions?.node) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const existingProcessRecord = existingProcess;
|
|
34
|
+
|
|
35
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
36
|
+
existingProcessRecord[key] ??= value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
existingProcessRecord['browser'] = true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
(function initEsm() {
|
|
43
|
+
ensureDisposeSymbols();
|
|
44
|
+
ensureBrowserProcess();
|
|
45
|
+
})();
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
import { ensureNonNullable } from "@mnaoumov/typescript-lib/type-guards";
|
|
49
|
+
const MESSAGE_ID = "readonlyParamsOptionsResultMembers";
|
|
50
|
+
const readonlyParamsOptionsResultMembers = {
|
|
51
|
+
create(context) {
|
|
52
|
+
return {
|
|
53
|
+
"TSInterfaceDeclaration[id.name=/(?:Params|Options|Result)$/] TSPropertySignature[readonly=false]"(node) {
|
|
54
|
+
reportNonReadonly(context, node);
|
|
55
|
+
},
|
|
56
|
+
"TSTypeAliasDeclaration[id.name=/(?:Params|Options|Result)$/] TSPropertySignature[readonly=false]"(node) {
|
|
57
|
+
reportNonReadonly(context, node);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
meta: {
|
|
62
|
+
docs: {
|
|
63
|
+
description: "Require all properties in `*Params`, `*Options`, and `*Result` interfaces to be `readonly`"
|
|
64
|
+
},
|
|
65
|
+
fixable: "code",
|
|
66
|
+
messages: {
|
|
67
|
+
[MESSAGE_ID]: "Property must be `readonly`. Params/Options/Result interfaces should be immutable."
|
|
68
|
+
},
|
|
69
|
+
schema: [],
|
|
70
|
+
type: "suggestion"
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
function reportNonReadonly($context, node) {
|
|
74
|
+
const propertyNode = node;
|
|
75
|
+
$context.report({
|
|
76
|
+
fix(fixer) {
|
|
77
|
+
return fixer.insertTextBefore(ensureNonNullable(propertyNode.key), "readonly ");
|
|
78
|
+
},
|
|
79
|
+
messageId: MESSAGE_ID,
|
|
80
|
+
node
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export {
|
|
84
|
+
MESSAGE_ID,
|
|
85
|
+
readonlyParamsOptionsResultMembers
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3JlYWRvbmx5LXBhcmFtcy1vcHRpb25zLXJlc3VsdC1tZW1iZXJzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlYWRvbmx5LXBhcmFtcy1vcHRpb25zLXJlc3VsdC1tZW1iZXJzXG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGFuIGludGVyZmFjZSBvciB0eXBlIGFsaWFzIHdob3NlIG5hbWUgZW5kcyB3aXRoXG4gKiBgUGFyYW1zYCwgYE9wdGlvbnNgLCBvciBgUmVzdWx0YCBoYXMgYSBwcm9wZXJ0eSBzaWduYXR1cmUgdGhhdCBpcyBub3RcbiAqIGByZWFkb25seWAuIFBhcmFtZXRlci9vcHRpb25zL3Jlc3VsdCBiYWdzIHNob3VsZCBiZSBpbW11dGFibGUgXHUyMDE0IGNhbGxlcnNcbiAqIHNob3VsZCBuZXZlciBtdXRhdGUgdGhlIG9iamVjdCB0aGV5IHJlY2VpdmVkLlxuICovXG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgbWVtYmVyIG9mIGEgYCpQYXJhbXNgL2AqT3B0aW9uc2AvYCpSZXN1bHRgIGludGVyZmFjZSBpcyBub3QgZGVjbGFyZWQgYHJlYWRvbmx5YC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncmVhZG9ubHlQYXJhbXNPcHRpb25zUmVzdWx0TWVtYmVycyc7XG5cbmludGVyZmFjZSBQcm9wZXJ0eVNpZ25hdHVyZU5vZGUge1xuICByZWFkb25seSBrZXk6IFJ1bGUuTm9kZTtcbn1cblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgZXZlcnkgcHJvcGVydHkgb2YgYSBgKlBhcmFtc2AsIGAqT3B0aW9uc2AsIG9yIGAqUmVzdWx0YCBpbnRlcmZhY2UgdG8gYmUgYHJlYWRvbmx5YC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlYWRvbmx5UGFyYW1zT3B0aW9uc1Jlc3VsdE1lbWJlcnM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ1RTSW50ZXJmYWNlRGVjbGFyYXRpb25baWQubmFtZT0vKD86UGFyYW1zfE9wdGlvbnN8UmVzdWx0KSQvXSBUU1Byb3BlcnR5U2lnbmF0dXJlW3JlYWRvbmx5PWZhbHNlXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIHJlcG9ydE5vblJlYWRvbmx5KGNvbnRleHQsIG5vZGUpO1xuICAgICAgfSxcbiAgICAgICdUU1R5cGVBbGlhc0RlY2xhcmF0aW9uW2lkLm5hbWU9Lyg/OlBhcmFtc3xPcHRpb25zfFJlc3VsdCkkL10gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGFsbCBwcm9wZXJ0aWVzIGluIGAqUGFyYW1zYCwgYCpPcHRpb25zYCwgYW5kIGAqUmVzdWx0YCBpbnRlcmZhY2VzIHRvIGJlIGByZWFkb25seWAnXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1Byb3BlcnR5IG11c3QgYmUgYHJlYWRvbmx5YC4gUGFyYW1zL09wdGlvbnMvUmVzdWx0IGludGVyZmFjZXMgc2hvdWxkIGJlIGltbXV0YWJsZS4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG5mdW5jdGlvbiByZXBvcnROb25SZWFkb25seSgkY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCwgbm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gIGNvbnN0IHByb3BlcnR5Tm9kZSA9IG5vZGUgYXMgUGFydGlhbDxQcm9wZXJ0eVNpZ25hdHVyZU5vZGU+O1xuICAkY29udGV4dC5yZXBvcnQoe1xuICAgIGZpeChmaXhlcikge1xuICAgICAgcmV0dXJuIGZpeGVyLmluc2VydFRleHRCZWZvcmUoZW5zdXJlTm9uTnVsbGFibGUocHJvcGVydHlOb2RlLmtleSksICdyZWFkb25seSAnKTtcbiAgICB9LFxuICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICBub2RlXG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSxTQUFTLHlCQUF5QjtBQUszQixNQUFNLGFBQWE7QUFTbkIsTUFBTSxxQ0FBc0Q7QUFBQSxFQUNqRSxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxtR0FBbUcsTUFBdUI7QUFDeEgsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsTUFDQSxtR0FBbUcsTUFBdUI7QUFDeEgsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7QUFFQSxTQUFTLGtCQUFrQixVQUE0QixNQUF1QjtBQUM1RSxRQUFNLGVBQWU7QUFDckIsV0FBUyxPQUFPO0FBQUEsSUFDZCxJQUFJLE9BQU87QUFDVCxhQUFPLE1BQU0saUJBQWlCLGtCQUFrQixhQUFhLEdBQUcsR0FBRyxXQUFXO0FBQUEsSUFDaEY7QUFBQSxJQUNBLFdBQVc7QUFBQSxJQUNYO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.mts" />
|
|
2
|
+
import type { Rule } from 'eslint';
|
|
3
|
+
/**
|
|
4
|
+
Message ID reported when a method type parameter has no matching `@typeParam` tag.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MESSAGE_ID_MISSING_TEMPLATE = "missingTemplate";
|
|
7
|
+
/**
|
|
8
|
+
Message ID reported when a method's `@typeParam` tag is missing a description.
|
|
9
|
+
*/
|
|
10
|
+
export declare const MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION = "missingTemplateDescription";
|
|
11
|
+
/**
|
|
12
|
+
* ESLint rule requiring every generic method type parameter to carry a `@typeParam` tag with a description.
|
|
13
|
+
*/
|
|
14
|
+
export declare const requireMethodTemplate: Rule.RuleModule;
|