@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,134 +0,0 @@
|
|
|
1
|
-
import { analyzeTestBlock, getLineStartRange, getPhaseBoundaryComments, hasBlankLineBeforeComment, } from "../aaa/index.js";
|
|
2
|
-
import { buildMissingSectionFixes } from "./missing-section-fixes.js";
|
|
3
|
-
/** Enforces explicit AAA section comments and spacing within supported test blocks. */
|
|
4
|
-
const requireAaaSectionsRule = {
|
|
5
|
-
create(context) {
|
|
6
|
-
return {
|
|
7
|
-
CallExpression(node) {
|
|
8
|
-
const analysis = analyzeTestBlock(context, node);
|
|
9
|
-
if (analysis === void 0) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
reportMissingSections(context, analysis);
|
|
13
|
-
reportEmptySections(context, analysis);
|
|
14
|
-
reportCodeBeforeArrange(context, analysis);
|
|
15
|
-
reportBlankLineSeparators(context, analysis);
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
},
|
|
19
|
-
meta: {
|
|
20
|
-
docs: {
|
|
21
|
-
description: "Require strict // Arrange, // Act, and // Assert markers in supported test blocks.",
|
|
22
|
-
recommended: false,
|
|
23
|
-
url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/require-aaa-sections.md",
|
|
24
|
-
},
|
|
25
|
-
fixable: "code",
|
|
26
|
-
messages: {
|
|
27
|
-
blankLineBeforeSection: "Insert a blank line before the // {{section}} section comment.",
|
|
28
|
-
codeBeforeArrange: "Move setup statements below the first // Arrange section comment.",
|
|
29
|
-
emptySection: "The // {{section}} section must contain code; comments alone do not count.",
|
|
30
|
-
missingSections: "Add the missing AAA section comments: {{sections}}.",
|
|
31
|
-
},
|
|
32
|
-
schema: [],
|
|
33
|
-
type: "layout",
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Reports section comments that are missing a blank line above them.
|
|
38
|
-
* @param context ESLint rule context.
|
|
39
|
-
* @param analysis Parsed test-block analysis.
|
|
40
|
-
* @example
|
|
41
|
-
* ```typescript
|
|
42
|
-
* reportBlankLineSeparators({ report() {} } as never, { sectionComments: [], sourceText: "" } as never);
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
function reportBlankLineSeparators(context, analysis) {
|
|
46
|
-
const firstSectionComment = analysis.sectionComments[0]?.comment;
|
|
47
|
-
for (const sectionComment of getPhaseBoundaryComments(analysis)) {
|
|
48
|
-
if (sectionComment.comment !== firstSectionComment &&
|
|
49
|
-
!hasBlankLineBeforeComment(analysis.sourceText, sectionComment.comment)) {
|
|
50
|
-
context.report({
|
|
51
|
-
data: { section: sectionComment.phases.join(" & ") },
|
|
52
|
-
fix: (fixer) => fixer.insertTextBeforeRange(getLineStartRange(analysis.sourceText, sectionComment.comment.loc.start.line), analysis.newline),
|
|
53
|
-
messageId: "blankLineBeforeSection",
|
|
54
|
-
node: sectionComment.comment,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Reports executable statements that appear before the first Arrange section.
|
|
61
|
-
* @param context ESLint rule context.
|
|
62
|
-
* @param analysis Parsed test-block analysis.
|
|
63
|
-
* @example
|
|
64
|
-
* ```typescript
|
|
65
|
-
* reportCodeBeforeArrange({ report() {} } as never, { sectionComments: [], statements: [] } as never);
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
function reportCodeBeforeArrange(context, analysis) {
|
|
69
|
-
const firstArrangeLine = analysis.sectionComments.find((sectionComment) => sectionComment.phases.includes("Arrange"))?.comment.loc.start.line;
|
|
70
|
-
if (firstArrangeLine === void 0) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const statementBeforeArrange = analysis.statements.find((statement) => statement.node.loc.start.line < firstArrangeLine);
|
|
74
|
-
if (statementBeforeArrange === void 0) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
context.report({
|
|
78
|
-
messageId: "codeBeforeArrange",
|
|
79
|
-
node: statementBeforeArrange.node,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Reports Arrange sections that contain only comments or whitespace.
|
|
84
|
-
* @param context ESLint rule context.
|
|
85
|
-
* @param analysis Parsed test-block analysis.
|
|
86
|
-
* @example
|
|
87
|
-
* ```typescript
|
|
88
|
-
* reportEmptySections({ report() {} } as never, { sectionComments: [], statements: [] } as never);
|
|
89
|
-
* ```
|
|
90
|
-
*/
|
|
91
|
-
function reportEmptySections(context, analysis) {
|
|
92
|
-
for (const [index, sectionComment] of analysis.sectionComments.entries()) {
|
|
93
|
-
const nextSectionLine = analysis.sectionComments[index + 1]?.comment.loc.start.line;
|
|
94
|
-
const hasArrangePhase = sectionComment.phases.includes("Arrange");
|
|
95
|
-
const hasCodeInSection = analysis.statements.some((statement) => {
|
|
96
|
-
const statementLine = statement.node.loc.start.line;
|
|
97
|
-
return (statementLine > sectionComment.comment.loc.start.line &&
|
|
98
|
-
(nextSectionLine === void 0 || statementLine < nextSectionLine));
|
|
99
|
-
});
|
|
100
|
-
if (hasArrangePhase && !hasCodeInSection) {
|
|
101
|
-
context.report({
|
|
102
|
-
data: { section: sectionComment.phases.join(" & ") },
|
|
103
|
-
messageId: "emptySection",
|
|
104
|
-
node: sectionComment.comment,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Reports any AAA section markers that are missing from a supported test block.
|
|
111
|
-
* @param context ESLint rule context.
|
|
112
|
-
* @param analysis Parsed test-block analysis.
|
|
113
|
-
* @example
|
|
114
|
-
* ```typescript
|
|
115
|
-
* reportMissingSections({ report() {} } as never, { sectionComments: [] } as never);
|
|
116
|
-
* ```
|
|
117
|
-
*/
|
|
118
|
-
function reportMissingSections(context, analysis) {
|
|
119
|
-
const presentSections = new Set(analysis.sectionComments.flatMap((sectionComment) => sectionComment.phases));
|
|
120
|
-
const missingSections = ["Arrange", "Act", "Assert"].filter((phase) => !presentSections.has(phase));
|
|
121
|
-
if (missingSections.length === 0) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
context.report({
|
|
125
|
-
data: { sections: missingSections.join(", ") },
|
|
126
|
-
fix: analysis.bodyLineCount >= 3
|
|
127
|
-
? (fixer) => buildMissingSectionFixes(analysis, missingSections, fixer)
|
|
128
|
-
: void 0,
|
|
129
|
-
messageId: "missingSections",
|
|
130
|
-
node: analysis.callExpression,
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
export { requireAaaSectionsRule };
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9yZXF1aXJlLWFhYS1zZWN0aW9ucy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDMUIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkUsdUZBQXVGO0FBQ3ZGLE1BQU0sc0JBQXNCLEdBQW9CO0lBQzlDLE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPO1lBQ0wsY0FBYyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUVELHFCQUFxQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDekMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN2Qyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQyxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxvRkFBb0Y7WUFDdEYsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLHVGQUF1RjtTQUM3RjtRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsUUFBUSxFQUFFO1lBQ1Isc0JBQXNCLEVBQ3BCLGdFQUFnRTtZQUNsRSxpQkFBaUIsRUFDZixtRUFBbUU7WUFDckUsWUFBWSxFQUNWLDRFQUE0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QUFDLEVBQUU7UUFDOUMsR0FBRyxFQUNELFFBQVEsQ0FBQyxhQUFhLElBQUksQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFxQixFQUFjLEVBQUUsQ0FDcEMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUM7WUFDOUQsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNaLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxjQUFjO0tBQzlCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBUZXN0QmxvY2tBbmFseXNpcyB9IGZyb20gXCIuLi9hYWFcIjtcblxuaW1wb3J0IHtcbiAgYW5hbHl6ZVRlc3RCbG9jayxcbiAgZ2V0TGluZVN0YXJ0UmFuZ2UsXG4gIGdldFBoYXNlQm91bmRhcnlDb21tZW50cyxcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcbn0gZnJvbSBcIi4uL2FhYVwiO1xuaW1wb3J0IHsgYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzIH0gZnJvbSBcIi4vbWlzc2luZy1zZWN0aW9uLWZpeGVzXCI7XG5cbi8qKiBFbmZvcmNlcyBleHBsaWNpdCBBQUEgc2VjdGlvbiBjb21tZW50cyBhbmQgc3BhY2luZyB3aXRoaW4gc3VwcG9ydGVkIHRlc3QgYmxvY2tzLiAqL1xuY29uc3QgcmVxdWlyZUFhYVNlY3Rpb25zUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVUZXN0QmxvY2soY29udGV4dCwgbm9kZSk7XG4gICAgICAgIGlmIChhbmFseXNpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVwb3J0TWlzc2luZ1NlY3Rpb25zKGNvbnRleHQsIGFuYWx5c2lzKTtcbiAgICAgICAgcmVwb3J0RW1wdHlTZWN0aW9ucyhjb250ZXh0LCBhbmFseXNpcyk7XG4gICAgICAgIHJlcG9ydENvZGVCZWZvcmVBcnJhbmdlKGNvbnRleHQsIGFuYWx5c2lzKTtcbiAgICAgICAgcmVwb3J0QmxhbmtMaW5lU2VwYXJhdG9ycyhjb250ZXh0LCBhbmFseXNpcyk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFJ1bGUuUnVsZUxpc3RlbmVyO1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSBzdHJpY3QgLy8gQXJyYW5nZSwgLy8gQWN0LCBhbmQgLy8gQXNzZXJ0IG1hcmtlcnMgaW4gc3VwcG9ydGVkIHRlc3QgYmxvY2tzLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvcmVxdWlyZS1hYWEtc2VjdGlvbnMubWRcIixcbiAgICB9LFxuICAgIGZpeGFibGU6IFwiY29kZVwiLFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBibGFua0xpbmVCZWZvcmVTZWN0aW9uOlxuICAgICAgICBcIkluc2VydCBhIGJsYW5rIGxpbmUgYmVmb3JlIHRoZSAvLyB7e3NlY3Rpb259fSBzZWN0aW9uIGNvbW1lbnQuXCIsXG4gICAgICBjb2RlQmVmb3JlQXJyYW5nZTpcbiAgICAgICAgXCJNb3ZlIHNldHVwIHN0YXRlbWVudHMgYmVsb3cgdGhlIGZpcnN0IC8vIEFycmFuZ2Ugc2VjdGlvbiBjb21tZW50LlwiLFxuICAgICAgZW1wdHlTZWN0aW9uOlxuICAgICAgICBcIlRoZSAvLyB7e3NlY3Rpb259fSBzZWN0aW9uIG11c3QgY29udGFpbiBjb2RlOyBjb21tZW50cyBhbG9uZSBkbyBub3QgY291bnQuXCIsXG4gICAgICBtaXNzaW5nU2VjdGlvbnM6IFwiQWRkIHRoZSBtaXNzaW5nIEFBQSBzZWN0aW9uIGNvbW1lbnRzOiB7e3NlY3Rpb25zfX0uXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwibGF5b3V0XCIsXG4gIH0sXG59O1xuXG4vKipcbiAqIFJlcG9ydHMgc2VjdGlvbiBjb21tZW50cyB0aGF0IGFyZSBtaXNzaW5nIGEgYmxhbmsgbGluZSBhYm92ZSB0aGVtLlxuICogQHBhcmFtIGNvbnRleHQgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAqIEBwYXJhbSBhbmFseXNpcyBQYXJzZWQgdGVzdC1ibG9jayBhbmFseXNpcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRCbGFua0xpbmVTZXBhcmF0b3JzKHsgcmVwb3J0KCkge30gfSBhcyBuZXZlciwgeyBzZWN0aW9uQ29tbWVudHM6IFtdLCBzb3VyY2VUZXh0OiBcIlwiIH0gYXMgbmV2ZXIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydEJsYW5rTGluZVNlcGFyYXRvcnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBjb25zdCBmaXJzdFNlY3Rpb25Db21tZW50ID0gYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzWzBdPy5jb21tZW50O1xuXG4gIGZvciAoY29uc3Qgc2VjdGlvbkNvbW1lbnQgb2YgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzKGFuYWx5c2lzKSkge1xuICAgIGlmIChcbiAgICAgIHNlY3Rpb25Db21tZW50LmNvbW1lbnQgIT09IGZpcnN0U2VjdGlvbkNvbW1lbnQgJiZcbiAgICAgICFoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50KGFuYWx5c2lzLnNvdXJjZVRleHQsIHNlY3Rpb25Db21tZW50LmNvbW1lbnQpXG4gICAgKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIGRhdGE6IHsgc2VjdGlvbjogc2VjdGlvbkNvbW1lbnQucGhhc2VzLmpvaW4oXCIgJiBcIikgfSxcbiAgICAgICAgZml4OiAoZml4ZXIpID0+XG4gICAgICAgICAgZml4ZXIuaW5zZXJ0VGV4dEJlZm9yZVJhbmdlKFxuICAgICAgICAgICAgZ2V0TGluZVN0YXJ0UmFuZ2UoXG4gICAgICAgICAgICAgIGFuYWx5c2lzLnNvdXJjZVRleHQsXG4gICAgICAgICAgICAgIHNlY3Rpb25Db21tZW50LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYW5hbHlzaXMubmV3bGluZSxcbiAgICAgICAgICApLFxuICAgICAgICBtZXNzYWdlSWQ6IFwiYmxhbmtMaW5lQmVmb3JlU2VjdGlvblwiLFxuICAgICAgICBub2RlOiBzZWN0aW9uQ29tbWVudC5jb21tZW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwb3J0cyBleGVjdXRhYmxlIHN0YXRlbWVudHMgdGhhdCBhcHBlYXIgYmVmb3JlIHRoZSBmaXJzdCBBcnJhbmdlIHNlY3Rpb24uXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydENvZGVCZWZvcmVBcnJhbmdlKHsgcmVwb3J0KCkge30gfSBhcyBuZXZlciwgeyBzZWN0aW9uQ29tbWVudHM6IFtdLCBzdGF0ZW1lbnRzOiBbXSB9IGFzIG5ldmVyKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiByZXBvcnRDb2RlQmVmb3JlQXJyYW5nZShcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgYW5hbHlzaXM6IFRlc3RCbG9ja0FuYWx5c2lzLFxuKTogdm9pZCB7XG4gIGNvbnN0IGZpcnN0QXJyYW5nZUxpbmUgPSBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHMuZmluZCgoc2VjdGlvbkNvbW1lbnQpID0+XG4gICAgc2VjdGlvbkNvbW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQXJyYW5nZVwiKSxcbiAgKT8uY29tbWVudC5sb2Muc3RhcnQubGluZTtcbiAgaWYgKGZpcnN0QXJyYW5nZUxpbmUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlbWVudEJlZm9yZUFycmFuZ2UgPSBhbmFseXNpcy5zdGF0ZW1lbnRzLmZpbmQoXG4gICAgKHN0YXRlbWVudCkgPT4gc3RhdGVtZW50Lm5vZGUubG9jLnN0YXJ0LmxpbmUgPCBmaXJzdEFycmFuZ2VMaW5lLFxuICApO1xuICBpZiAoc3RhdGVtZW50QmVmb3JlQXJyYW5nZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIG1lc3NhZ2VJZDogXCJjb2RlQmVmb3JlQXJyYW5nZVwiLFxuICAgIG5vZGU6IHN0YXRlbWVudEJlZm9yZUFycmFuZ2Uubm9kZSxcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwb3J0cyBBcnJhbmdlIHNlY3Rpb25zIHRoYXQgY29udGFpbiBvbmx5IGNvbW1lbnRzIG9yIHdoaXRlc3BhY2UuXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydEVtcHR5U2VjdGlvbnMoeyByZXBvcnQoKSB7fSB9IGFzIG5ldmVyLCB7IHNlY3Rpb25Db21tZW50czogW10sIHN0YXRlbWVudHM6IFtdIH0gYXMgbmV2ZXIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydEVtcHR5U2VjdGlvbnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IFtpbmRleCwgc2VjdGlvbkNvbW1lbnRdIG9mIGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBuZXh0U2VjdGlvbkxpbmUgPVxuICAgICAgYW5hbHlzaXMuc2VjdGlvbkNvbW1lbnRzW2luZGV4ICsgMV0/LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmU7XG4gICAgY29uc3QgaGFzQXJyYW5nZVBoYXNlID0gc2VjdGlvbkNvbW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQXJyYW5nZVwiKTtcbiAgICBjb25zdCBoYXNDb2RlSW5TZWN0aW9uID0gYW5hbHlzaXMuc3RhdGVtZW50cy5zb21lKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudExpbmUgPSBzdGF0ZW1lbnQubm9kZS5sb2Muc3RhcnQubGluZTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgc3RhdGVtZW50TGluZSA+IHNlY3Rpb25Db21tZW50LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmUgJiZcbiAgICAgICAgKG5leHRTZWN0aW9uTGluZSA9PT0gdm9pZCAwIHx8IHN0YXRlbWVudExpbmUgPCBuZXh0U2VjdGlvbkxpbmUpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaWYgKGhhc0FycmFuZ2VQaGFzZSAmJiAhaGFzQ29kZUluU2VjdGlvbikge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IHNlY3Rpb246IHNlY3Rpb25Db21tZW50LnBoYXNlcy5qb2luKFwiICYgXCIpIH0sXG4gICAgICAgIG1lc3NhZ2VJZDogXCJlbXB0eVNlY3Rpb25cIixcbiAgICAgICAgbm9kZTogc2VjdGlvbkNvbW1lbnQuY29tbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgYW55IEFBQSBzZWN0aW9uIG1hcmtlcnMgdGhhdCBhcmUgbWlzc2luZyBmcm9tIGEgc3VwcG9ydGVkIHRlc3QgYmxvY2suXG4gKiBAcGFyYW0gY29udGV4dCBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCB0ZXN0LWJsb2NrIGFuYWx5c2lzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydE1pc3NpbmdTZWN0aW9ucyh7IHJlcG9ydCgpIHt9IH0gYXMgbmV2ZXIsIHsgc2VjdGlvbkNvbW1lbnRzOiBbXSB9IGFzIG5ldmVyKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiByZXBvcnRNaXNzaW5nU2VjdGlvbnMoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IHZvaWQge1xuICBjb25zdCBwcmVzZW50U2VjdGlvbnMgPSBuZXcgU2V0KFxuICAgIGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5mbGF0TWFwKChzZWN0aW9uQ29tbWVudCkgPT4gc2VjdGlvbkNvbW1lbnQucGhhc2VzKSxcbiAgKTtcbiAgY29uc3QgbWlzc2luZ1NlY3Rpb25zID0gKFtcIkFycmFuZ2VcIiwgXCJBY3RcIiwgXCJBc3NlcnRcIl0gYXMgY29uc3QpLmZpbHRlcihcbiAgICAocGhhc2UpID0+ICFwcmVzZW50U2VjdGlvbnMuaGFzKHBoYXNlKSxcbiAgKTtcblxuICBpZiAobWlzc2luZ1NlY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICBkYXRhOiB7IHNlY3Rpb25zOiBtaXNzaW5nU2VjdGlvbnMuam9pbihcIiwgXCIpIH0sXG4gICAgZml4OlxuICAgICAgYW5hbHlzaXMuYm9keUxpbmVDb3VudCA+PSAzXG4gICAgICAgID8gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4W10gPT5cbiAgICAgICAgICAgIGJ1aWxkTWlzc2luZ1NlY3Rpb25GaXhlcyhhbmFseXNpcywgbWlzc2luZ1NlY3Rpb25zLCBmaXhlcilcbiAgICAgICAgOiB2b2lkIDAsXG4gICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdTZWN0aW9uc1wiLFxuICAgIG5vZGU6IGFuYWx5c2lzLmNhbGxFeHByZXNzaW9uLFxuICB9KTtcbn1cblxuZXhwb3J0IHsgcmVxdWlyZUFhYVNlY3Rpb25zUnVsZSB9O1xuIl19
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import type { Rule } from "eslint";
|
|
2
|
-
import type { TestBlockAnalysis } from "../aaa/index.js";
|
|
3
|
-
/** Mocked AAA helper exports consumed by the rule. */
|
|
4
|
-
interface AaaModuleMock {
|
|
5
|
-
/** Mocked analyzer entry point. */
|
|
6
|
-
analyzeTestBlock: () => TestBlockAnalysis;
|
|
7
|
-
/** Mocked line-start helper. */
|
|
8
|
-
getLineStartRange: () => [number, number];
|
|
9
|
-
/** Mocked boundary-comment helper. */
|
|
10
|
-
getPhaseBoundaryComments: (analysis: TestBlockAnalysis) => TestBlockAnalysis["sectionComments"];
|
|
11
|
-
/** Mocked blank-line helper. */
|
|
12
|
-
hasBlankLineBeforeComment: () => false;
|
|
13
|
-
}
|
|
14
|
-
/** Mocked missing-section-fixes module. */
|
|
15
|
-
interface MissingSectionFixesModule {
|
|
16
|
-
/** Mocked fix builder. */
|
|
17
|
-
buildMissingSectionFixes: () => Rule.Fix[];
|
|
18
|
-
}
|
|
19
|
-
/** Message identifiers emitted by the rule under test. */
|
|
20
|
-
type RequireAaaSectionsMessageId = "blankLineBeforeSection" | "codeBeforeArrange" | "emptySection" | "missingSections";
|
|
21
|
-
/** Captured result from the mocked reporting scenario. */
|
|
22
|
-
interface ScenarioResult {
|
|
23
|
-
/** Fix emitted for the blank-line report. */
|
|
24
|
-
blankLineFix: Rule.Fix | Rule.Fix[] | undefined;
|
|
25
|
-
/** Fixes recorded by the synthetic fixer. */
|
|
26
|
-
insertedFixes: Rule.Fix[];
|
|
27
|
-
/** Message identifiers emitted in report order. */
|
|
28
|
-
messageIds: (RequireAaaSectionsMessageId | undefined)[];
|
|
29
|
-
/** Fix emitted for the missing-sections report. */
|
|
30
|
-
missingSectionsFix: Rule.Fix | Rule.Fix[] | undefined;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Creates the mocked AAA helper module.
|
|
34
|
-
* @returns Mocked exports consumed by the rule module.
|
|
35
|
-
* @example
|
|
36
|
-
* ```typescript
|
|
37
|
-
* const mockModule = createAaaModuleMock(); void mockModule;
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
declare function createAaaModuleMock(): AaaModuleMock;
|
|
41
|
-
/**
|
|
42
|
-
* Creates the mocked missing-section-fixes module.
|
|
43
|
-
* @param buildMissingSectionFixes Mocked fix builder.
|
|
44
|
-
* @returns Mocked module exposing the provided fix builder.
|
|
45
|
-
* @example
|
|
46
|
-
* ```typescript
|
|
47
|
-
* const mockModule = createMissingSectionFixesModule(() => []); void mockModule;
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
declare function createMissingSectionFixesModule(buildMissingSectionFixes: () => Rule.Fix[]): MissingSectionFixesModule;
|
|
51
|
-
/**
|
|
52
|
-
* Creates a fixer that records inserted text edits.
|
|
53
|
-
* @param insertedFixes Collection updated when the fixer inserts text.
|
|
54
|
-
* @returns Rule fixer that records inserted edits.
|
|
55
|
-
* @example
|
|
56
|
-
* ```typescript
|
|
57
|
-
* const fixer = createRecordedFixer([]); void fixer;
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
declare function createRecordedFixer(insertedFixes: Rule.Fix[]): Rule.RuleFixer;
|
|
61
|
-
/**
|
|
62
|
-
* Creates the minimal rule context used by the mocked scenario.
|
|
63
|
-
* @param reports Report descriptors captured during rule execution.
|
|
64
|
-
* @returns Rule context that records emitted reports.
|
|
65
|
-
* @example
|
|
66
|
-
* ```typescript
|
|
67
|
-
* const context = createRuleContext([]); void context;
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
declare function createRuleContext(reports: Rule.ReportDescriptor[]): Rule.RuleContext;
|
|
71
|
-
/**
|
|
72
|
-
* Reads the fix emitted by a report descriptor.
|
|
73
|
-
* @param descriptor Report descriptor to evaluate.
|
|
74
|
-
* @param fixer Synthetic fixer passed into the descriptor callback.
|
|
75
|
-
* @returns Fix output produced by the descriptor.
|
|
76
|
-
* @example
|
|
77
|
-
* ```typescript
|
|
78
|
-
* const fix = getDescriptorFix(void 0, {} as never); void fix;
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
declare function getDescriptorFix(descriptor: Rule.ReportDescriptor | undefined, fixer: Rule.RuleFixer): Rule.Fix | Rule.Fix[] | undefined;
|
|
82
|
-
/**
|
|
83
|
-
* Reads the message identifier from a report descriptor when present.
|
|
84
|
-
* @param descriptor Report descriptor emitted by the rule.
|
|
85
|
-
* @returns Supported message identifier when present.
|
|
86
|
-
* @example
|
|
87
|
-
* ```typescript
|
|
88
|
-
* const messageId = getReportMessageId({ messageId: "missingSections" } as Rule.ReportDescriptor);
|
|
89
|
-
* void messageId;
|
|
90
|
-
* ```
|
|
91
|
-
*/
|
|
92
|
-
declare function getReportMessageId(descriptor: Rule.ReportDescriptor): RequireAaaSectionsMessageId | undefined;
|
|
93
|
-
/**
|
|
94
|
-
* Loads the rule module after test mocks have been applied.
|
|
95
|
-
* @returns The rule module under test.
|
|
96
|
-
* @example
|
|
97
|
-
* ```typescript
|
|
98
|
-
* const rule = await loadRequireAaaSectionsRule(); void rule;
|
|
99
|
-
* ```
|
|
100
|
-
*/
|
|
101
|
-
declare function loadRequireAaaSectionsRule(): Promise<Rule.RuleModule>;
|
|
102
|
-
export { createAaaModuleMock, createMissingSectionFixesModule, createRecordedFixer, createRuleContext, getDescriptorFix, getReportMessageId, loadRequireAaaSectionsRule, };
|
|
103
|
-
export type { ScenarioResult };
|
|
104
|
-
//# sourceMappingURL=rule.reporting.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-aaa-sections/rule.reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEhD,sDAAsD;AACtD,UAAU,aAAa;IACrB,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;IAC1C,gCAAgC;IAChC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,sCAAsC;IACtC,wBAAwB,EAAE,CACxB,QAAQ,EAAE,iBAAiB,KACxB,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1C,gCAAgC;IAChC,yBAAyB,EAAE,MAAM,KAAK,CAAC;CACxC;AAED,2CAA2C;AAC3C,UAAU,yBAAyB;IACjC,0BAA0B;IAC1B,wBAAwB,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;CAC5C;AAED,0DAA0D;AAC1D,KAAK,2BAA2B,GAC5B,wBAAwB,GACxB,mBAAmB,GACnB,cAAc,GACd,iBAAiB,CAAC;AAEtB,0DAA0D;AAC1D,UAAU,cAAc;IACtB,6CAA6C;IAC7C,YAAY,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAChD,6CAA6C;IAC7C,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,mDAAmD;IACnD,UAAU,EAAE,CAAC,2BAA2B,GAAG,SAAS,CAAC,EAAE,CAAC;IACxD,mDAAmD;IACnD,kBAAkB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;CACvD;AAcD;;;;;;;GAOG;AACH,iBAAS,mBAAmB,IAAI,aAAa,CAO5C;AAED;;;;;;;;GAQG;AACH,iBAAS,+BAA+B,CACtC,wBAAwB,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,GACzC,yBAAyB,CAE3B;AAsDD;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAQtE;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,WAAW,CAM7E;AAED;;;;;;;;;GASG;AACH,iBAAS,gBAAgB,CACvB,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAAG,SAAS,EAC7C,KAAK,EAAE,IAAI,CAAC,SAAS,GACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAcnC;AA8BD;;;;;;;;;GASG;AACH,iBAAS,kBAAkB,CACzB,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAChC,2BAA2B,GAAG,SAAS,CAQzC;AAuBD;;;;;;;GAOG;AACH,iBAAe,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAGpE;AAED,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,GAC3B,CAAC;AAEF,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns false so the mocked rule path always reports a missing blank line.
|
|
3
|
-
* @returns False for every invocation.
|
|
4
|
-
* @example
|
|
5
|
-
* ```typescript
|
|
6
|
-
* const actual = alwaysReturnFalse(); void actual;
|
|
7
|
-
* ```
|
|
8
|
-
*/
|
|
9
|
-
function alwaysReturnFalse() {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Creates the mocked AAA helper module.
|
|
14
|
-
* @returns Mocked exports consumed by the rule module.
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* const mockModule = createAaaModuleMock(); void mockModule;
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
function createAaaModuleMock() {
|
|
21
|
-
return {
|
|
22
|
-
analyzeTestBlock: createMockAnalysis,
|
|
23
|
-
getLineStartRange: getMockLineStartRange,
|
|
24
|
-
getPhaseBoundaryComments: getMockPhaseBoundaryComments,
|
|
25
|
-
hasBlankLineBeforeComment: alwaysReturnFalse,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Creates the mocked missing-section-fixes module.
|
|
30
|
-
* @param buildMissingSectionFixes Mocked fix builder.
|
|
31
|
-
* @returns Mocked module exposing the provided fix builder.
|
|
32
|
-
* @example
|
|
33
|
-
* ```typescript
|
|
34
|
-
* const mockModule = createMissingSectionFixesModule(() => []); void mockModule;
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
function createMissingSectionFixesModule(buildMissingSectionFixes) {
|
|
38
|
-
return { buildMissingSectionFixes };
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Builds the synthetic analysis returned by the mocked AAA helpers.
|
|
42
|
-
* @returns Minimal test-block analysis used by the regression scenario.
|
|
43
|
-
* @example
|
|
44
|
-
* ```typescript
|
|
45
|
-
* const analysis = createMockAnalysis(); void analysis;
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
function createMockAnalysis() {
|
|
49
|
-
return {
|
|
50
|
-
bodyLineCount: 4,
|
|
51
|
-
callExpression: { type: "CallExpression" },
|
|
52
|
-
newline: "\n",
|
|
53
|
-
sectionComments: [
|
|
54
|
-
{
|
|
55
|
-
comment: {
|
|
56
|
-
loc: { end: { line: 2 }, start: { line: 2 } },
|
|
57
|
-
type: "Line",
|
|
58
|
-
},
|
|
59
|
-
phases: ["Arrange"],
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
comment: {
|
|
63
|
-
loc: { end: { line: 4 }, start: { line: 4 } },
|
|
64
|
-
type: "Line",
|
|
65
|
-
},
|
|
66
|
-
phases: ["Act"],
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
sourceText: [
|
|
70
|
-
"const setup = createSetup();",
|
|
71
|
-
"// Arrange",
|
|
72
|
-
"run();",
|
|
73
|
-
"// Act",
|
|
74
|
-
].join("\n"),
|
|
75
|
-
statements: [
|
|
76
|
-
{
|
|
77
|
-
node: {
|
|
78
|
-
loc: { end: { line: 1 }, start: { line: 1 } },
|
|
79
|
-
type: "ExpressionStatement",
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
node: {
|
|
84
|
-
loc: { end: { line: 3 }, start: { line: 3 } },
|
|
85
|
-
type: "ExpressionStatement",
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
],
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Creates a fixer that records inserted text edits.
|
|
93
|
-
* @param insertedFixes Collection updated when the fixer inserts text.
|
|
94
|
-
* @returns Rule fixer that records inserted edits.
|
|
95
|
-
* @example
|
|
96
|
-
* ```typescript
|
|
97
|
-
* const fixer = createRecordedFixer([]); void fixer;
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
function createRecordedFixer(insertedFixes) {
|
|
101
|
-
return {
|
|
102
|
-
insertTextBeforeRange(range, text) {
|
|
103
|
-
const fix = { range, text };
|
|
104
|
-
insertedFixes.push(fix);
|
|
105
|
-
return fix;
|
|
106
|
-
},
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Creates the minimal rule context used by the mocked scenario.
|
|
111
|
-
* @param reports Report descriptors captured during rule execution.
|
|
112
|
-
* @returns Rule context that records emitted reports.
|
|
113
|
-
* @example
|
|
114
|
-
* ```typescript
|
|
115
|
-
* const context = createRuleContext([]); void context;
|
|
116
|
-
* ```
|
|
117
|
-
*/
|
|
118
|
-
function createRuleContext(reports) {
|
|
119
|
-
return {
|
|
120
|
-
report(descriptor) {
|
|
121
|
-
reports.push(descriptor);
|
|
122
|
-
},
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Reads the fix emitted by a report descriptor.
|
|
127
|
-
* @param descriptor Report descriptor to evaluate.
|
|
128
|
-
* @param fixer Synthetic fixer passed into the descriptor callback.
|
|
129
|
-
* @returns Fix output produced by the descriptor.
|
|
130
|
-
* @example
|
|
131
|
-
* ```typescript
|
|
132
|
-
* const fix = getDescriptorFix(void 0, {} as never); void fix;
|
|
133
|
-
* ```
|
|
134
|
-
*/
|
|
135
|
-
function getDescriptorFix(descriptor, fixer) {
|
|
136
|
-
const actual = descriptor?.fix?.(fixer);
|
|
137
|
-
if (!(actual instanceof Object)) {
|
|
138
|
-
return void 0;
|
|
139
|
-
}
|
|
140
|
-
if (Array.isArray(actual) || "range" in actual) {
|
|
141
|
-
return actual;
|
|
142
|
-
}
|
|
143
|
-
const iterableFixes = actual;
|
|
144
|
-
return [...iterableFixes];
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Reads the mocked line-start range for the blank-line fix.
|
|
148
|
-
* @returns Synthetic range used by the rule fix.
|
|
149
|
-
* @example
|
|
150
|
-
* ```typescript
|
|
151
|
-
* const range = getMockLineStartRange(); void range;
|
|
152
|
-
* ```
|
|
153
|
-
*/
|
|
154
|
-
function getMockLineStartRange() {
|
|
155
|
-
return [7, 7];
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Returns the phase-boundary comments from the mocked analysis.
|
|
159
|
-
* @param analysis Parsed analysis used by the mocked rule helpers.
|
|
160
|
-
* @returns Only comments that begin a later AAA phase.
|
|
161
|
-
* @example
|
|
162
|
-
* ```typescript
|
|
163
|
-
* const comments = getMockPhaseBoundaryComments(createMockAnalysis());
|
|
164
|
-
* void comments;
|
|
165
|
-
* ```
|
|
166
|
-
*/
|
|
167
|
-
function getMockPhaseBoundaryComments(analysis) {
|
|
168
|
-
return analysis.sectionComments.slice(1);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Reads the message identifier from a report descriptor when present.
|
|
172
|
-
* @param descriptor Report descriptor emitted by the rule.
|
|
173
|
-
* @returns Supported message identifier when present.
|
|
174
|
-
* @example
|
|
175
|
-
* ```typescript
|
|
176
|
-
* const messageId = getReportMessageId({ messageId: "missingSections" } as Rule.ReportDescriptor);
|
|
177
|
-
* void messageId;
|
|
178
|
-
* ```
|
|
179
|
-
*/
|
|
180
|
-
function getReportMessageId(descriptor) {
|
|
181
|
-
if (!("messageId" in descriptor) ||
|
|
182
|
-
!isRequireAaaSectionsMessageId(descriptor.messageId)) {
|
|
183
|
-
return void 0;
|
|
184
|
-
}
|
|
185
|
-
return descriptor.messageId;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Checks whether an unknown value is a valid rule message identifier.
|
|
189
|
-
* @param value Value to validate.
|
|
190
|
-
* @returns Whether the value is a supported message identifier.
|
|
191
|
-
* @example
|
|
192
|
-
* ```typescript
|
|
193
|
-
* const actual = isRequireAaaSectionsMessageId("missingSections");
|
|
194
|
-
* void actual;
|
|
195
|
-
* ```
|
|
196
|
-
*/
|
|
197
|
-
function isRequireAaaSectionsMessageId(value) {
|
|
198
|
-
return (value === "blankLineBeforeSection" ||
|
|
199
|
-
value === "codeBeforeArrange" ||
|
|
200
|
-
value === "emptySection" ||
|
|
201
|
-
value === "missingSections");
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Loads the rule module after test mocks have been applied.
|
|
205
|
-
* @returns The rule module under test.
|
|
206
|
-
* @example
|
|
207
|
-
* ```typescript
|
|
208
|
-
* const rule = await loadRequireAaaSectionsRule(); void rule;
|
|
209
|
-
* ```
|
|
210
|
-
*/
|
|
211
|
-
async function loadRequireAaaSectionsRule() {
|
|
212
|
-
const { requireAaaSectionsRule } = await import("./rule.js");
|
|
213
|
-
return requireAaaSectionsRule;
|
|
214
|
-
}
|
|
215
|
-
export { createAaaModuleMock, createMissingSectionFixesModule, createRecordedFixer, createRuleContext, getDescriptorFix, getReportMessageId, loadRequireAaaSectionsRule, };
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5yZXBvcnRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcmVxdWlyZS1hYWEtc2VjdGlvbnMvcnVsZS5yZXBvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkNBOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLGlCQUFpQjtJQUN4QixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxtQkFBbUI7SUFDMUIsT0FBTztRQUNMLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxpQkFBaUIsRUFBRSxxQkFBcUI7UUFDeEMsd0JBQXdCLEVBQUUsNEJBQTRCO1FBQ3RELHlCQUF5QixFQUFFLGlCQUFpQjtLQUM3QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUywrQkFBK0IsQ0FDdEMsd0JBQTBDO0lBRTFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxrQkFBa0I7SUFDekIsT0FBTztRQUNMLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtRQUMxQyxPQUFPLEVBQUUsSUFBSTtRQUNiLGVBQWUsRUFBRTtZQUNmO2dCQUNFLE9BQU8sRUFBRTtvQkFDUCxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUM3QyxJQUFJLEVBQUUsTUFBTTtpQkFDYjtnQkFDRCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDcEI7WUFDRDtnQkFDRSxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUss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Q0wsS0FBSyxLQUFLLHdCQUF3QjtRQUNsQyxLQUFLLEtBQUssbUJBQW1CO1FBQzdCLEtBQUssS0FBSyxjQUFjO1FBQ3hCLEtBQUssS0FBSyxpQkFBaUIsQ0FDNUIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsS0FBSyxVQUFVLDBCQUEwQjtJQUN2QyxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUM7QUFFRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLCtCQUErQixFQUMvQixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsMEJBQTBCLEdBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XHJcblxyXG5pbXBvcnQgdHlwZSB7IFRlc3RCbG9ja0FuYWx5c2lzIH0gZnJvbSBcIi4uL2FhYVwiO1xyXG5cclxuLyoqIE1vY2tlZCBBQUEgaGVscGVyIGV4cG9ydHMgY29uc3VtZWQgYnkgdGhlIHJ1bGUuICovXHJcbmludGVyZmFjZSBBYWFNb2R1bGVNb2NrIHtcclxuICAvKiogTW9ja2VkIGFuYWx5emVyIGVudHJ5IHBvaW50LiAqL1xyXG4gIGFuYWx5emVUZXN0QmxvY2s6ICgpID0+IFRlc3RCbG9ja0FuYWx5c2lzO1xyXG4gIC8qKiBNb2NrZWQgbGluZS1zdGFydCBoZWxwZXIuICovXHJcbiAgZ2V0TGluZVN0YXJ0UmFuZ2U6ICgpID0+IFtudW1iZXIsIG51bWJlcl07XHJcbiAgLyoqIE1vY2tlZCBib3VuZGFyeS1jb21tZW50IGhlbHBlci4gKi9cclxuICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHM6IChcclxuICAgIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcclxuICApID0+IFRlc3RCbG9ja0FuYWx5c2lzW1wic2VjdGlvbkNvbW1lbnRzXCJdO1xyXG4gIC8qKiBNb2NrZWQgYmxhbmstbGluZSBoZWxwZXIuICovXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudDogKCkgPT4gZmFsc2U7XHJcbn1cclxuXHJcbi8qKiBNb2NrZWQgbWlzc2luZy1zZWN0aW9uLWZpeGVzIG1vZHVsZS4gKi9cclxuaW50ZXJmYWNlIE1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUge1xyXG4gIC8qKiBNb2NrZWQgZml4IGJ1aWxkZXIuICovXHJcbiAgYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzOiAoKSA9PiBSdWxlLkZpeFtdO1xyXG59XHJcblxyXG4vKiogTWVzc2FnZSBpZGVudGlmaWVycyBlbWl0dGVkIGJ5IHRoZSBydWxlIHVuZGVyIHRlc3QuICovXHJcbnR5cGUgUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkID1cclxuICB8IFwiYmxhbmtMaW5lQmVmb3JlU2VjdGlvblwiXHJcbiAgfCBcImNvZGVCZWZvcmVBcnJhbmdlXCJcclxuICB8IFwiZW1wdHlTZWN0aW9uXCJcclxuICB8IFwibWlzc2luZ1NlY3Rpb25zXCI7XHJcblxyXG4vKiogQ2FwdHVyZWQgcmVzdWx0IGZyb20gdGhlIG1vY2tlZCByZXBvcnRpbmcgc2NlbmFyaW8uICovXHJcbmludGVyZmFjZSBTY2VuYXJpb1Jlc3VsdCB7XHJcbiAgLyoqIEZpeCBlbWl0dGVkIGZvciB0aGUgYmxhbmstbGluZSByZXBvcnQuICovXHJcbiAgYmxhbmtMaW5lRml4OiBSdWxlLkZpeCB8IFJ1bGUuRml4W10gfCB1bmRlZmluZWQ7XHJcbiAgLyoqIEZpeGVzIHJlY29yZGVkIGJ5IHRoZSBzeW50aGV0aWMgZml4ZXIuICovXHJcbiAgaW5zZXJ0ZWRGaXhlczogUnVsZS5GaXhbXTtcclxuICAvKiogTWVzc2FnZSBpZGVudGlmaWVycyBlbWl0dGVkIGluIHJlcG9ydCBvcmRlci4gKi9cclxuICBtZXNzYWdlSWRzOiAoUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkIHwgdW5kZWZpbmVkKVtdO1xyXG4gIC8qKiBGaXggZW1pdHRlZCBmb3IgdGhlIG1pc3Npbmctc2VjdGlvbnMgcmVwb3J0LiAqL1xyXG4gIG1pc3NpbmdTZWN0aW9uc0ZpeDogUnVsZS5GaXggfCBSdWxlLkZpeFtdIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyBmYWxzZSBzbyB0aGUgbW9ja2VkIHJ1bGUgcGF0aCBhbHdheXMgcmVwb3J0cyBhIG1pc3NpbmcgYmxhbmsgbGluZS5cclxuICogQHJldHVybnMgRmFsc2UgZm9yIGV2ZXJ5IGludm9jYXRpb24uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgYWN0dWFsID0gYWx3YXlzUmV0dXJuRmFsc2UoKTsgdm9pZCBhY3R1YWw7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gYWx3YXlzUmV0dXJuRmFsc2UoKTogZmFsc2Uge1xyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIG1vY2tlZCBBQUEgaGVscGVyIG1vZHVsZS5cclxuICogQHJldHVybnMgTW9ja2VkIGV4cG9ydHMgY29uc3VtZWQgYnkgdGhlIHJ1bGUgbW9kdWxlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1vY2tNb2R1bGUgPSBjcmVhdGVBYWFNb2R1bGVNb2NrKCk7IHZvaWQgbW9ja01vZHVsZTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVBYWFNb2R1bGVNb2NrKCk6IEFhYU1vZHVsZU1vY2sge1xyXG4gIHJldHVybiB7XHJcbiAgICBhbmFseXplVGVzdEJsb2NrOiBjcmVhdGVNb2NrQW5hbHlzaXMsXHJcbiAgICBnZXRMaW5lU3RhcnRSYW5nZTogZ2V0TW9ja0xpbmVTdGFydFJhbmdlLFxyXG4gICAgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzOiBnZXRNb2NrUGhhc2VCb3VuZGFyeUNvbW1lbnRzLFxyXG4gICAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudDogYWx3YXlzUmV0dXJuRmFsc2UsXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIG1vY2tlZCBtaXNzaW5nLXNlY3Rpb24tZml4ZXMgbW9kdWxlLlxyXG4gKiBAcGFyYW0gYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzIE1vY2tlZCBmaXggYnVpbGRlci5cclxuICogQHJldHVybnMgTW9ja2VkIG1vZHVsZSBleHBvc2luZyB0aGUgcHJvdmlkZWQgZml4IGJ1aWxkZXIuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbW9ja01vZHVsZSA9IGNyZWF0ZU1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUoKCkgPT4gW10pOyB2b2lkIG1vY2tNb2R1bGU7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlTWlzc2luZ1NlY3Rpb25GaXhlc01vZHVsZShcclxuICBidWlsZE1pc3NpbmdTZWN0aW9uRml4ZXM6ICgpID0+IFJ1bGUuRml4W10sXHJcbik6IE1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUge1xyXG4gIHJldHVybiB7IGJ1aWxkTWlzc2luZ1NlY3Rpb25GaXhlcyB9O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBzeW50aGV0aWMgYW5hbHlzaXMgcmV0dXJuZWQgYnkgdGhlIG1vY2tlZCBBQUEgaGVscGVycy5cclxuICogQHJldHVybnMgTWluaW1hbCB0ZXN0LWJsb2NrIGFuYWx5c2lzIHVzZWQgYnkgdGhlIHJlZ3Jlc3Npb24gc2NlbmFyaW8uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgYW5hbHlzaXMgPSBjcmVhdGVNb2NrQW5hbHlzaXMoKTsgdm9pZCBhbmFseXNpcztcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVNb2NrQW5hbHlzaXMoKTogVGVzdEJsb2NrQW5hbHlzaXMge1xyXG4gIHJldHVybiB7XHJcbiAgICBib2R5TGluZUNvdW50OiA0LFxyXG4gICAgY2FsbEV4cHJlc3Npb246IHsgdHlwZTogXCJDYWxsRXhwcmVzc2lvblwiIH0sXHJcbiAgICBuZXdsaW5lOiBcIlxcblwiLFxyXG4gICAgc2VjdGlvbkNvbW1lbnRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBjb21tZW50OiB7XHJcbiAgICAgICAgICBsb2M6IHsgZW5kOiB7IGxpbmU6IDIgfSwgc3RhcnQ6IHsgbGluZTogMiB9IH0sXHJcbiAgICAgICAgICB0eXBlOiBcIkxpbmVcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBoYXNlczogW1wiQXJyYW5nZVwiXSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNvbW1lbnQ6IHtcclxuICAgICAgICAgIGxvYzogeyBlbmQ6IHsgbGluZTogNCB9LCBzdGFydDogeyBsaW5lOiA0IH0gfSxcclxuICAgICAgICAgIHR5cGU6IFwiTGluZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGhhc2VzOiBbXCJBY3RcIl0sXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgc291cmNlVGV4dDogW1xyXG4gICAgICBcImNvbnN0IHNldHVwID0gY3JlYXRlU2V0dXAoKTtcIixcclxuICAgICAgXCIvLyBBcnJhbmdlXCIsXHJcbiAgICAgIFwicnVuKCk7XCIsXHJcbiAgICAgIFwiLy8gQWN0XCIsXHJcbiAgICBdLmpvaW4oXCJcXG5cIiksXHJcbiAgICBzdGF0ZW1lbnRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBub2RlOiB7XHJcbiAgICAgICAgICBsb2M6IHsgZW5kOiB7IGxpbmU6IDEgfSwgc3RhcnQ6IHsgbGluZTogMSB9IH0sXHJcbiAgICAgICAgICB0eXBlOiBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIixcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbm9kZToge1xyXG4gICAgICAgICAgbG9jOiB7IGVuZDogeyBsaW5lOiAzIH0sIHN0YXJ0OiB7IGxpbmU6IDMgfSB9LFxyXG4gICAgICAgICAgdHlwZTogXCJFeHByZXNzaW9uU3RhdGVtZW50XCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSBhcyBUZXN0QmxvY2tBbmFseXNpcztcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBmaXhlciB0aGF0IHJlY29yZHMgaW5zZXJ0ZWQgdGV4dCBlZGl0cy5cclxuICogQHBhcmFtIGluc2VydGVkRml4ZXMgQ29sbGVjdGlvbiB1cGRhdGVkIHdoZW4gdGhlIGZpeGVyIGluc2VydHMgdGV4dC5cclxuICogQHJldHVybnMgUnVsZSBmaXhlciB0aGF0IHJlY29yZHMgaW5zZXJ0ZWQgZWRpdHMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgZml4ZXIgPSBjcmVhdGVSZWNvcmRlZEZpeGVyKFtdKTsgdm9pZCBmaXhlcjtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZWNvcmRlZEZpeGVyKGluc2VydGVkRml4ZXM6IFJ1bGUuRml4W10pOiBSdWxlLlJ1bGVGaXhlciB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGluc2VydFRleHRCZWZvcmVSYW5nZShyYW5nZTogW251bWJlciwgbnVtYmVyXSwgdGV4dDogc3RyaW5nKTogUnVsZS5GaXgge1xyXG4gICAgICBjb25zdCBmaXg6IFJ1bGUuRml4ID0geyByYW5nZSwgdGV4dCB9O1xyXG4gICAgICBpbnNlcnRlZEZpeGVzLnB1c2goZml4KTtcclxuICAgICAgcmV0dXJuIGZpeDtcclxuICAgIH0sXHJcbiAgfSBhcyBSdWxlLlJ1bGVGaXhlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIG1pbmltYWwgcnVsZSBjb250ZXh0IHVzZWQgYnkgdGhlIG1vY2tlZCBzY2VuYXJpby5cclxuICogQHBhcmFtIHJlcG9ydHMgUmVwb3J0IGRlc2NyaXB0b3JzIGNhcHR1cmVkIGR1cmluZyBydWxlIGV4ZWN1dGlvbi5cclxuICogQHJldHVybnMgUnVsZSBjb250ZXh0IHRoYXQgcmVjb3JkcyBlbWl0dGVkIHJlcG9ydHMuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29udGV4dCA9IGNyZWF0ZVJ1bGVDb250ZXh0KFtdKTsgdm9pZCBjb250ZXh0O1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVJ1bGVDb250ZXh0KHJlcG9ydHM6IFJ1bGUuUmVwb3J0RGVzY3JpcHRvcltdKTogUnVsZS5SdWxlQ29udGV4dCB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHJlcG9ydChkZXNjcmlwdG9yOiBSdWxlLlJlcG9ydERlc2NyaXB0b3IpOiB2b2lkIHtcclxuICAgICAgcmVwb3J0cy5wdXNoKGRlc2NyaXB0b3IpO1xyXG4gICAgfSxcclxuICB9IGFzIFJ1bGUuUnVsZUNvbnRleHQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWFkcyB0aGUgZml4IGVtaXR0ZWQgYnkgYSByZXBvcnQgZGVzY3JpcHRvci5cclxuICogQHBhcmFtIGRlc2NyaXB0b3IgUmVwb3J0IGRlc2NyaXB0b3IgdG8gZXZhbHVhdGUuXHJcbiAqIEBwYXJhbSBmaXhlciBTeW50aGV0aWMgZml4ZXIgcGFzc2VkIGludG8gdGhlIGRlc2NyaXB0b3IgY2FsbGJhY2suXHJcbiAqIEByZXR1cm5zIEZpeCBvdXRwdXQgcHJvZHVjZWQgYnkgdGhlIGRlc2NyaXB0b3IuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgZml4ID0gZ2V0RGVzY3JpcHRvckZpeCh2b2lkIDAsIHt9IGFzIG5ldmVyKTsgdm9pZCBmaXg7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckZpeChcclxuICBkZXNjcmlwdG9yOiBSdWxlLlJlcG9ydERlc2NyaXB0b3IgfCB1bmRlZmluZWQsXHJcbiAgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyLFxyXG4pOiBSdWxlLkZpeCB8IFJ1bGUuRml4W10gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IGFjdHVhbCA9IGRlc2NyaXB0b3I/LmZpeD8uKGZpeGVyKTtcclxuXHJcbiAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgT2JqZWN0KSkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KGFjdHVhbCkgfHwgXCJyYW5nZVwiIGluIGFjdHVhbCkge1xyXG4gICAgcmV0dXJuIGFjdHVhbDtcclxuICB9XHJcblxyXG4gIGNvbnN0IGl0ZXJhYmxlRml4ZXM6IEl0ZXJhYmxlPFJ1bGUuRml4PiA9IGFjdHVhbDtcclxuXHJcbiAgcmV0dXJuIFsuLi5pdGVyYWJsZUZpeGVzXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlYWRzIHRoZSBtb2NrZWQgbGluZS1zdGFydCByYW5nZSBmb3IgdGhlIGJsYW5rLWxpbmUgZml4LlxyXG4gKiBAcmV0dXJucyBTeW50aGV0aWMgcmFuZ2UgdXNlZCBieSB0aGUgcnVsZSBmaXguXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgcmFuZ2UgPSBnZXRNb2NrTGluZVN0YXJ0UmFuZ2UoKTsgdm9pZCByYW5nZTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRNb2NrTGluZVN0YXJ0UmFuZ2UoKTogW251bWJlciwgbnVtYmVyXSB7XHJcbiAgcmV0dXJuIFs3LCA3XTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIHBoYXNlLWJvdW5kYXJ5IGNvbW1lbnRzIGZyb20gdGhlIG1vY2tlZCBhbmFseXNpcy5cclxuICogQHBhcmFtIGFuYWx5c2lzIFBhcnNlZCBhbmFseXNpcyB1c2VkIGJ5IHRoZSBtb2NrZWQgcnVsZSBoZWxwZXJzLlxyXG4gKiBAcmV0dXJucyBPbmx5IGNvbW1lbnRzIHRoYXQgYmVnaW4gYSBsYXRlciBBQUEgcGhhc2UuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgY29tbWVudHMgPSBnZXRNb2NrUGhhc2VCb3VuZGFyeUNvbW1lbnRzKGNyZWF0ZU1vY2tBbmFseXNpcygpKTtcclxuICogdm9pZCBjb21tZW50cztcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRNb2NrUGhhc2VCb3VuZGFyeUNvbW1lbnRzKFxyXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcclxuKTogVGVzdEJsb2NrQW5hbHlzaXNbXCJzZWN0aW9uQ29tbWVudHNcIl0ge1xyXG4gIHJldHVybiBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHMuc2xpY2UoMSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWFkcyB0aGUgbWVzc2FnZSBpZGVudGlmaWVyIGZyb20gYSByZXBvcnQgZGVzY3JpcHRvciB3aGVuIHByZXNlbnQuXHJcbiAqIEBwYXJhbSBkZXNjcmlwdG9yIFJlcG9ydCBkZXNjcmlwdG9yIGVtaXR0ZWQgYnkgdGhlIHJ1bGUuXHJcbiAqIEByZXR1cm5zIFN1cHBvcnRlZCBtZXNzYWdlIGlkZW50aWZpZXIgd2hlbiBwcmVzZW50LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IG1lc3NhZ2VJZCA9IGdldFJlcG9ydE1lc3NhZ2VJZCh7IG1lc3NhZ2VJZDogXCJtaXNzaW5nU2VjdGlvbnNcIiB9IGFzIFJ1bGUuUmVwb3J0RGVzY3JpcHRvcik7XHJcbiAqIHZvaWQgbWVzc2FnZUlkO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldFJlcG9ydE1lc3NhZ2VJZChcclxuICBkZXNjcmlwdG9yOiBSdWxlLlJlcG9ydERlc2NyaXB0b3IsXHJcbik6IFJlcXVpcmVBYWFTZWN0aW9uc01lc3NhZ2VJZCB8IHVuZGVmaW5lZCB7XHJcbiAgaWYgKFxyXG4gICAgIShcIm1lc3NhZ2VJZFwiIGluIGRlc2NyaXB0b3IpIHx8XHJcbiAgICAhaXNSZXF1aXJlQWFhU2VjdGlvbnNNZXNzYWdlSWQoZGVzY3JpcHRvci5tZXNzYWdlSWQpXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuICByZXR1cm4gZGVzY3JpcHRvci5tZXNzYWdlSWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhbiB1bmtub3duIHZhbHVlIGlzIGEgdmFsaWQgcnVsZSBtZXNzYWdlIGlkZW50aWZpZXIuXHJcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byB2YWxpZGF0ZS5cclxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSBzdXBwb3J0ZWQgbWVzc2FnZSBpZGVudGlmaWVyLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGFjdHVhbCA9IGlzUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkKFwibWlzc2luZ1NlY3Rpb25zXCIpO1xyXG4gKiB2b2lkIGFjdHVhbDtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1JlcXVpcmVBYWFTZWN0aW9uc01lc3NhZ2VJZChcclxuICB2YWx1ZTogdW5rbm93bixcclxuKTogdmFsdWUgaXMgUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkIHtcclxuICByZXR1cm4gKFxyXG4gICAgdmFsdWUgPT09IFwiYmxhbmtMaW5lQmVmb3JlU2VjdGlvblwiIHx8XHJcbiAgICB2YWx1ZSA9PT0gXCJjb2RlQmVmb3JlQXJyYW5nZVwiIHx8XHJcbiAgICB2YWx1ZSA9PT0gXCJlbXB0eVNlY3Rpb25cIiB8fFxyXG4gICAgdmFsdWUgPT09IFwibWlzc2luZ1NlY3Rpb25zXCJcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogTG9hZHMgdGhlIHJ1bGUgbW9kdWxlIGFmdGVyIHRlc3QgbW9ja3MgaGF2ZSBiZWVuIGFwcGxpZWQuXHJcbiAqIEByZXR1cm5zIFRoZSBydWxlIG1vZHVsZSB1bmRlciB0ZXN0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJ1bGUgPSBhd2FpdCBsb2FkUmVxdWlyZUFhYVNlY3Rpb25zUnVsZSgpOyB2b2lkIHJ1bGU7XHJcbiAqIGBgYFxyXG4gKi9cclxuYXN5bmMgZnVuY3Rpb24gbG9hZFJlcXVpcmVBYWFTZWN0aW9uc1J1bGUoKTogUHJvbWlzZTxSdWxlLlJ1bGVNb2R1bGU+IHtcclxuICBjb25zdCB7IHJlcXVpcmVBYWFTZWN0aW9uc1J1bGUgfSA9IGF3YWl0IGltcG9ydChcIi4vcnVsZVwiKTtcclxuICByZXR1cm4gcmVxdWlyZUFhYVNlY3Rpb25zUnVsZTtcclxufVxyXG5cclxuZXhwb3J0IHtcclxuICBjcmVhdGVBYWFNb2R1bGVNb2NrLFxyXG4gIGNyZWF0ZU1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUsXHJcbiAgY3JlYXRlUmVjb3JkZWRGaXhlcixcclxuICBjcmVhdGVSdWxlQ29udGV4dCxcclxuICBnZXREZXNjcmlwdG9yRml4LFxyXG4gIGdldFJlcG9ydE1lc3NhZ2VJZCxcclxuICBsb2FkUmVxdWlyZUFhYVNlY3Rpb25zUnVsZSxcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIHsgU2NlbmFyaW9SZXN1bHQgfTtcclxuIl19
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import type { RequireTestCompanionOptions } from "./types.js";
|
|
2
|
-
/** Type definition for rule data. */
|
|
3
|
-
interface RuleReport {
|
|
4
|
-
/** MessageId helper value. */
|
|
5
|
-
messageId: string | undefined;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Creates createTemporaryFile.
|
|
9
|
-
* @param root Input root value.
|
|
10
|
-
* @param filename Input filename value.
|
|
11
|
-
* @returns Return value output.
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* createTemporaryFile();
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
declare const createTemporaryFile: (root: "src" | "tmp", filename: string) => string;
|
|
18
|
-
/**
|
|
19
|
-
* Creates a temporary file pair for test/source combinations.
|
|
20
|
-
* @param root Input root value.
|
|
21
|
-
* @param first Input first value.
|
|
22
|
-
* @param second Input second value.
|
|
23
|
-
* @returns Tuple of created file paths.
|
|
24
|
-
* @throws {Error} When the file paths are missing.
|
|
25
|
-
* @example
|
|
26
|
-
* ```typescript
|
|
27
|
-
* const [source, test] = createTemporaryPair("tmp", "a.ts", "a.spec.ts");
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
declare const createTemporaryPair: (root: "src" | "tmp", first: string, second: string) => [string, string];
|
|
31
|
-
/**
|
|
32
|
-
* Runs the rule with the given options.
|
|
33
|
-
* @param filename Input filename value.
|
|
34
|
-
* @param options Input options value.
|
|
35
|
-
* @returns Collected rule reports.
|
|
36
|
-
* @example
|
|
37
|
-
* ```typescript
|
|
38
|
-
* const reports = runRule("/tmp/feature.ts");
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
declare const runRule: (filename: string, options?: RequireTestCompanionOptions) => RuleReport[];
|
|
42
|
-
/**
|
|
43
|
-
* Cleans up temporary directories created by tests.
|
|
44
|
-
* @example
|
|
45
|
-
* ```typescript
|
|
46
|
-
* cleanupTemporaryDirectories();
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
declare const cleanupTemporaryDirectories: () => void;
|
|
50
|
-
export { cleanupTemporaryDirectories, createTemporaryFile, createTemporaryPair, runRule, };
|
|
51
|
-
//# sourceMappingURL=require-test-companion-test-helpers.d.ts.map
|
package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"require-test-companion-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/require-test-companion-test-helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAU3D,qCAAqC;AACrC,UAAU,UAAU;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAgCD;;;;;;;;;GASG;AACH,QAAA,MAAM,mBAAmB,GAAI,MAAM,KAAK,GAAG,KAAK,EAAE,UAAU,MAAM,KAAG,MAMpE,CAAC;AAyBF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,mBAAmB,GACvB,MAAM,KAAK,GAAG,KAAK,EACnB,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,CAAC,MAAM,EAAE,MAAM,CAOjB,CAAC;AA2EF;;;;;;;;;GASG;AACH,QAAA,MAAM,OAAO,GACX,UAAU,MAAM,EAChB,UAAU,2BAA2B,KACpC,UAAU,EAUZ,CAAC;AAEF;;;;;;GAMG;AACH,QAAA,MAAM,2BAA2B,QAAO,IAIvC,CAAC;AAEF,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,GACR,CAAC"}
|