@codeperfect/eslint-plugin 2.1.0 → 2.3.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 +3 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/application/custom-rules.d.ts +8 -8
- package/dist/application/custom-rules.js +14 -14
- package/dist/application/index.d.ts +1 -1
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +2 -2
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +3 -4
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +5 -3
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +17 -7
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +29 -2
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +2 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/index.js +3 -1
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +247 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +136 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/rule.js +1 -2
- package/dist/domain/architecture/index.d.ts +2 -1
- package/dist/domain/architecture/index.d.ts.map +1 -1
- package/dist/domain/architecture/index.js +3 -2
- package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
- package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/index.js +2 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +612 -0
- package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
- package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
- package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
- package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/types.js +2 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/rule.js +53 -4
- package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
- package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/types.js +5 -2
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
- package/dist/domain/core/prefer-interface-types/rule.js +90 -22
- package/dist/domain/custom-rule-documentation.d.ts +1 -14
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
- package/dist/domain/custom-rule-documentation.js +2 -2
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/rule.js +7 -2
- package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/examples.js +119 -26
- package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/fixes.js +5 -2
- package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/reporting.js +2 -2
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/rule.js +2 -1
- package/dist/domain/docs/require-example-language/types.d.ts +1 -1
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/types.js +1 -1
- package/dist/domain/docs/single-line-jsdoc/rule.js +8 -8
- package/dist/domain/index.d.ts +2 -3
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +3 -4
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts +1 -19
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +8 -31
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +18 -22
- package/dist/domain/testing/aaa/analyzer.analysis.js +46 -39
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -17
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +1 -3
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +3 -4
- package/dist/domain/testing/aaa/analyzer.assertions.js +5 -33
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +1 -3
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +6 -5
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -15
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +1 -3
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +5 -6
- package/dist/domain/testing/aaa/analyzer.classification.js +5 -31
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +1 -3
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.traversal.js +3 -5
- package/dist/domain/testing/aaa/analyzer.super.d.ts +1 -7
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +1 -14
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.super.helpers.js +2 -4
- package/dist/domain/testing/aaa/analyzer.super.js +5 -20
- package/dist/domain/testing/aaa/index.d.ts +1 -2
- package/dist/domain/testing/aaa/index.d.ts.map +1 -1
- package/dist/domain/testing/aaa/index.js +2 -2
- package/dist/domain/testing/aaa/types.d.ts +1 -1
- package/dist/domain/testing/aaa/types.d.ts.map +1 -1
- package/dist/domain/testing/aaa/types.js +1 -1
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
- package/dist/domain/testing/assert-actual-expected-names/rule.js +28 -3
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
- package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/rule.js +166 -7
- package/dist/domain/testing/index.d.ts +0 -3
- package/dist/domain/testing/index.d.ts.map +1 -1
- package/dist/domain/testing/index.js +1 -4
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-act-result-capture/rule.js +37 -8
- package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
- package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/index.js +1 -2
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/rule.js +7 -7
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
- package/dist/domain/testing/single-act-statement/rule.js +6 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
- package/dist/infrastructure/codeperfect-plugin.js +5 -5
- package/dist/infrastructure/presets.d.ts.map +1 -1
- package/dist/infrastructure/presets.js +23 -7
- package/package.json +24 -31
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
- package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
- package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
- package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
- package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
- package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
- package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
- package/dist/domain/docs/test-helpers.d.ts +0 -50
- package/dist/domain/docs/test-helpers.d.ts.map +0 -1
- package/dist/domain/docs/test-helpers.js +0 -107
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +0 -4
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +0 -1
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +0 -4
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +0 -4
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +0 -1
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +0 -4
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
- package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +0 -4
- package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +0 -1
- package/dist/domain/testing/aaa/analyzer.classification.mutations.js +0 -4
- package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
- package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
- package/dist/domain/testing/aaa/analyzer.js +0 -59
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +0 -4
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +0 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +0 -4
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +0 -4
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +0 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +0 -4
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -37
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -97
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -174
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -84
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -195
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -96
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -88
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -187
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
- package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
- package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
- package/dist/domain/testing/require-aaa-sections/index.js +0 -2
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
- package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
- package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
- package/dist/domain/testing/require-aaa-sections/rule.js +0 -134
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
- package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -216
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { preferVitestIncrementalCastsRule } from "./rule.js";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwcmVmZXJWaXRlc3RJbmNyZW1lbnRhbENhc3RzUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbiJdfQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;AAgDjB;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAC3B,cAAc,EAAE,QAAQ,CAAC,cAAc,GACtC,iBAAiB,GAAG,SAAS,CAU/B;AA+CD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
-
import { getFactoryReturnExpression, getModuleSpecifier, hasEscapeHatchCast, 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
|
-
if (objectExpression.type !== TSESTree.AST_NODE_TYPES.ObjectExpression ||
|
|
21
|
-
(returnExpression !== objectExpression &&
|
|
22
|
-
!hasEscapeHatchCast(returnExpression))) {
|
|
23
|
-
return void 0;
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
factoryArgument,
|
|
27
|
-
moduleSpecifier,
|
|
28
|
-
objectExpression,
|
|
29
|
-
returnExpression,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Extracts the mock-factory inputs needed for a rewrite attempt.
|
|
34
|
-
* @param callExpression Call expression to inspect.
|
|
35
|
-
* @returns Normalized factory input when the call is supported.
|
|
36
|
-
* @example
|
|
37
|
-
* ```typescript
|
|
38
|
-
* const factoryInput = getFactoryMatchInput(callExpression);
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
function getFactoryMatchInput(callExpression) {
|
|
42
|
-
if (!isVitestMockCall(callExpression)) {
|
|
43
|
-
return void 0;
|
|
44
|
-
}
|
|
45
|
-
const mockArguments = getMockFactoryArguments(callExpression.arguments);
|
|
46
|
-
return mockArguments === void 0
|
|
47
|
-
? void 0
|
|
48
|
-
: buildFactoryMatchInput(mockArguments);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Extracts valid mock-factory arguments from a call expression.
|
|
52
|
-
* @param argumentsList Arguments supplied to the mock call.
|
|
53
|
-
* @returns Normalized arguments when the call shape is supported.
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* const mockArguments = getMockFactoryArguments(callExpression.arguments);
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
function getMockFactoryArguments(argumentsList) {
|
|
60
|
-
const [moduleArgument, factoryArgument] = argumentsList;
|
|
61
|
-
if (moduleArgument === void 0 ||
|
|
62
|
-
factoryArgument === void 0 ||
|
|
63
|
-
moduleArgument.type === TSESTree.AST_NODE_TYPES.SpreadElement ||
|
|
64
|
-
factoryArgument.type === TSESTree.AST_NODE_TYPES.SpreadElement ||
|
|
65
|
-
!isFactoryFunctionExpression(factoryArgument)) {
|
|
66
|
-
return void 0;
|
|
67
|
-
}
|
|
68
|
-
return { factoryArgument, moduleArgument };
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Determines whether an expression is a supported mock factory function.
|
|
72
|
-
* @param expression Expression to inspect.
|
|
73
|
-
* @returns True when the expression is a function compatible with the fixer.
|
|
74
|
-
* @example
|
|
75
|
-
* ```typescript
|
|
76
|
-
* const supported = isFactoryFunctionExpression(expression);
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
function isFactoryFunctionExpression(expression) {
|
|
80
|
-
return (expression.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression ||
|
|
81
|
-
expression.type === TSESTree.AST_NODE_TYPES.FunctionExpression);
|
|
82
|
-
}
|
|
83
|
-
export { getFactoryMatchInput };
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRcEQsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkI7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHNCQUFzQixDQUM3QixhQUFtQztJQUVuQyxNQUFNLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxHQUFHLGFBQWEsQ0FBQztJQUMxRCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRCxNQUFNLGdCQUFnQixHQUFHLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXJFLElBQUksZUFBZSxLQUFLLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUQsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTVELElBQ0UsZ0JBQWdCLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCO1FBQ2xFLENBQUMsZ0JBQWdCLEtBQUssZ0JBQWdCO1lBQ3BDLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUN4QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTztRQUNMLGVBQWU7UUFDZixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsY0FBdUM7SUFFdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsdUJBQXVCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXhFLE9BQU8sYUFBYSxLQUFLLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsdUJBQXVCLENBQzlCLGFBQXlEO0lBRXpELE1BQU0sQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLEdBQUcsYUFBYSxDQUFDO0lBRXhELElBQ0UsY0FBYyxLQUFLLEtBQUssQ0FBQztRQUN6QixlQUFlLEtBQUssS0FBSyxDQUFDO1FBQzFCLGNBQWMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQzdELGVBQWUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQzlELENBQUMsMkJBQTJCLENBQUMsZUFBZSxDQUFDLEVBQzdDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMkJBQTJCLENBQ2xDLFVBQStCO0lBRS9CLE9BQU8sQ0FDTCxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsdUJBQXVCO1FBQ25FLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRTRVNUcmVlIH0gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC91dGlsc1wiO1xyXG5cclxuaW1wb3J0IHR5cGUge1xyXG4gIEZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24sXHJcbiAgRmFjdG9yeU1hdGNoSW5wdXQsXHJcbiAgTW9ja0ZhY3RvcnlBcmd1bWVudHMsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24sXHJcbiAgZ2V0TW9kdWxlU3BlY2lmaWVyLFxyXG4gIGhhc0VzY2FwZUhhdGNoQ2FzdCxcclxuICBpc1ZpdGVzdE1vY2tDYWxsLFxyXG4gIHVud3JhcEV4cHJlc3Npb24sXHJcbn0gZnJvbSBcIi4vYXN0LWhlbHBlcnNcIjtcclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgbm9ybWFsaXplZCBtYXRjaCBpbnB1dCBmcm9tIGEgc3VwcG9ydGVkIGZhY3RvcnkgY2FsbC5cclxuICogQHBhcmFtIG1vY2tBcmd1bWVudHMgU3VwcG9ydGVkIG1vY2stY2FsbCBhcmd1bWVudHMuXHJcbiAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgZmFjdG9yeSBpbnB1dCB3aGVuIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbiBvYmplY3QgbGl0ZXJhbC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBmYWN0b3J5SW5wdXQgPSBidWlsZEZhY3RvcnlNYXRjaElucHV0KG1vY2tBcmd1bWVudHMpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkRmFjdG9yeU1hdGNoSW5wdXQoXHJcbiAgbW9ja0FyZ3VtZW50czogTW9ja0ZhY3RvcnlBcmd1bWVudHMsXHJcbik6IEZhY3RvcnlNYXRjaElucHV0IHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCB7IGZhY3RvcnlBcmd1bWVudCwgbW9kdWxlQXJndW1lbnQgfSA9IG1vY2tBcmd1bWVudHM7XHJcbiAgY29uc3QgbW9kdWxlU3BlY2lmaWVyID0gZ2V0TW9kdWxlU3BlY2lmaWVyKG1vZHVsZUFyZ3VtZW50KTtcclxuICBjb25zdCByZXR1cm5FeHByZXNzaW9uID0gZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24oZmFjdG9yeUFyZ3VtZW50KTtcclxuXHJcbiAgaWYgKG1vZHVsZVNwZWNpZmllciA9PT0gdm9pZCAwIHx8IHJldHVybkV4cHJlc3Npb24gPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IG9iamVjdEV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKHJldHVybkV4cHJlc3Npb24pO1xyXG5cclxuICBpZiAoXHJcbiAgICBvYmplY3RFeHByZXNzaW9uLnR5cGUgIT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLk9iamVjdEV4cHJlc3Npb24gfHxcclxuICAgIChyZXR1cm5FeHByZXNzaW9uICE9PSBvYmplY3RFeHByZXNzaW9uICYmXHJcbiAgICAgICFoYXNFc2NhcGVIYXRjaENhc3QocmV0dXJuRXhwcmVzc2lvbikpXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGZhY3RvcnlBcmd1bWVudCxcclxuICAgIG1vZHVsZVNwZWNpZmllcixcclxuICAgIG9iamVjdEV4cHJlc3Npb24sXHJcbiAgICByZXR1cm5FeHByZXNzaW9uLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHRyYWN0cyB0aGUgbW9jay1mYWN0b3J5IGlucHV0cyBuZWVkZWQgZm9yIGEgcmV3cml0ZSBhdHRlbXB0LlxyXG4gKiBAcGFyYW0gY2FsbEV4cHJlc3Npb24gQ2FsbCBleHByZXNzaW9uIHRvIGluc3BlY3QuXHJcbiAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgZmFjdG9yeSBpbnB1dCB3aGVuIHRoZSBjYWxsIGlzIHN1cHBvcnRlZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBmYWN0b3J5SW5wdXQgPSBnZXRGYWN0b3J5TWF0Y2hJbnB1dChjYWxsRXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RmFjdG9yeU1hdGNoSW5wdXQoXHJcbiAgY2FsbEV4cHJlc3Npb246IFRTRVNUcmVlLkNhbGxFeHByZXNzaW9uLFxyXG4pOiBGYWN0b3J5TWF0Y2hJbnB1dCB8IHVuZGVmaW5lZCB7XHJcbiAgaWYgKCFpc1ZpdGVzdE1vY2tDYWxsKGNhbGxFeHByZXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IG1vY2tBcmd1bWVudHMgPSBnZXRNb2NrRmFjdG9yeUFyZ3VtZW50cyhjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMpO1xyXG5cclxuICByZXR1cm4gbW9ja0FyZ3VtZW50cyA9PT0gdm9pZCAwXHJcbiAgICA/IHZvaWQgMFxyXG4gICAgOiBidWlsZEZhY3RvcnlNYXRjaElucHV0KG1vY2tBcmd1bWVudHMpO1xyXG59XHJcblxyXG4vKipcclxuICogRXh0cmFjdHMgdmFsaWQgbW9jay1mYWN0b3J5IGFyZ3VtZW50cyBmcm9tIGEgY2FsbCBleHByZXNzaW9uLlxyXG4gKiBAcGFyYW0gYXJndW1lbnRzTGlzdCBBcmd1bWVudHMgc3VwcGxpZWQgdG8gdGhlIG1vY2sgY2FsbC5cclxuICogQHJldHVybnMgTm9ybWFsaXplZCBhcmd1bWVudHMgd2hlbiB0aGUgY2FsbCBzaGFwZSBpcyBzdXBwb3J0ZWQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbW9ja0FyZ3VtZW50cyA9IGdldE1vY2tGYWN0b3J5QXJndW1lbnRzKGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cyk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0TW9ja0ZhY3RvcnlBcmd1bWVudHMoXHJcbiAgYXJndW1lbnRzTGlzdDogcmVhZG9ubHkgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb25Bcmd1bWVudFtdLFxyXG4pOiBNb2NrRmFjdG9yeUFyZ3VtZW50cyB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3QgW21vZHVsZUFyZ3VtZW50LCBmYWN0b3J5QXJndW1lbnRdID0gYXJndW1lbnRzTGlzdDtcclxuXHJcbiAgaWYgKFxyXG4gICAgbW9kdWxlQXJndW1lbnQgPT09IHZvaWQgMCB8fFxyXG4gICAgZmFjdG9yeUFyZ3VtZW50ID09PSB2b2lkIDAgfHxcclxuICAgIG1vZHVsZUFyZ3VtZW50LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLlNwcmVhZEVsZW1lbnQgfHxcclxuICAgIGZhY3RvcnlBcmd1bWVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5TcHJlYWRFbGVtZW50IHx8XHJcbiAgICAhaXNGYWN0b3J5RnVuY3Rpb25FeHByZXNzaW9uKGZhY3RvcnlBcmd1bWVudClcclxuICApIHtcclxuICAgIHJldHVybiB2b2lkIDA7XHJcbiAgfVxyXG5cclxuICByZXR1cm4geyBmYWN0b3J5QXJndW1lbnQsIG1vZHVsZUFyZ3VtZW50IH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBpcyBhIHN1cHBvcnRlZCBtb2NrIGZhY3RvcnkgZnVuY3Rpb24uXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIEV4cHJlc3Npb24gdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBleHByZXNzaW9uIGlzIGEgZnVuY3Rpb24gY29tcGF0aWJsZSB3aXRoIHRoZSBmaXhlci5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBzdXBwb3J0ZWQgPSBpc0ZhY3RvcnlGdW5jdGlvbkV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNGYWN0b3J5RnVuY3Rpb25FeHByZXNzaW9uKFxyXG4gIGV4cHJlc3Npb246IFRTRVNUcmVlLkV4cHJlc3Npb24sXHJcbik6IGV4cHJlc3Npb24gaXMgRmFjdG9yeUZ1bmN0aW9uRXhwcmVzc2lvbiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGV4cHJlc3Npb24udHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gfHxcclxuICAgIGV4cHJlc3Npb24udHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuRnVuY3Rpb25FeHByZXNzaW9uXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IHsgZ2V0RmFjdG9yeU1hdGNoSW5wdXQgfTtcclxuIl19
|
|
@@ -1,13 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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,CA+C3E;AAkHD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,195 +0,0 @@
|
|
|
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
|
-
namespaceAlias: context.namespaceImports.get(factoryMatchInput.moduleSpecifier),
|
|
93
|
-
objectExpression: factoryMatchInput.objectExpression,
|
|
94
|
-
services: context.services,
|
|
95
|
-
sourceText: context.sourceText,
|
|
96
|
-
targetType,
|
|
97
|
-
});
|
|
98
|
-
return collectedReplacements === void 0
|
|
99
|
-
? void 0
|
|
100
|
-
: buildMatchResult({
|
|
101
|
-
checker: context.checker,
|
|
102
|
-
factoryArgument: factoryMatchInput.factoryArgument,
|
|
103
|
-
moduleSpecifier: factoryMatchInput.moduleSpecifier,
|
|
104
|
-
namespaceAlias: context.namespaceImports.get(factoryMatchInput.moduleSpecifier),
|
|
105
|
-
objectExpression: factoryMatchInput.objectExpression,
|
|
106
|
-
propertyNames: collectedReplacements.propertyNames,
|
|
107
|
-
replacements: collectedReplacements.replacements,
|
|
108
|
-
returnExpression: factoryMatchInput.returnExpression,
|
|
109
|
-
sourceText: context.sourceText,
|
|
110
|
-
targetType,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Collects nested replacements for all supported object literal properties.
|
|
115
|
-
* @param context Data required to analyze supported object properties.
|
|
116
|
-
* @returns Property replacements when every property can be handled safely.
|
|
117
|
-
* @example
|
|
118
|
-
* ```typescript
|
|
119
|
-
* const collection = collectPropertyReplacements(context);
|
|
120
|
-
* ```
|
|
121
|
-
*/
|
|
122
|
-
function collectPropertyReplacements(context) {
|
|
123
|
-
const properties = context.objectExpression.properties.filter((property) => isSupportedProperty(property));
|
|
124
|
-
return properties.length === context.objectExpression.properties.length
|
|
125
|
-
? buildPropertyReplacementCollection(context, properties)
|
|
126
|
-
: void 0;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Creates replacement inputs for one supported object literal property.
|
|
130
|
-
* @param context Data required to analyze supported object properties.
|
|
131
|
-
* @param property Supported property from the returned object literal.
|
|
132
|
-
* @param targetProperties Target-property lookup keyed by property name.
|
|
133
|
-
* @returns Replacement inputs when the property can be handled safely.
|
|
134
|
-
* @example
|
|
135
|
-
* ```typescript
|
|
136
|
-
* const replacementContext = createPropertyReplacementContext(context, property, targetProperties);
|
|
137
|
-
* ```
|
|
138
|
-
*/
|
|
139
|
-
function createPropertyReplacementContext(context, property, targetProperties) {
|
|
140
|
-
const keyName = getPropertyName(property.key);
|
|
141
|
-
const targetPropertySymbol = keyName === void 0 ? void 0 : targetProperties.get(keyName);
|
|
142
|
-
return keyName === void 0 || targetPropertySymbol === void 0
|
|
143
|
-
? void 0
|
|
144
|
-
: {
|
|
145
|
-
checker: context.checker,
|
|
146
|
-
keyName,
|
|
147
|
-
moduleSpecifier: context.moduleSpecifier,
|
|
148
|
-
namespaceAlias: context.namespaceAlias,
|
|
149
|
-
property,
|
|
150
|
-
services: context.services,
|
|
151
|
-
sourceText: context.sourceText,
|
|
152
|
-
targetPropertySymbol,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Creates the final replacement text for the returned object expression.
|
|
157
|
-
* @param context Data required to build the final replacement.
|
|
158
|
-
* @param objectText Rewritten object literal text.
|
|
159
|
-
* @returns Final replacement text for the factory return expression.
|
|
160
|
-
* @example
|
|
161
|
-
* ```typescript
|
|
162
|
-
* const text = createReplacementText(context, "({})");
|
|
163
|
-
* ```
|
|
164
|
-
*/
|
|
165
|
-
function createReplacementText(context, objectText) {
|
|
166
|
-
if (isOuterCastRequired({
|
|
167
|
-
checker: context.checker,
|
|
168
|
-
propertyNames: context.propertyNames,
|
|
169
|
-
targetType: context.targetType,
|
|
170
|
-
})) {
|
|
171
|
-
const moduleReference = context.namespaceAlias === void 0
|
|
172
|
-
? `import(${JSON.stringify(context.moduleSpecifier)})`
|
|
173
|
-
: context.namespaceAlias;
|
|
174
|
-
return `(${objectText}) as typeof ${moduleReference}`;
|
|
175
|
-
}
|
|
176
|
-
return shouldWrapImplicitObject(context.factoryArgument, context.returnExpression, context.objectExpression)
|
|
177
|
-
? `(${objectText})`
|
|
178
|
-
: objectText;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Builds the lookup of target properties from the inferred target type.
|
|
182
|
-
* @param context Data required to analyze supported object properties.
|
|
183
|
-
* @returns Target-property lookup keyed by property name.
|
|
184
|
-
* @example
|
|
185
|
-
* ```typescript
|
|
186
|
-
* const targetProperties = createTargetPropertyMap(context);
|
|
187
|
-
* ```
|
|
188
|
-
*/
|
|
189
|
-
function createTargetPropertyMap(context) {
|
|
190
|
-
return new Map(context.checker
|
|
191
|
-
.getPropertiesOfType(context.targetType)
|
|
192
|
-
.map((propertySymbol) => [propertySymbol.getName(), propertySymbol]));
|
|
193
|
-
}
|
|
194
|
-
export { collectMatch };
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsd0JBQXdCLEdBQ3pCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0U7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FDaEMsYUFBMEIsRUFDMUIsWUFBbUMsRUFDbkMsa0JBQW1EO0lBRW5ELGFBQWEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFOUMsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVqRSxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsZ0JBQWdCLENBQ3ZCLE9BQWdDO0lBRWhDLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUN0QyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDdEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDakMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbEMsRUFDRCxPQUFPLENBQUMsWUFBWSxFQUNwQixPQUFPLENB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RTNDLE9BQU8sSUFBSSxHQUFHLENBQ1osT0FBTyxDQUFDLE9BQU87U0FDWixtQkFBbUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDdkUsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XHJcbiAgQnVpbGRNYXRjaFJlc3VsdENvbnRleHQsXHJcbiAgQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCxcclxuICBDb2xsZWN0TWF0Y2hDb250ZXh0LFxyXG4gIENvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50c0NvbnRleHQsXHJcbiAgTWF0Y2hSZXN1bHQsXHJcbiAgUHJvcGVydHlSZXBsYWNlbWVudCxcclxuICBQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbixcclxuICBTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICBUYXJnZXRQcm9wZXJ0eU1hcCxcclxufSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtcclxuICBnZXRQcm9wZXJ0eU5hbWUsXHJcbiAgaXNTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICBzaG91bGRXcmFwSW1wbGljaXRPYmplY3QsXHJcbn0gZnJvbSBcIi4vYXN0LWhlbHBlcnNcIjtcclxuaW1wb3J0IHsgZ2V0RmFjdG9yeU1hdGNoSW5wdXQgfSBmcm9tIFwiLi9tYXRjaC1pbnB1dFwiO1xyXG5pbXBvcnQge1xyXG4gIGFwcGx5VGV4dFJlcGxhY2VtZW50cyxcclxuICBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQsXHJcbn0gZnJvbSBcIi4vcmVwbGFjZW1lbnQtaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBpc091dGVyQ2FzdFJlcXVpcmVkLCByZXNvbHZlRmFjdG9yeVRhcmdldFR5cGUgfSBmcm9tIFwiLi90eXBlLWhlbHBlcnNcIjtcclxuXHJcbi8qKlxyXG4gKiBSZWNvcmRzIG9uZSBwcm9wZXJ0eSByZXBsYWNlbWVudCB3aGVuIHRoZSBzb3VyY2UgdGV4dCBtdXN0IGNoYW5nZS5cclxuICogQHBhcmFtIHByb3BlcnR5TmFtZXMgUHJvcGVydHkgbmFtZXMgYWxyZWFkeSBoYW5kbGVkIGZvciB0aGUgb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBwYXJhbSByZXBsYWNlbWVudHMgUmVwbGFjZW1lbnQgZW50cmllcyBjb2xsZWN0ZWQgc28gZmFyLlxyXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRDb250ZXh0IFJlcGxhY2VtZW50IGNvbnRleHQgZm9yIHRoZSBjdXJyZW50IHByb3BlcnR5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGFwcGVuZFByb3BlcnR5UmVwbGFjZW1lbnQobmV3IFNldCgpLCBbXSwgcmVwbGFjZW1lbnRDb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBhcHBlbmRQcm9wZXJ0eVJlcGxhY2VtZW50KFxyXG4gIHByb3BlcnR5TmFtZXM6IFNldDxzdHJpbmc+LFxyXG4gIHJlcGxhY2VtZW50czogUHJvcGVydHlSZXBsYWNlbWVudFtdLFxyXG4gIHJlcGxhY2VtZW50Q29udGV4dDogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCxcclxuKTogdm9pZCB7XHJcbiAgcHJvcGVydHlOYW1lcy5hZGQocmVwbGFjZW1lbnRDb250ZXh0LmtleU5hbWUpO1xyXG5cclxuICBjb25zdCByZXBsYWNlbWVudCA9IGJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudChyZXBsYWNlbWVudENvbnRleHQpO1xyXG5cclxuICBpZiAocmVwbGFjZW1lbnQgIT09IHZvaWQgMCkge1xyXG4gICAgcmVwbGFjZW1lbnRzLnB1c2gocmVwbGFjZW1lbnQpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyB0aGUgZmluYWwgbWF0Y2ggcmVzdWx0IGZvciBhIHJld3JpdHRlbiBvYmplY3QgbGl0ZXJhbC5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBidWlsZCB0aGUgZmluYWwgcmVwbGFjZW1lbnQuXHJcbiAqIEByZXR1cm5zIEZpbmFsIG1hdGNoIHJlc3VsdCB3aGVuIHRoZSBvYmplY3QgdGV4dCBjaGFuZ2VzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1hdGNoID0gYnVpbGRNYXRjaFJlc3VsdChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZE1hdGNoUmVzdWx0KFxyXG4gIGNvbnRleHQ6IEJ1aWxkTWF0Y2hSZXN1bHRDb250ZXh0LFxyXG4pOiBNYXRjaFJlc3VsdCB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3Qgb2JqZWN0VGV4dCA9IGFwcGx5VGV4dFJlcGxhY2VtZW50cyhcclxuICAgIGNvbnRleHQuc291cmNlVGV4dC5zbGljZShcclxuICAgICAgY29udGV4dC5vYmplY3RFeHByZXNzaW9uLnJhbmdlWzBdLFxyXG4gICAgICBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucmFuZ2VbMV0sXHJcbiAgICApLFxyXG4gICAgY29udGV4dC5yZXBsYWNlbWVudHMsXHJcbiAgICBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucmFuZ2VbMF0sXHJcbiAgKTtcclxuICBjb25zdCByZXBsYWNlbWVudFRleHQgPSBjcmVhdGVSZXBsYWNlbWVudFRleHQoY29udGV4dCwgb2JqZWN0VGV4dCk7XHJcbiAgY29uc3Qgb3JpZ2luYWxUZXh0ID0gY29udGV4dC5zb3VyY2VUZXh0LnNsaWNlKFxyXG4gICAgY29udGV4dC5yZXR1cm5FeHByZXNzaW9uLnJhbmdlWzBdLFxyXG4gICAgY29udGV4dC5yZXR1cm5FeHByZXNzaW9uLnJhbmdlWzFdLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiBvcmlnaW5hbFRleHQgPT09IHJlcGxhY2VtZW50VGV4dFxyXG4gICAgPyB2b2lkIDBcclxuICAgIDoge1xyXG4gICAgICAgIHJlcGxhY2VtZW50VGV4dCxcclxuICAgICAgICByZXR1cm5FeHByZXNzaW9uUmFuZ2U6IGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbi5yYW5nZSxcclxuICAgICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIG5lc3RlZCByZXBsYWNlbWVudHMgZm9yIGFsbCBzdXBwb3J0ZWQgb2JqZWN0IGxpdGVyYWwgcHJvcGVydGllcy5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHBhcmFtIHByb3BlcnRpZXMgU3VwcG9ydGVkIG9iamVjdCBsaXRlcmFsIHByb3BlcnRpZXMgdG8gcmV3cml0ZS5cclxuICogQHJldHVybnMgUHJvcGVydHkgcmVwbGFjZW1lbnRzIHdoZW4gZXZlcnkgcHJvcGVydHkgY2FuIGJlIGhhbmRsZWQgc2FmZWx5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGNvbGxlY3Rpb24gPSBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb2xsZWN0aW9uKGNvbnRleHQsIHByb3BlcnRpZXMpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24oXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuICBwcm9wZXJ0aWVzOiByZWFkb25seSBTdXBwb3J0ZWRQcm9wZXJ0eVtdLFxyXG4pOiBQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbiB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3QgcHJvcGVydHlOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gIGNvbnN0IHJlcGxhY2VtZW50czogUHJvcGVydHlSZXBsYWNlbWVudFtdID0gW107XHJcbiAgY29uc3QgdGFyZ2V0UHJvcGVydGllcyA9IGNyZWF0ZVRhcmdldFByb3BlcnR5TWFwKGNvbnRleHQpO1xyXG5cclxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcclxuICAgIGNvbnN0IHJlcGxhY2VtZW50Q29udGV4dCA9IGNyZWF0ZVByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0KFxyXG4gICAgICBjb250ZXh0LFxyXG4gICAgICBwcm9wZXJ0eSxcclxuICAgICAgdGFyZ2V0UHJvcGVydGllcyxcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHJlcGxhY2VtZW50Q29udGV4dCA9PT0gdm9pZCAwKSB7XHJcbiAgICAgIHJldHVybiB2b2lkIDA7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwZW5kUHJvcGVydHlSZXBsYWNlbWVudChwcm9wZXJ0eU5hbWVzLCByZXBsYWNlbWVudHMsIHJlcGxhY2VtZW50Q29udGV4dCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4geyBwcm9wZXJ0eU5hbWVzLCByZXBsYWNlbWVudHMgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIGEgZml4IG1hdGNoIGZvciBhIHN1cHBvcnRlZCBWaXRlc3QgbW9jayBmYWN0b3J5IGNhbGwuXHJcbiAqIEBwYXJhbSBjb250ZXh0IE1hdGNoIGNvbGxlY3Rpb24gY29udGV4dC5cclxuICogQHJldHVybnMgTWF0Y2ggcmVzdWx0IHdoZW4gdGhlIG9iamVjdCBsaXRlcmFsIGNhbiBiZSBzYWZlbHkgcmV3cml0dGVuLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1hdGNoID0gY29sbGVjdE1hdGNoKGNvbnRleHQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNvbGxlY3RNYXRjaChjb250ZXh0OiBDb2xsZWN0TWF0Y2hDb250ZXh0KTogTWF0Y2hSZXN1bHQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IGZhY3RvcnlNYXRjaElucHV0ID0gZ2V0RmFjdG9yeU1hdGNoSW5wdXQoY29udGV4dC5jYWxsRXhwcmVzc2lvbik7XHJcblxyXG4gIGlmIChmYWN0b3J5TWF0Y2hJbnB1dCA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgdGFyZ2V0VHlwZSA9IHJlc29sdmVGYWN0b3J5VGFyZ2V0VHlwZSh7XHJcbiAgICBjYWxsRXhwcmVzc2lvbjogY29udGV4dC5jYWxsRXhwcmVzc2lvbixcclxuICAgIGNoZWNrZXI6IGNvbnRleHQuY2hlY2tlcixcclxuICAgIGZhY3RvcnlBcmd1bWVudDogZmFjdG9yeU1hdGNoSW5wdXQuZmFjdG9yeUFyZ3VtZW50LFxyXG4gICAgb2JqZWN0RXhwcmVzc2lvbjogZmFjdG9yeU1hdGNoSW5wdXQub2JqZWN0RXhwcmVzc2lvbixcclxuICAgIHNlcnZpY2VzOiBjb250ZXh0LnNlcnZpY2VzLFxyXG4gIH0pO1xyXG5cclxuICBpZiAodGFyZ2V0VHlwZSA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgY29sbGVjdGVkUmVwbGFjZW1lbnRzID0gY29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzKHtcclxuICAgIGNoZWNrZXI6IGNvbnRleHQuY2hlY2tlcixcclxuICAgIG1vZHVsZVNwZWNpZmllcjogZmFjdG9yeU1hdGNoSW5wdXQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgbmFtZXNwYWNlQWxpYXM6IGNvbnRleHQubmFtZXNwYWNlSW1wb3J0cy5nZXQoXHJcbiAgICAgIGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgICksXHJcbiAgICBvYmplY3RFeHByZXNzaW9uOiBmYWN0b3J5TWF0Y2hJbnB1dC5vYmplY3RFeHByZXNzaW9uLFxyXG4gICAgc2VydmljZXM6IGNvbnRleHQuc2VydmljZXMsXHJcbiAgICBzb3VyY2VUZXh0OiBjb250ZXh0LnNvdXJjZVRleHQsXHJcbiAgICB0YXJnZXRUeXBlLFxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gY29sbGVjdGVkUmVwbGFjZW1lbnRzID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IGJ1aWxkTWF0Y2hSZXN1bHQoe1xyXG4gICAgICAgIGNoZWNrZXI6IGNvbnRleHQuY2hlY2tlcixcclxuICAgICAgICBmYWN0b3J5QXJndW1lbnQ6IGZhY3RvcnlNYXRjaElucHV0LmZhY3RvcnlBcmd1bWVudCxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgICAgICBuYW1lc3BhY2VBbGlhczogY29udGV4dC5uYW1lc3BhY2VJbXBvcnRzLmdldChcclxuICAgICAgICAgIGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgICAgICApLFxyXG4gICAgICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICAgICAgcHJvcGVydHlOYW1lczogY29sbGVjdGVkUmVwbGFjZW1lbnRzLnByb3BlcnR5TmFtZXMsXHJcbiAgICAgICAgcmVwbGFjZW1lbnRzOiBjb2xsZWN0ZWRSZXBsYWNlbWVudHMucmVwbGFjZW1lbnRzLFxyXG4gICAgICAgIHJldHVybkV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0LnJldHVybkV4cHJlc3Npb24sXHJcbiAgICAgICAgc291cmNlVGV4dDogY29udGV4dC5zb3VyY2VUZXh0LFxyXG4gICAgICAgIHRhcmdldFR5cGUsXHJcbiAgICAgIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdHMgbmVzdGVkIHJlcGxhY2VtZW50cyBmb3IgYWxsIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0aWVzLlxyXG4gKiBAcGFyYW0gY29udGV4dCBEYXRhIHJlcXVpcmVkIHRvIGFuYWx5emUgc3VwcG9ydGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxyXG4gKiBAcmV0dXJucyBQcm9wZXJ0eSByZXBsYWNlbWVudHMgd2hlbiBldmVyeSBwcm9wZXJ0eSBjYW4gYmUgaGFuZGxlZCBzYWZlbHkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50cyhjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHMoXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuKTogUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHByb3BlcnRpZXMgPSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5maWx0ZXIoKHByb3BlcnR5KSA9PlxyXG4gICAgaXNTdXBwb3J0ZWRQcm9wZXJ0eShwcm9wZXJ0eSksXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHByb3BlcnRpZXMubGVuZ3RoID09PSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5sZW5ndGhcclxuICAgID8gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbihjb250ZXh0LCBwcm9wZXJ0aWVzKVxyXG4gICAgOiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIHJlcGxhY2VtZW50IGlucHV0cyBmb3Igb25lIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0eS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHBhcmFtIHByb3BlcnR5IFN1cHBvcnRlZCBwcm9wZXJ0eSBmcm9tIHRoZSByZXR1cm5lZCBvYmplY3QgbGl0ZXJhbC5cclxuICogQHBhcmFtIHRhcmdldFByb3BlcnRpZXMgVGFyZ2V0LXByb3BlcnR5IGxvb2t1cCBrZXllZCBieSBwcm9wZXJ0eSBuYW1lLlxyXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudCBpbnB1dHMgd2hlbiB0aGUgcHJvcGVydHkgY2FuIGJlIGhhbmRsZWQgc2FmZWx5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50Q29udGV4dCA9IGNyZWF0ZVByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0KGNvbnRleHQsIHByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0aWVzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dChcclxuICBjb250ZXh0OiBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4gIHByb3BlcnR5OiBTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICB0YXJnZXRQcm9wZXJ0aWVzOiBUYXJnZXRQcm9wZXJ0eU1hcCxcclxuKTogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3Qga2V5TmFtZSA9IGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eS5rZXkpO1xyXG4gIGNvbnN0IHRhcmdldFByb3BlcnR5U3ltYm9sID1cclxuICAgIGtleU5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldFByb3BlcnRpZXMuZ2V0KGtleU5hbWUpO1xyXG5cclxuICByZXR1cm4ga2V5TmFtZSA9PT0gdm9pZCAwIHx8IHRhcmdldFByb3BlcnR5U3ltYm9sID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHtcclxuICAgICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgICAga2V5TmFtZSxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IGNvbnRleHQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgICAgIG5hbWVzcGFjZUFsaWFzOiBjb250ZXh0Lm5hbWVzcGFjZUFsaWFzLFxyXG4gICAgICAgIHByb3BlcnR5LFxyXG4gICAgICAgIHNlcnZpY2VzOiBjb250ZXh0LnNlcnZpY2VzLFxyXG4gICAgICAgIHNvdXJjZVRleHQ6IGNvbnRleHQuc291cmNlVGV4dCxcclxuICAgICAgICB0YXJnZXRQcm9wZXJ0eVN5bWJvbCxcclxuICAgICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIGZpbmFsIHJlcGxhY2VtZW50IHRleHQgZm9yIHRoZSByZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBidWlsZCB0aGUgZmluYWwgcmVwbGFjZW1lbnQuXHJcbiAqIEBwYXJhbSBvYmplY3RUZXh0IFJld3JpdHRlbiBvYmplY3QgbGl0ZXJhbCB0ZXh0LlxyXG4gKiBAcmV0dXJucyBGaW5hbCByZXBsYWNlbWVudCB0ZXh0IGZvciB0aGUgZmFjdG9yeSByZXR1cm4gZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB0ZXh0ID0gY3JlYXRlUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQsIFwiKHt9KVwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZXBsYWNlbWVudFRleHQoXHJcbiAgY29udGV4dDogQnVpbGRNYXRjaFJlc3VsdENvbnRleHQsXHJcbiAgb2JqZWN0VGV4dDogc3RyaW5nLFxyXG4pOiBzdHJpbmcge1xyXG4gIGlmIChcclxuICAgIGlzT3V0ZXJDYXN0UmVxdWlyZWQoe1xyXG4gICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgIHByb3BlcnR5TmFtZXM6IGNvbnRleHQucHJvcGVydHlOYW1lcyxcclxuICAgICAgdGFyZ2V0VHlwZTogY29udGV4dC50YXJnZXRUeXBlLFxyXG4gICAgfSlcclxuICApIHtcclxuICAgIGNvbnN0IG1vZHVsZVJlZmVyZW5jZSA9XHJcbiAgICAgIGNvbnRleHQubmFtZXNwYWNlQWxpYXMgPT09IHZvaWQgMFxyXG4gICAgICAgID8gYGltcG9ydCgke0pTT04uc3RyaW5naWZ5KGNvbnRleHQubW9kdWxlU3BlY2lmaWVyKX0pYFxyXG4gICAgICAgIDogY29udGV4dC5uYW1lc3BhY2VBbGlhcztcclxuXHJcbiAgICByZXR1cm4gYCgke29iamVjdFRleHR9KSBhcyB0eXBlb2YgJHttb2R1bGVSZWZlcmVuY2V9YDtcclxuICB9XHJcblxyXG4gIHJldHVybiBzaG91bGRXcmFwSW1wbGljaXRPYmplY3QoXHJcbiAgICBjb250ZXh0LmZhY3RvcnlBcmd1bWVudCxcclxuICAgIGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbixcclxuICAgIGNvbnRleHQub2JqZWN0RXhwcmVzc2lvbixcclxuICApXHJcbiAgICA/IGAoJHtvYmplY3RUZXh0fSlgXHJcbiAgICA6IG9iamVjdFRleHQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgdGhlIGxvb2t1cCBvZiB0YXJnZXQgcHJvcGVydGllcyBmcm9tIHRoZSBpbmZlcnJlZCB0YXJnZXQgdHlwZS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHJldHVybnMgVGFyZ2V0LXByb3BlcnR5IGxvb2t1cCBrZXllZCBieSBwcm9wZXJ0eSBuYW1lLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHRhcmdldFByb3BlcnRpZXMgPSBjcmVhdGVUYXJnZXRQcm9wZXJ0eU1hcChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVUYXJnZXRQcm9wZXJ0eU1hcChcclxuICBjb250ZXh0OiBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4pOiBUYXJnZXRQcm9wZXJ0eU1hcCB7XHJcbiAgcmV0dXJuIG5ldyBNYXAoXHJcbiAgICBjb250ZXh0LmNoZWNrZXJcclxuICAgICAgLmdldFByb3BlcnRpZXNPZlR5cGUoY29udGV4dC50YXJnZXRUeXBlKVxyXG4gICAgICAubWFwKChwcm9wZXJ0eVN5bWJvbCkgPT4gW3Byb3BlcnR5U3ltYm9sLmdldE5hbWUoKSwgcHJvcGVydHlTeW1ib2xdKSxcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgeyBjb2xsZWN0TWF0Y2ggfTtcclxuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;AAsFD,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1,96 +0,0 @@
|
|
|
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, namespaceAlias, 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, namespaceAlias)}`
|
|
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
|
-
* @param namespaceAlias Namespace alias for the module, when present.
|
|
66
|
-
* @returns Type expression for the imported property.
|
|
67
|
-
* @example
|
|
68
|
-
* ```typescript
|
|
69
|
-
* const propertyType = getPropertyTypeText("fixture-module", "parser");
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
function getPropertyTypeText(moduleSpecifier, keyName, namespaceAlias) {
|
|
73
|
-
const moduleReference = namespaceAlias === void 0
|
|
74
|
-
? `import(${JSON.stringify(moduleSpecifier)})`
|
|
75
|
-
: namespaceAlias;
|
|
76
|
-
return `typeof ${moduleReference}[${JSON.stringify(keyName)}]`;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Determines whether a property value still needs a nested cast.
|
|
80
|
-
* @param context Property replacement context.
|
|
81
|
-
* @param baseValue Unwrapped property value expression.
|
|
82
|
-
* @returns True when the property value is not assignable to the target type.
|
|
83
|
-
* @example
|
|
84
|
-
* ```typescript
|
|
85
|
-
* const needsCast = isPropertyCastRequired(context, baseValue);
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
function isPropertyCastRequired(context, baseValue) {
|
|
89
|
-
const tsBaseValueNode = context.services.esTreeNodeToTSNodeMap.get(baseValue);
|
|
90
|
-
const tsPropertyKeyNode = context.services.esTreeNodeToTSNodeMap.get(context.property.key);
|
|
91
|
-
const sourceType = context.checker.getTypeAtLocation(tsBaseValueNode);
|
|
92
|
-
const propertyTargetType = context.checker.getTypeOfSymbolAtLocation(context.targetPropertySymbol, tsPropertyKeyNode);
|
|
93
|
-
return !context.checker.isTypeAssignableTo(sourceType, propertyTargetType);
|
|
94
|
-
}
|
|
95
|
-
export { applyTextReplacements, buildPropertyReplacement };
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZW1lbnQtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9wcmVmZXItdml0ZXN0LWluY3JlbWVudGFsLWNhc3RzL3JlcGxhY2VtZW50LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsSUFBWSxFQUNaLFlBQTRDLEVBQzVDLE1BQWM7SUFFZCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFdkIsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUM3QyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDaEQsRUFBRSxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFFMUMsV0FBVyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDeEcsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsd0JBQXdCLENBQy9CLE9BQXdDO0lBRXhDLE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1B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Q0FBQztBQUVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xyXG4gIEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbiAgUHJvcGVydHlSZXBsYWNlbWVudCxcclxufSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuaW1wb3J0IHsgY2FuVXNlU2hvcnRoYW5kLCB1bndyYXBFeHByZXNzaW9uIH0gZnJvbSBcIi4vYXN0LWhlbHBlcnNcIjtcclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIHRoZSBjb2xsZWN0ZWQgcHJvcGVydHkgcmVwbGFjZW1lbnRzIGluIHJldmVyc2Ugc291cmNlIG9yZGVyLlxyXG4gKiBAcGFyYW0gdGV4dCBPcmlnaW5hbCBvYmplY3QgbGl0ZXJhbCBzb3VyY2UgdGV4dC5cclxuICogQHBhcmFtIHJlcGxhY2VtZW50cyBSZXBsYWNlbWVudCBvcGVyYXRpb25zIGZvciB0aGUgb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBwYXJhbSBvZmZzZXQgQWJzb2x1dGUgc3RhcnQgb2Zmc2V0IG9mIHRoZSBvYmplY3QgbGl0ZXJhbC5cclxuICogQHJldHVybnMgVXBkYXRlZCBvYmplY3QgbGl0ZXJhbCBzb3VyY2UgdGV4dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBvYmplY3RUZXh0ID0gYXBwbHlUZXh0UmVwbGFjZW1lbnRzKHRleHQsIHJlcGxhY2VtZW50cywgb2Zmc2V0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBhcHBseVRleHRSZXBsYWNlbWVudHMoXHJcbiAgdGV4dDogc3RyaW5nLFxyXG4gIHJlcGxhY2VtZW50czogcmVhZG9ubHkgUHJvcGVydHlSZXBsYWNlbWVudFtdLFxyXG4gIG9mZnNldDogbnVtYmVyLFxyXG4pOiBzdHJpbmcge1xyXG4gIGxldCBjdXJyZW50VGV4dCA9IHRleHQ7XHJcblxyXG4gIGZvciAoY29uc3QgcmVwbGFjZW1lbnQgb2YgcmVwbGFjZW1lbnRzLnRvU29ydGVkKFxyXG4gICAgKGxlZnQsIHJpZ2h0KSA9PiByaWdodC5yYW5nZVswXSAtIGxlZnQucmFuZ2VbMF0sXHJcbiAgKSkge1xyXG4gICAgY29uc3Qgc3RhcnQgPSByZXBsYWNlbWVudC5yYW5nZVswXSAtIG9mZnNldDtcclxuICAgIGNvbnN0IGVuZCA9IHJlcGxhY2VtZW50LnJhbmdlWzFdIC0gb2Zmc2V0O1xyXG5cclxuICAgIGN1cnJlbnRUZXh0ID0gYCR7Y3VycmVudFRleHQuc2xpY2UoMCwgc3RhcnQpfSR7cmVwbGFjZW1lbnQucmVwbGFjZW1lbnRUZXh0fSR7Y3VycmVudFRleHQuc2xpY2UoZW5kKX1gO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGN1cnJlbnRUZXh0O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSByZXBsYWNlbWVudCBlbnRyeSB3aGVuIGEgcHJvcGVydHkncyBzb3VyY2UgdGV4dCBtdXN0IGNoYW5nZS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSBuZWVkZWQgdG8gcmV3cml0ZSBvbmUgc3VwcG9ydGVkIG9iamVjdCBwcm9wZXJ0eS5cclxuICogQHJldHVybnMgUmVwbGFjZW1lbnQgZGV0YWlscyB3aGVuIHRoZSBwcm9wZXJ0eSB0ZXh0IGNoYW5nZXMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgcmVwbGFjZW1lbnQgPSBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQoY29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50KFxyXG4gIGNvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbik6IFByb3BlcnR5UmVwbGFjZW1lbnQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHJlcGxhY2VtZW50VGV4dCA9IGJ1aWxkUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQpO1xyXG4gIGNvbnN0IHByb3BlcnR5UmFuZ2UgPSBjb250ZXh0LnByb3BlcnR5LnJhbmdlO1xyXG4gIGNvbnN0IG9yaWdpbmFsVGV4dCA9IGNvbnRleHQuc291cmNlVGV4dC5zbGljZShcclxuICAgIHByb3BlcnR5UmFuZ2VbMF0sXHJcbiAgICBwcm9wZXJ0eVJhbmdlWzFdLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiBvcmlnaW5hbFRleHQgPT09IHJlcGxhY2VtZW50VGV4dFxyXG4gICAgPyB2b2lkIDBcclxuICAgIDogeyByYW5nZTogcHJvcGVydHlSYW5nZSwgcmVwbGFjZW1lbnRUZXh0IH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgdGhlIGZpbmFsIHNvdXJjZSB0ZXh0IGZvciBvbmUgb2JqZWN0IGxpdGVyYWwgcHJvcGVydHkuXHJcbiAqIEBwYXJhbSBjb250ZXh0IFByb3BlcnR5IHJlcGxhY2VtZW50IGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIFJld3JpdHRlbiBwcm9wZXJ0eSB0ZXh0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50VGV4dCA9IGJ1aWxkUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkUmVwbGFjZW1lbnRUZXh0KFxyXG4gIGNvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbik6IHN0cmluZyB7XHJcbiAgY29uc3QgeyBrZXlOYW1lLCBtb2R1bGVTcGVjaWZpZXIsIG5hbWVzcGFjZUFsaWFzLCBwcm9wZXJ0eSwgc291cmNlVGV4dCB9ID1cclxuICAgIGNvbnRleHQ7XHJcbiAgY29uc3QgYmFzZVZhbHVlID0gdW53cmFwRXhwcmVzc2lvbihwcm9wZXJ0eS52YWx1ZSk7XHJcbiAgY29uc3QgYmFzZVZhbHVlVGV4dCA9IHNvdXJjZVRleHQuc2xpY2UoXHJcbiAgICBiYXNlVmFsdWUucmFuZ2VbMF0sXHJcbiAgICBiYXNlVmFsdWUucmFuZ2VbMV0sXHJcbiAgKTtcclxuICBjb25zdCBrZXlUZXh0ID0gc291cmNlVGV4dC5zbGljZShcclxuICAgIHByb3BlcnR5LmtleS5yYW5nZVswXSxcclxuICAgIHByb3BlcnR5LmtleS5yYW5nZVsxXSxcclxuICApO1xyXG4gIGNvbnN0IG5lZWRzQ2FzdCA9IGlzUHJvcGVydHlDYXN0UmVxdWlyZWQoY29udGV4dCwgYmFzZVZhbHVlKTtcclxuICBjb25zdCB2YWx1ZVRleHQgPSBuZWVkc0Nhc3RcclxuICAgID8gYCR7YmFzZVZhbHVlVGV4dH0gYXMgJHtnZXRQcm9wZXJ0eVR5cGVUZXh0KG1vZHVsZVNwZWNpZmllciwga2V5TmFtZSwgbmFtZXNwYWNlQWxpYXMpfWBcclxuICAgIDogYmFzZVZhbHVlVGV4dDtcclxuXHJcbiAgcmV0dXJuIGNhblVzZVNob3J0aGFuZCh7IGJhc2VWYWx1ZSwga2V5TmFtZSwgbmVlZHNDYXN0LCBwcm9wZXJ0eSB9KVxyXG4gICAgPyBrZXlOYW1lXHJcbiAgICA6IGAke2tleVRleHR9OiAke3ZhbHVlVGV4dH1gO1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBpbXBvcnRlZCBwcm9wZXJ0eSB0eXBlIGV4cHJlc3Npb24gdXNlZCBmb3IgYSBuZXN0ZWQgY2FzdC5cclxuICogQHBhcmFtIG1vZHVsZVNwZWNpZmllciBTdGF0aWMgbW9kdWxlIHNwZWNpZmllciB1c2VkIGJ5IHRoZSBtb2NrLlxyXG4gKiBAcGFyYW0ga2V5TmFtZSBQcm9wZXJ0eSBuYW1lIGJlaW5nIGNhc3QuXHJcbiAqIEBwYXJhbSBuYW1lc3BhY2VBbGlhcyBOYW1lc3BhY2UgYWxpYXMgZm9yIHRoZSBtb2R1bGUsIHdoZW4gcHJlc2VudC5cclxuICogQHJldHVybnMgVHlwZSBleHByZXNzaW9uIGZvciB0aGUgaW1wb3J0ZWQgcHJvcGVydHkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgcHJvcGVydHlUeXBlID0gZ2V0UHJvcGVydHlUeXBlVGV4dChcImZpeHR1cmUtbW9kdWxlXCIsIFwicGFyc2VyXCIpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldFByb3BlcnR5VHlwZVRleHQoXHJcbiAgbW9kdWxlU3BlY2lmaWVyOiBzdHJpbmcsXHJcbiAga2V5TmFtZTogc3RyaW5nLFxyXG4gIG5hbWVzcGFjZUFsaWFzPzogc3RyaW5nLFxyXG4pOiBzdHJpbmcge1xyXG4gIGNvbnN0IG1vZHVsZVJlZmVyZW5jZSA9XHJcbiAgICBuYW1lc3BhY2VBbGlhcyA9PT0gdm9pZCAwXHJcbiAgICAgID8gYGltcG9ydCgke0pTT04uc3RyaW5naWZ5KG1vZHVsZVNwZWNpZmllcil9KWBcclxuICAgICAgOiBuYW1lc3BhY2VBbGlhcztcclxuXHJcbiAgcmV0dXJuIGB0eXBlb2YgJHttb2R1bGVSZWZlcmVuY2V9WyR7SlNPTi5zdHJpbmdpZnkoa2V5TmFtZSl9XWA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBwcm9wZXJ0eSB2YWx1ZSBzdGlsbCBuZWVkcyBhIG5lc3RlZCBjYXN0LlxyXG4gKiBAcGFyYW0gY29udGV4dCBQcm9wZXJ0eSByZXBsYWNlbWVudCBjb250ZXh0LlxyXG4gKiBAcGFyYW0gYmFzZVZhbHVlIFVud3JhcHBlZCBwcm9wZXJ0eSB2YWx1ZSBleHByZXNzaW9uLlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHByb3BlcnR5IHZhbHVlIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHRoZSB0YXJnZXQgdHlwZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBuZWVkc0Nhc3QgPSBpc1Byb3BlcnR5Q2FzdFJlcXVpcmVkKGNvbnRleHQsIGJhc2VWYWx1ZSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNQcm9wZXJ0eUNhc3RSZXF1aXJlZChcclxuICBjb250ZXh0OiBCdWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0LFxyXG4gIGJhc2VWYWx1ZTogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dFtcInByb3BlcnR5XCJdW1widmFsdWVcIl0sXHJcbik6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHRzQmFzZVZhbHVlTm9kZSA9IGNvbnRleHQuc2VydmljZXMuZXNUcmVlTm9kZVRvVFNOb2RlTWFwLmdldChiYXNlVmFsdWUpO1xyXG4gIGNvbnN0IHRzUHJvcGVydHlLZXlOb2RlID0gY29udGV4dC5zZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KFxyXG4gICAgY29udGV4dC5wcm9wZXJ0eS5rZXksXHJcbiAgKTtcclxuICBjb25zdCBzb3VyY2VUeXBlID0gY29udGV4dC5jaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHRzQmFzZVZhbHVlTm9kZSk7XHJcbiAgY29uc3QgcHJvcGVydHlUYXJnZXRUeXBlID0gY29udGV4dC5jaGVja2VyLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oXHJcbiAgICBjb250ZXh0LnRhcmdldFByb3BlcnR5U3ltYm9sLFxyXG4gICAgdHNQcm9wZXJ0eUtleU5vZGUsXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuICFjb250ZXh0LmNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKHNvdXJjZVR5cGUsIHByb3BlcnR5VGFyZ2V0VHlwZSk7XHJcbn1cclxuXHJcbmV4cG9ydCB7IGFwcGx5VGV4dFJlcGxhY2VtZW50cywgYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50IH07XHJcbiJdfQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|