@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,188 +0,0 @@
|
|
|
1
|
-
import { Linter } from "eslint";
|
|
2
|
-
import { parser } from "typescript-eslint";
|
|
3
|
-
import { vi } from "vitest";
|
|
4
|
-
import { enforceAaaPhasePurityRule } from "./rule.js";
|
|
5
|
-
/**
|
|
6
|
-
* Creates the mocked AAA module used by the rule test helper.
|
|
7
|
-
* @param mockedAnalysis Mocked analysis returned by the helper.
|
|
8
|
-
* @returns Partial AAA module used for Vitest mocking.
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* const module = createMockedAaaModule(createMockedAnalysis({ sectionComments: [], statements: [] }));
|
|
12
|
-
* void module;
|
|
13
|
-
* ```
|
|
14
|
-
*/
|
|
15
|
-
function createMockedAaaModule(mockedAnalysis) {
|
|
16
|
-
return {
|
|
17
|
-
analyzeTestBlock: () => mockedAnalysis,
|
|
18
|
-
hasAssertion: () => false,
|
|
19
|
-
hasAsyncLogic: () => false,
|
|
20
|
-
hasAwait: () => false,
|
|
21
|
-
hasCapturableActResult: () => false,
|
|
22
|
-
hasMutation: () => false,
|
|
23
|
-
isMeaningfulActStatement: () => false,
|
|
24
|
-
isSetupLikeStatement: () => false,
|
|
25
|
-
isValidAssertStatement: () => false,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Creates a full analysis object from the minimal fields used in tests.
|
|
30
|
-
* @param analysis Minimal analysis input used by tests.
|
|
31
|
-
* @returns Complete analysis object consumed by the rule.
|
|
32
|
-
* @example
|
|
33
|
-
* ```typescript
|
|
34
|
-
* const result = createMockedAnalysis({ sectionComments: [], statements: [] });
|
|
35
|
-
* void result;
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
function createMockedAnalysis(analysis) {
|
|
39
|
-
return {
|
|
40
|
-
body: createMockedBody(),
|
|
41
|
-
bodyLineCount: 0,
|
|
42
|
-
callExpression: createMockedCallExpression(),
|
|
43
|
-
newline: "\n",
|
|
44
|
-
sectionComments: analysis.sectionComments.map((sectionComment) => ({
|
|
45
|
-
comment: {
|
|
46
|
-
loc: {
|
|
47
|
-
end: { column: 0, line: 1 },
|
|
48
|
-
start: { column: 0, line: 1 },
|
|
49
|
-
},
|
|
50
|
-
range: [0, 0],
|
|
51
|
-
type: "Line",
|
|
52
|
-
value: ` ${sectionComment.phases.join(" / ")}`,
|
|
53
|
-
},
|
|
54
|
-
phases: sectionComment.phases,
|
|
55
|
-
})),
|
|
56
|
-
sourceText: "",
|
|
57
|
-
statements: analysis.statements.map((statement) => ({
|
|
58
|
-
node: statement.node,
|
|
59
|
-
phase: statement.phases.at(-1),
|
|
60
|
-
phases: statement.phases,
|
|
61
|
-
})),
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Creates a minimal located block statement for mocked AAA analysis.
|
|
66
|
-
* @returns Minimal located block statement.
|
|
67
|
-
* @example
|
|
68
|
-
* ```typescript
|
|
69
|
-
* const body = createMockedBody();
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
function createMockedBody() {
|
|
73
|
-
return {
|
|
74
|
-
body: [],
|
|
75
|
-
loc: {
|
|
76
|
-
end: { column: 0, line: 1 },
|
|
77
|
-
start: { column: 0, line: 1 },
|
|
78
|
-
},
|
|
79
|
-
range: [0, 0],
|
|
80
|
-
type: "BlockStatement",
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Creates a minimal located call expression for mocked AAA analysis.
|
|
85
|
-
* @returns Minimal located call expression.
|
|
86
|
-
* @example
|
|
87
|
-
* ```typescript
|
|
88
|
-
* const callExpression = createMockedCallExpression();
|
|
89
|
-
* ```
|
|
90
|
-
*/
|
|
91
|
-
function createMockedCallExpression() {
|
|
92
|
-
return {
|
|
93
|
-
arguments: [],
|
|
94
|
-
callee: { name: "it", type: "Identifier" },
|
|
95
|
-
loc: {
|
|
96
|
-
end: { column: 0, line: 1 },
|
|
97
|
-
start: { column: 0, line: 1 },
|
|
98
|
-
},
|
|
99
|
-
optional: false,
|
|
100
|
-
range: [0, 0],
|
|
101
|
-
type: "CallExpression",
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Creates the mocked rule listener used by the helper.
|
|
106
|
-
* @param analysis Mocked analysis returned from `analyzeTestBlock`.
|
|
107
|
-
* @param report Report spy passed into the mocked rule context.
|
|
108
|
-
* @returns Call-expression listener produced by the mocked rule.
|
|
109
|
-
* @example
|
|
110
|
-
* ```typescript
|
|
111
|
-
* const listener = await loadMockedListener({ sectionComments: [], statements: [] }, vi.fn());
|
|
112
|
-
* void listener;
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
async function loadMockedListener(analysis, report) {
|
|
116
|
-
vi.resetModules();
|
|
117
|
-
vi.doMock("../aaa", () => createMockedAaaModule(createMockedAnalysis(analysis)));
|
|
118
|
-
const ruleModule = await import("./rule.js");
|
|
119
|
-
return ruleModule.enforceAaaPhasePurityRule.create({ report })
|
|
120
|
-
.CallExpression;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Resets the mocked AAA module state between test runs.
|
|
124
|
-
* @example
|
|
125
|
-
* ```typescript
|
|
126
|
-
* resetMockedAaaModule();
|
|
127
|
-
* ```
|
|
128
|
-
*/
|
|
129
|
-
function resetMockedAaaModule() {
|
|
130
|
-
vi.doUnmock("../aaa");
|
|
131
|
-
vi.resetModules();
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Runs the rule against one source snippet.
|
|
135
|
-
* @param code Source code passed to the linter.
|
|
136
|
-
* @returns Lint messages produced by the rule.
|
|
137
|
-
* @example
|
|
138
|
-
* ```typescript
|
|
139
|
-
* const messages = runRule('it("works", () => {});');
|
|
140
|
-
* void messages;
|
|
141
|
-
* ```
|
|
142
|
-
*/
|
|
143
|
-
function runRule(code) {
|
|
144
|
-
const linter = new Linter({ configType: "flat" });
|
|
145
|
-
return linter.verify(code, [
|
|
146
|
-
{
|
|
147
|
-
files: ["**/*.ts"],
|
|
148
|
-
languageOptions: {
|
|
149
|
-
ecmaVersion: 2022,
|
|
150
|
-
parser,
|
|
151
|
-
sourceType: "module",
|
|
152
|
-
},
|
|
153
|
-
plugins: {
|
|
154
|
-
codeperfect: {
|
|
155
|
-
rules: {
|
|
156
|
-
"enforce-aaa-phase-purity": enforceAaaPhasePurityRule,
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
|
-
rules: {
|
|
161
|
-
"codeperfect/enforce-aaa-phase-purity": "error",
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
], "example.spec.ts");
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Runs the rule with a mocked AAA analysis result.
|
|
168
|
-
* @param analysis Mocked analysis returned from `analyzeTestBlock`.
|
|
169
|
-
* @returns Captured report calls issued by the rule.
|
|
170
|
-
* @example
|
|
171
|
-
* ```typescript
|
|
172
|
-
* const calls = await runRuleWithMockedAnalysis({ sectionComments: [], statements: [] });
|
|
173
|
-
* void calls;
|
|
174
|
-
* ```
|
|
175
|
-
*/
|
|
176
|
-
async function runRuleWithMockedAnalysis(analysis) {
|
|
177
|
-
const report = vi.fn();
|
|
178
|
-
const listener = await loadMockedListener(analysis, report);
|
|
179
|
-
try {
|
|
180
|
-
listener?.({ type: "CallExpression" });
|
|
181
|
-
return report.mock.calls;
|
|
182
|
-
}
|
|
183
|
-
finally {
|
|
184
|
-
resetMockedAaaModule();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
export { runRule, runRuleWithMockedAnalysis };
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS10ZXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvZW5mb3JjZS1hYWEtcGhhc2UtcHVyaXR5L3J1bGUtdGVzdC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLNUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBeUJuRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixjQUFpQztJQUVqQyxPQUFPO1FBQ0wsZ0JBQWdCLEVBQUUsR0FBc0IsRUFBRSxDQUFDLGNBQWM7UUFDekQsWUFBWSxFQUFFLEdBQVksRUFBRSxDQUFDLEtBQUs7UUFDbEMsYUFBYSxFQUFFLEdBQVksRUFBRSxDQUFDLEtBQUs7UUFDbkMsUUFBUSxFQUFFLEdBQVksRUFBRSxDQUFDLEtBQUs7UUFDOUIsc0JBQXNCLEVBQUUsR0FBWSxFQUFFLENBQUMsS0FBSztRQUM1QyxXQUFXLEVBQUUsR0FBWSxFQUFFLENBQUMsS0FBSztRQUNqQyx3QkFBd0IsRUFBRSxHQUFZLEVBQUUsQ0FBQyxLQUFLO1FBQzlDLG9CQUFvQixFQUFFLEdBQVksRUFBRSxDQUFDLEtBQUs7UUFDMUMsc0JBQXNCLEVBQUUsR0FBWSxFQUFFLENBQUMsS0FBSztLQUM3QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsb0JBQW9CLENBQzNCLFFBQTZCO0lBRTdCLE9BQU87UUFDTCxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7UUFDeEIsYUFBYSxFQUFFLENBQUM7UUFDaEIsY0FBYyxFQUFFLDBCQUEwQixFQUFFO1FBQzVDLE9BQU8s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RDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLE9BQU8sQ0FBQyxJQUFZO0lBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFbEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixJQUFJLEVBQ0o7UUFDRTtZQUNFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQixlQUFlLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE1BQU07Z0JBQ04sVUFBVSxFQUFFLFFBQVE7YUFDckI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFO29CQUNYLEtBQUssRUFBRTt3QkFDTCwwQkFBMEIsRUFBRSx5QkFBeUI7cUJBQ3REO2lCQUNGO2FBQ0Y7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsc0NBQXNDLEVBQUUsT0FBTzthQUNoRDtTQUNGO0tBQ0YsRUFDRCxpQkFBaUIsQ0FDbEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxLQUFLLFVBQVUseUJBQXlCLENBQ3RDLFFBQTZCO0lBRTdCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN2QixNQUFNLFFBQVEsR0FBRyxNQUFNLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU1RCxJQUFJLENBQUM7UUFDSCxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBMkIsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFvQixDQUFDO0lBQzFDLENBQUM7WUFBUyxDQUFDO1FBQ1Qsb0JBQW9CLEVBQUUsQ0FBQztJQUN6QixDQUFDO0FBQ0gsQ0FBQztBQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbmltcG9ydCB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcclxuaW1wb3J0IHsgcGFyc2VyIH0gZnJvbSBcInR5cGVzY3JpcHQtZXNsaW50XCI7XHJcbmltcG9ydCB7IHZpIH0gZnJvbSBcInZpdGVzdFwiO1xyXG5cclxuaW1wb3J0IHR5cGUgKiBhcyBBYWFNb2R1bGUgZnJvbSBcIi4uL2FhYVwiO1xyXG5pbXBvcnQgdHlwZSB7IFRlc3RCbG9ja0FuYWx5c2lzIH0gZnJvbSBcIi4uL2FhYVwiO1xyXG5cclxuaW1wb3J0IHsgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcclxuXHJcbi8qKiBNaW5pbWFsIGFuYWx5c2lzIGlucHV0IGFjY2VwdGVkIGJ5IHRoZSBtb2NrZWQgQUFBIGhlbHBlci4gKi9cclxuaW50ZXJmYWNlIE1vY2tlZEFuYWx5c2lzSW5wdXQge1xyXG4gIC8qKiBTZWN0aW9uIGNvbW1lbnRzIHJlbGV2YW50IHRvIHRoZSBydWxlIHVuZGVyIHRlc3QuICovXHJcbiAgc2VjdGlvbkNvbW1lbnRzOiB7XHJcbiAgICAvKiogUGhhc2UgbmFtZXMgZGVjbGFyZWQgYnkgdGhlIHN5bnRoZXRpYyBjb21tZW50LiAqL1xyXG4gICAgcGhhc2VzOiBUZXN0QmxvY2tBbmFseXNpc1tcInNlY3Rpb25Db21tZW50c1wiXVtudW1iZXJdW1wicGhhc2VzXCJdO1xyXG4gIH1bXTtcclxuICAvKiogU3RhdGVtZW50IG1ldGFkYXRhIHJlbGV2YW50IHRvIHRoZSBydWxlIHVuZGVyIHRlc3QuICovXHJcbiAgc3RhdGVtZW50czoge1xyXG4gICAgLyoqIFN5bnRoZXRpYyBzdGF0ZW1lbnQgbm9kZSBwcm92aWRlZCB0byB0aGUgcnVsZS4gKi9cclxuICAgIG5vZGU6IEVTVHJlZS5TdGF0ZW1lbnQ7XHJcblxyXG4gICAgLyoqIEFjdGl2ZSBwaGFzZXMgYXNzaWduZWQgdG8gdGhlIHN0YXRlbWVudC4gKi9cclxuICAgIHBoYXNlczogVGVzdEJsb2NrQW5hbHlzaXNbXCJzdGF0ZW1lbnRzXCJdW251bWJlcl1bXCJwaGFzZXNcIl07XHJcbiAgfVtdO1xyXG59XHJcblxyXG4vKiogTW9kdWxlIHNoYXBlIHJldHVybmVkIHdoZW4gdGhlIHJ1bGUgaXMgbG9hZGVkIGFmdGVyIG1vY2tpbmcgdGhlIEFBQSBoZWxwZXJzLiAqL1xyXG5pbnRlcmZhY2UgTW9ja2VkUnVsZU1vZHVsZSB7XHJcbiAgLyoqIFJ1bGUgaW1wbGVtZW50YXRpb24gdW5kZXIgdGVzdC4gKi9cclxuICBlbmZvcmNlQWFhUGhhc2VQdXJpdHlSdWxlOiB0eXBlb2YgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIG1vY2tlZCBBQUEgbW9kdWxlIHVzZWQgYnkgdGhlIHJ1bGUgdGVzdCBoZWxwZXIuXHJcbiAqIEBwYXJhbSBtb2NrZWRBbmFseXNpcyBNb2NrZWQgYW5hbHlzaXMgcmV0dXJuZWQgYnkgdGhlIGhlbHBlci5cclxuICogQHJldHVybnMgUGFydGlhbCBBQUEgbW9kdWxlIHVzZWQgZm9yIFZpdGVzdCBtb2NraW5nLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1vZHVsZSA9IGNyZWF0ZU1vY2tlZEFhYU1vZHVsZShjcmVhdGVNb2NrZWRBbmFseXNpcyh7IHNlY3Rpb25Db21tZW50czogW10sIHN0YXRlbWVudHM6IFtdIH0pKTtcclxuICogdm9pZCBtb2R1bGU7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlTW9ja2VkQWFhTW9kdWxlKFxyXG4gIG1vY2tlZEFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcclxuKTogUGFydGlhbDx0eXBlb2YgQWFhTW9kdWxlPiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGFuYWx5emVUZXN0QmxvY2s6ICgpOiBUZXN0QmxvY2tBbmFseXNpcyA9PiBtb2NrZWRBbmFseXNpcyxcclxuICAgIGhhc0Fzc2VydGlvbjogKCk6IGJvb2xlYW4gPT4gZmFsc2UsXHJcbiAgICBoYXNBc3luY0xvZ2ljOiAoKTogYm9vbGVhbiA9PiBmYWxzZSxcclxuICAgIGhhc0F3YWl0OiAoKTogYm9vbGVhbiA9PiBmYWxzZSxcclxuICAgIGhhc0NhcHR1cmFibGVBY3RSZXN1bHQ6ICgpOiBib29sZWFuID0+IGZhbHNlLFxyXG4gICAgaGFzTXV0YXRpb246ICgpOiBib29sZWFuID0+IGZhbHNlLFxyXG4gICAgaXNNZWFuaW5nZnVsQWN0U3RhdGVtZW50OiAoKTogYm9vbGVhbiA9PiBmYWxzZSxcclxuICAgIGlzU2V0dXBMaWtlU3RhdGVtZW50OiAoKTogYm9vbGVhbiA9PiBmYWxzZSxcclxuICAgIGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnQ6ICgpOiBib29sZWFuID0+IGZhbHNlLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgZnVsbCBhbmFseXNpcyBvYmplY3QgZnJvbSB0aGUgbWluaW1hbCBmaWVsZHMgdXNlZCBpbiB0ZXN0cy5cclxuICogQHBhcmFtIGFuYWx5c2lzIE1pbmltYWwgYW5hbHlzaXMgaW5wdXQgdXNlZCBieSB0ZXN0cy5cclxuICogQHJldHVybnMgQ29tcGxldGUgYW5hbHlzaXMgb2JqZWN0IGNvbnN1bWVkIGJ5IHRoZSBydWxlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlc3VsdCA9IGNyZWF0ZU1vY2tlZEFuYWx5c2lzKHsgc2VjdGlvbkNvbW1lbnRzOiBbXSwgc3RhdGVtZW50czogW10gfSk7XHJcbiAqIHZvaWQgcmVzdWx0O1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZU1vY2tlZEFuYWx5c2lzKFxyXG4gIGFuYWx5c2lzOiBNb2NrZWRBbmFseXNpc0lucHV0LFxyXG4pOiBUZXN0QmxvY2tBbmFseXNpcyB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGJvZHk6IGNyZWF0ZU1vY2tlZEJvZHkoKSxcclxuICAgIGJvZHlMaW5lQ291bnQ6IDAsXHJcbiAgICBjYWxsRXhwcmVzc2lvbjogY3JlYXRlTW9ja2VkQ2FsbEV4cHJlc3Npb24oKSxcclxuICAgIG5ld2xpbmU6IFwiXFxuXCIsXHJcbiAgICBzZWN0aW9uQ29tbWVudHM6IGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5tYXAoKHNlY3Rpb25Db21tZW50KSA9PiAoe1xyXG4gICAgICBjb21tZW50OiB7XHJcbiAgICAgICAgbG9jOiB7XHJcbiAgICAgICAgICBlbmQ6IHsgY29sdW1uOiAwLCBsaW5lOiAxIH0sXHJcbiAgICAgICAgICBzdGFydDogeyBjb2x1bW46IDAsIGxpbmU6IDEgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJhbmdlOiBbMCwgMF0sXHJcbiAgICAgICAgdHlwZTogXCJMaW5lXCIsXHJcbiAgICAgICAgdmFsdWU6IGAgJHtzZWN0aW9uQ29tbWVudC5waGFzZXMuam9pbihcIiAvIFwiKX1gLFxyXG4gICAgICB9LFxyXG4gICAgICBwaGFzZXM6IHNlY3Rpb25Db21tZW50LnBoYXNlcyxcclxuICAgIH0pKSxcclxuICAgIHNvdXJjZVRleHQ6IFwiXCIsXHJcbiAgICBzdGF0ZW1lbnRzOiBhbmFseXNpcy5zdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiAoe1xyXG4gICAgICBub2RlOiBzdGF0ZW1lbnQubm9kZSBhcyBUZXN0QmxvY2tBbmFseXNpc1tcInN0YXRlbWVudHNcIl1bbnVtYmVyXVtcIm5vZGVcIl0sXHJcbiAgICAgIHBoYXNlOiBzdGF0ZW1lbnQucGhhc2VzLmF0KC0xKSxcclxuICAgICAgcGhhc2VzOiBzdGF0ZW1lbnQucGhhc2VzLFxyXG4gICAgfSkpLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbWluaW1hbCBsb2NhdGVkIGJsb2NrIHN0YXRlbWVudCBmb3IgbW9ja2VkIEFBQSBhbmFseXNpcy5cclxuICogQHJldHVybnMgTWluaW1hbCBsb2NhdGVkIGJsb2NrIHN0YXRlbWVudC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBib2R5ID0gY3JlYXRlTW9ja2VkQm9keSgpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZU1vY2tlZEJvZHkoKTogVGVzdEJsb2NrQW5hbHlzaXNbXCJib2R5XCJdIHtcclxuICByZXR1cm4ge1xyXG4gICAgYm9keTogW10sXHJcbiAgICBsb2M6IHtcclxuICAgICAgZW5kOiB7IGNvbHVtbjogMCwgbGluZTogMSB9LFxyXG4gICAgICBzdGFydDogeyBjb2x1bW46IDAsIGxpbmU6IDEgfSxcclxuICAgIH0sXHJcbiAgICByYW5nZTogWzAsIDBdLFxyXG4gICAgdHlwZTogXCJCbG9ja1N0YXRlbWVudFwiLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbWluaW1hbCBsb2NhdGVkIGNhbGwgZXhwcmVzc2lvbiBmb3IgbW9ja2VkIEFBQSBhbmFseXNpcy5cclxuICogQHJldHVybnMgTWluaW1hbCBsb2NhdGVkIGNhbGwgZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBjYWxsRXhwcmVzc2lvbiA9IGNyZWF0ZU1vY2tlZENhbGxFeHByZXNzaW9uKCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlTW9ja2VkQ2FsbEV4cHJlc3Npb24oKTogVGVzdEJsb2NrQW5hbHlzaXNbXCJjYWxsRXhwcmVzc2lvblwiXSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGFyZ3VtZW50czogW10sXHJcbiAgICBjYWxsZWU6IHsgbmFtZTogXCJpdFwiLCB0eXBlOiBcIklkZW50aWZpZXJcIiB9IGFzIEVTVHJlZS5JZGVudGlmaWVyLFxyXG4gICAgbG9jOiB7XHJcbiAgICAgIGVuZDogeyBjb2x1bW46IDAsIGxpbmU6IDEgfSxcclxuICAgICAgc3RhcnQ6IHsgY29sdW1uOiAwLCBsaW5lOiAxIH0sXHJcbiAgICB9LFxyXG4gICAgb3B0aW9uYWw6IGZhbHNlLFxyXG4gICAgcmFuZ2U6IFswLCAwXSxcclxuICAgIHR5cGU6IFwiQ2FsbEV4cHJlc3Npb25cIixcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgbW9ja2VkIHJ1bGUgbGlzdGVuZXIgdXNlZCBieSB0aGUgaGVscGVyLlxyXG4gKiBAcGFyYW0gYW5hbHlzaXMgTW9ja2VkIGFuYWx5c2lzIHJldHVybmVkIGZyb20gYGFuYWx5emVUZXN0QmxvY2tgLlxyXG4gKiBAcGFyYW0gcmVwb3J0IFJlcG9ydCBzcHkgcGFzc2VkIGludG8gdGhlIG1vY2tlZCBydWxlIGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIENhbGwtZXhwcmVzc2lvbiBsaXN0ZW5lciBwcm9kdWNlZCBieSB0aGUgbW9ja2VkIHJ1bGUuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBsb2FkTW9ja2VkTGlzdGVuZXIoeyBzZWN0aW9uQ29tbWVudHM6IFtdLCBzdGF0ZW1lbnRzOiBbXSB9LCB2aS5mbigpKTtcclxuICogdm9pZCBsaXN0ZW5lcjtcclxuICogYGBgXHJcbiAqL1xyXG5hc3luYyBmdW5jdGlvbiBsb2FkTW9ja2VkTGlzdGVuZXIoXHJcbiAgYW5hbHlzaXM6IE1vY2tlZEFuYWx5c2lzSW5wdXQsXHJcbiAgcmVwb3J0OiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj4sXHJcbik6IFByb21pc2U8KChub2RlOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pID0+IHZvaWQpIHwgdW5kZWZpbmVkPiB7XHJcbiAgdmkucmVzZXRNb2R1bGVzKCk7XHJcbiAgdmkuZG9Nb2NrKFwiLi4vYWFhXCIsICgpID0+XHJcbiAgICBjcmVhdGVNb2NrZWRBYWFNb2R1bGUoY3JlYXRlTW9ja2VkQW5hbHlzaXMoYW5hbHlzaXMpKSxcclxuICApO1xyXG5cclxuICBjb25zdCBydWxlTW9kdWxlOiBNb2NrZWRSdWxlTW9kdWxlID0gYXdhaXQgaW1wb3J0KFwiLi9ydWxlXCIpO1xyXG5cclxuICByZXR1cm4gcnVsZU1vZHVsZS5lbmZvcmNlQWFhUGhhc2VQdXJpdHlSdWxlLmNyZWF0ZSh7IHJlcG9ydCB9IGFzIG5ldmVyKVxyXG4gICAgLkNhbGxFeHByZXNzaW9uIGFzICgobm9kZTogRVNUcmVlLkNhbGxFeHByZXNzaW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlc2V0cyB0aGUgbW9ja2VkIEFBQSBtb2R1bGUgc3RhdGUgYmV0d2VlbiB0ZXN0IHJ1bnMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogcmVzZXRNb2NrZWRBYWFNb2R1bGUoKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNldE1vY2tlZEFhYU1vZHVsZSgpOiB2b2lkIHtcclxuICB2aS5kb1VubW9jayhcIi4uL2FhYVwiKTtcclxuICB2aS5yZXNldE1vZHVsZXMoKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJ1bnMgdGhlIHJ1bGUgYWdhaW5zdCBvbmUgc291cmNlIHNuaXBwZXQuXHJcbiAqIEBwYXJhbSBjb2RlIFNvdXJjZSBjb2RlIHBhc3NlZCB0byB0aGUgbGludGVyLlxyXG4gKiBAcmV0dXJucyBMaW50IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IHRoZSBydWxlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1lc3NhZ2VzID0gcnVuUnVsZSgnaXQoXCJ3b3Jrc1wiLCAoKSA9PiB7fSk7Jyk7XHJcbiAqIHZvaWQgbWVzc2FnZXM7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gcnVuUnVsZShjb2RlOiBzdHJpbmcpOiBMaW50ZXIuTGludE1lc3NhZ2VbXSB7XHJcbiAgY29uc3QgbGludGVyID0gbmV3IExpbnRlcih7IGNvbmZpZ1R5cGU6IFwiZmxhdFwiIH0pO1xyXG5cclxuICByZXR1cm4gbGludGVyLnZlcmlmeShcclxuICAgIGNvZGUsXHJcbiAgICBbXHJcbiAgICAgIHtcclxuICAgICAgICBmaWxlczogW1wiKiovKi50c1wiXSxcclxuICAgICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcclxuICAgICAgICAgIGVjbWFWZXJzaW9uOiAyMDIyLFxyXG4gICAgICAgICAgcGFyc2VyLFxyXG4gICAgICAgICAgc291cmNlVHlwZTogXCJtb2R1bGVcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBsdWdpbnM6IHtcclxuICAgICAgICAgIGNvZGVwZXJmZWN0OiB7XHJcbiAgICAgICAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgICAgICAgXCJlbmZvcmNlLWFhYS1waGFzZS1wdXJpdHlcIjogZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBydWxlczoge1xyXG4gICAgICAgICAgXCJjb2RlcGVyZmVjdC9lbmZvcmNlLWFhYS1waGFzZS1wdXJpdHlcIjogXCJlcnJvclwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgXCJleGFtcGxlLnNwZWMudHNcIixcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogUnVucyB0aGUgcnVsZSB3aXRoIGEgbW9ja2VkIEFBQSBhbmFseXNpcyByZXN1bHQuXHJcbiAqIEBwYXJhbSBhbmFseXNpcyBNb2NrZWQgYW5hbHlzaXMgcmV0dXJuZWQgZnJvbSBgYW5hbHl6ZVRlc3RCbG9ja2AuXHJcbiAqIEByZXR1cm5zIENhcHR1cmVkIHJlcG9ydCBjYWxscyBpc3N1ZWQgYnkgdGhlIHJ1bGUuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY2FsbHMgPSBhd2FpdCBydW5SdWxlV2l0aE1vY2tlZEFuYWx5c2lzKHsgc2VjdGlvbkNvbW1lbnRzOiBbXSwgc3RhdGVtZW50czogW10gfSk7XHJcbiAqIHZvaWQgY2FsbHM7XHJcbiAqIGBgYFxyXG4gKi9cclxuYXN5bmMgZnVuY3Rpb24gcnVuUnVsZVdpdGhNb2NrZWRBbmFseXNpcyhcclxuICBhbmFseXNpczogTW9ja2VkQW5hbHlzaXNJbnB1dCxcclxuKTogUHJvbWlzZTx1bmtub3duW11bXT4ge1xyXG4gIGNvbnN0IHJlcG9ydCA9IHZpLmZuKCk7XHJcbiAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBsb2FkTW9ja2VkTGlzdGVuZXIoYW5hbHlzaXMsIHJlcG9ydCk7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBsaXN0ZW5lcj8uKHsgdHlwZTogXCJDYWxsRXhwcmVzc2lvblwiIH0gYXMgRVNUcmVlLkNhbGxFeHByZXNzaW9uKTtcclxuICAgIHJldHVybiByZXBvcnQubW9jay5jYWxscyBhcyB1bmtub3duW11bXTtcclxuICB9IGZpbmFsbHkge1xyXG4gICAgcmVzZXRNb2NrZWRBYWFNb2R1bGUoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IHJ1blJ1bGUsIHJ1blJ1bGVXaXRoTW9ja2VkQW5hbHlzaXMgfTtcclxuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/enforce-aaa-phase-purity/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,+EAA+E;AAC/E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAsCrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { analyzeTestBlock } from "../aaa/index.js";
|
|
2
|
-
import { reportPhasePurityViolations } from "./phase-purity-reporting.js";
|
|
3
|
-
/** Enforces pure Arrange, Act, and Assert behavior inside AAA-marked tests. */
|
|
4
|
-
const enforceAaaPhasePurityRule = {
|
|
5
|
-
create(context) {
|
|
6
|
-
return {
|
|
7
|
-
CallExpression(node) {
|
|
8
|
-
const analysis = analyzeTestBlock(context, node);
|
|
9
|
-
if (analysis === void 0) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
reportPhasePurityViolations(context, analysis);
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
},
|
|
16
|
-
meta: {
|
|
17
|
-
docs: {
|
|
18
|
-
description: "Keep setup, action, and assertions inside their intended AAA phases.",
|
|
19
|
-
recommended: false,
|
|
20
|
-
url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/enforce-aaa-phase-purity.md",
|
|
21
|
-
},
|
|
22
|
-
messages: {
|
|
23
|
-
actionInArrange: "Keep the function under test out of Arrange; reserve Arrange for setup only.",
|
|
24
|
-
assertionOutsideAssert: "Move assertions into the // Assert section so test logic does not leak earlier.",
|
|
25
|
-
asyncInArrange: "Do not trigger async behavior in Arrange.",
|
|
26
|
-
awaitOutsideAct: "Use await only inside the // Act section.",
|
|
27
|
-
missingMeaningfulAct: "The // Act section must contain a meaningful SUT interaction, not only utility or setup calls.",
|
|
28
|
-
mutationAfterAct: "Do not mutate test data after the // Act section has run.",
|
|
29
|
-
nonAssertionInAssert: "Keep the // Assert section focused on assertions and assertion-local values.",
|
|
30
|
-
setupAfterAct: "Do not continue arranging test data after the // Act section has started.",
|
|
31
|
-
},
|
|
32
|
-
schema: [],
|
|
33
|
-
type: "problem",
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
export { enforceAaaPhasePurityRule };
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9lbmZvcmNlLWFhYS1waGFzZS1wdXJpdHkvcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsK0VBQStFO0FBQy9FLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPO1lBQ0wsY0FBYyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUNELDJCQUEyQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRCxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxzRUFBc0U7WUFDeEUsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDJGQUEyRjtTQUNqRztRQUNELFFBQVEsRUFBRTtZQUNSLGVBQWUsRUFDYiw4RUFBOEU7WUFDaEYsc0JBQXNCLEVBQ3BCLGlGQUFpRjtZQUNuRixjQUFjLEVBQUUsMkNBQTJDO1lBQzNELGVBQWUsRUFBRSwyQ0FBMkM7WUFDNUQsb0JBQW9CLEVBQ2xCLGdHQUFnRztZQUNsRyxnQkFBZ0IsRUFDZCwyREFBMkQ7WUFDN0Qsb0JBQW9CLEVBQ2xCLDhFQUE4RTtZQUNoRixhQUFhLEVBQ1gsMkVBQTJFO1NBQzlFO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgYW5hbHl6ZVRlc3RCbG9jayB9IGZyb20gXCIuLi9hYWFcIjtcbmltcG9ydCB7IHJlcG9ydFBoYXNlUHVyaXR5VmlvbGF0aW9ucyB9IGZyb20gXCIuL3BoYXNlLXB1cml0eS1yZXBvcnRpbmdcIjtcblxuLyoqIEVuZm9yY2VzIHB1cmUgQXJyYW5nZSwgQWN0LCBhbmQgQXNzZXJ0IGJlaGF2aW9yIGluc2lkZSBBQUEtbWFya2VkIHRlc3RzLiAqL1xuY29uc3QgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVUZXN0QmxvY2soY29udGV4dCwgbm9kZSk7XG4gICAgICAgIGlmIChhbmFseXNpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlcG9ydFBoYXNlUHVyaXR5VmlvbGF0aW9ucyhjb250ZXh0LCBhbmFseXNpcyk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFJ1bGUuUnVsZUxpc3RlbmVyO1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiS2VlcCBzZXR1cCwgYWN0aW9uLCBhbmQgYXNzZXJ0aW9ucyBpbnNpZGUgdGhlaXIgaW50ZW5kZWQgQUFBIHBoYXNlcy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL2VuZm9yY2UtYWFhLXBoYXNlLXB1cml0eS5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIGFjdGlvbkluQXJyYW5nZTpcbiAgICAgICAgXCJLZWVwIHRoZSBmdW5jdGlvbiB1bmRlciB0ZXN0IG91dCBvZiBBcnJhbmdlOyByZXNlcnZlIEFycmFuZ2UgZm9yIHNldHVwIG9ubHkuXCIsXG4gICAgICBhc3NlcnRpb25PdXRzaWRlQXNzZXJ0OlxuICAgICAgICBcIk1vdmUgYXNzZXJ0aW9ucyBpbnRvIHRoZSAvLyBBc3NlcnQgc2VjdGlvbiBzbyB0ZXN0IGxvZ2ljIGRvZXMgbm90IGxlYWsgZWFybGllci5cIixcbiAgICAgIGFzeW5jSW5BcnJhbmdlOiBcIkRvIG5vdCB0cmlnZ2VyIGFzeW5jIGJlaGF2aW9yIGluIEFycmFuZ2UuXCIsXG4gICAgICBhd2FpdE91dHNpZGVBY3Q6IFwiVXNlIGF3YWl0IG9ubHkgaW5zaWRlIHRoZSAvLyBBY3Qgc2VjdGlvbi5cIixcbiAgICAgIG1pc3NpbmdNZWFuaW5nZnVsQWN0OlxuICAgICAgICBcIlRoZSAvLyBBY3Qgc2VjdGlvbiBtdXN0IGNvbnRhaW4gYSBtZWFuaW5nZnVsIFNVVCBpbnRlcmFjdGlvbiwgbm90IG9ubHkgdXRpbGl0eSBvciBzZXR1cCBjYWxscy5cIixcbiAgICAgIG11dGF0aW9uQWZ0ZXJBY3Q6XG4gICAgICAgIFwiRG8gbm90IG11dGF0ZSB0ZXN0IGRhdGEgYWZ0ZXIgdGhlIC8vIEFjdCBzZWN0aW9uIGhhcyBydW4uXCIsXG4gICAgICBub25Bc3NlcnRpb25JbkFzc2VydDpcbiAgICAgICAgXCJLZWVwIHRoZSAvLyBBc3NlcnQgc2VjdGlvbiBmb2N1c2VkIG9uIGFzc2VydGlvbnMgYW5kIGFzc2VydGlvbi1sb2NhbCB2YWx1ZXMuXCIsXG4gICAgICBzZXR1cEFmdGVyQWN0OlxuICAgICAgICBcIkRvIG5vdCBjb250aW51ZSBhcnJhbmdpbmcgdGVzdCBkYXRhIGFmdGVyIHRoZSAvLyBBY3Qgc2VjdGlvbiBoYXMgc3RhcnRlZC5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBlbmZvcmNlQWFhUGhhc2VQdXJpdHlSdWxlIH07XG4iXX0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { 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
|
-
* Runs the prefer-vi-mocked-import rule with autofix enabled.
|
|
11
|
-
* @param code Input code.
|
|
12
|
-
* @returns Fixed output and messages.
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* const result = runFix("const value = 1;\n");
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
declare const runFix: (code: string) => FixRunResult;
|
|
19
|
-
export { runFix };
|
|
20
|
-
//# 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-vi-mocked-import/rule-test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,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;AAED;;;;;;;;GAQG;AACH,QAAA,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,YA8B9B,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Linter } from "eslint";
|
|
2
|
-
import { parser } from "typescript-eslint";
|
|
3
|
-
import { preferViMockedImportRule } from "./rule.js";
|
|
4
|
-
/**
|
|
5
|
-
* Runs the prefer-vi-mocked-import rule with autofix enabled.
|
|
6
|
-
* @param code Input code.
|
|
7
|
-
* @returns Fixed output and messages.
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* const result = runFix("const value = 1;\n");
|
|
11
|
-
* ```
|
|
12
|
-
*/
|
|
13
|
-
const runFix = (code) => {
|
|
14
|
-
const linter = new Linter({ configType: "flat" });
|
|
15
|
-
const result = linter.verifyAndFix(code, [
|
|
16
|
-
{
|
|
17
|
-
files: ["**/*.ts"],
|
|
18
|
-
languageOptions: {
|
|
19
|
-
ecmaVersion: 2022,
|
|
20
|
-
parser,
|
|
21
|
-
parserOptions: { range: true },
|
|
22
|
-
sourceType: "module",
|
|
23
|
-
},
|
|
24
|
-
plugins: {
|
|
25
|
-
codeperfect: {
|
|
26
|
-
rules: {
|
|
27
|
-
"prefer-vi-mocked-import": preferViMockedImportRule,
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
rules: {
|
|
32
|
-
"codeperfect/prefer-vi-mocked-import": "error",
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
], { filename: "example.spec.ts" });
|
|
36
|
-
return { messages: result.messages, output: result.output };
|
|
37
|
-
};
|
|
38
|
-
export { runFix };
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS10ZXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvcnVsZS10ZXN0LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBV2xEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQWdCLEVBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVsRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUNoQyxJQUFJLEVBQ0o7UUFDRTtZQUNFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQixlQUFlLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE1BQU07Z0JBQ04sYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDOUIsVUFBVSxFQUFFLFFBQVE7YUFDckI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFO29CQUNYLEtBQUssRUFBRTt3QkFDTCx5QkFBeUIsRUFBRSx3QkFBd0I7cUJBQ3BEO2lCQUNGO2FBQ0Y7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wscUNBQXFDLEVBQUUsT0FBTzthQUMvQztTQUNGO0tBQ0YsRUFDRCxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUNoQyxDQUFDO0lBRUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xyXG5pbXBvcnQgeyBwYXJzZXIgfSBmcm9tIFwidHlwZXNjcmlwdC1lc2xpbnRcIjtcclxuXHJcbmltcG9ydCB7IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcclxuXHJcbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cclxuaW50ZXJmYWNlIEZpeFJ1blJlc3VsdCB7XHJcbiAgLyoqIExpbnQgbWVzc2FnZXMgcHJvZHVjZWQgZHVyaW5nIHRoZSBydW4uICovXHJcbiAgbWVzc2FnZXM6IExpbnRlci5MaW50TWVzc2FnZVtdO1xyXG5cclxuICAvKiogT3V0cHV0IGNvZGUgYWZ0ZXIgZml4ZXMuICovXHJcbiAgb3V0cHV0OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSdW5zIHRoZSBwcmVmZXItdmktbW9ja2VkLWltcG9ydCBydWxlIHdpdGggYXV0b2ZpeCBlbmFibGVkLlxyXG4gKiBAcGFyYW0gY29kZSBJbnB1dCBjb2RlLlxyXG4gKiBAcmV0dXJucyBGaXhlZCBvdXRwdXQgYW5kIG1lc3NhZ2VzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlc3VsdCA9IHJ1bkZpeChcImNvbnN0IHZhbHVlID0gMTtcXG5cIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgcnVuRml4ID0gKGNvZGU6IHN0cmluZyk6IEZpeFJ1blJlc3VsdCA9PiB7XHJcbiAgY29uc3QgbGludGVyID0gbmV3IExpbnRlcih7IGNvbmZpZ1R5cGU6IFwiZmxhdFwiIH0pO1xyXG5cclxuICBjb25zdCByZXN1bHQgPSBsaW50ZXIudmVyaWZ5QW5kRml4KFxyXG4gICAgY29kZSxcclxuICAgIFtcclxuICAgICAge1xyXG4gICAgICAgIGZpbGVzOiBbXCIqKi8qLnRzXCJdLFxyXG4gICAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xyXG4gICAgICAgICAgZWNtYVZlcnNpb246IDIwMjIsXHJcbiAgICAgICAgICBwYXJzZXIsXHJcbiAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7IHJhbmdlOiB0cnVlIH0sXHJcbiAgICAgICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgICAgY29kZXBlcmZlY3Q6IHtcclxuICAgICAgICAgICAgcnVsZXM6IHtcclxuICAgICAgICAgICAgICBcInByZWZlci12aS1tb2NrZWQtaW1wb3J0XCI6IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBydWxlczoge1xyXG4gICAgICAgICAgXCJjb2RlcGVyZmVjdC9wcmVmZXItdmktbW9ja2VkLWltcG9ydFwiOiBcImVycm9yXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB7IGZpbGVuYW1lOiBcImV4YW1wbGUuc3BlYy50c1wiIH0sXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHsgbWVzc2FnZXM6IHJlc3VsdC5tZXNzYWdlcywgb3V0cHV0OiByZXN1bHQub3V0cHV0IH07XHJcbn07XHJcblxyXG5leHBvcnQgeyBydW5GaXggfTtcclxuIl19
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
-
import type { ShorthandContext, SupportedProperty } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Checks whether a property can remain in shorthand form after replacement.
|
|
5
|
-
* @param context Property shorthand decision context.
|
|
6
|
-
* @returns True when shorthand syntax remains valid.
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* const keepShorthand = canUseShorthand(context);
|
|
10
|
-
* ```
|
|
11
|
-
*/
|
|
12
|
-
declare function canUseShorthand(context: ShorthandContext): boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Resolves the expression returned by the mock factory.
|
|
15
|
-
* @param factoryArgument Mock factory function expression.
|
|
16
|
-
* @returns Returned expression when one is present.
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const returnExpression = getFactoryReturnExpression(factoryArgument);
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
declare function getFactoryReturnExpression(factoryArgument: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression): TSESTree.Expression | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Extracts the module specifier from a mock call argument.
|
|
25
|
-
* @param moduleArgument Import expression or string literal argument.
|
|
26
|
-
* @returns Static module specifier when it can be determined.
|
|
27
|
-
* @example
|
|
28
|
-
* ```typescript
|
|
29
|
-
* const moduleSpecifier = getModuleSpecifier(moduleArgument);
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
declare function getModuleSpecifier(moduleArgument: TSESTree.Expression): string | undefined;
|
|
33
|
-
/**
|
|
34
|
-
* Converts an object property key node into a stable string name.
|
|
35
|
-
* @param propertyKey Property key node from the object literal.
|
|
36
|
-
* @returns Property name when the key is statically known.
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* const propertyName = getPropertyName(property.key);
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
declare function getPropertyName(propertyKey: TSESTree.PropertyName): string | undefined;
|
|
43
|
-
/**
|
|
44
|
-
* Checks whether an expression's cast chain contains an escape-hatch cast through unknown or any.
|
|
45
|
-
* @param expression Expression to inspect.
|
|
46
|
-
* @returns True when at least one cast in the chain uses unknown or any as the type annotation.
|
|
47
|
-
* @example
|
|
48
|
-
* ```typescript
|
|
49
|
-
* const isEscapeHatch = hasEscapeHatchCast(expression);
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
declare function hasEscapeHatchCast(expression: TSESTree.Expression): boolean;
|
|
53
|
-
/**
|
|
54
|
-
* Narrows object literal elements to the subset the fixer can rewrite safely.
|
|
55
|
-
* @param property Object literal element to inspect.
|
|
56
|
-
* @returns True when the property is supported by the fixer.
|
|
57
|
-
* @example
|
|
58
|
-
* ```typescript
|
|
59
|
-
* const supported = isSupportedProperty(property);
|
|
60
|
-
* ```
|
|
61
|
-
*/
|
|
62
|
-
declare function isSupportedProperty(property: TSESTree.ObjectLiteralElement): property is SupportedProperty;
|
|
63
|
-
/**
|
|
64
|
-
* Detects `vi.mock(...)` and `vi.doMock(...)` calls.
|
|
65
|
-
* @param node Call expression being inspected.
|
|
66
|
-
* @returns True when the call targets a Vitest mock factory.
|
|
67
|
-
* @example
|
|
68
|
-
* ```typescript
|
|
69
|
-
* const isMockCall = isVitestMockCall(callExpression);
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
declare function isVitestMockCall(node: TSESTree.CallExpression): boolean;
|
|
73
|
-
/**
|
|
74
|
-
* Determines whether the fixed object literal must be parenthesized.
|
|
75
|
-
* @param factoryArgument Mock factory function expression.
|
|
76
|
-
* @param returnExpression Expression returned by the factory.
|
|
77
|
-
* @param objectExpression Object literal being rewritten.
|
|
78
|
-
* @returns True when parentheses are required around the object literal.
|
|
79
|
-
* @example
|
|
80
|
-
* ```typescript
|
|
81
|
-
* const wrapObject = shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression);
|
|
82
|
-
* ```
|
|
83
|
-
*/
|
|
84
|
-
declare function shouldWrapImplicitObject(factoryArgument: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression, returnExpression: TSESTree.Expression, objectExpression: TSESTree.ObjectExpression): boolean;
|
|
85
|
-
/**
|
|
86
|
-
* Checks whether an expression's cast chain contains an escape-hatch cast through unknown or any.
|
|
87
|
-
* Removes surrounding cast wrappers from an expression.
|
|
88
|
-
* @param expression Expression to unwrap.
|
|
89
|
-
* @returns The innermost non-cast expression.
|
|
90
|
-
* @example
|
|
91
|
-
* ```typescript
|
|
92
|
-
* const baseExpression = unwrapExpression(expression);
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
declare function unwrapExpression(expression: TSESTree.Expression): TSESTree.Expression;
|
|
96
|
-
export { canUseShorthand, getFactoryReturnExpression, getModuleSpecifier, getPropertyName, hasEscapeHatchCast, isSupportedProperty, isVitestMockCall, shouldWrapImplicitObject, unwrapExpression, };
|
|
97
|
-
//# sourceMappingURL=ast-helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/ast-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnE;;;;;;;;GAQG;AACH,iBAAS,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAU3D;AAED;;;;;;;;GAQG;AACH,iBAAS,0BAA0B,CACjC,eAAe,EACX,QAAQ,CAAC,uBAAuB,GAChC,QAAQ,CAAC,kBAAkB,GAC9B,QAAQ,CAAC,UAAU,GAAG,SAAS,CAYjC;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CACzB,cAAc,EAAE,QAAQ,CAAC,UAAU,GAClC,MAAM,GAAG,SAAS,CAkBpB;AAED;;;;;;;;GAQG;AACH,iBAAS,eAAe,CACtB,WAAW,EAAE,QAAQ,CAAC,YAAY,GACjC,MAAM,GAAG,SAAS,CAapB;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,OAAO,CAoBpE;AAED;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAC1B,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,GACtC,QAAQ,IAAI,iBAAiB,CAQ/B;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,GAAG,OAAO,CAahE;AAED;;;;;;;;;;GAUG;AACH,iBAAS,wBAAwB,CAC/B,eAAe,EACX,QAAQ,CAAC,uBAAuB,GAChC,QAAQ,CAAC,kBAAkB,EAC/B,gBAAgB,EAAE,QAAQ,CAAC,UAAU,EACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,GAC1C,OAAO,CAMT;AAED;;;;;;;;;GASG;AACH,iBAAS,gBAAgB,CACvB,UAAU,EAAE,QAAQ,CAAC,UAAU,GAC9B,QAAQ,CAAC,UAAU,CAYrB;AAED,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GACjB,CAAC"}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
-
/**
|
|
3
|
-
* Checks whether a property can remain in shorthand form after replacement.
|
|
4
|
-
* @param context Property shorthand decision context.
|
|
5
|
-
* @returns True when shorthand syntax remains valid.
|
|
6
|
-
* @example
|
|
7
|
-
* ```typescript
|
|
8
|
-
* const keepShorthand = canUseShorthand(context);
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
function canUseShorthand(context) {
|
|
12
|
-
const { baseValue, keyName, needsCast, property } = context;
|
|
13
|
-
return (!needsCast &&
|
|
14
|
-
baseValue.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
15
|
-
property.key.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
16
|
-
property.key.name === keyName &&
|
|
17
|
-
baseValue.name === keyName);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Resolves the expression returned by the mock factory.
|
|
21
|
-
* @param factoryArgument Mock factory function expression.
|
|
22
|
-
* @returns Returned expression when one is present.
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* const returnExpression = getFactoryReturnExpression(factoryArgument);
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
function getFactoryReturnExpression(factoryArgument) {
|
|
29
|
-
if (factoryArgument.body.type !== TSESTree.AST_NODE_TYPES.BlockStatement) {
|
|
30
|
-
return factoryArgument.body;
|
|
31
|
-
}
|
|
32
|
-
const returnStatement = factoryArgument.body.body.find((statement) => statement.type === TSESTree.AST_NODE_TYPES.ReturnStatement &&
|
|
33
|
-
statement.argument !== null);
|
|
34
|
-
return returnStatement?.argument ?? void 0;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Extracts the module specifier from a mock call argument.
|
|
38
|
-
* @param moduleArgument Import expression or string literal argument.
|
|
39
|
-
* @returns Static module specifier when it can be determined.
|
|
40
|
-
* @example
|
|
41
|
-
* ```typescript
|
|
42
|
-
* const moduleSpecifier = getModuleSpecifier(moduleArgument);
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
function getModuleSpecifier(moduleArgument) {
|
|
46
|
-
if (moduleArgument.type === TSESTree.AST_NODE_TYPES.ImportExpression) {
|
|
47
|
-
const { source } = moduleArgument;
|
|
48
|
-
if (source.type === TSESTree.AST_NODE_TYPES.Literal &&
|
|
49
|
-
typeof source.value === "string") {
|
|
50
|
-
return source.value;
|
|
51
|
-
}
|
|
52
|
-
return void 0;
|
|
53
|
-
}
|
|
54
|
-
return moduleArgument.type === TSESTree.AST_NODE_TYPES.Literal &&
|
|
55
|
-
typeof moduleArgument.value === "string"
|
|
56
|
-
? moduleArgument.value
|
|
57
|
-
: void 0;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Converts an object property key node into a stable string name.
|
|
61
|
-
* @param propertyKey Property key node from the object literal.
|
|
62
|
-
* @returns Property name when the key is statically known.
|
|
63
|
-
* @example
|
|
64
|
-
* ```typescript
|
|
65
|
-
* const propertyName = getPropertyName(property.key);
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
function getPropertyName(propertyKey) {
|
|
69
|
-
if (propertyKey.type === TSESTree.AST_NODE_TYPES.Identifier) {
|
|
70
|
-
return propertyKey.name;
|
|
71
|
-
}
|
|
72
|
-
if (propertyKey.type === TSESTree.AST_NODE_TYPES.Literal) {
|
|
73
|
-
return typeof propertyKey.value === "string" ||
|
|
74
|
-
typeof propertyKey.value === "number"
|
|
75
|
-
? String(propertyKey.value)
|
|
76
|
-
: void 0;
|
|
77
|
-
}
|
|
78
|
-
return void 0;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Checks whether an expression's cast chain contains an escape-hatch cast through unknown or any.
|
|
82
|
-
* @param expression Expression to inspect.
|
|
83
|
-
* @returns True when at least one cast in the chain uses unknown or any as the type annotation.
|
|
84
|
-
* @example
|
|
85
|
-
* ```typescript
|
|
86
|
-
* const isEscapeHatch = hasEscapeHatchCast(expression);
|
|
87
|
-
* ```
|
|
88
|
-
*/
|
|
89
|
-
function hasEscapeHatchCast(expression) {
|
|
90
|
-
let current = expression;
|
|
91
|
-
while (current.type === TSESTree.AST_NODE_TYPES.TSAsExpression ||
|
|
92
|
-
current.type === TSESTree.AST_NODE_TYPES.TSTypeAssertion ||
|
|
93
|
-
current.type === TSESTree.AST_NODE_TYPES.TSSatisfiesExpression) {
|
|
94
|
-
if (current.typeAnnotation.type ===
|
|
95
|
-
TSESTree.AST_NODE_TYPES.TSUnknownKeyword ||
|
|
96
|
-
current.typeAnnotation.type === TSESTree.AST_NODE_TYPES.TSAnyKeyword) {
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
current = current.expression;
|
|
100
|
-
}
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Narrows object literal elements to the subset the fixer can rewrite safely.
|
|
105
|
-
* @param property Object literal element to inspect.
|
|
106
|
-
* @returns True when the property is supported by the fixer.
|
|
107
|
-
* @example
|
|
108
|
-
* ```typescript
|
|
109
|
-
* const supported = isSupportedProperty(property);
|
|
110
|
-
* ```
|
|
111
|
-
*/
|
|
112
|
-
function isSupportedProperty(property) {
|
|
113
|
-
return (property.type === TSESTree.AST_NODE_TYPES.Property &&
|
|
114
|
-
!property.computed &&
|
|
115
|
-
property.kind === "init" &&
|
|
116
|
-
!property.method &&
|
|
117
|
-
property.value.type !== TSESTree.AST_NODE_TYPES.AssignmentPattern);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Detects `vi.mock(...)` and `vi.doMock(...)` calls.
|
|
121
|
-
* @param node Call expression being inspected.
|
|
122
|
-
* @returns True when the call targets a Vitest mock factory.
|
|
123
|
-
* @example
|
|
124
|
-
* ```typescript
|
|
125
|
-
* const isMockCall = isVitestMockCall(callExpression);
|
|
126
|
-
* ```
|
|
127
|
-
*/
|
|
128
|
-
function isVitestMockCall(node) {
|
|
129
|
-
if (node.callee.type !== TSESTree.AST_NODE_TYPES.MemberExpression) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
const { object, property } = node.callee;
|
|
133
|
-
return (object.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
134
|
-
object.name === "vi" &&
|
|
135
|
-
property.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
136
|
-
(property.name === "mock" || property.name === "doMock"));
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Determines whether the fixed object literal must be parenthesized.
|
|
140
|
-
* @param factoryArgument Mock factory function expression.
|
|
141
|
-
* @param returnExpression Expression returned by the factory.
|
|
142
|
-
* @param objectExpression Object literal being rewritten.
|
|
143
|
-
* @returns True when parentheses are required around the object literal.
|
|
144
|
-
* @example
|
|
145
|
-
* ```typescript
|
|
146
|
-
* const wrapObject = shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression);
|
|
147
|
-
* ```
|
|
148
|
-
*/
|
|
149
|
-
function shouldWrapImplicitObject(factoryArgument, returnExpression, objectExpression) {
|
|
150
|
-
return (factoryArgument.body.type !== TSESTree.AST_NODE_TYPES.BlockStatement &&
|
|
151
|
-
(returnExpression.range[0] !== objectExpression.range[0] ||
|
|
152
|
-
returnExpression.range[1] !== objectExpression.range[1]));
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Checks whether an expression's cast chain contains an escape-hatch cast through unknown or any.
|
|
156
|
-
* Removes surrounding cast wrappers from an expression.
|
|
157
|
-
* @param expression Expression to unwrap.
|
|
158
|
-
* @returns The innermost non-cast expression.
|
|
159
|
-
* @example
|
|
160
|
-
* ```typescript
|
|
161
|
-
* const baseExpression = unwrapExpression(expression);
|
|
162
|
-
* ```
|
|
163
|
-
*/
|
|
164
|
-
function unwrapExpression(expression) {
|
|
165
|
-
let currentExpression = expression;
|
|
166
|
-
while (currentExpression.type === TSESTree.AST_NODE_TYPES.TSAsExpression ||
|
|
167
|
-
currentExpression.type === TSESTree.AST_NODE_TYPES.TSSatisfiesExpression ||
|
|
168
|
-
currentExpression.type === TSESTree.AST_NODE_TYPES.TSTypeAssertion) {
|
|
169
|
-
currentExpression = currentExpression.expression;
|
|
170
|
-
}
|
|
171
|
-
return currentExpression;
|
|
172
|
-
}
|
|
173
|
-
export { canUseShorthand, getFactoryReturnExpression, getModuleSpecifier, getPropertyName, hasEscapeHatchCast, isSupportedProperty, isVitestMockCall, shouldWrapImplicitObject, unwrapExpression, };
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpdGVzdC1pbmNyZW1lbnRhbC1jYXN0cy9hc3QtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxPQUF5QjtJQUNoRCxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTVELE9BQU8sQ0FDTCxDQUFDLFNBQVM7UUFDVixTQUFTLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVTtRQUNyRCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVU7UUFDeEQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUM3QixTQUFTLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FDM0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsMEJBQTBCLENBQ2pDLGVBRStCO0lBRS9CLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6RSxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDcEQsQ0FBQyxTQUFTLEVBQXlDLEVBQUUsQ0FDbkQsU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWU7UUFDMUQsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQzlCLENBQUM7SUFFRixP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O1FBQ3hFLGlCQUFpQixDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFDbEUsQ0FBQztRQUNELGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxpQkFBaUIsQ0FBQztBQUMzQixDQUFDO0FBRUQsT0FBTyxFQUNMLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEdBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUU0VTVHJlZSB9IGZyb20gXCJAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHNcIjtcclxuXHJcbmltcG9ydCB0eXBlIHsgU2hvcnRoYW5kQ29udGV4dCwgU3VwcG9ydGVkUHJvcGVydHkgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGEgcHJvcGVydHkgY2FuIHJlbWFpbiBpbiBzaG9ydGhhbmQgZm9ybSBhZnRlciByZXBsYWNlbWVudC5cclxuICogQHBhcmFtIGNvbnRleHQgUHJvcGVydHkgc2hvcnRoYW5kIGRlY2lzaW9uIGNvbnRleHQuXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiBzaG9ydGhhbmQgc3ludGF4IHJlbWFpbnMgdmFsaWQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3Qga2VlcFNob3J0aGFuZCA9IGNhblVzZVNob3J0aGFuZChjb250ZXh0KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjYW5Vc2VTaG9ydGhhbmQoY29udGV4dDogU2hvcnRoYW5kQ29udGV4dCk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHsgYmFzZVZhbHVlLCBrZXlOYW1lLCBuZWVkc0Nhc3QsIHByb3BlcnR5IH0gPSBjb250ZXh0O1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgIW5lZWRzQ2FzdCAmJlxyXG4gICAgYmFzZVZhbHVlLnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcclxuICAgIHByb3BlcnR5LmtleS50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyICYmXHJcbiAgICBwcm9wZXJ0eS5rZXkubmFtZSA9PT0ga2V5TmFtZSAmJlxyXG4gICAgYmFzZVZhbHVlLm5hbWUgPT09IGtleU5hbWVcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzb2x2ZXMgdGhlIGV4cHJlc3Npb24gcmV0dXJuZWQgYnkgdGhlIG1vY2sgZmFjdG9yeS5cclxuICogQHBhcmFtIGZhY3RvcnlBcmd1bWVudCBNb2NrIGZhY3RvcnkgZnVuY3Rpb24gZXhwcmVzc2lvbi5cclxuICogQHJldHVybnMgUmV0dXJuZWQgZXhwcmVzc2lvbiB3aGVuIG9uZSBpcyBwcmVzZW50LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJldHVybkV4cHJlc3Npb24gPSBnZXRGYWN0b3J5UmV0dXJuRXhwcmVzc2lvbihmYWN0b3J5QXJndW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldEZhY3RvcnlSZXR1cm5FeHByZXNzaW9uKFxyXG4gIGZhY3RvcnlBcmd1bWVudDpcclxuICAgIHwgVFNFU1RyZWUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cclxuICAgIHwgVFNFU1RyZWUuRnVuY3Rpb25FeHByZXNzaW9uLFxyXG4pOiBUU0VTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoZmFjdG9yeUFyZ3VtZW50LmJvZHkudHlwZSAhPT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuQmxvY2tTdGF0ZW1lbnQpIHtcclxuICAgIHJldHVybiBmYWN0b3J5QXJndW1lbnQuYm9keTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IGZhY3RvcnlBcmd1bWVudC5ib2R5LmJvZHkuZmluZChcclxuICAgIChzdGF0ZW1lbnQpOiBzdGF0ZW1lbnQgaXMgVFNFU1RyZWUuUmV0dXJuU3RhdGVtZW50ID0+XHJcbiAgICAgIHN0YXRlbWVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5SZXR1cm5TdGF0ZW1lbnQgJiZcclxuICAgICAgc3RhdGVtZW50LmFyZ3VtZW50ICE9PSBudWxsLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiByZXR1cm5TdGF0ZW1lbnQ/LmFyZ3VtZW50ID8/IHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3RzIHRoZSBtb2R1bGUgc3BlY2lmaWVyIGZyb20gYSBtb2NrIGNhbGwgYXJndW1lbnQuXHJcbiAqIEBwYXJhbSBtb2R1bGVBcmd1bWVudCBJbXBvcnQgZXhwcmVzc2lvbiBvciBzdHJpbmcgbGl0ZXJhbCBhcmd1bWVudC5cclxuICogQHJldHVybnMgU3RhdGljIG1vZHVsZSBzcGVjaWZpZXIgd2hlbiBpdCBjYW4gYmUgZGV0ZXJtaW5lZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBnZXRNb2R1bGVTcGVjaWZpZXIobW9kdWxlQXJndW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldE1vZHVsZVNwZWNpZmllcihcclxuICBtb2R1bGVBcmd1bWVudDogVFNFU1RyZWUuRXhwcmVzc2lvbixcclxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICBpZiAobW9kdWxlQXJndW1lbnQudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuSW1wb3J0RXhwcmVzc2lvbikge1xyXG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IG1vZHVsZUFyZ3VtZW50O1xyXG5cclxuICAgIGlmIChcclxuICAgICAgc291cmNlLnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiZcclxuICAgICAgdHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gXCJzdHJpbmdcIlxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBzb3VyY2UudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIHJldHVybiBtb2R1bGVBcmd1bWVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5MaXRlcmFsICYmXHJcbiAgICB0eXBlb2YgbW9kdWxlQXJndW1lbnQudmFsdWUgPT09IFwic3RyaW5nXCJcclxuICAgID8gbW9kdWxlQXJndW1lbnQudmFsdWVcclxuICAgIDogdm9pZCAwO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydHMgYW4gb2JqZWN0IHByb3BlcnR5IGtleSBub2RlIGludG8gYSBzdGFibGUgc3RyaW5nIG5hbWUuXHJcbiAqIEBwYXJhbSBwcm9wZXJ0eUtleSBQcm9wZXJ0eSBrZXkgbm9kZSBmcm9tIHRoZSBvYmplY3QgbGl0ZXJhbC5cclxuICogQHJldHVybnMgUHJvcGVydHkgbmFtZSB3aGVuIHRoZSBrZXkgaXMgc3RhdGljYWxseSBrbm93bi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWUocHJvcGVydHkua2V5KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWUoXHJcbiAgcHJvcGVydHlLZXk6IFRTRVNUcmVlLlByb3BlcnR5TmFtZSxcclxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICBpZiAocHJvcGVydHlLZXkudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikge1xyXG4gICAgcmV0dXJuIHByb3BlcnR5S2V5Lm5hbWU7XHJcbiAgfVxyXG5cclxuICBpZiAocHJvcGVydHlLZXkudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuTGl0ZXJhbCkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBwcm9wZXJ0eUtleS52YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fFxyXG4gICAgICB0eXBlb2YgcHJvcGVydHlLZXkudmFsdWUgPT09IFwibnVtYmVyXCJcclxuICAgICAgPyBTdHJpbmcocHJvcGVydHlLZXkudmFsdWUpXHJcbiAgICAgIDogdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGV4cHJlc3Npb24ncyBjYXN0IGNoYWluIGNvbnRhaW5zIGFuIGVzY2FwZS1oYXRjaCBjYXN0IHRocm91Z2ggdW5rbm93biBvciBhbnkuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIEV4cHJlc3Npb24gdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMgVHJ1ZSB3aGVuIGF0IGxlYXN0IG9uZSBjYXN0IGluIHRoZSBjaGFpbiB1c2VzIHVua25vd24gb3IgYW55IGFzIHRoZSB0eXBlIGFubm90YXRpb24uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgaXNFc2NhcGVIYXRjaCA9IGhhc0VzY2FwZUhhdGNoQ2FzdChleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNFc2NhcGVIYXRjaENhc3QoZXhwcmVzc2lvbjogVFNFU1RyZWUuRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xyXG4gIGxldCBjdXJyZW50OiBUU0VTVHJlZS5FeHByZXNzaW9uID0gZXhwcmVzc2lvbjtcclxuXHJcbiAgd2hpbGUgKFxyXG4gICAgY3VycmVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU0FzRXhwcmVzc2lvbiB8fFxyXG4gICAgY3VycmVudC50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU1R5cGVBc3NlcnRpb24gfHxcclxuICAgIGN1cnJlbnQudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuVFNTYXRpc2ZpZXNFeHByZXNzaW9uXHJcbiAgKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGN1cnJlbnQudHlwZUFubm90YXRpb24udHlwZSA9PT1cclxuICAgICAgICBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU1Vua25vd25LZXl3b3JkIHx8XHJcbiAgICAgIGN1cnJlbnQudHlwZUFubm90YXRpb24udHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuVFNBbnlLZXl3b3JkXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudCA9IGN1cnJlbnQuZXhwcmVzc2lvbjtcclxuICB9XHJcblxyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5hcnJvd3Mgb2JqZWN0IGxpdGVyYWwgZWxlbWVudHMgdG8gdGhlIHN1YnNldCB0aGUgZml4ZXIgY2FuIHJld3JpdGUgc2FmZWx5LlxyXG4gKiBAcGFyYW0gcHJvcGVydHkgT2JqZWN0IGxpdGVyYWwgZWxlbWVudCB0byBpbnNwZWN0LlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHByb3BlcnR5IGlzIHN1cHBvcnRlZCBieSB0aGUgZml4ZXIuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3Qgc3VwcG9ydGVkID0gaXNTdXBwb3J0ZWRQcm9wZXJ0eShwcm9wZXJ0eSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNTdXBwb3J0ZWRQcm9wZXJ0eShcclxuICBwcm9wZXJ0eTogVFNFU1RyZWUuT2JqZWN0TGl0ZXJhbEVsZW1lbnQsXHJcbik6IHByb3BlcnR5IGlzIFN1cHBvcnRlZFByb3BlcnR5IHtcclxuICByZXR1cm4gKFxyXG4gICAgcHJvcGVydHkudHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuUHJvcGVydHkgJiZcclxuICAgICFwcm9wZXJ0eS5jb21wdXRlZCAmJlxyXG4gICAgcHJvcGVydHkua2luZCA9PT0gXCJpbml0XCIgJiZcclxuICAgICFwcm9wZXJ0eS5tZXRob2QgJiZcclxuICAgIHByb3BlcnR5LnZhbHVlLnR5cGUgIT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLkFzc2lnbm1lbnRQYXR0ZXJuXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVjdHMgYHZpLm1vY2soLi4uKWAgYW5kIGB2aS5kb01vY2soLi4uKWAgY2FsbHMuXHJcbiAqIEBwYXJhbSBub2RlIENhbGwgZXhwcmVzc2lvbiBiZWluZyBpbnNwZWN0ZWQuXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgY2FsbCB0YXJnZXRzIGEgVml0ZXN0IG1vY2sgZmFjdG9yeS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBpc01vY2tDYWxsID0gaXNWaXRlc3RNb2NrQ2FsbChjYWxsRXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNWaXRlc3RNb2NrQ2FsbChub2RlOiBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xyXG4gIGlmIChub2RlLmNhbGxlZS50eXBlICE9PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5NZW1iZXJFeHByZXNzaW9uKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdCB7IG9iamVjdCwgcHJvcGVydHkgfSA9IG5vZGUuY2FsbGVlO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgb2JqZWN0LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcclxuICAgIG9iamVjdC5uYW1lID09PSBcInZpXCIgJiZcclxuICAgIHByb3BlcnR5LnR5cGUgPT09IFRTRVNUcmVlLkFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcclxuICAgIChwcm9wZXJ0eS5uYW1lID09PSBcIm1vY2tcIiB8fCBwcm9wZXJ0eS5uYW1lID09PSBcImRvTW9ja1wiKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZpeGVkIG9iamVjdCBsaXRlcmFsIG11c3QgYmUgcGFyZW50aGVzaXplZC5cclxuICogQHBhcmFtIGZhY3RvcnlBcmd1bWVudCBNb2NrIGZhY3RvcnkgZnVuY3Rpb24gZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIHJldHVybkV4cHJlc3Npb24gRXhwcmVzc2lvbiByZXR1cm5lZCBieSB0aGUgZmFjdG9yeS5cclxuICogQHBhcmFtIG9iamVjdEV4cHJlc3Npb24gT2JqZWN0IGxpdGVyYWwgYmVpbmcgcmV3cml0dGVuLlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gcGFyZW50aGVzZXMgYXJlIHJlcXVpcmVkIGFyb3VuZCB0aGUgb2JqZWN0IGxpdGVyYWwuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3Qgd3JhcE9iamVjdCA9IHNob3VsZFdyYXBJbXBsaWNpdE9iamVjdChmYWN0b3J5QXJndW1lbnQsIHJldHVybkV4cHJlc3Npb24sIG9iamVjdEV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHNob3VsZFdyYXBJbXBsaWNpdE9iamVjdChcclxuICBmYWN0b3J5QXJndW1lbnQ6XHJcbiAgICB8IFRTRVNUcmVlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uXHJcbiAgICB8IFRTRVNUcmVlLkZ1bmN0aW9uRXhwcmVzc2lvbixcclxuICByZXR1cm5FeHByZXNzaW9uOiBUU0VTVHJlZS5FeHByZXNzaW9uLFxyXG4gIG9iamVjdEV4cHJlc3Npb246IFRTRVNUcmVlLk9iamVjdEV4cHJlc3Npb24sXHJcbik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBmYWN0b3J5QXJndW1lbnQuYm9keS50eXBlICE9PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5CbG9ja1N0YXRlbWVudCAmJlxyXG4gICAgKHJldHVybkV4cHJlc3Npb24ucmFuZ2VbMF0gIT09IG9iamVjdEV4cHJlc3Npb24ucmFuZ2VbMF0gfHxcclxuICAgICAgcmV0dXJuRXhwcmVzc2lvbi5yYW5nZVsxXSAhPT0gb2JqZWN0RXhwcmVzc2lvbi5yYW5nZVsxXSlcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbidzIGNhc3QgY2hhaW4gY29udGFpbnMgYW4gZXNjYXBlLWhhdGNoIGNhc3QgdGhyb3VnaCB1bmtub3duIG9yIGFueS5cclxuICogUmVtb3ZlcyBzdXJyb3VuZGluZyBjYXN0IHdyYXBwZXJzIGZyb20gYW4gZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byB1bndyYXAuXHJcbiAqIEByZXR1cm5zIFRoZSBpbm5lcm1vc3Qgbm9uLWNhc3QgZXhwcmVzc2lvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBiYXNlRXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gdW53cmFwRXhwcmVzc2lvbihcclxuICBleHByZXNzaW9uOiBUU0VTVHJlZS5FeHByZXNzaW9uLFxyXG4pOiBUU0VTVHJlZS5FeHByZXNzaW9uIHtcclxuICBsZXQgY3VycmVudEV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xyXG5cclxuICB3aGlsZSAoXHJcbiAgICBjdXJyZW50RXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU0FzRXhwcmVzc2lvbiB8fFxyXG4gICAgY3VycmVudEV4cHJlc3Npb24udHlwZSA9PT0gVFNFU1RyZWUuQVNUX05PREVfVFlQRVMuVFNTYXRpc2ZpZXNFeHByZXNzaW9uIHx8XHJcbiAgICBjdXJyZW50RXhwcmVzc2lvbi50eXBlID09PSBUU0VTVHJlZS5BU1RfTk9ERV9UWVBFUy5UU1R5cGVBc3NlcnRpb25cclxuICApIHtcclxuICAgIGN1cnJlbnRFeHByZXNzaW9uID0gY3VycmVudEV4cHJlc3Npb24uZXhwcmVzc2lvbjtcclxuICB9XHJcblxyXG4gIHJldHVybiBjdXJyZW50RXhwcmVzc2lvbjtcclxufVxyXG5cclxuZXhwb3J0IHtcclxuICBjYW5Vc2VTaG9ydGhhbmQsXHJcbiAgZ2V0RmFjdG9yeVJldHVybkV4cHJlc3Npb24sXHJcbiAgZ2V0TW9kdWxlU3BlY2lmaWVyLFxyXG4gIGdldFByb3BlcnR5TmFtZSxcclxuICBoYXNFc2NhcGVIYXRjaENhc3QsXHJcbiAgaXNTdXBwb3J0ZWRQcm9wZXJ0eSxcclxuICBpc1ZpdGVzdE1vY2tDYWxsLFxyXG4gIHNob3VsZFdyYXBJbXBsaWNpdE9iamVjdCxcclxuICB1bndyYXBFeHByZXNzaW9uLFxyXG59O1xyXG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vitest-incremental-casts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,QAAQ,CAAC"}
|