@codeperfect/eslint-plugin 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/{custom-rules.d.ts → application/custom-rules.d.ts} +3 -0
- package/dist/application/custom-rules.d.ts.map +1 -0
- package/dist/application/custom-rules.js +74 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +3 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +56 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +149 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +4 -4
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +98 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +45 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +64 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +5 -4
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +87 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +140 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/index.js +4 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +85 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +91 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +4 -6
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +95 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.js +43 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +4 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +4 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/test-helpers.d.ts +48 -48
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +20 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +25 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +235 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts +19 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/types.js +2 -0
- package/dist/{architecture → domain/architecture}/index.d.ts +1 -1
- package/dist/domain/architecture/index.d.ts.map +1 -0
- package/dist/domain/architecture/index.js +2 -0
- package/dist/{core → domain/core}/index.d.ts +2 -2
- package/dist/domain/core/index.d.ts.map +1 -0
- package/dist/domain/core/index.js +3 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts +2 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/index.js +2 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +101 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +108 -0
- package/dist/{core → domain/core}/no-multiple-declarators/rule.d.ts +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +35 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.js +95 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.js +219 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +4 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts +77 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/types.js +38 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts +2 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/index.js +2 -0
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/rule.js +145 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.js +116 -0
- package/dist/{custom-rule-documentation.d.ts → domain/custom-rule-documentation.d.ts} +1 -1
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
- package/dist/domain/custom-rule-documentation.js +35 -0
- package/dist/domain/docs/index.d.ts +4 -0
- package/dist/domain/docs/index.d.ts.map +1 -0
- package/dist/domain/docs/index.js +4 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +146 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts +2 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/index.js +2 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-tags.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +101 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +125 -0
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/rule.js +168 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.js +157 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/types.d.ts +2 -2
- package/dist/domain/docs/no-interface-member-docs/types.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/types.js +2 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts +5 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/create-fixer.js +5 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.js +169 -0
- package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/example-utilities.js +76 -0
- package/dist/{docs → domain/docs}/require-example-language/examples.d.ts +1 -1
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/examples.js +181 -0
- package/dist/{docs → domain/docs}/require-example-language/fixes.d.ts +2 -2
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/fixes.js +182 -0
- package/dist/domain/docs/require-example-language/index.d.ts +3 -0
- package/dist/domain/docs/require-example-language/index.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/index.js +2 -0
- package/dist/{docs → domain/docs}/require-example-language/reporting.d.ts +1 -1
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/reporting.js +148 -0
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/rule.js +34 -0
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/types.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/index.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/rule.js +196 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
- package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
- package/dist/domain/docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/test-helpers.js +107 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +6 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts +92 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.js +247 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +93 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +283 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +75 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +201 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
- package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
- package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.js +59 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts +107 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.js +228 -0
- package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
- package/dist/domain/testing/aaa/index.d.ts.map +1 -0
- package/dist/domain/testing/aaa/index.js +2 -0
- package/dist/domain/testing/aaa/types.d.ts +58 -0
- package/dist/domain/testing/aaa/types.d.ts.map +1 -0
- package/dist/domain/testing/aaa/types.js +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
- package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.js +113 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
- package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +34 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
- package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.js +85 -0
- package/dist/{testing → domain/testing}/index.d.ts +9 -8
- package/dist/domain/testing/index.d.ts.map +1 -0
- package/dist/domain/testing/index.js +10 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +36 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +86 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +150 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +81 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +189 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +92 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +62 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +203 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/index.js +2 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
- package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.js +129 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.js +217 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/index.js +2 -0
- package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.js +106 -0
- package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
- package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/index.js +3 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/rule.js +57 -0
- package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/types.js +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/index.js +2 -0
- package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/rule.js +34 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
- package/dist/infrastructure/codeperfect-plugin.js +30 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +4 -0
- package/dist/infrastructure/presets.d.ts +18 -0
- package/dist/infrastructure/presets.d.ts.map +1 -0
- package/dist/infrastructure/presets.js +81 -0
- package/package.json +54 -27
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
- package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
- package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/index.js +0 -4
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
- package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/rule.js +0 -58
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
- package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
- package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/types.js +0 -2
- package/dist/architecture/index.d.ts.map +0 -1
- package/dist/architecture/index.js +0 -2
- package/dist/benchmark-rules.d.ts +0 -83
- package/dist/benchmark-rules.d.ts.map +0 -1
- package/dist/benchmark-rules.js +0 -175
- package/dist/codeperfect-plugin.d.ts.map +0 -1
- package/dist/codeperfect-plugin.js +0 -29
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/no-multiple-declarators/index.d.ts +0 -2
- package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/index.js +0 -2
- package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/rule.js +0 -100
- package/dist/core/prefer-interface-types/index.d.ts +0 -2
- package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/index.js +0 -2
- package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/rule.js +0 -145
- package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/test-helpers.js +0 -116
- package/dist/custom-rule-documentation.d.ts.map +0 -1
- package/dist/custom-rule-documentation.js +0 -35
- package/dist/custom-rules.d.ts.map +0 -1
- package/dist/custom-rules.js +0 -70
- package/dist/docs/index.d.ts +0 -4
- package/dist/docs/index.d.ts.map +0 -1
- package/dist/docs/index.js +0 -4
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
- package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
- package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/index.js +0 -2
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
- package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/rule.js +0 -168
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/test-helpers.js +0 -157
- package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.js +0 -2
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
- package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
- package/dist/docs/require-example-language/example-utilities.js +0 -76
- package/dist/docs/require-example-language/examples.d.ts.map +0 -1
- package/dist/docs/require-example-language/examples.js +0 -181
- package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/fixes.js +0 -182
- package/dist/docs/require-example-language/index.d.ts +0 -3
- package/dist/docs/require-example-language/index.d.ts.map +0 -1
- package/dist/docs/require-example-language/index.js +0 -2
- package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
- package/dist/docs/require-example-language/reporting.js +0 -145
- package/dist/docs/require-example-language/rule.d.ts.map +0 -1
- package/dist/docs/require-example-language/rule.js +0 -34
- package/dist/docs/require-example-language/types.d.ts.map +0 -1
- package/dist/docs/require-example-language/types.js +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/index.js +0 -2
- package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/rule.js +0 -196
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
- package/dist/docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/test-helpers.js +0 -107
- package/dist/presets.d.ts +0 -10
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -50
- package/dist/rules/index.d.ts +0 -5
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -6
- package/dist/testing/aaa/analyzer.d.ts +0 -36
- package/dist/testing/aaa/analyzer.d.ts.map +0 -1
- package/dist/testing/aaa/analyzer.js +0 -490
- package/dist/testing/aaa/index.d.ts.map +0 -1
- package/dist/testing/aaa/index.js +0 -2
- package/dist/testing/aaa/types.d.ts +0 -31
- package/dist/testing/aaa/types.d.ts.map +0 -1
- package/dist/testing/aaa/types.js +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/index.js +0 -2
- package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/rule.js +0 -54
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
- package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/index.js +0 -2
- package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/rule.js +0 -48
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -9
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
- package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
- package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
- package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
- package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
- package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/index.js +0 -2
- package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/rule.js +0 -111
- package/dist/testing/require-act-result-capture/index.d.ts +0 -2
- package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/index.js +0 -2
- package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/rule.js +0 -34
- package/dist/testing/require-test-companion/index.d.ts +0 -3
- package/dist/testing/require-test-companion/index.d.ts.map +0 -1
- package/dist/testing/require-test-companion/index.js +0 -3
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
- package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
- package/dist/testing/require-test-companion/rule.js +0 -57
- package/dist/testing/require-test-companion/types.d.ts.map +0 -1
- package/dist/testing/require-test-companion/types.js +0 -2
- package/dist/testing/single-act-statement/index.d.ts +0 -2
- package/dist/testing/single-act-statement/index.d.ts.map +0 -1
- package/dist/testing/single-act-statement/index.js +0 -2
- package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
- package/dist/testing/single-act-statement/rule.js +0 -33
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
- /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { preferVitestIncrementalCastsRule } from "./rule.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwcmVmZXJWaXRlc3RJbmNyZW1lbnRhbENhc3RzUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
+
import type { FactoryMatchInput } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Extracts the mock-factory inputs needed for a rewrite attempt.
|
|
5
|
+
* @param callExpression Call expression to inspect.
|
|
6
|
+
* @returns Normalized factory input when the call is supported.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const factoryInput = getFactoryMatchInput(callExpression);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
declare function getFactoryMatchInput(callExpression: TSESTree.CallExpression): FactoryMatchInput | undefined;
|
|
13
|
+
export { getFactoryMatchInput };
|
|
14
|
+
//# sourceMappingURL=match-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-input.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/match-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAyCjB;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAC3B,cAAc,EAAE,QAAQ,CAAC,cAAc,GACtC,iBAAiB,GAAG,SAAS,CAU/B;AA+CD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
+
import { getFactoryReturnExpression, getModuleSpecifier, isVitestMockCall, unwrapExpression, } from "./ast-helpers.js";
|
|
3
|
+
/**
|
|
4
|
+
* Builds normalized match input from a supported factory call.
|
|
5
|
+
* @param mockArguments Supported mock-call arguments.
|
|
6
|
+
* @returns Normalized factory input when the returned value is an object literal.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const factoryInput = buildFactoryMatchInput(mockArguments);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
function buildFactoryMatchInput(mockArguments) {
|
|
13
|
+
const { factoryArgument, moduleArgument } = mockArguments;
|
|
14
|
+
const moduleSpecifier = getModuleSpecifier(moduleArgument);
|
|
15
|
+
const returnExpression = getFactoryReturnExpression(factoryArgument);
|
|
16
|
+
if (moduleSpecifier === void 0 || returnExpression === void 0) {
|
|
17
|
+
return void 0;
|
|
18
|
+
}
|
|
19
|
+
const objectExpression = unwrapExpression(returnExpression);
|
|
20
|
+
return objectExpression.type === TSESTree.AST_NODE_TYPES.ObjectExpression
|
|
21
|
+
? {
|
|
22
|
+
factoryArgument,
|
|
23
|
+
moduleSpecifier,
|
|
24
|
+
objectExpression,
|
|
25
|
+
returnExpression,
|
|
26
|
+
}
|
|
27
|
+
: void 0;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extracts the mock-factory inputs needed for a rewrite attempt.
|
|
31
|
+
* @param callExpression Call expression to inspect.
|
|
32
|
+
* @returns Normalized factory input when the call is supported.
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const factoryInput = getFactoryMatchInput(callExpression);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
function getFactoryMatchInput(callExpression) {
|
|
39
|
+
if (!isVitestMockCall(callExpression)) {
|
|
40
|
+
return void 0;
|
|
41
|
+
}
|
|
42
|
+
const mockArguments = getMockFactoryArguments(callExpression.arguments);
|
|
43
|
+
return mockArguments === void 0
|
|
44
|
+
? void 0
|
|
45
|
+
: buildFactoryMatchInput(mockArguments);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Extracts valid mock-factory arguments from a call expression.
|
|
49
|
+
* @param argumentsList Arguments supplied to the mock call.
|
|
50
|
+
* @returns Normalized arguments when the call shape is supported.
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const mockArguments = getMockFactoryArguments(callExpression.arguments);
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
function getMockFactoryArguments(argumentsList) {
|
|
57
|
+
const [moduleArgument, factoryArgument] = argumentsList;
|
|
58
|
+
if (moduleArgument === void 0 ||
|
|
59
|
+
factoryArgument === void 0 ||
|
|
60
|
+
moduleArgument.type === TSESTree.AST_NODE_TYPES.SpreadElement ||
|
|
61
|
+
factoryArgument.type === TSESTree.AST_NODE_TYPES.SpreadElement ||
|
|
62
|
+
!isFactoryFunctionExpression(factoryArgument)) {
|
|
63
|
+
return void 0;
|
|
64
|
+
}
|
|
65
|
+
return { factoryArgument, moduleArgument };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Determines whether an expression is a supported mock factory function.
|
|
69
|
+
* @param expression Expression to inspect.
|
|
70
|
+
* @returns True when the expression is a function compatible with the fixer.
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const supported = isFactoryFunctionExpression(expression);
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
function isFactoryFunctionExpression(expression) {
|
|
77
|
+
return (expression.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression ||
|
|
78
|
+
expression.type === TSESTree.AST_NODE_TYPES.FunctionExpression);
|
|
79
|
+
}
|
|
80
|
+
export { getFactoryMatchInput };
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRcEQsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2Qjs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLGFBQW1DO0lBRW5DLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEdBQUcsYUFBYSxDQUFDO0lBQzFELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzNELE1BQU0sZ0JBQWdCLEdBQUcsMEJBQTBCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFckUsSUFBSSxlQUFlLEtBQUssS0FBSyxDQUFDLElBQUksZ0JBQWdCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFNUQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0I7UUFDdkUsQ0FBQyxDQUFDO1lBQ0UsZUFBZTtZQUNmLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1NBQ2pCO1FBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsY0FBdUM7SUFFdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsdUJBQXVCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXhFLE9BQU8sYUFBYSxLQUFLLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsdUJBQXVCLENBQzlCLGFBQXlEO0lBRXpELE1BQU0sQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLEdBQUcsYUFBYSxDQUFDO0lBRXhELElBQ0UsY0FBYyxLQUFLLEtBQUssQ0FBQztRQUN6QixlQUFlLEtBQUssS0FBSyxDQUFDO1FBQzFCLGNBQWMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQzdELGVBQWUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQzlELENBQUMsMkJBQTJCLENBQUMsZUFBZSxDQUFDLEVBQzdDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMkJBQTJCLENBQ2xDLFVBQStCO0lBRS9CLE9BQU8sQ0FDTCxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsdUJBQXVCO1FBQ25FLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRTRVNUcmVlIH0gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC91dGlsc1wiO1xyXG5cclxuaW1wb3J0IHR5cGUge1xyXG4gIEZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24sXHJcbiAgRmFjdG9yeU1hdGNoSW5wdXQsXHJcbiAgTW9ja0ZhY3RvcnlBcmd1bWVudHMsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24sXHJcbiAgZ2V0TW9kdWxlU3BlY2lmaWVyLFxyXG4gIGlzVml0ZXN0TW9ja0NhbGwsXHJcbiAgdW53cmFwRXhwcmVzc2lvbixcclxufSBmcm9tIFwiLi9hc3QtaGVscGVyc1wiO1xyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyBub3JtYWxpemVkIG1hdGNoIGlucHV0IGZyb20gYSBzdXBwb3J0ZWQgZmFjdG9yeSBjYWxsLlxyXG4gKiBAcGFyYW0gbW9ja0FyZ3VtZW50cyBTdXBwb3J0ZWQgbW9jay1jYWxsIGFyZ3VtZW50cy5cclxuICogQHJldHVybnMgTm9ybWFsaXplZCBmYWN0b3J5IGlucHV0IHdoZW4gdGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIG9iamVjdCBsaXRlcmFsLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGZhY3RvcnlJbnB1dCA9IGJ1aWxkRmFjdG9yeU1hdGNoSW5wdXQobW9ja0FyZ3VtZW50cyk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYnVpbGRGYWN0b3J5TWF0Y2hJbnB1dChcclxuICBtb2NrQXJndW1lbnRzOiBNb2NrRmFjdG9yeUFyZ3VtZW50cyxcclxuKTogRmFjdG9yeU1hdGNoSW5wdXQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHsgZmFjdG9yeUFyZ3VtZW50LCBtb2R1bGVBcmd1bWVudCB9ID0gbW9ja0FyZ3VtZW50cztcclxuICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBnZXRNb2R1bGVTcGVjaWZpZXIobW9kdWxlQXJndW1lbnQpO1xyXG4gIGNvbnN0IHJldHVybkV4cHJlc3Npb24gPSBnZXRGYWN0b3J5UmV0dXJuRXhwcmVzc2lvbihmYWN0b3J5QXJndW1lbnQpO1xyXG5cclxuICBpZiAobW9kdWxlU3BlY2lmaWVyID09PSB2b2lkIDAgfHwgcmV0dXJuRXhwcmVzc2lvbiA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgb2JqZWN0RXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24ocmV0dXJuRXhwcmVzc2lvbik7XHJcblxyXG4gIHJldHVybiBvYmplY3RFeHByZXNzaW9uLnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLk9iamVjdEV4cHJlc3Npb25cclxuICAgID8ge1xyXG4gICAgICAgIGZhY3RvcnlBcmd1bWVudCxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXIsXHJcbiAgICAgICAgb2JqZWN0RXhwcmVzc2lvbixcclxuICAgICAgICByZXR1cm5FeHByZXNzaW9uLFxyXG4gICAgICB9XHJcbiAgICA6IHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3RzIHRoZSBtb2NrLWZhY3RvcnkgaW5wdXRzIG5lZWRlZCBmb3IgYSByZXdyaXRlIGF0dGVtcHQuXHJcbiAqIEBwYXJhbSBjYWxsRXhwcmVzc2lvbiBDYWxsIGV4cHJlc3Npb24gdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMgTm9ybWFsaXplZCBmYWN0b3J5IGlucHV0IHdoZW4gdGhlIGNhbGwgaXMgc3VwcG9ydGVkLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGZhY3RvcnlJbnB1dCA9IGdldEZhY3RvcnlNYXRjaElucHV0KGNhbGxFeHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRGYWN0b3J5TWF0Y2hJbnB1dChcclxuICBjYWxsRXhwcmVzc2lvbjogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24sXHJcbik6IEZhY3RvcnlNYXRjaElucHV0IHwgdW5kZWZpbmVkIHtcclxuICBpZiAoIWlzVml0ZXN0TW9ja0NhbGwoY2FsbEV4cHJlc3Npb24pKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbW9ja0FyZ3VtZW50cyA9IGdldE1vY2tGYWN0b3J5QXJndW1lbnRzKGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cyk7XHJcblxyXG4gIHJldHVybiBtb2NrQXJndW1lbnRzID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IGJ1aWxkRmFjdG9yeU1hdGNoSW5wdXQobW9ja0FyZ3VtZW50cyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHRyYWN0cyB2YWxpZCBtb2NrLWZhY3RvcnkgYXJndW1lbnRzIGZyb20gYSBjYWxsIGV4cHJlc3Npb24uXHJcbiAqIEBwYXJhbSBhcmd1bWVudHNMaXN0IEFyZ3VtZW50cyBzdXBwbGllZCB0byB0aGUgbW9jayBjYWxsLlxyXG4gKiBAcmV0dXJucyBOb3JtYWxpemVkIGFyZ3VtZW50cyB3aGVuIHRoZSBjYWxsIHNoYXBlIGlzIHN1cHBvcnRlZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtb2NrQXJndW1lbnRzID0gZ2V0TW9ja0ZhY3RvcnlBcmd1bWVudHMoY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRNb2NrRmFjdG9yeUFyZ3VtZW50cyhcclxuICBhcmd1bWVudHNMaXN0OiByZWFkb25seSBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbkFyZ3VtZW50W10sXHJcbik6IE1vY2tGYWN0b3J5QXJndW1lbnRzIHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCBbbW9kdWxlQXJndW1lbnQsIGZhY3RvcnlBcmd1bWVudF0gPSBhcmd1bWVudHNMaXN0O1xyXG5cclxuICBpZiAoXHJcbiAgICBtb2R1bGVBcmd1bWVudCA9PT0gdm9pZCAwIHx8XHJcbiAgICBmYWN0b3J5QXJndW1lbnQgPT09IHZvaWQgMCB8fFxyXG4gICAgbW9kdWxlQXJndW1lbnQudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuU3ByZWFkRWxlbWVudCB8fFxyXG4gICAgZmFjdG9yeUFyZ3VtZW50LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLlNwcmVhZEVsZW1lbnQgfHxcclxuICAgICFpc0ZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24oZmFjdG9yeUFyZ3VtZW50KVxyXG4gICkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIHJldHVybiB7IGZhY3RvcnlBcmd1bWVudCwgbW9kdWxlQXJndW1lbnQgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgd2hldGhlciBhbiBleHByZXNzaW9uIGlzIGEgc3VwcG9ydGVkIG1vY2sgZmFjdG9yeSBmdW5jdGlvbi5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byBpbnNwZWN0LlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGV4cHJlc3Npb24gaXMgYSBmdW5jdGlvbiBjb21wYXRpYmxlIHdpdGggdGhlIGZpeGVyLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHN1cHBvcnRlZCA9IGlzRmFjdG9yeUZ1bmN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0ZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24oXHJcbiAgZXhwcmVzc2lvbjogVFNFU1RyZWUuRXhwcmVzc2lvbixcclxuKTogZXhwcmVzc2lvbiBpcyBGYWN0b3J5RnVuY3Rpb25FeHByZXNzaW9uIHtcclxuICByZXR1cm4gKFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiB8fFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkV4cHJlc3Npb25cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgeyBnZXRGYWN0b3J5TWF0Y2hJbnB1dCB9O1xyXG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CollectMatchContext, MatchResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Collects a fix match for a supported Vitest mock factory call.
|
|
4
|
+
* @param context Match collection context.
|
|
5
|
+
* @returns Match result when the object literal can be safely rewritten.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const match = collectMatch(context);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
declare function collectMatch(context: CollectMatchContext): MatchResult | undefined;
|
|
12
|
+
export { collectMatch };
|
|
13
|
+
//# sourceMappingURL=match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,mBAAmB,EAEnB,WAAW,EAKZ,MAAM,SAAS,CAAC;AA2GjB;;;;;;;;GAQG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,GAAG,SAAS,CAyC3E;AA4GD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { getPropertyName, isSupportedProperty, shouldWrapImplicitObject, } from "./ast-helpers.js";
|
|
2
|
+
import { getFactoryMatchInput } from "./match-input.js";
|
|
3
|
+
import { applyTextReplacements, buildPropertyReplacement, } from "./replacement-helpers.js";
|
|
4
|
+
import { isOuterCastRequired, resolveFactoryTargetType } from "./type-helpers.js";
|
|
5
|
+
/**
|
|
6
|
+
* Records one property replacement when the source text must change.
|
|
7
|
+
* @param propertyNames Property names already handled for the object literal.
|
|
8
|
+
* @param replacements Replacement entries collected so far.
|
|
9
|
+
* @param replacementContext Replacement context for the current property.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* appendPropertyReplacement(new Set(), [], replacementContext);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function appendPropertyReplacement(propertyNames, replacements, replacementContext) {
|
|
16
|
+
propertyNames.add(replacementContext.keyName);
|
|
17
|
+
const replacement = buildPropertyReplacement(replacementContext);
|
|
18
|
+
if (replacement !== void 0) {
|
|
19
|
+
replacements.push(replacement);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Builds the final match result for a rewritten object literal.
|
|
24
|
+
* @param context Data required to build the final replacement.
|
|
25
|
+
* @returns Final match result when the object text changes.
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const match = buildMatchResult(context);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
function buildMatchResult(context) {
|
|
32
|
+
const objectText = applyTextReplacements(context.sourceText.slice(context.objectExpression.range[0], context.objectExpression.range[1]), context.replacements, context.objectExpression.range[0]);
|
|
33
|
+
const replacementText = createReplacementText(context, objectText);
|
|
34
|
+
const originalText = context.sourceText.slice(context.returnExpression.range[0], context.returnExpression.range[1]);
|
|
35
|
+
return originalText === replacementText
|
|
36
|
+
? void 0
|
|
37
|
+
: {
|
|
38
|
+
replacementText,
|
|
39
|
+
returnExpressionRange: context.returnExpression.range,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Collects nested replacements for all supported object literal properties.
|
|
44
|
+
* @param context Data required to analyze supported object properties.
|
|
45
|
+
* @param properties Supported object literal properties to rewrite.
|
|
46
|
+
* @returns Property replacements when every property can be handled safely.
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const collection = buildPropertyReplacementCollection(context, properties);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
function buildPropertyReplacementCollection(context, properties) {
|
|
53
|
+
const propertyNames = new Set();
|
|
54
|
+
const replacements = [];
|
|
55
|
+
const targetProperties = createTargetPropertyMap(context);
|
|
56
|
+
for (const property of properties) {
|
|
57
|
+
const replacementContext = createPropertyReplacementContext(context, property, targetProperties);
|
|
58
|
+
if (replacementContext === void 0) {
|
|
59
|
+
return void 0;
|
|
60
|
+
}
|
|
61
|
+
appendPropertyReplacement(propertyNames, replacements, replacementContext);
|
|
62
|
+
}
|
|
63
|
+
return { propertyNames, replacements };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Collects a fix match for a supported Vitest mock factory call.
|
|
67
|
+
* @param context Match collection context.
|
|
68
|
+
* @returns Match result when the object literal can be safely rewritten.
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const match = collectMatch(context);
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
function collectMatch(context) {
|
|
75
|
+
const factoryMatchInput = getFactoryMatchInput(context.callExpression);
|
|
76
|
+
if (factoryMatchInput === void 0) {
|
|
77
|
+
return void 0;
|
|
78
|
+
}
|
|
79
|
+
const targetType = resolveFactoryTargetType({
|
|
80
|
+
callExpression: context.callExpression,
|
|
81
|
+
checker: context.checker,
|
|
82
|
+
factoryArgument: factoryMatchInput.factoryArgument,
|
|
83
|
+
objectExpression: factoryMatchInput.objectExpression,
|
|
84
|
+
services: context.services,
|
|
85
|
+
});
|
|
86
|
+
if (targetType === void 0) {
|
|
87
|
+
return void 0;
|
|
88
|
+
}
|
|
89
|
+
const collectedReplacements = collectPropertyReplacements({
|
|
90
|
+
checker: context.checker,
|
|
91
|
+
moduleSpecifier: factoryMatchInput.moduleSpecifier,
|
|
92
|
+
objectExpression: factoryMatchInput.objectExpression,
|
|
93
|
+
services: context.services,
|
|
94
|
+
sourceText: context.sourceText,
|
|
95
|
+
targetType,
|
|
96
|
+
});
|
|
97
|
+
return collectedReplacements === void 0
|
|
98
|
+
? void 0
|
|
99
|
+
: buildMatchResult({
|
|
100
|
+
checker: context.checker,
|
|
101
|
+
factoryArgument: factoryMatchInput.factoryArgument,
|
|
102
|
+
moduleSpecifier: factoryMatchInput.moduleSpecifier,
|
|
103
|
+
objectExpression: factoryMatchInput.objectExpression,
|
|
104
|
+
propertyNames: collectedReplacements.propertyNames,
|
|
105
|
+
replacements: collectedReplacements.replacements,
|
|
106
|
+
returnExpression: factoryMatchInput.returnExpression,
|
|
107
|
+
sourceText: context.sourceText,
|
|
108
|
+
targetType,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Collects nested replacements for all supported object literal properties.
|
|
113
|
+
* @param context Data required to analyze supported object properties.
|
|
114
|
+
* @returns Property replacements when every property can be handled safely.
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const collection = collectPropertyReplacements(context);
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
function collectPropertyReplacements(context) {
|
|
121
|
+
const properties = context.objectExpression.properties.filter((property) => isSupportedProperty(property));
|
|
122
|
+
return properties.length === context.objectExpression.properties.length
|
|
123
|
+
? buildPropertyReplacementCollection(context, properties)
|
|
124
|
+
: void 0;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Creates replacement inputs for one supported object literal property.
|
|
128
|
+
* @param context Data required to analyze supported object properties.
|
|
129
|
+
* @param property Supported property from the returned object literal.
|
|
130
|
+
* @param targetProperties Target-property lookup keyed by property name.
|
|
131
|
+
* @returns Replacement inputs when the property can be handled safely.
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const replacementContext = createPropertyReplacementContext(context, property, targetProperties);
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
function createPropertyReplacementContext(context, property, targetProperties) {
|
|
138
|
+
const keyName = getPropertyName(property.key);
|
|
139
|
+
const targetPropertySymbol = keyName === void 0 ? void 0 : targetProperties.get(keyName);
|
|
140
|
+
return keyName === void 0 || targetPropertySymbol === void 0
|
|
141
|
+
? void 0
|
|
142
|
+
: {
|
|
143
|
+
checker: context.checker,
|
|
144
|
+
keyName,
|
|
145
|
+
moduleSpecifier: context.moduleSpecifier,
|
|
146
|
+
property,
|
|
147
|
+
services: context.services,
|
|
148
|
+
sourceText: context.sourceText,
|
|
149
|
+
targetPropertySymbol,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Creates the final replacement text for the returned object expression.
|
|
154
|
+
* @param context Data required to build the final replacement.
|
|
155
|
+
* @param objectText Rewritten object literal text.
|
|
156
|
+
* @returns Final replacement text for the factory return expression.
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* const text = createReplacementText(context, "({})");
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
function createReplacementText(context, objectText) {
|
|
163
|
+
if (isOuterCastRequired({
|
|
164
|
+
checker: context.checker,
|
|
165
|
+
propertyNames: context.propertyNames,
|
|
166
|
+
targetType: context.targetType,
|
|
167
|
+
})) {
|
|
168
|
+
return `(${objectText}) as typeof import(${JSON.stringify(context.moduleSpecifier)})`;
|
|
169
|
+
}
|
|
170
|
+
return shouldWrapImplicitObject(context.factoryArgument, context.returnExpression, context.objectExpression)
|
|
171
|
+
? `(${objectText})`
|
|
172
|
+
: objectText;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Builds the lookup of target properties from the inferred target type.
|
|
176
|
+
* @param context Data required to analyze supported object properties.
|
|
177
|
+
* @returns Target-property lookup keyed by property name.
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* const targetProperties = createTargetPropertyMap(context);
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
function createTargetPropertyMap(context) {
|
|
184
|
+
return new Map(context.checker
|
|
185
|
+
.getPropertiesOfType(context.targetType)
|
|
186
|
+
.map((propertySymbol) => [propertySymbol.getName(), propertySymbol]));
|
|
187
|
+
}
|
|
188
|
+
export { collectMatch };
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsd0JBQXdCLEdBQ3pCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0U7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FDaEMsYUFBMEIsRUFDMUIsWUFBbUMsRUFDbkMsa0JBQW1EO0lBRW5ELGFBQWEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFOUMsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVqRSxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsZ0JBQWdCLENBQ3ZCLE9BQWdDO0lBRWhDLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUN0QyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDdEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDakMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbEMsRUFDRCxPQUFPLENBQUMsWUFBWSxFQUNwQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNsQyxDQUFDO0lBQ0YsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUMzQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNqQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNsQyxDQUFDO0lBRUYsT0FBTyxZQUFZLEtBQUssZUFBZTtRQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDO1lBQ0UsZUFBZTtZQUNmLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO1NBQ3RELENBQUM7QUFDUixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxrQ0FBa0MsQ0FDekMsT0FBMkMsRUFDM0MsVUFBd0M7SUFFeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUN4QyxNQUFNLFlBQVksR0FBMEIsRUFBRSxDQUFDO0lBQy9DLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFMUQsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLGtCQUFrQixHQUFHLGdDQUFnQyxDQUN6RCxPQUFPLEVBQ1AsUUFBUSxFQUNSLGdCQUFnQixDQUNqQixDQUFDO1FBRUYsSUFBSSxrQkFBa0IsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELHlCQUF5QixDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxPQUE0QjtJQUNoRCxNQUFNLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV2RSxJQUFJLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFDMUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1FBQ3RDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixlQUFlLEVBQUUsaUJBQWlCLENBQUMsZUFBZTtRQUNsRCxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0I7UUFDcEQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO0tBQzNCLENBQUMsQ0FBQztJQUVILElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxxQkFBcUIsR0FBRywyQkFBMkIsQ0FBQztRQUN4RCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGVBQWU7UUFDbEQsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCO1FBQ3BELFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtRQUMxQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDOUIsVUFBVTtLQUNYLENBQUMsQ0FBQztJQUVILE9BQU8scUJBQXFCLEtBQUssS0FBSyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsZ0JBQWdCLENBQUM7WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGVBQWU7WUFDbEQsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGVBQWU7WUFDbEQsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCO1lBQ3BELGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxhQUFhO1lBQ2xELFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxZQUFZO1lBQ2hELGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLGdCQUFnQjtZQUNwRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsVUFBVTtTQUNYLENBQUMsQ0FBQztBQUNULENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMkJBQTJCLENBQ2xDLE9BQTJDO0lBRTNDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDekUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQzlCLENBQUM7SUFFRixPQUFPLFVBQVUsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxNQUFNO1FBQ3JFLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO1FBQ3pELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxnQ0FBZ0MsQ0FDdkMsT0FBMkMsRUFDM0MsUUFBMkIsRUFDM0IsZ0JBQW1DO0lBRW5DLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsTUFBTSxvQkFBb0IsR0FDeEIsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlELE9BQU8sT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLG9CQUFvQixLQUFLLEtBQUssQ0FBQztRQUMxRCxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDO1lBQ0UsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLE9BQU87WUFDUCxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsUUFBUTtZQUNSLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUMxQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsb0JBQW9CO1NBQ3JCLENBQUM7QUFDUixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsT0FBZ0MsRUFDaEMsVUFBa0I7SUFFbEIsSUFDRSxtQkFBbUIsQ0FBQztRQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1FBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtLQUMvQixDQUFDLEVBQ0YsQ0FBQztRQUNELE9BQU8sSUFBSSxVQUFVLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUM3QixPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekI7UUFDQyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUc7UUFDbkIsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHVCQUF1QixDQUM5QixPQUEyQztJQUUzQyxPQUFPLElBQUksR0FBRyxDQUNaLE9BQU8sQ0FBQyxPQUFPO1NBQ1osbUJBQW1CLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUN2QyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7QUFDSixDQUFDO0FBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xyXG4gIEJ1aWxkTWF0Y2hSZXN1bHRDb250ZXh0LFxyXG4gIEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbiAgQ29sbGVjdE1hdGNoQ29udGV4dCxcclxuICBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4gIE1hdGNoUmVzdWx0LFxyXG4gIFByb3BlcnR5UmVwbGFjZW1lbnQsXHJcbiAgUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24sXHJcbiAgU3VwcG9ydGVkUHJvcGVydHksXHJcbiAgVGFyZ2V0UHJvcGVydHlNYXAsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgZ2V0UHJvcGVydHlOYW1lLFxyXG4gIGlzU3VwcG9ydGVkUHJvcGVydHksXHJcbiAgc2hvdWxkV3JhcEltcGxpY2l0T2JqZWN0LFxyXG59IGZyb20gXCIuL2FzdC1oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGdldEZhY3RvcnlNYXRjaElucHV0IH0gZnJvbSBcIi4vbWF0Y2gtaW5wdXRcIjtcclxuaW1wb3J0IHtcclxuICBhcHBseVRleHRSZXBsYWNlbWVudHMsXHJcbiAgYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50LFxyXG59IGZyb20gXCIuL3JlcGxhY2VtZW50LWhlbHBlcnNcIjtcclxuaW1wb3J0IHsgaXNPdXRlckNhc3RSZXF1aXJlZCwgcmVzb2x2ZUZhY3RvcnlUYXJnZXRUeXBlIH0gZnJvbSBcIi4vdHlwZS1oZWxwZXJzXCI7XHJcblxyXG4vKipcclxuICogUmVjb3JkcyBvbmUgcHJvcGVydHkgcmVwbGFjZW1lbnQgd2hlbiB0aGUgc291cmNlIHRleHQgbXVzdCBjaGFuZ2UuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVzIFByb3BlcnR5IG5hbWVzIGFscmVhZHkgaGFuZGxlZCBmb3IgdGhlIG9iamVjdCBsaXRlcmFsLlxyXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRzIFJlcGxhY2VtZW50IGVudHJpZXMgY29sbGVjdGVkIHNvIGZhci5cclxuICogQHBhcmFtIHJlcGxhY2VtZW50Q29udGV4dCBSZXBsYWNlbWVudCBjb250ZXh0IGZvciB0aGUgY3VycmVudCBwcm9wZXJ0eS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBhcHBlbmRQcm9wZXJ0eVJlcGxhY2VtZW50KG5ldyBTZXQoKSwgW10sIHJlcGxhY2VtZW50Q29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYXBwZW5kUHJvcGVydHlSZXBsYWNlbWVudChcclxuICBwcm9wZXJ0eU5hbWVzOiBTZXQ8c3RyaW5nPixcclxuICByZXBsYWNlbWVudHM6IFByb3BlcnR5UmVwbGFjZW1lbnRbXSxcclxuICByZXBsYWNlbWVudENvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbik6IHZvaWQge1xyXG4gIHByb3BlcnR5TmFtZXMuYWRkKHJlcGxhY2VtZW50Q29udGV4dC5rZXlOYW1lKTtcclxuXHJcbiAgY29uc3QgcmVwbGFjZW1lbnQgPSBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQocmVwbGFjZW1lbnRDb250ZXh0KTtcclxuXHJcbiAgaWYgKHJlcGxhY2VtZW50ICE9PSB2b2lkIDApIHtcclxuICAgIHJlcGxhY2VtZW50cy5wdXNoKHJlcGxhY2VtZW50KTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgdGhlIGZpbmFsIG1hdGNoIHJlc3VsdCBmb3IgYSByZXdyaXR0ZW4gb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIGZpbmFsIHJlcGxhY2VtZW50LlxyXG4gKiBAcmV0dXJucyBGaW5hbCBtYXRjaCByZXN1bHQgd2hlbiB0aGUgb2JqZWN0IHRleHQgY2hhbmdlcy5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtYXRjaCA9IGJ1aWxkTWF0Y2hSZXN1bHQoY29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYnVpbGRNYXRjaFJlc3VsdChcclxuICBjb250ZXh0OiBCdWlsZE1hdGNoUmVzdWx0Q29udGV4dCxcclxuKTogTWF0Y2hSZXN1bHQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IG9iamVjdFRleHQgPSBhcHBseVRleHRSZXBsYWNlbWVudHMoXHJcbiAgICBjb250ZXh0LnNvdXJjZVRleHQuc2xpY2UoXHJcbiAgICAgIGNvbnRleHQub2JqZWN0RXhwcmVzc2lvbi5yYW5nZVswXSxcclxuICAgICAgY29udGV4dC5vYmplY3RFeHByZXNzaW9uLnJhbmdlWzFdLFxyXG4gICAgKSxcclxuICAgIGNvbnRleHQucmVwbGFjZW1lbnRzLFxyXG4gICAgY29udGV4dC5vYmplY3RFeHByZXNzaW9uLnJhbmdlWzBdLFxyXG4gICk7XHJcbiAgY29uc3QgcmVwbGFjZW1lbnRUZXh0ID0gY3JlYXRlUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQsIG9iamVjdFRleHQpO1xyXG4gIGNvbnN0IG9yaWdpbmFsVGV4dCA9IGNvbnRleHQuc291cmNlVGV4dC5zbGljZShcclxuICAgIGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbi5yYW5nZVswXSxcclxuICAgIGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbi5yYW5nZVsxXSxcclxuICApO1xyXG5cclxuICByZXR1cm4gb3JpZ2luYWxUZXh0ID09PSByZXBsYWNlbWVudFRleHRcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHtcclxuICAgICAgICByZXBsYWNlbWVudFRleHQsXHJcbiAgICAgICAgcmV0dXJuRXhwcmVzc2lvblJhbmdlOiBjb250ZXh0LnJldHVybkV4cHJlc3Npb24ucmFuZ2UsXHJcbiAgICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBuZXN0ZWQgcmVwbGFjZW1lbnRzIGZvciBhbGwgc3VwcG9ydGVkIG9iamVjdCBsaXRlcmFsIHByb3BlcnRpZXMuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYW5hbHl6ZSBzdXBwb3J0ZWQgb2JqZWN0IHByb3BlcnRpZXMuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0aWVzIHRvIHJld3JpdGUuXHJcbiAqIEByZXR1cm5zIFByb3BlcnR5IHJlcGxhY2VtZW50cyB3aGVuIGV2ZXJ5IHByb3BlcnR5IGNhbiBiZSBoYW5kbGVkIHNhZmVseS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBjb2xsZWN0aW9uID0gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbihjb250ZXh0LCBwcm9wZXJ0aWVzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb2xsZWN0aW9uKFxyXG4gIGNvbnRleHQ6IENvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50c0NvbnRleHQsXHJcbiAgcHJvcGVydGllczogcmVhZG9ubHkgU3VwcG9ydGVkUHJvcGVydHlbXSxcclxuKTogUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHByb3BlcnR5TmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICBjb25zdCByZXBsYWNlbWVudHM6IFByb3BlcnR5UmVwbGFjZW1lbnRbXSA9IFtdO1xyXG4gIGNvbnN0IHRhcmdldFByb3BlcnRpZXMgPSBjcmVhdGVUYXJnZXRQcm9wZXJ0eU1hcChjb250ZXh0KTtcclxuXHJcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XHJcbiAgICBjb25zdCByZXBsYWNlbWVudENvbnRleHQgPSBjcmVhdGVQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dChcclxuICAgICAgY29udGV4dCxcclxuICAgICAgcHJvcGVydHksXHJcbiAgICAgIHRhcmdldFByb3BlcnRpZXMsXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChyZXBsYWNlbWVudENvbnRleHQgPT09IHZvaWQgMCkge1xyXG4gICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGVuZFByb3BlcnR5UmVwbGFjZW1lbnQocHJvcGVydHlOYW1lcywgcmVwbGFjZW1lbnRzLCByZXBsYWNlbWVudENvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHsgcHJvcGVydHlOYW1lcywgcmVwbGFjZW1lbnRzIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBhIGZpeCBtYXRjaCBmb3IgYSBzdXBwb3J0ZWQgVml0ZXN0IG1vY2sgZmFjdG9yeSBjYWxsLlxyXG4gKiBAcGFyYW0gY29udGV4dCBNYXRjaCBjb2xsZWN0aW9uIGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIE1hdGNoIHJlc3VsdCB3aGVuIHRoZSBvYmplY3QgbGl0ZXJhbCBjYW4gYmUgc2FmZWx5IHJld3JpdHRlbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtYXRjaCA9IGNvbGxlY3RNYXRjaChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0TWF0Y2goY29udGV4dDogQ29sbGVjdE1hdGNoQ29udGV4dCk6IE1hdGNoUmVzdWx0IHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCBmYWN0b3J5TWF0Y2hJbnB1dCA9IGdldEZhY3RvcnlNYXRjaElucHV0KGNvbnRleHQuY2FsbEV4cHJlc3Npb24pO1xyXG5cclxuICBpZiAoZmFjdG9yeU1hdGNoSW5wdXQgPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IHRhcmdldFR5cGUgPSByZXNvbHZlRmFjdG9yeVRhcmdldFR5cGUoe1xyXG4gICAgY2FsbEV4cHJlc3Npb246IGNvbnRleHQuY2FsbEV4cHJlc3Npb24sXHJcbiAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICBmYWN0b3J5QXJndW1lbnQ6IGZhY3RvcnlNYXRjaElucHV0LmZhY3RvcnlBcmd1bWVudCxcclxuICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICBzZXJ2aWNlczogY29udGV4dC5zZXJ2aWNlcyxcclxuICB9KTtcclxuXHJcbiAgaWYgKHRhcmdldFR5cGUgPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IGNvbGxlY3RlZFJlcGxhY2VtZW50cyA9IGNvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50cyh7XHJcbiAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICBtb2R1bGVTcGVjaWZpZXI6IGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICBzZXJ2aWNlczogY29udGV4dC5zZXJ2aWNlcyxcclxuICAgIHNvdXJjZVRleHQ6IGNvbnRleHQuc291cmNlVGV4dCxcclxuICAgIHRhcmdldFR5cGUsXHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBjb2xsZWN0ZWRSZXBsYWNlbWVudHMgPT09IHZvaWQgMFxyXG4gICAgPyB2b2lkIDBcclxuICAgIDogYnVpbGRNYXRjaFJlc3VsdCh7XHJcbiAgICAgICAgY2hlY2tlcjogY29udGV4dC5jaGVja2VyLFxyXG4gICAgICAgIGZhY3RvcnlBcmd1bWVudDogZmFjdG9yeU1hdGNoSW5wdXQuZmFjdG9yeUFyZ3VtZW50LFxyXG4gICAgICAgIG1vZHVsZVNwZWNpZmllcjogZmFjdG9yeU1hdGNoSW5wdXQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICAgICAgcHJvcGVydHlOYW1lczogY29sbGVjdGVkUmVwbGFjZW1lbnRzLnByb3BlcnR5TmFtZXMsXHJcbiAgICAgICAgcmVwbGFjZW1lbnRzOiBjb2xsZWN0ZWRSZXBsYWNlbWVudHMucmVwbGFjZW1lbnRzLFxyXG4gICAgICAgIHJldHVybkV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0LnJldHVybkV4cHJlc3Npb24sXHJcbiAgICAgICAgc291cmNlVGV4dDogY29udGV4dC5zb3VyY2VUZXh0LFxyXG4gICAgICAgIHRhcmdldFR5cGUsXHJcbiAgICAgIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdHMgbmVzdGVkIHJlcGxhY2VtZW50cyBmb3IgYWxsIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0aWVzLlxyXG4gKiBAcGFyYW0gY29udGV4dCBEYXRhIHJlcXVpcmVkIHRvIGFuYWx5emUgc3VwcG9ydGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxyXG4gKiBAcmV0dXJucyBQcm9wZXJ0eSByZXBsYWNlbWVudHMgd2hlbiBldmVyeSBwcm9wZXJ0eSBjYW4gYmUgaGFuZGxlZCBzYWZlbHkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50cyhjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHMoXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuKTogUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHByb3BlcnRpZXMgPSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5maWx0ZXIoKHByb3BlcnR5KSA9PlxyXG4gICAgaXNTdXBwb3J0ZWRQcm9wZXJ0eShwcm9wZXJ0eSksXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHByb3BlcnRpZXMubGVuZ3RoID09PSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5sZW5ndGhcclxuICAgID8gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbihjb250ZXh0LCBwcm9wZXJ0aWVzKVxyXG4gICAgOiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIHJlcGxhY2VtZW50IGlucHV0cyBmb3Igb25lIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0eS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHBhcmFtIHByb3BlcnR5IFN1cHBvcnRlZCBwcm9wZXJ0eSBmcm9tIHRoZSByZXR1cm5lZCBvYmplY3QgbGl0ZXJhbC5cclxuICogQHBhcmFtIHRhcmdldFByb3BlcnRpZXMgVGFyZ2V0LXByb3BlcnR5IGxvb2t1cCBrZXllZCBieSBwcm9wZXJ0eSBuYW1lLlxyXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudCBpbnB1dHMgd2hlbiB0aGUgcHJvcGVydHkgY2FuIGJlIGhhbmRsZWQgc2FmZWx5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50Q29udGV4dCA9IGNyZWF0ZVByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0KGNvbnRleHQsIHByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0aWVzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dChcclxuICBjb250ZXh0OiBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4gIHByb3BlcnR5OiBTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICB0YXJnZXRQcm9wZXJ0aWVzOiBUYXJnZXRQcm9wZXJ0eU1hcCxcclxuKTogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3Qga2V5TmFtZSA9IGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eS5rZXkpO1xyXG4gIGNvbnN0IHRhcmdldFByb3BlcnR5U3ltYm9sID1cclxuICAgIGtleU5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldFByb3BlcnRpZXMuZ2V0KGtleU5hbWUpO1xyXG5cclxuICByZXR1cm4ga2V5TmFtZSA9PT0gdm9pZCAwIHx8IHRhcmdldFByb3BlcnR5U3ltYm9sID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHtcclxuICAgICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgICAga2V5TmFtZSxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IGNvbnRleHQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgICAgIHByb3BlcnR5LFxyXG4gICAgICAgIHNlcnZpY2VzOiBjb250ZXh0LnNlcnZpY2VzLFxyXG4gICAgICAgIHNvdXJjZVRleHQ6IGNvbnRleHQuc291cmNlVGV4dCxcclxuICAgICAgICB0YXJnZXRQcm9wZXJ0eVN5bWJvbCxcclxuICAgICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIGZpbmFsIHJlcGxhY2VtZW50IHRleHQgZm9yIHRoZSByZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBidWlsZCB0aGUgZmluYWwgcmVwbGFjZW1lbnQuXHJcbiAqIEBwYXJhbSBvYmplY3RUZXh0IFJld3JpdHRlbiBvYmplY3QgbGl0ZXJhbCB0ZXh0LlxyXG4gKiBAcmV0dXJucyBGaW5hbCByZXBsYWNlbWVudCB0ZXh0IGZvciB0aGUgZmFjdG9yeSByZXR1cm4gZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB0ZXh0ID0gY3JlYXRlUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQsIFwiKHt9KVwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZXBsYWNlbWVudFRleHQoXHJcbiAgY29udGV4dDogQnVpbGRNYXRjaFJlc3VsdENvbnRleHQsXHJcbiAgb2JqZWN0VGV4dDogc3RyaW5nLFxyXG4pOiBzdHJpbmcge1xyXG4gIGlmIChcclxuICAgIGlzT3V0ZXJDYXN0UmVxdWlyZWQoe1xyXG4gICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgIHByb3BlcnR5TmFtZXM6IGNvbnRleHQucHJvcGVydHlOYW1lcyxcclxuICAgICAgdGFyZ2V0VHlwZTogY29udGV4dC50YXJnZXRUeXBlLFxyXG4gICAgfSlcclxuICApIHtcclxuICAgIHJldHVybiBgKCR7b2JqZWN0VGV4dH0pIGFzIHR5cGVvZiBpbXBvcnQoJHtKU09OLnN0cmluZ2lmeShjb250ZXh0Lm1vZHVsZVNwZWNpZmllcil9KWA7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc2hvdWxkV3JhcEltcGxpY2l0T2JqZWN0KFxyXG4gICAgY29udGV4dC5mYWN0b3J5QXJndW1lbnQsXHJcbiAgICBjb250ZXh0LnJldHVybkV4cHJlc3Npb24sXHJcbiAgICBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgKVxyXG4gICAgPyBgKCR7b2JqZWN0VGV4dH0pYFxyXG4gICAgOiBvYmplY3RUZXh0O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBsb29rdXAgb2YgdGFyZ2V0IHByb3BlcnRpZXMgZnJvbSB0aGUgaW5mZXJyZWQgdGFyZ2V0IHR5cGUuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYW5hbHl6ZSBzdXBwb3J0ZWQgb2JqZWN0IHByb3BlcnRpZXMuXHJcbiAqIEByZXR1cm5zIFRhcmdldC1wcm9wZXJ0eSBsb29rdXAga2V5ZWQgYnkgcHJvcGVydHkgbmFtZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB0YXJnZXRQcm9wZXJ0aWVzID0gY3JlYXRlVGFyZ2V0UHJvcGVydHlNYXAoY29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlVGFyZ2V0UHJvcGVydHlNYXAoXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuKTogVGFyZ2V0UHJvcGVydHlNYXAge1xyXG4gIHJldHVybiBuZXcgTWFwKFxyXG4gICAgY29udGV4dC5jaGVja2VyXHJcbiAgICAgIC5nZXRQcm9wZXJ0aWVzT2ZUeXBlKGNvbnRleHQudGFyZ2V0VHlwZSlcclxuICAgICAgLm1hcCgocHJvcGVydHlTeW1ib2wpID0+IFtwcm9wZXJ0eVN5bWJvbC5nZXROYW1lKCksIHByb3BlcnR5U3ltYm9sXSksXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IHsgY29sbGVjdE1hdGNoIH07XHJcbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { BuildPropertyReplacementContext, PropertyReplacement } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Applies the collected property replacements in reverse source order.
|
|
4
|
+
* @param text Original object literal source text.
|
|
5
|
+
* @param replacements Replacement operations for the object literal.
|
|
6
|
+
* @param offset Absolute start offset of the object literal.
|
|
7
|
+
* @returns Updated object literal source text.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const objectText = applyTextReplacements(text, replacements, offset);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare function applyTextReplacements(text: string, replacements: readonly PropertyReplacement[], offset: number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Builds the replacement entry when a property's source text must change.
|
|
16
|
+
* @param context Data needed to rewrite one supported object property.
|
|
17
|
+
* @returns Replacement details when the property text changes.
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const replacement = buildPropertyReplacement(context);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
declare function buildPropertyReplacement(context: BuildPropertyReplacementContext): PropertyReplacement | undefined;
|
|
24
|
+
export { applyTextReplacements, buildPropertyReplacement };
|
|
25
|
+
//# sourceMappingURL=replacement-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replacement-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAIjB;;;;;;;;;;GAUG;AACH,iBAAS,qBAAqB,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,mBAAmB,EAAE,EAC5C,MAAM,EAAE,MAAM,GACb,MAAM,CAaR;AAED;;;;;;;;GAQG;AACH,iBAAS,wBAAwB,CAC/B,OAAO,EAAE,+BAA+B,GACvC,mBAAmB,GAAG,SAAS,CAWjC;AA2ED,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { canUseShorthand, unwrapExpression } from "./ast-helpers.js";
|
|
2
|
+
/**
|
|
3
|
+
* Applies the collected property replacements in reverse source order.
|
|
4
|
+
* @param text Original object literal source text.
|
|
5
|
+
* @param replacements Replacement operations for the object literal.
|
|
6
|
+
* @param offset Absolute start offset of the object literal.
|
|
7
|
+
* @returns Updated object literal source text.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const objectText = applyTextReplacements(text, replacements, offset);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function applyTextReplacements(text, replacements, offset) {
|
|
14
|
+
let currentText = text;
|
|
15
|
+
for (const replacement of replacements.toSorted((left, right) => right.range[0] - left.range[0])) {
|
|
16
|
+
const start = replacement.range[0] - offset;
|
|
17
|
+
const end = replacement.range[1] - offset;
|
|
18
|
+
currentText = `${currentText.slice(0, start)}${replacement.replacementText}${currentText.slice(end)}`;
|
|
19
|
+
}
|
|
20
|
+
return currentText;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Builds the replacement entry when a property's source text must change.
|
|
24
|
+
* @param context Data needed to rewrite one supported object property.
|
|
25
|
+
* @returns Replacement details when the property text changes.
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const replacement = buildPropertyReplacement(context);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
function buildPropertyReplacement(context) {
|
|
32
|
+
const replacementText = buildReplacementText(context);
|
|
33
|
+
const propertyRange = context.property.range;
|
|
34
|
+
const originalText = context.sourceText.slice(propertyRange[0], propertyRange[1]);
|
|
35
|
+
return originalText === replacementText
|
|
36
|
+
? void 0
|
|
37
|
+
: { range: propertyRange, replacementText };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Builds the final source text for one object literal property.
|
|
41
|
+
* @param context Property replacement context.
|
|
42
|
+
* @returns Rewritten property text.
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const replacementText = buildReplacementText(context);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
function buildReplacementText(context) {
|
|
49
|
+
const { keyName, moduleSpecifier, property, sourceText } = context;
|
|
50
|
+
const baseValue = unwrapExpression(property.value);
|
|
51
|
+
const baseValueText = sourceText.slice(baseValue.range[0], baseValue.range[1]);
|
|
52
|
+
const keyText = sourceText.slice(property.key.range[0], property.key.range[1]);
|
|
53
|
+
const needsCast = isPropertyCastRequired(context, baseValue);
|
|
54
|
+
const valueText = needsCast
|
|
55
|
+
? `${baseValueText} as ${getPropertyTypeText(moduleSpecifier, keyName)}`
|
|
56
|
+
: baseValueText;
|
|
57
|
+
return canUseShorthand({ baseValue, keyName, needsCast, property })
|
|
58
|
+
? keyName
|
|
59
|
+
: `${keyText}: ${valueText}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Builds the imported property type expression used for a nested cast.
|
|
63
|
+
* @param moduleSpecifier Static module specifier used by the mock.
|
|
64
|
+
* @param keyName Property name being cast.
|
|
65
|
+
* @returns Type expression for the imported property.
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const propertyType = getPropertyTypeText("fixture-module", "parser");
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
function getPropertyTypeText(moduleSpecifier, keyName) {
|
|
72
|
+
return `typeof import(${JSON.stringify(moduleSpecifier)})[${JSON.stringify(keyName)}]`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Determines whether a property value still needs a nested cast.
|
|
76
|
+
* @param context Property replacement context.
|
|
77
|
+
* @param baseValue Unwrapped property value expression.
|
|
78
|
+
* @returns True when the property value is not assignable to the target type.
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const needsCast = isPropertyCastRequired(context, baseValue);
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
function isPropertyCastRequired(context, baseValue) {
|
|
85
|
+
const tsBaseValueNode = context.services.esTreeNodeToTSNodeMap.get(baseValue);
|
|
86
|
+
const tsPropertyKeyNode = context.services.esTreeNodeToTSNodeMap.get(context.property.key);
|
|
87
|
+
const sourceType = context.checker.getTypeAtLocation(tsBaseValueNode);
|
|
88
|
+
const propertyTargetType = context.checker.getTypeOfSymbolAtLocation(context.targetPropertySymbol, tsPropertyKeyNode);
|
|
89
|
+
return !context.checker.isTypeAssignableTo(sourceType, propertyTargetType);
|
|
90
|
+
}
|
|
91
|
+
export { applyTextReplacements, buildPropertyReplacement };
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZW1lbnQtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9wcmVmZXItdml0ZXN0LWluY3JlbWVudGFsLWNhc3RzL3JlcGxhY2VtZW50LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsSUFBWSxFQUNaLFlBQTRDLEVBQzVDLE1BQWM7SUFFZCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFdkIsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUM3QyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDaEQsRUFBRSxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFFMUMsV0FBVyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDeEcsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsd0JBQXdCLENBQy9CLE9BQXdDO0lBRXhDLE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUMzQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQztJQUVGLE9BQU8sWUFBWSxLQUFLLGVBQWU7UUFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNSLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDaEQsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsT0FBd0M7SUFFeEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNuRSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDbEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbkIsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQzlCLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNyQixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDdEIsQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RCxNQUFNLFNBQVMsR0FBRyxTQUFTO1FBQ3pCLENBQUMsQ0FBQyxHQUFHLGFBQWEsT0FBTyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDeEUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUVsQixPQUFPLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxPQUFPO1FBQ1QsQ0FBQyxDQUFDLEdBQUcsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLG1CQUFtQixDQUFDLGVBQXVCLEVBQUUsT0FBZTtJQUNuRSxPQUFPLGlCQUFpQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUN6RixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FDN0IsT0FBd0MsRUFDeEMsU0FBK0Q7SUFFL0QsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUUsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FDbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ3JCLENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FDbEUsT0FBTyxDQUFDLG9CQUFvQixFQUM1QixpQkFBaUIsQ0FDbEIsQ0FBQztJQUVGLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcclxuICBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0LFxyXG4gIFByb3BlcnR5UmVwbGFjZW1lbnQsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7IGNhblVzZVNob3J0aGFuZCwgdW53cmFwRXhwcmVzc2lvbiB9IGZyb20gXCIuL2FzdC1oZWxwZXJzXCI7XHJcblxyXG4vKipcclxuICogQXBwbGllcyB0aGUgY29sbGVjdGVkIHByb3BlcnR5IHJlcGxhY2VtZW50cyBpbiByZXZlcnNlIHNvdXJjZSBvcmRlci5cclxuICogQHBhcmFtIHRleHQgT3JpZ2luYWwgb2JqZWN0IGxpdGVyYWwgc291cmNlIHRleHQuXHJcbiAqIEBwYXJhbSByZXBsYWNlbWVudHMgUmVwbGFjZW1lbnQgb3BlcmF0aW9ucyBmb3IgdGhlIG9iamVjdCBsaXRlcmFsLlxyXG4gKiBAcGFyYW0gb2Zmc2V0IEFic29sdXRlIHN0YXJ0IG9mZnNldCBvZiB0aGUgb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEByZXR1cm5zIFVwZGF0ZWQgb2JqZWN0IGxpdGVyYWwgc291cmNlIHRleHQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3Qgb2JqZWN0VGV4dCA9IGFwcGx5VGV4dFJlcGxhY2VtZW50cyh0ZXh0LCByZXBsYWNlbWVudHMsIG9mZnNldCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYXBwbHlUZXh0UmVwbGFjZW1lbnRzKFxyXG4gIHRleHQ6IHN0cmluZyxcclxuICByZXBsYWNlbWVudHM6IHJlYWRvbmx5IFByb3BlcnR5UmVwbGFjZW1lbnRbXSxcclxuICBvZmZzZXQ6IG51bWJlcixcclxuKTogc3RyaW5nIHtcclxuICBsZXQgY3VycmVudFRleHQgPSB0ZXh0O1xyXG5cclxuICBmb3IgKGNvbnN0IHJlcGxhY2VtZW50IG9mIHJlcGxhY2VtZW50cy50b1NvcnRlZChcclxuICAgIChsZWZ0LCByaWdodCkgPT4gcmlnaHQucmFuZ2VbMF0gLSBsZWZ0LnJhbmdlWzBdLFxyXG4gICkpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gcmVwbGFjZW1lbnQucmFuZ2VbMF0gLSBvZmZzZXQ7XHJcbiAgICBjb25zdCBlbmQgPSByZXBsYWNlbWVudC5yYW5nZVsxXSAtIG9mZnNldDtcclxuXHJcbiAgICBjdXJyZW50VGV4dCA9IGAke2N1cnJlbnRUZXh0LnNsaWNlKDAsIHN0YXJ0KX0ke3JlcGxhY2VtZW50LnJlcGxhY2VtZW50VGV4dH0ke2N1cnJlbnRUZXh0LnNsaWNlKGVuZCl9YDtcclxuICB9XHJcblxyXG4gIHJldHVybiBjdXJyZW50VGV4dDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyB0aGUgcmVwbGFjZW1lbnQgZW50cnkgd2hlbiBhIHByb3BlcnR5J3Mgc291cmNlIHRleHQgbXVzdCBjaGFuZ2UuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgbmVlZGVkIHRvIHJld3JpdGUgb25lIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydHkuXHJcbiAqIEByZXR1cm5zIFJlcGxhY2VtZW50IGRldGFpbHMgd2hlbiB0aGUgcHJvcGVydHkgdGV4dCBjaGFuZ2VzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50ID0gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50KGNvbnRleHQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudChcclxuICBjb250ZXh0OiBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0LFxyXG4pOiBQcm9wZXJ0eVJlcGxhY2VtZW50IHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCByZXBsYWNlbWVudFRleHQgPSBidWlsZFJlcGxhY2VtZW50VGV4dChjb250ZXh0KTtcclxuICBjb25zdCBwcm9wZXJ0eVJhbmdlID0gY29udGV4dC5wcm9wZXJ0eS5yYW5nZTtcclxuICBjb25zdCBvcmlnaW5hbFRleHQgPSBjb250ZXh0LnNvdXJjZVRleHQuc2xpY2UoXHJcbiAgICBwcm9wZXJ0eVJhbmdlWzBdLFxyXG4gICAgcHJvcGVydHlSYW5nZVsxXSxcclxuICApO1xyXG5cclxuICByZXR1cm4gb3JpZ2luYWxUZXh0ID09PSByZXBsYWNlbWVudFRleHRcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHsgcmFuZ2U6IHByb3BlcnR5UmFuZ2UsIHJlcGxhY2VtZW50VGV4dCB9O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBmaW5hbCBzb3VyY2UgdGV4dCBmb3Igb25lIG9iamVjdCBsaXRlcmFsIHByb3BlcnR5LlxyXG4gKiBAcGFyYW0gY29udGV4dCBQcm9wZXJ0eSByZXBsYWNlbWVudCBjb250ZXh0LlxyXG4gKiBAcmV0dXJucyBSZXdyaXR0ZW4gcHJvcGVydHkgdGV4dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCByZXBsYWNlbWVudFRleHQgPSBidWlsZFJlcGxhY2VtZW50VGV4dChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZFJlcGxhY2VtZW50VGV4dChcclxuICBjb250ZXh0OiBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0LFxyXG4pOiBzdHJpbmcge1xyXG4gIGNvbnN0IHsga2V5TmFtZSwgbW9kdWxlU3BlY2lmaWVyLCBwcm9wZXJ0eSwgc291cmNlVGV4dCB9ID0gY29udGV4dDtcclxuICBjb25zdCBiYXNlVmFsdWUgPSB1bndyYXBFeHByZXNzaW9uKHByb3BlcnR5LnZhbHVlKTtcclxuICBjb25zdCBiYXNlVmFsdWVUZXh0ID0gc291cmNlVGV4dC5zbGljZShcclxuICAgIGJhc2VWYWx1ZS5yYW5nZVswXSxcclxuICAgIGJhc2VWYWx1ZS5yYW5nZVsxXSxcclxuICApO1xyXG4gIGNvbnN0IGtleVRleHQgPSBzb3VyY2VUZXh0LnNsaWNlKFxyXG4gICAgcHJvcGVydHkua2V5LnJhbmdlWzBdLFxyXG4gICAgcHJvcGVydHkua2V5LnJhbmdlWzFdLFxyXG4gICk7XHJcbiAgY29uc3QgbmVlZHNDYXN0ID0gaXNQcm9wZXJ0eUNhc3RSZXF1aXJlZChjb250ZXh0LCBiYXNlVmFsdWUpO1xyXG4gIGNvbnN0IHZhbHVlVGV4dCA9IG5lZWRzQ2FzdFxyXG4gICAgPyBgJHtiYXNlVmFsdWVUZXh0fSBhcyAke2dldFByb3BlcnR5VHlwZVRleHQobW9kdWxlU3BlY2lmaWVyLCBrZXlOYW1lKX1gXHJcbiAgICA6IGJhc2VWYWx1ZVRleHQ7XHJcblxyXG4gIHJldHVybiBjYW5Vc2VTaG9ydGhhbmQoeyBiYXNlVmFsdWUsIGtleU5hbWUsIG5lZWRzQ2FzdCwgcHJvcGVydHkgfSlcclxuICAgID8ga2V5TmFtZVxyXG4gICAgOiBgJHtrZXlUZXh0fTogJHt2YWx1ZVRleHR9YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyB0aGUgaW1wb3J0ZWQgcHJvcGVydHkgdHlwZSBleHByZXNzaW9uIHVzZWQgZm9yIGEgbmVzdGVkIGNhc3QuXHJcbiAqIEBwYXJhbSBtb2R1bGVTcGVjaWZpZXIgU3RhdGljIG1vZHVsZSBzcGVjaWZpZXIgdXNlZCBieSB0aGUgbW9jay5cclxuICogQHBhcmFtIGtleU5hbWUgUHJvcGVydHkgbmFtZSBiZWluZyBjYXN0LlxyXG4gKiBAcmV0dXJucyBUeXBlIGV4cHJlc3Npb24gZm9yIHRoZSBpbXBvcnRlZCBwcm9wZXJ0eS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBwcm9wZXJ0eVR5cGUgPSBnZXRQcm9wZXJ0eVR5cGVUZXh0KFwiZml4dHVyZS1tb2R1bGVcIiwgXCJwYXJzZXJcIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UHJvcGVydHlUeXBlVGV4dChtb2R1bGVTcGVjaWZpZXI6IHN0cmluZywga2V5TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYHR5cGVvZiBpbXBvcnQoJHtKU09OLnN0cmluZ2lmeShtb2R1bGVTcGVjaWZpZXIpfSlbJHtKU09OLnN0cmluZ2lmeShrZXlOYW1lKX1dYDtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgd2hldGhlciBhIHByb3BlcnR5IHZhbHVlIHN0aWxsIG5lZWRzIGEgbmVzdGVkIGNhc3QuXHJcbiAqIEBwYXJhbSBjb250ZXh0IFByb3BlcnR5IHJlcGxhY2VtZW50IGNvbnRleHQuXHJcbiAqIEBwYXJhbSBiYXNlVmFsdWUgVW53cmFwcGVkIHByb3BlcnR5IHZhbHVlIGV4cHJlc3Npb24uXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgcHJvcGVydHkgdmFsdWUgaXMgbm90IGFzc2lnbmFibGUgdG8gdGhlIHRhcmdldCB0eXBlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG5lZWRzQ2FzdCA9IGlzUHJvcGVydHlDYXN0UmVxdWlyZWQoY29udGV4dCwgYmFzZVZhbHVlKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1Byb3BlcnR5Q2FzdFJlcXVpcmVkKFxyXG4gIGNvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbiAgYmFzZVZhbHVlOiBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0W1wicHJvcGVydHlcIl1bXCJ2YWx1ZVwiXSxcclxuKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgdHNCYXNlVmFsdWVOb2RlID0gY29udGV4dC5zZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KGJhc2VWYWx1ZSk7XHJcbiAgY29uc3QgdHNQcm9wZXJ0eUtleU5vZGUgPSBjb250ZXh0LnNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQoXHJcbiAgICBjb250ZXh0LnByb3BlcnR5LmtleSxcclxuICApO1xyXG4gIGNvbnN0IHNvdXJjZVR5cGUgPSBjb250ZXh0LmNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNCYXNlVmFsdWVOb2RlKTtcclxuICBjb25zdCBwcm9wZXJ0eVRhcmdldFR5cGUgPSBjb250ZXh0LmNoZWNrZXIuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihcclxuICAgIGNvbnRleHQudGFyZ2V0UHJvcGVydHlTeW1ib2wsXHJcbiAgICB0c1Byb3BlcnR5S2V5Tm9kZSxcclxuICApO1xyXG5cclxuICByZXR1cm4gIWNvbnRleHQuY2hlY2tlci5pc1R5cGVBc3NpZ25hYmxlVG8oc291cmNlVHlwZSwgcHJvcGVydHlUYXJnZXRUeXBlKTtcclxufVxyXG5cclxuZXhwb3J0IHsgYXBwbHlUZXh0UmVwbGFjZW1lbnRzLCBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQgfTtcclxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Linter } from "eslint";
|
|
2
|
+
/** Type definition for rule data. */
|
|
3
|
+
interface FixRunResult {
|
|
4
|
+
/** Lint messages produced during the run. */
|
|
5
|
+
messages: Linter.LintMessage[];
|
|
6
|
+
/** Output code after fixes. */
|
|
7
|
+
output: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Removes temporary fixture projects created during rule tests.
|
|
11
|
+
* @returns Promise that resolves after cleanup completes.
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* await cleanupTemporaryDirectories();
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare const cleanupTemporaryDirectories: () => Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Runs the rule with autofix enabled inside a temporary typed fixture project.
|
|
20
|
+
* @param code Source code passed to ESLint.
|
|
21
|
+
* @param declarationText Ambient declarations used by the fixture project.
|
|
22
|
+
* @returns Fixed output and lint messages.
|
|
23
|
+
* @throws {Error} When ESLint does not return a lint result.
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const result = await runFix("vi.doMock(import(\"fixture-module\"), () => ({}));\n");
|
|
27
|
+
* void result;
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
declare const runFix: (code: string, declarationText?: string) => Promise<FixRunResult>;
|
|
31
|
+
export { cleanupTemporaryDirectories, runFix };
|
|
32
|
+
//# sourceMappingURL=rule-test-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUrC,qCAAqC;AACrC,UAAU,YAAY;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAE/B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAgJD;;;;;;;GAOG;AACH,QAAA,MAAM,2BAA2B,QAAa,OAAO,CAAC,IAAI,CAQzD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,MAAM,GACV,MAAM,MAAM,EACZ,wBAAwC,KACvC,OAAO,CAAC,YAAY,CAuBtB,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC"}
|