@codeperfect/eslint-plugin 2.0.0 → 2.2.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 +36 -4
- 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/no-reexports-outside-barrels-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +8 -3
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/rule.js +12 -5
- 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 +608 -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 +58 -6
- 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 +94 -23
- package/dist/domain/custom-rule-documentation.d.ts +3 -14
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
- package/dist/domain/custom-rule-documentation.js +3 -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/parameter-utilities.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 +12 -4
- 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 +7 -3
- 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.d.ts +1 -2
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/rule.js +18 -13
- 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 +2 -78
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +121 -3
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +199 -4
- package/dist/domain/testing/aaa/analyzer.analysis.js +30 -188
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -92
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +93 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +184 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +5 -283
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +62 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +106 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -74
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +75 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +202 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +5 -201
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +13 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.js +32 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts +6 -13
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +14 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.js +64 -0
- package/dist/domain/testing/aaa/analyzer.super.js +29 -61
- 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 +33 -5
- 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 +165 -3
- 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/prefer-vi-mocked-import/rule.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +6 -3
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-act-result-capture/rule.js +42 -10
- 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 +34 -9
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
- package/dist/domain/testing/single-act-statement/rule.js +11 -5
- 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 +37 -38
- 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.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.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.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 -34
- 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 -86
- 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 -150
- 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 -81
- 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 -189
- 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 -92
- 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 -62
- 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 -203
- 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 -129
- 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 -217
- 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,189 +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
|
-
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsd0JBQXdCLEdBQ3pCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0U7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FDaEMsYUFBMEIsRUFDMUIsWUFBbUMsRUFDbkMsa0JBQW1EO0lBRW5ELGFBQWEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFOUMsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVqRSxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsZ0JBQWdCLENBQ3ZCLE9BQWdDO0lBRWhDLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUN0QyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDdEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDakMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbEMsRUFDRCxPQUFPLENBQUMsWUFBWSxFQUNwQixPQUFPLENB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T0FBTyxDQUFDLGVBQWU7WUFDeEMsUUFBUTtZQUNSLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUMxQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsb0JBQW9CO1NBQ3JCLENBQUM7QUFDUixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsT0FBZ0MsRUFDaEMsVUFBa0I7SUFFbEIsSUFDRSxtQkFBbUIsQ0FBQztRQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1FBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtLQUMvQixDQUFDLEVBQ0YsQ0FBQztRQUNELE9BQU8sSUFBSSxVQUFVLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUM3QixPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekI7UUFDQyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUc7UUFDbkIsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHVCQUF1QixDQUM5QixPQUEyQztJQUUzQyxPQUFPLElBQUksR0FBRyxDQUNaLE9BQU8sQ0FBQyxPQUFPO1NBQ1osbUJBQW1CLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUN2QyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7QUFDSixDQUFDO0FBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xyXG4gIEJ1aWxkTWF0Y2hSZXN1bHRDb250ZXh0LFxyXG4gIEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbiAgQ29sbGVjdE1hdGNoQ29udGV4dCxcclxuICBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4gIE1hdGNoUmVzdWx0LFxyXG4gIFByb3BlcnR5UmVwbGFjZW1lbnQsXHJcbiAgUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24sXHJcbiAgU3VwcG9ydGVkUHJvcGVydHksXHJcbiAgVGFyZ2V0UHJvcGVydHlNYXAsXHJcbn0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgZ2V0UHJvcGVydHlOYW1lLFxyXG4gIGlzU3VwcG9ydGVkUHJvcGVydHksXHJcbiAgc2hvdWxkV3JhcEltcGxpY2l0T2JqZWN0LFxyXG59IGZyb20gXCIuL2FzdC1oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGdldEZhY3RvcnlNYXRjaElucHV0IH0gZnJvbSBcIi4vbWF0Y2gtaW5wdXRcIjtcclxuaW1wb3J0IHtcclxuICBhcHBseVRleHRSZXBsYWNlbWVudHMsXHJcbiAgYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50LFxyXG59IGZyb20gXCIuL3JlcGxhY2VtZW50LWhlbHBlcnNcIjtcclxuaW1wb3J0IHsgaXNPdXRlckNhc3RSZXF1aXJlZCwgcmVzb2x2ZUZhY3RvcnlUYXJnZXRUeXBlIH0gZnJvbSBcIi4vdHlwZS1oZWxwZXJzXCI7XHJcblxyXG4vKipcclxuICogUmVjb3JkcyBvbmUgcHJvcGVydHkgcmVwbGFjZW1lbnQgd2hlbiB0aGUgc291cmNlIHRleHQgbXVzdCBjaGFuZ2UuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVzIFByb3BlcnR5IG5hbWVzIGFscmVhZHkgaGFuZGxlZCBmb3IgdGhlIG9iamVjdCBsaXRlcmFsLlxyXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRzIFJlcGxhY2VtZW50IGVudHJpZXMgY29sbGVjdGVkIHNvIGZhci5cclxuICogQHBhcmFtIHJlcGxhY2VtZW50Q29udGV4dCBSZXBsYWNlbWVudCBjb250ZXh0IGZvciB0aGUgY3VycmVudCBwcm9wZXJ0eS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBhcHBlbmRQcm9wZXJ0eVJlcGxhY2VtZW50KG5ldyBTZXQoKSwgW10sIHJlcGxhY2VtZW50Q29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYXBwZW5kUHJvcGVydHlSZXBsYWNlbWVudChcclxuICBwcm9wZXJ0eU5hbWVzOiBTZXQ8c3RyaW5nPixcclxuICByZXBsYWNlbWVudHM6IFByb3BlcnR5UmVwbGFjZW1lbnRbXSxcclxuICByZXBsYWNlbWVudENvbnRleHQ6IEJ1aWxkUHJvcGVydHlSZXBsYWNlbWVudENvbnRleHQsXHJcbik6IHZvaWQge1xyXG4gIHByb3BlcnR5TmFtZXMuYWRkKHJlcGxhY2VtZW50Q29udGV4dC5rZXlOYW1lKTtcclxuXHJcbiAgY29uc3QgcmVwbGFjZW1lbnQgPSBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnQocmVwbGFjZW1lbnRDb250ZXh0KTtcclxuXHJcbiAgaWYgKHJlcGxhY2VtZW50ICE9PSB2b2lkIDApIHtcclxuICAgIHJlcGxhY2VtZW50cy5wdXNoKHJlcGxhY2VtZW50KTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgdGhlIGZpbmFsIG1hdGNoIHJlc3VsdCBmb3IgYSByZXdyaXR0ZW4gb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIGZpbmFsIHJlcGxhY2VtZW50LlxyXG4gKiBAcmV0dXJucyBGaW5hbCBtYXRjaCByZXN1bHQgd2hlbiB0aGUgb2JqZWN0IHRleHQgY2hhbmdlcy5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtYXRjaCA9IGJ1aWxkTWF0Y2hSZXN1bHQoY29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYnVpbGRNYXRjaFJlc3VsdChcclxuICBjb250ZXh0OiBCdWlsZE1hdGNoUmVzdWx0Q29udGV4dCxcclxuKTogTWF0Y2hSZXN1bHQgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IG9iamVjdFRleHQgPSBhcHBseVRleHRSZXBsYWNlbWVudHMoXHJcbiAgICBjb250ZXh0LnNvdXJjZVRleHQuc2xpY2UoXHJcbiAgICAgIGNvbnRleHQub2JqZWN0RXhwcmVzc2lvbi5yYW5nZVswXSxcclxuICAgICAgY29udGV4dC5vYmplY3RFeHByZXNzaW9uLnJhbmdlWzFdLFxyXG4gICAgKSxcclxuICAgIGNvbnRleHQucmVwbGFjZW1lbnRzLFxyXG4gICAgY29udGV4dC5vYmplY3RFeHByZXNzaW9uLnJhbmdlWzBdLFxyXG4gICk7XHJcbiAgY29uc3QgcmVwbGFjZW1lbnRUZXh0ID0gY3JlYXRlUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQsIG9iamVjdFRleHQpO1xyXG4gIGNvbnN0IG9yaWdpbmFsVGV4dCA9IGNvbnRleHQuc291cmNlVGV4dC5zbGljZShcclxuICAgIGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbi5yYW5nZVswXSxcclxuICAgIGNvbnRleHQucmV0dXJuRXhwcmVzc2lvbi5yYW5nZVsxXSxcclxuICApO1xyXG5cclxuICByZXR1cm4gb3JpZ2luYWxUZXh0ID09PSByZXBsYWNlbWVudFRleHRcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHtcclxuICAgICAgICByZXBsYWNlbWVudFRleHQsXHJcbiAgICAgICAgcmV0dXJuRXhwcmVzc2lvblJhbmdlOiBjb250ZXh0LnJldHVybkV4cHJlc3Npb24ucmFuZ2UsXHJcbiAgICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBuZXN0ZWQgcmVwbGFjZW1lbnRzIGZvciBhbGwgc3VwcG9ydGVkIG9iamVjdCBsaXRlcmFsIHByb3BlcnRpZXMuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYW5hbHl6ZSBzdXBwb3J0ZWQgb2JqZWN0IHByb3BlcnRpZXMuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0aWVzIHRvIHJld3JpdGUuXHJcbiAqIEByZXR1cm5zIFByb3BlcnR5IHJlcGxhY2VtZW50cyB3aGVuIGV2ZXJ5IHByb3BlcnR5IGNhbiBiZSBoYW5kbGVkIHNhZmVseS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBjb2xsZWN0aW9uID0gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbihjb250ZXh0LCBwcm9wZXJ0aWVzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBidWlsZFByb3BlcnR5UmVwbGFjZW1lbnRDb2xsZWN0aW9uKFxyXG4gIGNvbnRleHQ6IENvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50c0NvbnRleHQsXHJcbiAgcHJvcGVydGllczogcmVhZG9ubHkgU3VwcG9ydGVkUHJvcGVydHlbXSxcclxuKTogUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHByb3BlcnR5TmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICBjb25zdCByZXBsYWNlbWVudHM6IFByb3BlcnR5UmVwbGFjZW1lbnRbXSA9IFtdO1xyXG4gIGNvbnN0IHRhcmdldFByb3BlcnRpZXMgPSBjcmVhdGVUYXJnZXRQcm9wZXJ0eU1hcChjb250ZXh0KTtcclxuXHJcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XHJcbiAgICBjb25zdCByZXBsYWNlbWVudENvbnRleHQgPSBjcmVhdGVQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dChcclxuICAgICAgY29udGV4dCxcclxuICAgICAgcHJvcGVydHksXHJcbiAgICAgIHRhcmdldFByb3BlcnRpZXMsXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChyZXBsYWNlbWVudENvbnRleHQgPT09IHZvaWQgMCkge1xyXG4gICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGVuZFByb3BlcnR5UmVwbGFjZW1lbnQocHJvcGVydHlOYW1lcywgcmVwbGFjZW1lbnRzLCByZXBsYWNlbWVudENvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHsgcHJvcGVydHlOYW1lcywgcmVwbGFjZW1lbnRzIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0cyBhIGZpeCBtYXRjaCBmb3IgYSBzdXBwb3J0ZWQgVml0ZXN0IG1vY2sgZmFjdG9yeSBjYWxsLlxyXG4gKiBAcGFyYW0gY29udGV4dCBNYXRjaCBjb2xsZWN0aW9uIGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIE1hdGNoIHJlc3VsdCB3aGVuIHRoZSBvYmplY3QgbGl0ZXJhbCBjYW4gYmUgc2FmZWx5IHJld3JpdHRlbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtYXRjaCA9IGNvbGxlY3RNYXRjaChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0TWF0Y2goY29udGV4dDogQ29sbGVjdE1hdGNoQ29udGV4dCk6IE1hdGNoUmVzdWx0IHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCBmYWN0b3J5TWF0Y2hJbnB1dCA9IGdldEZhY3RvcnlNYXRjaElucHV0KGNvbnRleHQuY2FsbEV4cHJlc3Npb24pO1xyXG5cclxuICBpZiAoZmFjdG9yeU1hdGNoSW5wdXQgPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IHRhcmdldFR5cGUgPSByZXNvbHZlRmFjdG9yeVRhcmdldFR5cGUoe1xyXG4gICAgY2FsbEV4cHJlc3Npb246IGNvbnRleHQuY2FsbEV4cHJlc3Npb24sXHJcbiAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICBmYWN0b3J5QXJndW1lbnQ6IGZhY3RvcnlNYXRjaElucHV0LmZhY3RvcnlBcmd1bWVudCxcclxuICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICBzZXJ2aWNlczogY29udGV4dC5zZXJ2aWNlcyxcclxuICB9KTtcclxuXHJcbiAgaWYgKHRhcmdldFR5cGUgPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGNvbnN0IGNvbGxlY3RlZFJlcGxhY2VtZW50cyA9IGNvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50cyh7XHJcbiAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICBtb2R1bGVTcGVjaWZpZXI6IGZhY3RvcnlNYXRjaElucHV0Lm1vZHVsZVNwZWNpZmllcixcclxuICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICBzZXJ2aWNlczogY29udGV4dC5zZXJ2aWNlcyxcclxuICAgIHNvdXJjZVRleHQ6IGNvbnRleHQuc291cmNlVGV4dCxcclxuICAgIHRhcmdldFR5cGUsXHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBjb2xsZWN0ZWRSZXBsYWNlbWVudHMgPT09IHZvaWQgMFxyXG4gICAgPyB2b2lkIDBcclxuICAgIDogYnVpbGRNYXRjaFJlc3VsdCh7XHJcbiAgICAgICAgY2hlY2tlcjogY29udGV4dC5jaGVja2VyLFxyXG4gICAgICAgIGZhY3RvcnlBcmd1bWVudDogZmFjdG9yeU1hdGNoSW5wdXQuZmFjdG9yeUFyZ3VtZW50LFxyXG4gICAgICAgIG1vZHVsZVNwZWNpZmllcjogZmFjdG9yeU1hdGNoSW5wdXQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgICAgIG9iamVjdEV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgICAgICAgcHJvcGVydHlOYW1lczogY29sbGVjdGVkUmVwbGFjZW1lbnRzLnByb3BlcnR5TmFtZXMsXHJcbiAgICAgICAgcmVwbGFjZW1lbnRzOiBjb2xsZWN0ZWRSZXBsYWNlbWVudHMucmVwbGFjZW1lbnRzLFxyXG4gICAgICAgIHJldHVybkV4cHJlc3Npb246IGZhY3RvcnlNYXRjaElucHV0LnJldHVybkV4cHJlc3Npb24sXHJcbiAgICAgICAgc291cmNlVGV4dDogY29udGV4dC5zb3VyY2VUZXh0LFxyXG4gICAgICAgIHRhcmdldFR5cGUsXHJcbiAgICAgIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdHMgbmVzdGVkIHJlcGxhY2VtZW50cyBmb3IgYWxsIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0aWVzLlxyXG4gKiBAcGFyYW0gY29udGV4dCBEYXRhIHJlcXVpcmVkIHRvIGFuYWx5emUgc3VwcG9ydGVkIG9iamVjdCBwcm9wZXJ0aWVzLlxyXG4gKiBAcmV0dXJucyBQcm9wZXJ0eSByZXBsYWNlbWVudHMgd2hlbiBldmVyeSBwcm9wZXJ0eSBjYW4gYmUgaGFuZGxlZCBzYWZlbHkuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3RQcm9wZXJ0eVJlcGxhY2VtZW50cyhjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHMoXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuKTogUHJvcGVydHlSZXBsYWNlbWVudENvbGxlY3Rpb24gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHByb3BlcnRpZXMgPSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5maWx0ZXIoKHByb3BlcnR5KSA9PlxyXG4gICAgaXNTdXBwb3J0ZWRQcm9wZXJ0eShwcm9wZXJ0eSksXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHByb3BlcnRpZXMubGVuZ3RoID09PSBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24ucHJvcGVydGllcy5sZW5ndGhcclxuICAgID8gYnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29sbGVjdGlvbihjb250ZXh0LCBwcm9wZXJ0aWVzKVxyXG4gICAgOiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIHJlcGxhY2VtZW50IGlucHV0cyBmb3Igb25lIHN1cHBvcnRlZCBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0eS5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBhbmFseXplIHN1cHBvcnRlZCBvYmplY3QgcHJvcGVydGllcy5cclxuICogQHBhcmFtIHByb3BlcnR5IFN1cHBvcnRlZCBwcm9wZXJ0eSBmcm9tIHRoZSByZXR1cm5lZCBvYmplY3QgbGl0ZXJhbC5cclxuICogQHBhcmFtIHRhcmdldFByb3BlcnRpZXMgVGFyZ2V0LXByb3BlcnR5IGxvb2t1cCBrZXllZCBieSBwcm9wZXJ0eSBuYW1lLlxyXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudCBpbnB1dHMgd2hlbiB0aGUgcHJvcGVydHkgY2FuIGJlIGhhbmRsZWQgc2FmZWx5LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlcGxhY2VtZW50Q29udGV4dCA9IGNyZWF0ZVByb3BlcnR5UmVwbGFjZW1lbnRDb250ZXh0KGNvbnRleHQsIHByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0aWVzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dChcclxuICBjb250ZXh0OiBDb2xsZWN0UHJvcGVydHlSZXBsYWNlbWVudHNDb250ZXh0LFxyXG4gIHByb3BlcnR5OiBTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICB0YXJnZXRQcm9wZXJ0aWVzOiBUYXJnZXRQcm9wZXJ0eU1hcCxcclxuKTogQnVpbGRQcm9wZXJ0eVJlcGxhY2VtZW50Q29udGV4dCB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3Qga2V5TmFtZSA9IGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eS5rZXkpO1xyXG4gIGNvbnN0IHRhcmdldFByb3BlcnR5U3ltYm9sID1cclxuICAgIGtleU5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldFByb3BlcnRpZXMuZ2V0KGtleU5hbWUpO1xyXG5cclxuICByZXR1cm4ga2V5TmFtZSA9PT0gdm9pZCAwIHx8IHRhcmdldFByb3BlcnR5U3ltYm9sID09PSB2b2lkIDBcclxuICAgID8gdm9pZCAwXHJcbiAgICA6IHtcclxuICAgICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgICAga2V5TmFtZSxcclxuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IGNvbnRleHQubW9kdWxlU3BlY2lmaWVyLFxyXG4gICAgICAgIHByb3BlcnR5LFxyXG4gICAgICAgIHNlcnZpY2VzOiBjb250ZXh0LnNlcnZpY2VzLFxyXG4gICAgICAgIHNvdXJjZVRleHQ6IGNvbnRleHQuc291cmNlVGV4dCxcclxuICAgICAgICB0YXJnZXRQcm9wZXJ0eVN5bWJvbCxcclxuICAgICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIGZpbmFsIHJlcGxhY2VtZW50IHRleHQgZm9yIHRoZSByZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGNvbnRleHQgRGF0YSByZXF1aXJlZCB0byBidWlsZCB0aGUgZmluYWwgcmVwbGFjZW1lbnQuXHJcbiAqIEBwYXJhbSBvYmplY3RUZXh0IFJld3JpdHRlbiBvYmplY3QgbGl0ZXJhbCB0ZXh0LlxyXG4gKiBAcmV0dXJucyBGaW5hbCByZXBsYWNlbWVudCB0ZXh0IGZvciB0aGUgZmFjdG9yeSByZXR1cm4gZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB0ZXh0ID0gY3JlYXRlUmVwbGFjZW1lbnRUZXh0KGNvbnRleHQsIFwiKHt9KVwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZXBsYWNlbWVudFRleHQoXHJcbiAgY29udGV4dDogQnVpbGRNYXRjaFJlc3VsdENvbnRleHQsXHJcbiAgb2JqZWN0VGV4dDogc3RyaW5nLFxyXG4pOiBzdHJpbmcge1xyXG4gIGlmIChcclxuICAgIGlzT3V0ZXJDYXN0UmVxdWlyZWQoe1xyXG4gICAgICBjaGVja2VyOiBjb250ZXh0LmNoZWNrZXIsXHJcbiAgICAgIHByb3BlcnR5TmFtZXM6IGNvbnRleHQucHJvcGVydHlOYW1lcyxcclxuICAgICAgdGFyZ2V0VHlwZTogY29udGV4dC50YXJnZXRUeXBlLFxyXG4gICAgfSlcclxuICApIHtcclxuICAgIHJldHVybiBgKCR7b2JqZWN0VGV4dH0pIGFzIHR5cGVvZiBpbXBvcnQoJHtKU09OLnN0cmluZ2lmeShjb250ZXh0Lm1vZHVsZVNwZWNpZmllcil9KWA7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc2hvdWxkV3JhcEltcGxpY2l0T2JqZWN0KFxyXG4gICAgY29udGV4dC5mYWN0b3J5QXJndW1lbnQsXHJcbiAgICBjb250ZXh0LnJldHVybkV4cHJlc3Npb24sXHJcbiAgICBjb250ZXh0Lm9iamVjdEV4cHJlc3Npb24sXHJcbiAgKVxyXG4gICAgPyBgKCR7b2JqZWN0VGV4dH0pYFxyXG4gICAgOiBvYmplY3RUZXh0O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBsb29rdXAgb2YgdGFyZ2V0IHByb3BlcnRpZXMgZnJvbSB0aGUgaW5mZXJyZWQgdGFyZ2V0IHR5cGUuXHJcbiAqIEBwYXJhbSBjb250ZXh0IERhdGEgcmVxdWlyZWQgdG8gYW5hbHl6ZSBzdXBwb3J0ZWQgb2JqZWN0IHByb3BlcnRpZXMuXHJcbiAqIEByZXR1cm5zIFRhcmdldC1wcm9wZXJ0eSBsb29rdXAga2V5ZWQgYnkgcHJvcGVydHkgbmFtZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB0YXJnZXRQcm9wZXJ0aWVzID0gY3JlYXRlVGFyZ2V0UHJvcGVydHlNYXAoY29udGV4dCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlVGFyZ2V0UHJvcGVydHlNYXAoXHJcbiAgY29udGV4dDogQ29sbGVjdFByb3BlcnR5UmVwbGFjZW1lbnRzQ29udGV4dCxcclxuKTogVGFyZ2V0UHJvcGVydHlNYXAge1xyXG4gIHJldHVybiBuZXcgTWFwKFxyXG4gICAgY29udGV4dC5jaGVja2VyXHJcbiAgICAgIC5nZXRQcm9wZXJ0aWVzT2ZUeXBlKGNvbnRleHQudGFyZ2V0VHlwZSlcclxuICAgICAgLm1hcCgocHJvcGVydHlTeW1ib2wpID0+IFtwcm9wZXJ0eVN5bWJvbC5nZXROYW1lKCksIHByb3BlcnR5U3ltYm9sXSksXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IHsgY29sbGVjdE1hdGNoIH07XHJcbiJdfQ==
|
|
@@ -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;AA2ED,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1,92 +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, 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
|
|
@@ -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"}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { ESLint } from "eslint";
|
|
2
|
-
import { mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { parser } from "typescript-eslint";
|
|
6
|
-
import { preferVitestIncrementalCastsRule } from "./rule.js";
|
|
7
|
-
/** Ambient declarations used by the typed fixture project. */
|
|
8
|
-
const defaultDeclarationText = [
|
|
9
|
-
'declare module "fixture-module" {',
|
|
10
|
-
" export const configs: { disableTypeChecked: { rules: string[]; strict: boolean } };",
|
|
11
|
-
" export const extra: number;",
|
|
12
|
-
" export const parser: { parseForESLint(code: string): { ast: string } };",
|
|
13
|
-
" export const plugin: { meta: { name: string } };",
|
|
14
|
-
"}",
|
|
15
|
-
"",
|
|
16
|
-
"declare const vi: {",
|
|
17
|
-
' doMock(specifier: Promise<typeof import("fixture-module")>, factory: () => typeof import("fixture-module")): void;',
|
|
18
|
-
' doMock(specifier: Promise<typeof import("fixture-module")>, factory: () => Partial<typeof import("fixture-module")>): void;',
|
|
19
|
-
' doMock(specifier: Promise<typeof import("fixture-module")>, factory: () => Promise<Partial<typeof import("fixture-module")>>): void;',
|
|
20
|
-
' mock(specifier: Promise<typeof import("fixture-module")>, factory: () => typeof import("fixture-module")): void;',
|
|
21
|
-
' mock(specifier: Promise<typeof import("fixture-module")>, factory: () => Partial<typeof import("fixture-module")>): void;',
|
|
22
|
-
' mock(specifier: Promise<typeof import("fixture-module")>, factory: (importOriginal: () => Promise<typeof import("fixture-module")>) => Promise<Partial<typeof import("fixture-module")>>): void;',
|
|
23
|
-
"};",
|
|
24
|
-
"",
|
|
25
|
-
].join("\n");
|
|
26
|
-
/** Temporary fixture directories pending cleanup. */
|
|
27
|
-
const temporaryDirectories = [];
|
|
28
|
-
/**
|
|
29
|
-
* Creates the fixture tsconfig text used by typed rule runs.
|
|
30
|
-
* @returns Serialized tsconfig file contents.
|
|
31
|
-
* @example
|
|
32
|
-
* ```typescript
|
|
33
|
-
* const tsconfigText = createTsconfigText();
|
|
34
|
-
* void tsconfigText;
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
const createTsconfigText = () => JSON.stringify({
|
|
38
|
-
compilerOptions: {
|
|
39
|
-
module: "esnext",
|
|
40
|
-
moduleResolution: "bundler",
|
|
41
|
-
noEmit: true,
|
|
42
|
-
strict: true,
|
|
43
|
-
target: "esnext",
|
|
44
|
-
},
|
|
45
|
-
include: ["**/*.ts", "**/*.d.ts"],
|
|
46
|
-
}, void 0, 2);
|
|
47
|
-
/**
|
|
48
|
-
* Creates the typed ESLint instance used by the rule tests.
|
|
49
|
-
* @param directory Fixture directory that becomes ESLint cwd.
|
|
50
|
-
* @param tsconfigPath Path to the generated fixture tsconfig.
|
|
51
|
-
* @returns ESLint instance configured for the typed rule.
|
|
52
|
-
* @example
|
|
53
|
-
* ```typescript
|
|
54
|
-
* const eslint = createTypedRuleEslint("/tmp/project", "/tmp/project/tsconfig.json");
|
|
55
|
-
* void eslint;
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
const createTypedRuleEslint = (directory, tsconfigPath) => new ESLint({
|
|
59
|
-
cwd: directory,
|
|
60
|
-
fix: true,
|
|
61
|
-
ignore: false,
|
|
62
|
-
overrideConfig: [
|
|
63
|
-
{
|
|
64
|
-
files: ["**/*.ts"],
|
|
65
|
-
languageOptions: {
|
|
66
|
-
parser,
|
|
67
|
-
parserOptions: {
|
|
68
|
-
ecmaVersion: 2022,
|
|
69
|
-
project: [tsconfigPath],
|
|
70
|
-
sourceType: "module",
|
|
71
|
-
tsconfigRootDir: directory,
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
plugins: {
|
|
75
|
-
codeperfect: {
|
|
76
|
-
rules: {
|
|
77
|
-
"prefer-vitest-incremental-casts": preferVitestIncrementalCastsRule,
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
rules: {
|
|
82
|
-
"codeperfect/prefer-vitest-incremental-casts": "error",
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
|
-
],
|
|
86
|
-
overrideConfigFile: true,
|
|
87
|
-
});
|
|
88
|
-
/**
|
|
89
|
-
* Creates the temporary fixture project used by typed helper runs.
|
|
90
|
-
* @param declarationText Ambient declarations used by the fixture project.
|
|
91
|
-
* @returns Fresh fixture project state.
|
|
92
|
-
* @example
|
|
93
|
-
* ```typescript
|
|
94
|
-
* const fixtureProject = await createFixtureProject(defaultDeclarationText);
|
|
95
|
-
* void fixtureProject;
|
|
96
|
-
* ```
|
|
97
|
-
*/
|
|
98
|
-
const createFixtureProject = async (declarationText) => {
|
|
99
|
-
const directory = await mkdtemp(path.join(tmpdir(), "codeperfect-rule-"));
|
|
100
|
-
const globalsPath = path.join(directory, "globals.d.ts");
|
|
101
|
-
const tsconfigPath = path.join(directory, "tsconfig.json");
|
|
102
|
-
temporaryDirectories.push(directory);
|
|
103
|
-
await Promise.all([
|
|
104
|
-
writeFile(globalsPath, declarationText, "utf8"),
|
|
105
|
-
writeFile(tsconfigPath, createTsconfigText(), "utf8"),
|
|
106
|
-
]);
|
|
107
|
-
return { directory, tsconfigPath };
|
|
108
|
-
};
|
|
109
|
-
/**
|
|
110
|
-
* Creates a unique file path for one isolated lint run.
|
|
111
|
-
* @param directory Temporary fixture directory.
|
|
112
|
-
* @returns Unique file path for the current run.
|
|
113
|
-
* @example
|
|
114
|
-
* ```typescript
|
|
115
|
-
* createRunFilePath("/tmp/project");
|
|
116
|
-
* ```
|
|
117
|
-
*/
|
|
118
|
-
const createRunFilePath = (directory) => path.join(directory, "example.spec.ts");
|
|
119
|
-
/**
|
|
120
|
-
* Removes temporary fixture projects created during rule tests.
|
|
121
|
-
* @returns Promise that resolves after cleanup completes.
|
|
122
|
-
* @example
|
|
123
|
-
* ```typescript
|
|
124
|
-
* await cleanupTemporaryDirectories();
|
|
125
|
-
* ```
|
|
126
|
-
*/
|
|
127
|
-
const cleanupTemporaryDirectories = async () => {
|
|
128
|
-
await Promise.all(temporaryDirectories
|
|
129
|
-
.splice(0)
|
|
130
|
-
.map(async (directory) => rm(directory, { force: true, recursive: true })));
|
|
131
|
-
};
|
|
132
|
-
/**
|
|
133
|
-
* Runs the rule with autofix enabled inside a temporary typed fixture project.
|
|
134
|
-
* @param code Source code passed to ESLint.
|
|
135
|
-
* @param declarationText Ambient declarations used by the fixture project.
|
|
136
|
-
* @returns Fixed output and lint messages.
|
|
137
|
-
* @throws {Error} When ESLint does not return a lint result.
|
|
138
|
-
* @example
|
|
139
|
-
* ```typescript
|
|
140
|
-
* const result = await runFix("vi.doMock(import(\"fixture-module\"), () => ({}));\n");
|
|
141
|
-
* void result;
|
|
142
|
-
* ```
|
|
143
|
-
*/
|
|
144
|
-
const runFix = async (code, declarationText = defaultDeclarationText) => {
|
|
145
|
-
const fixtureProject = await createFixtureProject(declarationText);
|
|
146
|
-
const filePath = createRunFilePath(fixtureProject.directory);
|
|
147
|
-
const eslint = createTypedRuleEslint(fixtureProject.directory, fixtureProject.tsconfigPath);
|
|
148
|
-
await writeFile(filePath, code, "utf8");
|
|
149
|
-
try {
|
|
150
|
-
const [result] = await eslint.lintText(code, { filePath });
|
|
151
|
-
if (result === void 0) {
|
|
152
|
-
throw new Error("Expected ESLint to return a lint result.");
|
|
153
|
-
}
|
|
154
|
-
return {
|
|
155
|
-
messages: result.messages,
|
|
156
|
-
output: result.output ?? code,
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
finally {
|
|
160
|
-
await rm(fixtureProject.directory, { force: true, recursive: true });
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
export { cleanupTemporaryDirectories, runFix };
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS10ZXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9ydWxlLXRlc3QtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFvQjFELDhEQUE4RDtBQUM5RCxNQUFNLHNCQUFzQixHQUFHO0lBQzdCLG1DQUFtQztJQUNuQyx1RkFBdUY7SUFDdkYsK0JBQStCO0lBQy9CLDJFQUEyRTtJQUMzRSxvREFBb0Q7SUFDcEQsR0FBRztJQUNILEVBQUU7SUFDRixxQkFBcUI7SUFDckIsc0hBQXNIO0lBQ3RILCtIQUErSDtJQUMvSCx3SUFBd0k7SUFDeEksb0hBQW9IO0lBQ3BILDZIQUE2SDtJQUM3SCxvTUFBb007SUFDcE0sSUFBSTtJQUNKLEVBQUU7Q0FDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUViLHFEQUFxRDtBQUNyRCxNQUFNLG9CQUFvQixHQUFhLEVBQUUsQ0FBQztBQUUxQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsR0FBVyxFQUFFLENBQ3RDLElBQUksQ0FBQyxTQUFTLENBQ1o7SUFDRSxlQUFlLEVBQUU7UUFDZixNQUFNLEVBQUUsUUFBUTtRQUNoQixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLE1BQU0s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QUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FDbEMsY0FBYyxDQUFDLFNBQVMsRUFDeEIsY0FBYyxDQUFDLFlBQVksQ0FDNUIsQ0FBQztJQUVGLE1BQU0sU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTNELElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUk7U0FDOUIsQ0FBQztJQUNKLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xyXG5cclxuaW1wb3J0IHsgRVNMaW50IH0gZnJvbSBcImVzbGludFwiO1xyXG5pbXBvcnQgeyBta2R0ZW1wLCBybSwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcclxuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSBcIm5vZGU6b3NcIjtcclxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xyXG5pbXBvcnQgeyBwYXJzZXIgfSBmcm9tIFwidHlwZXNjcmlwdC1lc2xpbnRcIjtcclxuXHJcbmltcG9ydCB7IHByZWZlclZpdGVzdEluY3JlbWVudGFsQ2FzdHNSdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xyXG5cclxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xyXG5pbnRlcmZhY2UgRml4UnVuUmVzdWx0IHtcclxuICAvKiogTGludCBtZXNzYWdlcyBwcm9kdWNlZCBkdXJpbmcgdGhlIHJ1bi4gKi9cclxuICBtZXNzYWdlczogTGludGVyLkxpbnRNZXNzYWdlW107XHJcblxyXG4gIC8qKiBPdXRwdXQgY29kZSBhZnRlciBmaXhlcy4gKi9cclxuICBvdXRwdXQ6IHN0cmluZztcclxufVxyXG5cclxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xyXG5pbnRlcmZhY2UgRml4dHVyZVByb2plY3Qge1xyXG4gIC8qKiBUZW1wb3JhcnkgZml4dHVyZSBkaXJlY3RvcnkgcGF0aC4gKi9cclxuICBkaXJlY3Rvcnk6IHN0cmluZztcclxuXHJcbiAgLyoqIEZpeHR1cmUgdHNjb25maWcgcGF0aCB1c2VkIGJ5IHR5cGVkIEVTTGludC4gKi9cclxuICB0c2NvbmZpZ1BhdGg6IHN0cmluZztcclxufVxyXG5cclxuLyoqIEFtYmllbnQgZGVjbGFyYXRpb25zIHVzZWQgYnkgdGhlIHR5cGVkIGZpeHR1cmUgcHJvamVjdC4gKi9cclxuY29uc3QgZGVmYXVsdERlY2xhcmF0aW9uVGV4dCA9IFtcclxuICAnZGVjbGFyZSBtb2R1bGUgXCJmaXh0dXJlLW1vZHVsZVwiIHsnLFxyXG4gIFwiICBleHBvcnQgY29uc3QgY29uZmlnczogeyBkaXNhYmxlVHlwZUNoZWNrZWQ6IHsgcnVsZXM6IHN0cmluZ1tdOyBzdHJpY3Q6IGJvb2xlYW4gfSB9O1wiLFxyXG4gIFwiICBleHBvcnQgY29uc3QgZXh0cmE6IG51bWJlcjtcIixcclxuICBcIiAgZXhwb3J0IGNvbnN0IHBhcnNlcjogeyBwYXJzZUZvckVTTGludChjb2RlOiBzdHJpbmcpOiB7IGFzdDogc3RyaW5nIH0gfTtcIixcclxuICBcIiAgZXhwb3J0IGNvbnN0IHBsdWdpbjogeyBtZXRhOiB7IG5hbWU6IHN0cmluZyB9IH07XCIsXHJcbiAgXCJ9XCIsXHJcbiAgXCJcIixcclxuICBcImRlY2xhcmUgY29uc3Qgdmk6IHtcIixcclxuICAnICBkb01vY2soc3BlY2lmaWVyOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoXCJmaXh0dXJlLW1vZHVsZVwiKT4sIGZhY3Rvcnk6ICgpID0+IHR5cGVvZiBpbXBvcnQoXCJmaXh0dXJlLW1vZHVsZVwiKSk6IHZvaWQ7JyxcclxuICAnICBkb01vY2soc3BlY2lmaWVyOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoXCJmaXh0dXJlLW1vZHVsZVwiKT4sIGZhY3Rvcnk6ICgpID0+IFBhcnRpYWw8dHlwZW9mIGltcG9ydChcImZpeHR1cmUtbW9kdWxlXCIpPik6IHZvaWQ7JyxcclxuICAnICBkb01vY2soc3BlY2lmaWVyOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoXCJmaXh0dXJlLW1vZHVsZVwiKT4sIGZhY3Rvcnk6ICgpID0+IFByb21pc2U8UGFydGlhbDx0eXBlb2YgaW1wb3J0KFwiZml4dHVyZS1tb2R1bGVcIik+Pik6IHZvaWQ7JyxcclxuICAnICBtb2NrKHNwZWNpZmllcjogUHJvbWlzZTx0eXBlb2YgaW1wb3J0KFwiZml4dHVyZS1tb2R1bGVcIik+LCBmYWN0b3J5OiAoKSA9PiB0eXBlb2YgaW1wb3J0KFwiZml4dHVyZS1tb2R1bGVcIikpOiB2b2lkOycsXHJcbiAgJyAgbW9jayhzcGVjaWZpZXI6IFByb21pc2U8dHlwZW9mIGltcG9ydChcImZpeHR1cmUtbW9kdWxlXCIpPiwgZmFjdG9yeTogKCkgPT4gUGFydGlhbDx0eXBlb2YgaW1wb3J0KFwiZml4dHVyZS1tb2R1bGVcIik+KTogdm9pZDsnLFxyXG4gICcgIG1vY2soc3BlY2lmaWVyOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoXCJmaXh0dXJlLW1vZHVsZVwiKT4sIGZhY3Rvcnk6IChpbXBvcnRPcmlnaW5hbDogKCkgPT4gUHJvbWlzZTx0eXBlb2YgaW1wb3J0KFwiZml4dHVyZS1tb2R1bGVcIik+KSA9PiBQcm9taXNlPFBhcnRpYWw8dHlwZW9mIGltcG9ydChcImZpeHR1cmUtbW9kdWxlXCIpPj4pOiB2b2lkOycsXHJcbiAgXCJ9O1wiLFxyXG4gIFwiXCIsXHJcbl0uam9pbihcIlxcblwiKTtcclxuXHJcbi8qKiBUZW1wb3JhcnkgZml4dHVyZSBkaXJlY3RvcmllcyBwZW5kaW5nIGNsZWFudXAuICovXHJcbmNvbnN0IHRlbXBvcmFyeURpcmVjdG9yaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIGZpeHR1cmUgdHNjb25maWcgdGV4dCB1c2VkIGJ5IHR5cGVkIHJ1bGUgcnVucy5cclxuICogQHJldHVybnMgU2VyaWFsaXplZCB0c2NvbmZpZyBmaWxlIGNvbnRlbnRzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHRzY29uZmlnVGV4dCA9IGNyZWF0ZVRzY29uZmlnVGV4dCgpO1xyXG4gKiB2b2lkIHRzY29uZmlnVGV4dDtcclxuICogYGBgXHJcbiAqL1xyXG5jb25zdCBjcmVhdGVUc2NvbmZpZ1RleHQgPSAoKTogc3RyaW5nID0+XHJcbiAgSlNPTi5zdHJpbmdpZnkoXHJcbiAgICB7XHJcbiAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xyXG4gICAgICAgIG1vZHVsZTogXCJlc25leHRcIixcclxuICAgICAgICBtb2R1bGVSZXNvbHV0aW9uOiBcImJ1bmRsZXJcIixcclxuICAgICAgICBub0VtaXQ6IHRydWUsXHJcbiAgICAgICAgc3RyaWN0OiB0cnVlLFxyXG4gICAgICAgIHRhcmdldDogXCJlc25leHRcIixcclxuICAgICAgfSxcclxuICAgICAgaW5jbHVkZTogW1wiKiovKi50c1wiLCBcIioqLyouZC50c1wiXSxcclxuICAgIH0sXHJcbiAgICB2b2lkIDAsXHJcbiAgICAyLFxyXG4gICk7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgdHlwZWQgRVNMaW50IGluc3RhbmNlIHVzZWQgYnkgdGhlIHJ1bGUgdGVzdHMuXHJcbiAqIEBwYXJhbSBkaXJlY3RvcnkgRml4dHVyZSBkaXJlY3RvcnkgdGhhdCBiZWNvbWVzIEVTTGludCBjd2QuXHJcbiAqIEBwYXJhbSB0c2NvbmZpZ1BhdGggUGF0aCB0byB0aGUgZ2VuZXJhdGVkIGZpeHR1cmUgdHNjb25maWcuXHJcbiAqIEByZXR1cm5zIEVTTGludCBpbnN0YW5jZSBjb25maWd1cmVkIGZvciB0aGUgdHlwZWQgcnVsZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBlc2xpbnQgPSBjcmVhdGVUeXBlZFJ1bGVFc2xpbnQoXCIvdG1wL3Byb2plY3RcIiwgXCIvdG1wL3Byb2plY3QvdHNjb25maWcuanNvblwiKTtcclxuICogdm9pZCBlc2xpbnQ7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgY3JlYXRlVHlwZWRSdWxlRXNsaW50ID0gKFxyXG4gIGRpcmVjdG9yeTogc3RyaW5nLFxyXG4gIHRzY29uZmlnUGF0aDogc3RyaW5nLFxyXG4pOiBFU0xpbnQgPT5cclxuICBuZXcgRVNMaW50KHtcclxuICAgIGN3ZDogZGlyZWN0b3J5LFxyXG4gICAgZml4OiB0cnVlLFxyXG4gICAgaWdub3JlOiBmYWxzZSxcclxuICAgIG92ZXJyaWRlQ29uZmlnOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBmaWxlczogW1wiKiovKi50c1wiXSxcclxuICAgICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcclxuICAgICAgICAgIHBhcnNlcixcclxuICAgICAgICAgIHBhcnNlck9wdGlvbnM6IHtcclxuICAgICAgICAgICAgZWNtYVZlcnNpb246IDIwMjIsXHJcbiAgICAgICAgICAgIHByb2plY3Q6IFt0c2NvbmZpZ1BhdGhdLFxyXG4gICAgICAgICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxyXG4gICAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGRpcmVjdG9yeSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwbHVnaW5zOiB7XHJcbiAgICAgICAgICBjb2RlcGVyZmVjdDoge1xyXG4gICAgICAgICAgICBydWxlczoge1xyXG4gICAgICAgICAgICAgIFwicHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0c1wiOlxyXG4gICAgICAgICAgICAgICAgcHJlZmVyVml0ZXN0SW5jcmVtZW50YWxDYXN0c1J1bGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcnVsZXM6IHtcclxuICAgICAgICAgIFwiY29kZXBlcmZlY3QvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0c1wiOiBcImVycm9yXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBvdmVycmlkZUNvbmZpZ0ZpbGU6IHRydWUsXHJcbiAgfSk7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgdGVtcG9yYXJ5IGZpeHR1cmUgcHJvamVjdCB1c2VkIGJ5IHR5cGVkIGhlbHBlciBydW5zLlxyXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25UZXh0IEFtYmllbnQgZGVjbGFyYXRpb25zIHVzZWQgYnkgdGhlIGZpeHR1cmUgcHJvamVjdC5cclxuICogQHJldHVybnMgRnJlc2ggZml4dHVyZSBwcm9qZWN0IHN0YXRlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGZpeHR1cmVQcm9qZWN0ID0gYXdhaXQgY3JlYXRlRml4dHVyZVByb2plY3QoZGVmYXVsdERlY2xhcmF0aW9uVGV4dCk7XHJcbiAqIHZvaWQgZml4dHVyZVByb2plY3Q7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgY3JlYXRlRml4dHVyZVByb2plY3QgPSBhc3luYyAoXHJcbiAgZGVjbGFyYXRpb25UZXh0OiBzdHJpbmcsXHJcbik6IFByb21pc2U8Rml4dHVyZVByb2plY3Q+ID0+IHtcclxuICBjb25zdCBkaXJlY3RvcnkgPSBhd2FpdCBta2R0ZW1wKHBhdGguam9pbih0bXBkaXIoKSwgXCJjb2RlcGVyZmVjdC1ydWxlLVwiKSk7XHJcbiAgY29uc3QgZ2xvYmFsc1BhdGggPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBcImdsb2JhbHMuZC50c1wiKTtcclxuICBjb25zdCB0c2NvbmZpZ1BhdGggPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBcInRzY29uZmlnLmpzb25cIik7XHJcblxyXG4gIHRlbXBvcmFyeURpcmVjdG9yaWVzLnB1c2goZGlyZWN0b3J5KTtcclxuICBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICB3cml0ZUZpbGUoZ2xvYmFsc1BhdGgsIGRlY2xhcmF0aW9uVGV4dCwgXCJ1dGY4XCIpLFxyXG4gICAgd3JpdGVGaWxlKHRzY29uZmlnUGF0aCwgY3JlYXRlVHNjb25maWdUZXh0KCksIFwidXRmOFwiKSxcclxuICBdKTtcclxuXHJcbiAgcmV0dXJuIHsgZGlyZWN0b3J5LCB0c2NvbmZpZ1BhdGggfTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgdW5pcXVlIGZpbGUgcGF0aCBmb3Igb25lIGlzb2xhdGVkIGxpbnQgcnVuLlxyXG4gKiBAcGFyYW0gZGlyZWN0b3J5IFRlbXBvcmFyeSBmaXh0dXJlIGRpcmVjdG9yeS5cclxuICogQHJldHVybnMgVW5pcXVlIGZpbGUgcGF0aCBmb3IgdGhlIGN1cnJlbnQgcnVuLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNyZWF0ZVJ1bkZpbGVQYXRoKFwiL3RtcC9wcm9qZWN0XCIpO1xyXG4gKiBgYGBcclxuICovXHJcbmNvbnN0IGNyZWF0ZVJ1bkZpbGVQYXRoID0gKGRpcmVjdG9yeTogc3RyaW5nKTogc3RyaW5nID0+XHJcbiAgcGF0aC5qb2luKGRpcmVjdG9yeSwgXCJleGFtcGxlLnNwZWMudHNcIik7XHJcblxyXG4vKipcclxuICogUmVtb3ZlcyB0ZW1wb3JhcnkgZml4dHVyZSBwcm9qZWN0cyBjcmVhdGVkIGR1cmluZyBydWxlIHRlc3RzLlxyXG4gKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgY2xlYW51cCBjb21wbGV0ZXMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogYXdhaXQgY2xlYW51cFRlbXBvcmFyeURpcmVjdG9yaWVzKCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgY2xlYW51cFRlbXBvcmFyeURpcmVjdG9yaWVzID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xyXG4gIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgdGVtcG9yYXJ5RGlyZWN0b3JpZXNcclxuICAgICAgLnNwbGljZSgwKVxyXG4gICAgICAubWFwKGFzeW5jIChkaXJlY3RvcnkpID0+XHJcbiAgICAgICAgcm0oZGlyZWN0b3J5LCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSksXHJcbiAgICAgICksXHJcbiAgKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSdW5zIHRoZSBydWxlIHdpdGggYXV0b2ZpeCBlbmFibGVkIGluc2lkZSBhIHRlbXBvcmFyeSB0eXBlZCBmaXh0dXJlIHByb2plY3QuXHJcbiAqIEBwYXJhbSBjb2RlIFNvdXJjZSBjb2RlIHBhc3NlZCB0byBFU0xpbnQuXHJcbiAqIEBwYXJhbSBkZWNsYXJhdGlvblRleHQgQW1iaWVudCBkZWNsYXJhdGlvbnMgdXNlZCBieSB0aGUgZml4dHVyZSBwcm9qZWN0LlxyXG4gKiBAcmV0dXJucyBGaXhlZCBvdXRwdXQgYW5kIGxpbnQgbWVzc2FnZXMuXHJcbiAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIEVTTGludCBkb2VzIG5vdCByZXR1cm4gYSBsaW50IHJlc3VsdC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5GaXgoXCJ2aS5kb01vY2soaW1wb3J0KFxcXCJmaXh0dXJlLW1vZHVsZVxcXCIpLCAoKSA9PiAoe30pKTtcXG5cIik7XHJcbiAqIHZvaWQgcmVzdWx0O1xyXG4gKiBgYGBcclxuICovXHJcbmNvbnN0IHJ1bkZpeCA9IGFzeW5jIChcclxuICBjb2RlOiBzdHJpbmcsXHJcbiAgZGVjbGFyYXRpb25UZXh0ID0gZGVmYXVsdERlY2xhcmF0aW9uVGV4dCxcclxuKTogUHJvbWlzZTxGaXhSdW5SZXN1bHQ+ID0+IHtcclxuICBjb25zdCBmaXh0dXJlUHJvamVjdCA9IGF3YWl0IGNyZWF0ZUZpeHR1cmVQcm9qZWN0KGRlY2xhcmF0aW9uVGV4dCk7XHJcbiAgY29uc3QgZmlsZVBhdGggPSBjcmVhdGVSdW5GaWxlUGF0aChmaXh0dXJlUHJvamVjdC5kaXJlY3RvcnkpO1xyXG4gIGNvbnN0IGVzbGludCA9IGNyZWF0ZVR5cGVkUnVsZUVzbGludChcclxuICAgIGZpeHR1cmVQcm9qZWN0LmRpcmVjdG9yeSxcclxuICAgIGZpeHR1cmVQcm9qZWN0LnRzY29uZmlnUGF0aCxcclxuICApO1xyXG5cclxuICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIGNvZGUsIFwidXRmOFwiKTtcclxuICB0cnkge1xyXG4gICAgY29uc3QgW3Jlc3VsdF0gPSBhd2FpdCBlc2xpbnQubGludFRleHQoY29kZSwgeyBmaWxlUGF0aCB9KTtcclxuXHJcbiAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgRVNMaW50IHRvIHJldHVybiBhIGxpbnQgcmVzdWx0LlwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtZXNzYWdlczogcmVzdWx0Lm1lc3NhZ2VzLFxyXG4gICAgICBvdXRwdXQ6IHJlc3VsdC5vdXRwdXQgPz8gY29kZSxcclxuICAgIH07XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGF3YWl0IHJtKGZpeHR1cmVQcm9qZWN0LmRpcmVjdG9yeSwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCB7IGNsZWFudXBUZW1wb3JhcnlEaXJlY3RvcmllcywgcnVuRml4IH07XHJcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Rule } from "eslint";
|
|
2
|
-
/** Enforces minimal nested casts for `vi.mock` and `vi.doMock` factory objects. */
|
|
3
|
-
declare const preferVitestIncrementalCastsRule: Rule.RuleModule;
|
|
4
|
-
export { preferVitestIncrementalCastsRule };
|
|
5
|
-
//# sourceMappingURL=rule.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiCnC,mFAAmF;AACnF,QAAA,MAAM,gCAAgC,EAsDrB,IAAI,CAAC,UAAU,CAAC;AAEjC,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.guardrails.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,QAAA,MAAM,uBAAuB,oDACsB,CAAC;AAEpD,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/** Suite name for the guardrail-focused companion spec. */
|
|
2
|
-
const ruleGuardrailsSuiteName = "prefer-vitest-incremental-casts rule guardrails";
|
|
3
|
-
export { ruleGuardrailsSuiteName };
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5ndWFyZHJhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL3ByZWZlci12aXRlc3QtaW5jcmVtZW50YWwtY2FzdHMvcnVsZS5ndWFyZHJhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJEQUEyRDtBQUMzRCxNQUFNLHVCQUF1QixHQUMzQixpREFBaUQsQ0FBQztBQUVwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBTdWl0ZSBuYW1lIGZvciB0aGUgZ3VhcmRyYWlsLWZvY3VzZWQgY29tcGFuaW9uIHNwZWMuICovXHJcbmNvbnN0IHJ1bGVHdWFyZHJhaWxzU3VpdGVOYW1lID1cclxuICBcInByZWZlci12aXRlc3QtaW5jcmVtZW50YWwtY2FzdHMgcnVsZSBndWFyZHJhaWxzXCI7XHJcblxyXG5leHBvcnQgeyBydWxlR3VhcmRyYWlsc1N1aXRlTmFtZSB9O1xyXG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.input-shapes.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,QAAA,MAAM,wBAAwB,sDACuB,CAAC;AAEtD,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/** Suite name for the input-shape-focused companion spec. */
|
|
2
|
-
const ruleInputShapesSuiteName = "prefer-vitest-incremental-casts rule input shapes";
|
|
3
|
-
export { ruleInputShapesSuiteName };
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5pbnB1dC1zaGFwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9ydWxlLmlucHV0LXNoYXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2REFBNkQ7QUFDN0QsTUFBTSx3QkFBd0IsR0FDNUIsbURBQW1ELENBQUM7QUFFdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU3VpdGUgbmFtZSBmb3IgdGhlIGlucHV0LXNoYXBlLWZvY3VzZWQgY29tcGFuaW9uIHNwZWMuICovXHJcbmNvbnN0IHJ1bGVJbnB1dFNoYXBlc1N1aXRlTmFtZSA9XHJcbiAgXCJwcmVmZXItdml0ZXN0LWluY3JlbWVudGFsLWNhc3RzIHJ1bGUgaW5wdXQgc2hhcGVzXCI7XHJcblxyXG5leHBvcnQgeyBydWxlSW5wdXRTaGFwZXNTdWl0ZU5hbWUgfTtcclxuIl19
|