@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,27 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* `no-restricted-syntax` rule entries for the shared ESLint config.
|
|
6
|
+
*
|
|
7
|
+
* Exported as a standalone constant so each selector can be unit-tested
|
|
8
|
+
* independently of the larger declarative config.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* A single `no-restricted-syntax` entry pairing an ESLint AST selector with a
|
|
12
|
+
* human-readable message explaining why the pattern is banned.
|
|
13
|
+
*/
|
|
14
|
+
export interface NoRestrictedSyntaxRuleEntry {
|
|
15
|
+
/**
|
|
16
|
+
* Human-readable message shown when the selector matches.
|
|
17
|
+
*/
|
|
18
|
+
message: string;
|
|
19
|
+
/**
|
|
20
|
+
* ESLint AST selector identifying the banned pattern.
|
|
21
|
+
*/
|
|
22
|
+
selector: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Restricted-syntax entries enforced by the shared ESLint config.
|
|
26
|
+
*/
|
|
27
|
+
export declare const noRestrictedSyntaxRuleEntries: readonly NoRestrictedSyntaxRuleEntry[];
|
|
@@ -0,0 +1,93 @@
|
|
|
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 noRestrictedSyntaxRuleEntries = [
|
|
49
|
+
{
|
|
50
|
+
message: "Do not use definite assignment assertions (!). Initialize the field or make it optional.",
|
|
51
|
+
selector: "PropertyDefinition[definite=true]"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
message: "Do not use anonymous inline object types. Define a named interface or `type` alias instead.",
|
|
55
|
+
selector: "TSTypeLiteral:not(TSTypeAliasDeclaration > TSTypeLiteral)"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
message: "Do not use anonymous inline mapped types. Define a named `type` alias instead.",
|
|
59
|
+
selector: "TSMappedType:not(TSTypeAliasDeclaration > TSMappedType)"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
message: "Do not use double type assertions (as X as Y).",
|
|
63
|
+
selector: "TSAsExpression > TSAsExpression"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
message: 'Do not use `as never`. It silently satisfies type constraints by claiming "this value is of every type" \u2014 almost always masks a real type mismatch. Fix the underlying types instead.',
|
|
67
|
+
selector: "TSAsExpression > TSNeverKeyword"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
message: "Do not use `<never>` type assertions. Same reasoning as `as never`.",
|
|
71
|
+
selector: "TSTypeAssertion > TSNeverKeyword"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
message: "Do not use _ prefix on methods or functions. The _ prefix is for unused parameters only.",
|
|
75
|
+
selector: "MethodDefinition[key.name=/^_/]:not([override=true])"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
message: "Do not use _ prefix on methods or functions. The _ prefix is for unused parameters only.",
|
|
79
|
+
selector: "FunctionDeclaration[id.name=/^_/]"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
message: 'Do not rename imports with "Mock" in the alias. Mock classes are the canonical types \u2014 use the original name.',
|
|
83
|
+
selector: "ImportSpecifier[local.name=/Mock/]:not([imported.name=/Mock/])"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
message: "Do not use `declare` on class properties. Initialize the property or use a regular type annotation.",
|
|
87
|
+
selector: "PropertyDefinition[declare=true]"
|
|
88
|
+
}
|
|
89
|
+
];
|
|
90
|
+
export {
|
|
91
|
+
noRestrictedSyntaxRuleEntries
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogYG5vLXJlc3RyaWN0ZWQtc3ludGF4YCBydWxlIGVudHJpZXMgZm9yIHRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZy5cbiAqXG4gKiBFeHBvcnRlZCBhcyBhIHN0YW5kYWxvbmUgY29uc3RhbnQgc28gZWFjaCBzZWxlY3RvciBjYW4gYmUgdW5pdC10ZXN0ZWRcbiAqIGluZGVwZW5kZW50bHkgb2YgdGhlIGxhcmdlciBkZWNsYXJhdGl2ZSBjb25maWcuXG4gKi9cblxuLyoqXG4gKiBBIHNpbmdsZSBgbm8tcmVzdHJpY3RlZC1zeW50YXhgIGVudHJ5IHBhaXJpbmcgYW4gRVNMaW50IEFTVCBzZWxlY3RvciB3aXRoIGFcbiAqIGh1bWFuLXJlYWRhYmxlIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIHBhdHRlcm4gaXMgYmFubmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vUmVzdHJpY3RlZFN5bnRheFJ1bGVFbnRyeSB7XG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBtZXNzYWdlIHNob3duIHdoZW4gdGhlIHNlbGVjdG9yIG1hdGNoZXMuXG4gICAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVTTGludCBBU1Qgc2VsZWN0b3IgaWRlbnRpZnlpbmcgdGhlIGJhbm5lZCBwYXR0ZXJuLlxuICAgKi9cbiAgc2VsZWN0b3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN0cmljdGVkLXN5bnRheCBlbnRyaWVzIGVuZm9yY2VkIGJ5IHRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZy5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vUmVzdHJpY3RlZFN5bnRheFJ1bGVFbnRyaWVzOiByZWFkb25seSBOb1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cnlbXSA9IFtcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9ucyAoISkuIEluaXRpYWxpemUgdGhlIGZpZWxkIG9yIG1ha2UgaXQgb3B0aW9uYWwuJyxcbiAgICBzZWxlY3RvcjogJ1Byb3BlcnR5RGVmaW5pdGlvbltkZWZpbml0ZT10cnVlXSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzLiBEZWZpbmUgYSBuYW1lZCBpbnRlcmZhY2Ugb3IgYHR5cGVgIGFsaWFzIGluc3RlYWQuJyxcbiAgICBzZWxlY3RvcjogJ1RTVHlwZUxpdGVyYWw6bm90KFRTVHlwZUFsaWFzRGVjbGFyYXRpb24gPiBUU1R5cGVMaXRlcmFsKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgbWFwcGVkIHR5cGVzLiBEZWZpbmUgYSBuYW1lZCBgdHlwZWAgYWxpYXMgaW5zdGVhZC4nLFxuICAgIHNlbGVjdG9yOiAnVFNNYXBwZWRUeXBlOm5vdChUU1R5cGVBbGlhc0RlY2xhcmF0aW9uID4gVFNNYXBwZWRUeXBlKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRvdWJsZSB0eXBlIGFzc2VydGlvbnMgKGFzIFggYXMgWSkuJyxcbiAgICBzZWxlY3RvcjogJ1RTQXNFeHByZXNzaW9uID4gVFNBc0V4cHJlc3Npb24nXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBgYXMgbmV2ZXJgLiBJdCBzaWxlbnRseSBzYXRpc2ZpZXMgdHlwZSBjb25zdHJhaW50cyBieSBjbGFpbWluZyBcInRoaXMgdmFsdWUgaXMgb2YgZXZlcnkgdHlwZVwiIFx1MjAxNCBhbG1vc3QgYWx3YXlzIG1hc2tzIGEgcmVhbCB0eXBlIG1pc21hdGNoLiBGaXggdGhlIHVuZGVybHlpbmcgdHlwZXMgaW5zdGVhZC4nLFxuICAgIHNlbGVjdG9yOiAnVFNBc0V4cHJlc3Npb24gPiBUU05ldmVyS2V5d29yZCdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGA8bmV2ZXI+YCB0eXBlIGFzc2VydGlvbnMuIFNhbWUgcmVhc29uaW5nIGFzIGBhcyBuZXZlcmAuJyxcbiAgICBzZWxlY3RvcjogJ1RTVHlwZUFzc2VydGlvbiA+IFRTTmV2ZXJLZXl3b3JkJ1xuICB9LFxuICB7XG4gICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgXyBwcmVmaXggb24gbWV0aG9kcyBvciBmdW5jdGlvbnMuIFRoZSBfIHByZWZpeCBpcyBmb3IgdW51c2VkIHBhcmFtZXRlcnMgb25seS4nLFxuICAgIHNlbGVjdG9yOiAnTWV0aG9kRGVmaW5pdGlvbltrZXkubmFtZT0vXl8vXTpub3QoW292ZXJyaWRlPXRydWVdKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIF8gcHJlZml4IG9uIG1ldGhvZHMgb3IgZnVuY3Rpb25zLiBUaGUgXyBwcmVmaXggaXMgZm9yIHVudXNlZCBwYXJhbWV0ZXJzIG9ubHkuJyxcbiAgICBzZWxlY3RvcjogJ0Z1bmN0aW9uRGVjbGFyYXRpb25baWQubmFtZT0vXl8vXSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgcmVuYW1lIGltcG9ydHMgd2l0aCBcIk1vY2tcIiBpbiB0aGUgYWxpYXMuIE1vY2sgY2xhc3NlcyBhcmUgdGhlIGNhbm9uaWNhbCB0eXBlcyBcdTIwMTQgdXNlIHRoZSBvcmlnaW5hbCBuYW1lLicsXG4gICAgc2VsZWN0b3I6ICdJbXBvcnRTcGVjaWZpZXJbbG9jYWwubmFtZT0vTW9jay9dOm5vdChbaW1wb3J0ZWQubmFtZT0vTW9jay9dKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGBkZWNsYXJlYCBvbiBjbGFzcyBwcm9wZXJ0aWVzLiBJbml0aWFsaXplIHRoZSBwcm9wZXJ0eSBvciB1c2UgYSByZWd1bGFyIHR5cGUgYW5ub3RhdGlvbi4nLFxuICAgIHNlbGVjdG9yOiAnUHJvcGVydHlEZWZpbml0aW9uW2RlY2xhcmU9dHJ1ZV0nXG4gIH1cbl07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCTyxNQUFNLGdDQUF3RTtBQUFBLEVBQ25GO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* The generic in-house ESLint rules, and the plugin that registers them.
|
|
6
|
+
*
|
|
7
|
+
* Every in-house rule is registered under ONE namespace, {@link IN_HOUSE_ESLINT_PLUGIN_NAME}, whichever package
|
|
8
|
+
* defines it, so a disable comment naming `obsidian-dev-utils/<rule>` keeps working however the rules are split
|
|
9
|
+
* between packages. ESLint refuses two different plugin objects under one namespace in a single configuration, so a
|
|
10
|
+
* package adding rules of its own builds ONE plugin from {@link genericInHouseEslintRules} plus its own and hands
|
|
11
|
+
* that to the generic configuration, rather than registering a second plugin beside {@link inHouseEslintPlugin}.
|
|
12
|
+
*/
|
|
13
|
+
import type { ESLint } from 'eslint';
|
|
14
|
+
/**
|
|
15
|
+
* The namespace every in-house rule is registered under. It keeps the name of the library the rules started in,
|
|
16
|
+
* because existing disable comments name it.
|
|
17
|
+
*/
|
|
18
|
+
export declare const IN_HOUSE_ESLINT_PLUGIN_NAME = "obsidian-dev-utils";
|
|
19
|
+
/**
|
|
20
|
+
* The generic in-house rules, keyed by their name inside {@link IN_HOUSE_ESLINT_PLUGIN_NAME}.
|
|
21
|
+
*/
|
|
22
|
+
export declare const genericInHouseEslintRules: NonNullable<ESLint.Plugin['rules']>;
|
|
23
|
+
/**
|
|
24
|
+
* The ESLint plugin registering the generic in-house rules alone, for a project that adds none of its own.
|
|
25
|
+
*/
|
|
26
|
+
export declare const inHouseEslintPlugin: ESLint.Plugin;
|
|
@@ -0,0 +1,77 @@
|
|
|
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 { noAsyncCallbackToUnsafeReturn } from "./no-async-callback-to-unsafe-return.mjs";
|
|
49
|
+
import { noUnresolvedJsdocLink } from "./no-unresolved-jsdoc-link.mjs";
|
|
50
|
+
import { noUnusedParamsMembers } from "./no-unused-params-members.mjs";
|
|
51
|
+
import { noUsedUnderscoreVariables } from "./no-used-underscore-variables.mjs";
|
|
52
|
+
import { paramsOptionsNameMatch } from "./params-options-name-match.mjs";
|
|
53
|
+
import { preferNoopAsync } from "./prefer-noop-async.mjs";
|
|
54
|
+
import { readonlyParamsOptionsResultMembers } from "./readonly-params-options-result-members.mjs";
|
|
55
|
+
import { requireMethodTemplate } from "./require-method-template.mjs";
|
|
56
|
+
import { requireSuperCall } from "./require-super-call.mjs";
|
|
57
|
+
const IN_HOUSE_ESLINT_PLUGIN_NAME = "obsidian-dev-utils";
|
|
58
|
+
const genericInHouseEslintRules = {
|
|
59
|
+
"no-async-callback-to-unsafe-return": noAsyncCallbackToUnsafeReturn,
|
|
60
|
+
"no-unresolved-jsdoc-link": noUnresolvedJsdocLink,
|
|
61
|
+
"no-unused-params-members": noUnusedParamsMembers,
|
|
62
|
+
"no-used-underscore-variables": noUsedUnderscoreVariables,
|
|
63
|
+
"params-options-name-match": paramsOptionsNameMatch,
|
|
64
|
+
"prefer-noop-async": preferNoopAsync,
|
|
65
|
+
"readonly-params-options-result-members": readonlyParamsOptionsResultMembers,
|
|
66
|
+
"require-method-template": requireMethodTemplate,
|
|
67
|
+
"require-super-call": requireSuperCall
|
|
68
|
+
};
|
|
69
|
+
const inHouseEslintPlugin = {
|
|
70
|
+
rules: genericInHouseEslintRules
|
|
71
|
+
};
|
|
72
|
+
export {
|
|
73
|
+
IN_HOUSE_ESLINT_PLUGIN_NAME,
|
|
74
|
+
genericInHouseEslintRules,
|
|
75
|
+
inHouseEslintPlugin
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL2luLWhvdXNlLXBsdWdpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBnZW5lcmljIGluLWhvdXNlIEVTTGludCBydWxlcywgYW5kIHRoZSBwbHVnaW4gdGhhdCByZWdpc3RlcnMgdGhlbS5cbiAqXG4gKiBFdmVyeSBpbi1ob3VzZSBydWxlIGlzIHJlZ2lzdGVyZWQgdW5kZXIgT05FIG5hbWVzcGFjZSwge0BsaW5rIElOX0hPVVNFX0VTTElOVF9QTFVHSU5fTkFNRX0sIHdoaWNoZXZlciBwYWNrYWdlXG4gKiBkZWZpbmVzIGl0LCBzbyBhIGRpc2FibGUgY29tbWVudCBuYW1pbmcgYG9ic2lkaWFuLWRldi11dGlscy88cnVsZT5gIGtlZXBzIHdvcmtpbmcgaG93ZXZlciB0aGUgcnVsZXMgYXJlIHNwbGl0XG4gKiBiZXR3ZWVuIHBhY2thZ2VzLiBFU0xpbnQgcmVmdXNlcyB0d28gZGlmZmVyZW50IHBsdWdpbiBvYmplY3RzIHVuZGVyIG9uZSBuYW1lc3BhY2UgaW4gYSBzaW5nbGUgY29uZmlndXJhdGlvbiwgc28gYVxuICogcGFja2FnZSBhZGRpbmcgcnVsZXMgb2YgaXRzIG93biBidWlsZHMgT05FIHBsdWdpbiBmcm9tIHtAbGluayBnZW5lcmljSW5Ib3VzZUVzbGludFJ1bGVzfSBwbHVzIGl0cyBvd24gYW5kIGhhbmRzXG4gKiB0aGF0IHRvIHRoZSBnZW5lcmljIGNvbmZpZ3VyYXRpb24sIHJhdGhlciB0aGFuIHJlZ2lzdGVyaW5nIGEgc2Vjb25kIHBsdWdpbiBiZXNpZGUge0BsaW5rIGluSG91c2VFc2xpbnRQbHVnaW59LlxuICovXG5cbmltcG9ydCB0eXBlIHsgRVNMaW50IH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgbm9Bc3luY0NhbGxiYWNrVG9VbnNhZmVSZXR1cm4gfSBmcm9tICcuL25vLWFzeW5jLWNhbGxiYWNrLXRvLXVuc2FmZS1yZXR1cm4udHMnO1xuaW1wb3J0IHsgbm9VbnJlc29sdmVkSnNkb2NMaW5rIH0gZnJvbSAnLi9uby11bnJlc29sdmVkLWpzZG9jLWxpbmsudHMnO1xuaW1wb3J0IHsgbm9VbnVzZWRQYXJhbXNNZW1iZXJzIH0gZnJvbSAnLi9uby11bnVzZWQtcGFyYW1zLW1lbWJlcnMudHMnO1xuaW1wb3J0IHsgbm9Vc2VkVW5kZXJzY29yZVZhcmlhYmxlcyB9IGZyb20gJy4vbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcy50cyc7XG5pbXBvcnQgeyBwYXJhbXNPcHRpb25zTmFtZU1hdGNoIH0gZnJvbSAnLi9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoLnRzJztcbmltcG9ydCB7IHByZWZlck5vb3BBc3luYyB9IGZyb20gJy4vcHJlZmVyLW5vb3AtYXN5bmMudHMnO1xuaW1wb3J0IHsgcmVhZG9ubHlQYXJhbXNPcHRpb25zUmVzdWx0TWVtYmVycyB9IGZyb20gJy4vcmVhZG9ubHktcGFyYW1zLW9wdGlvbnMtcmVzdWx0LW1lbWJlcnMudHMnO1xuaW1wb3J0IHsgcmVxdWlyZU1ldGhvZFRlbXBsYXRlIH0gZnJvbSAnLi9yZXF1aXJlLW1ldGhvZC10ZW1wbGF0ZS50cyc7XG5pbXBvcnQgeyByZXF1aXJlU3VwZXJDYWxsIH0gZnJvbSAnLi9yZXF1aXJlLXN1cGVyLWNhbGwudHMnO1xuXG4vKipcbiAqIFRoZSBuYW1lc3BhY2UgZXZlcnkgaW4taG91c2UgcnVsZSBpcyByZWdpc3RlcmVkIHVuZGVyLiBJdCBrZWVwcyB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB0aGUgcnVsZXMgc3RhcnRlZCBpbixcbiAqIGJlY2F1c2UgZXhpc3RpbmcgZGlzYWJsZSBjb21tZW50cyBuYW1lIGl0LlxuICovXG5leHBvcnQgY29uc3QgSU5fSE9VU0VfRVNMSU5UX1BMVUdJTl9OQU1FID0gJ29ic2lkaWFuLWRldi11dGlscyc7XG5cbi8qKlxuICogVGhlIGdlbmVyaWMgaW4taG91c2UgcnVsZXMsIGtleWVkIGJ5IHRoZWlyIG5hbWUgaW5zaWRlIHtAbGluayBJTl9IT1VTRV9FU0xJTlRfUExVR0lOX05BTUV9LlxuICovXG5leHBvcnQgY29uc3QgZ2VuZXJpY0luSG91c2VFc2xpbnRSdWxlczogTm9uTnVsbGFibGU8RVNMaW50LlBsdWdpblsncnVsZXMnXT4gPSB7XG4gICduby1hc3luYy1jYWxsYmFjay10by11bnNhZmUtcmV0dXJuJzogbm9Bc3luY0NhbGxiYWNrVG9VbnNhZmVSZXR1cm4sXG4gICduby11bnJlc29sdmVkLWpzZG9jLWxpbmsnOiBub1VucmVzb2x2ZWRKc2RvY0xpbmssXG4gICduby11bnVzZWQtcGFyYW1zLW1lbWJlcnMnOiBub1VudXNlZFBhcmFtc01lbWJlcnMsXG4gICduby11c2VkLXVuZGVyc2NvcmUtdmFyaWFibGVzJzogbm9Vc2VkVW5kZXJzY29yZVZhcmlhYmxlcyxcbiAgJ3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gnOiBwYXJhbXNPcHRpb25zTmFtZU1hdGNoLFxuICAncHJlZmVyLW5vb3AtYXN5bmMnOiBwcmVmZXJOb29wQXN5bmMsXG4gICdyZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVycyc6IHJlYWRvbmx5UGFyYW1zT3B0aW9uc1Jlc3VsdE1lbWJlcnMsXG4gICdyZXF1aXJlLW1ldGhvZC10ZW1wbGF0ZSc6IHJlcXVpcmVNZXRob2RUZW1wbGF0ZSxcbiAgJ3JlcXVpcmUtc3VwZXItY2FsbCc6IHJlcXVpcmVTdXBlckNhbGxcbn07XG5cbi8qKlxuICogVGhlIEVTTGludCBwbHVnaW4gcmVnaXN0ZXJpbmcgdGhlIGdlbmVyaWMgaW4taG91c2UgcnVsZXMgYWxvbmUsIGZvciBhIHByb2plY3QgdGhhdCBhZGRzIG5vbmUgb2YgaXRzIG93bi5cbiAqL1xuZXhwb3J0IGNvbnN0IGluSG91c2VFc2xpbnRQbHVnaW46IEVTTGludC5QbHVnaW4gPSB7XG4gIHJ1bGVzOiBnZW5lcmljSW5Ib3VzZUVzbGludFJ1bGVzXG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFTLHFDQUFxQztBQUM5QyxTQUFTLDZCQUE2QjtBQUN0QyxTQUFTLDZCQUE2QjtBQUN0QyxTQUFTLGlDQUFpQztBQUMxQyxTQUFTLDhCQUE4QjtBQUN2QyxTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLDBDQUEwQztBQUNuRCxTQUFTLDZCQUE2QjtBQUN0QyxTQUFTLHdCQUF3QjtBQU0xQixNQUFNLDhCQUE4QjtBQUtwQyxNQUFNLDRCQUFpRTtBQUFBLEVBQzVFLHNDQUFzQztBQUFBLEVBQ3RDLDRCQUE0QjtBQUFBLEVBQzVCLDRCQUE0QjtBQUFBLEVBQzVCLGdDQUFnQztBQUFBLEVBQ2hDLDZCQUE2QjtBQUFBLEVBQzdCLHFCQUFxQjtBQUFBLEVBQ3JCLDBDQUEwQztBQUFBLEVBQzFDLDJCQUEyQjtBQUFBLEVBQzNCLHNCQUFzQjtBQUN4QjtBQUtPLE1BQU0sc0JBQXFDO0FBQUEsRUFDaEQsT0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.mts" />
|
|
2
|
+
export * as 'in-house-plugin' from './in-house-plugin.mjs';
|
|
3
|
+
export * as 'no-async-callback-to-unsafe-return' from './no-async-callback-to-unsafe-return.mjs';
|
|
4
|
+
export * as 'no-unresolved-jsdoc-link' from './no-unresolved-jsdoc-link.mjs';
|
|
5
|
+
export * as 'no-unused-params-members' from './no-unused-params-members.mjs';
|
|
6
|
+
export * as 'no-used-underscore-variables' from './no-used-underscore-variables.mjs';
|
|
7
|
+
export * as 'params-options-name-match' from './params-options-name-match.mjs';
|
|
8
|
+
export * as 'prefer-noop-async' from './prefer-noop-async.mjs';
|
|
9
|
+
export * as 'readonly-params-options-result-members' from './readonly-params-options-result-members.mjs';
|
|
10
|
+
export * as 'require-method-template' from './require-method-template.mjs';
|
|
11
|
+
export * as 'require-super-call' from './require-super-call.mjs';
|
|
12
|
+
export * as 'rule-tester-helper' from './rule-tester-helper.mjs';
|
|
13
|
+
export * as 'ts-estree-node' from './ts-estree-node.mjs';
|
|
@@ -0,0 +1,74 @@
|
|
|
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 * as in_house_plugin from "./in-house-plugin.mjs";
|
|
49
|
+
import * as no_async_callback_to_unsafe_return from "./no-async-callback-to-unsafe-return.mjs";
|
|
50
|
+
import * as no_unresolved_jsdoc_link from "./no-unresolved-jsdoc-link.mjs";
|
|
51
|
+
import * as no_unused_params_members from "./no-unused-params-members.mjs";
|
|
52
|
+
import * as no_used_underscore_variables from "./no-used-underscore-variables.mjs";
|
|
53
|
+
import * as params_options_name_match from "./params-options-name-match.mjs";
|
|
54
|
+
import * as prefer_noop_async from "./prefer-noop-async.mjs";
|
|
55
|
+
import * as readonly_params_options_result_members from "./readonly-params-options-result-members.mjs";
|
|
56
|
+
import * as require_method_template from "./require-method-template.mjs";
|
|
57
|
+
import * as require_super_call from "./require-super-call.mjs";
|
|
58
|
+
import * as rule_tester_helper from "./rule-tester-helper.mjs";
|
|
59
|
+
import * as ts_estree_node from "./ts-estree-node.mjs";
|
|
60
|
+
export {
|
|
61
|
+
in_house_plugin as "in-house-plugin",
|
|
62
|
+
no_async_callback_to_unsafe_return as "no-async-callback-to-unsafe-return",
|
|
63
|
+
no_unresolved_jsdoc_link as "no-unresolved-jsdoc-link",
|
|
64
|
+
no_unused_params_members as "no-unused-params-members",
|
|
65
|
+
no_used_underscore_variables as "no-used-underscore-variables",
|
|
66
|
+
params_options_name_match as "params-options-name-match",
|
|
67
|
+
prefer_noop_async as "prefer-noop-async",
|
|
68
|
+
readonly_params_options_result_members as "readonly-params-options-result-members",
|
|
69
|
+
require_method_template as "require-method-template",
|
|
70
|
+
require_super_call as "require-super-call",
|
|
71
|
+
rule_tester_helper as "rule-tester-helper",
|
|
72
|
+
ts_estree_node as "ts-estree-node"
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2luLWhvdXNlLXBsdWdpbicgZnJvbSAnLi9pbi1ob3VzZS1wbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgJ25vLWFzeW5jLWNhbGxiYWNrLXRvLXVuc2FmZS1yZXR1cm4nIGZyb20gJy4vbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVybi50cyc7XG5leHBvcnQgKiBhcyAnbm8tdW5yZXNvbHZlZC1qc2RvYy1saW5rJyBmcm9tICcuL25vLXVucmVzb2x2ZWQtanNkb2MtbGluay50cyc7XG5leHBvcnQgKiBhcyAnbm8tdW51c2VkLXBhcmFtcy1tZW1iZXJzJyBmcm9tICcuL25vLXVudXNlZC1wYXJhbXMtbWVtYmVycy50cyc7XG5leHBvcnQgKiBhcyAnbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcycgZnJvbSAnLi9uby11c2VkLXVuZGVyc2NvcmUtdmFyaWFibGVzLnRzJztcbmV4cG9ydCAqIGFzICdwYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoJyBmcm9tICcuL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gudHMnO1xuZXhwb3J0ICogYXMgJ3ByZWZlci1ub29wLWFzeW5jJyBmcm9tICcuL3ByZWZlci1ub29wLWFzeW5jLnRzJztcbmV4cG9ydCAqIGFzICdyZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVycycgZnJvbSAnLi9yZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVycy50cyc7XG5leHBvcnQgKiBhcyAncmVxdWlyZS1tZXRob2QtdGVtcGxhdGUnIGZyb20gJy4vcmVxdWlyZS1tZXRob2QtdGVtcGxhdGUudHMnO1xuZXhwb3J0ICogYXMgJ3JlcXVpcmUtc3VwZXItY2FsbCcgZnJvbSAnLi9yZXF1aXJlLXN1cGVyLWNhbGwudHMnO1xuZXhwb3J0ICogYXMgJ3J1bGUtdGVzdGVyLWhlbHBlcicgZnJvbSAnLi9ydWxlLXRlc3Rlci1oZWxwZXIudHMnO1xuZXhwb3J0ICogYXMgJ3RzLWVzdHJlZS1ub2RlJyBmcm9tICcuL3RzLWVzdHJlZS1ub2RlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsWUFBWUEscUJBQXVCO0FBQ25DLFlBQVlDLHdDQUEwQztBQUN0RCxZQUFZQyw4QkFBZ0M7QUFDNUMsWUFBWUMsOEJBQWdDO0FBQzVDLFlBQVlDLGtDQUFvQztBQUNoRCxZQUFZQywrQkFBaUM7QUFDN0MsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVlDLDRDQUE4QztBQUMxRCxZQUFZQyw2QkFBK0I7QUFDM0MsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZQyxvQkFBc0I7IiwKICAibmFtZXMiOiBbImluLWhvdXNlLXBsdWdpbiIsICJuby1hc3luYy1jYWxsYmFjay10by11bnNhZmUtcmV0dXJuIiwgIm5vLXVucmVzb2x2ZWQtanNkb2MtbGluayIsICJuby11bnVzZWQtcGFyYW1zLW1lbWJlcnMiLCAibm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlcyIsICJwYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIiwgInByZWZlci1ub29wLWFzeW5jIiwgInJlYWRvbmx5LXBhcmFtcy1vcHRpb25zLXJlc3VsdC1tZW1iZXJzIiwgInJlcXVpcmUtbWV0aG9kLXRlbXBsYXRlIiwgInJlcXVpcmUtc3VwZXItY2FsbCIsICJydWxlLXRlc3Rlci1oZWxwZXIiLCAidHMtZXN0cmVlLW5vZGUiXQp9Cg==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.mts" />
|
|
2
|
+
import type { Rule } from 'eslint';
|
|
3
|
+
/**
|
|
4
|
+
Message ID reported when an async function is passed as a callback to a parameter whose return type is `any`/`unknown`, risking an unhandled promise rejection.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MESSAGE_ID = "noAsyncCallbackToUnsafeReturn";
|
|
7
|
+
/**
|
|
8
|
+
* ESLint rule disallowing async functions passed as callbacks to parameters with an `any` or `unknown` return type, where the returned promise is silently dropped.
|
|
9
|
+
*/
|
|
10
|
+
export declare const noAsyncCallbackToUnsafeReturn: Rule.RuleModule;
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
import {
|
|
50
|
+
isIdentifier,
|
|
51
|
+
isTypeAliasDeclaration,
|
|
52
|
+
isTypeReferenceNode,
|
|
53
|
+
isUnionTypeNode,
|
|
54
|
+
SymbolFlags,
|
|
55
|
+
TypeFlags
|
|
56
|
+
} from "typescript";
|
|
57
|
+
import { toTSESTreeNode } from "./ts-estree-node.mjs";
|
|
58
|
+
const MESSAGE_ID = "noAsyncCallbackToUnsafeReturn";
|
|
59
|
+
function hasUnsafeReturnCallSignature(checker, type) {
|
|
60
|
+
return type.getCallSignatures().some((sig) => isUnsafeReturnSignature(checker, sig));
|
|
61
|
+
}
|
|
62
|
+
function isAsyncFunctionNode(node) {
|
|
63
|
+
return (node.type === "ArrowFunctionExpression" || node.type === "FunctionExpression") && node.async;
|
|
64
|
+
}
|
|
65
|
+
const UNSAFE_RETURN_FLAGS = TypeFlags.Any | TypeFlags.Unknown;
|
|
66
|
+
const PROMISE_TYPE_NAMES = /* @__PURE__ */ new Set(["Promise", "PromiseLike"]);
|
|
67
|
+
function containsPromiseReference(checker, node) {
|
|
68
|
+
if (isUnionTypeNode(node)) {
|
|
69
|
+
return node.types.some((member) => containsPromiseReference(checker, member));
|
|
70
|
+
}
|
|
71
|
+
if (isTypeReferenceNode(node)) {
|
|
72
|
+
const name = isIdentifier(node.typeName) ? node.typeName.text : "";
|
|
73
|
+
if (PROMISE_TYPE_NAMES.has(name)) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
let $symbol = checker.getSymbolAtLocation(node.typeName);
|
|
77
|
+
if ($symbol && $symbol.flags & SymbolFlags.Alias) {
|
|
78
|
+
$symbol = checker.getAliasedSymbol($symbol);
|
|
79
|
+
}
|
|
80
|
+
const declaration = $symbol?.declarations?.[0];
|
|
81
|
+
if (declaration && isTypeAliasDeclaration(declaration)) {
|
|
82
|
+
return containsPromiseReference(checker, declaration.type);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
function isUnsafeReturnSignature(checker, sig) {
|
|
88
|
+
const returnType = checker.getReturnTypeOfSignature(sig);
|
|
89
|
+
if (!(returnType.flags & UNSAFE_RETURN_FLAGS)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
const declaration = sig.getDeclaration();
|
|
93
|
+
const returnTypeNode = declaration.type;
|
|
94
|
+
assertNonNullable(returnTypeNode, "Signature declarations with any/unknown return always have a return type annotation");
|
|
95
|
+
return !containsPromiseReference(checker, returnTypeNode);
|
|
96
|
+
}
|
|
97
|
+
const noAsyncCallbackToUnsafeReturn = {
|
|
98
|
+
create(context) {
|
|
99
|
+
const services = context.sourceCode.parserServices;
|
|
100
|
+
const checker = services.program.getTypeChecker();
|
|
101
|
+
return {
|
|
102
|
+
CallExpression(node) {
|
|
103
|
+
const callNode = toTSESTreeNode(node);
|
|
104
|
+
for (let index = 0; index < callNode.arguments.length; index++) {
|
|
105
|
+
const argument = callNode.arguments[index];
|
|
106
|
+
if (!argument || !isAsyncFunctionNode(argument)) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const tsCalleeNode = services.esTreeNodeToTSNodeMap.get(callNode.callee);
|
|
110
|
+
const calleeType = checker.getTypeAtLocation(tsCalleeNode);
|
|
111
|
+
for (const sig of calleeType.getCallSignatures()) {
|
|
112
|
+
const parameter = sig.getParameters()[index];
|
|
113
|
+
if (!parameter) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const parameterType = checker.getTypeOfSymbol(parameter);
|
|
117
|
+
if (hasUnsafeReturnCallSignature(checker, parameterType)) {
|
|
118
|
+
context.report({
|
|
119
|
+
messageId: MESSAGE_ID,
|
|
120
|
+
node: argument
|
|
121
|
+
});
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
},
|
|
129
|
+
meta: {
|
|
130
|
+
docs: {
|
|
131
|
+
description: "Disallow passing async functions as callbacks to parameters with `any` or `unknown` return type"
|
|
132
|
+
},
|
|
133
|
+
messages: {
|
|
134
|
+
[MESSAGE_ID]: "Async function passed as callback to a parameter with `any`/`unknown` return type. This may cause unhandled promise rejections. Wrap the call: `(...args) => { yourAsyncFn(...args); }`."
|
|
135
|
+
},
|
|
136
|
+
schema: [],
|
|
137
|
+
type: "problem"
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
export {
|
|
141
|
+
MESSAGE_ID,
|
|
142
|
+
noAsyncCallbackToUnsafeReturn
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL25vLWFzeW5jLWNhbGxiYWNrLXRvLXVuc2FmZS1yZXR1cm4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogbm8tYXN5bmMtY2FsbGJhY2stdG8tdW5zYWZlLXJldHVyblxuICpcbiAqIFJlcG9ydHMgYW4gZXJyb3Igd2hlbiBhbiBhc3luYyBmdW5jdGlvbiBpcyBwYXNzZWQgYXMgYSBjYWxsYmFjayBhcmd1bWVudFxuICogdG8gYSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2hvc2UgcmV0dXJuIHR5cGUgaXMgYGFueWAgb3IgYHVua25vd25gLiBCZWNhdXNlXG4gKiB0aGVzZSB0eXBlcyBzaWxlbnRseSBhY2NlcHQgYFByb21pc2U8VD5gLCB0aGUgY2FsbGVyIHdvbid0IGF3YWl0IHRoZVxuICogcmVzdWx0LCBsZWFkaW5nIHRvIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnMgYXQgcnVudGltZS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gb25DbGljayhmbjogKGV2dDogTW91c2VFdmVudCkgPT4gYW55KVxuICogYnV0dG9uLm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuICogICBhd2FpdCBzb21lRm4oKTsgLy8gVW5oYW5kbGVkIHJlamVjdGlvbiBpZiBzb21lRm4gdGhyb3dzXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIGBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbWlzdXNlZC1wcm9taXNlc2Agb25seSBjYXRjaGVzIGA9PiB2b2lkYCBjYWxsYmFja3MuXG4gKiBUaGlzIHJ1bGUgY2xvc2VzIHRoZSBnYXAgZm9yIGA9PiBhbnlgIGFuZCBgPT4gdW5rbm93bmAgY2FsbGJhY2tzLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7XG4gIFNpZ25hdHVyZSxcbiAgVHlwZSxcbiAgVHlwZUNoZWNrZXIsXG4gIFR5cGVOb2RlXG59IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQge1xuICBpc0lkZW50aWZpZXIsXG4gIGlzVHlwZUFsaWFzRGVjbGFyYXRpb24sXG4gIGlzVHlwZVJlZmVyZW5jZU5vZGUsXG4gIGlzVW5pb25UeXBlTm9kZSxcbiAgU3ltYm9sRmxhZ3MsXG4gIFR5cGVGbGFnc1xufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgdG9UU0VTVHJlZU5vZGUgfSBmcm9tICcuL3RzLWVzdHJlZS1ub2RlLnRzJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYW4gYXN5bmMgZnVuY3Rpb24gaXMgcGFzc2VkIGFzIGEgY2FsbGJhY2sgdG8gYSBwYXJhbWV0ZXIgd2hvc2UgcmV0dXJuIHR5cGUgaXMgYGFueWAvYHVua25vd25gLCByaXNraW5nIGFuIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAnbm9Bc3luY0NhbGxiYWNrVG9VbnNhZmVSZXR1cm4nO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBUeXBlU2NyaXB0IHR5cGUgaXMgYSBmdW5jdGlvbiB0eXBlIHdpdGggYW4gdW5zYWZlXG4gKiByZXR1cm4gdHlwZSBmb3IgYXN5bmMgY2FsbGJhY2tzLlxuICpcbiAqIEBwYXJhbSBjaGVja2VyIC0gVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIuXG4gKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHR5cGUgaGFzIGF0IGxlYXN0IG9uZSBjYWxsIHNpZ25hdHVyZSB3aXRoIGFuIHVuc2FmZSByZXR1cm4uXG4gKi9cbmZ1bmN0aW9uIGhhc1Vuc2FmZVJldHVybkNhbGxTaWduYXR1cmUoY2hlY2tlcjogVHlwZUNoZWNrZXIsIHR5cGU6IFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUuZ2V0Q2FsbFNpZ25hdHVyZXMoKS5zb21lKChzaWcpID0+IGlzVW5zYWZlUmV0dXJuU2lnbmF0dXJlKGNoZWNrZXIsIHNpZykpO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgbm9kZSBpcyBhbiBhc3luYyBmdW5jdGlvbiBleHByZXNzaW9uIChhcnJvdyBvciByZWd1bGFyKS5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIEFTVCBub2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGFuIGFzeW5jIGFycm93IG9yIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKi9cbmZ1bmN0aW9uIGlzQXN5bmNGdW5jdGlvbk5vZGUobm9kZTogVFNFU1RyZWUuTm9kZSk6IG5vZGUgaXMgVFNFU1RyZWUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gfCBUU0VTVHJlZS5GdW5jdGlvbkV4cHJlc3Npb24ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLlxuICByZXR1cm4gKG5vZGUudHlwZSA9PT0gJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9uJyB8fCBub2RlLnR5cGUgPT09ICdGdW5jdGlvbkV4cHJlc3Npb24nKSAmJiBub2RlLmFzeW5jO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZSAtLSBCaXR3aXNlIGZsYWcgbWFzayBpcyBpZGlvbWF0aWMgZm9yIFR5cGVTY3JpcHQgY29tcGlsZXIgQVBJLlxuY29uc3QgVU5TQUZFX1JFVFVSTl9GTEFHUyA9IFR5cGVGbGFncy5BbnkgfCBUeXBlRmxhZ3MuVW5rbm93bjtcblxuY29uc3QgUFJPTUlTRV9UWVBFX05BTUVTID0gbmV3IFNldChbJ1Byb21pc2UnLCAnUHJvbWlzZUxpa2UnXSk7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB0eXBlIG5vZGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYFByb21pc2VgIG9yIGBQcm9taXNlTGlrZWAsXG4gKiBlaXRoZXIgZGlyZWN0bHkgb3IgdGhyb3VnaCBhIHR5cGUgYWxpYXMuIFRoaXMgaW5kaWNhdGVzIHRoZSBjYWxsZXIgZXhwbGljaXRseVxuICogYWNjb3VudHMgZm9yIHByb21pc2UgcmV0dXJucy5cbiAqXG4gKiBAcGFyYW0gY2hlY2tlciAtIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHBhcmFtIG5vZGUgLSBUaGUgdHlwZSBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgcmVmZXJlbmNlcyBgUHJvbWlzZWAgb3IgYFByb21pc2VMaWtlYC5cbiAqL1xuZnVuY3Rpb24gY29udGFpbnNQcm9taXNlUmVmZXJlbmNlKGNoZWNrZXI6IFR5cGVDaGVja2VyLCBub2RlOiBUeXBlTm9kZSk6IGJvb2xlYW4ge1xuICBpZiAoaXNVbmlvblR5cGVOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUudHlwZXMuc29tZSgobWVtYmVyKSA9PiBjb250YWluc1Byb21pc2VSZWZlcmVuY2UoY2hlY2tlciwgbWVtYmVyKSk7XG4gIH1cblxuICBpZiAoaXNUeXBlUmVmZXJlbmNlTm9kZShub2RlKSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBRdWFsaWZpZWQgbmFtZXMgKGUuZy4sIG5zLlByb21pc2UpIGFuZCBpbXBvcnQgYWxpYXNlcyByZXF1aXJlIG11bHRpLWZpbGUgc2V0dXAgbm90IGF2YWlsYWJsZSBpbiBSdWxlVGVzdGVyLiAqL1xuICAgIGNvbnN0IG5hbWUgPSBpc0lkZW50aWZpZXIobm9kZS50eXBlTmFtZSkgPyBub2RlLnR5cGVOYW1lLnRleHQgOiAnJztcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGlmIChQUk9NSVNFX1RZUEVfTkFNRVMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlIHR5cGUgYWxpYXMgKGZvbGxvd2luZyBpbXBvcnRzKSBhbmQgY2hlY2sgaXRzIGRlZmluaXRpb24gYm9keVxuICAgIGxldCAkc3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUudHlwZU5hbWUpO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbXBvcnQgYWxpYXNlcyByZXF1aXJlIG11bHRpLWZpbGUgc2V0dXAgbm90IGF2YWlsYWJsZSBpbiBSdWxlVGVzdGVyLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlIC0tIEJpdHdpc2UgZmxhZyBjaGVjayBpcyBpZGlvbWF0aWMgZm9yIFR5cGVTY3JpcHQgY29tcGlsZXIgQVBJLlxuICAgIGlmICgkc3ltYm9sICYmICRzeW1ib2wuZmxhZ3MgJiBTeW1ib2xGbGFncy5BbGlhcykge1xuICAgICAgJHN5bWJvbCA9IGNoZWNrZXIuZ2V0QWxpYXNlZFN5bWJvbCgkc3ltYm9sKTtcbiAgICB9XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBjb25zdCBkZWNsYXJhdGlvbiA9ICRzeW1ib2w/LmRlY2xhcmF0aW9ucz8uWzBdO1xuICAgIGlmIChkZWNsYXJhdGlvbiAmJiBpc1R5cGVBbGlhc0RlY2xhcmF0aW9uKGRlY2xhcmF0aW9uKSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdXNlbGVzcy1yZWN1cnNpb24gLS0gVGhpcyBmdW5jdGlvbiByZWN1cnNlcyBpbiB0d28gcGxhY2VzOiBoZXJlLCBmb2xsb3dpbmcgYSB0eXBlIGFsaWFzLCBhbmQgYWJvdmUsIGZhbm5pbmcgb3V0IG92ZXIgdGhlIG1lbWJlcnMgb2YgYSB1bmlvbi4gT25seSB0aGlzIG9uZSBpcyBhIHRhaWwgY2FsbCwgc28gdHVybmluZyBpdCBpbnRvIGEgbG9vcCB3b3VsZCBsZWF2ZSB0aGUgZnVuY3Rpb24gaGFsZiByZWN1cnNpdmUgYW5kIGhhbGYgaXRlcmF0aXZlIG92ZXIgdGhlIHNhbWUgdHJlZS5cbiAgICAgIHJldHVybiBjb250YWluc1Byb21pc2VSZWZlcmVuY2UoY2hlY2tlciwgZGVjbGFyYXRpb24udHlwZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgY2FsbCBzaWduYXR1cmUgaGFzIGFuIHVuc2FmZSByZXR1cm4gdHlwZSAoYGFueWAgb3IgYHVua25vd25gKVxuICogd2l0aG91dCBleHBsaWNpdGx5IGFjY291bnRpbmcgZm9yIHByb21pc2VzLlxuICpcbiAqIEZsYWdzIGJhcmUgYGFueWAsIGB1bmtub3duYCwgYW5kIHVuaW9ucyBsaWtlIGBhbnkgfCBzdHJpbmdgIHRoYXQgcmVzb2x2ZSB0b1xuICogYGFueWAvYHVua25vd25gIHdpdGhvdXQgaW5jbHVkaW5nIGBQcm9taXNlYC9gUHJvbWlzZUxpa2VgLiBEb2VzIE5PVCBmbGFnIHR5cGVcbiAqIGFsaWFzZXMgbGlrZSBgQXdhaXRhYmxlPFQ+YCBvciB1bmlvbnMgbGlrZSBgYW55IHwgUHJvbWlzZTxhbnk+YCB0aGF0IGV4cGxpY2l0bHlcbiAqIGhhbmRsZSBwcm9taXNlIHJldHVybnMuXG4gKlxuICogQHBhcmFtIGNoZWNrZXIgLSBUeXBlU2NyaXB0IHR5cGUgY2hlY2tlci5cbiAqIEBwYXJhbSBzaWcgLSBUaGUgY2FsbCBzaWduYXR1cmUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmV0dXJuIHR5cGUgaXMgdW5zYWZlIGZvciBhc3luYyBjYWxsYmFja3MuXG4gKi9cbmZ1bmN0aW9uIGlzVW5zYWZlUmV0dXJuU2lnbmF0dXJlKGNoZWNrZXI6IFR5cGVDaGVja2VyLCBzaWc6IFNpZ25hdHVyZSk6IGJvb2xlYW4ge1xuICBjb25zdCByZXR1cm5UeXBlID0gY2hlY2tlci5nZXRSZXR1cm5UeXBlT2ZTaWduYXR1cmUoc2lnKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZSAtLSBCaXR3aXNlIGZsYWcgY2hlY2sgaXMgaWRpb21hdGljIGZvciBUeXBlU2NyaXB0IGNvbXBpbGVyIEFQSS5cbiAgaWYgKCEocmV0dXJuVHlwZS5mbGFncyAmIFVOU0FGRV9SRVRVUk5fRkxBR1MpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQ2hlY2sgdGhlIHN5bnRhY3RpYyByZXR1cm4gdHlwZSBhbm5vdGF0aW9uLiBJZiBpdCBjb250YWlucyBhIHJlZmVyZW5jZSB0b1xuICAvLyBQcm9taXNlL1Byb21pc2VMaWtlIChkaXJlY3RseSBvciB2aWEgYSB0eXBlIGFsaWFzKSwgdGhlIGNhbGxlciBleHBsaWNpdGx5XG4gIC8vIGhhbmRsZXMgYXN5bmMgcmV0dXJucyBhbmQgc2hvdWxkIG5vdCBiZSBmbGFnZ2VkLlxuICBjb25zdCBkZWNsYXJhdGlvbiA9IHNpZy5nZXREZWNsYXJhdGlvbigpO1xuICBjb25zdCByZXR1cm5UeXBlTm9kZSA9IGRlY2xhcmF0aW9uLnR5cGU7XG4gIGFzc2VydE5vbk51bGxhYmxlKHJldHVyblR5cGVOb2RlLCAnU2lnbmF0dXJlIGRlY2xhcmF0aW9ucyB3aXRoIGFueS91bmtub3duIHJldHVybiBhbHdheXMgaGF2ZSBhIHJldHVybiB0eXBlIGFubm90YXRpb24nKTtcblxuICByZXR1cm4gIWNvbnRhaW5zUHJvbWlzZVJlZmVyZW5jZShjaGVja2VyLCByZXR1cm5UeXBlTm9kZSk7XG59XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgZGlzYWxsb3dpbmcgYXN5bmMgZnVuY3Rpb25zIHBhc3NlZCBhcyBjYWxsYmFja3MgdG8gcGFyYW1ldGVycyB3aXRoIGFuIGBhbnlgIG9yIGB1bmtub3duYCByZXR1cm4gdHlwZSwgd2hlcmUgdGhlIHJldHVybmVkIHByb21pc2UgaXMgc2lsZW50bHkgZHJvcHBlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vQXN5bmNDYWxsYmFja1RvVW5zYWZlUmV0dXJuOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBjb250ZXh0LnNvdXJjZUNvZGUucGFyc2VyU2VydmljZXMgYXMgUGFyc2VyU2VydmljZXNXaXRoVHlwZUluZm9ybWF0aW9uO1xuICAgIGNvbnN0IGNoZWNrZXIgPSBzZXJ2aWNlcy5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhbGxOb2RlID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNhbGxOb2RlLmFyZ3VtZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBjb25zdCBhcmd1bWVudCA9IGNhbGxOb2RlLmFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgICAgaWYgKCFhcmd1bWVudCB8fCAhaXNBc3luY0Z1bmN0aW9uTm9kZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRzQ2FsbGVlTm9kZSA9IHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQoY2FsbE5vZGUuY2FsbGVlKTtcbiAgICAgICAgICBjb25zdCBjYWxsZWVUeXBlID0gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbih0c0NhbGxlZU5vZGUpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBzaWcgb2YgY2FsbGVlVHlwZS5nZXRDYWxsU2lnbmF0dXJlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXIgPSBzaWcuZ2V0UGFyYW1ldGVycygpW2luZGV4XTtcbiAgICAgICAgICAgIGlmICghcGFyYW1ldGVyKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJUeXBlID0gY2hlY2tlci5nZXRUeXBlT2ZTeW1ib2wocGFyYW1ldGVyKTtcblxuICAgICAgICAgICAgaWYgKGhhc1Vuc2FmZVJldHVybkNhbGxTaWduYXR1cmUoY2hlY2tlciwgcGFyYW1ldGVyVHlwZSkpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICAgICAgICBub2RlOiBhcmd1bWVudFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGlzYWxsb3cgcGFzc2luZyBhc3luYyBmdW5jdGlvbnMgYXMgY2FsbGJhY2tzIHRvIHBhcmFtZXRlcnMgd2l0aCBgYW55YCBvciBgdW5rbm93bmAgcmV0dXJuIHR5cGUnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnQXN5bmMgZnVuY3Rpb24gcGFzc2VkIGFzIGNhbGxiYWNrIHRvIGEgcGFyYW1ldGVyIHdpdGggYGFueWAvYHVua25vd25gIHJldHVybiB0eXBlLiBUaGlzIG1heSBjYXVzZSB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zLiBXcmFwIHRoZSBjYWxsOiBgKC4uLmFyZ3MpID0+IHsgeW91ckFzeW5jRm4oLi4uYXJncyk7IH1gLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3Byb2JsZW0nXG4gIH1cbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDQSxTQUFTLHlCQUF5QjtBQUNsQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHNCQUFzQjtBQUt4QixNQUFNLGFBQWE7QUFVMUIsU0FBUyw2QkFBNkIsU0FBc0IsTUFBcUI7QUFDL0UsU0FBTyxLQUFLLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxRQUFRLHdCQUF3QixTQUFTLEdBQUcsQ0FBQztBQUNyRjtBQVFBLFNBQVMsb0JBQW9CLE1BQTZGO0FBRXhILFVBQVEsS0FBSyxTQUFTLDZCQUE2QixLQUFLLFNBQVMseUJBQXlCLEtBQUs7QUFDakc7QUFHQSxNQUFNLHNCQUFzQixVQUFVLE1BQU0sVUFBVTtBQUV0RCxNQUFNLHFCQUFxQixvQkFBSSxJQUFJLENBQUMsV0FBVyxhQUFhLENBQUM7QUFXN0QsU0FBUyx5QkFBeUIsU0FBc0IsTUFBeUI7QUFDL0UsTUFBSSxnQkFBZ0IsSUFBSSxHQUFHO0FBQ3pCLFdBQU8sS0FBSyxNQUFNLEtBQUssQ0FBQyxXQUFXLHlCQUF5QixTQUFTLE1BQU0sQ0FBQztBQUFBLEVBQzlFO0FBRUEsTUFBSSxvQkFBb0IsSUFBSSxHQUFHO0FBRTdCLFVBQU0sT0FBTyxhQUFhLEtBQUssUUFBUSxJQUFJLEtBQUssU0FBUyxPQUFPO0FBRWhFLFFBQUksbUJBQW1CLElBQUksSUFBSSxHQUFHO0FBQ2hDLGFBQU87QUFBQSxJQUNUO0FBR0EsUUFBSSxVQUFVLFFBQVEsb0JBQW9CLEtBQUssUUFBUTtBQUd2RCxRQUFJLFdBQVcsUUFBUSxRQUFRLFlBQVksT0FBTztBQUNoRCxnQkFBVSxRQUFRLGlCQUFpQixPQUFPO0FBQUEsSUFDNUM7QUFFQSxVQUFNLGNBQWMsU0FBUyxlQUFlLENBQUM7QUFDN0MsUUFBSSxlQUFlLHVCQUF1QixXQUFXLEdBQUc7QUFFdEQsYUFBTyx5QkFBeUIsU0FBUyxZQUFZLElBQUk7QUFBQSxJQUMzRDtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFlQSxTQUFTLHdCQUF3QixTQUFzQixLQUF5QjtBQUM5RSxRQUFNLGFBQWEsUUFBUSx5QkFBeUIsR0FBRztBQUd2RCxNQUFJLEVBQUUsV0FBVyxRQUFRLHNCQUFzQjtBQUM3QyxXQUFPO0FBQUEsRUFDVDtBQUtBLFFBQU0sY0FBYyxJQUFJLGVBQWU7QUFDdkMsUUFBTSxpQkFBaUIsWUFBWTtBQUNuQyxvQkFBa0IsZ0JBQWdCLHFGQUFxRjtBQUV2SCxTQUFPLENBQUMseUJBQXlCLFNBQVMsY0FBYztBQUMxRDtBQUtPLE1BQU0sZ0NBQWlEO0FBQUEsRUFDNUQsT0FBTyxTQUFTO0FBQ2QsVUFBTSxXQUFXLFFBQVEsV0FBVztBQUNwQyxVQUFNLFVBQVUsU0FBUyxRQUFRLGVBQWU7QUFFaEQsV0FBTztBQUFBLE1BQ0wsZUFBZSxNQUF1QjtBQUNwQyxjQUFNLFdBQVcsZUFBZSxJQUFJO0FBRXBDLGlCQUFTLFFBQVEsR0FBRyxRQUFRLFNBQVMsVUFBVSxRQUFRLFNBQVM7QUFDOUQsZ0JBQU0sV0FBVyxTQUFTLFVBQVUsS0FBSztBQUN6QyxjQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixRQUFRLEdBQUc7QUFDL0M7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sZUFBZSxTQUFTLHNCQUFzQixJQUFJLFNBQVMsTUFBTTtBQUN2RSxnQkFBTSxhQUFhLFFBQVEsa0JBQWtCLFlBQVk7QUFFekQscUJBQVcsT0FBTyxXQUFXLGtCQUFrQixHQUFHO0FBQ2hELGtCQUFNLFlBQVksSUFBSSxjQUFjLEVBQUUsS0FBSztBQUMzQyxnQkFBSSxDQUFDLFdBQVc7QUFDZDtBQUFBLFlBQ0Y7QUFFQSxrQkFBTSxnQkFBZ0IsUUFBUSxnQkFBZ0IsU0FBUztBQUV2RCxnQkFBSSw2QkFBNkIsU0FBUyxhQUFhLEdBQUc7QUFDeEQsc0JBQVEsT0FBTztBQUFBLGdCQUNiLFdBQVc7QUFBQSxnQkFDWCxNQUFNO0FBQUEsY0FDUixDQUFDO0FBQ0Q7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.mts" />
|
|
2
|
+
import type { Rule } from 'eslint';
|
|
3
|
+
/**
|
|
4
|
+
* Message ID reported when a JSDoc link target does not resolve to a symbol.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MESSAGE_ID = "noUnresolvedJsdocLink";
|
|
7
|
+
/**
|
|
8
|
+
* The ESLint rule that reports JSDoc links whose target does not resolve.
|
|
9
|
+
*/
|
|
10
|
+
export declare const noUnresolvedJsdocLink: Rule.RuleModule;
|