@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,95 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
import type { LocatedNode, TestBlockAnalysis } from "./types.js";
|
|
3
|
+
/** Identifier names extracted from an assertion statement. */
|
|
4
|
+
interface AssertionIdentifiers {
|
|
5
|
+
/** Identifier used as the actual value. */
|
|
6
|
+
actual: string | undefined;
|
|
7
|
+
/** Identifier used as the expected value. */
|
|
8
|
+
expected: string | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Collects Assert declarations.
|
|
12
|
+
* @param analysis Input analysis value.
|
|
13
|
+
* @returns Return value output.
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* getAssertDeclaredIdentifiers(analysis);
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function getAssertDeclaredIdentifiers(analysis: TestBlockAnalysis): Map<string, LocatedNode<ESTree.Identifier>>;
|
|
20
|
+
/**
|
|
21
|
+
* Extracts assertion identifiers.
|
|
22
|
+
* @param statement Input statement value.
|
|
23
|
+
* @returns Return value output.
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* getAssertionIdentifiers(statement);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
declare function getAssertionIdentifiers(statement: ESTree.Statement): AssertionIdentifiers;
|
|
30
|
+
/**
|
|
31
|
+
* Gets a statement expression.
|
|
32
|
+
* @param statement Input statement value.
|
|
33
|
+
* @returns Return value output.
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* getStatementExpression(statement);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
declare function getStatementExpression(statement: ESTree.Statement): ESTree.Expression | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Checks for assertions.
|
|
42
|
+
* @param statement Input statement value.
|
|
43
|
+
* @returns Return value output.
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* hasAssertion(statement);
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
declare function hasAssertion(statement: ESTree.Statement): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Checks for action expressions.
|
|
52
|
+
* @param expression Input expression value.
|
|
53
|
+
* @returns Return value output.
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* isActionExpression(expression);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
declare function isActionExpression(expression: ESTree.Expression | undefined): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Checks Assert statement validity.
|
|
62
|
+
* @param statement Input statement value.
|
|
63
|
+
* @returns Return value output.
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* isValidAssertStatement(statement);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
declare function isValidAssertStatement(statement: ESTree.Statement): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Unwraps nested expressions.
|
|
72
|
+
* @param expression Input expression value.
|
|
73
|
+
* @returns Return value output.
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* unwrapExpression(expression);
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
declare function unwrapExpression(expression: ESTree.Expression | undefined): ESTree.Expression | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Checks AAA naming prefixes.
|
|
82
|
+
* @param name Input name value.
|
|
83
|
+
* @param prefix Input prefix value.
|
|
84
|
+
* @returns Return value output.
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* usesPrefix("actualResult", "actual");
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
declare function usesPrefix(name: string, prefix: "actual" | "expected"): boolean;
|
|
91
|
+
/** Companion marker for test isolation. */
|
|
92
|
+
declare const analyzerAssertionsHelpersCompanion: true;
|
|
93
|
+
export { analyzerAssertionsHelpersCompanion, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getStatementExpression, hasAssertion, isActionExpression, isValidAssertStatement, unwrapExpression, usesPrefix, };
|
|
94
|
+
export type { AssertionIdentifiers };
|
|
95
|
+
//# sourceMappingURL=analyzer.assertions.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.assertions.helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.assertions.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAW9D,8DAA8D;AAC9D,UAAU,oBAAoB;IAC5B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,iBAAS,4BAA4B,CACnC,QAAQ,EAAE,iBAAiB,GAC1B,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAkB7C;AAwBD;;;;;;;;GAQG;AACH,iBAAS,uBAAuB,CAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,GAC1B,oBAAoB,CAqBtB;AAED;;;;;;;;GAQG;AACH,iBAAS,sBAAsB,CAC7B,SAAS,EAAE,MAAM,CAAC,SAAS,GAC1B,MAAM,CAAC,UAAU,GAAG,SAAS,CAY/B;AAED;;;;;;;;GAQG;AACH,iBAAS,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAQ1D;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CACzB,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GACxC,OAAO,CAOT;AAED;;;;;;;;GAQG;AACH,iBAAS,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAmBpE;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CACvB,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GACxC,MAAM,CAAC,UAAU,GAAG,SAAS,CAQ/B;AAED;;;;;;;;;GASG;AACH,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAExE;AAED,2CAA2C;AAC3C,QAAA,MAAM,kCAAkC,EAAG,IAAa,CAAC;AAEzD,OAAO,EACL,kCAAkC,EAClC,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,GACX,CAAC;AACF,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { getAssertOperands, getExpectOperands, getIdentifierName, hasEvaluatedAssertionActual, isAssertionCall, } from "./analyzer.assertions.operands.js";
|
|
2
|
+
import { visitNode } from "./analyzer.super.js";
|
|
3
|
+
/**
|
|
4
|
+
* Collects Assert declarations.
|
|
5
|
+
* @param analysis Input analysis value.
|
|
6
|
+
* @returns Return value output.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* getAssertDeclaredIdentifiers(analysis);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
function getAssertDeclaredIdentifiers(analysis) {
|
|
13
|
+
const declaredIdentifiers = new Map();
|
|
14
|
+
for (const statement of analysis.statements) {
|
|
15
|
+
if (statement.phases.includes("Assert") &&
|
|
16
|
+
statement.node.type === "VariableDeclaration") {
|
|
17
|
+
for (const declaration of statement.node.declarations) {
|
|
18
|
+
if (declaration.id.type === "Identifier") {
|
|
19
|
+
declaredIdentifiers.set(declaration.id.name, declaration.id);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return declaredIdentifiers;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Gets the outer assertion call expression for one statement when present.
|
|
28
|
+
* @param statement Statement to inspect.
|
|
29
|
+
* @returns Assertion call expression when the statement is expression-based.
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const expression = getAssertionExpression(statement);
|
|
33
|
+
* void expression;
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
function getAssertionExpression(statement) {
|
|
37
|
+
if (statement.type !== "ExpressionStatement") {
|
|
38
|
+
return void 0;
|
|
39
|
+
}
|
|
40
|
+
const expression = unwrapExpression(statement.expression);
|
|
41
|
+
return expression?.type === "CallExpression" ? expression : void 0;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Extracts assertion identifiers.
|
|
45
|
+
* @param statement Input statement value.
|
|
46
|
+
* @returns Return value output.
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* getAssertionIdentifiers(statement);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
function getAssertionIdentifiers(statement) {
|
|
53
|
+
if (statement.type !== "ExpressionStatement") {
|
|
54
|
+
return { actual: void 0, expected: void 0 };
|
|
55
|
+
}
|
|
56
|
+
const expression = unwrapExpression(statement.expression);
|
|
57
|
+
if (expression?.type !== "CallExpression") {
|
|
58
|
+
return { actual: void 0, expected: void 0 };
|
|
59
|
+
}
|
|
60
|
+
const expectOperands = getExpectOperands(expression);
|
|
61
|
+
if (expectOperands !== void 0) {
|
|
62
|
+
return {
|
|
63
|
+
actual: getIdentifierName(expectOperands.actual),
|
|
64
|
+
expected: getIdentifierName(expectOperands.expected),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const assertOperands = getAssertOperands(expression);
|
|
68
|
+
return {
|
|
69
|
+
actual: getIdentifierName(assertOperands?.actual),
|
|
70
|
+
expected: getIdentifierName(assertOperands?.expected),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Gets a statement expression.
|
|
75
|
+
* @param statement Input statement value.
|
|
76
|
+
* @returns Return value output.
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* getStatementExpression(statement);
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
function getStatementExpression(statement) {
|
|
83
|
+
if (statement.type === "ExpressionStatement") {
|
|
84
|
+
return statement.expression;
|
|
85
|
+
}
|
|
86
|
+
if (statement.type === "VariableDeclaration" &&
|
|
87
|
+
statement.declarations.length === 1) {
|
|
88
|
+
const [declaration] = statement.declarations;
|
|
89
|
+
return declaration?.init;
|
|
90
|
+
}
|
|
91
|
+
return void 0;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Checks for assertions.
|
|
95
|
+
* @param statement Input statement value.
|
|
96
|
+
* @returns Return value output.
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* hasAssertion(statement);
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
function hasAssertion(statement) {
|
|
103
|
+
let foundAssertion = false;
|
|
104
|
+
visitNode(statement, (node) => {
|
|
105
|
+
if (node.type === "CallExpression" && isAssertionCall(node)) {
|
|
106
|
+
foundAssertion = true;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return foundAssertion;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Checks for action expressions.
|
|
113
|
+
* @param expression Input expression value.
|
|
114
|
+
* @returns Return value output.
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* isActionExpression(expression);
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
function isActionExpression(expression) {
|
|
121
|
+
const unwrappedExpression = unwrapExpression(expression);
|
|
122
|
+
return (unwrappedExpression?.type === "AwaitExpression" ||
|
|
123
|
+
unwrappedExpression?.type === "CallExpression" ||
|
|
124
|
+
unwrappedExpression?.type === "NewExpression");
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Checks Assert statement validity.
|
|
128
|
+
* @param statement Input statement value.
|
|
129
|
+
* @returns Return value output.
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* isValidAssertStatement(statement);
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
function isValidAssertStatement(statement) {
|
|
136
|
+
if (hasAssertion(statement)) {
|
|
137
|
+
const assertionExpression = getAssertionExpression(statement);
|
|
138
|
+
return (assertionExpression === void 0 ||
|
|
139
|
+
!hasEvaluatedAssertionActual(assertionExpression, isActionExpression));
|
|
140
|
+
}
|
|
141
|
+
if (statement.type !== "VariableDeclaration") {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return statement.declarations.every((declaration) => {
|
|
145
|
+
if (declaration.init === null) {
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
return !isActionExpression(unwrapExpression(declaration.init));
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Unwraps nested expressions.
|
|
153
|
+
* @param expression Input expression value.
|
|
154
|
+
* @returns Return value output.
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* unwrapExpression(expression);
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
function unwrapExpression(expression) {
|
|
161
|
+
if (expression?.type === "ChainExpression") {
|
|
162
|
+
return unwrapExpression(expression.expression);
|
|
163
|
+
}
|
|
164
|
+
if (expression?.type === "AwaitExpression") {
|
|
165
|
+
return expression.argument;
|
|
166
|
+
}
|
|
167
|
+
return expression;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Checks AAA naming prefixes.
|
|
171
|
+
* @param name Input name value.
|
|
172
|
+
* @param prefix Input prefix value.
|
|
173
|
+
* @returns Return value output.
|
|
174
|
+
* @example
|
|
175
|
+
* ```typescript
|
|
176
|
+
* usesPrefix("actualResult", "actual");
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
function usesPrefix(name, prefix) {
|
|
180
|
+
return name === prefix || name.startsWith(prefix);
|
|
181
|
+
}
|
|
182
|
+
/** Companion marker for test isolation. */
|
|
183
|
+
const analyzerAssertionsHelpersCompanion = true;
|
|
184
|
+
export { analyzerAssertionsHelpersCompanion, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getStatementExpression, hasAssertion, isActionExpression, isValidAssertStatement, unwrapExpression, usesPrefix, };
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuYXNzZXJ0aW9ucy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5hc3NlcnRpb25zLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLDJCQUEyQixFQUMzQixlQUFlLEdBQ2hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBVTdDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyw0QkFBNEIsQ0FDbkMsUUFBMkI7SUFFM0IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBMEMsQ0FBQztJQUM5RSxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QyxJQUNFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxxQkFBcUIsRUFDN0MsQ0FBQztZQUNELEtBQUssTUFBTSxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztvQkFDekMsbUJBQW1CLENBQUMsR0FBRyxDQUNyQixXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFDbkIsV0FBVyxDQUFDLEVBQW9DLENBQ2pELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLFNBQTJCO0lBRTNCLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxRCxPQUFPLFVBQVUsRUFBRSxJQUFJLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FDOUIsU0FBMkI7SUFFM0IsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELElBQUksVUFBVSxFQUFFLElBQUksS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTztZQUNMLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQ2hELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1NBQ3JELENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsT0FBTztRQUNMLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO1FBQ2pELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDO0tBQ3RELENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHNCQUFzQixDQUM3QixTQUEyQjtJQUUzQixJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztRQUM3QyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQ0UsU0FBUyxDQUFDLElBQUksS0FBSyxxQkFBcUI7UUFDeEMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUNuQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDN0MsT0FBTyxXQUFXLEVBQUUsSUFBcUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxTQUEyQjtJQUMvQyxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDM0IsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQzVCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1RCxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsa0JBQWtCLENBQ3pCLFVBQXlDO0lBRXpDLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsT0FBTyxDQUNMLG1CQUFtQixFQUFFLElBQUksS0FBSyxpQkFBaUI7UUFDL0MsbUJBQW1CLEVBQUUsSUFBSSxLQUFLLGdCQUFnQjtRQUM5QyxtQkFBbUIsRUFBRSxJQUFJLEtBQUssZUFBZSxDQUM5QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxTQUEyQjtJQUN6RCxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sbUJBQW1CLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUQsT0FBTyxDQUNMLG1CQUFtQixLQUFLLEtBQUssQ0FBQztZQUM5QixDQUFDLDJCQUEyQixDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDN0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1FBQ2xELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGdCQUFnQixDQUN2QixVQUF5QztJQUV6QyxJQUFJLFVBQVUsRUFBRSxJQUFJLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUMzQyxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsSUFBSSxVQUFVLEVBQUUsSUFBSSxLQUFLLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLE1BQTZCO0lBQzdELE9BQU8sSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxrQ0FBa0MsR0FBRyxJQUFhLENBQUM7QUFFekQsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsVUFBVSxHQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XHJcblxyXG5pbXBvcnQgdHlwZSB7IExvY2F0ZWROb2RlLCBUZXN0QmxvY2tBbmFseXNpcyB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gIGdldEFzc2VydE9wZXJhbmRzLFxyXG4gIGdldEV4cGVjdE9wZXJhbmRzLFxyXG4gIGdldElkZW50aWZpZXJOYW1lLFxyXG4gIGhhc0V2YWx1YXRlZEFzc2VydGlvbkFjdHVhbCxcclxuICBpc0Fzc2VydGlvbkNhbGwsXHJcbn0gZnJvbSBcIi4vYW5hbHl6ZXIuYXNzZXJ0aW9ucy5vcGVyYW5kc1wiO1xyXG5pbXBvcnQgeyB2aXNpdE5vZGUgfSBmcm9tIFwiLi9hbmFseXplci5zdXBlclwiO1xyXG5cclxuLyoqIElkZW50aWZpZXIgbmFtZXMgZXh0cmFjdGVkIGZyb20gYW4gYXNzZXJ0aW9uIHN0YXRlbWVudC4gKi9cclxuaW50ZXJmYWNlIEFzc2VydGlvbklkZW50aWZpZXJzIHtcclxuICAvKiogSWRlbnRpZmllciB1c2VkIGFzIHRoZSBhY3R1YWwgdmFsdWUuICovXHJcbiAgYWN0dWFsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLyoqIElkZW50aWZpZXIgdXNlZCBhcyB0aGUgZXhwZWN0ZWQgdmFsdWUuICovXHJcbiAgZXhwZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3RzIEFzc2VydCBkZWNsYXJhdGlvbnMuXHJcbiAqIEBwYXJhbSBhbmFseXNpcyBJbnB1dCBhbmFseXNpcyB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzKGFuYWx5c2lzKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzKFxyXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcclxuKTogTWFwPHN0cmluZywgTG9jYXRlZE5vZGU8RVNUcmVlLklkZW50aWZpZXI+PiB7XHJcbiAgY29uc3QgZGVjbGFyZWRJZGVudGlmaWVycyA9IG5ldyBNYXA8c3RyaW5nLCBMb2NhdGVkTm9kZTxFU1RyZWUuSWRlbnRpZmllcj4+KCk7XHJcbiAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgYW5hbHlzaXMuc3RhdGVtZW50cykge1xyXG4gICAgaWYgKFxyXG4gICAgICBzdGF0ZW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQXNzZXJ0XCIpICYmXHJcbiAgICAgIHN0YXRlbWVudC5ub2RlLnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiXHJcbiAgICApIHtcclxuICAgICAgZm9yIChjb25zdCBkZWNsYXJhdGlvbiBvZiBzdGF0ZW1lbnQubm9kZS5kZWNsYXJhdGlvbnMpIHtcclxuICAgICAgICBpZiAoZGVjbGFyYXRpb24uaWQudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIpIHtcclxuICAgICAgICAgIGRlY2xhcmVkSWRlbnRpZmllcnMuc2V0KFxyXG4gICAgICAgICAgICBkZWNsYXJhdGlvbi5pZC5uYW1lLFxyXG4gICAgICAgICAgICBkZWNsYXJhdGlvbi5pZCBhcyBMb2NhdGVkTm9kZTxFU1RyZWUuSWRlbnRpZmllcj4sXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZGVjbGFyZWRJZGVudGlmaWVycztcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIG91dGVyIGFzc2VydGlvbiBjYWxsIGV4cHJlc3Npb24gZm9yIG9uZSBzdGF0ZW1lbnQgd2hlbiBwcmVzZW50LlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IFN0YXRlbWVudCB0byBpbnNwZWN0LlxyXG4gKiBAcmV0dXJucyBBc3NlcnRpb24gY2FsbCBleHByZXNzaW9uIHdoZW4gdGhlIHN0YXRlbWVudCBpcyBleHByZXNzaW9uLWJhc2VkLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGV4cHJlc3Npb24gPSBnZXRBc3NlcnRpb25FeHByZXNzaW9uKHN0YXRlbWVudCk7XHJcbiAqIHZvaWQgZXhwcmVzc2lvbjtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRBc3NlcnRpb25FeHByZXNzaW9uKFxyXG4gIHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCxcclxuKTogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24oc3RhdGVtZW50LmV4cHJlc3Npb24pO1xyXG5cclxuICByZXR1cm4gZXhwcmVzc2lvbj8udHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiID8gZXhwcmVzc2lvbiA6IHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3RzIGFzc2VydGlvbiBpZGVudGlmaWVycy5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogZ2V0QXNzZXJ0aW9uSWRlbnRpZmllcnMoc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRBc3NlcnRpb25JZGVudGlmaWVycyhcclxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQsXHJcbik6IEFzc2VydGlvbklkZW50aWZpZXJzIHtcclxuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XHJcbiAgICByZXR1cm4geyBhY3R1YWw6IHZvaWQgMCwgZXhwZWN0ZWQ6IHZvaWQgMCB9O1xyXG4gIH1cclxuICBjb25zdCBleHByZXNzaW9uID0gdW53cmFwRXhwcmVzc2lvbihzdGF0ZW1lbnQuZXhwcmVzc2lvbik7XHJcbiAgaWYgKGV4cHJlc3Npb24/LnR5cGUgIT09IFwiQ2FsbEV4cHJlc3Npb25cIikge1xyXG4gICAgcmV0dXJuIHsgYWN0dWFsOiB2b2lkIDAsIGV4cGVjdGVkOiB2b2lkIDAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGV4cGVjdE9wZXJhbmRzID0gZ2V0RXhwZWN0T3BlcmFuZHMoZXhwcmVzc2lvbik7XHJcbiAgaWYgKGV4cGVjdE9wZXJhbmRzICE9PSB2b2lkIDApIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFjdHVhbDogZ2V0SWRlbnRpZmllck5hbWUoZXhwZWN0T3BlcmFuZHMuYWN0dWFsKSxcclxuICAgICAgZXhwZWN0ZWQ6IGdldElkZW50aWZpZXJOYW1lKGV4cGVjdE9wZXJhbmRzLmV4cGVjdGVkKSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbnN0IGFzc2VydE9wZXJhbmRzID0gZ2V0QXNzZXJ0T3BlcmFuZHMoZXhwcmVzc2lvbik7XHJcbiAgcmV0dXJuIHtcclxuICAgIGFjdHVhbDogZ2V0SWRlbnRpZmllck5hbWUoYXNzZXJ0T3BlcmFuZHM/LmFjdHVhbCksXHJcbiAgICBleHBlY3RlZDogZ2V0SWRlbnRpZmllck5hbWUoYXNzZXJ0T3BlcmFuZHM/LmV4cGVjdGVkKSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogR2V0cyBhIHN0YXRlbWVudCBleHByZXNzaW9uLlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uKHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0U3RhdGVtZW50RXhwcmVzc2lvbihcclxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQsXHJcbik6IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XHJcbiAgICByZXR1cm4gc3RhdGVtZW50LmV4cHJlc3Npb247XHJcbiAgfVxyXG4gIGlmIChcclxuICAgIHN0YXRlbWVudC50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIiAmJlxyXG4gICAgc3RhdGVtZW50LmRlY2xhcmF0aW9ucy5sZW5ndGggPT09IDFcclxuICApIHtcclxuICAgIGNvbnN0IFtkZWNsYXJhdGlvbl0gPSBzdGF0ZW1lbnQuZGVjbGFyYXRpb25zO1xyXG4gICAgcmV0dXJuIGRlY2xhcmF0aW9uPy5pbml0IGFzIEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkO1xyXG4gIH1cclxuICByZXR1cm4gdm9pZCAwO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBhc3NlcnRpb25zLlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBoYXNBc3NlcnRpb24oc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNBc3NlcnRpb24oc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XHJcbiAgbGV0IGZvdW5kQXNzZXJ0aW9uID0gZmFsc2U7XHJcbiAgdmlzaXROb2RlKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJiBpc0Fzc2VydGlvbkNhbGwobm9kZSkpIHtcclxuICAgICAgZm91bmRBc3NlcnRpb24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBmb3VuZEFzc2VydGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgYWN0aW9uIGV4cHJlc3Npb25zLlxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBJbnB1dCBleHByZXNzaW9uIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzQWN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0FjdGlvbkV4cHJlc3Npb24oXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHVud3JhcHBlZEV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gIHJldHVybiAoXHJcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIkF3YWl0RXhwcmVzc2lvblwiIHx8XHJcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgfHxcclxuICAgIHVud3JhcHBlZEV4cHJlc3Npb24/LnR5cGUgPT09IFwiTmV3RXhwcmVzc2lvblwiXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBBc3NlcnQgc3RhdGVtZW50IHZhbGlkaXR5LlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50KHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNWYWxpZEFzc2VydFN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBpZiAoaGFzQXNzZXJ0aW9uKHN0YXRlbWVudCkpIHtcclxuICAgIGNvbnN0IGFzc2VydGlvbkV4cHJlc3Npb24gPSBnZXRBc3NlcnRpb25FeHByZXNzaW9uKHN0YXRlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgYXNzZXJ0aW9uRXhwcmVzc2lvbiA9PT0gdm9pZCAwIHx8XHJcbiAgICAgICFoYXNFdmFsdWF0ZWRBc3NlcnRpb25BY3R1YWwoYXNzZXJ0aW9uRXhwcmVzc2lvbiwgaXNBY3Rpb25FeHByZXNzaW9uKVxyXG4gICAgKTtcclxuICB9XHJcbiAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHN0YXRlbWVudC5kZWNsYXJhdGlvbnMuZXZlcnkoKGRlY2xhcmF0aW9uKSA9PiB7XHJcbiAgICBpZiAoZGVjbGFyYXRpb24uaW5pdCA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiAhaXNBY3Rpb25FeHByZXNzaW9uKHVud3JhcEV4cHJlc3Npb24oZGVjbGFyYXRpb24uaW5pdCkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogVW53cmFwcyBuZXN0ZWQgZXhwcmVzc2lvbnMuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogdW53cmFwRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiB1bndyYXBFeHByZXNzaW9uKFxyXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLFxyXG4pOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCB7XHJcbiAgaWYgKGV4cHJlc3Npb24/LnR5cGUgPT09IFwiQ2hhaW5FeHByZXNzaW9uXCIpIHtcclxuICAgIHJldHVybiB1bndyYXBFeHByZXNzaW9uKGV4cHJlc3Npb24uZXhwcmVzc2lvbik7XHJcbiAgfVxyXG4gIGlmIChleHByZXNzaW9uPy50eXBlID09PSBcIkF3YWl0RXhwcmVzc2lvblwiKSB7XHJcbiAgICByZXR1cm4gZXhwcmVzc2lvbi5hcmd1bWVudDtcclxuICB9XHJcbiAgcmV0dXJuIGV4cHJlc3Npb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgQUFBIG5hbWluZyBwcmVmaXhlcy5cclxuICogQHBhcmFtIG5hbWUgSW5wdXQgbmFtZSB2YWx1ZS5cclxuICogQHBhcmFtIHByZWZpeCBJbnB1dCBwcmVmaXggdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogdXNlc1ByZWZpeChcImFjdHVhbFJlc3VsdFwiLCBcImFjdHVhbFwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiB1c2VzUHJlZml4KG5hbWU6IHN0cmluZywgcHJlZml4OiBcImFjdHVhbFwiIHwgXCJleHBlY3RlZFwiKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIG5hbWUgPT09IHByZWZpeCB8fCBuYW1lLnN0YXJ0c1dpdGgocHJlZml4KTtcclxufVxyXG5cclxuLyoqIENvbXBhbmlvbiBtYXJrZXIgZm9yIHRlc3QgaXNvbGF0aW9uLiAqL1xyXG5jb25zdCBhbmFseXplckFzc2VydGlvbnNIZWxwZXJzQ29tcGFuaW9uID0gdHJ1ZSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCB7XHJcbiAgYW5hbHl6ZXJBc3NlcnRpb25zSGVscGVyc0NvbXBhbmlvbixcclxuICBnZXRBc3NlcnREZWNsYXJlZElkZW50aWZpZXJzLFxyXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxyXG4gIGdldFN0YXRlbWVudEV4cHJlc3Npb24sXHJcbiAgaGFzQXNzZXJ0aW9uLFxyXG4gIGlzQWN0aW9uRXhwcmVzc2lvbixcclxuICBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50LFxyXG4gIHVud3JhcEV4cHJlc3Npb24sXHJcbiAgdXNlc1ByZWZpeCxcclxufTtcclxuZXhwb3J0IHR5cGUgeyBBc3NlcnRpb25JZGVudGlmaWVycyB9O1xyXG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getAssertDeclaredIdentifiers as getAssertDeclaredIdentifiersImplementation, getAssertionIdentifiers as getAssertionIdentifiersImplementation, getStatementExpression as getStatementExpressionImplementation, hasAssertion as hasAssertionImplementation, isActionExpression as isActionExpressionImplementation, isValidAssertStatement as isValidAssertStatementImplementation, unwrapExpression as unwrapExpressionImplementation, usesPrefix as usesPrefixImplementation, } from "./analyzer.assertions.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
|
+
/** Collects all declared identifiers from an assert statement. */
|
|
17
|
+
const getAssertDeclaredIdentifiers = forward(getAssertDeclaredIdentifiersImplementation);
|
|
18
|
+
/** Resolves the identifier names used in an assertion call. */
|
|
19
|
+
const getAssertionIdentifiers = forward(getAssertionIdentifiersImplementation);
|
|
20
|
+
/** Extracts the expression from an expression statement node. */
|
|
21
|
+
const getStatementExpression = forward(getStatementExpressionImplementation);
|
|
22
|
+
/** Checks whether a statement contains an assertion call. */
|
|
23
|
+
const hasAssertion = forward(hasAssertionImplementation);
|
|
24
|
+
/** Checks whether an expression is an Act-phase action expression. */
|
|
25
|
+
const isActionExpression = forward(isActionExpressionImplementation);
|
|
26
|
+
/** Checks whether a statement is a valid Assert-phase assertion. */
|
|
27
|
+
const isValidAssertStatement = forward(isValidAssertStatementImplementation);
|
|
28
|
+
/** Unwraps a nested or chained expression to its root call. */
|
|
29
|
+
const unwrapExpression = forward(unwrapExpressionImplementation);
|
|
30
|
+
/** Checks whether an assertion call uses a known assertion prefix. */
|
|
31
|
+
const usesPrefix = forward(usesPrefixImplementation);
|
|
32
|
+
export { getAssertDeclaredIdentifiers, getAssertionIdentifiers, getStatementExpression, hasAssertion, isActionExpression, isValidAssertStatement, unwrapExpression, usesPrefix, };
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9hYWEvYW5hbHl6ZXIuYXNzZXJ0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsNEJBQTRCLElBQUksMENBQTBDLEVBQzFFLHVCQUF1QixJQUFJLHFDQUFxQyxFQUNoRSxzQkFBc0IsSUFBSSxvQ0FBb0MsRUFDOUQsWUFBWSxJQUFJLDBCQUEwQixFQUMxQyxrQkFBa0IsSUFBSSxnQ0FBZ0MsRUFDdEQsc0JBQXNCLElBQUksb0NBQW9DLEVBQzlELGdCQUFnQixJQUFJLDhCQUE4QixFQUNsRCxVQUFVLElBQUksd0JBQXdCLEdBQ3ZDLE1BQU0sK0JBQStCLENBQUM7QUFFdkM7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsT0FBTyxDQUNkLGNBQXVEO0lBRXZELE9BQU8sQ0FBQyxHQUFHLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELGtFQUFrRTtBQUNsRSxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FDMUMsMENBQTBDLENBQzNDLENBQUM7QUFFRiwrREFBK0Q7QUFDL0QsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQztBQUUvRSxpRUFBaUU7QUFDakUsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUU3RSw2REFBNkQ7QUFDN0QsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFekQsc0VBQXNFO0FBQ3RFLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFFckUsb0VBQW9FO0FBQ3BFLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFFN0UsK0RBQStEO0FBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFFakUsc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBRXJELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsVUFBVSxHQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMgYXMgZ2V0QXNzZXJ0RGVjbGFyZWRJZGVudGlmaWVyc0ltcGxlbWVudGF0aW9uLFxyXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzIGFzIGdldEFzc2VydGlvbklkZW50aWZpZXJzSW1wbGVtZW50YXRpb24sXHJcbiAgZ2V0U3RhdGVtZW50RXhwcmVzc2lvbiBhcyBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uSW1wbGVtZW50YXRpb24sXHJcbiAgaGFzQXNzZXJ0aW9uIGFzIGhhc0Fzc2VydGlvbkltcGxlbWVudGF0aW9uLFxyXG4gIGlzQWN0aW9uRXhwcmVzc2lvbiBhcyBpc0FjdGlvbkV4cHJlc3Npb25JbXBsZW1lbnRhdGlvbixcclxuICBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50IGFzIGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnRJbXBsZW1lbnRhdGlvbixcclxuICB1bndyYXBFeHByZXNzaW9uIGFzIHVud3JhcEV4cHJlc3Npb25JbXBsZW1lbnRhdGlvbixcclxuICB1c2VzUHJlZml4IGFzIHVzZXNQcmVmaXhJbXBsZW1lbnRhdGlvbixcclxufSBmcm9tIFwiLi9hbmFseXplci5hc3NlcnRpb25zLmhlbHBlcnNcIjtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbG9jYWwgZm9yd2FyZGluZyBmdW5jdGlvbiBmb3IgYW4gaW1wb3J0ZWQgYW5hbHl6ZXIgaGVscGVyLlxyXG4gKiBAdGVtcGxhdGUgVFBhcmFtZXRlcnMgRm9yd2FyZGVkIHBhcmFtZXRlciB0dXBsZS5cclxuICogQHRlbXBsYXRlIFRSZXN1bHQgRm9yd2FyZGVkIHJldHVybiB0eXBlLlxyXG4gKiBAcGFyYW0gaW1wbGVtZW50YXRpb24gSW1wb3J0ZWQgaGVscGVyIGltcGxlbWVudGF0aW9uLlxyXG4gKiBAcmV0dXJucyBMb2NhbCBmdW5jdGlvbiB0aGF0IGZvcndhcmRzIGFsbCBhcmd1bWVudHMgdG8gdGhlIGltcGxlbWVudGF0aW9uLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGxvY2FsSGVscGVyID0gZm9yd2FyZChpbXBsZW1lbnRhdGlvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZm9yd2FyZDxUUGFyYW1ldGVycyBleHRlbmRzIHVua25vd25bXSwgVFJlc3VsdD4oXHJcbiAgaW1wbGVtZW50YXRpb246ICguLi5wYXJhbWV0ZXJzOiBUUGFyYW1ldGVycykgPT4gVFJlc3VsdCxcclxuKTogKC4uLnBhcmFtZXRlcnM6IFRQYXJhbWV0ZXJzKSA9PiBUUmVzdWx0IHtcclxuICByZXR1cm4gKC4uLnBhcmFtZXRlcnMpID0+IGltcGxlbWVudGF0aW9uKC4uLnBhcmFtZXRlcnMpO1xyXG59XHJcblxyXG4vKiogQ29sbGVjdHMgYWxsIGRlY2xhcmVkIGlkZW50aWZpZXJzIGZyb20gYW4gYXNzZXJ0IHN0YXRlbWVudC4gKi9cclxuY29uc3QgZ2V0QXNzZXJ0RGVjbGFyZWRJZGVudGlmaWVycyA9IGZvcndhcmQoXHJcbiAgZ2V0QXNzZXJ0RGVjbGFyZWRJZGVudGlmaWVyc0ltcGxlbWVudGF0aW9uLFxyXG4pO1xyXG5cclxuLyoqIFJlc29sdmVzIHRoZSBpZGVudGlmaWVyIG5hbWVzIHVzZWQgaW4gYW4gYXNzZXJ0aW9uIGNhbGwuICovXHJcbmNvbnN0IGdldEFzc2VydGlvbklkZW50aWZpZXJzID0gZm9yd2FyZChnZXRBc3NlcnRpb25JZGVudGlmaWVyc0ltcGxlbWVudGF0aW9uKTtcclxuXHJcbi8qKiBFeHRyYWN0cyB0aGUgZXhwcmVzc2lvbiBmcm9tIGFuIGV4cHJlc3Npb24gc3RhdGVtZW50IG5vZGUuICovXHJcbmNvbnN0IGdldFN0YXRlbWVudEV4cHJlc3Npb24gPSBmb3J3YXJkKGdldFN0YXRlbWVudEV4cHJlc3Npb25JbXBsZW1lbnRhdGlvbik7XHJcblxyXG4vKiogQ2hlY2tzIHdoZXRoZXIgYSBzdGF0ZW1lbnQgY29udGFpbnMgYW4gYXNzZXJ0aW9uIGNhbGwuICovXHJcbmNvbnN0IGhhc0Fzc2VydGlvbiA9IGZvcndhcmQoaGFzQXNzZXJ0aW9uSW1wbGVtZW50YXRpb24pO1xyXG5cclxuLyoqIENoZWNrcyB3aGV0aGVyIGFuIGV4cHJlc3Npb24gaXMgYW4gQWN0LXBoYXNlIGFjdGlvbiBleHByZXNzaW9uLiAqL1xyXG5jb25zdCBpc0FjdGlvbkV4cHJlc3Npb24gPSBmb3J3YXJkKGlzQWN0aW9uRXhwcmVzc2lvbkltcGxlbWVudGF0aW9uKTtcclxuXHJcbi8qKiBDaGVja3Mgd2hldGhlciBhIHN0YXRlbWVudCBpcyBhIHZhbGlkIEFzc2VydC1waGFzZSBhc3NlcnRpb24uICovXHJcbmNvbnN0IGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnQgPSBmb3J3YXJkKGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG4vKiogVW53cmFwcyBhIG5lc3RlZCBvciBjaGFpbmVkIGV4cHJlc3Npb24gdG8gaXRzIHJvb3QgY2FsbC4gKi9cclxuY29uc3QgdW53cmFwRXhwcmVzc2lvbiA9IGZvcndhcmQodW53cmFwRXhwcmVzc2lvbkltcGxlbWVudGF0aW9uKTtcclxuXHJcbi8qKiBDaGVja3Mgd2hldGhlciBhbiBhc3NlcnRpb24gY2FsbCB1c2VzIGEga25vd24gYXNzZXJ0aW9uIHByZWZpeC4gKi9cclxuY29uc3QgdXNlc1ByZWZpeCA9IGZvcndhcmQodXNlc1ByZWZpeEltcGxlbWVudGF0aW9uKTtcclxuXHJcbmV4cG9ydCB7XHJcbiAgZ2V0QXNzZXJ0RGVjbGFyZWRJZGVudGlmaWVycyxcclxuICBnZXRBc3NlcnRpb25JZGVudGlmaWVycyxcclxuICBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uLFxyXG4gIGhhc0Fzc2VydGlvbixcclxuICBpc0FjdGlvbkV4cHJlc3Npb24sXHJcbiAgaXNWYWxpZEFzc2VydFN0YXRlbWVudCxcclxuICB1bndyYXBFeHByZXNzaW9uLFxyXG4gIHVzZXNQcmVmaXgsXHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
/** Raw assertion operands extracted from a call expression. */
|
|
3
|
+
interface AssertionOperands {
|
|
4
|
+
/** Expression used as the actual operand. */
|
|
5
|
+
actual: ESTree.Expression | undefined;
|
|
6
|
+
/** Expression used as the expected operand. */
|
|
7
|
+
expected: ESTree.Expression | undefined;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Gets assert operands.
|
|
11
|
+
* @param expression Input expression value.
|
|
12
|
+
* @returns Return value output.
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* getAssertOperands(expression);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function getAssertOperands(expression: ESTree.CallExpression): AssertionOperands | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Gets expect operands.
|
|
21
|
+
* @param expression Input expression value.
|
|
22
|
+
* @returns Return value output.
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* getExpectOperands(expression);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
declare function getExpectOperands(expression: ESTree.CallExpression): AssertionOperands | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Gets an identifier name.
|
|
31
|
+
* @param expression Input expression value.
|
|
32
|
+
* @returns Return value output.
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* getIdentifierName(expression);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
declare function getIdentifierName(expression: ESTree.Expression | undefined): string | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Checks whether an assertion evaluates the actual operand inline.
|
|
41
|
+
* @param expression Assertion call expression to inspect.
|
|
42
|
+
* @param isActionExpression Predicate that identifies action-like expressions.
|
|
43
|
+
* @returns True when the assertion actual operand performs action-like work.
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const actual = hasEvaluatedAssertionActual(expression, () => true);
|
|
47
|
+
* void actual;
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
declare function hasEvaluatedAssertionActual(expression: ESTree.CallExpression, isActionExpression: (expression: ESTree.Expression | undefined) => boolean): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Checks for assertion calls.
|
|
53
|
+
* @param node Input node value.
|
|
54
|
+
* @returns Return value output.
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* isAssertionCall(node);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
declare function isAssertionCall(node: ESTree.CallExpression): boolean;
|
|
61
|
+
/** Companion marker for test isolation. */
|
|
62
|
+
declare const analyzerAssertionsOperandsCompanion: true;
|
|
63
|
+
export { analyzerAssertionsOperandsCompanion, getAssertOperands, getExpectOperands, getIdentifierName, hasEvaluatedAssertionActual, isAssertionCall, };
|
|
64
|
+
//# sourceMappingURL=analyzer.assertions.operands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.assertions.operands.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.assertions.operands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,+DAA+D;AAC/D,UAAU,iBAAiB;IACzB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACtC,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CACxB,UAAU,EAAE,MAAM,CAAC,cAAc,GAChC,iBAAiB,GAAG,SAAS,CAe/B;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CACxB,UAAU,EAAE,MAAM,CAAC,cAAc,GAChC,iBAAiB,GAAG,SAAS,CA4B/B;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CACxB,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GACxC,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;;;;;GAUG;AACH,iBAAS,2BAA2B,CAClC,UAAU,EAAE,MAAM,CAAC,cAAc,EACjC,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,KAAK,OAAO,GACzE,OAAO,CAKT;AAED;;;;;;;;GAQG;AACH,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAoB7D;AAED,2CAA2C;AAC3C,QAAA,MAAM,mCAAmC,EAAG,IAAa,CAAC;AAE1D,OAAO,EACL,mCAAmC,EACnC,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,GAChB,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets assert operands.
|
|
3
|
+
* @param expression Input expression value.
|
|
4
|
+
* @returns Return value output.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* getAssertOperands(expression);
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
function getAssertOperands(expression) {
|
|
11
|
+
if (expression.callee.type === "MemberExpression" &&
|
|
12
|
+
expression.callee.object.type === "Identifier" &&
|
|
13
|
+
expression.callee.object.name === "assert") {
|
|
14
|
+
const [actual, expected] = expression.arguments;
|
|
15
|
+
if (actual?.type !== "SpreadElement" &&
|
|
16
|
+
expected?.type !== "SpreadElement") {
|
|
17
|
+
return { actual, expected };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return void 0;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets expect operands.
|
|
24
|
+
* @param expression Input expression value.
|
|
25
|
+
* @returns Return value output.
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* getExpectOperands(expression);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
function getExpectOperands(expression) {
|
|
32
|
+
if (expression.callee.type === "Identifier" &&
|
|
33
|
+
expression.callee.name === "expect") {
|
|
34
|
+
const [actual] = expression.arguments;
|
|
35
|
+
return actual?.type === "SpreadElement"
|
|
36
|
+
? { actual: void 0, expected: void 0 }
|
|
37
|
+
: { actual, expected: void 0 };
|
|
38
|
+
}
|
|
39
|
+
if (expression.callee.type === "MemberExpression" &&
|
|
40
|
+
expression.callee.object.type === "CallExpression") {
|
|
41
|
+
const nestedOperands = getExpectOperands(expression.callee.object);
|
|
42
|
+
if (nestedOperands === void 0) {
|
|
43
|
+
return void 0;
|
|
44
|
+
}
|
|
45
|
+
const [expected] = expression.arguments;
|
|
46
|
+
return expected?.type === "SpreadElement"
|
|
47
|
+
? nestedOperands
|
|
48
|
+
: { actual: nestedOperands.actual, expected };
|
|
49
|
+
}
|
|
50
|
+
return void 0;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Gets an identifier name.
|
|
54
|
+
* @param expression Input expression value.
|
|
55
|
+
* @returns Return value output.
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* getIdentifierName(expression);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
function getIdentifierName(expression) {
|
|
62
|
+
return expression?.type === "Identifier" ? expression.name : void 0;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Checks whether an assertion evaluates the actual operand inline.
|
|
66
|
+
* @param expression Assertion call expression to inspect.
|
|
67
|
+
* @param isActionExpression Predicate that identifies action-like expressions.
|
|
68
|
+
* @returns True when the assertion actual operand performs action-like work.
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const actual = hasEvaluatedAssertionActual(expression, () => true);
|
|
72
|
+
* void actual;
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
function hasEvaluatedAssertionActual(expression, isActionExpression) {
|
|
76
|
+
const operands = getExpectOperands(expression) ?? getAssertOperands(expression);
|
|
77
|
+
return operands !== void 0 && isActionExpression(operands.actual);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Checks for assertion calls.
|
|
81
|
+
* @param node Input node value.
|
|
82
|
+
* @returns Return value output.
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* isAssertionCall(node);
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
function isAssertionCall(node) {
|
|
89
|
+
if (node.callee.type === "Identifier") {
|
|
90
|
+
return node.callee.name === "expect" || node.callee.name === "assert";
|
|
91
|
+
}
|
|
92
|
+
if (node.callee.type !== "MemberExpression") {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
if (node.callee.object.type === "Identifier" &&
|
|
96
|
+
node.callee.object.name === "assert") {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
return (node.callee.object.type === "CallExpression" &&
|
|
100
|
+
isAssertionCall(node.callee.object));
|
|
101
|
+
}
|
|
102
|
+
/** Companion marker for test isolation. */
|
|
103
|
+
const analyzerAssertionsOperandsCompanion = true;
|
|
104
|
+
export { analyzerAssertionsOperandsCompanion, getAssertOperands, getExpectOperands, getIdentifierName, hasEvaluatedAssertionActual, isAssertionCall, };
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuYXNzZXJ0aW9ucy5vcGVyYW5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9hYWEvYW5hbHl6ZXIuYXNzZXJ0aW9ucy5vcGVyYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQTs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsaUJBQWlCLENBQ3hCLFVBQWlDO0lBRWpDLElBQ0UsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCO1FBQzdDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQzlDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQzFDLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7UUFDaEQsSUFDRSxNQUFNLEVBQUUsSUFBSSxLQUFLLGVBQWU7WUFDaEMsUUFBUSxFQUFFLElBQUksS0FBSyxlQUFlLEVBQ2xDLENBQUM7WUFDRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGlCQUFpQixDQUN4QixVQUFpQztJQUVqQyxJQUNFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDdkMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUNuQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7UUFDdEMsT0FBTyxNQUFNLEVBQUUsSUFBSSxLQUFLLGVBQWU7WUFDckMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN0QyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQ0UsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCO1FBQzdDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFDbEQsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkUsSUFBSSxjQUFjLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUV4QyxPQUFPLFFBQVEsRUFBRSxJQUFJLEtBQUssZUFBZTtZQUN2QyxDQUFDLENBQUMsY0FBYztZQUNoQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGlCQUFpQixDQUN4QixVQUF5QztJQUV6QyxPQUFPLFVBQVUsRUFBRSxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsMkJBQTJCLENBQ2xDLFVBQWlDLEVBQ2pDLGtCQUEwRTtJQUUxRSxNQUFNLFFBQVEsR0FDWixpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqRSxPQUFPLFFBQVEsS0FBSyxLQUFLLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxlQUFlLENBQUMsSUFBMkI7SUFDbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztRQUM1QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQ3BDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGdCQUFnQjtRQUM1QyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FDcEMsQ0FBQztBQUNKLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxtQ0FBbUMsR0FBRyxJQUFhLENBQUM7QUFFMUQsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQiwyQkFBMkIsRUFDM0IsZUFBZSxHQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xyXG5cclxuLyoqIFJhdyBhc3NlcnRpb24gb3BlcmFuZHMgZXh0cmFjdGVkIGZyb20gYSBjYWxsIGV4cHJlc3Npb24uICovXHJcbmludGVyZmFjZSBBc3NlcnRpb25PcGVyYW5kcyB7XHJcbiAgLyoqIEV4cHJlc3Npb24gdXNlZCBhcyB0aGUgYWN0dWFsIG9wZXJhbmQuICovXHJcbiAgYWN0dWFsOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZDtcclxuICAvKiogRXhwcmVzc2lvbiB1c2VkIGFzIHRoZSBleHBlY3RlZCBvcGVyYW5kLiAqL1xyXG4gIGV4cGVjdGVkOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgYXNzZXJ0IG9wZXJhbmRzLlxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBJbnB1dCBleHByZXNzaW9uIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGdldEFzc2VydE9wZXJhbmRzKGV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldEFzc2VydE9wZXJhbmRzKFxyXG4gIGV4cHJlc3Npb246IEVTVHJlZS5DYWxsRXhwcmVzc2lvbixcclxuKTogQXNzZXJ0aW9uT3BlcmFuZHMgfCB1bmRlZmluZWQge1xyXG4gIGlmIChcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC5uYW1lID09PSBcImFzc2VydFwiXHJcbiAgKSB7XHJcbiAgICBjb25zdCBbYWN0dWFsLCBleHBlY3RlZF0gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcclxuICAgIGlmIChcclxuICAgICAgYWN0dWFsPy50eXBlICE9PSBcIlNwcmVhZEVsZW1lbnRcIiAmJlxyXG4gICAgICBleHBlY3RlZD8udHlwZSAhPT0gXCJTcHJlYWRFbGVtZW50XCJcclxuICAgICkge1xyXG4gICAgICByZXR1cm4geyBhY3R1YWwsIGV4cGVjdGVkIH07XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIGV4cGVjdCBvcGVyYW5kcy5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBnZXRFeHBlY3RPcGVyYW5kcyhleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRFeHBlY3RPcGVyYW5kcyhcclxuICBleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24sXHJcbik6IEFzc2VydGlvbk9wZXJhbmRzIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxyXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUubmFtZSA9PT0gXCJleHBlY3RcIlxyXG4gICkge1xyXG4gICAgY29uc3QgW2FjdHVhbF0gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcclxuICAgIHJldHVybiBhY3R1YWw/LnR5cGUgPT09IFwiU3ByZWFkRWxlbWVudFwiXHJcbiAgICAgID8geyBhY3R1YWw6IHZvaWQgMCwgZXhwZWN0ZWQ6IHZvaWQgMCB9XHJcbiAgICAgIDogeyBhY3R1YWwsIGV4cGVjdGVkOiB2b2lkIDAgfTtcclxuICB9XHJcblxyXG4gIGlmIChcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QudHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiXHJcbiAgKSB7XHJcbiAgICBjb25zdCBuZXN0ZWRPcGVyYW5kcyA9IGdldEV4cGVjdE9wZXJhbmRzKGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdCk7XHJcbiAgICBpZiAobmVzdGVkT3BlcmFuZHMgPT09IHZvaWQgMCkge1xyXG4gICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFtleHBlY3RlZF0gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcclxuXHJcbiAgICByZXR1cm4gZXhwZWN0ZWQ/LnR5cGUgPT09IFwiU3ByZWFkRWxlbWVudFwiXHJcbiAgICAgID8gbmVzdGVkT3BlcmFuZHNcclxuICAgICAgOiB7IGFjdHVhbDogbmVzdGVkT3BlcmFuZHMuYWN0dWFsLCBleHBlY3RlZCB9O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgYW4gaWRlbnRpZmllciBuYW1lLlxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBJbnB1dCBleHByZXNzaW9uIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGdldElkZW50aWZpZXJOYW1lKGV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldElkZW50aWZpZXJOYW1lKFxyXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLFxyXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIHJldHVybiBleHByZXNzaW9uPy50eXBlID09PSBcIklkZW50aWZpZXJcIiA/IGV4cHJlc3Npb24ubmFtZSA6IHZvaWQgMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGFzc2VydGlvbiBldmFsdWF0ZXMgdGhlIGFjdHVhbCBvcGVyYW5kIGlubGluZS5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gQXNzZXJ0aW9uIGNhbGwgZXhwcmVzc2lvbiB0byBpbnNwZWN0LlxyXG4gKiBAcGFyYW0gaXNBY3Rpb25FeHByZXNzaW9uIFByZWRpY2F0ZSB0aGF0IGlkZW50aWZpZXMgYWN0aW9uLWxpa2UgZXhwcmVzc2lvbnMuXHJcbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgYXNzZXJ0aW9uIGFjdHVhbCBvcGVyYW5kIHBlcmZvcm1zIGFjdGlvbi1saWtlIHdvcmsuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgYWN0dWFsID0gaGFzRXZhbHVhdGVkQXNzZXJ0aW9uQWN0dWFsKGV4cHJlc3Npb24sICgpID0+IHRydWUpO1xyXG4gKiB2b2lkIGFjdHVhbDtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNFdmFsdWF0ZWRBc3NlcnRpb25BY3R1YWwoXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uLFxyXG4gIGlzQWN0aW9uRXhwcmVzc2lvbjogKGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkKSA9PiBib29sZWFuLFxyXG4pOiBib29sZWFuIHtcclxuICBjb25zdCBvcGVyYW5kcyA9XHJcbiAgICBnZXRFeHBlY3RPcGVyYW5kcyhleHByZXNzaW9uKSA/PyBnZXRBc3NlcnRPcGVyYW5kcyhleHByZXNzaW9uKTtcclxuXHJcbiAgcmV0dXJuIG9wZXJhbmRzICE9PSB2b2lkIDAgJiYgaXNBY3Rpb25FeHByZXNzaW9uKG9wZXJhbmRzLmFjdHVhbCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIGFzc2VydGlvbiBjYWxscy5cclxuICogQHBhcmFtIG5vZGUgSW5wdXQgbm9kZSB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc0Fzc2VydGlvbkNhbGwobm9kZSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNBc3NlcnRpb25DYWxsKG5vZGU6IEVTVHJlZS5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xyXG4gIGlmIChub2RlLmNhbGxlZS50eXBlID09PSBcIklkZW50aWZpZXJcIikge1xyXG4gICAgcmV0dXJuIG5vZGUuY2FsbGVlLm5hbWUgPT09IFwiZXhwZWN0XCIgfHwgbm9kZS5jYWxsZWUubmFtZSA9PT0gXCJhc3NlcnRcIjtcclxuICB9XHJcblxyXG4gIGlmIChub2RlLmNhbGxlZS50eXBlICE9PSBcIk1lbWJlckV4cHJlc3Npb25cIikge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaWYgKFxyXG4gICAgbm9kZS5jYWxsZWUub2JqZWN0LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXHJcbiAgICBub2RlLmNhbGxlZS5vYmplY3QubmFtZSA9PT0gXCJhc3NlcnRcIlxyXG4gICkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgbm9kZS5jYWxsZWUub2JqZWN0LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxyXG4gICAgaXNBc3NlcnRpb25DYWxsKG5vZGUuY2FsbGVlLm9iamVjdClcclxuICApO1xyXG59XHJcblxyXG4vKiogQ29tcGFuaW9uIG1hcmtlciBmb3IgdGVzdCBpc29sYXRpb24uICovXHJcbmNvbnN0IGFuYWx5emVyQXNzZXJ0aW9uc09wZXJhbmRzQ29tcGFuaW9uID0gdHJ1ZSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCB7XHJcbiAgYW5hbHl6ZXJBc3NlcnRpb25zT3BlcmFuZHNDb21wYW5pb24sXHJcbiAgZ2V0QXNzZXJ0T3BlcmFuZHMsXHJcbiAgZ2V0RXhwZWN0T3BlcmFuZHMsXHJcbiAgZ2V0SWRlbnRpZmllck5hbWUsXHJcbiAgaGFzRXZhbHVhdGVkQXNzZXJ0aW9uQWN0dWFsLFxyXG4gIGlzQXNzZXJ0aW9uQ2FsbCxcclxufTtcclxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Checks whether a statement contains any async or await logic. */
|
|
2
|
+
declare const hasAsyncLogic: (statement: import("estree").Statement) => boolean;
|
|
3
|
+
/** Checks whether a node contains an `await` expression. */
|
|
4
|
+
declare const hasAwait: (statement: import("estree").Statement) => boolean;
|
|
5
|
+
/** Checks whether there is a blank line immediately before a comment node. */
|
|
6
|
+
declare const hasBlankLineBeforeComment: (sourceText: string, comment: import("estree").Comment) => boolean;
|
|
7
|
+
/** Checks whether an Act statement produces a result worth capturing. */
|
|
8
|
+
declare const hasCapturableActResult: (statement: import("estree").Statement) => boolean;
|
|
9
|
+
/** Checks whether a statement performs an observable state mutation. */
|
|
10
|
+
declare const hasMutation: (statement: import("estree").Statement) => boolean;
|
|
11
|
+
/** Checks whether a statement is a meaningful Act step (not setup or assertion). */
|
|
12
|
+
declare const isMeaningfulActStatement: (statement: import("estree").Statement) => boolean;
|
|
13
|
+
/** Checks whether a statement looks like an Arrange-phase setup step. */
|
|
14
|
+
declare const isSetupLikeStatement: (statement: import("estree").Statement) => boolean;
|
|
15
|
+
export { hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, };
|
|
16
|
+
//# sourceMappingURL=analyzer.classification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.classification.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.ts"],"names":[],"mappings":"AA2BA,oEAAoE;AACpE,QAAA,MAAM,aAAa,oDAAuC,CAAC;AAE3D,4DAA4D;AAC5D,QAAA,MAAM,QAAQ,oDAAkC,CAAC;AAEjD,8EAA8E;AAC9E,QAAA,MAAM,yBAAyB,oEAE9B,CAAC;AAEF,yEAAyE;AACzE,QAAA,MAAM,sBAAsB,oDAAgD,CAAC;AAE7E,wEAAwE;AACxE,QAAA,MAAM,WAAW,oDAAqC,CAAC;AAEvD,oFAAoF;AACpF,QAAA,MAAM,wBAAwB,oDAE7B,CAAC;AAEF,yEAAyE;AACzE,QAAA,MAAM,oBAAoB,oDAA8C,CAAC;AAEzE,OAAO,EACL,aAAa,EACb,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,GACrB,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
import type { SourceComment } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Checks for async logic.
|
|
5
|
+
* @param statement Input statement value.
|
|
6
|
+
* @returns Return value output.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* hasAsyncLogic(statement);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
declare function hasAsyncLogic(statement: ESTree.Statement): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Checks for await usage.
|
|
15
|
+
* @param statement Input statement value.
|
|
16
|
+
* @returns Return value output.
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* hasAwait(statement);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare function hasAwait(statement: ESTree.Statement): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Checks for blank lines before comments.
|
|
25
|
+
* @param sourceText Input sourceText value.
|
|
26
|
+
* @param comment Input comment value.
|
|
27
|
+
* @returns Return value output.
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* hasBlankLineBeforeComment(sourceText, comment);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
declare function hasBlankLineBeforeComment(sourceText: string, comment: SourceComment): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Checks for capturable Act results.
|
|
36
|
+
* @param statement Input statement value.
|
|
37
|
+
* @returns Return value output.
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* hasCapturableActResult(statement);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
declare function hasCapturableActResult(statement: ESTree.Statement): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Checks for mutation.
|
|
46
|
+
* @param statement Input statement value.
|
|
47
|
+
* @returns Return value output.
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* hasMutation(statement);
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
declare function hasMutation(statement: ESTree.Statement): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Checks for meaningful Act statements.
|
|
56
|
+
* @param statement Input statement value.
|
|
57
|
+
* @returns Return value output.
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* isMeaningfulActStatement(statement);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
declare function isMeaningfulActStatement(statement: ESTree.Statement): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Checks for setup-like statements.
|
|
66
|
+
* @param statement Input statement value.
|
|
67
|
+
* @returns Return value output.
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* isSetupLikeStatement(statement);
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
declare function isSetupLikeStatement(statement: ESTree.Statement): boolean;
|
|
74
|
+
/** Companion marker for test isolation. */
|
|
75
|
+
declare const analyzerClassificationHelpersCompanion: true;
|
|
76
|
+
export { analyzerClassificationHelpersCompanion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, };
|
|
77
|
+
//# sourceMappingURL=analyzer.classification.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.classification.helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAuB7C;;;;;;;;GAQG;AACH,iBAAS,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAwB3D;AAED;;;;;;;;GAQG;AACH,iBAAS,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAQtD;AAED;;;;;;;;;GASG;AACH,iBAAS,yBAAyB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAOT;AAED;;;;;;;;GAQG;AACH,iBAAS,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAepE;AAED;;;;;;;;GAQG;AACH,iBAAS,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAuBzD;AAED;;;;;;;;GAQG;AACH,iBAAS,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAUtE;AAwBD;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAYlE;AA8BD,2CAA2C;AAC3C,QAAA,MAAM,sCAAsC,EAAG,IAAa,CAAC;AAE7D,OAAO,EACL,sCAAsC,EACtC,aAAa,EACb,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,GACrB,CAAC"}
|