@codeperfect/eslint-plugin 1.0.0 → 2.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/README.md +26 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/{custom-rules.d.ts → application/custom-rules.d.ts} +3 -0
- package/dist/application/custom-rules.d.ts.map +1 -0
- package/dist/application/custom-rules.js +74 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +3 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +56 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +149 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +4 -4
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +98 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +45 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +64 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +5 -4
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +87 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +140 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/index.js +4 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +85 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +91 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +4 -6
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +95 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.js +43 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +4 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +4 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/test-helpers.d.ts +48 -48
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +20 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +25 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +235 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts +19 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/types.js +2 -0
- package/dist/{architecture → domain/architecture}/index.d.ts +1 -1
- package/dist/domain/architecture/index.d.ts.map +1 -0
- package/dist/domain/architecture/index.js +2 -0
- package/dist/{core → domain/core}/index.d.ts +2 -2
- package/dist/domain/core/index.d.ts.map +1 -0
- package/dist/domain/core/index.js +3 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts +2 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/index.js +2 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +101 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +108 -0
- package/dist/{core → domain/core}/no-multiple-declarators/rule.d.ts +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +35 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.js +95 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.js +219 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +4 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts +77 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/types.js +38 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts +2 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/index.js +2 -0
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/rule.js +145 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.js +116 -0
- package/dist/{custom-rule-documentation.d.ts → domain/custom-rule-documentation.d.ts} +1 -1
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
- package/dist/domain/custom-rule-documentation.js +35 -0
- package/dist/domain/docs/index.d.ts +4 -0
- package/dist/domain/docs/index.d.ts.map +1 -0
- package/dist/domain/docs/index.js +4 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +146 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts +2 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/index.js +2 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-tags.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +101 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +125 -0
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/rule.js +168 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.js +157 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/types.d.ts +2 -2
- package/dist/domain/docs/no-interface-member-docs/types.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/types.js +2 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts +5 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/create-fixer.js +5 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.js +169 -0
- package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/example-utilities.js +76 -0
- package/dist/{docs → domain/docs}/require-example-language/examples.d.ts +1 -1
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/examples.js +181 -0
- package/dist/{docs → domain/docs}/require-example-language/fixes.d.ts +2 -2
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/fixes.js +182 -0
- package/dist/domain/docs/require-example-language/index.d.ts +3 -0
- package/dist/domain/docs/require-example-language/index.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/index.js +2 -0
- package/dist/{docs → domain/docs}/require-example-language/reporting.d.ts +1 -1
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/reporting.js +148 -0
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/rule.js +34 -0
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/types.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/index.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/rule.js +196 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
- package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
- package/dist/domain/docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/test-helpers.js +107 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +6 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts +92 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.js +247 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +93 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +283 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +75 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +201 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
- package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
- package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.js +59 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts +107 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.js +228 -0
- package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
- package/dist/domain/testing/aaa/index.d.ts.map +1 -0
- package/dist/domain/testing/aaa/index.js +2 -0
- package/dist/domain/testing/aaa/types.d.ts +58 -0
- package/dist/domain/testing/aaa/types.d.ts.map +1 -0
- package/dist/domain/testing/aaa/types.js +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
- package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.js +113 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
- package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +34 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
- package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.js +85 -0
- package/dist/{testing → domain/testing}/index.d.ts +9 -8
- package/dist/domain/testing/index.d.ts.map +1 -0
- package/dist/domain/testing/index.js +10 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +36 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +86 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +150 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +81 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +189 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +92 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +62 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +203 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/index.js +2 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
- package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.js +129 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.js +217 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/index.js +2 -0
- package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.js +106 -0
- package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
- package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/index.js +3 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/rule.js +57 -0
- package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/types.js +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/index.js +2 -0
- package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/rule.js +34 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
- package/dist/infrastructure/codeperfect-plugin.js +30 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +4 -0
- package/dist/infrastructure/presets.d.ts +18 -0
- package/dist/infrastructure/presets.d.ts.map +1 -0
- package/dist/infrastructure/presets.js +81 -0
- package/package.json +54 -27
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
- package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
- package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/index.js +0 -4
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
- package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/rule.js +0 -58
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
- package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
- package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/types.js +0 -2
- package/dist/architecture/index.d.ts.map +0 -1
- package/dist/architecture/index.js +0 -2
- package/dist/benchmark-rules.d.ts +0 -83
- package/dist/benchmark-rules.d.ts.map +0 -1
- package/dist/benchmark-rules.js +0 -175
- package/dist/codeperfect-plugin.d.ts.map +0 -1
- package/dist/codeperfect-plugin.js +0 -29
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/no-multiple-declarators/index.d.ts +0 -2
- package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/index.js +0 -2
- package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/rule.js +0 -100
- package/dist/core/prefer-interface-types/index.d.ts +0 -2
- package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/index.js +0 -2
- package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/rule.js +0 -145
- package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/test-helpers.js +0 -116
- package/dist/custom-rule-documentation.d.ts.map +0 -1
- package/dist/custom-rule-documentation.js +0 -35
- package/dist/custom-rules.d.ts.map +0 -1
- package/dist/custom-rules.js +0 -70
- package/dist/docs/index.d.ts +0 -4
- package/dist/docs/index.d.ts.map +0 -1
- package/dist/docs/index.js +0 -4
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
- package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
- package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/index.js +0 -2
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
- package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/rule.js +0 -168
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/test-helpers.js +0 -157
- package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.js +0 -2
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
- package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
- package/dist/docs/require-example-language/example-utilities.js +0 -76
- package/dist/docs/require-example-language/examples.d.ts.map +0 -1
- package/dist/docs/require-example-language/examples.js +0 -181
- package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/fixes.js +0 -182
- package/dist/docs/require-example-language/index.d.ts +0 -3
- package/dist/docs/require-example-language/index.d.ts.map +0 -1
- package/dist/docs/require-example-language/index.js +0 -2
- package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
- package/dist/docs/require-example-language/reporting.js +0 -145
- package/dist/docs/require-example-language/rule.d.ts.map +0 -1
- package/dist/docs/require-example-language/rule.js +0 -34
- package/dist/docs/require-example-language/types.d.ts.map +0 -1
- package/dist/docs/require-example-language/types.js +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/index.js +0 -2
- package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/rule.js +0 -196
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
- package/dist/docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/test-helpers.js +0 -107
- package/dist/presets.d.ts +0 -10
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -50
- package/dist/rules/index.d.ts +0 -5
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -6
- package/dist/testing/aaa/analyzer.d.ts +0 -36
- package/dist/testing/aaa/analyzer.d.ts.map +0 -1
- package/dist/testing/aaa/analyzer.js +0 -490
- package/dist/testing/aaa/index.d.ts.map +0 -1
- package/dist/testing/aaa/index.js +0 -2
- package/dist/testing/aaa/types.d.ts +0 -31
- package/dist/testing/aaa/types.d.ts.map +0 -1
- package/dist/testing/aaa/types.js +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/index.js +0 -2
- package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/rule.js +0 -54
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
- package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/index.js +0 -2
- package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/rule.js +0 -48
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -9
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
- package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
- package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
- package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
- package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
- package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/index.js +0 -2
- package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/rule.js +0 -111
- package/dist/testing/require-act-result-capture/index.d.ts +0 -2
- package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/index.js +0 -2
- package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/rule.js +0 -34
- package/dist/testing/require-test-companion/index.d.ts +0 -3
- package/dist/testing/require-test-companion/index.d.ts.map +0 -1
- package/dist/testing/require-test-companion/index.js +0 -3
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
- package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
- package/dist/testing/require-test-companion/rule.js +0 -57
- package/dist/testing/require-test-companion/types.d.ts.map +0 -1
- package/dist/testing/require-test-companion/types.js +0 -2
- package/dist/testing/single-act-statement/index.d.ts +0 -2
- package/dist/testing/single-act-statement/index.d.ts.map +0 -1
- package/dist/testing/single-act-statement/index.js +0 -2
- package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
- package/dist/testing/single-act-statement/rule.js +0 -33
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
- /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Rule } from "eslint";
|
|
2
|
+
import type { RuleMatch } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Builds all autofix operations for a single match.
|
|
5
|
+
* @param match Autofix context produced by the matcher.
|
|
6
|
+
* @param fixer ESLint fixer.
|
|
7
|
+
* @returns Combined fix list.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const fixes = buildFix({} as never, {} as never);
|
|
11
|
+
* void fixes;
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare function buildFix(match: RuleMatch, fixer: Rule.RuleFixer): Rule.Fix[];
|
|
15
|
+
/**
|
|
16
|
+
* Builds all autofix operations for every match in a file.
|
|
17
|
+
* @param matches Autofix contexts produced by the matcher.
|
|
18
|
+
* @param fixer ESLint fixer.
|
|
19
|
+
* @returns Combined fix list.
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const fixes = buildFixes([], {} as never);
|
|
23
|
+
* void fixes;
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
declare function buildFixes(matches: RuleMatch[], fixer: Rule.RuleFixer): Rule.Fix[];
|
|
27
|
+
export { buildFix, buildFixes };
|
|
28
|
+
//# sourceMappingURL=fix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/fix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAsCzC;;;;;;;;;;GAUG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAKrE;AAED;;;;;;;;;;GAUG;AACH,iBAAS,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAK3E;AA+ID,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { buildImportFixes } from "./fix-import-statements.js";
|
|
2
|
+
import { buildCombinedImportFixes } from "./fix-imports.js";
|
|
3
|
+
/**
|
|
4
|
+
* Builds fixes that inline declaration initializers into factory properties.
|
|
5
|
+
* @param match Autofix context produced by the matcher.
|
|
6
|
+
* @param fixer ESLint fixer.
|
|
7
|
+
* @returns Binding-related fixes.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const fixes = buildBindingFixes({} as never, {} as never);
|
|
11
|
+
* void fixes;
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function buildBindingFixes(match, fixer) {
|
|
15
|
+
return match.bindings.flatMap((binding) => {
|
|
16
|
+
const declaration = match.declarations.get(binding.localName);
|
|
17
|
+
if (declaration === void 0) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
const initializerText = match.sourceText.slice(declaration.initializerRange[0], declaration.initializerRange[1]);
|
|
21
|
+
return [
|
|
22
|
+
fixer.replaceTextRange(binding.propertyRange, `${binding.exportedName}: ${initializerText}`),
|
|
23
|
+
];
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Builds all autofix operations for a single match.
|
|
28
|
+
* @param match Autofix context produced by the matcher.
|
|
29
|
+
* @param fixer ESLint fixer.
|
|
30
|
+
* @returns Combined fix list.
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const fixes = buildFix({} as never, {} as never);
|
|
34
|
+
* void fixes;
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
function buildFix(match, fixer) {
|
|
38
|
+
return [
|
|
39
|
+
...buildImportFixes(match, fixer),
|
|
40
|
+
...buildNonImportFixes(match, fixer),
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Builds all autofix operations for every match in a file.
|
|
45
|
+
* @param matches Autofix contexts produced by the matcher.
|
|
46
|
+
* @param fixer ESLint fixer.
|
|
47
|
+
* @returns Combined fix list.
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const fixes = buildFixes([], {} as never);
|
|
51
|
+
* void fixes;
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
function buildFixes(matches, fixer) {
|
|
55
|
+
return [
|
|
56
|
+
...buildCombinedImportFixes(matches, fixer),
|
|
57
|
+
...matches.flatMap((match) => buildNonImportFixes(match, fixer)),
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Builds fixes for `mock*` member-expression object rewrites.
|
|
62
|
+
* @param match Autofix context produced by the matcher.
|
|
63
|
+
* @param fixer ESLint fixer.
|
|
64
|
+
* @returns Replacements for member-expression object identifiers.
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const fixes = buildMemberRewriteFixes({} as never, {} as never);
|
|
68
|
+
* void fixes;
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
function buildMemberRewriteFixes(match, fixer) {
|
|
72
|
+
return match.memberRewrites.map((rewrite) => fixer.replaceTextRange(rewrite.localObjectRange, `vi.mocked(${rewrite.exportedName})`));
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Builds a fix that converts literal mock specifiers to `import("...")`.
|
|
76
|
+
* @param match Autofix context produced by the matcher.
|
|
77
|
+
* @param fixer ESLint fixer.
|
|
78
|
+
* @returns Fixes that normalize the mock specifier argument.
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const fixes = buildMockSpecifierFixes({} as never, {} as never);
|
|
82
|
+
* void fixes;
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
function buildMockSpecifierFixes(match, fixer) {
|
|
86
|
+
if (match.mockSpecifierIsImportExpression) {
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
const moduleText = JSON.stringify(match.moduleSpecifier);
|
|
90
|
+
return [
|
|
91
|
+
fixer.replaceTextRange(match.mockSpecifierRange, `import(${moduleText})`),
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Builds all non-import autofix operations for a single match.
|
|
96
|
+
* @param match Autofix context produced by the matcher.
|
|
97
|
+
* @param fixer ESLint fixer.
|
|
98
|
+
* @returns Combined non-import fix list.
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const fixes = buildNonImportFixes({} as never, {} as never);
|
|
102
|
+
* void fixes;
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
function buildNonImportFixes(match, fixer) {
|
|
106
|
+
return [
|
|
107
|
+
...buildBindingFixes(match, fixer),
|
|
108
|
+
...buildMemberRewriteFixes(match, fixer),
|
|
109
|
+
...buildMockSpecifierFixes(match, fixer),
|
|
110
|
+
...buildRemovalFixes(match, fixer),
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Builds fixes that remove declarations after inlining.
|
|
115
|
+
* @param match Autofix context produced by the matcher.
|
|
116
|
+
* @param fixer ESLint fixer.
|
|
117
|
+
* @returns Fixes that remove redundant declaration statements.
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const fixes = buildRemovalFixes({} as never, {} as never);
|
|
121
|
+
* void fixes;
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
function buildRemovalFixes(match, fixer) {
|
|
125
|
+
const uniqueRanges = getUniqueStatementRanges(match);
|
|
126
|
+
return uniqueRanges.map((statementRange) => {
|
|
127
|
+
const expandedRange = extendRangeToLineBreak(match.sourceText, statementRange);
|
|
128
|
+
return fixer.removeRange(expandedRange);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Extends a statement range to include the trailing line break.
|
|
133
|
+
* @param sourceText Full file content for newline lookup.
|
|
134
|
+
* @param statementRange Start/end offsets for the statement.
|
|
135
|
+
* @returns Statement range extended through the trailing line break.
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* const range = extendRangeToLineBreak("a\n", [0, 1]);
|
|
139
|
+
* void range;
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
function extendRangeToLineBreak(sourceText, statementRange) {
|
|
143
|
+
const [start, end] = statementRange;
|
|
144
|
+
const nextLineFeedIndex = sourceText.indexOf("\n", end);
|
|
145
|
+
return nextLineFeedIndex === -1
|
|
146
|
+
? [start, sourceText.length]
|
|
147
|
+
: [start, nextLineFeedIndex + 1];
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Returns sorted unique statement ranges for declarations to remove.
|
|
151
|
+
* @param match Autofix context produced by the matcher.
|
|
152
|
+
* @returns Distinct declaration statement ranges to remove.
|
|
153
|
+
* @example
|
|
154
|
+
* ```typescript
|
|
155
|
+
* const ranges = getUniqueStatementRanges({ bindings: [], declarations: new Map() } as never);
|
|
156
|
+
* void ranges;
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
function getUniqueStatementRanges(match) {
|
|
160
|
+
const rangeMap = new Map();
|
|
161
|
+
for (const binding of match.bindings) {
|
|
162
|
+
const declaration = match.declarations.get(binding.localName);
|
|
163
|
+
if (declaration !== void 0) {
|
|
164
|
+
const key = `${declaration.statementRange[0]}:${declaration.statementRange[1]}`;
|
|
165
|
+
rangeMap.set(key, declaration.statementRange);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return [...rangeMap.values()];
|
|
169
|
+
}
|
|
170
|
+
export { buildFix, buildFixes };
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL3ByZWZlci12aS1tb2NrZWQtaW1wb3J0L2ZpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsaUJBQWlCLENBQ3hCLEtBQWdCLEVBQ2hCLEtBQXFCO0lBRXJCLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN4QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUQsSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDNUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUMvQixXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQ2hDLENBQUM7UUFDRixPQUFPO1lBQ0wsS0FBSyxDQUFDLGdCQUFnQixDQUNwQixPQUFPLENBQUMsYUFBYSxFQUNyQixHQUFHLE9BQU8sQ0FBQyxZQUFZLEtBQUssZUFBZSxFQUFFLENBQzlDO1NBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLFFBQVEsQ0FBQyxLQUFnQixFQUFFLEtBQXFCO0lBQ3ZELE9BQU87UUFDTCxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDakMsR0FBRyxtQkFBbUIs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SSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELElBQUksV0FBVyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoRixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBSYW5nZSB9IGZyb20gXCIuL21hdGNoLWhlbHBlcnNcIjtcbmltcG9ydCB0eXBlIHsgUnVsZU1hdGNoIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgYnVpbGRJbXBvcnRGaXhlcyB9IGZyb20gXCIuL2ZpeC1pbXBvcnQtc3RhdGVtZW50c1wiO1xuaW1wb3J0IHsgYnVpbGRDb21iaW5lZEltcG9ydEZpeGVzIH0gZnJvbSBcIi4vZml4LWltcG9ydHNcIjtcblxuLyoqXG4gKiBCdWlsZHMgZml4ZXMgdGhhdCBpbmxpbmUgZGVjbGFyYXRpb24gaW5pdGlhbGl6ZXJzIGludG8gZmFjdG9yeSBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIG1hdGNoIEF1dG9maXggY29udGV4dCBwcm9kdWNlZCBieSB0aGUgbWF0Y2hlci5cbiAqIEBwYXJhbSBmaXhlciBFU0xpbnQgZml4ZXIuXG4gKiBAcmV0dXJucyBCaW5kaW5nLXJlbGF0ZWQgZml4ZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZml4ZXMgPSBidWlsZEJpbmRpbmdGaXhlcyh7fSBhcyBuZXZlciwge30gYXMgbmV2ZXIpO1xuICogdm9pZCBmaXhlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZEJpbmRpbmdGaXhlcyhcbiAgbWF0Y2g6IFJ1bGVNYXRjaCxcbiAgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyLFxuKTogUnVsZS5GaXhbXSB7XG4gIHJldHVybiBtYXRjaC5iaW5kaW5ncy5mbGF0TWFwKChiaW5kaW5nKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyYXRpb24gPSBtYXRjaC5kZWNsYXJhdGlvbnMuZ2V0KGJpbmRpbmcubG9jYWxOYW1lKTtcbiAgICBpZiAoZGVjbGFyYXRpb24gPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBpbml0aWFsaXplclRleHQgPSBtYXRjaC5zb3VyY2VUZXh0LnNsaWNlKFxuICAgICAgZGVjbGFyYXRpb24uaW5pdGlhbGl6ZXJSYW5nZVswXSxcbiAgICAgIGRlY2xhcmF0aW9uLmluaXRpYWxpemVyUmFuZ2VbMV0sXG4gICAgKTtcbiAgICByZXR1cm4gW1xuICAgICAgZml4ZXIucmVwbGFjZVRleHRSYW5nZShcbiAgICAgICAgYmluZGluZy5wcm9wZXJ0eVJhbmdlLFxuICAgICAgICBgJHtiaW5kaW5nLmV4cG9ydGVkTmFtZX06ICR7aW5pdGlhbGl6ZXJUZXh0fWAsXG4gICAgICApLFxuICAgIF07XG4gIH0pO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhbGwgYXV0b2ZpeCBvcGVyYXRpb25zIGZvciBhIHNpbmdsZSBtYXRjaC5cbiAqIEBwYXJhbSBtYXRjaCBBdXRvZml4IGNvbnRleHQgcHJvZHVjZWQgYnkgdGhlIG1hdGNoZXIuXG4gKiBAcGFyYW0gZml4ZXIgRVNMaW50IGZpeGVyLlxuICogQHJldHVybnMgQ29tYmluZWQgZml4IGxpc3QuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZml4ZXMgPSBidWlsZEZpeCh7fSBhcyBuZXZlciwge30gYXMgbmV2ZXIpO1xuICogdm9pZCBmaXhlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZEZpeChtYXRjaDogUnVsZU1hdGNoLCBmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeFtdIHtcbiAgcmV0dXJuIFtcbiAgICAuLi5idWlsZEltcG9ydEZpeGVzKG1hdGNoLCBmaXhlciksXG4gICAgLi4uYnVpbGROb25JbXBvcnRGaXhlcyhtYXRjaCwgZml4ZXIpLFxuICBdO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhbGwgYXV0b2ZpeCBvcGVyYXRpb25zIGZvciBldmVyeSBtYXRjaCBpbiBhIGZpbGUuXG4gKiBAcGFyYW0gbWF0Y2hlcyBBdXRvZml4IGNvbnRleHRzIHByb2R1Y2VkIGJ5IHRoZSBtYXRjaGVyLlxuICogQHBhcmFtIGZpeGVyIEVTTGludCBmaXhlci5cbiAqIEByZXR1cm5zIENvbWJpbmVkIGZpeCBsaXN0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeGVzID0gYnVpbGRGaXhlcyhbXSwge30gYXMgbmV2ZXIpO1xuICogdm9pZCBmaXhlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZEZpeGVzKG1hdGNoZXM6IFJ1bGVNYXRjaFtdLCBmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeFtdIHtcbiAgcmV0dXJuIFtcbiAgICAuLi5idWlsZENvbWJpbmVkSW1wb3J0Rml4ZXMobWF0Y2hlcywgZml4ZXIpLFxuICAgIC4uLm1hdGNoZXMuZmxhdE1hcCgobWF0Y2gpID0+IGJ1aWxkTm9uSW1wb3J0Rml4ZXMobWF0Y2gsIGZpeGVyKSksXG4gIF07XG59XG5cbi8qKlxuICogQnVpbGRzIGZpeGVzIGZvciBgbW9jaypgIG1lbWJlci1leHByZXNzaW9uIG9iamVjdCByZXdyaXRlcy5cbiAqIEBwYXJhbSBtYXRjaCBBdXRvZml4IGNvbnRleHQgcHJvZHVjZWQgYnkgdGhlIG1hdGNoZXIuXG4gKiBAcGFyYW0gZml4ZXIgRVNMaW50IGZpeGVyLlxuICogQHJldHVybnMgUmVwbGFjZW1lbnRzIGZvciBtZW1iZXItZXhwcmVzc2lvbiBvYmplY3QgaWRlbnRpZmllcnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZml4ZXMgPSBidWlsZE1lbWJlclJld3JpdGVGaXhlcyh7fSBhcyBuZXZlciwge30gYXMgbmV2ZXIpO1xuICogdm9pZCBmaXhlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZE1lbWJlclJld3JpdGVGaXhlcyhcbiAgbWF0Y2g6IFJ1bGVNYXRjaCxcbiAgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyLFxuKTogUnVsZS5GaXhbXSB7XG4gIHJldHVybiBtYXRjaC5tZW1iZXJSZXdyaXRlcy5tYXAoKHJld3JpdGUpID0+XG4gICAgZml4ZXIucmVwbGFjZVRleHRSYW5nZShcbiAgICAgIHJld3JpdGUubG9jYWxPYmplY3RSYW5nZSxcbiAgICAgIGB2aS5tb2NrZWQoJHtyZXdyaXRlLmV4cG9ydGVkTmFtZX0pYCxcbiAgICApLFxuICApO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGZpeCB0aGF0IGNvbnZlcnRzIGxpdGVyYWwgbW9jayBzcGVjaWZpZXJzIHRvIGBpbXBvcnQoXCIuLi5cIilgLlxuICogQHBhcmFtIG1hdGNoIEF1dG9maXggY29udGV4dCBwcm9kdWNlZCBieSB0aGUgbWF0Y2hlci5cbiAqIEBwYXJhbSBmaXhlciBFU0xpbnQgZml4ZXIuXG4gKiBAcmV0dXJucyBGaXhlcyB0aGF0IG5vcm1hbGl6ZSB0aGUgbW9jayBzcGVjaWZpZXIgYXJndW1lbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZml4ZXMgPSBidWlsZE1vY2tTcGVjaWZpZXJGaXhlcyh7fSBhcyBuZXZlciwge30gYXMgbmV2ZXIpO1xuICogdm9pZCBmaXhlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZE1vY2tTcGVjaWZpZXJGaXhlcyhcbiAgbWF0Y2g6IFJ1bGVNYXRjaCxcbiAgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyLFxuKTogUnVsZS5GaXhbXSB7XG4gIGlmIChtYXRjaC5tb2NrU3BlY2lmaWVySXNJbXBvcnRFeHByZXNzaW9uKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgbW9kdWxlVGV4dCA9IEpTT04uc3RyaW5naWZ5KG1hdGNoLm1vZHVsZVNwZWNpZmllcik7XG4gIHJldHVybiBbXG4gICAgZml4ZXIucmVwbGFjZVRleHRSYW5nZShtYXRjaC5tb2NrU3BlY2lmaWVyUmFuZ2UsIGBpbXBvcnQoJHttb2R1bGVUZXh0fSlgKSxcbiAgXTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYWxsIG5vbi1pbXBvcnQgYXV0b2ZpeCBvcGVyYXRpb25zIGZvciBhIHNpbmdsZSBtYXRjaC5cbiAqIEBwYXJhbSBtYXRjaCBBdXRvZml4IGNvbnRleHQgcHJvZHVjZWQgYnkgdGhlIG1hdGNoZXIuXG4gKiBAcGFyYW0gZml4ZXIgRVNMaW50IGZpeGVyLlxuICogQHJldHVybnMgQ29tYmluZWQgbm9uLWltcG9ydCBmaXggbGlzdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhlcyA9IGJ1aWxkTm9uSW1wb3J0Rml4ZXMoe30gYXMgbmV2ZXIsIHt9IGFzIG5ldmVyKTtcbiAqIHZvaWQgZml4ZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYnVpbGROb25JbXBvcnRGaXhlcyhcbiAgbWF0Y2g6IFJ1bGVNYXRjaCxcbiAgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyLFxuKTogUnVsZS5GaXhbXSB7XG4gIHJldHVybiBbXG4gICAgLi4uYnVpbGRCaW5kaW5nRml4ZXMobWF0Y2gsIGZpeGVyKSxcbiAgICAuLi5idWlsZE1lbWJlclJld3JpdGVGaXhlcyhtYXRjaCwgZml4ZXIpLFxuICAgIC4uLmJ1aWxkTW9ja1NwZWNpZmllckZpeGVzKG1hdGNoLCBmaXhlciksXG4gICAgLi4uYnVpbGRSZW1vdmFsRml4ZXMobWF0Y2gsIGZpeGVyKSxcbiAgXTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgZml4ZXMgdGhhdCByZW1vdmUgZGVjbGFyYXRpb25zIGFmdGVyIGlubGluaW5nLlxuICogQHBhcmFtIG1hdGNoIEF1dG9maXggY29udGV4dCBwcm9kdWNlZCBieSB0aGUgbWF0Y2hlci5cbiAqIEBwYXJhbSBmaXhlciBFU0xpbnQgZml4ZXIuXG4gKiBAcmV0dXJucyBGaXhlcyB0aGF0IHJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb24gc3RhdGVtZW50cy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhlcyA9IGJ1aWxkUmVtb3ZhbEZpeGVzKHt9IGFzIG5ldmVyLCB7fSBhcyBuZXZlcik7XG4gKiB2b2lkIGZpeGVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkUmVtb3ZhbEZpeGVzKFxuICBtYXRjaDogUnVsZU1hdGNoLFxuICBmaXhlcjogUnVsZS5SdWxlRml4ZXIsXG4pOiBSdWxlLkZpeFtdIHtcbiAgY29uc3QgdW5pcXVlUmFuZ2VzID0gZ2V0VW5pcXVlU3RhdGVtZW50UmFuZ2VzKG1hdGNoKTtcbiAgcmV0dXJuIHVuaXF1ZVJhbmdlcy5tYXAoKHN0YXRlbWVudFJhbmdlKSA9PiB7XG4gICAgY29uc3QgZXhwYW5kZWRSYW5nZSA9IGV4dGVuZFJhbmdlVG9MaW5lQnJlYWsoXG4gICAgICBtYXRjaC5zb3VyY2VUZXh0LFxuICAgICAgc3RhdGVtZW50UmFuZ2UsXG4gICAgKTtcbiAgICByZXR1cm4gZml4ZXIucmVtb3ZlUmFuZ2UoZXhwYW5kZWRSYW5nZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEV4dGVuZHMgYSBzdGF0ZW1lbnQgcmFuZ2UgdG8gaW5jbHVkZSB0aGUgdHJhaWxpbmcgbGluZSBicmVhay5cbiAqIEBwYXJhbSBzb3VyY2VUZXh0IEZ1bGwgZmlsZSBjb250ZW50IGZvciBuZXdsaW5lIGxvb2t1cC5cbiAqIEBwYXJhbSBzdGF0ZW1lbnRSYW5nZSBTdGFydC9lbmQgb2Zmc2V0cyBmb3IgdGhlIHN0YXRlbWVudC5cbiAqIEByZXR1cm5zIFN0YXRlbWVudCByYW5nZSBleHRlbmRlZCB0aHJvdWdoIHRoZSB0cmFpbGluZyBsaW5lIGJyZWFrLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJhbmdlID0gZXh0ZW5kUmFuZ2VUb0xpbmVCcmVhayhcImFcXG5cIiwgWzAsIDFdKTtcbiAqIHZvaWQgcmFuZ2U7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kUmFuZ2VUb0xpbmVCcmVhayhcbiAgc291cmNlVGV4dDogc3RyaW5nLFxuICBzdGF0ZW1lbnRSYW5nZTogUmFuZ2UsXG4pOiBSYW5nZSB7XG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IHN0YXRlbWVudFJhbmdlO1xuICBjb25zdCBuZXh0TGluZUZlZWRJbmRleCA9IHNvdXJjZVRleHQuaW5kZXhPZihcIlxcblwiLCBlbmQpO1xuICByZXR1cm4gbmV4dExpbmVGZWVkSW5kZXggPT09IC0xXG4gICAgPyBbc3RhcnQsIHNvdXJjZVRleHQubGVuZ3RoXVxuICAgIDogW3N0YXJ0LCBuZXh0TGluZUZlZWRJbmRleCArIDFdO1xufVxuXG4vKipcbiAqIFJldHVybnMgc29ydGVkIHVuaXF1ZSBzdGF0ZW1lbnQgcmFuZ2VzIGZvciBkZWNsYXJhdGlvbnMgdG8gcmVtb3ZlLlxuICogQHBhcmFtIG1hdGNoIEF1dG9maXggY29udGV4dCBwcm9kdWNlZCBieSB0aGUgbWF0Y2hlci5cbiAqIEByZXR1cm5zIERpc3RpbmN0IGRlY2xhcmF0aW9uIHN0YXRlbWVudCByYW5nZXMgdG8gcmVtb3ZlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJhbmdlcyA9IGdldFVuaXF1ZVN0YXRlbWVudFJhbmdlcyh7IGJpbmRpbmdzOiBbXSwgZGVjbGFyYXRpb25zOiBuZXcgTWFwKCkgfSBhcyBuZXZlcik7XG4gKiB2b2lkIHJhbmdlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRVbmlxdWVTdGF0ZW1lbnRSYW5nZXMobWF0Y2g6IFJ1bGVNYXRjaCk6IFJhbmdlW10ge1xuICBjb25zdCByYW5nZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSYW5nZT4oKTtcbiAgZm9yIChjb25zdCBiaW5kaW5nIG9mIG1hdGNoLmJpbmRpbmdzKSB7XG4gICAgY29uc3QgZGVjbGFyYXRpb24gPSBtYXRjaC5kZWNsYXJhdGlvbnMuZ2V0KGJpbmRpbmcubG9jYWxOYW1lKTtcbiAgICBpZiAoZGVjbGFyYXRpb24gIT09IHZvaWQgMCkge1xuICAgICAgY29uc3Qga2V5ID0gYCR7ZGVjbGFyYXRpb24uc3RhdGVtZW50UmFuZ2VbMF19OiR7ZGVjbGFyYXRpb24uc3RhdGVtZW50UmFuZ2VbMV19YDtcbiAgICAgIHJhbmdlTWFwLnNldChrZXksIGRlY2xhcmF0aW9uLnN0YXRlbWVudFJhbmdlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gWy4uLnJhbmdlTWFwLnZhbHVlcygpXTtcbn1cblxuZXhwb3J0IHsgYnVpbGRGaXgsIGJ1aWxkRml4ZXMgfTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { preferViMockedImportRule } from "./rule.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcHJlZmVyVmlNb2NrZWRJbXBvcnRSdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-bindings.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/match-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAIpD;;;;;;;;;;GAUG;AACH,iBAAS,eAAe,CACtB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACrC,OAAO,EAAE,CAIX;AA8CD,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { hasRange } from "./match-helpers.js";
|
|
2
|
+
/**
|
|
3
|
+
* Collects bindings from a mock factory object.
|
|
4
|
+
* @param objectExpression Returned object expression.
|
|
5
|
+
* @param declarations Known declarations by local name.
|
|
6
|
+
* @returns Collected bindings.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const bindings = collectBindings({ properties: [], type: "ObjectExpression" } as never, new Map());
|
|
10
|
+
* void bindings;
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function collectBindings(objectExpression, declarations) {
|
|
14
|
+
return objectExpression.properties
|
|
15
|
+
.map((propertyNode) => toBinding(propertyNode, declarations))
|
|
16
|
+
.filter((binding) => binding !== void 0);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Converts one object property into a binding when supported.
|
|
20
|
+
* @param propertyNode Object property candidate.
|
|
21
|
+
* @param declarations Known declarations.
|
|
22
|
+
* @returns Binding when property matches the rule shape.
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const binding = toBinding({ type: "SpreadElement" } as never, new Map());
|
|
26
|
+
* void binding;
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
function toBinding(propertyNode, declarations) {
|
|
30
|
+
if (propertyNode.type !== "Property" ||
|
|
31
|
+
propertyNode.key.type !== "Identifier") {
|
|
32
|
+
return void 0;
|
|
33
|
+
}
|
|
34
|
+
if (!hasRange(propertyNode) ||
|
|
35
|
+
!hasRange(propertyNode.key) ||
|
|
36
|
+
propertyNode.value.type !== "Identifier") {
|
|
37
|
+
return void 0;
|
|
38
|
+
}
|
|
39
|
+
if (!hasRange(propertyNode.value) ||
|
|
40
|
+
!declarations.has(propertyNode.value.name)) {
|
|
41
|
+
return void 0;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
exportedName: propertyNode.key.name,
|
|
45
|
+
localName: propertyNode.value.name,
|
|
46
|
+
propertyKeyRange: propertyNode.key.range,
|
|
47
|
+
propertyRange: propertyNode.range,
|
|
48
|
+
propertyValueRange: propertyNode.value.range,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export { collectBindings };
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtYmluZGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvbWF0Y2gtYmluZGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLGVBQWUsQ0FDdEIsZ0JBQXlDLEVBQ3pDLFlBQXNDO0lBRXRDLE9BQU8sZ0JBQWdCLENBQUMsVUFBVTtTQUMvQixHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDNUQsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFzQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLFNBQVMsQ0FDaEIsWUFBb0QsRUFDcEQsWUFBc0M7SUFFdEMsSUFDRSxZQUFZLENBQUMsSUFBSSxLQUFLLFVBQVU7UUFDaEMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUN0QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFDRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDdkIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztRQUMzQixZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQ3hDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUNFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDN0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQzFDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPO1FBQ0wsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSTtRQUNuQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJO1FBQ2xDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSztRQUN4QyxhQUFhLEVBQUUsWUFBWSxDQUFDLEtBQUs7UUFDakMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLO0tBQzdDLENBQUM7QUFDSixDQUFDO0FBRUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG5pbXBvcnQgdHlwZSB7IEJpbmRpbmcsIERlY2xhcmF0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgaGFzUmFuZ2UgfSBmcm9tIFwiLi9tYXRjaC1oZWxwZXJzXCI7XG5cbi8qKlxuICogQ29sbGVjdHMgYmluZGluZ3MgZnJvbSBhIG1vY2sgZmFjdG9yeSBvYmplY3QuXG4gKiBAcGFyYW0gb2JqZWN0RXhwcmVzc2lvbiBSZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbnMgS25vd24gZGVjbGFyYXRpb25zIGJ5IGxvY2FsIG5hbWUuXG4gKiBAcmV0dXJucyBDb2xsZWN0ZWQgYmluZGluZ3MuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYmluZGluZ3MgPSBjb2xsZWN0QmluZGluZ3MoeyBwcm9wZXJ0aWVzOiBbXSwgdHlwZTogXCJPYmplY3RFeHByZXNzaW9uXCIgfSBhcyBuZXZlciwgbmV3IE1hcCgpKTtcbiAqIHZvaWQgYmluZGluZ3M7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY29sbGVjdEJpbmRpbmdzKFxuICBvYmplY3RFeHByZXNzaW9uOiBFU1RyZWUuT2JqZWN0RXhwcmVzc2lvbixcbiAgZGVjbGFyYXRpb25zOiBNYXA8c3RyaW5nLCBEZWNsYXJhdGlvbj4sXG4pOiBCaW5kaW5nW10ge1xuICByZXR1cm4gb2JqZWN0RXhwcmVzc2lvbi5wcm9wZXJ0aWVzXG4gICAgLm1hcCgocHJvcGVydHlOb2RlKSA9PiB0b0JpbmRpbmcocHJvcGVydHlOb2RlLCBkZWNsYXJhdGlvbnMpKVxuICAgIC5maWx0ZXIoKGJpbmRpbmcpOiBiaW5kaW5nIGlzIEJpbmRpbmcgPT4gYmluZGluZyAhPT0gdm9pZCAwKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBvbmUgb2JqZWN0IHByb3BlcnR5IGludG8gYSBiaW5kaW5nIHdoZW4gc3VwcG9ydGVkLlxuICogQHBhcmFtIHByb3BlcnR5Tm9kZSBPYmplY3QgcHJvcGVydHkgY2FuZGlkYXRlLlxuICogQHBhcmFtIGRlY2xhcmF0aW9ucyBLbm93biBkZWNsYXJhdGlvbnMuXG4gKiBAcmV0dXJucyBCaW5kaW5nIHdoZW4gcHJvcGVydHkgbWF0Y2hlcyB0aGUgcnVsZSBzaGFwZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBiaW5kaW5nID0gdG9CaW5kaW5nKHsgdHlwZTogXCJTcHJlYWRFbGVtZW50XCIgfSBhcyBuZXZlciwgbmV3IE1hcCgpKTtcbiAqIHZvaWQgYmluZGluZztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB0b0JpbmRpbmcoXG4gIHByb3BlcnR5Tm9kZTogRVNUcmVlLlByb3BlcnR5IHwgRVNUcmVlLlNwcmVhZEVsZW1lbnQsXG4gIGRlY2xhcmF0aW9uczogTWFwPHN0cmluZywgRGVjbGFyYXRpb24+LFxuKTogQmluZGluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChcbiAgICBwcm9wZXJ0eU5vZGUudHlwZSAhPT0gXCJQcm9wZXJ0eVwiIHx8XG4gICAgcHJvcGVydHlOb2RlLmtleS50eXBlICE9PSBcIklkZW50aWZpZXJcIlxuICApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGlmIChcbiAgICAhaGFzUmFuZ2UocHJvcGVydHlOb2RlKSB8fFxuICAgICFoYXNSYW5nZShwcm9wZXJ0eU5vZGUua2V5KSB8fFxuICAgIHByb3BlcnR5Tm9kZS52YWx1ZS50eXBlICE9PSBcIklkZW50aWZpZXJcIlxuICApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGlmIChcbiAgICAhaGFzUmFuZ2UocHJvcGVydHlOb2RlLnZhbHVlKSB8fFxuICAgICFkZWNsYXJhdGlvbnMuaGFzKHByb3BlcnR5Tm9kZS52YWx1ZS5uYW1lKVxuICApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRlZE5hbWU6IHByb3BlcnR5Tm9kZS5rZXkubmFtZSxcbiAgICBsb2NhbE5hbWU6IHByb3BlcnR5Tm9kZS52YWx1ZS5uYW1lLFxuICAgIHByb3BlcnR5S2V5UmFuZ2U6IHByb3BlcnR5Tm9kZS5rZXkucmFuZ2UsXG4gICAgcHJvcGVydHlSYW5nZTogcHJvcGVydHlOb2RlLnJhbmdlLFxuICAgIHByb3BlcnR5VmFsdWVSYW5nZTogcHJvcGVydHlOb2RlLnZhbHVlLnJhbmdlLFxuICB9O1xufVxuXG5leHBvcnQgeyBjb2xsZWN0QmluZGluZ3MgfTtcbiJdfQ==
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Rule } from "eslint";
|
|
2
2
|
import type * as ESTree from "estree";
|
|
3
|
-
import type { Declaration } from "./types";
|
|
3
|
+
import type { Declaration } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* Collects top-level `const x = vi.fn(...)` declarations.
|
|
6
6
|
* @param program Program node.
|
|
7
|
+
* @param sourceCode Source code wrapper used to inspect attached comments.
|
|
7
8
|
* @returns Declarations by local name.
|
|
8
9
|
* @example
|
|
9
10
|
* ```typescript
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-declarations.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/match-declarations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C;;;;;;;;;;GAUG;AACH,iBAAS,mBAAmB,CAC1B,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,UAAU,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAC1C,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAU1B;AA4JD,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { hasRange, isViFunctionCall } from "./match-helpers.js";
|
|
2
|
+
/**
|
|
3
|
+
* Collects top-level `const x = vi.fn(...)` declarations.
|
|
4
|
+
* @param program Program node.
|
|
5
|
+
* @param sourceCode Source code wrapper used to inspect attached comments.
|
|
6
|
+
* @returns Declarations by local name.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const declarations = collectDeclarations({ body: [], sourceType: "module", type: "Program" } as never);
|
|
10
|
+
* void declarations;
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function collectDeclarations(program, sourceCode) {
|
|
14
|
+
const declarations = program.body
|
|
15
|
+
.map((statement) => toDeclaration(statement, sourceCode))
|
|
16
|
+
.filter((declaration) => declaration !== void 0);
|
|
17
|
+
return new Map(declarations.map((declaration) => [declaration.localName, declaration]));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Finds the earliest attached leading comment range for a declaration.
|
|
21
|
+
* @param commentsBefore Comments that appear before the declaration.
|
|
22
|
+
* @param sourceCode Source code wrapper used to inspect interstitial text.
|
|
23
|
+
* @param statementStart Original declaration start offset.
|
|
24
|
+
* @returns Earliest attached comment start, or the statement start.
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const start = getAttachedCommentStart([], void 0, 10);
|
|
28
|
+
* void start;
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
function getAttachedCommentStart(commentsBefore, sourceCode, statementStart) {
|
|
32
|
+
let removalStart = statementStart;
|
|
33
|
+
let nextStart = statementStart;
|
|
34
|
+
for (const comment of commentsBefore.toReversed()) {
|
|
35
|
+
const commentStart = getNextAttachedCommentStart(comment, sourceCode, nextStart);
|
|
36
|
+
if (commentStart === void 0) {
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
removalStart = commentStart;
|
|
40
|
+
nextStart = commentStart;
|
|
41
|
+
}
|
|
42
|
+
return removalStart;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Returns the next attached comment start when a comment remains linked to the declaration.
|
|
46
|
+
* @param comment Candidate leading comment.
|
|
47
|
+
* @param sourceCode Source code wrapper used to inspect interstitial text.
|
|
48
|
+
* @param nextStart Current boundary that the comment must attach to.
|
|
49
|
+
* @returns Comment start when attached, otherwise `undefined`.
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const start = getNextAttachedCommentStart({ type: "Block", value: "x" } as never, void 0, 5);
|
|
53
|
+
* void start;
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
function getNextAttachedCommentStart(comment, sourceCode, nextStart) {
|
|
57
|
+
const commentRange = comment.range;
|
|
58
|
+
if (commentRange === void 0) {
|
|
59
|
+
return void 0;
|
|
60
|
+
}
|
|
61
|
+
const [commentStart, commentEnd] = commentRange;
|
|
62
|
+
const gapText = sourceCode?.text.slice(commentEnd, nextStart) ?? "";
|
|
63
|
+
return isAttachedLeadingGap(gapText) ? commentStart : void 0;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Returns the declaration removal range, including directly attached comments.
|
|
67
|
+
* @param statement Variable declaration statement.
|
|
68
|
+
* @param sourceCode Source code wrapper when available.
|
|
69
|
+
* @returns Statement range expanded to attached leading comments.
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const range = getRemovalRange({ range: [5, 10], type: "VariableDeclaration" } as never);
|
|
73
|
+
* void range;
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
function getRemovalRange(statement, sourceCode) {
|
|
77
|
+
const [statementStart, statementEnd] = statement.range;
|
|
78
|
+
const commentsBefore = sourceCode?.getCommentsBefore(statement) ?? [];
|
|
79
|
+
const removalStart = getAttachedCommentStart(commentsBefore, sourceCode, statementStart);
|
|
80
|
+
return [removalStart, statementEnd];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Returns true when whitespace between a comment and declaration keeps them attached.
|
|
84
|
+
* @param gapText Source text between adjacent nodes.
|
|
85
|
+
* @returns True when the gap contains no blank line.
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const ok = isAttachedLeadingGap("\n");
|
|
89
|
+
* void ok;
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
function isAttachedLeadingGap(gapText) {
|
|
93
|
+
return (/^[\t \r\n]*$/u.test(gapText) && !/(?:\r?\n)[\t ]*(?:\r?\n)/u.test(gapText));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Converts one top-level statement into a declaration when supported.
|
|
97
|
+
* @param statement Candidate statement.
|
|
98
|
+
* @param sourceCode Source code wrapper used to inspect attached comments.
|
|
99
|
+
* @returns Declaration when statement matches the rule shape.
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* const declaration = toDeclaration({ type: "EmptyStatement" } as never);
|
|
103
|
+
* void declaration;
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
function toDeclaration(statement, sourceCode) {
|
|
107
|
+
if (statement.type !== "VariableDeclaration" || statement.kind !== "const") {
|
|
108
|
+
return void 0;
|
|
109
|
+
}
|
|
110
|
+
if (!hasRange(statement) || statement.declarations.length !== 1) {
|
|
111
|
+
return void 0;
|
|
112
|
+
}
|
|
113
|
+
const [declarator] = statement.declarations;
|
|
114
|
+
if (declarator === void 0 ||
|
|
115
|
+
declarator.id.type !== "Identifier" ||
|
|
116
|
+
!hasRange(declarator.id) ||
|
|
117
|
+
declarator.init === null ||
|
|
118
|
+
declarator.init === void 0 ||
|
|
119
|
+
!hasRange(declarator.init) ||
|
|
120
|
+
!isViFunctionCall(declarator.init)) {
|
|
121
|
+
return void 0;
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
declarationIdRange: declarator.id.range,
|
|
125
|
+
initializerRange: declarator.init.range,
|
|
126
|
+
localName: declarator.id.name,
|
|
127
|
+
statementRange: getRemovalRange(statement, sourceCode),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export { collectDeclarations };
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtZGVjbGFyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL3ByZWZlci12aS1tb2NrZWQtaW1wb3J0L21hdGNoLWRlY2xhcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLE9BQXVCLEVBQ3ZCLFVBQTJDO0lBRTNDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJO1NBQzlCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUN4RCxNQUFNLENBQ0wsQ0FBQyxXQUFXLEVBQThCLEVBQUUsQ0FBQyxXQUFXLEtBQUssS0FBSyxDQUFDLENBQ3BFLENBQUM7SUFFSixPQUFPLElBQUksR0FBRyxDQUNaLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUN4RSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FDOUIsY0FBeUMsRUFDekMsVUFBc0QsRUFDdEQsY0FBc0I7SUFFdEIsSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDO0lBQ2xDLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQztJQUUvQixLQUFLLE1BQU0sT0FBTyxJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1FBQ2xELE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUM5QyxPQUFPLEVBQ1AsVUFBVSxFQUNWLFNBQVMsQ0FDVixDQUFDO1FBQ0YsSUFBSSxZQUFZLEtBQUssS0FBSyxDQUFDLEVBQUUs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QWMsRUFBRSxlQUFlLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQztLQUN2RCxDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG5pbXBvcnQgdHlwZSB7IERlY2xhcmF0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgaGFzUmFuZ2UsIGlzVmlGdW5jdGlvbkNhbGwgfSBmcm9tIFwiLi9tYXRjaC1oZWxwZXJzXCI7XG5cbi8qKlxuICogQ29sbGVjdHMgdG9wLWxldmVsIGBjb25zdCB4ID0gdmkuZm4oLi4uKWAgZGVjbGFyYXRpb25zLlxuICogQHBhcmFtIHByb2dyYW0gUHJvZ3JhbSBub2RlLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGNvZGUgd3JhcHBlciB1c2VkIHRvIGluc3BlY3QgYXR0YWNoZWQgY29tbWVudHMuXG4gKiBAcmV0dXJucyBEZWNsYXJhdGlvbnMgYnkgbG9jYWwgbmFtZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBkZWNsYXJhdGlvbnMgPSBjb2xsZWN0RGVjbGFyYXRpb25zKHsgYm9keTogW10sIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsIHR5cGU6IFwiUHJvZ3JhbVwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBkZWNsYXJhdGlvbnM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY29sbGVjdERlY2xhcmF0aW9ucyhcbiAgcHJvZ3JhbTogRVNUcmVlLlByb2dyYW0sXG4gIHNvdXJjZUNvZGU/OiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSxcbik6IE1hcDxzdHJpbmcsIERlY2xhcmF0aW9uPiB7XG4gIGNvbnN0IGRlY2xhcmF0aW9ucyA9IHByb2dyYW0uYm9keVxuICAgIC5tYXAoKHN0YXRlbWVudCkgPT4gdG9EZWNsYXJhdGlvbihzdGF0ZW1lbnQsIHNvdXJjZUNvZGUpKVxuICAgIC5maWx0ZXIoXG4gICAgICAoZGVjbGFyYXRpb24pOiBkZWNsYXJhdGlvbiBpcyBEZWNsYXJhdGlvbiA9PiBkZWNsYXJhdGlvbiAhPT0gdm9pZCAwLFxuICAgICk7XG5cbiAgcmV0dXJuIG5ldyBNYXAoXG4gICAgZGVjbGFyYXRpb25zLm1hcCgoZGVjbGFyYXRpb24pID0+IFtkZWNsYXJhdGlvbi5sb2NhbE5hbWUsIGRlY2xhcmF0aW9uXSksXG4gICk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGVhcmxpZXN0IGF0dGFjaGVkIGxlYWRpbmcgY29tbWVudCByYW5nZSBmb3IgYSBkZWNsYXJhdGlvbi5cbiAqIEBwYXJhbSBjb21tZW50c0JlZm9yZSBDb21tZW50cyB0aGF0IGFwcGVhciBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGNvZGUgd3JhcHBlciB1c2VkIHRvIGluc3BlY3QgaW50ZXJzdGl0aWFsIHRleHQuXG4gKiBAcGFyYW0gc3RhdGVtZW50U3RhcnQgT3JpZ2luYWwgZGVjbGFyYXRpb24gc3RhcnQgb2Zmc2V0LlxuICogQHJldHVybnMgRWFybGllc3QgYXR0YWNoZWQgY29tbWVudCBzdGFydCwgb3IgdGhlIHN0YXRlbWVudCBzdGFydC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzdGFydCA9IGdldEF0dGFjaGVkQ29tbWVudFN0YXJ0KFtdLCB2b2lkIDAsIDEwKTtcbiAqIHZvaWQgc3RhcnQ7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0QXR0YWNoZWRDb21tZW50U3RhcnQoXG4gIGNvbW1lbnRzQmVmb3JlOiByZWFkb25seSBFU1RyZWUuQ29tbWVudFtdLFxuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSB8IHVuZGVmaW5lZCxcbiAgc3RhdGVtZW50U3RhcnQ6IG51bWJlcixcbik6IG51bWJlciB7XG4gIGxldCByZW1vdmFsU3RhcnQgPSBzdGF0ZW1lbnRTdGFydDtcbiAgbGV0IG5leHRTdGFydCA9IHN0YXRlbWVudFN0YXJ0O1xuXG4gIGZvciAoY29uc3QgY29tbWVudCBvZiBjb21tZW50c0JlZm9yZS50b1JldmVyc2VkKCkpIHtcbiAgICBjb25zdCBjb21tZW50U3RhcnQgPSBnZXROZXh0QXR0YWNoZWRDb21tZW50U3RhcnQoXG4gICAgICBjb21tZW50LFxuICAgICAgc291cmNlQ29kZSxcbiAgICAgIG5leHRTdGFydCxcbiAgICApO1xuICAgIGlmIChjb21tZW50U3RhcnQgPT09IHZvaWQgMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmVtb3ZhbFN0YXJ0ID0gY29tbWVudFN0YXJ0O1xuICAgIG5leHRTdGFydCA9IGNvbW1lbnRTdGFydDtcbiAgfVxuXG4gIHJldHVybiByZW1vdmFsU3RhcnQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbmV4dCBhdHRhY2hlZCBjb21tZW50IHN0YXJ0IHdoZW4gYSBjb21tZW50IHJlbWFpbnMgbGlua2VkIHRvIHRoZSBkZWNsYXJhdGlvbi5cbiAqIEBwYXJhbSBjb21tZW50IENhbmRpZGF0ZSBsZWFkaW5nIGNvbW1lbnQuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgY29kZSB3cmFwcGVyIHVzZWQgdG8gaW5zcGVjdCBpbnRlcnN0aXRpYWwgdGV4dC5cbiAqIEBwYXJhbSBuZXh0U3RhcnQgQ3VycmVudCBib3VuZGFyeSB0aGF0IHRoZSBjb21tZW50IG11c3QgYXR0YWNoIHRvLlxuICogQHJldHVybnMgQ29tbWVudCBzdGFydCB3aGVuIGF0dGFjaGVkLCBvdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc3RhcnQgPSBnZXROZXh0QXR0YWNoZWRDb21tZW50U3RhcnQoeyB0eXBlOiBcIkJsb2NrXCIsIHZhbHVlOiBcInhcIiB9IGFzIG5ldmVyLCB2b2lkIDAsIDUpO1xuICogdm9pZCBzdGFydDtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXROZXh0QXR0YWNoZWRDb21tZW50U3RhcnQoXG4gIGNvbW1lbnQ6IEVTVHJlZS5Db21tZW50LFxuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSB8IHVuZGVmaW5lZCxcbiAgbmV4dFN0YXJ0OiBudW1iZXIsXG4pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb21tZW50UmFuZ2UgPSBjb21tZW50LnJhbmdlO1xuXG4gIGlmIChjb21tZW50UmFuZ2UgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBbY29tbWVudFN0YXJ0LCBjb21tZW50RW5kXSA9IGNvbW1lbnRSYW5nZTtcbiAgY29uc3QgZ2FwVGV4dCA9IHNvdXJjZUNvZGU/LnRleHQuc2xpY2UoY29tbWVudEVuZCwgbmV4dFN0YXJ0KSA/PyBcIlwiO1xuXG4gIHJldHVybiBpc0F0dGFjaGVkTGVhZGluZ0dhcChnYXBUZXh0KSA/IGNvbW1lbnRTdGFydCA6IHZvaWQgMDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkZWNsYXJhdGlvbiByZW1vdmFsIHJhbmdlLCBpbmNsdWRpbmcgZGlyZWN0bHkgYXR0YWNoZWQgY29tbWVudHMuXG4gKiBAcGFyYW0gc3RhdGVtZW50IFZhcmlhYmxlIGRlY2xhcmF0aW9uIHN0YXRlbWVudC5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBjb2RlIHdyYXBwZXIgd2hlbiBhdmFpbGFibGUuXG4gKiBAcmV0dXJucyBTdGF0ZW1lbnQgcmFuZ2UgZXhwYW5kZWQgdG8gYXR0YWNoZWQgbGVhZGluZyBjb21tZW50cy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByYW5nZSA9IGdldFJlbW92YWxSYW5nZSh7IHJhbmdlOiBbNSwgMTBdLCB0eXBlOiBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIiB9IGFzIG5ldmVyKTtcbiAqIHZvaWQgcmFuZ2U7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0UmVtb3ZhbFJhbmdlKFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5WYXJpYWJsZURlY2xhcmF0aW9uICYge1xuICAgIC8qKiBTb3VyY2UgcmFuZ2UgZm9yIHRoZSBmdWxsIGRlY2xhcmF0aW9uIHN0YXRlbWVudC4gKi9cbiAgICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgfSxcbiAgc291cmNlQ29kZT86IFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdLFxuKTogW251bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IFtzdGF0ZW1lbnRTdGFydCwgc3RhdGVtZW50RW5kXSA9IHN0YXRlbWVudC5yYW5nZTtcbiAgY29uc3QgY29tbWVudHNCZWZvcmUgPSBzb3VyY2VDb2RlPy5nZXRDb21tZW50c0JlZm9yZShzdGF0ZW1lbnQpID8/IFtdO1xuICBjb25zdCByZW1vdmFsU3RhcnQgPSBnZXRBdHRhY2hlZENvbW1lbnRTdGFydChcbiAgICBjb21tZW50c0JlZm9yZSxcbiAgICBzb3VyY2VDb2RlLFxuICAgIHN0YXRlbWVudFN0YXJ0LFxuICApO1xuXG4gIHJldHVybiBbcmVtb3ZhbFN0YXJ0LCBzdGF0ZW1lbnRFbmRdO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSB3aGVuIHdoaXRlc3BhY2UgYmV0d2VlbiBhIGNvbW1lbnQgYW5kIGRlY2xhcmF0aW9uIGtlZXBzIHRoZW0gYXR0YWNoZWQuXG4gKiBAcGFyYW0gZ2FwVGV4dCBTb3VyY2UgdGV4dCBiZXR3ZWVuIGFkamFjZW50IG5vZGVzLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBnYXAgY29udGFpbnMgbm8gYmxhbmsgbGluZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvayA9IGlzQXR0YWNoZWRMZWFkaW5nR2FwKFwiXFxuXCIpO1xuICogdm9pZCBvaztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc0F0dGFjaGVkTGVhZGluZ0dhcChnYXBUZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAvXltcXHQgXFxyXFxuXSokL3UudGVzdChnYXBUZXh0KSAmJiAhLyg/Olxccj9cXG4pW1xcdCBdKig/Olxccj9cXG4pL3UudGVzdChnYXBUZXh0KVxuICApO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIG9uZSB0b3AtbGV2ZWwgc3RhdGVtZW50IGludG8gYSBkZWNsYXJhdGlvbiB3aGVuIHN1cHBvcnRlZC5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgQ2FuZGlkYXRlIHN0YXRlbWVudC5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBjb2RlIHdyYXBwZXIgdXNlZCB0byBpbnNwZWN0IGF0dGFjaGVkIGNvbW1lbnRzLlxuICogQHJldHVybnMgRGVjbGFyYXRpb24gd2hlbiBzdGF0ZW1lbnQgbWF0Y2hlcyB0aGUgcnVsZSBzaGFwZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBkZWNsYXJhdGlvbiA9IHRvRGVjbGFyYXRpb24oeyB0eXBlOiBcIkVtcHR5U3RhdGVtZW50XCIgfSBhcyBuZXZlcik7XG4gKiB2b2lkIGRlY2xhcmF0aW9uO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHRvRGVjbGFyYXRpb24oXG4gIHN0YXRlbWVudDogRVNUcmVlLlByb2dyYW1bXCJib2R5XCJdW251bWJlcl0sXG4gIHNvdXJjZUNvZGU/OiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSxcbik6IERlY2xhcmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIiB8fCBzdGF0ZW1lbnQua2luZCAhPT0gXCJjb25zdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBpZiAoIWhhc1JhbmdlKHN0YXRlbWVudCkgfHwgc3RhdGVtZW50LmRlY2xhcmF0aW9ucy5sZW5ndGggIT09IDEpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgW2RlY2xhcmF0b3JdID0gc3RhdGVtZW50LmRlY2xhcmF0aW9ucztcbiAgaWYgKFxuICAgIGRlY2xhcmF0b3IgPT09IHZvaWQgMCB8fFxuICAgIGRlY2xhcmF0b3IuaWQudHlwZSAhPT0gXCJJZGVudGlmaWVyXCIgfHxcbiAgICAhaGFzUmFuZ2UoZGVjbGFyYXRvci5pZCkgfHxcbiAgICBkZWNsYXJhdG9yLmluaXQgPT09IG51bGwgfHxcbiAgICBkZWNsYXJhdG9yLmluaXQgPT09IHZvaWQgMCB8fFxuICAgICFoYXNSYW5nZShkZWNsYXJhdG9yLmluaXQpIHx8XG4gICAgIWlzVmlGdW5jdGlvbkNhbGwoZGVjbGFyYXRvci5pbml0KVxuICApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWNsYXJhdGlvbklkUmFuZ2U6IGRlY2xhcmF0b3IuaWQucmFuZ2UsXG4gICAgaW5pdGlhbGl6ZXJSYW5nZTogZGVjbGFyYXRvci5pbml0LnJhbmdlLFxuICAgIGxvY2FsTmFtZTogZGVjbGFyYXRvci5pZC5uYW1lLFxuICAgIHN0YXRlbWVudFJhbmdlOiBnZXRSZW1vdmFsUmFuZ2Uoc3RhdGVtZW50LCBzb3VyY2VDb2RlKSxcbiAgfTtcbn1cblxuZXhwb3J0IHsgY29sbGVjdERlY2xhcmF0aW9ucyB9O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/match-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAQtC,qCAAqC;AACrC,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9B,qCAAqC;AACrC,KAAK,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG;IAC7B,uCAAuC;IACvC,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;;;GASG;AACH,iBAAS,sBAAsB,CAC7B,iBAAiB,EAAE,MAAM,CAAC,UAAU,GACnC,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAmBrC;AAED;;;;;;;;;GASG;AACH,iBAAS,kBAAkB,CACzB,cAAc,EAAE,MAAM,CAAC,UAAU,GAChC,MAAM,GAAG,SAAS,CAYpB;AAED;;;;;;;;;GASG;AACH,iBAAS,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAErD;AAED;;;;;;;;;GASG;AACH,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,SAAS,CAQtD;AAED;;;;;;;;;GASG;AACH,iBAAS,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,CAevE;AAED,YAAY,EAAE,KAAK,EAAE,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,gBAAgB,GACjB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the object literal returned from a mock factory.
|
|
3
|
+
* @param factoryExpression Factory expression from `vi.mock` or `vi.doMock`.
|
|
4
|
+
* @returns Returned object expression when present.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const result = getFactoryReturnObject({ type: "Identifier" } as never);
|
|
8
|
+
* void result;
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
function getFactoryReturnObject(factoryExpression) {
|
|
12
|
+
if (factoryExpression.type !== "ArrowFunctionExpression") {
|
|
13
|
+
return void 0;
|
|
14
|
+
}
|
|
15
|
+
const { body } = factoryExpression;
|
|
16
|
+
if (body.type === "ObjectExpression") {
|
|
17
|
+
return body;
|
|
18
|
+
}
|
|
19
|
+
if (body.type !== "BlockStatement") {
|
|
20
|
+
return void 0;
|
|
21
|
+
}
|
|
22
|
+
const returnStatement = body.body.find((statement) => statement.type === "ReturnStatement");
|
|
23
|
+
const returnArgument = returnStatement?.argument;
|
|
24
|
+
return returnArgument?.type === "ObjectExpression" ? returnArgument : void 0;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extracts a module specifier string from a mock call argument.
|
|
28
|
+
* @param moduleArgument First argument of `vi.mock` or `vi.doMock`.
|
|
29
|
+
* @returns String module specifier when available.
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const specifier = getModuleSpecifier({ type: "Literal", value: "./x" } as never);
|
|
33
|
+
* void specifier;
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
function getModuleSpecifier(moduleArgument) {
|
|
37
|
+
if (moduleArgument.type === "ImportExpression") {
|
|
38
|
+
const { source } = moduleArgument;
|
|
39
|
+
return source.type === "Literal" && typeof source.value === "string"
|
|
40
|
+
? source.value
|
|
41
|
+
: void 0;
|
|
42
|
+
}
|
|
43
|
+
return moduleArgument.type === "Literal" &&
|
|
44
|
+
typeof moduleArgument.value === "string"
|
|
45
|
+
? moduleArgument.value
|
|
46
|
+
: void 0;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Determines the newline sequence used in source text.
|
|
50
|
+
* @param sourceText Full source text.
|
|
51
|
+
* @returns Detected newline sequence.
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const newline = getNewline("a\r\nb");
|
|
55
|
+
* void newline;
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
function getNewline(sourceText) {
|
|
59
|
+
return sourceText.includes("\r\n") ? "\r\n" : "\n";
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Checks whether a node includes a numeric `range` tuple.
|
|
63
|
+
* @param node Node to inspect.
|
|
64
|
+
* @returns True when the node has a valid `range`.
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const ok = hasRange({ range: [0, 1] } as never);
|
|
68
|
+
* void ok;
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
function hasRange(node) {
|
|
72
|
+
const rangeValue = node.range;
|
|
73
|
+
return (Array.isArray(rangeValue) &&
|
|
74
|
+
rangeValue.length === 2 &&
|
|
75
|
+
typeof rangeValue[0] === "number" &&
|
|
76
|
+
typeof rangeValue[1] === "number");
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Returns true when an expression is a `vi.fn(...)` call.
|
|
80
|
+
* @param expression Expression to inspect.
|
|
81
|
+
* @returns True when the expression is a `vi.fn` call.
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const ok = isViFunctionCall(null);
|
|
85
|
+
* void ok;
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
function isViFunctionCall(expression) {
|
|
89
|
+
if (expression?.type !== "CallExpression") {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (expression.callee.type !== "MemberExpression") {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
const { object, property } = expression.callee;
|
|
96
|
+
return (object.type === "Identifier" &&
|
|
97
|
+
object.name === "vi" &&
|
|
98
|
+
property.type === "Identifier" &&
|
|
99
|
+
property.name === "fn");
|
|
100
|
+
}
|
|
101
|
+
export { getFactoryReturnObject, getModuleSpecifier, getNewline, hasRange, isViFunctionCall, };
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9wcmVmZXItdmktbW9ja2VkLWltcG9ydC9tYXRjaC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQTs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLHNCQUFzQixDQUM3QixpQkFBb0M7SUFFcEMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEtBQUsseUJBQXlCLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7SUFDbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3BDLENBQUMsU0FBUyxFQUF1QyxFQUFFLENBQ2pELFNBQVMsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQ3ZDLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxlQUFlLEVBQUUsUUFBUSxDQUFDO0lBQ2pELE9BQU8sY0FBYyxFQUFFLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FDekIsY0FBaUM7SUFFakMsSUFBSSxjQUFjLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLGNBQWMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRO1lBQ2xFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUNkLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLEtBQUssU0FBUztRQUN0QyxPQUFPLGNBQWMsQ0FBQyxLQUFLLEtBQUssUUFBUTtRQUN4QyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUs7UUFDdEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsVUFBVSxDQUFDLFVBQWtCO0lBQ3BDLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDckQsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsUUFBUSxDQUFDLElBQWlCO0lBQ2pDLE1BQU0sVUFBVSxHQUFJLElBQXNDLENBQUMsS0FBSyxDQUFDO0lBQ2pFLE9BQU8sQ0FDTCxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN6QixVQUFVLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDdkIsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtRQUNqQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQ2xDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxVQUFvQztJQUM1RCxJQUFJLFVBQVUsRUFBRSxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7UUFDbEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQy9DLE9BQU8sQ0FDTCxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDNUIsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJO1FBQ3BCLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUM5QixRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FDdkIsQ0FBQztBQUNKLENBQUM7QUFHRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsUUFBUSxFQUNSLGdCQUFnQixHQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgT3B0aW9uYWxSYW5nZUZpZWxkIHtcbiAgLyoqIFBvdGVudGlhbCByYW5nZSBwYXlsb2FkIGZyb20gdW5rbm93biBub2RlLWxpa2UgdmFsdWVzLiAqL1xuICByYW5nZT86IHVua25vd247XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbnR5cGUgUmFuZ2UgPSBbbnVtYmVyLCBudW1iZXJdO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG50eXBlIFJhbmdlTm9kZSA9IEVTVHJlZS5Ob2RlICYge1xuICAvKiogU291cmNlIHJhbmdlIHR1cGxlIGZvciB0aGUgbm9kZS4gKi9cbiAgcmFuZ2U6IFJhbmdlO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgb2JqZWN0IGxpdGVyYWwgcmV0dXJuZWQgZnJvbSBhIG1vY2sgZmFjdG9yeS5cbiAqIEBwYXJhbSBmYWN0b3J5RXhwcmVzc2lvbiBGYWN0b3J5IGV4cHJlc3Npb24gZnJvbSBgdmkubW9ja2Agb3IgYHZpLmRvTW9ja2AuXG4gKiBAcmV0dXJucyBSZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbiB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVzdWx0ID0gZ2V0RmFjdG9yeVJldHVybk9iamVjdCh7IHR5cGU6IFwiSWRlbnRpZmllclwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCByZXN1bHQ7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0RmFjdG9yeVJldHVybk9iamVjdChcbiAgZmFjdG9yeUV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uLFxuKTogRVNUcmVlLk9iamVjdEV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuICBpZiAoZmFjdG9yeUV4cHJlc3Npb24udHlwZSAhPT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHsgYm9keSB9ID0gZmFjdG9yeUV4cHJlc3Npb247XG4gIGlmIChib2R5LnR5cGUgPT09IFwiT2JqZWN0RXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgaWYgKGJvZHkudHlwZSAhPT0gXCJCbG9ja1N0YXRlbWVudFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IGJvZHkuYm9keS5maW5kKFxuICAgIChzdGF0ZW1lbnQpOiBzdGF0ZW1lbnQgaXMgRVNUcmVlLlJldHVyblN0YXRlbWVudCA9PlxuICAgICAgc3RhdGVtZW50LnR5cGUgPT09IFwiUmV0dXJuU3RhdGVtZW50XCIsXG4gICk7XG4gIGNvbnN0IHJldHVybkFyZ3VtZW50ID0gcmV0dXJuU3RhdGVtZW50Py5hcmd1bWVudDtcbiAgcmV0dXJuIHJldHVybkFyZ3VtZW50Py50eXBlID09PSBcIk9iamVjdEV4cHJlc3Npb25cIiA/IHJldHVybkFyZ3VtZW50IDogdm9pZCAwO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIGEgbW9kdWxlIHNwZWNpZmllciBzdHJpbmcgZnJvbSBhIG1vY2sgY2FsbCBhcmd1bWVudC5cbiAqIEBwYXJhbSBtb2R1bGVBcmd1bWVudCBGaXJzdCBhcmd1bWVudCBvZiBgdmkubW9ja2Agb3IgYHZpLmRvTW9ja2AuXG4gKiBAcmV0dXJucyBTdHJpbmcgbW9kdWxlIHNwZWNpZmllciB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzcGVjaWZpZXIgPSBnZXRNb2R1bGVTcGVjaWZpZXIoeyB0eXBlOiBcIkxpdGVyYWxcIiwgdmFsdWU6IFwiLi94XCIgfSBhcyBuZXZlcik7XG4gKiB2b2lkIHNwZWNpZmllcjtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVTcGVjaWZpZXIoXG4gIG1vZHVsZUFyZ3VtZW50OiBFU1RyZWUuRXhwcmVzc2lvbixcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChtb2R1bGVBcmd1bWVudC50eXBlID09PSBcIkltcG9ydEV4cHJlc3Npb25cIikge1xuICAgIGNvbnN0IHsgc291cmNlIH0gPSBtb2R1bGVBcmd1bWVudDtcbiAgICByZXR1cm4gc291cmNlLnR5cGUgPT09IFwiTGl0ZXJhbFwiICYmIHR5cGVvZiBzb3VyY2UudmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgID8gc291cmNlLnZhbHVlXG4gICAgICA6IHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBtb2R1bGVBcmd1bWVudC50eXBlID09PSBcIkxpdGVyYWxcIiAmJlxuICAgIHR5cGVvZiBtb2R1bGVBcmd1bWVudC52YWx1ZSA9PT0gXCJzdHJpbmdcIlxuICAgID8gbW9kdWxlQXJndW1lbnQudmFsdWVcbiAgICA6IHZvaWQgMDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBuZXdsaW5lIHNlcXVlbmNlIHVzZWQgaW4gc291cmNlIHRleHQuXG4gKiBAcGFyYW0gc291cmNlVGV4dCBGdWxsIHNvdXJjZSB0ZXh0LlxuICogQHJldHVybnMgRGV0ZWN0ZWQgbmV3bGluZSBzZXF1ZW5jZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuZXdsaW5lID0gZ2V0TmV3bGluZShcImFcXHJcXG5iXCIpO1xuICogdm9pZCBuZXdsaW5lO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldE5ld2xpbmUoc291cmNlVGV4dDogc3RyaW5nKTogXCJcXG5cIiB8IFwiXFxyXFxuXCIge1xuICByZXR1cm4gc291cmNlVGV4dC5pbmNsdWRlcyhcIlxcclxcblwiKSA/IFwiXFxyXFxuXCIgOiBcIlxcblwiO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgbm9kZSBpbmNsdWRlcyBhIG51bWVyaWMgYHJhbmdlYCB0dXBsZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgbm9kZSBoYXMgYSB2YWxpZCBgcmFuZ2VgLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaGFzUmFuZ2UoeyByYW5nZTogWzAsIDFdIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBvaztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBoYXNSYW5nZShub2RlOiBFU1RyZWUuTm9kZSk6IG5vZGUgaXMgUmFuZ2VOb2RlIHtcbiAgY29uc3QgcmFuZ2VWYWx1ZSA9IChub2RlIGFzIHVua25vd24gYXMgT3B0aW9uYWxSYW5nZUZpZWxkKS5yYW5nZTtcbiAgcmV0dXJuIChcbiAgICBBcnJheS5pc0FycmF5KHJhbmdlVmFsdWUpICYmXG4gICAgcmFuZ2VWYWx1ZS5sZW5ndGggPT09IDIgJiZcbiAgICB0eXBlb2YgcmFuZ2VWYWx1ZVswXSA9PT0gXCJudW1iZXJcIiAmJlxuICAgIHR5cGVvZiByYW5nZVZhbHVlWzFdID09PSBcIm51bWJlclwiXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIHdoZW4gYW4gZXhwcmVzc2lvbiBpcyBhIGB2aS5mbiguLi4pYCBjYWxsLlxuICogQHBhcmFtIGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBleHByZXNzaW9uIGlzIGEgYHZpLmZuYCBjYWxsLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNWaUZ1bmN0aW9uQ2FsbChudWxsKTtcbiAqIHZvaWQgb2s7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNWaUZ1bmN0aW9uQ2FsbChleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IG51bGwpOiBib29sZWFuIHtcbiAgaWYgKGV4cHJlc3Npb24/LnR5cGUgIT09IFwiQ2FsbEV4cHJlc3Npb25cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZXhwcmVzc2lvbi5jYWxsZWUudHlwZSAhPT0gXCJNZW1iZXJFeHByZXNzaW9uXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB7IG9iamVjdCwgcHJvcGVydHkgfSA9IGV4cHJlc3Npb24uY2FsbGVlO1xuICByZXR1cm4gKFxuICAgIG9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIG9iamVjdC5uYW1lID09PSBcInZpXCIgJiZcbiAgICBwcm9wZXJ0eS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIHByb3BlcnR5Lm5hbWUgPT09IFwiZm5cIlxuICApO1xufVxuXG5leHBvcnQgdHlwZSB7IFJhbmdlIH07XG5leHBvcnQge1xuICBnZXRGYWN0b3J5UmV0dXJuT2JqZWN0LFxuICBnZXRNb2R1bGVTcGVjaWZpZXIsXG4gIGdldE5ld2xpbmUsXG4gIGhhc1JhbmdlLFxuICBpc1ZpRnVuY3Rpb25DYWxsLFxufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-imports.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/match-imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAwK1C;;;;;;;;;;;GAWG;AACH,iBAAS,iBAAiB,CACxB,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,EAAE,GACd,UAAU,CASZ;AAqBD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|