@codeperfect/eslint-plugin 1.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/{custom-rules.d.ts → application/custom-rules.d.ts} +3 -0
- package/dist/application/custom-rules.d.ts.map +1 -0
- package/dist/application/custom-rules.js +74 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +3 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +56 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +149 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +4 -4
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +98 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +45 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +64 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +5 -4
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +87 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +145 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/index.js +4 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +90 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +91 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +4 -6
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +95 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.js +51 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +4 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +4 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/test-helpers.d.ts +48 -48
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +20 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +25 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +235 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts +19 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/types.js +2 -0
- package/dist/{architecture → domain/architecture}/index.d.ts +1 -1
- package/dist/domain/architecture/index.d.ts.map +1 -0
- package/dist/domain/architecture/index.js +2 -0
- package/dist/{core → domain/core}/index.d.ts +2 -2
- package/dist/domain/core/index.d.ts.map +1 -0
- package/dist/domain/core/index.js +3 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts +2 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/index.js +2 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +101 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +108 -0
- package/dist/{core → domain/core}/no-multiple-declarators/rule.d.ts +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +35 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.js +95 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.js +222 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +4 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts +77 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/types.js +38 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts +2 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/index.js +2 -0
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/rule.js +148 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.js +116 -0
- package/dist/{custom-rule-documentation.d.ts → domain/custom-rule-documentation.d.ts} +3 -1
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
- package/dist/domain/custom-rule-documentation.js +36 -0
- package/dist/domain/docs/index.d.ts +4 -0
- package/dist/domain/docs/index.d.ts.map +1 -0
- package/dist/domain/docs/index.js +4 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +146 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts +2 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/index.js +2 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-tags.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +101 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +125 -0
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/rule.js +171 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.js +2 -2
- package/dist/{docs → domain/docs}/no-interface-member-docs/types.d.ts +2 -2
- package/dist/domain/docs/no-interface-member-docs/types.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/types.js +2 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts +5 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/create-fixer.js +5 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.js +169 -0
- package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/example-utilities.js +76 -0
- package/dist/{docs → domain/docs}/require-example-language/examples.d.ts +1 -1
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/examples.js +181 -0
- package/dist/{docs → domain/docs}/require-example-language/fixes.d.ts +2 -2
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/fixes.js +182 -0
- package/dist/domain/docs/require-example-language/index.d.ts +3 -0
- package/dist/domain/docs/require-example-language/index.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/index.js +2 -0
- package/dist/{docs → domain/docs}/require-example-language/reporting.d.ts +1 -1
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/reporting.js +148 -0
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/rule.js +37 -0
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/types.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/index.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/rule.js +201 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
- package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
- package/dist/domain/docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/test-helpers.js +107 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +6 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts +34 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +145 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +203 -0
- package/dist/domain/testing/aaa/analyzer.analysis.js +82 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +18 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +95 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +185 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +33 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +64 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +105 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +16 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +77 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +203 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +31 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.js +4 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +15 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.js +34 -0
- package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
- package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.js +59 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts +106 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +27 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.js +66 -0
- package/dist/domain/testing/aaa/analyzer.super.js +211 -0
- package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
- package/dist/domain/testing/aaa/index.d.ts.map +1 -0
- package/dist/domain/testing/aaa/index.js +2 -0
- package/dist/domain/testing/aaa/types.d.ts +58 -0
- package/dist/domain/testing/aaa/types.d.ts.map +1 -0
- package/dist/domain/testing/aaa/types.js +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
- package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.js +116 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
- package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +37 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
- package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.js +88 -0
- package/dist/{testing → domain/testing}/index.d.ts +9 -8
- package/dist/domain/testing/index.d.ts.map +1 -0
- package/dist/domain/testing/index.js +10 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +39 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +97 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +174 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +84 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +195 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +96 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +88 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +187 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/index.js +2 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
- package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.js +134 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.js +216 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/index.js +2 -0
- package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.js +109 -0
- package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
- package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/index.js +3 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/rule.js +82 -0
- package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/types.js +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/index.js +2 -0
- package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/rule.js +37 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
- package/dist/infrastructure/codeperfect-plugin.js +30 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +4 -0
- package/dist/infrastructure/presets.d.ts +18 -0
- package/dist/infrastructure/presets.d.ts.map +1 -0
- package/dist/infrastructure/presets.js +81 -0
- package/package.json +67 -32
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
- package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
- package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/index.js +0 -4
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
- package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/rule.js +0 -58
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
- package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
- package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/types.js +0 -2
- package/dist/architecture/index.d.ts.map +0 -1
- package/dist/architecture/index.js +0 -2
- package/dist/benchmark-rules.d.ts +0 -83
- package/dist/benchmark-rules.d.ts.map +0 -1
- package/dist/benchmark-rules.js +0 -175
- package/dist/codeperfect-plugin.d.ts.map +0 -1
- package/dist/codeperfect-plugin.js +0 -29
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/no-multiple-declarators/index.d.ts +0 -2
- package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/index.js +0 -2
- package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/rule.js +0 -100
- package/dist/core/prefer-interface-types/index.d.ts +0 -2
- package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/index.js +0 -2
- package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/rule.js +0 -145
- package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/test-helpers.js +0 -116
- package/dist/custom-rule-documentation.d.ts.map +0 -1
- package/dist/custom-rule-documentation.js +0 -35
- package/dist/custom-rules.d.ts.map +0 -1
- package/dist/custom-rules.js +0 -70
- package/dist/docs/index.d.ts +0 -4
- package/dist/docs/index.d.ts.map +0 -1
- package/dist/docs/index.js +0 -4
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
- package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
- package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/index.js +0 -2
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
- package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/rule.js +0 -168
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.js +0 -2
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
- package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
- package/dist/docs/require-example-language/example-utilities.js +0 -76
- package/dist/docs/require-example-language/examples.d.ts.map +0 -1
- package/dist/docs/require-example-language/examples.js +0 -181
- package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/fixes.js +0 -182
- package/dist/docs/require-example-language/index.d.ts +0 -3
- package/dist/docs/require-example-language/index.d.ts.map +0 -1
- package/dist/docs/require-example-language/index.js +0 -2
- package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
- package/dist/docs/require-example-language/reporting.js +0 -145
- package/dist/docs/require-example-language/rule.d.ts.map +0 -1
- package/dist/docs/require-example-language/rule.js +0 -34
- package/dist/docs/require-example-language/types.d.ts.map +0 -1
- package/dist/docs/require-example-language/types.js +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/index.js +0 -2
- package/dist/docs/single-line-jsdoc/rule.d.ts +0 -5
- package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/rule.js +0 -196
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
- package/dist/docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/test-helpers.js +0 -107
- package/dist/presets.d.ts +0 -10
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -50
- package/dist/rules/index.d.ts +0 -5
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -6
- package/dist/testing/aaa/analyzer.d.ts +0 -36
- package/dist/testing/aaa/analyzer.d.ts.map +0 -1
- package/dist/testing/aaa/analyzer.js +0 -490
- package/dist/testing/aaa/index.d.ts.map +0 -1
- package/dist/testing/aaa/index.js +0 -2
- package/dist/testing/aaa/types.d.ts +0 -31
- package/dist/testing/aaa/types.d.ts.map +0 -1
- package/dist/testing/aaa/types.js +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/index.js +0 -2
- package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/rule.js +0 -54
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
- package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/index.js +0 -2
- package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/rule.js +0 -48
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -9
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
- package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
- package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
- package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
- package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
- package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/index.js +0 -2
- package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/rule.js +0 -111
- package/dist/testing/require-act-result-capture/index.d.ts +0 -2
- package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/index.js +0 -2
- package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/rule.js +0 -34
- package/dist/testing/require-test-companion/index.d.ts +0 -3
- package/dist/testing/require-test-companion/index.d.ts.map +0 -1
- package/dist/testing/require-test-companion/index.js +0 -3
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
- package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
- package/dist/testing/require-test-companion/rule.js +0 -57
- package/dist/testing/require-test-companion/types.d.ts.map +0 -1
- package/dist/testing/require-test-companion/types.js +0 -2
- package/dist/testing/single-act-statement/index.d.ts +0 -2
- package/dist/testing/single-act-statement/index.d.ts.map +0 -1
- package/dist/testing/single-act-statement/index.js +0 -2
- package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
- package/dist/testing/single-act-statement/rule.js +0 -33
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
- /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { getStatementExpression, hasAssertion, isActionExpression, unwrapExpression, } from "./analyzer.assertions.js";
|
|
2
|
+
import { visitStatementWithoutDeferredBodies } from "./analyzer.classification.traversal.js";
|
|
3
|
+
import { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall, isVoidLikeMethodName, visitNode, voidLikeMethodNames, } from "./analyzer.super.js";
|
|
4
|
+
/**
|
|
5
|
+
* Checks for async logic.
|
|
6
|
+
* @param statement Input statement value.
|
|
7
|
+
* @returns Return value output.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* hasAsyncLogic(statement);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function hasAsyncLogic(statement) {
|
|
14
|
+
let foundAsyncLogic = false;
|
|
15
|
+
visitStatementWithoutDeferredBodies(statement, (node) => {
|
|
16
|
+
if (node.type === "AwaitExpression") {
|
|
17
|
+
foundAsyncLogic = true;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (node.type === "CallExpression" &&
|
|
21
|
+
node.callee.type === "MemberExpression" &&
|
|
22
|
+
node.callee.property.type === "Identifier" &&
|
|
23
|
+
["catch", "finally", "then"].includes(node.callee.property.name)) {
|
|
24
|
+
foundAsyncLogic = true;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (node.type === "NewExpression" &&
|
|
28
|
+
getExpressionName(node.callee) === "Promise") {
|
|
29
|
+
foundAsyncLogic = true;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return foundAsyncLogic;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Checks for await usage.
|
|
36
|
+
* @param statement Input statement value.
|
|
37
|
+
* @returns Return value output.
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* hasAwait(statement);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
function hasAwait(statement) {
|
|
44
|
+
let foundAwait = false;
|
|
45
|
+
visitStatementWithoutDeferredBodies(statement, (node) => {
|
|
46
|
+
if (node.type === "AwaitExpression") {
|
|
47
|
+
foundAwait = true;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return foundAwait;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Checks for blank lines before comments.
|
|
54
|
+
* @param sourceText Input sourceText value.
|
|
55
|
+
* @param comment Input comment value.
|
|
56
|
+
* @returns Return value output.
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* hasBlankLineBeforeComment(sourceText, comment);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
function hasBlankLineBeforeComment(sourceText, comment) {
|
|
63
|
+
if (!isLocatedComment(comment)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
const lines = sourceText.split(/\r\n|\n/u);
|
|
67
|
+
const previousLine = lines[comment.loc.start.line - 2];
|
|
68
|
+
return previousLine === void 0 || previousLine.trim().length === 0;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Checks for capturable Act results.
|
|
72
|
+
* @param statement Input statement value.
|
|
73
|
+
* @returns Return value output.
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* hasCapturableActResult(statement);
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
function hasCapturableActResult(statement) {
|
|
80
|
+
if (statement.type !== "ExpressionStatement") {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const expression = unwrapExpression(statement.expression);
|
|
84
|
+
if (!isActionExpression(expression) || isUtilityLikeExpression(expression)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
const calleeName = getInvokedName(expression);
|
|
88
|
+
return (calleeName === void 0 ||
|
|
89
|
+
(!voidLikeMethodNames.has(calleeName) && !isVoidLikeMethodName(calleeName)));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Checks for mutation.
|
|
93
|
+
* @param statement Input statement value.
|
|
94
|
+
* @returns Return value output.
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* hasMutation(statement);
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
function hasMutation(statement) {
|
|
101
|
+
let foundMutation = false;
|
|
102
|
+
visitNode(statement, (node) => {
|
|
103
|
+
if (node.type === "AssignmentExpression" ||
|
|
104
|
+
node.type === "UpdateExpression" ||
|
|
105
|
+
node.type === "UnaryExpression") {
|
|
106
|
+
if (node.type !== "UnaryExpression" || node.operator === "delete") {
|
|
107
|
+
foundMutation = true;
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (node.type === "CallExpression" &&
|
|
112
|
+
node.callee.type === "MemberExpression" &&
|
|
113
|
+
node.callee.property.type === "Identifier" &&
|
|
114
|
+
arrayMutationMethods.has(node.callee.property.name)) {
|
|
115
|
+
foundMutation = true;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
return foundMutation;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Checks for meaningful Act statements.
|
|
122
|
+
* @param statement Input statement value.
|
|
123
|
+
* @returns Return value output.
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* isMeaningfulActStatement(statement);
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
function isMeaningfulActStatement(statement) {
|
|
130
|
+
const expression = getStatementExpression(statement);
|
|
131
|
+
if (expression === void 0) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
return (isActionExpression(expression) &&
|
|
135
|
+
!isUtilityLikeExpression(expression) &&
|
|
136
|
+
!hasAssertion(statement));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Checks for rule create calls.
|
|
140
|
+
* @param expression Input expression value.
|
|
141
|
+
* @returns Return value output.
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* isRuleCreateInvocation(expression);
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
function isRuleCreateInvocation(expression) {
|
|
148
|
+
return (expression.type === "CallExpression" &&
|
|
149
|
+
expression.callee.type === "MemberExpression" &&
|
|
150
|
+
expression.callee.object.type === "Identifier" &&
|
|
151
|
+
expression.callee.property.type === "Identifier" &&
|
|
152
|
+
expression.callee.property.name === "create" &&
|
|
153
|
+
expression.callee.object.name.endsWith("Rule"));
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Checks for setup-like statements.
|
|
157
|
+
* @param statement Input statement value.
|
|
158
|
+
* @returns Return value output.
|
|
159
|
+
* @example
|
|
160
|
+
* ```typescript
|
|
161
|
+
* isSetupLikeStatement(statement);
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
function isSetupLikeStatement(statement) {
|
|
165
|
+
if (statement.type === "VariableDeclaration") {
|
|
166
|
+
return statement.declarations.every((declaration) => {
|
|
167
|
+
if (declaration.init === null) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
const init = unwrapExpression(declaration.init);
|
|
171
|
+
return !isActionExpression(init) || isUtilityLikeExpression(init);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
const expression = getStatementExpression(statement);
|
|
175
|
+
return expression !== void 0 && isUtilityLikeExpression(expression);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Checks for utility-like expressions.
|
|
179
|
+
* @param expression Input expression value.
|
|
180
|
+
* @returns Return value output.
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* isUtilityLikeExpression(expression);
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
function isUtilityLikeExpression(expression) {
|
|
187
|
+
const unwrappedExpression = unwrapExpression(expression);
|
|
188
|
+
if (!isCallableExpression(unwrappedExpression)) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
const calleeName = getExpressionName(unwrappedExpression.callee);
|
|
192
|
+
if (calleeName === void 0) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
return (!isRuleCreateInvocation(unwrappedExpression) &&
|
|
196
|
+
(isUtilityConstructor(unwrappedExpression, calleeName) ||
|
|
197
|
+
isUtilityNamedCall(calleeName) ||
|
|
198
|
+
isUtilityNamespaceCall(unwrappedExpression)));
|
|
199
|
+
}
|
|
200
|
+
/** Companion marker for test isolation. */
|
|
201
|
+
const analyzerClassificationHelpersCompanion = true;
|
|
202
|
+
export { analyzerClassificationHelpersCompanion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, };
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9hYWEvYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsZ0JBQWdCLEdBQ2pCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxtQkFBbUIsR0FDcEIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQjs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsYUFBYSxDQUFDLFNBQTJCO0lBQ2hELElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztJQUM1QixtQ0FBbUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN0RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUNwQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFDRSxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQjtZQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxrQkFBa0I7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVk7WUFDMUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFD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Q3BELGtCQUFrQixDQUFDLFVBQVUsQ0FBQztZQUM5QixzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sc0NBQXNDLEdBQUcsSUFBYSxDQUFDO0FBRTdELE9BQU8sRUFDTCxzQ0FBc0MsRUFDdEMsYUFBYSxFQUNiLFFBQVEsRUFDUix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsb0JBQW9CLEdBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XHJcblxyXG5pbXBvcnQgdHlwZSB7IFNvdXJjZUNvbW1lbnQgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtcclxuICBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uLFxyXG4gIGhhc0Fzc2VydGlvbixcclxuICBpc0FjdGlvbkV4cHJlc3Npb24sXHJcbiAgdW53cmFwRXhwcmVzc2lvbixcclxufSBmcm9tIFwiLi9hbmFseXplci5hc3NlcnRpb25zXCI7XHJcbmltcG9ydCB7IHZpc2l0U3RhdGVtZW50V2l0aG91dERlZmVycmVkQm9kaWVzIH0gZnJvbSBcIi4vYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24udHJhdmVyc2FsXCI7XHJcbmltcG9ydCB7XHJcbiAgYXJyYXlNdXRhdGlvbk1ldGhvZHMsXHJcbiAgZ2V0RXhwcmVzc2lvbk5hbWUsXHJcbiAgZ2V0SW52b2tlZE5hbWUsXHJcbiAgaXNDYWxsYWJsZUV4cHJlc3Npb24sXHJcbiAgaXNMb2NhdGVkQ29tbWVudCxcclxuICBpc1V0aWxpdHlDb25zdHJ1Y3RvcixcclxuICBpc1V0aWxpdHlOYW1lZENhbGwsXHJcbiAgaXNVdGlsaXR5TmFtZXNwYWNlQ2FsbCxcclxuICBpc1ZvaWRMaWtlTWV0aG9kTmFtZSxcclxuICB2aXNpdE5vZGUsXHJcbiAgdm9pZExpa2VNZXRob2ROYW1lcyxcclxufSBmcm9tIFwiLi9hbmFseXplci5zdXBlclwiO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgYXN5bmMgbG9naWMuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGhhc0FzeW5jTG9naWMoc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNBc3luY0xvZ2ljKHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCk6IGJvb2xlYW4ge1xyXG4gIGxldCBmb3VuZEFzeW5jTG9naWMgPSBmYWxzZTtcclxuICB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyhzdGF0ZW1lbnQsIChub2RlKSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSBcIkF3YWl0RXhwcmVzc2lvblwiKSB7XHJcbiAgICAgIGZvdW5kQXN5bmNMb2dpYyA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgbm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgICAgW1wiY2F0Y2hcIiwgXCJmaW5hbGx5XCIsIFwidGhlblwiXS5pbmNsdWRlcyhub2RlLmNhbGxlZS5wcm9wZXJ0eS5uYW1lKVxyXG4gICAgKSB7XHJcbiAgICAgIGZvdW5kQXN5bmNMb2dpYyA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgbm9kZS50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIiAmJlxyXG4gICAgICBnZXRFeHByZXNzaW9uTmFtZShub2RlLmNhbGxlZSkgPT09IFwiUHJvbWlzZVwiXHJcbiAgICApIHtcclxuICAgICAgZm91bmRBc3luY0xvZ2ljID0gdHJ1ZTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gZm91bmRBc3luY0xvZ2ljO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBhd2FpdCB1c2FnZS5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaGFzQXdhaXQoc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNBd2FpdChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBsZXQgZm91bmRBd2FpdCA9IGZhbHNlO1xyXG4gIHZpc2l0U3RhdGVtZW50V2l0aG91dERlZmVycmVkQm9kaWVzKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIpIHtcclxuICAgICAgZm91bmRBd2FpdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGZvdW5kQXdhaXQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIGJsYW5rIGxpbmVzIGJlZm9yZSBjb21tZW50cy5cclxuICogQHBhcmFtIHNvdXJjZVRleHQgSW5wdXQgc291cmNlVGV4dCB2YWx1ZS5cclxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50KHNvdXJjZVRleHQsIGNvbW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQoXHJcbiAgc291cmNlVGV4dDogc3RyaW5nLFxyXG4gIGNvbW1lbnQ6IFNvdXJjZUNvbW1lbnQsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGlmICghaXNMb2NhdGVkQ29tbWVudChjb21tZW50KSkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGNvbnN0IGxpbmVzID0gc291cmNlVGV4dC5zcGxpdCgvXFxyXFxufFxcbi91KTtcclxuICBjb25zdCBwcmV2aW91c0xpbmUgPSBsaW5lc1tjb21tZW50LmxvYy5zdGFydC5saW5lIC0gMl07XHJcbiAgcmV0dXJuIHByZXZpb3VzTGluZSA9PT0gdm9pZCAwIHx8IHByZXZpb3VzTGluZS50cmltKCkubGVuZ3RoID09PSAwO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBjYXB0dXJhYmxlIEFjdCByZXN1bHRzLlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0KHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGNvbnN0IGV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKHN0YXRlbWVudC5leHByZXNzaW9uKTtcclxuICBpZiAoIWlzQWN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKSB8fCBpc1V0aWxpdHlMaWtlRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBjb25zdCBjYWxsZWVOYW1lID0gZ2V0SW52b2tlZE5hbWUoXHJcbiAgICBleHByZXNzaW9uIGFzIEVTVHJlZS5DYWxsRXhwcmVzc2lvbiB8IEVTVHJlZS5OZXdFeHByZXNzaW9uLFxyXG4gICk7XHJcbiAgcmV0dXJuIChcclxuICAgIGNhbGxlZU5hbWUgPT09IHZvaWQgMCB8fFxyXG4gICAgKCF2b2lkTGlrZU1ldGhvZE5hbWVzLmhhcyhjYWxsZWVOYW1lKSAmJiAhaXNWb2lkTGlrZU1ldGhvZE5hbWUoY2FsbGVlTmFtZSkpXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgbXV0YXRpb24uXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGhhc011dGF0aW9uKHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaGFzTXV0YXRpb24oc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XHJcbiAgbGV0IGZvdW5kTXV0YXRpb24gPSBmYWxzZTtcclxuICB2aXNpdE5vZGUoc3RhdGVtZW50LCAobm9kZSkgPT4ge1xyXG4gICAgaWYgKFxyXG4gICAgICBub2RlLnR5cGUgPT09IFwiQXNzaWdubWVudEV4cHJlc3Npb25cIiB8fFxyXG4gICAgICBub2RlLnR5cGUgPT09IFwiVXBkYXRlRXhwcmVzc2lvblwiIHx8XHJcbiAgICAgIG5vZGUudHlwZSA9PT0gXCJVbmFyeUV4cHJlc3Npb25cIlxyXG4gICAgKSB7XHJcbiAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiVW5hcnlFeHByZXNzaW9uXCIgfHwgbm9kZS5vcGVyYXRvciA9PT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgIGZvdW5kTXV0YXRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgbm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgICAgYXJyYXlNdXRhdGlvbk1ldGhvZHMuaGFzKG5vZGUuY2FsbGVlLnByb3BlcnR5Lm5hbWUpXHJcbiAgICApIHtcclxuICAgICAgZm91bmRNdXRhdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGZvdW5kTXV0YXRpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIG1lYW5pbmdmdWwgQWN0IHN0YXRlbWVudHMuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudChzdGF0ZW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBjb25zdCBleHByZXNzaW9uID0gZ2V0U3RhdGVtZW50RXhwcmVzc2lvbihzdGF0ZW1lbnQpO1xyXG4gIGlmIChleHByZXNzaW9uID09PSB2b2lkIDApIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIChcclxuICAgIGlzQWN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKSAmJlxyXG4gICAgIWlzVXRpbGl0eUxpa2VFeHByZXNzaW9uKGV4cHJlc3Npb24pICYmXHJcbiAgICAhaGFzQXNzZXJ0aW9uKHN0YXRlbWVudClcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBydWxlIGNyZWF0ZSBjYWxscy5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1J1bGVDcmVhdGVJbnZvY2F0aW9uKGV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzUnVsZUNyZWF0ZUludm9jYXRpb24oXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgRVNUcmVlLk5ld0V4cHJlc3Npb24sXHJcbik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBleHByZXNzaW9uLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxyXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxyXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnByb3BlcnR5Lm5hbWUgPT09IFwiY3JlYXRlXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC5uYW1lLmVuZHNXaXRoKFwiUnVsZVwiKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIHNldHVwLWxpa2Ugc3RhdGVtZW50cy5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNTZXR1cExpa2VTdGF0ZW1lbnQoc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1NldHVwTGlrZVN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XHJcbiAgICByZXR1cm4gc3RhdGVtZW50LmRlY2xhcmF0aW9ucy5ldmVyeSgoZGVjbGFyYXRpb24pID0+IHtcclxuICAgICAgaWYgKGRlY2xhcmF0aW9uLmluaXQgPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpbml0ID0gdW53cmFwRXhwcmVzc2lvbihkZWNsYXJhdGlvbi5pbml0KTtcclxuICAgICAgcmV0dXJuICFpc0FjdGlvbkV4cHJlc3Npb24oaW5pdCkgfHwgaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oaW5pdCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uc3QgZXhwcmVzc2lvbiA9IGdldFN0YXRlbWVudEV4cHJlc3Npb24oc3RhdGVtZW50KTtcclxuICByZXR1cm4gZXhwcmVzc2lvbiAhPT0gdm9pZCAwICYmIGlzVXRpbGl0eUxpa2VFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciB1dGlsaXR5LWxpa2UgZXhwcmVzc2lvbnMuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHVud3JhcHBlZEV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gIGlmICghaXNDYWxsYWJsZUV4cHJlc3Npb24odW53cmFwcGVkRXhwcmVzc2lvbikpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgY29uc3QgY2FsbGVlTmFtZSA9IGdldEV4cHJlc3Npb25OYW1lKHVud3JhcHBlZEV4cHJlc3Npb24uY2FsbGVlKTtcclxuICBpZiAoY2FsbGVlTmFtZSA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiAoXHJcbiAgICAhaXNSdWxlQ3JlYXRlSW52b2NhdGlvbih1bndyYXBwZWRFeHByZXNzaW9uKSAmJlxyXG4gICAgKGlzVXRpbGl0eUNvbnN0cnVjdG9yKHVud3JhcHBlZEV4cHJlc3Npb24sIGNhbGxlZU5hbWUpIHx8XHJcbiAgICAgIGlzVXRpbGl0eU5hbWVkQ2FsbChjYWxsZWVOYW1lKSB8fFxyXG4gICAgICBpc1V0aWxpdHlOYW1lc3BhY2VDYWxsKHVud3JhcHBlZEV4cHJlc3Npb24pKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKiBDb21wYW5pb24gbWFya2VyIGZvciB0ZXN0IGlzb2xhdGlvbi4gKi9cclxuY29uc3QgYW5hbHl6ZXJDbGFzc2lmaWNhdGlvbkhlbHBlcnNDb21wYW5pb24gPSB0cnVlIGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IHtcclxuICBhbmFseXplckNsYXNzaWZpY2F0aW9uSGVscGVyc0NvbXBhbmlvbixcclxuICBoYXNBc3luY0xvZ2ljLFxyXG4gIGhhc0F3YWl0LFxyXG4gIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQsXHJcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcclxuICBoYXNNdXRhdGlvbixcclxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQsXHJcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { hasAsyncLogic as hasAsyncLogicImplementation, hasAwait as hasAwaitImplementation, hasBlankLineBeforeComment as hasBlankLineBeforeCommentImplementation, hasCapturableActResult as hasCapturableActResultImplementation, hasMutation as hasMutationImplementation, isMeaningfulActStatement as isMeaningfulActStatementImplementation, isSetupLikeStatement as isSetupLikeStatementImplementation, } from "./analyzer.classification.helpers.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a local forwarding function for an imported analyzer helper.
|
|
4
|
+
* @template TParameters Forwarded parameter tuple.
|
|
5
|
+
* @template TResult Forwarded return type.
|
|
6
|
+
* @param implementation Imported helper implementation.
|
|
7
|
+
* @returns Local function that forwards all arguments to the implementation.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const localHelper = forward(implementation);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function forward(implementation) {
|
|
14
|
+
return (...parameters) => implementation(...parameters);
|
|
15
|
+
}
|
|
16
|
+
/** Checks whether a statement contains any async or await logic. */
|
|
17
|
+
const hasAsyncLogic = forward(hasAsyncLogicImplementation);
|
|
18
|
+
/** Checks whether a node contains an `await` expression. */
|
|
19
|
+
const hasAwait = forward(hasAwaitImplementation);
|
|
20
|
+
/** Checks whether there is a blank line immediately before a comment node. */
|
|
21
|
+
const hasBlankLineBeforeComment = forward(hasBlankLineBeforeCommentImplementation);
|
|
22
|
+
/** Checks whether an Act statement produces a result worth capturing. */
|
|
23
|
+
const hasCapturableActResult = forward(hasCapturableActResultImplementation);
|
|
24
|
+
/** Checks whether a statement performs an observable state mutation. */
|
|
25
|
+
const hasMutation = forward(hasMutationImplementation);
|
|
26
|
+
/** Checks whether a statement is a meaningful Act step (not setup or assertion). */
|
|
27
|
+
const isMeaningfulActStatement = forward(isMeaningfulActStatementImplementation);
|
|
28
|
+
/** Checks whether a statement looks like an Arrange-phase setup step. */
|
|
29
|
+
const isSetupLikeStatement = forward(isSetupLikeStatementImplementation);
|
|
30
|
+
export { hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, };
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLmNsYXNzaWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLElBQUksMkJBQTJCLEVBQzVDLFFBQVEsSUFBSSxzQkFBc0IsRUFDbEMseUJBQXlCLElBQUksdUNBQXVDLEVBQ3BFLHNCQUFzQixJQUFJLG9DQUFvQyxFQUM5RCxXQUFXLElBQUkseUJBQXlCLEVBQ3hDLHdCQUF3QixJQUFJLHNDQUFzQyxFQUNsRSxvQkFBb0IsSUFBSSxrQ0FBa0MsR0FDM0QsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxPQUFPLENBQ2QsY0FBdUQ7SUFFdkQsT0FBTyxDQUFDLEdBQUcsVUFBVSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBRTNELDREQUE0RDtBQUM1RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUVqRCw4RUFBOEU7QUFDOUUsTUFBTSx5QkFBeUIsR0FBRyxPQUFPLENBQ3ZDLHVDQUF1QyxDQUN4QyxDQUFDO0FBRUYseUVBQXlFO0FBQ3pFLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFFN0Usd0VBQXdFO0FBQ3hFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRXZELG9GQUFvRjtBQUNwRixNQUFNLHdCQUF3QixHQUFHLE9BQU8sQ0FDdEMsc0NBQXNDLENBQ3ZDLENBQUM7QUFFRix5RUFBeUU7QUFDekUsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLFFBQVEsRUFDUix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsb0JBQW9CLEdBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGhhc0FzeW5jTG9naWMgYXMgaGFzQXN5bmNMb2dpY0ltcGxlbWVudGF0aW9uLFxyXG4gIGhhc0F3YWl0IGFzIGhhc0F3YWl0SW1wbGVtZW50YXRpb24sXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCBhcyBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50SW1wbGVtZW50YXRpb24sXHJcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCBhcyBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0SW1wbGVtZW50YXRpb24sXHJcbiAgaGFzTXV0YXRpb24gYXMgaGFzTXV0YXRpb25JbXBsZW1lbnRhdGlvbixcclxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQgYXMgaXNNZWFuaW5nZnVsQWN0U3RhdGVtZW50SW1wbGVtZW50YXRpb24sXHJcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQgYXMgaXNTZXR1cExpa2VTdGF0ZW1lbnRJbXBsZW1lbnRhdGlvbixcclxufSBmcm9tIFwiLi9hbmFseXplci5jbGFzc2lmaWNhdGlvbi5oZWxwZXJzXCI7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIGxvY2FsIGZvcndhcmRpbmcgZnVuY3Rpb24gZm9yIGFuIGltcG9ydGVkIGFuYWx5emVyIGhlbHBlci5cclxuICogQHRlbXBsYXRlIFRQYXJhbWV0ZXJzIEZvcndhcmRlZCBwYXJhbWV0ZXIgdHVwbGUuXHJcbiAqIEB0ZW1wbGF0ZSBUUmVzdWx0IEZvcndhcmRlZCByZXR1cm4gdHlwZS5cclxuICogQHBhcmFtIGltcGxlbWVudGF0aW9uIEltcG9ydGVkIGhlbHBlciBpbXBsZW1lbnRhdGlvbi5cclxuICogQHJldHVybnMgTG9jYWwgZnVuY3Rpb24gdGhhdCBmb3J3YXJkcyBhbGwgYXJndW1lbnRzIHRvIHRoZSBpbXBsZW1lbnRhdGlvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBsb2NhbEhlbHBlciA9IGZvcndhcmQoaW1wbGVtZW50YXRpb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGZvcndhcmQ8VFBhcmFtZXRlcnMgZXh0ZW5kcyB1bmtub3duW10sIFRSZXN1bHQ+KFxyXG4gIGltcGxlbWVudGF0aW9uOiAoLi4ucGFyYW1ldGVyczogVFBhcmFtZXRlcnMpID0+IFRSZXN1bHQsXHJcbik6ICguLi5wYXJhbWV0ZXJzOiBUUGFyYW1ldGVycykgPT4gVFJlc3VsdCB7XHJcbiAgcmV0dXJuICguLi5wYXJhbWV0ZXJzKSA9PiBpbXBsZW1lbnRhdGlvbiguLi5wYXJhbWV0ZXJzKTtcclxufVxyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGEgc3RhdGVtZW50IGNvbnRhaW5zIGFueSBhc3luYyBvciBhd2FpdCBsb2dpYy4gKi9cclxuY29uc3QgaGFzQXN5bmNMb2dpYyA9IGZvcndhcmQoaGFzQXN5bmNMb2dpY0ltcGxlbWVudGF0aW9uKTtcclxuXHJcbi8qKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgY29udGFpbnMgYW4gYGF3YWl0YCBleHByZXNzaW9uLiAqL1xyXG5jb25zdCBoYXNBd2FpdCA9IGZvcndhcmQoaGFzQXdhaXRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlcmUgaXMgYSBibGFuayBsaW5lIGltbWVkaWF0ZWx5IGJlZm9yZSBhIGNvbW1lbnQgbm9kZS4gKi9cclxuY29uc3QgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCA9IGZvcndhcmQoXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudEltcGxlbWVudGF0aW9uLFxyXG4pO1xyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGFuIEFjdCBzdGF0ZW1lbnQgcHJvZHVjZXMgYSByZXN1bHQgd29ydGggY2FwdHVyaW5nLiAqL1xyXG5jb25zdCBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0ID0gZm9yd2FyZChoYXNDYXB0dXJhYmxlQWN0UmVzdWx0SW1wbGVtZW50YXRpb24pO1xyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGEgc3RhdGVtZW50IHBlcmZvcm1zIGFuIG9ic2VydmFibGUgc3RhdGUgbXV0YXRpb24uICovXHJcbmNvbnN0IGhhc011dGF0aW9uID0gZm9yd2FyZChoYXNNdXRhdGlvbkltcGxlbWVudGF0aW9uKTtcclxuXHJcbi8qKiBDaGVja3Mgd2hldGhlciBhIHN0YXRlbWVudCBpcyBhIG1lYW5pbmdmdWwgQWN0IHN0ZXAgKG5vdCBzZXR1cCBvciBhc3NlcnRpb24pLiAqL1xyXG5jb25zdCBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQgPSBmb3J3YXJkKFxyXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudEltcGxlbWVudGF0aW9uLFxyXG4pO1xyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGEgc3RhdGVtZW50IGxvb2tzIGxpa2UgYW4gQXJyYW5nZS1waGFzZSBzZXR1cCBzdGVwLiAqL1xyXG5jb25zdCBpc1NldHVwTGlrZVN0YXRlbWVudCA9IGZvcndhcmQoaXNTZXR1cExpa2VTdGF0ZW1lbnRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG5leHBvcnQge1xyXG4gIGhhc0FzeW5jTG9naWMsXHJcbiAgaGFzQXdhaXQsXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcclxuICBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0LFxyXG4gIGhhc011dGF0aW9uLFxyXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCxcclxuICBpc1NldHVwTGlrZVN0YXRlbWVudCxcclxufTtcclxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Companion exports for analyzer classification member-pattern tests. */
|
|
2
|
+
declare const analyzerClassificationMemberPatterns: {
|
|
3
|
+
hasAssertion: (statement: import("estree").Statement) => boolean;
|
|
4
|
+
hasCapturableActResult: (statement: import("estree").Statement) => boolean;
|
|
5
|
+
isMeaningfulActStatement: (statement: import("estree").Statement) => boolean;
|
|
6
|
+
isSetupLikeStatement: (statement: import("estree").Statement) => boolean;
|
|
7
|
+
};
|
|
8
|
+
export { analyzerClassificationMemberPatterns };
|
|
9
|
+
//# sourceMappingURL=analyzer.classification.member-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.classification.member-patterns.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.member-patterns.ts"],"names":[],"mappings":"AAOA,0EAA0E;AAC1E,QAAA,MAAM,oCAAoC;;;;;CAKzC,CAAC;AAEF,OAAO,EAAE,oCAAoC,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { hasAssertion, hasCapturableActResult, isMeaningfulActStatement, isSetupLikeStatement, } from "./analyzer.js";
|
|
2
|
+
/** Companion exports for analyzer classification member-pattern tests. */
|
|
3
|
+
const analyzerClassificationMemberPatterns = {
|
|
4
|
+
hasAssertion,
|
|
5
|
+
hasCapturableActResult,
|
|
6
|
+
isMeaningfulActStatement,
|
|
7
|
+
isSetupLikeStatement,
|
|
8
|
+
};
|
|
9
|
+
export { analyzerClassificationMemberPatterns };
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24ubWVtYmVyLXBhdHRlcm5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5jbGFzc2lmaWNhdGlvbi5tZW1iZXItcGF0dGVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixHQUNyQixNQUFNLFlBQVksQ0FBQztBQUVwQiwwRUFBMEU7QUFDMUUsTUFBTSxvQ0FBb0MsR0FBRztJQUMzQyxZQUFZO0lBQ1osc0JBQXNCO0lBQ3RCLHdCQUF3QjtJQUN4QixvQkFBb0I7Q0FDckIsQ0FBQztBQUVGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBoYXNBc3NlcnRpb24sXHJcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcclxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQsXHJcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXHJcbn0gZnJvbSBcIi4vYW5hbHl6ZXJcIjtcclxuXHJcbi8qKiBDb21wYW5pb24gZXhwb3J0cyBmb3IgYW5hbHl6ZXIgY2xhc3NpZmljYXRpb24gbWVtYmVyLXBhdHRlcm4gdGVzdHMuICovXHJcbmNvbnN0IGFuYWx5emVyQ2xhc3NpZmljYXRpb25NZW1iZXJQYXR0ZXJucyA9IHtcclxuICBoYXNBc3NlcnRpb24sXHJcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcclxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQsXHJcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXHJcbn07XHJcblxyXG5leHBvcnQgeyBhbmFseXplckNsYXNzaWZpY2F0aW9uTWVtYmVyUGF0dGVybnMgfTtcclxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.classification.mutations.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.mutations.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,QAAA,MAAM,wCAAwC,EAAG,IAAa,CAAC;AAE/D,OAAO,EAAE,wCAAwC,EAAE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Companion module for classification mutation spec coverage. */
|
|
2
|
+
const analyzerClassificationMutationsCompanion = true;
|
|
3
|
+
export { analyzerClassificationMutationsCompanion };
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24ubXV0YXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5jbGFzc2lmaWNhdGlvbi5tdXRhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE1BQU0sd0NBQXdDLEdBQUcsSUFBYSxDQUFDO0FBRS9ELE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvbXBhbmlvbiBtb2R1bGUgZm9yIGNsYXNzaWZpY2F0aW9uIG11dGF0aW9uIHNwZWMgY292ZXJhZ2UuICovXHJcbmNvbnN0IGFuYWx5emVyQ2xhc3NpZmljYXRpb25NdXRhdGlvbnNDb21wYW5pb24gPSB0cnVlIGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IHsgYW5hbHl6ZXJDbGFzc2lmaWNhdGlvbk11dGF0aW9uc0NvbXBhbmlvbiB9O1xyXG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
/**
|
|
3
|
+
* Visits a statement while skipping nested function bodies that execute later.
|
|
4
|
+
* @param statement Input statement value.
|
|
5
|
+
* @param callback Input callback value.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* visitStatementWithoutDeferredBodies(statement, () => {});
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
declare function visitStatementWithoutDeferredBodies(statement: ESTree.Statement, callback: (node: ESTree.Node) => void): void;
|
|
12
|
+
/** Companion marker for test isolation. */
|
|
13
|
+
declare const analyzerClassificationTraversalCompanion: true;
|
|
14
|
+
export { analyzerClassificationTraversalCompanion, visitStatementWithoutDeferredBodies, };
|
|
15
|
+
//# sourceMappingURL=analyzer.classification.traversal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.classification.traversal.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAqBtC;;;;;;;;GAQG;AACH,iBAAS,mCAAmC,CAC1C,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,GACpC,IAAI,CAKN;AAED,2CAA2C;AAC3C,QAAA,MAAM,wCAAwC,EAAG,IAAa,CAAC;AAE/D,OAAO,EACL,wCAAwC,EACxC,mCAAmC,GACpC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { visitNode } from "./analyzer.super.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks whether a node introduces deferred execution.
|
|
4
|
+
* @param node Input node value.
|
|
5
|
+
* @returns Return value output.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* isDeferredFunctionNode({ type: "ArrowFunctionExpression" } as ESTree.Node);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
function isDeferredFunctionNode(node) {
|
|
12
|
+
return (node.type === "ArrowFunctionExpression" ||
|
|
13
|
+
node.type === "FunctionDeclaration" ||
|
|
14
|
+
node.type === "FunctionExpression");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Visits a statement while skipping nested function bodies that execute later.
|
|
18
|
+
* @param statement Input statement value.
|
|
19
|
+
* @param callback Input callback value.
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* visitStatementWithoutDeferredBodies(statement, () => {});
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function visitStatementWithoutDeferredBodies(statement, callback) {
|
|
26
|
+
visitNode(statement, (node) => {
|
|
27
|
+
callback(node);
|
|
28
|
+
return node === statement || !isDeferredFunctionNode(node);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** Companion marker for test isolation. */
|
|
32
|
+
const analyzerClassificationTraversalCompanion = true;
|
|
33
|
+
export { analyzerClassificationTraversalCompanion, visitStatementWithoutDeferredBodies, };
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24udHJhdmVyc2FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5jbGFzc2lmaWNhdGlvbi50cmF2ZXJzYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxJQUFpQjtJQUMvQyxPQUFPLENBQ0wsSUFBSSxDQUFDLElBQUksS0FBSyx5QkFBeUI7UUFDdkMsSUFBSSxDQUFDLElBQUksS0FBSyxxQkFBcUI7UUFDbkMsSUFBSSxDQUFDLElBQUksS0FBSyxvQkFBb0IsQ0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsbUNBQW1DLENBQzFDLFNBQTJCLEVBQzNCLFFBQXFDO0lBRXJDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZixPQUFPLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSx3Q0FBd0MsR0FBRyxJQUFhLENBQUM7QUFFL0QsT0FBTyxFQUNMLHdDQUF3QyxFQUN4QyxtQ0FBbUMsR0FDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbmltcG9ydCB7IHZpc2l0Tm9kZSB9IGZyb20gXCIuL2FuYWx5emVyLnN1cGVyXCI7XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSBub2RlIGludHJvZHVjZXMgZGVmZXJyZWQgZXhlY3V0aW9uLlxyXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzRGVmZXJyZWRGdW5jdGlvbk5vZGUoeyB0eXBlOiBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgfSBhcyBFU1RyZWUuTm9kZSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNEZWZlcnJlZEZ1bmN0aW9uTm9kZShub2RlOiBFU1RyZWUuTm9kZSk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBub2RlLnR5cGUgPT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiB8fFxyXG4gICAgbm9kZS50eXBlID09PSBcIkZ1bmN0aW9uRGVjbGFyYXRpb25cIiB8fFxyXG4gICAgbm9kZS50eXBlID09PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFZpc2l0cyBhIHN0YXRlbWVudCB3aGlsZSBza2lwcGluZyBuZXN0ZWQgZnVuY3Rpb24gYm9kaWVzIHRoYXQgZXhlY3V0ZSBsYXRlci5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEBwYXJhbSBjYWxsYmFjayBJbnB1dCBjYWxsYmFjayB2YWx1ZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyhzdGF0ZW1lbnQsICgpID0+IHt9KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyhcclxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQsXHJcbiAgY2FsbGJhY2s6IChub2RlOiBFU1RyZWUuTm9kZSkgPT4gdm9pZCxcclxuKTogdm9pZCB7XHJcbiAgdmlzaXROb2RlKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcclxuICAgIGNhbGxiYWNrKG5vZGUpO1xyXG4gICAgcmV0dXJuIG5vZGUgPT09IHN0YXRlbWVudCB8fCAhaXNEZWZlcnJlZEZ1bmN0aW9uTm9kZShub2RlKTtcclxuICB9KTtcclxufVxyXG5cclxuLyoqIENvbXBhbmlvbiBtYXJrZXIgZm9yIHRlc3QgaXNvbGF0aW9uLiAqL1xyXG5jb25zdCBhbmFseXplckNsYXNzaWZpY2F0aW9uVHJhdmVyc2FsQ29tcGFuaW9uID0gdHJ1ZSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCB7XHJcbiAgYW5hbHl6ZXJDbGFzc2lmaWNhdGlvblRyYXZlcnNhbENvbXBhbmlvbixcclxuICB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyxcclxufTtcclxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Canonical ordering used when comparing AAA phases. */
|
|
2
|
+
declare const aaaPhaseOrder: {
|
|
3
|
+
readonly Act: 1;
|
|
4
|
+
readonly Arrange: 0;
|
|
5
|
+
readonly Assert: 2;
|
|
6
|
+
};
|
|
7
|
+
/** Analyzes a supported `it` or `test` callback for AAA sections. */
|
|
8
|
+
declare const analyzeTestBlock: (context: import("eslint").Rule.RuleContext, node: import("estree").CallExpression) => import("./types.js").TestBlockAnalysis | undefined;
|
|
9
|
+
/** Counts statement forms that should be treated as Act steps. */
|
|
10
|
+
declare const countActStatements: (analysis: import("./types.js").TestBlockAnalysis) => number;
|
|
11
|
+
/** Collects identifiers declared inside Assert sections. */
|
|
12
|
+
declare const getAssertDeclaredIdentifiers: (analysis: import("./types.js").TestBlockAnalysis) => Map<string, import("./types.js").LocatedNode<import("estree").Identifier>>;
|
|
13
|
+
/** Extracts `actual` and `expected` identifiers from assertion statements. */
|
|
14
|
+
declare const getAssertionIdentifiers: (statement: import("estree").Statement) => import("./analyzer.assertions.helpers.js").AssertionIdentifiers;
|
|
15
|
+
/** Flattens section comments into one entry per resolved phase. */
|
|
16
|
+
declare const getFlattenedSections: (analysis: Pick<import("./types.js").TestBlockAnalysis, "sectionComments">) => import("./analyzer.analysis.helpers.js").FlattenedSection[];
|
|
17
|
+
/** Returns the indentation prefix that appears before a given offset. */
|
|
18
|
+
declare const getIndentationAtOffset: (sourceText: string, offset: number) => string;
|
|
19
|
+
/** Resolves the starting range for a specific source line. */
|
|
20
|
+
declare const getLineStartRange: (sourceText: string, line: number) => [number, number];
|
|
21
|
+
/** Filters section comments down to phase boundaries that matter after Arrange. */
|
|
22
|
+
declare const getPhaseBoundaryComments: (analysis: Pick<import("./types.js").TestBlockAnalysis, "sectionComments">) => import("./types.js").SectionComment[];
|
|
23
|
+
/** Parses AAA phases from a section comment value. */
|
|
24
|
+
declare const getSectionPhases: (commentValue: string) => import("./types.js").AaaPhase[];
|
|
25
|
+
/** Detects whether a statement contains any assertion call. */
|
|
26
|
+
declare const hasAssertion: (statement: import("estree").Statement) => boolean;
|
|
27
|
+
/** Detects asynchronous behavior such as awaits, promise chains, and promises. */
|
|
28
|
+
declare const hasAsyncLogic: (statement: import("estree").Statement) => boolean;
|
|
29
|
+
/** Detects whether a statement contains an `await` expression. */
|
|
30
|
+
declare const hasAwait: (statement: import("estree").Statement) => boolean;
|
|
31
|
+
/** Checks whether a section comment is separated by a blank line. */
|
|
32
|
+
declare const hasBlankLineBeforeComment: (sourceText: string, comment: import("estree").Comment) => boolean;
|
|
33
|
+
/** Detects Act expressions whose result should usually be captured. */
|
|
34
|
+
declare const hasCapturableActResult: (statement: import("estree").Statement) => boolean;
|
|
35
|
+
/** Detects mutation-oriented statements and array mutator calls. */
|
|
36
|
+
declare const hasMutation: (statement: import("estree").Statement) => boolean;
|
|
37
|
+
/** Detects statements that represent meaningful Act steps. */
|
|
38
|
+
declare const isMeaningfulActStatement: (statement: import("estree").Statement) => boolean;
|
|
39
|
+
/** Detects statements that should stay in Arrange as setup helpers. */
|
|
40
|
+
declare const isSetupLikeStatement: (statement: import("estree").Statement) => boolean;
|
|
41
|
+
/** Detects whether a statement shape is valid inside Assert. */
|
|
42
|
+
declare const isValidAssertStatement: (statement: import("estree").Statement) => boolean;
|
|
43
|
+
/** Checks whether an identifier matches the expected AAA naming prefix. */
|
|
44
|
+
declare const usesPrefix: (name: string, prefix: "actual" | "expected") => boolean;
|
|
45
|
+
export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, };
|
|
46
|
+
//# sourceMappingURL=analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.ts"],"names":[],"mappings":"AA2BA,yDAAyD;AACzD,QAAA,MAAM,aAAa;;;;CAA8B,CAAC;AAmBlD,qEAAqE;AACrE,QAAA,MAAM,gBAAgB,wIAA0C,CAAC;AAEjE,kEAAkE;AAClE,QAAA,MAAM,kBAAkB,2DAA4C,CAAC;AAErE,4DAA4D;AAC5D,QAAA,MAAM,4BAA4B,4HAEjC,CAAC;AAEF,8EAA8E;AAC9E,QAAA,MAAM,uBAAuB,yGAAiD,CAAC;AAE/E,mEAAmE;AACnE,QAAA,MAAM,oBAAoB,sIAA8C,CAAC;AAEzE,yEAAyE;AACzE,QAAA,MAAM,sBAAsB,gDAAgD,CAAC;AAE7E,8DAA8D;AAC9D,QAAA,MAAM,iBAAiB,wDAA2C,CAAC;AAEnE,mFAAmF;AACnF,QAAA,MAAM,wBAAwB,gHAE7B,CAAC;AAEF,sDAAsD;AACtD,QAAA,MAAM,gBAAgB,wDAA0C,CAAC;AAEjE,+DAA+D;AAC/D,QAAA,MAAM,YAAY,oDAAsC,CAAC;AAEzD,kFAAkF;AAClF,QAAA,MAAM,aAAa,oDAAuC,CAAC;AAE3D,kEAAkE;AAClE,QAAA,MAAM,QAAQ,oDAAkC,CAAC;AAEjD,qEAAqE;AACrE,QAAA,MAAM,yBAAyB,oEAE9B,CAAC;AAEF,uEAAuE;AACvE,QAAA,MAAM,sBAAsB,oDAAgD,CAAC;AAE7E,oEAAoE;AACpE,QAAA,MAAM,WAAW,oDAAqC,CAAC;AAEvD,8DAA8D;AAC9D,QAAA,MAAM,wBAAwB,oDAE7B,CAAC;AAEF,uEAAuE;AACvE,QAAA,MAAM,oBAAoB,oDAA8C,CAAC;AAEzE,gEAAgE;AAChE,QAAA,MAAM,sBAAsB,oDAAgD,CAAC;AAE7E,2EAA2E;AAC3E,QAAA,MAAM,UAAU,0DAAoC,CAAC;AAErD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,GACX,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { aaaPhaseOrder as aaaPhaseOrderImplementation, analyzeTestBlock as analyzeTestBlockImplementation, countActStatements as countActStatementsImplementation, getFlattenedSections as getFlattenedSectionsImplementation, getIndentationAtOffset as getIndentationAtOffsetImplementation, getLineStartRange as getLineStartRangeImplementation, getPhaseBoundaryComments as getPhaseBoundaryCommentsImplementation, getSectionPhases as getSectionPhasesImplementation, } from "./analyzer.analysis.js";
|
|
2
|
+
import { getAssertDeclaredIdentifiers as getAssertDeclaredIdentifiersImplementation, getAssertionIdentifiers as getAssertionIdentifiersImplementation, hasAssertion as hasAssertionImplementation, isValidAssertStatement as isValidAssertStatementImplementation, usesPrefix as usesPrefixImplementation, } from "./analyzer.assertions.js";
|
|
3
|
+
import { hasAsyncLogic as hasAsyncLogicImplementation, hasAwait as hasAwaitImplementation, hasBlankLineBeforeComment as hasBlankLineBeforeCommentImplementation, hasCapturableActResult as hasCapturableActResultImplementation, hasMutation as hasMutationImplementation, isMeaningfulActStatement as isMeaningfulActStatementImplementation, isSetupLikeStatement as isSetupLikeStatementImplementation, } from "./analyzer.classification.js";
|
|
4
|
+
/** Canonical ordering used when comparing AAA phases. */
|
|
5
|
+
const aaaPhaseOrder = aaaPhaseOrderImplementation;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a local forwarding function for an imported analyzer helper.
|
|
8
|
+
* @template TParameters Forwarded parameter tuple.
|
|
9
|
+
* @template TResult Forwarded return type.
|
|
10
|
+
* @param implementation Imported helper implementation.
|
|
11
|
+
* @returns Local function that forwards all arguments to the implementation.
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const localHelper = forward(implementation);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function forward(implementation) {
|
|
18
|
+
return (...parameters) => implementation(...parameters);
|
|
19
|
+
}
|
|
20
|
+
/** Analyzes a supported `it` or `test` callback for AAA sections. */
|
|
21
|
+
const analyzeTestBlock = forward(analyzeTestBlockImplementation);
|
|
22
|
+
/** Counts statement forms that should be treated as Act steps. */
|
|
23
|
+
const countActStatements = forward(countActStatementsImplementation);
|
|
24
|
+
/** Collects identifiers declared inside Assert sections. */
|
|
25
|
+
const getAssertDeclaredIdentifiers = forward(getAssertDeclaredIdentifiersImplementation);
|
|
26
|
+
/** Extracts `actual` and `expected` identifiers from assertion statements. */
|
|
27
|
+
const getAssertionIdentifiers = forward(getAssertionIdentifiersImplementation);
|
|
28
|
+
/** Flattens section comments into one entry per resolved phase. */
|
|
29
|
+
const getFlattenedSections = forward(getFlattenedSectionsImplementation);
|
|
30
|
+
/** Returns the indentation prefix that appears before a given offset. */
|
|
31
|
+
const getIndentationAtOffset = forward(getIndentationAtOffsetImplementation);
|
|
32
|
+
/** Resolves the starting range for a specific source line. */
|
|
33
|
+
const getLineStartRange = forward(getLineStartRangeImplementation);
|
|
34
|
+
/** Filters section comments down to phase boundaries that matter after Arrange. */
|
|
35
|
+
const getPhaseBoundaryComments = forward(getPhaseBoundaryCommentsImplementation);
|
|
36
|
+
/** Parses AAA phases from a section comment value. */
|
|
37
|
+
const getSectionPhases = forward(getSectionPhasesImplementation);
|
|
38
|
+
/** Detects whether a statement contains any assertion call. */
|
|
39
|
+
const hasAssertion = forward(hasAssertionImplementation);
|
|
40
|
+
/** Detects asynchronous behavior such as awaits, promise chains, and promises. */
|
|
41
|
+
const hasAsyncLogic = forward(hasAsyncLogicImplementation);
|
|
42
|
+
/** Detects whether a statement contains an `await` expression. */
|
|
43
|
+
const hasAwait = forward(hasAwaitImplementation);
|
|
44
|
+
/** Checks whether a section comment is separated by a blank line. */
|
|
45
|
+
const hasBlankLineBeforeComment = forward(hasBlankLineBeforeCommentImplementation);
|
|
46
|
+
/** Detects Act expressions whose result should usually be captured. */
|
|
47
|
+
const hasCapturableActResult = forward(hasCapturableActResultImplementation);
|
|
48
|
+
/** Detects mutation-oriented statements and array mutator calls. */
|
|
49
|
+
const hasMutation = forward(hasMutationImplementation);
|
|
50
|
+
/** Detects statements that represent meaningful Act steps. */
|
|
51
|
+
const isMeaningfulActStatement = forward(isMeaningfulActStatementImplementation);
|
|
52
|
+
/** Detects statements that should stay in Arrange as setup helpers. */
|
|
53
|
+
const isSetupLikeStatement = forward(isSetupLikeStatementImplementation);
|
|
54
|
+
/** Detects whether a statement shape is valid inside Assert. */
|
|
55
|
+
const isValidAssertStatement = forward(isValidAssertStatementImplementation);
|
|
56
|
+
/** Checks whether an identifier matches the expected AAA naming prefix. */
|
|
57
|
+
const usesPrefix = forward(usesPrefixImplementation);
|
|
58
|
+
export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, };
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLElBQUksMkJBQTJCLEVBQzVDLGdCQUFnQixJQUFJLDhCQUE4QixFQUNsRCxrQkFBa0IsSUFBSSxnQ0FBZ0MsRUFDdEQsb0JBQW9CLElBQUksa0NBQWtDLEVBQzFELHNCQUFzQixJQUFJLG9DQUFvQyxFQUM5RCxpQkFBaUIsSUFBSSwrQkFBK0IsRUFDcEQsd0JBQXdCLElBQUksc0NBQXNDLEVBQ2xFLGdCQUFnQixJQUFJLDhCQUE4QixHQUNuRCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCw0QkFBNEIsSUFBSSwwQ0FBMEMsRUFDMUUsdUJBQXVCLElBQUkscUNBQXFDLEVBQ2hFLFlBQVksSUFBSSwwQkFBMEIsRUFDMUMsc0JBQXNCLElBQUksb0NBQW9DLEVBQzlELFVBQVUsSUFBSSx3QkFBd0IsR0FDdkMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsYUFBYSxJQUFJLDJCQUEyQixFQUM1QyxRQUFRLElBQUksc0JBQXNCLEVBQ2xDLHlCQUF5QixJQUFJLHVDQUF1QyxFQUNwRSxzQkFBc0IsSUFBSSxvQ0FBb0MsRUFDOUQsV0FBVyxJQUFJLHlCQUF5QixFQUN4Qyx3QkFBd0IsSUFBSSxzQ0FBc0MsRUFDbEUsb0JBQW9CLElBQUksa0NBQWtDLEdBQzNELE1BQU0sMkJBQTJCLENBQUM7QUFFbkMseURBQXlEO0FBQ3pELE1BQU0sYUFBYSxHQUFHLDJCQUEyQixDQUFDO0FBRWxEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLE9BQU8sQ0FDZCxjQUF1RDtJQUV2RCxPQUFPLENBQUMsR0FBRyxVQUFVLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUVqRSxrRUFBa0U7QUFDbEUsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUVyRSw0REFBNEQ7QUFDNUQsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLENBQzFDLDBDQUEwQyxDQUMzQyxDQUFDO0FBRUYsOEVBQThFO0FBQzlFLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFFL0UsbUVBQW1FO0FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFFekUseUVBQXlFO0FBQ3pFLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFFN0UsOERBQThEO0FBQzlELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFFbkUsbUZBQW1GO0FBQ25GLE1BQU0sd0JBQXdCLEdBQUcsT0FBTyxDQUN0QyxzQ0FBc0MsQ0FDdkMsQ0FBQztBQUVGLHNEQUFzRDtBQUN0RCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRWpFLCtEQUErRDtBQUMvRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUV6RCxrRkFBa0Y7QUFDbEYsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFM0Qsa0VBQWtFO0FBQ2xFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRWpELHFFQUFxRTtBQUNyRSxNQUFNLHlCQUF5QixHQUFHLE9BQU8sQ0FDdkMsdUNBQXVDLENBQ3hDLENBQUM7QUFFRix1RUFBdUU7QUFDdkUsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUU3RSxvRUFBb0U7QUFDcEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFdkQsOERBQThEO0FBQzlELE1BQU0sd0JBQXdCLEdBQUcsT0FBTyxDQUN0QyxzQ0FBc0MsQ0FDdkMsQ0FBQztBQUVGLHVFQUF1RTtBQUN2RSxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBRXpFLGdFQUFnRTtBQUNoRSxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0FBRTdFLDJFQUEyRTtBQUMzRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsNEJBQTRCLEVBQzVCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixhQUFhLEVBQ2IsUUFBUSxFQUNSLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLFVBQVUsR0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWFhUGhhc2VPcmRlciBhcyBhYWFQaGFzZU9yZGVySW1wbGVtZW50YXRpb24sXG4gIGFuYWx5emVUZXN0QmxvY2sgYXMgYW5hbHl6ZVRlc3RCbG9ja0ltcGxlbWVudGF0aW9uLFxuICBjb3VudEFjdFN0YXRlbWVudHMgYXMgY291bnRBY3RTdGF0ZW1lbnRzSW1wbGVtZW50YXRpb24sXG4gIGdldEZsYXR0ZW5lZFNlY3Rpb25zIGFzIGdldEZsYXR0ZW5lZFNlY3Rpb25zSW1wbGVtZW50YXRpb24sXG4gIGdldEluZGVudGF0aW9uQXRPZmZzZXQgYXMgZ2V0SW5kZW50YXRpb25BdE9mZnNldEltcGxlbWVudGF0aW9uLFxuICBnZXRMaW5lU3RhcnRSYW5nZSBhcyBnZXRMaW5lU3RhcnRSYW5nZUltcGxlbWVudGF0aW9uLFxuICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHMgYXMgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzSW1wbGVtZW50YXRpb24sXG4gIGdldFNlY3Rpb25QaGFzZXMgYXMgZ2V0U2VjdGlvblBoYXNlc0ltcGxlbWVudGF0aW9uLFxufSBmcm9tIFwiLi9hbmFseXplci5hbmFseXNpc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QXNzZXJ0RGVjbGFyZWRJZGVudGlmaWVycyBhcyBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzSW1wbGVtZW50YXRpb24sXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzIGFzIGdldEFzc2VydGlvbklkZW50aWZpZXJzSW1wbGVtZW50YXRpb24sXG4gIGhhc0Fzc2VydGlvbiBhcyBoYXNBc3NlcnRpb25JbXBsZW1lbnRhdGlvbixcbiAgaXNWYWxpZEFzc2VydFN0YXRlbWVudCBhcyBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50SW1wbGVtZW50YXRpb24sXG4gIHVzZXNQcmVmaXggYXMgdXNlc1ByZWZpeEltcGxlbWVudGF0aW9uLFxufSBmcm9tIFwiLi9hbmFseXplci5hc3NlcnRpb25zXCI7XG5pbXBvcnQge1xuICBoYXNBc3luY0xvZ2ljIGFzIGhhc0FzeW5jTG9naWNJbXBsZW1lbnRhdGlvbixcbiAgaGFzQXdhaXQgYXMgaGFzQXdhaXRJbXBsZW1lbnRhdGlvbixcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCBhcyBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50SW1wbGVtZW50YXRpb24sXG4gIGhhc0NhcHR1cmFibGVBY3RSZXN1bHQgYXMgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdEltcGxlbWVudGF0aW9uLFxuICBoYXNNdXRhdGlvbiBhcyBoYXNNdXRhdGlvbkltcGxlbWVudGF0aW9uLFxuICBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQgYXMgaXNNZWFuaW5nZnVsQWN0U3RhdGVtZW50SW1wbGVtZW50YXRpb24sXG4gIGlzU2V0dXBMaWtlU3RhdGVtZW50IGFzIGlzU2V0dXBMaWtlU3RhdGVtZW50SW1wbGVtZW50YXRpb24sXG59IGZyb20gXCIuL2FuYWx5emVyLmNsYXNzaWZpY2F0aW9uXCI7XG5cbi8qKiBDYW5vbmljYWwgb3JkZXJpbmcgdXNlZCB3aGVuIGNvbXBhcmluZyBBQUEgcGhhc2VzLiAqL1xuY29uc3QgYWFhUGhhc2VPcmRlciA9IGFhYVBoYXNlT3JkZXJJbXBsZW1lbnRhdGlvbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbG9jYWwgZm9yd2FyZGluZyBmdW5jdGlvbiBmb3IgYW4gaW1wb3J0ZWQgYW5hbHl6ZXIgaGVscGVyLlxuICogQHRlbXBsYXRlIFRQYXJhbWV0ZXJzIEZvcndhcmRlZCBwYXJhbWV0ZXIgdHVwbGUuXG4gKiBAdGVtcGxhdGUgVFJlc3VsdCBGb3J3YXJkZWQgcmV0dXJuIHR5cGUuXG4gKiBAcGFyYW0gaW1wbGVtZW50YXRpb24gSW1wb3J0ZWQgaGVscGVyIGltcGxlbWVudGF0aW9uLlxuICogQHJldHVybnMgTG9jYWwgZnVuY3Rpb24gdGhhdCBmb3J3YXJkcyBhbGwgYXJndW1lbnRzIHRvIHRoZSBpbXBsZW1lbnRhdGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsb2NhbEhlbHBlciA9IGZvcndhcmQoaW1wbGVtZW50YXRpb24pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGZvcndhcmQ8VFBhcmFtZXRlcnMgZXh0ZW5kcyB1bmtub3duW10sIFRSZXN1bHQ+KFxuICBpbXBsZW1lbnRhdGlvbjogKC4uLnBhcmFtZXRlcnM6IFRQYXJhbWV0ZXJzKSA9PiBUUmVzdWx0LFxuKTogKC4uLnBhcmFtZXRlcnM6IFRQYXJhbWV0ZXJzKSA9PiBUUmVzdWx0IHtcbiAgcmV0dXJuICguLi5wYXJhbWV0ZXJzKSA9PiBpbXBsZW1lbnRhdGlvbiguLi5wYXJhbWV0ZXJzKTtcbn1cblxuLyoqIEFuYWx5emVzIGEgc3VwcG9ydGVkIGBpdGAgb3IgYHRlc3RgIGNhbGxiYWNrIGZvciBBQUEgc2VjdGlvbnMuICovXG5jb25zdCBhbmFseXplVGVzdEJsb2NrID0gZm9yd2FyZChhbmFseXplVGVzdEJsb2NrSW1wbGVtZW50YXRpb24pO1xuXG4vKiogQ291bnRzIHN0YXRlbWVudCBmb3JtcyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIGFzIEFjdCBzdGVwcy4gKi9cbmNvbnN0IGNvdW50QWN0U3RhdGVtZW50cyA9IGZvcndhcmQoY291bnRBY3RTdGF0ZW1lbnRzSW1wbGVtZW50YXRpb24pO1xuXG4vKiogQ29sbGVjdHMgaWRlbnRpZmllcnMgZGVjbGFyZWQgaW5zaWRlIEFzc2VydCBzZWN0aW9ucy4gKi9cbmNvbnN0IGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMgPSBmb3J3YXJkKFxuICBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzSW1wbGVtZW50YXRpb24sXG4pO1xuXG4vKiogRXh0cmFjdHMgYGFjdHVhbGAgYW5kIGBleHBlY3RlZGAgaWRlbnRpZmllcnMgZnJvbSBhc3NlcnRpb24gc3RhdGVtZW50cy4gKi9cbmNvbnN0IGdldEFzc2VydGlvbklkZW50aWZpZXJzID0gZm9yd2FyZChnZXRBc3NlcnRpb25JZGVudGlmaWVyc0ltcGxlbWVudGF0aW9uKTtcblxuLyoqIEZsYXR0ZW5zIHNlY3Rpb24gY29tbWVudHMgaW50byBvbmUgZW50cnkgcGVyIHJlc29sdmVkIHBoYXNlLiAqL1xuY29uc3QgZ2V0RmxhdHRlbmVkU2VjdGlvbnMgPSBmb3J3YXJkKGdldEZsYXR0ZW5lZFNlY3Rpb25zSW1wbGVtZW50YXRpb24pO1xuXG4vKiogUmV0dXJucyB0aGUgaW5kZW50YXRpb24gcHJlZml4IHRoYXQgYXBwZWFycyBiZWZvcmUgYSBnaXZlbiBvZmZzZXQuICovXG5jb25zdCBnZXRJbmRlbnRhdGlvbkF0T2Zmc2V0ID0gZm9yd2FyZChnZXRJbmRlbnRhdGlvbkF0T2Zmc2V0SW1wbGVtZW50YXRpb24pO1xuXG4vKiogUmVzb2x2ZXMgdGhlIHN0YXJ0aW5nIHJhbmdlIGZvciBhIHNwZWNpZmljIHNvdXJjZSBsaW5lLiAqL1xuY29uc3QgZ2V0TGluZVN0YXJ0UmFuZ2UgPSBmb3J3YXJkKGdldExpbmVTdGFydFJhbmdlSW1wbGVtZW50YXRpb24pO1xuXG4vKiogRmlsdGVycyBzZWN0aW9uIGNvbW1lbnRzIGRvd24gdG8gcGhhc2UgYm91bmRhcmllcyB0aGF0IG1hdHRlciBhZnRlciBBcnJhbmdlLiAqL1xuY29uc3QgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzID0gZm9yd2FyZChcbiAgZ2V0UGhhc2VCb3VuZGFyeUNvbW1lbnRzSW1wbGVtZW50YXRpb24sXG4pO1xuXG4vKiogUGFyc2VzIEFBQSBwaGFzZXMgZnJvbSBhIHNlY3Rpb24gY29tbWVudCB2YWx1ZS4gKi9cbmNvbnN0IGdldFNlY3Rpb25QaGFzZXMgPSBmb3J3YXJkKGdldFNlY3Rpb25QaGFzZXNJbXBsZW1lbnRhdGlvbik7XG5cbi8qKiBEZXRlY3RzIHdoZXRoZXIgYSBzdGF0ZW1lbnQgY29udGFpbnMgYW55IGFzc2VydGlvbiBjYWxsLiAqL1xuY29uc3QgaGFzQXNzZXJ0aW9uID0gZm9yd2FyZChoYXNBc3NlcnRpb25JbXBsZW1lbnRhdGlvbik7XG5cbi8qKiBEZXRlY3RzIGFzeW5jaHJvbm91cyBiZWhhdmlvciBzdWNoIGFzIGF3YWl0cywgcHJvbWlzZSBjaGFpbnMsIGFuZCBwcm9taXNlcy4gKi9cbmNvbnN0IGhhc0FzeW5jTG9naWMgPSBmb3J3YXJkKGhhc0FzeW5jTG9naWNJbXBsZW1lbnRhdGlvbik7XG5cbi8qKiBEZXRlY3RzIHdoZXRoZXIgYSBzdGF0ZW1lbnQgY29udGFpbnMgYW4gYGF3YWl0YCBleHByZXNzaW9uLiAqL1xuY29uc3QgaGFzQXdhaXQgPSBmb3J3YXJkKGhhc0F3YWl0SW1wbGVtZW50YXRpb24pO1xuXG4vKiogQ2hlY2tzIHdoZXRoZXIgYSBzZWN0aW9uIGNvbW1lbnQgaXMgc2VwYXJhdGVkIGJ5IGEgYmxhbmsgbGluZS4gKi9cbmNvbnN0IGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQgPSBmb3J3YXJkKFxuICBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50SW1wbGVtZW50YXRpb24sXG4pO1xuXG4vKiogRGV0ZWN0cyBBY3QgZXhwcmVzc2lvbnMgd2hvc2UgcmVzdWx0IHNob3VsZCB1c3VhbGx5IGJlIGNhcHR1cmVkLiAqL1xuY29uc3QgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCA9IGZvcndhcmQoaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdEltcGxlbWVudGF0aW9uKTtcblxuLyoqIERldGVjdHMgbXV0YXRpb24tb3JpZW50ZWQgc3RhdGVtZW50cyBhbmQgYXJyYXkgbXV0YXRvciBjYWxscy4gKi9cbmNvbnN0IGhhc011dGF0aW9uID0gZm9yd2FyZChoYXNNdXRhdGlvbkltcGxlbWVudGF0aW9uKTtcblxuLyoqIERldGVjdHMgc3RhdGVtZW50cyB0aGF0IHJlcHJlc2VudCBtZWFuaW5nZnVsIEFjdCBzdGVwcy4gKi9cbmNvbnN0IGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCA9IGZvcndhcmQoXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudEltcGxlbWVudGF0aW9uLFxuKTtcblxuLyoqIERldGVjdHMgc3RhdGVtZW50cyB0aGF0IHNob3VsZCBzdGF5IGluIEFycmFuZ2UgYXMgc2V0dXAgaGVscGVycy4gKi9cbmNvbnN0IGlzU2V0dXBMaWtlU3RhdGVtZW50ID0gZm9yd2FyZChpc1NldHVwTGlrZVN0YXRlbWVudEltcGxlbWVudGF0aW9uKTtcblxuLyoqIERldGVjdHMgd2hldGhlciBhIHN0YXRlbWVudCBzaGFwZSBpcyB2YWxpZCBpbnNpZGUgQXNzZXJ0LiAqL1xuY29uc3QgaXNWYWxpZEFzc2VydFN0YXRlbWVudCA9IGZvcndhcmQoaXNWYWxpZEFzc2VydFN0YXRlbWVudEltcGxlbWVudGF0aW9uKTtcblxuLyoqIENoZWNrcyB3aGV0aGVyIGFuIGlkZW50aWZpZXIgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgQUFBIG5hbWluZyBwcmVmaXguICovXG5jb25zdCB1c2VzUHJlZml4ID0gZm9yd2FyZCh1c2VzUHJlZml4SW1wbGVtZW50YXRpb24pO1xuXG5leHBvcnQge1xuICBhYWFQaGFzZU9yZGVyLFxuICBhbmFseXplVGVzdEJsb2NrLFxuICBjb3VudEFjdFN0YXRlbWVudHMsXG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBnZXRGbGF0dGVuZWRTZWN0aW9ucyxcbiAgZ2V0SW5kZW50YXRpb25BdE9mZnNldCxcbiAgZ2V0TGluZVN0YXJ0UmFuZ2UsXG4gIGdldFBoYXNlQm91bmRhcnlDb21tZW50cyxcbiAgZ2V0U2VjdGlvblBoYXNlcyxcbiAgaGFzQXNzZXJ0aW9uLFxuICBoYXNBc3luY0xvZ2ljLFxuICBoYXNBd2FpdCxcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcbiAgaGFzTXV0YXRpb24sXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCxcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXG4gIGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnQsXG4gIHVzZXNQcmVmaXgsXG59O1xuIl19
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
import type { LocatedComment, SourceComment } from "./types.js";
|
|
3
|
+
/** Visits an ESTree node graph while ignoring cycles. */
|
|
4
|
+
declare const visitNode: (node: ESTree.Node, callback: (node: ESTree.Node) => boolean | undefined, seenNodes?: WeakSet<object> | undefined) => void;
|
|
5
|
+
/** Array mutator methods that imply observable state changes. */
|
|
6
|
+
declare const arrayMutationMethods: Set<string>;
|
|
7
|
+
/** Names that usually signal Arrange-oriented helper calls. */
|
|
8
|
+
declare const setupLikeNames: RegExp;
|
|
9
|
+
/** Call names that should be treated as utility operations instead of Act steps. */
|
|
10
|
+
declare const utilityMethodNames: Set<string>;
|
|
11
|
+
/** Method names that usually behave like void side-effect helpers. */
|
|
12
|
+
declare const voidLikeMethodNames: Set<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Gets an expression name when it can be resolved statically.
|
|
15
|
+
* @param expression Input expression value.
|
|
16
|
+
* @returns Return value output.
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* getExpressionName(expression);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare function getExpressionName(expression: ESTree.Expression | ESTree.PrivateIdentifier | ESTree.Super): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Gets a callee name for a call or construction expression.
|
|
25
|
+
* @param expression Input expression value.
|
|
26
|
+
* @returns Return value output.
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* getInvokedName(expression);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
declare function getInvokedName(expression: ESTree.CallExpression | ESTree.NewExpression): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Checks whether an expression is callable.
|
|
35
|
+
* @param expression Input expression value.
|
|
36
|
+
* @returns Return value output.
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* isCallableExpression(expression);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
declare function isCallableExpression(expression: ESTree.Expression | undefined): expression is ESTree.CallExpression | ESTree.NewExpression;
|
|
43
|
+
/**
|
|
44
|
+
* Checks whether a comment has location metadata.
|
|
45
|
+
* @param comment Input comment value.
|
|
46
|
+
* @returns Return value output.
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* isLocatedComment(comment);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
declare function isLocatedComment(comment: SourceComment): comment is LocatedComment;
|
|
53
|
+
/**
|
|
54
|
+
* Checks whether a range is fully contained within another range.
|
|
55
|
+
* @param range Input range value.
|
|
56
|
+
* @param container Input container value.
|
|
57
|
+
* @returns Return value output.
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* isRangeWithin(range, container);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
declare function isRangeWithin(range: [number, number], container: [number, number]): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Checks whether a constructor call should be treated as setup.
|
|
66
|
+
* @param expression Input expression value.
|
|
67
|
+
* @param calleeName Input calleeName value.
|
|
68
|
+
* @returns Return value output.
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* isUtilityConstructor(expression, "Map");
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
declare function isUtilityConstructor(expression: ESTree.CallExpression | ESTree.NewExpression, calleeName: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Checks whether a callee name looks utility-like.
|
|
77
|
+
* @param calleeName Input calleeName value.
|
|
78
|
+
* @returns Return value output.
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* isUtilityNamedCall("setupFixture");
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
declare function isUtilityNamedCall(calleeName: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Checks whether a call uses a utility namespace.
|
|
87
|
+
* @param expression Input expression value.
|
|
88
|
+
* @returns Return value output.
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* isUtilityNamespaceCall(expression);
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
declare function isUtilityNamespaceCall(expression: ESTree.CallExpression | ESTree.NewExpression): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Checks whether a call name is built from void-like verb tokens.
|
|
97
|
+
* @param calleeName Input calleeName value.
|
|
98
|
+
* @returns Return value output.
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* isVoidLikeMethodName("scheduleAndFlush");
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
declare function isVoidLikeMethodName(calleeName: string): boolean;
|
|
105
|
+
export { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isRangeWithin, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall, isVoidLikeMethodName, setupLikeNames, utilityMethodNames, visitNode, voidLikeMethodNames, };
|
|
106
|
+
//# sourceMappingURL=analyzer.super.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.super.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.super.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAqB7D,yDAAyD;AACzD,QAAA,MAAM,SAAS,4HAAmC,CAAC;AAEnD,iEAAiE;AACjE,QAAA,MAAM,oBAAoB,aAUxB,CAAC;AAEH,+DAA+D;AAC/D,QAAA,MAAM,cAAc,QACsE,CAAC;AAE3F,oFAAoF;AACpF,QAAA,MAAM,kBAAkB,aAiBtB,CAAC;AAEH,sEAAsE;AACtE,QAAA,MAAM,mBAAmB,aAcvB,CAAC;AAEH;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CACxB,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK,GACtE,MAAM,GAAG,SAAS,CAiBpB;AAED;;;;;;;;GAQG;AACH,iBAAS,cAAc,CACrB,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,GACvD,MAAM,GAAG,SAAS,CAEpB;AAkBD;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAC3B,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GACxC,UAAU,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAK5D;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,IAAI,cAAc,CAI3E;AAED;;;;;;;;;GASG;AACH,iBAAS,aAAa,CACpB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACvB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAET;AAED;;;;;;;;;GASG;AACH,iBAAS,oBAAoB,CAC3B,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,EACxD,UAAU,EAAE,MAAM,GACjB,OAAO,CAST;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;GAQG;AACH,iBAAS,sBAAsB,CAC7B,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,GACvD,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,mBAAmB,GACpB,CAAC"}
|