@mnaoumov/typescript-dev-toolkit 0.0.0 → 1.0.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 +475 -0
- package/dist/lib/cjs/library-build.d.cts +97 -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 +122 -0
- package/dist/lib/cjs/linters/eslint.d.cts +35 -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 +97 -0
- package/dist/lib/esm/library-build.mjs +435 -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 +35 -0
- package/dist/lib/esm/linters/eslint.mjs +88 -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,108 @@
|
|
|
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
|
+
import { readFile } from "node:fs/promises";
|
|
50
|
+
import process from "node:process";
|
|
51
|
+
import { loadEnvFileIfExists } from "./env-toggle.mjs";
|
|
52
|
+
const FORBIDDEN_PATTERNS_FILE_ENV_VARIABLE = "FORBIDDEN_PATTERNS_FILE";
|
|
53
|
+
const REG_EXP_LITERAL_REG_EXP = /^\/(?<source>.+)\/(?<flags>[a-z]*)$/;
|
|
54
|
+
const STATEFUL_FLAGS_REG_EXP = /[gy]/g;
|
|
55
|
+
function findForbiddenPatternMatches(text, patterns) {
|
|
56
|
+
const matches = [];
|
|
57
|
+
for (const line of text.split(/\r?\n/)) {
|
|
58
|
+
for (const pattern of patterns) {
|
|
59
|
+
const match = pattern.exec(line);
|
|
60
|
+
if (match) {
|
|
61
|
+
matches.push({ line, match: match[0] });
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return matches;
|
|
67
|
+
}
|
|
68
|
+
async function readForbiddenPatterns() {
|
|
69
|
+
loadEnvFileIfExists();
|
|
70
|
+
const filePath = (process.env[FORBIDDEN_PATTERNS_FILE_ENV_VARIABLE] ?? "").trim();
|
|
71
|
+
if (filePath === "") {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
let content;
|
|
75
|
+
try {
|
|
76
|
+
content = await readFile(filePath, "utf-8");
|
|
77
|
+
} catch (error) {
|
|
78
|
+
throw new Error(`${FORBIDDEN_PATTERNS_FILE_ENV_VARIABLE} names ${filePath}, which cannot be read.`, { cause: error });
|
|
79
|
+
}
|
|
80
|
+
const patterns = [];
|
|
81
|
+
for (const [index, rawLine] of content.split(/\r?\n/).entries()) {
|
|
82
|
+
const line = rawLine.trim();
|
|
83
|
+
if (line === "" || line.startsWith("#")) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
patterns.push(toRegExp(line));
|
|
88
|
+
} catch (error) {
|
|
89
|
+
throw new Error(`Line ${String(index + 1)} of the forbidden-patterns file ${filePath} is not a valid regular expression.`, { cause: error });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return patterns;
|
|
93
|
+
}
|
|
94
|
+
function toRegExp(line) {
|
|
95
|
+
const groups = REG_EXP_LITERAL_REG_EXP.exec(line)?.groups;
|
|
96
|
+
if (!groups) {
|
|
97
|
+
return new RegExp(line);
|
|
98
|
+
}
|
|
99
|
+
const source = ensureNonNullable(groups["source"]);
|
|
100
|
+
const flags = ensureNonNullable(groups["flags"]);
|
|
101
|
+
return new RegExp(source, flags.replaceAll(STATEFUL_FLAGS_REG_EXP, ""));
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
FORBIDDEN_PATTERNS_FILE_ENV_VARIABLE,
|
|
105
|
+
findForbiddenPatternMatches,
|
|
106
|
+
readForbiddenPatterns
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZvcmJpZGRlbi1wYXR0ZXJucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEFuIFVOUFVCTElTSEVEIGxpc3Qgb2YgcGF0dGVybnMgdGhhdCBhIHJlbGVhc2UgbXVzdCBuZXZlciBwdWJsaXNoLCByZWFkIGZyb20gYSBmaWxlIHRoZSByZXBvc2l0b3J5IGRvZXMgbm90XG4gKiBjb250YWluLlxuICpcbiAqIFRoZSBsaXN0IGV4aXN0cyBmb3Igdm9jYWJ1bGFyeSB0aGF0IGlzIHByaXZhdGUgdG8gb25lIG1haW50YWluZXIncyBtYWNoaW5lIFx1MjAxNCBhbiBpbnRlcm5hbCB0cmFja2VyJ3MgaWRzLCB0aGVcbiAqIHNob3J0IG5hbWVzIG9mIHRoZWlyIHByb2plY3RzIFx1MjAxNCBhbmQgd2hpY2ggYSBjb21taXQgc3ViamVjdCBjYW4gY2Fycnkgc3RyYWlnaHQgaW50byBhIGdlbmVyYXRlZCBjaGFuZ2Vsb2dcbiAqIHNlY3Rpb24uIE5laXRoZXIgb2YgdGhlIHR3byBvYnZpb3VzIGhvbWVzIHdvcmtzIGZvciBpdDogYSBsaXRlcmFsIGluIHRoaXMgbGlicmFyeSB3b3VsZCBzaGlwIHRoZSBsaXN0IHRvIGV2ZXJ5XG4gKiBjb25zdW1lciBvbiBucG0sIGFuZCBhIGNoZWNrZWQtaW4gcGVyLXJlcG9zaXRvcnkgY29uZmlnIHdvdWxkIHB1Ymxpc2ggaXQgaW4gZXZlcnkgcHVibGljIHJlcG9zaXRvcnkgdGhhdCB1c2VkXG4gKiBpdCwgcGVybWFuZW50bHkuIFNvIHRoZSBsaXN0IGlzIG5hbWVkIGJ5IHRoZSB7QGxpbmsgRk9SQklEREVOX1BBVFRFUk5TX0ZJTEVfRU5WX1ZBUklBQkxFfSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICogKHdoaWNoIGEgZ2l0aWdub3JlZCBgLmVudmAgY2FuIHNldCksIHBvaW50cyBhdCBhIGZpbGUgb3V0c2lkZSB0aGUgcmVwb3NpdG9yeSwgYW5kIGlzIGEgbm8tb3Agd2hlcmV2ZXIgaXQgaXMgbm90XG4gKiBzZXQgXHUyMDE0IGEgY29uc3VtZXIgd2hvIGhhcyBub3QgY29uZmlndXJlZCBpdCBzZWVzIG5vIGNoYW5nZSBhdCBhbGwuXG4gKlxuICogVGhlIGZpbGUgaG9sZHMgb25lIHBhdHRlcm4gcGVyIGxpbmUuIEJsYW5rIGxpbmVzIGFuZCBsaW5lcyBzdGFydGluZyB3aXRoIGAjYCBhcmUgaWdub3JlZC4gQSBsaW5lIHdyaXR0ZW4gYXMgYVxuICogcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwgXHUyMDE0IGAvXFxiZm9vXFxiL2lgIFx1MjAxNCB0YWtlcyB0aGUgZmxhZ3MgaXQgbmFtZXM7IGFueSBvdGhlciBsaW5lIGlzIGEgY2FzZS1zZW5zaXRpdmVcbiAqIHJlZ3VsYXIgZXhwcmVzc2lvbiBzb3VyY2UuIFRoZSBnbG9iYWwgYW5kIHN0aWNreSBmbGFncyBhcmUgZHJvcHBlZCwgc2luY2UgYSBtYXRjaCBoZXJlIGlzIGEgeWVzL25vIHF1ZXN0aW9uXG4gKiBhc2tlZCBvZiBvbmUgbGluZSBhdCBhIHRpbWUuXG4gKi9cblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGxvYWRFbnZGaWxlSWZFeGlzdHMgfSBmcm9tICcuL2Vudi10b2dnbGUudHMnO1xuXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1pbmcgdGhlIGZvcmJpZGRlbi1wYXR0ZXJucyBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgRk9SQklEREVOX1BBVFRFUk5TX0ZJTEVfRU5WX1ZBUklBQkxFID0gJ0ZPUkJJRERFTl9QQVRURVJOU19GSUxFJztcblxuLyoqXG4gKiBPbmUgbGluZSBvZiB0ZXh0IHRoYXQgYSBmb3JiaWRkZW4gcGF0dGVybiBtYXRjaGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcmJpZGRlblBhdHRlcm5NYXRjaCB7XG4gIC8qKlxuICAgKiBUaGUgbGluZSB0aGF0IGNhcnJpZXMgdGhlIG1hdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgbGluZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0aGUgcGF0dGVybiBtYXRjaGVkIHdpdGhpbiB7QGxpbmsgbGluZX0uXG4gICAqL1xuICByZWFkb25seSBtYXRjaDogc3RyaW5nO1xufVxuXG5jb25zdCBSRUdfRVhQX0xJVEVSQUxfUkVHX0VYUCA9IC9eXFwvKD88c291cmNlPi4rKVxcLyg/PGZsYWdzPlthLXpdKikkLztcbmNvbnN0IFNUQVRFRlVMX0ZMQUdTX1JFR19FWFAgPSAvW2d5XS9nO1xuXG4vKipcbiAqIEZpbmRzIGV2ZXJ5IGxpbmUgb2YgYHRleHRgIHRoYXQgb25lIG9mIGBwYXR0ZXJuc2AgbWF0Y2hlcy5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRvIHNjYW4sIGxpbmUgYnkgbGluZS5cbiAqIEBwYXJhbSBwYXR0ZXJucyAtIFRoZSBwYXR0ZXJucywgYXMge0BsaW5rIHJlYWRGb3JiaWRkZW5QYXR0ZXJuc30gcmV0dXJuZWQgdGhlbS5cbiAqIEByZXR1cm5zIE9uZSB7QGxpbmsgRm9yYmlkZGVuUGF0dGVybk1hdGNofSBwZXIgb2ZmZW5kaW5nIGxpbmUsIG5hbWluZyB0aGUgZmlyc3QgcGF0dGVybiB0aGF0IG1hdGNoZWQgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRm9yYmlkZGVuUGF0dGVybk1hdGNoZXModGV4dDogc3RyaW5nLCBwYXR0ZXJuczogcmVhZG9ubHkgUmVnRXhwW10pOiBGb3JiaWRkZW5QYXR0ZXJuTWF0Y2hbXSB7XG4gIGNvbnN0IG1hdGNoZXM6IEZvcmJpZGRlblBhdHRlcm5NYXRjaFtdID0gW107XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIHRleHQuc3BsaXQoL1xccj9cXG4vKSkge1xuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgY29uc3QgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgbWF0Y2hlcy5wdXNoKHsgbGluZSwgbWF0Y2g6IG1hdGNoWzBdIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlcztcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgZm9yYmlkZGVuIHBhdHRlcm5zIGZyb20gdGhlIGZpbGUge0BsaW5rIEZPUkJJRERFTl9QQVRURVJOU19GSUxFX0VOVl9WQVJJQUJMRX0gbmFtZXMsIGxvYWRpbmcgdGhlXG4gKiBvcHRpb25hbCBgLmVudmAgZmlyc3QuXG4gKlxuICogQW4gdW5zZXQgb3IgYmxhbmsgdmFyaWFibGUgbWVhbnMgbm8gbGlzdCBpcyBjb25maWd1cmVkLCBhbmQgeWllbGRzIG5vIHBhdHRlcm5zLiBBIHZhcmlhYmxlIHRoYXQgSVMgc2V0IGJ1dFxuICogbmFtZXMgYSBmaWxlIHRoYXQgY2Fubm90IGJlIHJlYWQgdGhyb3dzIGluc3RlYWQgb2YgeWllbGRpbmcgbm9uZTogYSBndWFyZCB0aGF0IHN3aXRjaGVzIGl0c2VsZiBvZmYgYmVjYXVzZVxuICogaXRzIGxpc3QgbW92ZWQgaXMgcHJlY2lzZWx5IHRoZSBzaWxlbnQgZmFpbHVyZSBpdCBleGlzdHMgdG8gcHJldmVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb21waWxlZCBwYXR0ZXJucy5cbiAqIEB0aHJvd3MgSWYgdGhlIG5hbWVkIGZpbGUgY2Fubm90IGJlIHJlYWQsIG9yIG9uZSBvZiBpdHMgbGluZXMgaXMgbm90IGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZvcmJpZGRlblBhdHRlcm5zKCk6IFByb21pc2U8UmVnRXhwW10+IHtcbiAgbG9hZEVudkZpbGVJZkV4aXN0cygpO1xuICBjb25zdCBmaWxlUGF0aCA9IChwcm9jZXNzLmVudltGT1JCSURERU5fUEFUVEVSTlNfRklMRV9FTlZfVkFSSUFCTEVdID8/ICcnKS50cmltKCk7XG4gIGlmIChmaWxlUGF0aCA9PT0gJycpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBsZXQgY29udGVudDogc3RyaW5nO1xuICB0cnkge1xuICAgIGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke0ZPUkJJRERFTl9QQVRURVJOU19GSUxFX0VOVl9WQVJJQUJMRX0gbmFtZXMgJHtmaWxlUGF0aH0sIHdoaWNoIGNhbm5vdCBiZSByZWFkLmAsIHsgY2F1c2U6IGVycm9yIH0pO1xuICB9XG5cbiAgY29uc3QgcGF0dGVybnM6IFJlZ0V4cFtdID0gW107XG4gIGZvciAoY29uc3QgW2luZGV4LCByYXdMaW5lXSBvZiBjb250ZW50LnNwbGl0KC9cXHI/XFxuLykuZW50cmllcygpKSB7XG4gICAgY29uc3QgbGluZSA9IHJhd0xpbmUudHJpbSgpO1xuICAgIGlmIChsaW5lID09PSAnJyB8fCBsaW5lLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHBhdHRlcm5zLnB1c2godG9SZWdFeHAobGluZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExpbmUgJHtTdHJpbmcoaW5kZXggKyAxKX0gb2YgdGhlIGZvcmJpZGRlbi1wYXR0ZXJucyBmaWxlICR7ZmlsZVBhdGh9IGlzIG5vdCBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi5gLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGF0dGVybnM7XG59XG5cbmZ1bmN0aW9uIHRvUmVnRXhwKGxpbmU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gIGNvbnN0IGdyb3VwcyA9IFJFR19FWFBfTElURVJBTF9SRUdfRVhQLmV4ZWMobGluZSk/Lmdyb3VwcztcbiAgaWYgKCFncm91cHMpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChsaW5lKTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZSA9IGVuc3VyZU5vbk51bGxhYmxlKGdyb3Vwc1snc291cmNlJ10pO1xuICBjb25zdCBmbGFncyA9IGVuc3VyZU5vbk51bGxhYmxlKGdyb3Vwc1snZmxhZ3MnXSk7XG4gIHJldHVybiBuZXcgUmVnRXhwKHNvdXJjZSwgZmxhZ3MucmVwbGFjZUFsbChTVEFURUZVTF9GTEFHU19SRUdfRVhQLCAnJykpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkEsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxnQkFBZ0I7QUFDekIsT0FBTyxhQUFhO0FBRXBCLFNBQVMsMkJBQTJCO0FBSzdCLE1BQU0sdUNBQXVDO0FBaUJwRCxNQUFNLDBCQUEwQjtBQUNoQyxNQUFNLHlCQUF5QjtBQVN4QixTQUFTLDRCQUE0QixNQUFjLFVBQXNEO0FBQzlHLFFBQU0sVUFBbUMsQ0FBQztBQUUxQyxhQUFXLFFBQVEsS0FBSyxNQUFNLE9BQU8sR0FBRztBQUN0QyxlQUFXLFdBQVcsVUFBVTtBQUM5QixZQUFNLFFBQVEsUUFBUSxLQUFLLElBQUk7QUFDL0IsVUFBSSxPQUFPO0FBQ1QsZ0JBQVEsS0FBSyxFQUFFLE1BQU0sT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3RDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBYUEsZUFBc0Isd0JBQTJDO0FBQy9ELHNCQUFvQjtBQUNwQixRQUFNLFlBQVksUUFBUSxJQUFJLG9DQUFvQyxLQUFLLElBQUksS0FBSztBQUNoRixNQUFJLGFBQWEsSUFBSTtBQUNuQixXQUFPLENBQUM7QUFBQSxFQUNWO0FBRUEsTUFBSTtBQUNKLE1BQUk7QUFDRixjQUFVLE1BQU0sU0FBUyxVQUFVLE9BQU87QUFBQSxFQUM1QyxTQUFTLE9BQU87QUFDZCxVQUFNLElBQUksTUFBTSxHQUFHLG9DQUFvQyxVQUFVLFFBQVEsMkJBQTJCLEVBQUUsT0FBTyxNQUFNLENBQUM7QUFBQSxFQUN0SDtBQUVBLFFBQU0sV0FBcUIsQ0FBQztBQUM1QixhQUFXLENBQUMsT0FBTyxPQUFPLEtBQUssUUFBUSxNQUFNLE9BQU8sRUFBRSxRQUFRLEdBQUc7QUFDL0QsVUFBTSxPQUFPLFFBQVEsS0FBSztBQUMxQixRQUFJLFNBQVMsTUFBTSxLQUFLLFdBQVcsR0FBRyxHQUFHO0FBQ3ZDO0FBQUEsSUFDRjtBQUVBLFFBQUk7QUFDRixlQUFTLEtBQUssU0FBUyxJQUFJLENBQUM7QUFBQSxJQUM5QixTQUFTLE9BQU87QUFDZCxZQUFNLElBQUksTUFBTSxRQUFRLE9BQU8sUUFBUSxDQUFDLENBQUMsbUNBQW1DLFFBQVEsdUNBQXVDLEVBQUUsT0FBTyxNQUFNLENBQUM7QUFBQSxJQUM3STtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLFNBQVMsTUFBc0I7QUFDdEMsUUFBTSxTQUFTLHdCQUF3QixLQUFLLElBQUksR0FBRztBQUNuRCxNQUFJLENBQUMsUUFBUTtBQUNYLFdBQU8sSUFBSSxPQUFPLElBQUk7QUFBQSxFQUN4QjtBQUVBLFFBQU0sU0FBUyxrQkFBa0IsT0FBTyxRQUFRLENBQUM7QUFDakQsUUFBTSxRQUFRLGtCQUFrQixPQUFPLE9BQU8sQ0FBQztBQUMvQyxTQUFPLElBQUksT0FBTyxRQUFRLE1BQU0sV0FBVyx3QkFBd0IsRUFBRSxDQUFDO0FBQ3hFOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/// <reference path="../index.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Format the source code.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Parameters for the {@link format} function.
|
|
9
|
+
*/
|
|
10
|
+
export interface FormatOptions {
|
|
11
|
+
/**
|
|
12
|
+
* The `dprint.json` used when the project has none of its own. Without it, a project with no `dprint.json`
|
|
13
|
+
* fails.
|
|
14
|
+
*/
|
|
15
|
+
readonly defaultConfigFilePath?: string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Optional file paths to format. If omitted, formats the entire project.
|
|
18
|
+
*/
|
|
19
|
+
readonly paths?: string[] | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Whether to rewrite the source code.
|
|
22
|
+
*
|
|
23
|
+
* @default `true`
|
|
24
|
+
*/
|
|
25
|
+
readonly rewrite?: boolean | undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Format the source code.
|
|
29
|
+
*
|
|
30
|
+
* @param options - The {@link FormatOptions}.
|
|
31
|
+
* @returns A {@link Promise} that resolves when the source code has been formatted.
|
|
32
|
+
*/
|
|
33
|
+
export declare function format(options?: FormatOptions): Promise<void>;
|
|
@@ -0,0 +1,75 @@
|
|
|
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 { existsSync } from "node:fs";
|
|
50
|
+
import { resolveToolCommand } from "../package-manager.mjs";
|
|
51
|
+
import { RepoPaths } from "../repo-paths.mjs";
|
|
52
|
+
import {
|
|
53
|
+
execFromRoot,
|
|
54
|
+
getRootFolder,
|
|
55
|
+
resolvePathFromRootSafe
|
|
56
|
+
} from "../root.mjs";
|
|
57
|
+
async function format(options) {
|
|
58
|
+
const { defaultConfigFilePath, paths, rewrite = true } = options ?? {};
|
|
59
|
+
const rootFolder = getRootFolder();
|
|
60
|
+
assertNonNullable(rootFolder, "Root folder not found");
|
|
61
|
+
let dprintJsonPath = resolvePathFromRootSafe({ path: RepoPaths.DprintJson });
|
|
62
|
+
if (!existsSync(dprintJsonPath) && defaultConfigFilePath) {
|
|
63
|
+
dprintJsonPath = defaultConfigFilePath;
|
|
64
|
+
}
|
|
65
|
+
if (!existsSync(dprintJsonPath)) {
|
|
66
|
+
throw new Error("dprint.json not found");
|
|
67
|
+
}
|
|
68
|
+
const command = rewrite ? "fmt" : "check";
|
|
69
|
+
const targets = paths?.length ? paths : ["**/*"];
|
|
70
|
+
await execFromRoot([...resolveToolCommand({ tool: "dprint" }), command, "--config", dprintJsonPath, { batchedArguments: targets }]);
|
|
71
|
+
}
|
|
72
|
+
export {
|
|
73
|
+
format
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2Zvcm1hdHRlcnMvZHByaW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRm9ybWF0IHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB7IHJlc29sdmVUb29sQ29tbWFuZCB9IGZyb20gJy4uL3BhY2thZ2UtbWFuYWdlci50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuLi9yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi4vcm9vdC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBmb3JtYXR9IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGBkcHJpbnQuanNvbmAgdXNlZCB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lIG9mIGl0cyBvd24uIFdpdGhvdXQgaXQsIGEgcHJvamVjdCB3aXRoIG5vIGBkcHJpbnQuanNvbmBcbiAgICogZmFpbHMuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZpbGUgcGF0aHMgdG8gZm9ybWF0LiBJZiBvbWl0dGVkLCBmb3JtYXRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV3cml0ZSB0aGUgc291cmNlIGNvZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgcmV3cml0ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRm9ybWF0IHRoZSBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgRm9ybWF0T3B0aW9uc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNvdXJjZSBjb2RlIGhhcyBiZWVuIGZvcm1hdHRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZvcm1hdChvcHRpb25zPzogRm9ybWF0T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcGF0aHMsIHJld3JpdGUgPSB0cnVlIH0gPSBvcHRpb25zID8/IHt9O1xuICBjb25zdCByb290Rm9sZGVyID0gZ2V0Um9vdEZvbGRlcigpO1xuICBhc3NlcnROb25OdWxsYWJsZShyb290Rm9sZGVyLCAnUm9vdCBmb2xkZXIgbm90IGZvdW5kJyk7XG4gIGxldCBkcHJpbnRKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogUmVwb1BhdGhzLkRwcmludEpzb24gfSk7XG4gIGlmICghZXhpc3RzU3luYyhkcHJpbnRKc29uUGF0aCkgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZHByaW50SnNvblBhdGggPSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg7XG4gIH1cblxuICBpZiAoIWV4aXN0c1N5bmMoZHByaW50SnNvblBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkcHJpbnQuanNvbiBub3QgZm91bmQnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbW1hbmQgPSByZXdyaXRlID8gJ2ZtdCcgOiAnY2hlY2snO1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHRhcmdldHMgPSBwYXRocz8ubGVuZ3RoID8gcGF0aHMgOiBbJyoqLyonXTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsuLi5yZXNvbHZlVG9vbENvbW1hbmQoeyB0b29sOiAnZHByaW50JyB9KSwgY29tbWFuZCwgJy0tY29uZmlnJywgZHByaW50SnNvblBhdGgsIHsgYmF0Y2hlZEFyZ3VtZW50czogdGFyZ2V0cyB9XSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsa0JBQWtCO0FBRTNCLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMsaUJBQWlCO0FBQzFCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQStCUCxlQUFzQixPQUFPLFNBQXdDO0FBQ25FLFFBQU0sRUFBRSx1QkFBdUIsT0FBTyxVQUFVLEtBQUssSUFBSSxXQUFXLENBQUM7QUFDckUsUUFBTSxhQUFhLGNBQWM7QUFDakMsb0JBQWtCLFlBQVksdUJBQXVCO0FBQ3JELE1BQUksaUJBQWlCLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxXQUFXLENBQUM7QUFDM0UsTUFBSSxDQUFDLFdBQVcsY0FBYyxLQUFLLHVCQUF1QjtBQUN4RCxxQkFBaUI7QUFBQSxFQUNuQjtBQUVBLE1BQUksQ0FBQyxXQUFXLGNBQWMsR0FBRztBQUMvQixVQUFNLElBQUksTUFBTSx1QkFBdUI7QUFBQSxFQUN6QztBQUVBLFFBQU0sVUFBVSxVQUFVLFFBQVE7QUFFbEMsUUFBTSxVQUFVLE9BQU8sU0FBUyxRQUFRLENBQUMsTUFBTTtBQUUvQyxRQUFNLGFBQWEsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDLEdBQUcsU0FBUyxZQUFZLGdCQUFnQixFQUFFLGtCQUFrQixRQUFRLENBQUMsQ0FBQztBQUNwSTsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,52 @@
|
|
|
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 dprint from "./dprint.mjs";
|
|
49
|
+
export {
|
|
50
|
+
dprint
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2Zvcm1hdHRlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnZHByaW50JyBmcm9tICcuL2RwcmludC50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFlBQVksWUFBYzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/// <reference path="./index.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Contains utility functions for file system operations.
|
|
6
|
+
*/
|
|
7
|
+
import type { Dirent, ObjectEncodingOptions, PathLike } from 'node:fs';
|
|
8
|
+
/**
|
|
9
|
+
* Options for controlling the format of the result when returning buffers.
|
|
10
|
+
*
|
|
11
|
+
* `directory` is used instead of `folder` to preserve compatibility with `node:fs` module.
|
|
12
|
+
*/
|
|
13
|
+
export type BufferResultOptions = 'buffer' | BufferResultObjectOptions;
|
|
14
|
+
/**
|
|
15
|
+
* Options for controlling the format of the result when returning Dirent objects.
|
|
16
|
+
*/
|
|
17
|
+
export type DirentResultOptions = DirentResultBaseOptions & ObjectEncodingOptions;
|
|
18
|
+
/**
|
|
19
|
+
* Options for controlling the format of the result when returning strings.
|
|
20
|
+
*/
|
|
21
|
+
export type StringResultOptions = ObjectEncodingOptions & StringResultBaseOptions | undefined;
|
|
22
|
+
interface BufferResultObjectOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Should be set to "buffer" to return buffers.
|
|
25
|
+
*/
|
|
26
|
+
readonly encoding: 'buffer';
|
|
27
|
+
/**
|
|
28
|
+
* Whether to include subdirectories when reading the directory. If not provided, defaults to `false`.
|
|
29
|
+
*/
|
|
30
|
+
readonly recursive?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Should be set to `false` to return buffers.
|
|
33
|
+
*/
|
|
34
|
+
readonly withFileTypes?: false;
|
|
35
|
+
}
|
|
36
|
+
interface DirentResultBaseOptions {
|
|
37
|
+
/**
|
|
38
|
+
* Whether to include subdirectories when reading the directory. If not provided, defaults to `false`.
|
|
39
|
+
*/
|
|
40
|
+
readonly recursive?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Should be set to `true` to return Dirent objects.
|
|
43
|
+
*/
|
|
44
|
+
readonly withFileTypes: true;
|
|
45
|
+
}
|
|
46
|
+
interface StringResultBaseOptions {
|
|
47
|
+
/**
|
|
48
|
+
* Whether to include subdirectories when reading the directory. If not provided, defaults to `false`.
|
|
49
|
+
*/
|
|
50
|
+
readonly recursive?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Should be set to `false` to return strings.
|
|
53
|
+
*/
|
|
54
|
+
readonly withFileTypes?: false;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Reads the contents of a directory and returns an array of strings with POSIX paths.
|
|
58
|
+
*
|
|
59
|
+
* @param path - The path to the directory.
|
|
60
|
+
* @param options - Options to control the format of the result. If not provided, returns strings.
|
|
61
|
+
* @returns A {@link Promise} that resolves with an array of POSIX-formatted file paths.
|
|
62
|
+
*/
|
|
63
|
+
export declare function readdirPosix(path: PathLike, options?: StringResultOptions): Promise<string[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Reads the contents of a directory and returns an array of buffers with POSIX paths.
|
|
66
|
+
*
|
|
67
|
+
* @param path - The path to the directory.
|
|
68
|
+
* @param options - Options to control the format of the result. Specify "buffer" to return buffers.
|
|
69
|
+
* @returns A {@link Promise} that resolves with an array of POSIX-formatted buffers.
|
|
70
|
+
*/
|
|
71
|
+
export declare function readdirPosix(path: PathLike, options: BufferResultOptions): Promise<Buffer[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Reads the contents of a directory and returns an array of Dirent objects with POSIX paths.
|
|
74
|
+
*
|
|
75
|
+
* @param path - The path to the directory.
|
|
76
|
+
* @param options - Options to control the format of the result. Specify `withFileTypes: true` to return Dirent objects.
|
|
77
|
+
* @returns A {@link Promise} that resolves with an array of POSIX-formatted Dirent objects.
|
|
78
|
+
*/
|
|
79
|
+
export declare function readdirPosix(path: PathLike, options: DirentResultOptions): Promise<Dirent[]>;
|
|
80
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
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 {
|
|
49
|
+
toPosixBuffer,
|
|
50
|
+
toPosixPath
|
|
51
|
+
} from "@mnaoumov/typescript-lib/path";
|
|
52
|
+
import { assertNonNullable } from "@mnaoumov/typescript-lib/type-guards";
|
|
53
|
+
import { readdir } from "node:fs/promises";
|
|
54
|
+
async function readdirPosix(path, options = {}) {
|
|
55
|
+
if (isStringResultOptions(options)) {
|
|
56
|
+
const paths = await readdir(path, options);
|
|
57
|
+
return paths.map((entryPath) => toPosixPath(entryPath));
|
|
58
|
+
}
|
|
59
|
+
if (isBufferResultOptions(options)) {
|
|
60
|
+
const buffers = await readdir(path, options);
|
|
61
|
+
return buffers.map((buffer) => toPosixBuffer(buffer));
|
|
62
|
+
}
|
|
63
|
+
const dirents = await readdir(path, options);
|
|
64
|
+
for (const dirent of dirents) {
|
|
65
|
+
dirent.name = toPosixPath(dirent.name);
|
|
66
|
+
dirent.parentPath = toPosixPath(dirent.parentPath);
|
|
67
|
+
}
|
|
68
|
+
return dirents;
|
|
69
|
+
}
|
|
70
|
+
function isBufferResultOptions(options) {
|
|
71
|
+
assertNonNullable(options);
|
|
72
|
+
if (options === "buffer") {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
const commonOptions = options;
|
|
76
|
+
return commonOptions.withFileTypes !== true && commonOptions.encoding === "buffer";
|
|
77
|
+
}
|
|
78
|
+
function isStringResultOptions(options) {
|
|
79
|
+
assertNonNullable(options);
|
|
80
|
+
if (options === "buffer") {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const commonOptions = options;
|
|
84
|
+
return !(commonOptions.encoding === "buffer" || commonOptions.withFileTypes === true);
|
|
85
|
+
}
|
|
86
|
+
export {
|
|
87
|
+
readdirPosix
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ZzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGZpbGUgc3lzdGVtIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBEaXJlbnQsXG4gIE9iamVjdEVuY29kaW5nT3B0aW9ucyxcbiAgUGF0aExpa2Vcbn0gZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB7XG4gIHRvUG9zaXhCdWZmZXIsXG4gIHRvUG9zaXhQYXRoXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7IGFzc2VydE5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb250cm9sbGluZyB0aGUgZm9ybWF0IG9mIHRoZSByZXN1bHQgd2hlbiByZXR1cm5pbmcgYnVmZmVycy5cbiAqXG4gKiBgZGlyZWN0b3J5YCBpcyB1c2VkIGluc3RlYWQgb2YgYGZvbGRlcmAgdG8gcHJlc2VydmUgY29tcGF0aWJpbGl0eSB3aXRoIGBub2RlOmZzYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1ZmZlclJlc3VsdE9wdGlvbnMgPSAnYnVmZmVyJyB8IEJ1ZmZlclJlc3VsdE9iamVjdE9wdGlvbnM7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udHJvbGxpbmcgdGhlIGZvcm1hdCBvZiB0aGUgcmVzdWx0IHdoZW4gcmV0dXJuaW5nIERpcmVudCBvYmplY3RzLlxuICovXG5leHBvcnQgdHlwZSBEaXJlbnRSZXN1bHRPcHRpb25zID0gRGlyZW50UmVzdWx0QmFzZU9wdGlvbnMgJiBPYmplY3RFbmNvZGluZ09wdGlvbnM7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udHJvbGxpbmcgdGhlIGZvcm1hdCBvZiB0aGUgcmVzdWx0IHdoZW4gcmV0dXJuaW5nIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmluZ1Jlc3VsdE9wdGlvbnMgPVxuICB8IE9iamVjdEVuY29kaW5nT3B0aW9ucyAmIFN0cmluZ1Jlc3VsdEJhc2VPcHRpb25zXG4gIHwgdW5kZWZpbmVkO1xuXG5pbnRlcmZhY2UgQnVmZmVyUmVzdWx0T2JqZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTaG91bGQgYmUgc2V0IHRvIFwiYnVmZmVyXCIgdG8gcmV0dXJuIGJ1ZmZlcnMuXG4gICAqL1xuICByZWFkb25seSBlbmNvZGluZzogJ2J1ZmZlcic7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBzdWJkaXJlY3RvcmllcyB3aGVuIHJlYWRpbmcgdGhlIGRpcmVjdG9yeS4gSWYgbm90IHByb3ZpZGVkLCBkZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjdXJzaXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIGJlIHNldCB0byBgZmFsc2VgIHRvIHJldHVybiBidWZmZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aEZpbGVUeXBlcz86IGZhbHNlO1xufVxuXG4vKipcbiAqIENvbW1vbiBvcHRpb25zIGZvciBjb250cm9sbGluZyB0aGUgZm9ybWF0IG9mIHRoZSByZXN1bHQuXG4gKi9cbmludGVyZmFjZSBDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIEVuY29kaW5nIHRvIHVzZSB3aGVuIHJldHVybmluZyBzdHJpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jb2Rpbmc/OiAnYnVmZmVyJyB8IE5vZGVKUy5CdWZmZXJFbmNvZGluZztcblxuICAvKipcbiAgICogU2V0IGB0cnVlYCB0byByZXR1cm4gRGlyZW50IG9iamVjdHMgb3IgYGZhbHNlYCB0byByZXR1cm4gc3RyaW5ncyBvciBidWZmZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aEZpbGVUeXBlcz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBEaXJlbnRSZXN1bHRCYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgc3ViZGlyZWN0b3JpZXMgd2hlbiByZWFkaW5nIHRoZSBkaXJlY3RvcnkuIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2l2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3VsZCBiZSBzZXQgdG8gYHRydWVgIHRvIHJldHVybiBEaXJlbnQgb2JqZWN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHdpdGhGaWxlVHlwZXM6IHRydWU7XG59XG5cbmludGVyZmFjZSBTdHJpbmdSZXN1bHRCYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgc3ViZGlyZWN0b3JpZXMgd2hlbiByZWFkaW5nIHRoZSBkaXJlY3RvcnkuIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2l2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYCB0byByZXR1cm4gc3RyaW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IHdpdGhGaWxlVHlwZXM/OiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIFBPU0lYIHBhdGhzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyB0byBjb250cm9sIHRoZSBmb3JtYXQgb2YgdGhlIHJlc3VsdC4gSWYgbm90IHByb3ZpZGVkLCByZXR1cm5zIHN0cmluZ3MuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgUE9TSVgtZm9ybWF0dGVkIGZpbGUgcGF0aHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkZGlyUG9zaXgocGF0aDogUGF0aExpa2UsIG9wdGlvbnM/OiBTdHJpbmdSZXN1bHRPcHRpb25zKTogUHJvbWlzZTxzdHJpbmdbXT47XG4vKipcbiAqIFJlYWRzIHRoZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBidWZmZXJzIHdpdGggUE9TSVggcGF0aHMuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5LlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIHRvIGNvbnRyb2wgdGhlIGZvcm1hdCBvZiB0aGUgcmVzdWx0LiBTcGVjaWZ5IFwiYnVmZmVyXCIgdG8gcmV0dXJuIGJ1ZmZlcnMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgUE9TSVgtZm9ybWF0dGVkIGJ1ZmZlcnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkZGlyUG9zaXgocGF0aDogUGF0aExpa2UsIG9wdGlvbnM6IEJ1ZmZlclJlc3VsdE9wdGlvbnMpOiBQcm9taXNlPEJ1ZmZlcltdPjtcbi8qKlxuICogUmVhZHMgdGhlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIERpcmVudCBvYmplY3RzIHdpdGggUE9TSVggcGF0aHMuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5LlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIHRvIGNvbnRyb2wgdGhlIGZvcm1hdCBvZiB0aGUgcmVzdWx0LiBTcGVjaWZ5IGB3aXRoRmlsZVR5cGVzOiB0cnVlYCB0byByZXR1cm4gRGlyZW50IG9iamVjdHMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYXJyYXkgb2YgUE9TSVgtZm9ybWF0dGVkIERpcmVudCBvYmplY3RzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZGRpclBvc2l4KHBhdGg6IFBhdGhMaWtlLCBvcHRpb25zOiBEaXJlbnRSZXN1bHRPcHRpb25zKTogUHJvbWlzZTxEaXJlbnRbXT47XG4vKipcbiAqIFJlYWRzIHRoZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhbmQgY29udmVydHMgZmlsZSBwYXRocyBvciBidWZmZXIgcmVzdWx0cyB0byBQT1NJWCBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5LlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIHRvIGNvbnRyb2wgdGhlIGZvcm1hdCBvZiB0aGUgcmVzdWx0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIFBPU0lYLWZvcm1hdHRlZCBmaWxlIHBhdGhzLCBidWZmZXJzLCBvciBEaXJlbnQgb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRkaXJQb3NpeChcbiAgcGF0aDogUGF0aExpa2UsXG4gIG9wdGlvbnM6IEJ1ZmZlclJlc3VsdE9wdGlvbnMgfCBEaXJlbnRSZXN1bHRPcHRpb25zIHwgU3RyaW5nUmVzdWx0T3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPEJ1ZmZlcltdIHwgRGlyZW50W10gfCBzdHJpbmdbXT4ge1xuICBpZiAoaXNTdHJpbmdSZXN1bHRPcHRpb25zKG9wdGlvbnMpKSB7XG4gICAgY29uc3QgcGF0aHMgPSBhd2FpdCByZWFkZGlyKHBhdGgsIG9wdGlvbnMpO1xuICAgIHJldHVybiBwYXRocy5tYXAoKGVudHJ5UGF0aCkgPT4gdG9Qb3NpeFBhdGgoZW50cnlQYXRoKSk7XG4gIH1cblxuICBpZiAoaXNCdWZmZXJSZXN1bHRPcHRpb25zKG9wdGlvbnMpKSB7XG4gICAgY29uc3QgYnVmZmVycyA9IGF3YWl0IHJlYWRkaXIocGF0aCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGJ1ZmZlcnMubWFwKChidWZmZXIpID0+IHRvUG9zaXhCdWZmZXIoYnVmZmVyKSk7XG4gIH1cblxuICBjb25zdCBkaXJlbnRzID0gYXdhaXQgcmVhZGRpcihwYXRoLCBvcHRpb25zKTtcbiAgZm9yIChjb25zdCBkaXJlbnQgb2YgZGlyZW50cykge1xuICAgIGRpcmVudC5uYW1lID0gdG9Qb3NpeFBhdGgoZGlyZW50Lm5hbWUpO1xuICAgIGRpcmVudC5wYXJlbnRQYXRoID0gdG9Qb3NpeFBhdGgoZGlyZW50LnBhcmVudFBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGRpcmVudHM7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiB0aGUgb3B0aW9ucyBhcmUgZm9yIHJldHVybmluZyBidWZmZXJzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9wdGlvbnMgYXJlIGZvciByZXR1cm5pbmcgYnVmZmVycywgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyUmVzdWx0T3B0aW9ucyhvcHRpb25zOiBCdWZmZXJSZXN1bHRPcHRpb25zIHwgRGlyZW50UmVzdWx0T3B0aW9ucyB8IFN0cmluZ1Jlc3VsdE9wdGlvbnMpOiBvcHRpb25zIGlzIEJ1ZmZlclJlc3VsdE9wdGlvbnMge1xuICBhc3NlcnROb25OdWxsYWJsZShvcHRpb25zKTtcblxuICBpZiAob3B0aW9ucyA9PT0gJ2J1ZmZlcicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGNvbW1vbk9wdGlvbnMgPSBvcHRpb25zIGFzIENvbW1vbk9wdGlvbnM7XG5cbiAgLy8gVGhlIGVuY29kaW5nIGNoZWNrIG5ldmVyIGZhaWxzIGluIHByYWN0aWNlOiBpc1N0cmluZ1Jlc3VsdE9wdGlvbnMgYWxyZWFkeSBoYW5kbGVzIG5vbi1idWZmZXIgZW5jb2RpbmcgYmVmb3JlIHRoaXMgaXMgY2FsbGVkLlxuICByZXR1cm4gY29tbW9uT3B0aW9ucy53aXRoRmlsZVR5cGVzICE9PSB0cnVlICYmIGNvbW1vbk9wdGlvbnMuZW5jb2RpbmcgPT09ICdidWZmZXInO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgdGhlIG9wdGlvbnMgYXJlIGZvciByZXR1cm5pbmcgc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBvcHRpb25zIGFyZSBmb3IgcmV0dXJuaW5nIHN0cmluZ3MsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1N0cmluZ1Jlc3VsdE9wdGlvbnMob3B0aW9uczogQnVmZmVyUmVzdWx0T3B0aW9ucyB8IERpcmVudFJlc3VsdE9wdGlvbnMgfCBTdHJpbmdSZXN1bHRPcHRpb25zKTogb3B0aW9ucyBpcyBTdHJpbmdSZXN1bHRPcHRpb25zIHtcbiAgYXNzZXJ0Tm9uTnVsbGFibGUob3B0aW9ucyk7XG5cbiAgaWYgKG9wdGlvbnMgPT09ICdidWZmZXInKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY29tbW9uT3B0aW9ucyA9IG9wdGlvbnMgYXMgQ29tbW9uT3B0aW9ucztcblxuICByZXR1cm4gISgoY29tbW9uT3B0aW9ucy5lbmNvZGluZyA9PT0gJ2J1ZmZlcicpIHx8IChjb21tb25PcHRpb25zLndpdGhGaWxlVHlwZXMgPT09IHRydWUpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGVBQWU7QUE0R3hCLGVBQXNCLGFBQ3BCLE1BQ0EsVUFBMkUsQ0FBQyxHQUNuQztBQUN6QyxNQUFJLHNCQUFzQixPQUFPLEdBQUc7QUFDbEMsVUFBTSxRQUFRLE1BQU0sUUFBUSxNQUFNLE9BQU87QUFDekMsV0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLFlBQVksU0FBUyxDQUFDO0FBQUEsRUFDeEQ7QUFFQSxNQUFJLHNCQUFzQixPQUFPLEdBQUc7QUFDbEMsVUFBTSxVQUFVLE1BQU0sUUFBUSxNQUFNLE9BQU87QUFDM0MsV0FBTyxRQUFRLElBQUksQ0FBQyxXQUFXLGNBQWMsTUFBTSxDQUFDO0FBQUEsRUFDdEQ7QUFFQSxRQUFNLFVBQVUsTUFBTSxRQUFRLE1BQU0sT0FBTztBQUMzQyxhQUFXLFVBQVUsU0FBUztBQUM1QixXQUFPLE9BQU8sWUFBWSxPQUFPLElBQUk7QUFDckMsV0FBTyxhQUFhLFlBQVksT0FBTyxVQUFVO0FBQUEsRUFDbkQ7QUFFQSxTQUFPO0FBQ1Q7QUFRQSxTQUFTLHNCQUFzQixTQUEwRztBQUN2SSxvQkFBa0IsT0FBTztBQUV6QixNQUFJLFlBQVksVUFBVTtBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sZ0JBQWdCO0FBR3RCLFNBQU8sY0FBYyxrQkFBa0IsUUFBUSxjQUFjLGFBQWE7QUFDNUU7QUFRQSxTQUFTLHNCQUFzQixTQUEwRztBQUN2SSxvQkFBa0IsT0FBTztBQUV6QixNQUFJLFlBQVksVUFBVTtBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sZ0JBQWdCO0FBRXRCLFNBQU8sRUFBRyxjQUFjLGFBQWEsWUFBYyxjQUFjLGtCQUFrQjtBQUNyRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/// <reference path="./index.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* The branch gate: the verification sequence that `updateVersion` runs as its release preflight, available
|
|
6
|
+
* as a command of its own.
|
|
7
|
+
*
|
|
8
|
+
* Four of the preflight's checks — `format:check`, `spellcheck`, `find-overexposed` and `test:coverage` —
|
|
9
|
+
* are reachable by no other routine command. So the natural branch gate (build, lint, test) can be green
|
|
10
|
+
* while the release is still going to fail, and the failure arrives at release time rather than in seconds
|
|
11
|
+
* on the branch.
|
|
12
|
+
*
|
|
13
|
+
* This module exists so the two are the same code rather than two lists that agree today: `updateVersion`
|
|
14
|
+
* calls {@link gate}, and a check added here is reachable from both. What the gate deliberately leaves to
|
|
15
|
+
* the release path is the clean-repo assertion — a branch gate is run on a dirty tree, which is the whole
|
|
16
|
+
* point of running it before committing — and the integration suite, which is the one preflight step that
|
|
17
|
+
* already has a routine command of its own (`npm run test:integration`) and so is not in the class this
|
|
18
|
+
* module exists for.
|
|
19
|
+
*
|
|
20
|
+
* The tests run ONCE, through `test:coverage` where the project defines it and through `test` otherwise.
|
|
21
|
+
* Running both, as this did until 2026-09-05, was a duplicate everywhere it mattered: a project scopes its
|
|
22
|
+
* two test scripts to the same vitest projects — every repo in this workspace passes the same `projects`
|
|
23
|
+
* array to both — so `test:coverage` is `test` plus the threshold flags, over the identical files. It buys
|
|
24
|
+
* no fail-fast either, because the coverage run fails on exactly the failures the plain run would have
|
|
25
|
+
* caught. The one thing lost is the ability to switch off only the coverage half: `TEST_COVERAGE=0` now
|
|
26
|
+
* turns off the gate's whole test step rather than demoting it to `test`.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Options for {@link gate}.
|
|
30
|
+
*/
|
|
31
|
+
export interface GateOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Whether to run the build. The build is not a verification check — it is kept in the gate because it is
|
|
34
|
+
* the only step that type-checks the project, and a green lint is not a type-check.
|
|
35
|
+
*
|
|
36
|
+
* @default `true`
|
|
37
|
+
*/
|
|
38
|
+
readonly shouldBuild?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Whether to run the verification checks. When `false`, only the build runs, which is what
|
|
41
|
+
* `npm run version -- --no-checks` does.
|
|
42
|
+
*
|
|
43
|
+
* @default `true`
|
|
44
|
+
*/
|
|
45
|
+
readonly shouldRunChecks?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Whether to run the integration test suite. Off by default, on two reasons that are about COST rather
|
|
48
|
+
* than about contention — desktop runs stopped contending in `obsidian-integration-testing` 5.0.0, which
|
|
49
|
+
* gives every run its own user-data dir and CDP port, and the Android emulator that is still shared is
|
|
50
|
+
* serialized by that package's own `android` setup lock, which waits rather than failing.
|
|
51
|
+
*
|
|
52
|
+
* The reasons that do hold: `test:integration` is the one preflight step reachable by a routine command
|
|
53
|
+
* of its own, unlike the four this gate exists for; and in a project whose suite includes an Android
|
|
54
|
+
* test it boots an AVD and an Appium server, then queues behind any other Android run for up to that
|
|
55
|
+
* lock's hour-long acquisition timeout. A command whose whole selling point is answering in seconds must
|
|
56
|
+
* not start one unasked. The release path opts in, so nothing is skipped before a publish.
|
|
57
|
+
*
|
|
58
|
+
* @default `false`
|
|
59
|
+
*/
|
|
60
|
+
readonly shouldRunIntegrationTests?: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Runs the verification sequence that `npm run version` runs as its preflight.
|
|
64
|
+
*
|
|
65
|
+
* The order is deliberate. The lockfile check ({@link assertPackageLockIntegrity}) comes first, because it
|
|
66
|
+
* is an in-process JSON read that takes well under a second. Then come the checks that finish in seconds (`format:check`, `spellcheck`, `lint:md`) run
|
|
67
|
+
* first, so a typo fails the gate immediately instead of after the coverage run. Each step is dispatched
|
|
68
|
+
* through the package manager, so a project overriding one of these scripts gets its own version, and each
|
|
69
|
+
* step carries its own environment off switch.
|
|
70
|
+
*
|
|
71
|
+
* Every step but `build` is run with {@link npmRunOptional}, so it is skipped when the project does not define
|
|
72
|
+
* it: a project that chose no formatter, spell checker, markdown linter or linter has nothing to check there,
|
|
73
|
+
* and requiring those scripts made `npm run version` die on its first step in exactly those projects. `build`
|
|
74
|
+
* stays required, because a release with nothing built has nothing to ship. The test step is the one place that reads that skip: `test:coverage` is preferred, and
|
|
75
|
+
* `test` runs only as its fallback, so the suite is never run twice. The unit tests stay ahead of
|
|
76
|
+
* `test:integration` for the same fastest-first reason — a broken unit test should fail before an
|
|
77
|
+
* integration suite is started, not after.
|
|
78
|
+
*
|
|
79
|
+
* @param options - The {@link GateOptions} controlling which steps run.
|
|
80
|
+
* @returns A {@link Promise} that resolves when every step has passed.
|
|
81
|
+
*/
|
|
82
|
+
export declare function gate(options?: GateOptions): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Parses the command-line arguments for the gate script.
|
|
85
|
+
*
|
|
86
|
+
* The two `--no-` flags switch off steps that are on; `--integration` is the one that switches a step ON,
|
|
87
|
+
* because {@link GateOptions.shouldRunIntegrationTests} is off by default for cost. It exists so that
|
|
88
|
+
* default is a choice the caller can make per run rather than one only a programmatic caller can reach.
|
|
89
|
+
*
|
|
90
|
+
* @param $arguments - The command-line arguments to parse.
|
|
91
|
+
* @returns The parsed {@link GateOptions}.
|
|
92
|
+
*/
|
|
93
|
+
export declare function parseGateArguments($arguments: string[]): GateOptions;
|