@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
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
2
|
-
import { analyzeTestBlock, getAssertDeclaredIdentifiers, getAssertionIdentifiers, hasAssertion, usesPrefix, } from "../aaa";
|
|
3
|
-
const assertActualExpectedNamesRule = {
|
|
4
|
-
create(context) {
|
|
5
|
-
return {
|
|
6
|
-
CallExpression(node) {
|
|
7
|
-
const analysis = analyzeTestBlock(context, node);
|
|
8
|
-
if (analysis === void 0) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
const declaredIdentifiers = getAssertDeclaredIdentifiers(analysis);
|
|
12
|
-
const reportedNames = new Set();
|
|
13
|
-
for (const statement of analysis.statements) {
|
|
14
|
-
if (statement.phase !== "Assert" || !hasAssertion(statement.node)) {
|
|
15
|
-
continue;
|
|
16
|
-
}
|
|
17
|
-
const { actual, expected } = getAssertionIdentifiers(statement.node);
|
|
18
|
-
if (actual !== void 0 &&
|
|
19
|
-
declaredIdentifiers.has(actual) &&
|
|
20
|
-
!usesPrefix(actual, "actual") &&
|
|
21
|
-
!reportedNames.has(`actual:${actual}`)) {
|
|
22
|
-
reportedNames.add(`actual:${actual}`);
|
|
23
|
-
context.report({
|
|
24
|
-
data: { name: actual, prefix: "actual" },
|
|
25
|
-
messageId: "missingPrefix",
|
|
26
|
-
node: declaredIdentifiers.get(actual),
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
if (expected !== void 0 &&
|
|
30
|
-
declaredIdentifiers.has(expected) &&
|
|
31
|
-
!usesPrefix(expected, "expected") &&
|
|
32
|
-
!reportedNames.has(`expected:${expected}`)) {
|
|
33
|
-
reportedNames.add(`expected:${expected}`);
|
|
34
|
-
context.report({
|
|
35
|
-
data: { name: expected, prefix: "expected" },
|
|
36
|
-
messageId: "missingPrefix",
|
|
37
|
-
node: declaredIdentifiers.get(expected),
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
},
|
|
44
|
-
meta: {
|
|
45
|
-
docs: createRuleDocumentation("assert-actual-expected-names", "Require Assert-phase comparison variables to use actual*/expected* prefixes."),
|
|
46
|
-
messages: {
|
|
47
|
-
missingPrefix: "Rename '{{name}}' to use the '{{prefix}}' prefix when comparing values inside // Assert.",
|
|
48
|
-
},
|
|
49
|
-
schema: [],
|
|
50
|
-
type: "suggestion",
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
export { assertActualExpectedNamesRule };
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL2Fzc2VydC1hY3R1YWwtZXhwZWN0ZWQtbmFtZXMvcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLFVBQVUsR0FDWCxNQUFNLFFBQVEsQ0FBQztBQUVoQixNQUFNLDZCQUE2QixHQUFvQjtJQUNyRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTztZQUNMLGNBQWMsQ0FBQyxJQUFJO2dCQUNqQixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLG1CQUFtQixHQUFHLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO2dCQUV4QyxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDbEUsU0FBUztvQkFDWCxDQUFDO29CQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsdUJBQXVCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVyRSxJQUNFLE1BQU0sS0FBSyxLQUFLLENBQUM7d0JBQ2pCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7d0JBQy9CLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7d0JBQzdCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLE1BQU0sRUFBRSxDQUFDLEVBQ3RDLENBQUM7d0JBQ0QsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLE1BQU0sRUFBRSxDQUFDLENBQUM7d0JBQ3RDLE9BQU8sQ0FBQyxNQUFNLENBQUM7NEJBQ2IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFOzRCQUN4QyxTQUFTLEVBQUUsZUFBZTs0QkFDMUIsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUU7eUJBQ3ZDLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUVELElBQ0UsUUFBUSxLQUFLLEtBQUssQ0FBQzt3QkFDbkIsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQzt3QkFDakMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQzt3QkFDakMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksUUFBUSxFQUFFLENBQUMsRUFDMUMsQ0FBQzt3QkFDRCxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksUUFBUSxFQUFFLENBQUMsQ0FBQzt3QkFDMUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzs0QkFDYixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUU7NEJBQzVDLFNBQVMsRUFBRSxlQUFlOzRCQUMxQixJQUFJLEVBQUUsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRTt5QkFDekMsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDMEIsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLHVCQUF1QixDQUMzQiw4QkFBOEIsRUFDOUIsOEVBQThFLENBQy9FO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsYUFBYSxFQUNYLDBGQUEwRjtTQUM3RjtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uIH0gZnJvbSBcIi4uLy4uL2N1c3RvbS1ydWxlLWRvY3VtZW50YXRpb25cIjtcbmltcG9ydCB7XG4gIGFuYWx5emVUZXN0QmxvY2ssXG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBoYXNBc3NlcnRpb24sXG4gIHVzZXNQcmVmaXgsXG59IGZyb20gXCIuLi9hYWFcIjtcblxuY29uc3QgYXNzZXJ0QWN0dWFsRXhwZWN0ZWROYW1lc1J1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIENhbGxFeHByZXNzaW9uKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYW5hbHlzaXMgPSBhbmFseXplVGVzdEJsb2NrKGNvbnRleHQsIG5vZGUpO1xuICAgICAgICBpZiAoYW5hbHlzaXMgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY2xhcmVkSWRlbnRpZmllcnMgPSBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzKGFuYWx5c2lzKTtcbiAgICAgICAgY29uc3QgcmVwb3J0ZWROYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGFuYWx5c2lzLnN0YXRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoc3RhdGVtZW50LnBoYXNlICE9PSBcIkFzc2VydFwiIHx8ICFoYXNBc3NlcnRpb24oc3RhdGVtZW50Lm5vZGUpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGFjdHVhbCwgZXhwZWN0ZWQgfSA9IGdldEFzc2VydGlvbklkZW50aWZpZXJzKHN0YXRlbWVudC5ub2RlKTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGFjdHVhbCAhPT0gdm9pZCAwICYmXG4gICAgICAgICAgICBkZWNsYXJlZElkZW50aWZpZXJzLmhhcyhhY3R1YWwpICYmXG4gICAgICAgICAgICAhdXNlc1ByZWZpeChhY3R1YWwsIFwiYWN0dWFsXCIpICYmXG4gICAgICAgICAgICAhcmVwb3J0ZWROYW1lcy5oYXMoYGFjdHVhbDoke2FjdHVhbH1gKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmVwb3J0ZWROYW1lcy5hZGQoYGFjdHVhbDoke2FjdHVhbH1gKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YTogeyBuYW1lOiBhY3R1YWwsIHByZWZpeDogXCJhY3R1YWxcIiB9LFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IFwibWlzc2luZ1ByZWZpeFwiLFxuICAgICAgICAgICAgICBub2RlOiBkZWNsYXJlZElkZW50aWZpZXJzLmdldChhY3R1YWwpISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGV4cGVjdGVkICE9PSB2b2lkIDAgJiZcbiAgICAgICAgICAgIGRlY2xhcmVkSWRlbnRpZmllcnMuaGFzKGV4cGVjdGVkKSAmJlxuICAgICAgICAgICAgIXVzZXNQcmVmaXgoZXhwZWN0ZWQsIFwiZXhwZWN0ZWRcIikgJiZcbiAgICAgICAgICAgICFyZXBvcnRlZE5hbWVzLmhhcyhgZXhwZWN0ZWQ6JHtleHBlY3RlZH1gKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmVwb3J0ZWROYW1lcy5hZGQoYGV4cGVjdGVkOiR7ZXhwZWN0ZWR9YCk7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIGRhdGE6IHsgbmFtZTogZXhwZWN0ZWQsIHByZWZpeDogXCJleHBlY3RlZFwiIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJtaXNzaW5nUHJlZml4XCIsXG4gICAgICAgICAgICAgIG5vZGU6IGRlY2xhcmVkSWRlbnRpZmllcnMuZ2V0KGV4cGVjdGVkKSEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgUnVsZS5SdWxlTGlzdGVuZXI7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbihcbiAgICAgIFwiYXNzZXJ0LWFjdHVhbC1leHBlY3RlZC1uYW1lc1wiLFxuICAgICAgXCJSZXF1aXJlIEFzc2VydC1waGFzZSBjb21wYXJpc29uIHZhcmlhYmxlcyB0byB1c2UgYWN0dWFsKi9leHBlY3RlZCogcHJlZml4ZXMuXCIsXG4gICAgKSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgbWlzc2luZ1ByZWZpeDpcbiAgICAgICAgXCJSZW5hbWUgJ3t7bmFtZX19JyB0byB1c2UgdGhlICd7e3ByZWZpeH19JyBwcmVmaXggd2hlbiBjb21wYXJpbmcgdmFsdWVzIGluc2lkZSAvLyBBc3NlcnQuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwic3VnZ2VzdGlvblwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgYXNzZXJ0QWN0dWFsRXhwZWN0ZWROYW1lc1J1bGUgfTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/enforce-aaa-phase-purity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { enforceAaaPhasePurityRule } from "./rule";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9lbmZvcmNlLWFhYS1waGFzZS1wdXJpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/testing/enforce-aaa-phase-purity/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAcnC,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UA6HrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
2
|
-
import { analyzeTestBlock, hasAssertion, hasAsyncLogic, hasAwait, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, } from "../aaa";
|
|
3
|
-
const enforceAaaPhasePurityRule = {
|
|
4
|
-
create(context) {
|
|
5
|
-
return {
|
|
6
|
-
CallExpression(node) {
|
|
7
|
-
const analysis = analyzeTestBlock(context, node);
|
|
8
|
-
if (analysis === void 0) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
const hasAllSections = ["Arrange", "Act", "Assert"].every((phase) => analysis.sectionComments.some((sectionComment) => sectionComment.phases.includes(phase)));
|
|
12
|
-
if (!hasAllSections) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
let hasMeaningfulAct = false;
|
|
16
|
-
for (const statement of analysis.statements) {
|
|
17
|
-
if (statement.phase === "Arrange") {
|
|
18
|
-
if (hasAssertion(statement.node)) {
|
|
19
|
-
context.report({
|
|
20
|
-
messageId: "assertionOutsideAssert",
|
|
21
|
-
node: statement.node,
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
if (hasAwait(statement.node)) {
|
|
25
|
-
context.report({
|
|
26
|
-
messageId: "awaitOutsideAct",
|
|
27
|
-
node: statement.node,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
if (hasAsyncLogic(statement.node)) {
|
|
31
|
-
context.report({
|
|
32
|
-
messageId: "asyncInArrange",
|
|
33
|
-
node: statement.node,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
if (isMeaningfulActStatement(statement.node)) {
|
|
37
|
-
context.report({
|
|
38
|
-
messageId: "actionInArrange",
|
|
39
|
-
node: statement.node,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
if (statement.phase === "Act") {
|
|
45
|
-
hasMeaningfulAct ||= isMeaningfulActStatement(statement.node);
|
|
46
|
-
if (hasAssertion(statement.node)) {
|
|
47
|
-
context.report({
|
|
48
|
-
messageId: "assertionOutsideAssert",
|
|
49
|
-
node: statement.node,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
if (isSetupLikeStatement(statement.node)) {
|
|
53
|
-
context.report({
|
|
54
|
-
messageId: "setupAfterAct",
|
|
55
|
-
node: statement.node,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
/* v8 ignore start -- concrete Assert-phase behaviors are covered by rule tests; this guard's remaining branch artifact comes from source-mapped phase discrimination. */
|
|
61
|
-
if (statement.phase === "Assert") {
|
|
62
|
-
if (hasAwait(statement.node)) {
|
|
63
|
-
context.report({
|
|
64
|
-
messageId: "awaitOutsideAct",
|
|
65
|
-
node: statement.node,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
if (hasMutation(statement.node)) {
|
|
69
|
-
context.report({
|
|
70
|
-
messageId: "mutationAfterAct",
|
|
71
|
-
node: statement.node,
|
|
72
|
-
});
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (!isValidAssertStatement(statement.node)) {
|
|
76
|
-
context.report({
|
|
77
|
-
messageId: "nonAssertionInAssert",
|
|
78
|
-
node: statement.node,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/* v8 ignore stop */
|
|
83
|
-
}
|
|
84
|
-
if (!hasMeaningfulAct) {
|
|
85
|
-
context.report({
|
|
86
|
-
messageId: "missingMeaningfulAct",
|
|
87
|
-
node: analysis.callExpression,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
},
|
|
93
|
-
meta: {
|
|
94
|
-
docs: createRuleDocumentation("enforce-aaa-phase-purity", "Keep setup, action, and assertions inside their intended AAA phases."),
|
|
95
|
-
messages: {
|
|
96
|
-
actionInArrange: "Keep the function under test out of Arrange; reserve Arrange for setup only.",
|
|
97
|
-
assertionOutsideAssert: "Move assertions into the // Assert section so test logic does not leak earlier.",
|
|
98
|
-
asyncInArrange: "Do not trigger async behavior in Arrange.",
|
|
99
|
-
awaitOutsideAct: "Use await only inside the // Act section.",
|
|
100
|
-
missingMeaningfulAct: "The // Act section must contain a meaningful SUT interaction, not only utility or setup calls.",
|
|
101
|
-
mutationAfterAct: "Do not mutate test data after the // Act section has run.",
|
|
102
|
-
nonAssertionInAssert: "Keep the // Assert section focused on assertions and assertion-local values.",
|
|
103
|
-
setupAfterAct: "Do not continue arranging test data after the // Act section has started.",
|
|
104
|
-
},
|
|
105
|
-
schema: [],
|
|
106
|
-
type: "problem",
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
export { enforceAaaPhasePurityRule };
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL2VuZm9yY2UtYWFhLXBoYXNlLXB1cml0eS9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGFBQWEsRUFDYixRQUFRLEVBQ1IsV0FBVyxFQUNYLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsc0JBQXNCLEdBQ3ZCLE1BQU0sUUFBUSxDQUFDO0FBRWhCLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPO1lBQ0wsY0FBYyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsRSxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQy9DLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQWMsQ0FBQyxDQUMvQyxDQUNGLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNwQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBRTdCLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUM1QyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7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Q2pDLElBQUksRUFBRSxRQUFRLENBQUMsY0FBYztxQkFDOUIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSx1QkFBdUIsQ0FDM0IsMEJBQTBCLEVBQzFCLHNFQUFzRSxDQUN2RTtRQUNELFFBQVEsRUFBRTtZQUNSLGVBQWUsRUFDYiw4RUFBOEU7WUFDaEYsc0JBQXNCLEVBQ3BCLGlGQUFpRjtZQUNuRixjQUFjLEVBQUUsMkNBQTJDO1lBQzNELGVBQWUsRUFBRSwyQ0FBMkM7WUFDNUQsb0JBQW9CLEVBQ2xCLGdHQUFnRztZQUNsRyxnQkFBZ0IsRUFDZCwyREFBMkQ7WUFDN0Qsb0JBQW9CLEVBQ2xCLDhFQUE4RTtZQUNoRixhQUFhLEVBQ1gsMkVBQTJFO1NBQzlFO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgY3JlYXRlUnVsZURvY3VtZW50YXRpb24gfSBmcm9tIFwiLi4vLi4vY3VzdG9tLXJ1bGUtZG9jdW1lbnRhdGlvblwiO1xuaW1wb3J0IHtcbiAgYW5hbHl6ZVRlc3RCbG9jayxcbiAgaGFzQXNzZXJ0aW9uLFxuICBoYXNBc3luY0xvZ2ljLFxuICBoYXNBd2FpdCxcbiAgaGFzTXV0YXRpb24sXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCxcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXG4gIGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnQsXG59IGZyb20gXCIuLi9hYWFcIjtcblxuY29uc3QgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVUZXN0QmxvY2soY29udGV4dCwgbm9kZSk7XG4gICAgICAgIGlmIChhbmFseXNpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzQWxsU2VjdGlvbnMgPSBbXCJBcnJhbmdlXCIsIFwiQWN0XCIsIFwiQXNzZXJ0XCJdLmV2ZXJ5KChwaGFzZSkgPT5cbiAgICAgICAgICBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHMuc29tZSgoc2VjdGlvbkNvbW1lbnQpID0+XG4gICAgICAgICAgICBzZWN0aW9uQ29tbWVudC5waGFzZXMuaW5jbHVkZXMocGhhc2UgYXMgbmV2ZXIpLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaGFzQWxsU2VjdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaGFzTWVhbmluZ2Z1bEFjdCA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGFuYWx5c2lzLnN0YXRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoc3RhdGVtZW50LnBoYXNlID09PSBcIkFycmFuZ2VcIikge1xuICAgICAgICAgICAgaWYgKGhhc0Fzc2VydGlvbihzdGF0ZW1lbnQubm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJhc3NlcnRpb25PdXRzaWRlQXNzZXJ0XCIsXG4gICAgICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50Lm5vZGUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc0F3YWl0KHN0YXRlbWVudC5ub2RlKSkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZUlkOiBcImF3YWl0T3V0c2lkZUFjdFwiLFxuICAgICAgICAgICAgICAgIG5vZGU6IHN0YXRlbWVudC5ub2RlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXNBc3luY0xvZ2ljKHN0YXRlbWVudC5ub2RlKSkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZUlkOiBcImFzeW5jSW5BcnJhbmdlXCIsXG4gICAgICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50Lm5vZGUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudChzdGF0ZW1lbnQubm9kZSkpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJhY3Rpb25JbkFycmFuZ2VcIixcbiAgICAgICAgICAgICAgICBub2RlOiBzdGF0ZW1lbnQubm9kZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50LnBoYXNlID09PSBcIkFjdFwiKSB7XG4gICAgICAgICAgICBoYXNNZWFuaW5nZnVsQWN0IHx8PSBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQoc3RhdGVtZW50Lm5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoaGFzQXNzZXJ0aW9uKHN0YXRlbWVudC5ub2RlKSkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZUlkOiBcImFzc2VydGlvbk91dHNpZGVBc3NlcnRcIixcbiAgICAgICAgICAgICAgICBub2RlOiBzdGF0ZW1lbnQubm9kZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTZXR1cExpa2VTdGF0ZW1lbnQoc3RhdGVtZW50Lm5vZGUpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlSWQ6IFwic2V0dXBBZnRlckFjdFwiLFxuICAgICAgICAgICAgICAgIG5vZGU6IHN0YXRlbWVudC5ub2RlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBjb25jcmV0ZSBBc3NlcnQtcGhhc2UgYmVoYXZpb3JzIGFyZSBjb3ZlcmVkIGJ5IHJ1bGUgdGVzdHM7IHRoaXMgZ3VhcmQncyByZW1haW5pbmcgYnJhbmNoIGFydGlmYWN0IGNvbWVzIGZyb20gc291cmNlLW1hcHBlZCBwaGFzZSBkaXNjcmltaW5hdGlvbi4gKi9cbiAgICAgICAgICBpZiAoc3RhdGVtZW50LnBoYXNlID09PSBcIkFzc2VydFwiKSB7XG4gICAgICAgICAgICBpZiAoaGFzQXdhaXQoc3RhdGVtZW50Lm5vZGUpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlSWQ6IFwiYXdhaXRPdXRzaWRlQWN0XCIsXG4gICAgICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50Lm5vZGUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc011dGF0aW9uKHN0YXRlbWVudC5ub2RlKSkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZUlkOiBcIm11dGF0aW9uQWZ0ZXJBY3RcIixcbiAgICAgICAgICAgICAgICBub2RlOiBzdGF0ZW1lbnQubm9kZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50KHN0YXRlbWVudC5ub2RlKSkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZUlkOiBcIm5vbkFzc2VydGlvbkluQXNzZXJ0XCIsXG4gICAgICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50Lm5vZGUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYXNNZWFuaW5nZnVsQWN0KSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdNZWFuaW5nZnVsQWN0XCIsXG4gICAgICAgICAgICBub2RlOiBhbmFseXNpcy5jYWxsRXhwcmVzc2lvbixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBSdWxlLlJ1bGVMaXN0ZW5lcjtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uKFxuICAgICAgXCJlbmZvcmNlLWFhYS1waGFzZS1wdXJpdHlcIixcbiAgICAgIFwiS2VlcCBzZXR1cCwgYWN0aW9uLCBhbmQgYXNzZXJ0aW9ucyBpbnNpZGUgdGhlaXIgaW50ZW5kZWQgQUFBIHBoYXNlcy5cIixcbiAgICApLFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBhY3Rpb25JbkFycmFuZ2U6XG4gICAgICAgIFwiS2VlcCB0aGUgZnVuY3Rpb24gdW5kZXIgdGVzdCBvdXQgb2YgQXJyYW5nZTsgcmVzZXJ2ZSBBcnJhbmdlIGZvciBzZXR1cCBvbmx5LlwiLFxuICAgICAgYXNzZXJ0aW9uT3V0c2lkZUFzc2VydDpcbiAgICAgICAgXCJNb3ZlIGFzc2VydGlvbnMgaW50byB0aGUgLy8gQXNzZXJ0IHNlY3Rpb24gc28gdGVzdCBsb2dpYyBkb2VzIG5vdCBsZWFrIGVhcmxpZXIuXCIsXG4gICAgICBhc3luY0luQXJyYW5nZTogXCJEbyBub3QgdHJpZ2dlciBhc3luYyBiZWhhdmlvciBpbiBBcnJhbmdlLlwiLFxuICAgICAgYXdhaXRPdXRzaWRlQWN0OiBcIlVzZSBhd2FpdCBvbmx5IGluc2lkZSB0aGUgLy8gQWN0IHNlY3Rpb24uXCIsXG4gICAgICBtaXNzaW5nTWVhbmluZ2Z1bEFjdDpcbiAgICAgICAgXCJUaGUgLy8gQWN0IHNlY3Rpb24gbXVzdCBjb250YWluIGEgbWVhbmluZ2Z1bCBTVVQgaW50ZXJhY3Rpb24sIG5vdCBvbmx5IHV0aWxpdHkgb3Igc2V0dXAgY2FsbHMuXCIsXG4gICAgICBtdXRhdGlvbkFmdGVyQWN0OlxuICAgICAgICBcIkRvIG5vdCBtdXRhdGUgdGVzdCBkYXRhIGFmdGVyIHRoZSAvLyBBY3Qgc2VjdGlvbiBoYXMgcnVuLlwiLFxuICAgICAgbm9uQXNzZXJ0aW9uSW5Bc3NlcnQ6XG4gICAgICAgIFwiS2VlcCB0aGUgLy8gQXNzZXJ0IHNlY3Rpb24gZm9jdXNlZCBvbiBhc3NlcnRpb25zIGFuZCBhc3NlcnRpb24tbG9jYWwgdmFsdWVzLlwiLFxuICAgICAgc2V0dXBBZnRlckFjdDpcbiAgICAgICAgXCJEbyBub3QgY29udGludWUgYXJyYW5naW5nIHRlc3QgZGF0YSBhZnRlciB0aGUgLy8gQWN0IHNlY3Rpb24gaGFzIHN0YXJ0ZWQuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwicHJvYmxlbVwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZSB9O1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/enforce-aaa-structure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { enforceAaaStructureRule } from "./rule";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9lbmZvcmNlLWFhYS1zdHJ1Y3R1cmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZW5mb3JjZUFhYVN0cnVjdHVyZVJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/testing/enforce-aaa-structure/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,QAAA,MAAM,uBAAuB,EAAE,IAAI,CAAC,UAoDnC,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
2
|
-
import { aaaPhaseOrder, analyzeTestBlock, getFlattenedSections } from "../aaa";
|
|
3
|
-
const enforceAaaStructureRule = {
|
|
4
|
-
create(context) {
|
|
5
|
-
return {
|
|
6
|
-
CallExpression(node) {
|
|
7
|
-
const analysis = analyzeTestBlock(context, node);
|
|
8
|
-
if (analysis === void 0) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
const flattenedSections = getFlattenedSections(analysis);
|
|
12
|
-
const seenPhases = new Set();
|
|
13
|
-
let lastPhaseOrder = -1;
|
|
14
|
-
for (const section of flattenedSections) {
|
|
15
|
-
if (seenPhases.has(section.phase)) {
|
|
16
|
-
context.report({
|
|
17
|
-
data: { section: section.phase },
|
|
18
|
-
messageId: "duplicateSection",
|
|
19
|
-
node: section.comment,
|
|
20
|
-
});
|
|
21
|
-
continue;
|
|
22
|
-
}
|
|
23
|
-
const currentPhaseOrder = aaaPhaseOrder[section.phase];
|
|
24
|
-
if (currentPhaseOrder < lastPhaseOrder) {
|
|
25
|
-
context.report({
|
|
26
|
-
data: { section: section.phase },
|
|
27
|
-
messageId: "invalidOrder",
|
|
28
|
-
node: section.comment,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
lastPhaseOrder = Math.max(lastPhaseOrder, currentPhaseOrder);
|
|
32
|
-
seenPhases.add(section.phase);
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
},
|
|
37
|
-
meta: {
|
|
38
|
-
docs: createRuleDocumentation("enforce-aaa-structure", "Require AAA sections to appear once and in Arrange, Act, Assert order."),
|
|
39
|
-
messages: {
|
|
40
|
-
duplicateSection: "Use the // {{section}} section comment only once per test.",
|
|
41
|
-
invalidOrder: "Move the // {{section}} section comment so AAA phases stay in Arrange, Act, Assert order.",
|
|
42
|
-
},
|
|
43
|
-
schema: [],
|
|
44
|
-
type: "problem",
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
export { enforceAaaStructureRule };
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL2VuZm9yY2UtYWFhLXN0cnVjdHVyZS9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0UsTUFBTSx1QkFBdUIsR0FBb0I7SUFDL0MsTUFBTSxDQUFDLE9BQXlCO1FBQzlCLE9BQU87WUFDTCxjQUFjLENBQUMsSUFBSTtnQkFDakIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLFFBQVEsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN4QixPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztnQkFDckMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRXhCLEtBQUssTUFBTSxPQUFPLElBQUksaUJBQWlCLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDOzRCQUNiLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFOzRCQUNoQyxTQUFTLEVBQUUsa0JBQWtCOzRCQUM3QixJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU87eUJBQ3RCLENBQUMsQ0FBQzt3QkFDSCxTQUFTO29CQUNYLENBQUM7b0JBRUQsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN2RCxJQUFJLGlCQUFpQixHQUFHLGNBQWMsRUFBRSxDQUFDO3dCQUN2QyxPQUFPLENBQUMsTUFBTSxDQUFDOzRCQUNiLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFOzRCQUNoQyxTQUFTLEVBQUUsY0FBYzs0QkFDekIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPO3lCQUN0QixDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFFRCxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztvQkFDN0QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7WUFDSCxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSx1QkFBdUIsQ0FDM0IsdUJBQXVCLEVBQ3ZCLHdFQUF3RSxDQUN6RTtRQUNELFFBQVEsRUFBRTtZQUNSLGdCQUFnQixFQUNkLDREQUE0RDtZQUM5RCxZQUFZLEVBQ1YsMkZBQTJGO1NBQzlGO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgY3JlYXRlUnVsZURvY3VtZW50YXRpb24gfSBmcm9tIFwiLi4vLi4vY3VzdG9tLXJ1bGUtZG9jdW1lbnRhdGlvblwiO1xuaW1wb3J0IHsgYWFhUGhhc2VPcmRlciwgYW5hbHl6ZVRlc3RCbG9jaywgZ2V0RmxhdHRlbmVkU2VjdGlvbnMgfSBmcm9tIFwiLi4vYWFhXCI7XG5cbmNvbnN0IGVuZm9yY2VBYWFTdHJ1Y3R1cmVSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIHJldHVybiB7XG4gICAgICBDYWxsRXhwcmVzc2lvbihub2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZVRlc3RCbG9jayhjb250ZXh0LCBub2RlKTtcbiAgICAgICAgaWYgKGFuYWx5c2lzID09PSB2b2lkIDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmbGF0dGVuZWRTZWN0aW9ucyA9IGdldEZsYXR0ZW5lZFNlY3Rpb25zKGFuYWx5c2lzKTtcbiAgICAgICAgY29uc3Qgc2VlblBoYXNlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBsZXQgbGFzdFBoYXNlT3JkZXIgPSAtMTtcblxuICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgZmxhdHRlbmVkU2VjdGlvbnMpIHtcbiAgICAgICAgICBpZiAoc2VlblBoYXNlcy5oYXMoc2VjdGlvbi5waGFzZSkpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YTogeyBzZWN0aW9uOiBzZWN0aW9uLnBoYXNlIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJkdXBsaWNhdGVTZWN0aW9uXCIsXG4gICAgICAgICAgICAgIG5vZGU6IHNlY3Rpb24uY29tbWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY3VycmVudFBoYXNlT3JkZXIgPSBhYWFQaGFzZU9yZGVyW3NlY3Rpb24ucGhhc2VdO1xuICAgICAgICAgIGlmIChjdXJyZW50UGhhc2VPcmRlciA8IGxhc3RQaGFzZU9yZGVyKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIGRhdGE6IHsgc2VjdGlvbjogc2VjdGlvbi5waGFzZSB9LFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IFwiaW52YWxpZE9yZGVyXCIsXG4gICAgICAgICAgICAgIG5vZGU6IHNlY3Rpb24uY29tbWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxhc3RQaGFzZU9yZGVyID0gTWF0aC5tYXgobGFzdFBoYXNlT3JkZXIsIGN1cnJlbnRQaGFzZU9yZGVyKTtcbiAgICAgICAgICBzZWVuUGhhc2VzLmFkZChzZWN0aW9uLnBoYXNlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBSdWxlLlJ1bGVMaXN0ZW5lcjtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uKFxuICAgICAgXCJlbmZvcmNlLWFhYS1zdHJ1Y3R1cmVcIixcbiAgICAgIFwiUmVxdWlyZSBBQUEgc2VjdGlvbnMgdG8gYXBwZWFyIG9uY2UgYW5kIGluIEFycmFuZ2UsIEFjdCwgQXNzZXJ0IG9yZGVyLlwiLFxuICAgICksXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIGR1cGxpY2F0ZVNlY3Rpb246XG4gICAgICAgIFwiVXNlIHRoZSAvLyB7e3NlY3Rpb259fSBzZWN0aW9uIGNvbW1lbnQgb25seSBvbmNlIHBlciB0ZXN0LlwiLFxuICAgICAgaW52YWxpZE9yZGVyOlxuICAgICAgICBcIk1vdmUgdGhlIC8vIHt7c2VjdGlvbn19IHNlY3Rpb24gY29tbWVudCBzbyBBQUEgcGhhc2VzIHN0YXkgaW4gQXJyYW5nZSwgQWN0LCBBc3NlcnQgb3JkZXIuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwicHJvYmxlbVwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgZW5mb3JjZUFhYVN0cnVjdHVyZVJ1bGUgfTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/testing/index.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { assertActualExpectedNamesRule } from "./assert-actual-expected-names";
|
|
2
|
-
export { enforceAaaPhasePurityRule } from "./enforce-aaa-phase-purity";
|
|
3
|
-
export { enforceAaaStructureRule } from "./enforce-aaa-structure";
|
|
4
|
-
export { preferViMockedImportRule } from "./prefer-vi-mocked-import";
|
|
5
|
-
export { requireAaaSectionsRule } from "./require-aaa-sections";
|
|
6
|
-
export { requireActResultCaptureRule } from "./require-act-result-capture";
|
|
7
|
-
export { requireTestCompanionRule } from "./require-test-companion";
|
|
8
|
-
export { singleActStatementRule } from "./single-act-statement";
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGFzc2VydEFjdHVhbEV4cGVjdGVkTmFtZXNSdWxlIH0gZnJvbSBcIi4vYXNzZXJ0LWFjdHVhbC1leHBlY3RlZC1uYW1lc1wiO1xuZXhwb3J0IHsgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZSB9IGZyb20gXCIuL2VuZm9yY2UtYWFhLXBoYXNlLXB1cml0eVwiO1xuZXhwb3J0IHsgZW5mb3JjZUFhYVN0cnVjdHVyZVJ1bGUgfSBmcm9tIFwiLi9lbmZvcmNlLWFhYS1zdHJ1Y3R1cmVcIjtcbmV4cG9ydCB7IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSB9IGZyb20gXCIuL3ByZWZlci12aS1tb2NrZWQtaW1wb3J0XCI7XG5leHBvcnQgeyByZXF1aXJlQWFhU2VjdGlvbnNSdWxlIH0gZnJvbSBcIi4vcmVxdWlyZS1hYWEtc2VjdGlvbnNcIjtcbmV4cG9ydCB7IHJlcXVpcmVBY3RSZXN1bHRDYXB0dXJlUnVsZSB9IGZyb20gXCIuL3JlcXVpcmUtYWN0LXJlc3VsdC1jYXB0dXJlXCI7XG5leHBvcnQgeyByZXF1aXJlVGVzdENvbXBhbmlvblJ1bGUgfSBmcm9tIFwiLi9yZXF1aXJlLXRlc3QtY29tcGFuaW9uXCI7XG5leHBvcnQgeyBzaW5nbGVBY3RTdGF0ZW1lbnRSdWxlIH0gZnJvbSBcIi4vc2luZ2xlLWFjdC1zdGF0ZW1lbnRcIjtcbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Rule } from "eslint";
|
|
2
|
-
import type { RuleMatch } from "./types";
|
|
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
|
-
export { buildFix };
|
|
16
|
-
//# sourceMappingURL=fix.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../../src/testing/prefer-vi-mocked-import/fix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAqCzC;;;;;;;;;;GAUG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAQrE;AAiPD,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Builds fixes that inline declaration initializers into factory properties.
|
|
3
|
-
* @param match Autofix context produced by the matcher.
|
|
4
|
-
* @param fixer ESLint fixer.
|
|
5
|
-
* @returns Binding-related fixes.
|
|
6
|
-
* @example
|
|
7
|
-
* ```typescript
|
|
8
|
-
* const fixes = buildBindingFixes({} as never, {} as never);
|
|
9
|
-
* void fixes;
|
|
10
|
-
* ```
|
|
11
|
-
*/
|
|
12
|
-
function buildBindingFixes(match, fixer) {
|
|
13
|
-
return match.bindings.flatMap((binding) => {
|
|
14
|
-
const declaration = match.declarations.get(binding.localName);
|
|
15
|
-
if (declaration === void 0) {
|
|
16
|
-
return [];
|
|
17
|
-
}
|
|
18
|
-
const initializerText = match.sourceText.slice(declaration.initializerRange[0], declaration.initializerRange[1]);
|
|
19
|
-
return [
|
|
20
|
-
fixer.replaceTextRange(binding.propertyRange, `${binding.exportedName}: ${initializerText}`),
|
|
21
|
-
];
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Builds all autofix operations for a single match.
|
|
26
|
-
* @param match Autofix context produced by the matcher.
|
|
27
|
-
* @param fixer ESLint fixer.
|
|
28
|
-
* @returns Combined fix list.
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* const fixes = buildFix({} as never, {} as never);
|
|
32
|
-
* void fixes;
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
function buildFix(match, fixer) {
|
|
36
|
-
return [
|
|
37
|
-
...buildBindingFixes(match, fixer),
|
|
38
|
-
...buildMemberRewriteFixes(match, fixer),
|
|
39
|
-
...buildMockSpecifierFixes(match, fixer),
|
|
40
|
-
...buildImportFixes(match, fixer),
|
|
41
|
-
...buildRemovalFixes(match, fixer),
|
|
42
|
-
];
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Builds fixes for adding or updating imports.
|
|
46
|
-
* @param match Autofix context produced by the matcher.
|
|
47
|
-
* @param fixer ESLint fixer.
|
|
48
|
-
* @returns A fix list that keeps import declarations consistent.
|
|
49
|
-
* @example
|
|
50
|
-
* ```typescript
|
|
51
|
-
* const fixes = buildImportFixes({} as never, {} as never);
|
|
52
|
-
* void fixes;
|
|
53
|
-
* ```
|
|
54
|
-
*/
|
|
55
|
-
function buildImportFixes(match, fixer) {
|
|
56
|
-
const { names } = match.importPlan;
|
|
57
|
-
if (names.length === 0) {
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
const sortedNames = [...names].toSorted();
|
|
61
|
-
const updateFix = buildImportUpdateFix(match, sortedNames, fixer);
|
|
62
|
-
return updateFix === void 0
|
|
63
|
-
? buildImportInsertFixes(match, sortedNames, fixer)
|
|
64
|
-
: [updateFix];
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Builds import insertion fixes when no compatible import exists.
|
|
68
|
-
* @param match Autofix context produced by the matcher.
|
|
69
|
-
* @param sortedNames Sorted names that must be imported.
|
|
70
|
-
* @param fixer ESLint fixer.
|
|
71
|
-
* @returns Fixes that insert a new import declaration.
|
|
72
|
-
* @example
|
|
73
|
-
* ```typescript
|
|
74
|
-
* const fixes = buildImportInsertFixes({ importPlan: { moduleSpecifier: "./x", names: [] }, newline: "\n" } as never, [], {} as never);
|
|
75
|
-
* void fixes;
|
|
76
|
-
* ```
|
|
77
|
-
*/
|
|
78
|
-
function buildImportInsertFixes(match, sortedNames, fixer) {
|
|
79
|
-
const statementText = buildImportStatement(match.importPlan.moduleSpecifier, void 0, sortedNames);
|
|
80
|
-
const { afterRange } = match.importPlan.insert ?? {};
|
|
81
|
-
return afterRange === void 0
|
|
82
|
-
? [
|
|
83
|
-
fixer.insertTextBeforeRange([0, 0], `${statementText}${match.newline}${match.newline}`),
|
|
84
|
-
]
|
|
85
|
-
: [
|
|
86
|
-
fixer.insertTextAfterRange(afterRange, `${match.newline}${statementText}`),
|
|
87
|
-
];
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Creates an import statement string from import parts.
|
|
91
|
-
* @param moduleSpecifier Module path used in the generated statement.
|
|
92
|
-
* @param defaultImportName Existing default-import local identifier, when present.
|
|
93
|
-
* @param names Named imports to include in braces.
|
|
94
|
-
* @returns Fully formatted import statement text.
|
|
95
|
-
* @example
|
|
96
|
-
* ```typescript
|
|
97
|
-
* const text = buildImportStatement("./x", void 0, ["a"]);
|
|
98
|
-
* void text;
|
|
99
|
-
* ```
|
|
100
|
-
*/
|
|
101
|
-
function buildImportStatement(moduleSpecifier, defaultImportName, names) {
|
|
102
|
-
const moduleText = JSON.stringify(moduleSpecifier);
|
|
103
|
-
const namedText = `{ ${names.join(", ")} }`;
|
|
104
|
-
return defaultImportName === void 0
|
|
105
|
-
? `import ${namedText} from ${moduleText};`
|
|
106
|
-
: `import ${defaultImportName}, ${namedText} from ${moduleText};`;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Builds an import update fix when an existing import is compatible.
|
|
110
|
-
* @param match Autofix context produced by the matcher.
|
|
111
|
-
* @param sortedNames Sorted names that must be imported.
|
|
112
|
-
* @param fixer ESLint fixer.
|
|
113
|
-
* @returns A single replacement fix when an import can be updated.
|
|
114
|
-
* @example
|
|
115
|
-
* ```typescript
|
|
116
|
-
* const fix = buildImportUpdateFix({ importPlan: { moduleSpecifier: "./x", names: [] } } as never, [], {} as never);
|
|
117
|
-
* void fix;
|
|
118
|
-
* ```
|
|
119
|
-
*/
|
|
120
|
-
function buildImportUpdateFix(match, sortedNames, fixer) {
|
|
121
|
-
const { update } = match.importPlan;
|
|
122
|
-
if (update === void 0) {
|
|
123
|
-
return void 0;
|
|
124
|
-
}
|
|
125
|
-
const { moduleSpecifier } = match.importPlan;
|
|
126
|
-
const mergedNames = [
|
|
127
|
-
...new Set([...sortedNames, ...update.existingNamedImports]),
|
|
128
|
-
].toSorted();
|
|
129
|
-
const statementText = buildImportStatement(moduleSpecifier, update.defaultImportName, mergedNames);
|
|
130
|
-
return fixer.replaceTextRange(update.range, statementText);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Builds fixes for `mock*` member-expression object rewrites.
|
|
134
|
-
* @param match Autofix context produced by the matcher.
|
|
135
|
-
* @param fixer ESLint fixer.
|
|
136
|
-
* @returns Replacements for member-expression object identifiers.
|
|
137
|
-
* @example
|
|
138
|
-
* ```typescript
|
|
139
|
-
* const fixes = buildMemberRewriteFixes({} as never, {} as never);
|
|
140
|
-
* void fixes;
|
|
141
|
-
* ```
|
|
142
|
-
*/
|
|
143
|
-
function buildMemberRewriteFixes(match, fixer) {
|
|
144
|
-
return match.memberRewrites.map((rewrite) => fixer.replaceTextRange(rewrite.localObjectRange, `vi.mocked(${rewrite.exportedName})`));
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Builds a fix that converts literal mock specifiers to `import("...")`.
|
|
148
|
-
* @param match Autofix context produced by the matcher.
|
|
149
|
-
* @param fixer ESLint fixer.
|
|
150
|
-
* @returns Fixes that normalize the mock specifier argument.
|
|
151
|
-
* @example
|
|
152
|
-
* ```typescript
|
|
153
|
-
* const fixes = buildMockSpecifierFixes({} as never, {} as never);
|
|
154
|
-
* void fixes;
|
|
155
|
-
* ```
|
|
156
|
-
*/
|
|
157
|
-
function buildMockSpecifierFixes(match, fixer) {
|
|
158
|
-
if (match.mockSpecifierIsImportExpression) {
|
|
159
|
-
return [];
|
|
160
|
-
}
|
|
161
|
-
const moduleText = JSON.stringify(match.moduleSpecifier);
|
|
162
|
-
return [
|
|
163
|
-
fixer.replaceTextRange(match.mockSpecifierRange, `import(${moduleText})`),
|
|
164
|
-
];
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Builds fixes that remove declarations after inlining.
|
|
168
|
-
* @param match Autofix context produced by the matcher.
|
|
169
|
-
* @param fixer ESLint fixer.
|
|
170
|
-
* @returns Fixes that remove redundant declaration statements.
|
|
171
|
-
* @example
|
|
172
|
-
* ```typescript
|
|
173
|
-
* const fixes = buildRemovalFixes({} as never, {} as never);
|
|
174
|
-
* void fixes;
|
|
175
|
-
* ```
|
|
176
|
-
*/
|
|
177
|
-
function buildRemovalFixes(match, fixer) {
|
|
178
|
-
const uniqueRanges = getUniqueStatementRanges(match);
|
|
179
|
-
return uniqueRanges.map((statementRange) => {
|
|
180
|
-
const expandedRange = extendRangeToLineBreak(match.sourceText, statementRange);
|
|
181
|
-
return fixer.removeRange(expandedRange);
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Extends a statement range to include the trailing line break.
|
|
186
|
-
* @param sourceText Full file content for newline lookup.
|
|
187
|
-
* @param statementRange Start/end offsets for the statement.
|
|
188
|
-
* @returns Statement range extended through the trailing line break.
|
|
189
|
-
* @example
|
|
190
|
-
* ```typescript
|
|
191
|
-
* const range = extendRangeToLineBreak("a\n", [0, 1]);
|
|
192
|
-
* void range;
|
|
193
|
-
* ```
|
|
194
|
-
*/
|
|
195
|
-
function extendRangeToLineBreak(sourceText, statementRange) {
|
|
196
|
-
const [start, end] = statementRange;
|
|
197
|
-
const nextLineFeedIndex = sourceText.indexOf("\n", end);
|
|
198
|
-
return nextLineFeedIndex === -1
|
|
199
|
-
? [start, sourceText.length]
|
|
200
|
-
: [start, nextLineFeedIndex + 1];
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Returns sorted unique statement ranges for declarations to remove.
|
|
204
|
-
* @param match Autofix context produced by the matcher.
|
|
205
|
-
* @returns Distinct declaration statement ranges to remove.
|
|
206
|
-
* @example
|
|
207
|
-
* ```typescript
|
|
208
|
-
* const ranges = getUniqueStatementRanges({ bindings: [], declarations: new Map() } as never);
|
|
209
|
-
* void ranges;
|
|
210
|
-
* ```
|
|
211
|
-
*/
|
|
212
|
-
function getUniqueStatementRanges(match) {
|
|
213
|
-
const rangeMap = new Map();
|
|
214
|
-
for (const binding of match.bindings) {
|
|
215
|
-
const declaration = match.declarations.get(binding.localName);
|
|
216
|
-
if (declaration !== void 0) {
|
|
217
|
-
const key = `${declaration.statementRange[0]}:${declaration.statementRange[1]}`;
|
|
218
|
-
rangeMap.set(key, declaration.statementRange);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
return [...rangeMap.values()];
|
|
222
|
-
}
|
|
223
|
-
export { buildFix };
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLGlCQUFpQixDQUN4QixLQUFnQixFQUNoQixLQUFxQjtJQUVyQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDeEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELElBQUksV0FBVyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQzVDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFDL0IsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUNoQyxDQUFDO1FBQ0YsT0FBTztZQUNMLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsT0FBTyxDQUFDLGFBQWEsRUFDckIsR0FBRyxPQUFPLENBQUMsWUFBWSxLQUFLLGVBQWUsRUFBRSxDQUM5QztTQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsS0FBZ0IsRUFBRSxLQUFxQjtJQUN2RCxPQUFPO1FBQ0wsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ2xDLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUN4QyxHQUFHLHVCQUF1QixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDeEMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVB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LEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBSdWxlTWF0Y2ggfSBmcm9tIFwiLi90eXBlc1wiO1xuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xudHlwZSBSYW5nZSA9IFtudW1iZXIsIG51bWJlcl07XG5cbi8qKlxuICogQnVpbGRzIGZpeGVzIHRoYXQgaW5saW5lIGRlY2xhcmF0aW9uIGluaXRpYWxpemVycyBpbnRvIGZhY3RvcnkgcHJvcGVydGllcy5cbiAqIEBwYXJhbSBtYXRjaCBBdXRvZml4IGNvbnRleHQgcHJvZHVjZWQgYnkgdGhlIG1hdGNoZXIuXG4gKiBAcGFyYW0gZml4ZXIgRVNMaW50IGZpeGVyLlxuICogQHJldHVybnMgQmluZGluZy1yZWxhdGVkIGZpeGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeGVzID0gYnVpbGRCaW5kaW5nRml4ZXMoe30gYXMgbmV2ZXIsIHt9IGFzIG5ldmVyKTtcbiAqIHZvaWQgZml4ZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYnVpbGRCaW5kaW5nRml4ZXMoXG4gIG1hdGNoOiBSdWxlTWF0Y2gsXG4gIGZpeGVyOiBSdWxlLlJ1bGVGaXhlcixcbik6IFJ1bGUuRml4W10ge1xuICByZXR1cm4gbWF0Y2guYmluZGluZ3MuZmxhdE1hcCgoYmluZGluZykgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmF0aW9uID0gbWF0Y2guZGVjbGFyYXRpb25zLmdldChiaW5kaW5nLmxvY2FsTmFtZSk7XG4gICAgaWYgKGRlY2xhcmF0aW9uID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgaW5pdGlhbGl6ZXJUZXh0ID0gbWF0Y2guc291cmNlVGV4dC5zbGljZShcbiAgICAgIGRlY2xhcmF0aW9uLmluaXRpYWxpemVyUmFuZ2VbMF0sXG4gICAgICBkZWNsYXJhdGlvbi5pbml0aWFsaXplclJhbmdlWzFdLFxuICAgICk7XG4gICAgcmV0dXJuIFtcbiAgICAgIGZpeGVyLnJlcGxhY2VUZXh0UmFuZ2UoXG4gICAgICAgIGJpbmRpbmcucHJvcGVydHlSYW5nZSxcbiAgICAgICAgYCR7YmluZGluZy5leHBvcnRlZE5hbWV9OiAke2luaXRpYWxpemVyVGV4dH1gLFxuICAgICAgKSxcbiAgICBdO1xuICB9KTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYWxsIGF1dG9maXggb3BlcmF0aW9ucyBmb3IgYSBzaW5nbGUgbWF0Y2guXG4gKiBAcGFyYW0gbWF0Y2ggQXV0b2ZpeCBjb250ZXh0IHByb2R1Y2VkIGJ5IHRoZSBtYXRjaGVyLlxuICogQHBhcmFtIGZpeGVyIEVTTGludCBmaXhlci5cbiAqIEByZXR1cm5zIENvbWJpbmVkIGZpeCBsaXN0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeGVzID0gYnVpbGRGaXgoe30gYXMgbmV2ZXIsIHt9IGFzIG5ldmVyKTtcbiAqIHZvaWQgZml4ZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYnVpbGRGaXgobWF0Y2g6IFJ1bGVNYXRjaCwgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKTogUnVsZS5GaXhbXSB7XG4gIHJldHVybiBbXG4gICAgLi4uYnVpbGRCaW5kaW5nRml4ZXMobWF0Y2gsIGZpeGVyKSxcbiAgICAuLi5idWlsZE1lbWJlclJld3JpdGVGaXhlcyhtYXRjaCwgZml4ZXIpLFxuICAgIC4uLmJ1aWxkTW9ja1NwZWNpZmllckZpeGVzKG1hdGNoLCBmaXhlciksXG4gICAgLi4uYnVpbGRJbXBvcnRGaXhlcyhtYXRjaCwgZml4ZXIpLFxuICAgIC4uLmJ1aWxkUmVtb3ZhbEZpeGVzKG1hdGNoLCBmaXhlciksXG4gIF07XG59XG5cbi8qKlxuICogQnVpbGRzIGZpeGVzIGZvciBhZGRpbmcgb3IgdXBkYXRpbmcgaW1wb3J0cy5cbiAqIEBwYXJhbSBtYXRjaCBBdXRvZml4IGNvbnRleHQgcHJvZHVjZWQgYnkgdGhlIG1hdGNoZXIuXG4gKiBAcGFyYW0gZml4ZXIgRVNMaW50IGZpeGVyLlxuICogQHJldHVybnMgQSBmaXggbGlzdCB0aGF0IGtlZXBzIGltcG9ydCBkZWNsYXJhdGlvbnMgY29uc2lzdGVudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhlcyA9IGJ1aWxkSW1wb3J0Rml4ZXMoe30gYXMgbmV2ZXIsIHt9IGFzIG5ldmVyKTtcbiAqIHZvaWQgZml4ZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYnVpbGRJbXBvcnRGaXhlcyhtYXRjaDogUnVsZU1hdGNoLCBmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeFtdIHtcbiAgY29uc3QgeyBuYW1lcyB9ID0gbWF0Y2guaW1wb3J0UGxhbjtcbiAgaWYgKG5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHNvcnRlZE5hbWVzID0gWy4uLm5hbWVzXS50b1NvcnRlZCgpO1xuICBjb25zdCB1cGRhdGVGaXggPSBidWlsZEltcG9ydFVwZGF0ZUZpeChtYXRjaCwgc29ydGVkTmFtZXMsIGZpeGVyKTtcbiAgcmV0dXJuIHVwZGF0ZUZpeCA9PT0gdm9pZCAwXG4gICAgPyBidWlsZEltcG9ydEluc2VydEZpeGVzKG1hdGNoLCBzb3J0ZWROYW1lcywgZml4ZXIpXG4gICAgOiBbdXBkYXRlRml4XTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgaW1wb3J0IGluc2VydGlvbiBmaXhlcyB3aGVuIG5vIGNvbXBhdGlibGUgaW1wb3J0IGV4aXN0cy5cbiAqIEBwYXJhbSBtYXRjaCBBdXRvZml4IGNvbnRleHQgcHJvZHVjZWQgYnkgdGhlIG1hdGNoZXIuXG4gKiBAcGFyYW0gc29ydGVkTmFtZXMgU29ydGVkIG5hbWVzIHRoYXQgbXVzdCBiZSBpbXBvcnRlZC5cbiAqIEBwYXJhbSBmaXhlciBFU0xpbnQgZml4ZXIuXG4gKiBAcmV0dXJucyBGaXhlcyB0aGF0IGluc2VydCBhIG5ldyBpbXBvcnQgZGVjbGFyYXRpb24uXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZml4ZXMgPSBidWlsZEltcG9ydEluc2VydEZpeGVzKHsgaW1wb3J0UGxhbjogeyBtb2R1bGVTcGVjaWZpZXI6IFwiLi94XCIsIG5hbWVzOiBbXSB9LCBuZXdsaW5lOiBcIlxcblwiIH0gYXMgbmV2ZXIsIFtdLCB7fSBhcyBuZXZlcik7XG4gKiB2b2lkIGZpeGVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSW1wb3J0SW5zZXJ0Rml4ZXMoXG4gIG1hdGNoOiBSdWxlTWF0Y2gsXG4gIHNvcnRlZE5hbWVzOiBzdHJpbmdbXSxcbiAgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyLFxuKTogUnVsZS5GaXhbXSB7XG4gIGNvbnN0IHN0YXRlbWVudFRleHQgPSBidWlsZEltcG9ydFN0YXRlbWVudChcbiAgICBtYXRjaC5pbXBvcnRQbGFuLm1vZHVsZVNwZWNpZmllcixcbiAgICB2b2lkIDAsXG4gICAgc29ydGVkTmFtZXMsXG4gICk7XG4gIGNvbnN0IHsgYWZ0ZXJSYW5nZSB9ID0gbWF0Y2guaW1wb3J0UGxhbi5pbnNlcnQgPz8ge307XG5cbiAgcmV0dXJuIGFmdGVyUmFuZ2UgPT09IHZvaWQgMFxuICAgID8gW1xuICAgICAgICBmaXhlci5pbnNlcnRUZXh0QmVmb3JlUmFuZ2UoXG4gICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgIGAke3N0YXRlbWVudFRleHR9JHttYXRjaC5uZXdsaW5lfSR7bWF0Y2gubmV3bGluZX1gLFxuICAgICAgICApLFxuICAgICAgXVxuICAgIDogW1xuICAgICAgICBmaXhlci5pbnNlcnRUZXh0QWZ0ZXJSYW5nZShcbiAgICAgICAgICBhZnRlclJhbmdlLFxuICAgICAgICAgIGAke21hdGNoLm5ld2xpbmV9JHtzdGF0ZW1lbnRUZXh0fWAsXG4gICAgICAgICksXG4gICAgICBdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gaW1wb3J0IHN0YXRlbWVudCBzdHJpbmcgZnJvbSBpbXBvcnQgcGFydHMuXG4gKiBAcGFyYW0gbW9kdWxlU3BlY2lmaWVyIE1vZHVsZSBwYXRoIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gZGVmYXVsdEltcG9ydE5hbWUgRXhpc3RpbmcgZGVmYXVsdC1pbXBvcnQgbG9jYWwgaWRlbnRpZmllciwgd2hlbiBwcmVzZW50LlxuICogQHBhcmFtIG5hbWVzIE5hbWVkIGltcG9ydHMgdG8gaW5jbHVkZSBpbiBicmFjZXMuXG4gKiBAcmV0dXJucyBGdWxseSBmb3JtYXR0ZWQgaW1wb3J0IHN0YXRlbWVudCB0ZXh0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHRleHQgPSBidWlsZEltcG9ydFN0YXRlbWVudChcIi4veFwiLCB2b2lkIDAsIFtcImFcIl0pO1xuICogdm9pZCB0ZXh0O1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSW1wb3J0U3RhdGVtZW50KFxuICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZyxcbiAgZGVmYXVsdEltcG9ydE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgbmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbW9kdWxlVGV4dCA9IEpTT04uc3RyaW5naWZ5KG1vZHVsZVNwZWNpZmllcik7XG4gIGNvbnN0IG5hbWVkVGV4dCA9IGB7ICR7bmFtZXMuam9pbihcIiwgXCIpfSB9YDtcbiAgcmV0dXJuIGRlZmF1bHRJbXBvcnROYW1lID09PSB2b2lkIDBcbiAgICA/IGBpbXBvcnQgJHtuYW1lZFRleHR9IGZyb20gJHttb2R1bGVUZXh0fTtgXG4gICAgOiBgaW1wb3J0ICR7ZGVmYXVsdEltcG9ydE5hbWV9LCAke25hbWVkVGV4dH0gZnJvbSAke21vZHVsZVRleHR9O2A7XG59XG5cbi8qKlxuICogQnVpbGRzIGFuIGltcG9ydCB1cGRhdGUgZml4IHdoZW4gYW4gZXhpc3RpbmcgaW1wb3J0IGlzIGNvbXBhdGlibGUuXG4gKiBAcGFyYW0gbWF0Y2ggQXV0b2ZpeCBjb250ZXh0IHByb2R1Y2VkIGJ5IHRoZSBtYXRjaGVyLlxuICogQHBhcmFtIHNvcnRlZE5hbWVzIFNvcnRlZCBuYW1lcyB0aGF0IG11c3QgYmUgaW1wb3J0ZWQuXG4gKiBAcGFyYW0gZml4ZXIgRVNMaW50IGZpeGVyLlxuICogQHJldHVybnMgQSBzaW5nbGUgcmVwbGFjZW1lbnQgZml4IHdoZW4gYW4gaW1wb3J0IGNhbiBiZSB1cGRhdGVkLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeCA9IGJ1aWxkSW1wb3J0VXBkYXRlRml4KHsgaW1wb3J0UGxhbjogeyBtb2R1bGVTcGVjaWZpZXI6IFwiLi94XCIsIG5hbWVzOiBbXSB9IH0gYXMgbmV2ZXIsIFtdLCB7fSBhcyBuZXZlcik7XG4gKiB2b2lkIGZpeDtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZEltcG9ydFVwZGF0ZUZpeChcbiAgbWF0Y2g6IFJ1bGVNYXRjaCxcbiAgc29ydGVkTmFtZXM6IHN0cmluZ1tdLFxuICBmaXhlcjogUnVsZS5SdWxlRml4ZXIsXG4pOiBSdWxlLkZpeCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgdXBkYXRlIH0gPSBtYXRjaC5pbXBvcnRQbGFuO1xuICBpZiAodXBkYXRlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgeyBtb2R1bGVTcGVjaWZpZXIgfSA9IG1hdGNoLmltcG9ydFBsYW47XG4gIGNvbnN0IG1lcmdlZE5hbWVzID0gW1xuICAgIC4uLm5ldyBTZXQoWy4uLnNvcnRlZE5hbWVzLCAuLi51cGRhdGUuZXhpc3RpbmdOYW1lZEltcG9ydHNdKSxcbiAgXS50b1NvcnRlZCgpO1xuICBjb25zdCBzdGF0ZW1lbnRUZXh0ID0gYnVpbGRJbXBvcnRTdGF0ZW1lbnQoXG4gICAgbW9kdWxlU3BlY2lmaWVyLFxuICAgIHVwZGF0ZS5kZWZhdWx0SW1wb3J0TmFtZSxcbiAgICBtZXJnZWROYW1lcyxcbiAgKTtcbiAgcmV0dXJuIGZpeGVyLnJlcGxhY2VUZXh0UmFuZ2UodXBkYXRlLnJhbmdlLCBzdGF0ZW1lbnRUZXh0KTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgZml4ZXMgZm9yIGBtb2NrKmAgbWVtYmVyLWV4cHJlc3Npb24gb2JqZWN0IHJld3JpdGVzLlxuICogQHBhcmFtIG1hdGNoIEF1dG9maXggY29udGV4dCBwcm9kdWNlZCBieSB0aGUgbWF0Y2hlci5cbiAqIEBwYXJhbSBmaXhlciBFU0xpbnQgZml4ZXIuXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudHMgZm9yIG1lbWJlci1leHByZXNzaW9uIG9iamVjdCBpZGVudGlmaWVycy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhlcyA9IGJ1aWxkTWVtYmVyUmV3cml0ZUZpeGVzKHt9IGFzIG5ldmVyLCB7fSBhcyBuZXZlcik7XG4gKiB2b2lkIGZpeGVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTWVtYmVyUmV3cml0ZUZpeGVzKFxuICBtYXRjaDogUnVsZU1hdGNoLFxuICBmaXhlcjogUnVsZS5SdWxlRml4ZXIsXG4pOiBSdWxlLkZpeFtdIHtcbiAgcmV0dXJuIG1hdGNoLm1lbWJlclJld3JpdGVzLm1hcCgocmV3cml0ZSkgPT5cbiAgICBmaXhlci5yZXBsYWNlVGV4dFJhbmdlKFxuICAgICAgcmV3cml0ZS5sb2NhbE9iamVjdFJhbmdlLFxuICAgICAgYHZpLm1vY2tlZCgke3Jld3JpdGUuZXhwb3J0ZWROYW1lfSlgLFxuICAgICksXG4gICk7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgZml4IHRoYXQgY29udmVydHMgbGl0ZXJhbCBtb2NrIHNwZWNpZmllcnMgdG8gYGltcG9ydChcIi4uLlwiKWAuXG4gKiBAcGFyYW0gbWF0Y2ggQXV0b2ZpeCBjb250ZXh0IHByb2R1Y2VkIGJ5IHRoZSBtYXRjaGVyLlxuICogQHBhcmFtIGZpeGVyIEVTTGludCBmaXhlci5cbiAqIEByZXR1cm5zIEZpeGVzIHRoYXQgbm9ybWFsaXplIHRoZSBtb2NrIHNwZWNpZmllciBhcmd1bWVudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhlcyA9IGJ1aWxkTW9ja1NwZWNpZmllckZpeGVzKHt9IGFzIG5ldmVyLCB7fSBhcyBuZXZlcik7XG4gKiB2b2lkIGZpeGVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTW9ja1NwZWNpZmllckZpeGVzKFxuICBtYXRjaDogUnVsZU1hdGNoLFxuICBmaXhlcjogUnVsZS5SdWxlRml4ZXIsXG4pOiBSdWxlLkZpeFtdIHtcbiAgaWYgKG1hdGNoLm1vY2tTcGVjaWZpZXJJc0ltcG9ydEV4cHJlc3Npb24pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBtb2R1bGVUZXh0ID0gSlNPTi5zdHJpbmdpZnkobWF0Y2gubW9kdWxlU3BlY2lmaWVyKTtcbiAgcmV0dXJuIFtcbiAgICBmaXhlci5yZXBsYWNlVGV4dFJhbmdlKG1hdGNoLm1vY2tTcGVjaWZpZXJSYW5nZSwgYGltcG9ydCgke21vZHVsZVRleHR9KWApLFxuICBdO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBmaXhlcyB0aGF0IHJlbW92ZSBkZWNsYXJhdGlvbnMgYWZ0ZXIgaW5saW5pbmcuXG4gKiBAcGFyYW0gbWF0Y2ggQXV0b2ZpeCBjb250ZXh0IHByb2R1Y2VkIGJ5IHRoZSBtYXRjaGVyLlxuICogQHBhcmFtIGZpeGVyIEVTTGludCBmaXhlci5cbiAqIEByZXR1cm5zIEZpeGVzIHRoYXQgcmVtb3ZlIHJlZHVuZGFudCBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeGVzID0gYnVpbGRSZW1vdmFsRml4ZXMoe30gYXMgbmV2ZXIsIHt9IGFzIG5ldmVyKTtcbiAqIHZvaWQgZml4ZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYnVpbGRSZW1vdmFsRml4ZXMoXG4gIG1hdGNoOiBSdWxlTWF0Y2gsXG4gIGZpeGVyOiBSdWxlLlJ1bGVGaXhlcixcbik6IFJ1bGUuRml4W10ge1xuICBjb25zdCB1bmlxdWVSYW5nZXMgPSBnZXRVbmlxdWVTdGF0ZW1lbnRSYW5nZXMobWF0Y2gpO1xuICByZXR1cm4gdW5pcXVlUmFuZ2VzLm1hcCgoc3RhdGVtZW50UmFuZ2UpID0+IHtcbiAgICBjb25zdCBleHBhbmRlZFJhbmdlID0gZXh0ZW5kUmFuZ2VUb0xpbmVCcmVhayhcbiAgICAgIG1hdGNoLnNvdXJjZVRleHQsXG4gICAgICBzdGF0ZW1lbnRSYW5nZSxcbiAgICApO1xuICAgIHJldHVybiBmaXhlci5yZW1vdmVSYW5nZShleHBhbmRlZFJhbmdlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBhIHN0YXRlbWVudCByYW5nZSB0byBpbmNsdWRlIHRoZSB0cmFpbGluZyBsaW5lIGJyZWFrLlxuICogQHBhcmFtIHNvdXJjZVRleHQgRnVsbCBmaWxlIGNvbnRlbnQgZm9yIG5ld2xpbmUgbG9va3VwLlxuICogQHBhcmFtIHN0YXRlbWVudFJhbmdlIFN0YXJ0L2VuZCBvZmZzZXRzIGZvciB0aGUgc3RhdGVtZW50LlxuICogQHJldHVybnMgU3RhdGVtZW50IHJhbmdlIGV4dGVuZGVkIHRocm91Z2ggdGhlIHRyYWlsaW5nIGxpbmUgYnJlYWsuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2UgPSBleHRlbmRSYW5nZVRvTGluZUJyZWFrKFwiYVxcblwiLCBbMCwgMV0pO1xuICogdm9pZCByYW5nZTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBleHRlbmRSYW5nZVRvTGluZUJyZWFrKFxuICBzb3VyY2VUZXh0OiBzdHJpbmcsXG4gIHN0YXRlbWVudFJhbmdlOiBSYW5nZSxcbik6IFJhbmdlIHtcbiAgY29uc3QgW3N0YXJ0LCBlbmRdID0gc3RhdGVtZW50UmFuZ2U7XG4gIGNvbnN0IG5leHRMaW5lRmVlZEluZGV4ID0gc291cmNlVGV4dC5pbmRleE9mKFwiXFxuXCIsIGVuZCk7XG4gIHJldHVybiBuZXh0TGluZUZlZWRJbmRleCA9PT0gLTFcbiAgICA/IFtzdGFydCwgc291cmNlVGV4dC5sZW5ndGhdXG4gICAgOiBbc3RhcnQsIG5leHRMaW5lRmVlZEluZGV4ICsgMV07XG59XG5cbi8qKlxuICogUmV0dXJucyBzb3J0ZWQgdW5pcXVlIHN0YXRlbWVudCByYW5nZXMgZm9yIGRlY2xhcmF0aW9ucyB0byByZW1vdmUuXG4gKiBAcGFyYW0gbWF0Y2ggQXV0b2ZpeCBjb250ZXh0IHByb2R1Y2VkIGJ5IHRoZSBtYXRjaGVyLlxuICogQHJldHVybnMgRGlzdGluY3QgZGVjbGFyYXRpb24gc3RhdGVtZW50IHJhbmdlcyB0byByZW1vdmUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2VzID0gZ2V0VW5pcXVlU3RhdGVtZW50UmFuZ2VzKHsgYmluZGluZ3M6IFtdLCBkZWNsYXJhdGlvbnM6IG5ldyBNYXAoKSB9IGFzIG5ldmVyKTtcbiAqIHZvaWQgcmFuZ2VzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldFVuaXF1ZVN0YXRlbWVudFJhbmdlcyhtYXRjaDogUnVsZU1hdGNoKTogUmFuZ2VbXSB7XG4gIGNvbnN0IHJhbmdlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFJhbmdlPigpO1xuICBmb3IgKGNvbnN0IGJpbmRpbmcgb2YgbWF0Y2guYmluZGluZ3MpIHtcbiAgICBjb25zdCBkZWNsYXJhdGlvbiA9IG1hdGNoLmRlY2xhcmF0aW9ucy5nZXQoYmluZGluZy5sb2NhbE5hbWUpO1xuICAgIGlmIChkZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgICBjb25zdCBrZXkgPSBgJHtkZWNsYXJhdGlvbi5zdGF0ZW1lbnRSYW5nZVswXX06JHtkZWNsYXJhdGlvbi5zdGF0ZW1lbnRSYW5nZVsxXX1gO1xuICAgICAgcmFuZ2VNYXAuc2V0KGtleSwgZGVjbGFyYXRpb24uc3RhdGVtZW50UmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbLi4ucmFuZ2VNYXAudmFsdWVzKCldO1xufVxuXG5leHBvcnQgeyBidWlsZEZpeCB9O1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/prefer-vi-mocked-import/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { preferViMockedImportRule } from "./rule";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9wcmVmZXItdmktbW9ja2VkLWltcG9ydC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwcmVmZXJWaU1vY2tlZEltcG9ydFJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"match-bindings.d.ts","sourceRoot":"","sources":["../../../src/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"}
|