@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
|
@@ -1,490 +0,0 @@
|
|
|
1
|
-
const aaaPhaseOrder = {
|
|
2
|
-
Act: 1,
|
|
3
|
-
Arrange: 0,
|
|
4
|
-
Assert: 2,
|
|
5
|
-
};
|
|
6
|
-
const arrayMutationMethods = new Set([
|
|
7
|
-
"copyWithin",
|
|
8
|
-
"fill",
|
|
9
|
-
"pop",
|
|
10
|
-
"push",
|
|
11
|
-
"reverse",
|
|
12
|
-
"shift",
|
|
13
|
-
"sort",
|
|
14
|
-
"splice",
|
|
15
|
-
"unshift",
|
|
16
|
-
]);
|
|
17
|
-
const phaseNames = ["Arrange", "Act", "Assert"];
|
|
18
|
-
const setupLikeNames = /^(arrange|build|create|fixture|given|make|mock|seed|setup|spy|stub)/u;
|
|
19
|
-
const utilityMethodNames = new Set([
|
|
20
|
-
"advanceTimersByTime",
|
|
21
|
-
"clearAllMocks",
|
|
22
|
-
"debug",
|
|
23
|
-
"fn",
|
|
24
|
-
"info",
|
|
25
|
-
"log",
|
|
26
|
-
"mockImplementation",
|
|
27
|
-
"mockRejectedValue",
|
|
28
|
-
"mockResolvedValue",
|
|
29
|
-
"mockReturnValue",
|
|
30
|
-
"resetAllMocks",
|
|
31
|
-
"useFakeTimers",
|
|
32
|
-
"warn",
|
|
33
|
-
]);
|
|
34
|
-
const voidLikeMethodNames = new Set([
|
|
35
|
-
"clear",
|
|
36
|
-
"debug",
|
|
37
|
-
"dispatch",
|
|
38
|
-
"emit",
|
|
39
|
-
"info",
|
|
40
|
-
"log",
|
|
41
|
-
"print",
|
|
42
|
-
"publish",
|
|
43
|
-
"reset",
|
|
44
|
-
"set",
|
|
45
|
-
"trigger",
|
|
46
|
-
"warn",
|
|
47
|
-
]);
|
|
48
|
-
function getSectionPhases(commentValue) {
|
|
49
|
-
const trimmedComment = commentValue.trim();
|
|
50
|
-
if (trimmedComment.length === 0) {
|
|
51
|
-
return [];
|
|
52
|
-
}
|
|
53
|
-
const parts = trimmedComment.split(/\s*&\s*/u);
|
|
54
|
-
return parts.every(isAaaPhase) ? parts : [];
|
|
55
|
-
}
|
|
56
|
-
function analyzeTestBlock(context, node) {
|
|
57
|
-
const testCall = getSupportedTestCall(node);
|
|
58
|
-
if (testCall === void 0) {
|
|
59
|
-
return void 0;
|
|
60
|
-
}
|
|
61
|
-
const { callback, callExpression } = testCall;
|
|
62
|
-
const { sourceCode } = context;
|
|
63
|
-
const sectionComments = sourceCode
|
|
64
|
-
.getAllComments()
|
|
65
|
-
.filter((comment) => isLocatedComment(comment) &&
|
|
66
|
-
comment.type === "Line" &&
|
|
67
|
-
isRangeWithin(comment.range, callback.body.range) &&
|
|
68
|
-
getSectionPhases(comment.value).length > 0)
|
|
69
|
-
.map((comment) => ({
|
|
70
|
-
comment: comment,
|
|
71
|
-
phases: getSectionPhases(comment.value),
|
|
72
|
-
}));
|
|
73
|
-
const flattenedSections = sectionComments.flatMap((sectionComment) => sectionComment.phases.map((phase) => ({
|
|
74
|
-
line: sectionComment.comment.loc.start.line,
|
|
75
|
-
phase,
|
|
76
|
-
})));
|
|
77
|
-
return {
|
|
78
|
-
body: callback.body,
|
|
79
|
-
bodyLineCount: callback.body.loc.end.line - callback.body.loc.start.line - 1,
|
|
80
|
-
callExpression,
|
|
81
|
-
newline: getNewline(sourceCode.text),
|
|
82
|
-
sectionComments,
|
|
83
|
-
sourceText: sourceCode.text,
|
|
84
|
-
statements: callback.body.body.map((statement) => ({
|
|
85
|
-
node: statement,
|
|
86
|
-
phase: getStatementPhase(statement, flattenedSections),
|
|
87
|
-
})),
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
function countActStatements(analysis) {
|
|
91
|
-
return analysis.statements.filter((statement) => statement.phase === "Act" &&
|
|
92
|
-
(statement.node.type === "ExpressionStatement" ||
|
|
93
|
-
statement.node.type === "VariableDeclaration")).length;
|
|
94
|
-
}
|
|
95
|
-
function getAssertionIdentifiers(statement) {
|
|
96
|
-
if (statement.type !== "ExpressionStatement") {
|
|
97
|
-
return { actual: void 0, expected: void 0 };
|
|
98
|
-
}
|
|
99
|
-
const expression = unwrapExpression(statement.expression);
|
|
100
|
-
if (expression?.type !== "CallExpression") {
|
|
101
|
-
return { actual: void 0, expected: void 0 };
|
|
102
|
-
}
|
|
103
|
-
const expectOperands = getExpectOperands(expression);
|
|
104
|
-
if (expectOperands !== void 0) {
|
|
105
|
-
return {
|
|
106
|
-
actual: getIdentifierName(expectOperands.actual),
|
|
107
|
-
expected: getIdentifierName(expectOperands.expected),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
const assertOperands = getAssertOperands(expression);
|
|
111
|
-
return {
|
|
112
|
-
actual: getIdentifierName(assertOperands?.actual),
|
|
113
|
-
expected: getIdentifierName(assertOperands?.expected),
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
function getAssertDeclaredIdentifiers(analysis) {
|
|
117
|
-
const declaredIdentifiers = new Map();
|
|
118
|
-
for (const statement of analysis.statements) {
|
|
119
|
-
if (statement.phase !== "Assert" ||
|
|
120
|
-
statement.node.type !== "VariableDeclaration") {
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
for (const declaration of statement.node.declarations) {
|
|
124
|
-
if (declaration.id.type === "Identifier") {
|
|
125
|
-
declaredIdentifiers.set(declaration.id.name, declaration.id);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return declaredIdentifiers;
|
|
130
|
-
}
|
|
131
|
-
function getFlattenedSections(analysis) {
|
|
132
|
-
return analysis.sectionComments.flatMap((sectionComment) => sectionComment.phases.map((phase) => ({
|
|
133
|
-
comment: sectionComment.comment,
|
|
134
|
-
phase,
|
|
135
|
-
})));
|
|
136
|
-
}
|
|
137
|
-
function getPhaseBoundaryComments(analysis) {
|
|
138
|
-
return analysis.sectionComments.filter((sectionComment) => sectionComment.phases.some((phase) => phase === "Act" || phase === "Assert"));
|
|
139
|
-
}
|
|
140
|
-
function hasAssertion(statement) {
|
|
141
|
-
let foundAssertion = false;
|
|
142
|
-
visitNode(statement, (node) => {
|
|
143
|
-
if (node.type === "CallExpression" && isAssertionCall(node)) {
|
|
144
|
-
foundAssertion = true;
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
return foundAssertion;
|
|
148
|
-
}
|
|
149
|
-
function hasAsyncLogic(statement) {
|
|
150
|
-
let foundAsyncLogic = false;
|
|
151
|
-
visitNode(statement, (node) => {
|
|
152
|
-
if (node.type === "AwaitExpression") {
|
|
153
|
-
foundAsyncLogic = true;
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
if (node.type === "CallExpression" &&
|
|
157
|
-
node.callee.type === "MemberExpression" &&
|
|
158
|
-
node.callee.property.type === "Identifier" &&
|
|
159
|
-
["catch", "finally", "then"].includes(node.callee.property.name)) {
|
|
160
|
-
foundAsyncLogic = true;
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
if (node.type === "NewExpression" &&
|
|
164
|
-
getExpressionName(node.callee) === "Promise") {
|
|
165
|
-
foundAsyncLogic = true;
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
return foundAsyncLogic;
|
|
169
|
-
}
|
|
170
|
-
function hasAwait(statement) {
|
|
171
|
-
let foundAwait = false;
|
|
172
|
-
visitNode(statement, (node) => {
|
|
173
|
-
if (node.type === "AwaitExpression") {
|
|
174
|
-
foundAwait = true;
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
return foundAwait;
|
|
178
|
-
}
|
|
179
|
-
function hasBlankLineBeforeComment(sourceText, comment) {
|
|
180
|
-
if (!isLocatedComment(comment)) {
|
|
181
|
-
return true;
|
|
182
|
-
}
|
|
183
|
-
const lines = sourceText.split(/\r\n|\n/u);
|
|
184
|
-
const previousLine = lines[comment.loc.start.line - 2];
|
|
185
|
-
return previousLine === void 0 || previousLine.trim().length === 0;
|
|
186
|
-
}
|
|
187
|
-
function hasCapturableActResult(statement) {
|
|
188
|
-
if (statement.type !== "ExpressionStatement") {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
const expression = unwrapExpression(statement.expression);
|
|
192
|
-
if (!isActionExpression(expression) || isUtilityLikeExpression(expression)) {
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
const calleeName = getInvokedName(expression);
|
|
196
|
-
return (calleeName === void 0 ||
|
|
197
|
-
(!voidLikeMethodNames.has(calleeName) &&
|
|
198
|
-
!/^(clear|debug|dispatch|emit|info|log|print|publish|reset|set|trigger|warn)/u.test(calleeName)));
|
|
199
|
-
}
|
|
200
|
-
function hasMutation(statement) {
|
|
201
|
-
let foundMutation = false;
|
|
202
|
-
visitNode(statement, (node) => {
|
|
203
|
-
if (node.type === "AssignmentExpression" ||
|
|
204
|
-
node.type === "UpdateExpression" ||
|
|
205
|
-
node.type === "UnaryExpression") {
|
|
206
|
-
if (node.type !== "UnaryExpression" || node.operator === "delete") {
|
|
207
|
-
foundMutation = true;
|
|
208
|
-
}
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
if (node.type === "CallExpression" &&
|
|
212
|
-
node.callee.type === "MemberExpression" &&
|
|
213
|
-
node.callee.property.type === "Identifier" &&
|
|
214
|
-
arrayMutationMethods.has(node.callee.property.name)) {
|
|
215
|
-
foundMutation = true;
|
|
216
|
-
}
|
|
217
|
-
});
|
|
218
|
-
return foundMutation;
|
|
219
|
-
}
|
|
220
|
-
function isMeaningfulActStatement(statement) {
|
|
221
|
-
const expression = getStatementExpression(statement);
|
|
222
|
-
if (expression === void 0) {
|
|
223
|
-
return false;
|
|
224
|
-
}
|
|
225
|
-
return (isActionExpression(expression) &&
|
|
226
|
-
!isUtilityLikeExpression(expression) &&
|
|
227
|
-
!hasAssertion(statement));
|
|
228
|
-
}
|
|
229
|
-
function isSetupLikeStatement(statement) {
|
|
230
|
-
if (statement.type === "VariableDeclaration") {
|
|
231
|
-
return statement.declarations.every((declaration) => {
|
|
232
|
-
if (declaration.init === null) {
|
|
233
|
-
return true;
|
|
234
|
-
}
|
|
235
|
-
const init = unwrapExpression(declaration.init);
|
|
236
|
-
return !isActionExpression(init) || isUtilityLikeExpression(init);
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
const expression = getStatementExpression(statement);
|
|
240
|
-
return expression !== void 0 && isUtilityLikeExpression(expression);
|
|
241
|
-
}
|
|
242
|
-
function isValidAssertStatement(statement) {
|
|
243
|
-
if (hasAssertion(statement)) {
|
|
244
|
-
return true;
|
|
245
|
-
}
|
|
246
|
-
if (statement.type !== "VariableDeclaration") {
|
|
247
|
-
return false;
|
|
248
|
-
}
|
|
249
|
-
return statement.declarations.every((declaration) => {
|
|
250
|
-
/* v8 ignore start -- the parser used in this repo emits undefined rather than null for uninitialized declarators. */
|
|
251
|
-
if (declaration.init === null) {
|
|
252
|
-
return true;
|
|
253
|
-
}
|
|
254
|
-
/* v8 ignore stop */
|
|
255
|
-
const init = unwrapExpression(declaration.init);
|
|
256
|
-
return !isActionExpression(init);
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
function usesPrefix(name, prefix) {
|
|
260
|
-
return name === prefix || name.startsWith(prefix);
|
|
261
|
-
}
|
|
262
|
-
/* v8 ignore start -- valid analyzer callers always request an existing statement line. */
|
|
263
|
-
function getLineStartRange(sourceText, line) {
|
|
264
|
-
let currentLine = 1;
|
|
265
|
-
for (let index = 0; index < sourceText.length; index += 1) {
|
|
266
|
-
if (currentLine === line) {
|
|
267
|
-
return [index, index];
|
|
268
|
-
}
|
|
269
|
-
if (sourceText[index] === "\n") {
|
|
270
|
-
currentLine += 1;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
return [sourceText.length, sourceText.length];
|
|
274
|
-
}
|
|
275
|
-
/* v8 ignore stop */
|
|
276
|
-
/* v8 ignore start -- the indentation regex always matches, but the fallback keeps the helper total-safe. */
|
|
277
|
-
function getIndentationAtOffset(sourceText, offset) {
|
|
278
|
-
const lineStart = sourceText.lastIndexOf("\n", Math.max(0, offset - 1)) + 1;
|
|
279
|
-
const linePrefix = sourceText.slice(lineStart, offset);
|
|
280
|
-
const indentation = /^\s*/u.exec(linePrefix);
|
|
281
|
-
return indentation?.[0] ?? "";
|
|
282
|
-
}
|
|
283
|
-
/* v8 ignore stop */
|
|
284
|
-
function getAssertOperands(expression) {
|
|
285
|
-
if (expression.callee.type === "MemberExpression" &&
|
|
286
|
-
expression.callee.object.type === "Identifier" &&
|
|
287
|
-
expression.callee.object.name === "assert") {
|
|
288
|
-
const [actual, expected] = expression.arguments;
|
|
289
|
-
if (actual?.type !== "SpreadElement" &&
|
|
290
|
-
expected?.type !== "SpreadElement") {
|
|
291
|
-
return { actual, expected };
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
return void 0;
|
|
295
|
-
}
|
|
296
|
-
function getExpectOperands(expression) {
|
|
297
|
-
if (expression.callee.type === "Identifier" &&
|
|
298
|
-
expression.callee.name === "expect") {
|
|
299
|
-
const [actual] = expression.arguments;
|
|
300
|
-
return actual?.type === "SpreadElement"
|
|
301
|
-
? { actual: void 0, expected: void 0 }
|
|
302
|
-
: { actual, expected: void 0 };
|
|
303
|
-
}
|
|
304
|
-
if (expression.callee.type === "MemberExpression" &&
|
|
305
|
-
expression.callee.object.type === "CallExpression") {
|
|
306
|
-
const nestedOperands = getExpectOperands(expression.callee.object);
|
|
307
|
-
if (nestedOperands === void 0) {
|
|
308
|
-
return void 0;
|
|
309
|
-
}
|
|
310
|
-
const [expected] = expression.arguments;
|
|
311
|
-
return expected?.type === "SpreadElement"
|
|
312
|
-
? nestedOperands
|
|
313
|
-
: { actual: nestedOperands.actual, expected };
|
|
314
|
-
}
|
|
315
|
-
return void 0;
|
|
316
|
-
}
|
|
317
|
-
/* v8 ignore start -- the fallback branches are retained for helper totality but are not reachable from current analyzer entry points. */
|
|
318
|
-
function getExpressionName(expression) {
|
|
319
|
-
if (expression.type === "Super") {
|
|
320
|
-
return void 0;
|
|
321
|
-
}
|
|
322
|
-
if (expression.type === "Identifier") {
|
|
323
|
-
return expression.name;
|
|
324
|
-
}
|
|
325
|
-
if (expression.type === "MemberExpression" &&
|
|
326
|
-
expression.property.type === "Identifier") {
|
|
327
|
-
return expression.property.name;
|
|
328
|
-
}
|
|
329
|
-
return void 0;
|
|
330
|
-
}
|
|
331
|
-
/* v8 ignore stop */
|
|
332
|
-
function getIdentifierName(expression) {
|
|
333
|
-
return expression?.type === "Identifier" ? expression.name : void 0;
|
|
334
|
-
}
|
|
335
|
-
/* v8 ignore start -- callers only ask for invoked names after action-expression checks that narrow to call/new expressions. */
|
|
336
|
-
function getInvokedName(expression) {
|
|
337
|
-
const unwrappedExpression = unwrapExpression(expression);
|
|
338
|
-
if (unwrappedExpression?.type === "CallExpression" ||
|
|
339
|
-
unwrappedExpression?.type === "NewExpression") {
|
|
340
|
-
return getExpressionName(unwrappedExpression.callee);
|
|
341
|
-
}
|
|
342
|
-
return void 0;
|
|
343
|
-
}
|
|
344
|
-
/* v8 ignore stop */
|
|
345
|
-
function getNewline(text) {
|
|
346
|
-
return text.includes("\r\n") ? "\r\n" : "\n";
|
|
347
|
-
}
|
|
348
|
-
function getStatementExpression(statement) {
|
|
349
|
-
if (statement.type === "ExpressionStatement") {
|
|
350
|
-
return statement.expression;
|
|
351
|
-
}
|
|
352
|
-
if (statement.type === "VariableDeclaration" &&
|
|
353
|
-
statement.declarations.length === 1) {
|
|
354
|
-
/* v8 ignore start -- valid ESTree variable declarations always carry the matched declarator. */
|
|
355
|
-
return statement.declarations[0]?.init ?? void 0;
|
|
356
|
-
/* v8 ignore stop */
|
|
357
|
-
}
|
|
358
|
-
return void 0;
|
|
359
|
-
}
|
|
360
|
-
function getStatementPhase(statement, flattenedSections) {
|
|
361
|
-
const statementLine = statement.loc?.start.line;
|
|
362
|
-
if (statementLine === void 0) {
|
|
363
|
-
return void 0;
|
|
364
|
-
}
|
|
365
|
-
let currentPhase;
|
|
366
|
-
for (const section of flattenedSections) {
|
|
367
|
-
if (section.line > statementLine) {
|
|
368
|
-
break;
|
|
369
|
-
}
|
|
370
|
-
currentPhase = section.phase;
|
|
371
|
-
}
|
|
372
|
-
return currentPhase;
|
|
373
|
-
}
|
|
374
|
-
function getSupportedTestCall(node) {
|
|
375
|
-
const rootName = getTestRootName(node.callee);
|
|
376
|
-
if (rootName !== "it" && rootName !== "test") {
|
|
377
|
-
return void 0;
|
|
378
|
-
}
|
|
379
|
-
const callbackArgument = node.arguments.at(-1);
|
|
380
|
-
if (callbackArgument === void 0 ||
|
|
381
|
-
callbackArgument.type === "SpreadElement" ||
|
|
382
|
-
(callbackArgument.type !== "ArrowFunctionExpression" &&
|
|
383
|
-
callbackArgument.type !== "FunctionExpression") ||
|
|
384
|
-
callbackArgument.body.type !== "BlockStatement") {
|
|
385
|
-
return void 0;
|
|
386
|
-
}
|
|
387
|
-
return {
|
|
388
|
-
callback: callbackArgument,
|
|
389
|
-
callExpression: node,
|
|
390
|
-
};
|
|
391
|
-
}
|
|
392
|
-
function getTestRootName(callee) {
|
|
393
|
-
if (callee.type === "Identifier") {
|
|
394
|
-
return callee.name;
|
|
395
|
-
}
|
|
396
|
-
if (callee.type === "MemberExpression" && callee.object.type !== "Super") {
|
|
397
|
-
return getTestRootName(callee.object);
|
|
398
|
-
}
|
|
399
|
-
return void 0;
|
|
400
|
-
}
|
|
401
|
-
function isActionExpression(expression) {
|
|
402
|
-
const unwrappedExpression = unwrapExpression(expression);
|
|
403
|
-
return (unwrappedExpression?.type === "AwaitExpression" ||
|
|
404
|
-
unwrappedExpression?.type === "CallExpression" ||
|
|
405
|
-
unwrappedExpression?.type === "NewExpression");
|
|
406
|
-
}
|
|
407
|
-
function isAaaPhase(value) {
|
|
408
|
-
return phaseNames.includes(value);
|
|
409
|
-
}
|
|
410
|
-
function isAssertionCall(node) {
|
|
411
|
-
if (node.callee.type === "Identifier") {
|
|
412
|
-
return node.callee.name === "expect" || node.callee.name === "assert";
|
|
413
|
-
}
|
|
414
|
-
if (node.callee.type !== "MemberExpression") {
|
|
415
|
-
return false;
|
|
416
|
-
}
|
|
417
|
-
if (node.callee.object.type === "Identifier" &&
|
|
418
|
-
node.callee.object.name === "assert") {
|
|
419
|
-
return true;
|
|
420
|
-
}
|
|
421
|
-
if (node.callee.object.type === "CallExpression") {
|
|
422
|
-
return isAssertionCall(node.callee.object);
|
|
423
|
-
}
|
|
424
|
-
return false;
|
|
425
|
-
}
|
|
426
|
-
function isRangeWithin(range, container) {
|
|
427
|
-
return range[0] >= container[0] && range[1] <= container[1];
|
|
428
|
-
}
|
|
429
|
-
function isUtilityLikeExpression(expression) {
|
|
430
|
-
const unwrappedExpression = unwrapExpression(expression);
|
|
431
|
-
if (unwrappedExpression?.type !== "CallExpression" &&
|
|
432
|
-
unwrappedExpression?.type !== "NewExpression") {
|
|
433
|
-
return false;
|
|
434
|
-
}
|
|
435
|
-
const calleeName = getExpressionName(unwrappedExpression.callee);
|
|
436
|
-
if (calleeName === void 0) {
|
|
437
|
-
return false;
|
|
438
|
-
}
|
|
439
|
-
if (utilityMethodNames.has(calleeName) || setupLikeNames.test(calleeName)) {
|
|
440
|
-
return true;
|
|
441
|
-
}
|
|
442
|
-
return (unwrappedExpression.callee.type === "MemberExpression" &&
|
|
443
|
-
unwrappedExpression.callee.object.type === "Identifier" &&
|
|
444
|
-
["console", "vi"].includes(unwrappedExpression.callee.object.name));
|
|
445
|
-
}
|
|
446
|
-
function unwrapExpression(expression) {
|
|
447
|
-
if (expression?.type === "ChainExpression") {
|
|
448
|
-
return unwrapExpression(expression.expression);
|
|
449
|
-
}
|
|
450
|
-
if (expression?.type === "AwaitExpression") {
|
|
451
|
-
return expression.argument;
|
|
452
|
-
}
|
|
453
|
-
return expression;
|
|
454
|
-
}
|
|
455
|
-
function visitNode(node, callback, seenNodes = new WeakSet()) {
|
|
456
|
-
if (seenNodes.has(node)) {
|
|
457
|
-
return;
|
|
458
|
-
}
|
|
459
|
-
seenNodes.add(node);
|
|
460
|
-
callback(node);
|
|
461
|
-
for (const [key, value] of Object.entries(node)) {
|
|
462
|
-
if (key === "parent") {
|
|
463
|
-
continue;
|
|
464
|
-
}
|
|
465
|
-
if (Array.isArray(value)) {
|
|
466
|
-
for (const item of value) {
|
|
467
|
-
if (isNode(item)) {
|
|
468
|
-
visitNode(item, callback, seenNodes);
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
continue;
|
|
472
|
-
}
|
|
473
|
-
if (isNode(value)) {
|
|
474
|
-
visitNode(value, callback, seenNodes);
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
function isNode(value) {
|
|
479
|
-
return (typeof value === "object" &&
|
|
480
|
-
value !== null &&
|
|
481
|
-
"type" in value &&
|
|
482
|
-
typeof value.type === "string");
|
|
483
|
-
}
|
|
484
|
-
function isLocatedComment(comment) {
|
|
485
|
-
return (comment.loc !== null &&
|
|
486
|
-
comment.loc !== undefined &&
|
|
487
|
-
comment.range !== undefined);
|
|
488
|
-
}
|
|
489
|
-
export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, };
|
|
490
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9hYWEvYW5hbHl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxhQUFhLEdBQUc7SUFDcEIsR0FBRyxFQUFFLENBQUM7SUFDTixPQUFPLEVBQUUsQ0FBQztJQUNWLE1BQU0sRUFBRSxDQUFDO0NBQ2tDLENBQUM7QUFFOUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxZQUFZO0lBQ1osTUFBTTtJQUNOLEtBQUs7SUFDTCxNQUFNO0lBQ04sU0FBUztJQUNULE9BQU87SUFDUCxNQUFNO0lBQ04sUUFBUTtJQUNSLFNBQVM7Q0FDVixDQUFDLENBQUM7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUk3QyxDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQ2xCLHNFQUFzRSxDQUFDO0FBQ3pFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixPQUFPO0lBQ1AsSUFBSTtJQUNKLE1BQU07SUFDTixLQUFLO0lBQ0wsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixlQUFlO0lBQ2YsTUFBTTtDQUNQLENBQUMsQ0FBQztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsT0FBTztJQUNQLE9BQU87SUFDUCxVQUFVO0lBQ1YsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsT0FBTztJQUNQLFNBQVM7SUFDVCxPQUFPO0lBQ1AsS0FBSztJQUNMLFNBQVM7SUFDVCxNQUFNO0NBQ1AsQ0FBQyxDQUFDO0FBRUgsU0FBUyxnQkFBZ0IsQ0FBQyxZQUFvQjtJQUM1QyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7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QUFVLEdBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcbmltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcblxuaW1wb3J0IHR5cGUge1xuICBBYWFQaGFzZSxcbiAgTG9jYXRlZENvbW1lbnQsXG4gIExvY2F0ZWROb2RlLFxuICBTb3VyY2VDb21tZW50LFxuICBUZXN0QmxvY2tBbmFseXNpcyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuY29uc3QgYWFhUGhhc2VPcmRlciA9IHtcbiAgQWN0OiAxLFxuICBBcnJhbmdlOiAwLFxuICBBc3NlcnQ6IDIsXG59IGFzIGNvbnN0IHNhdGlzZmllcyBSZWNvcmQ8QWFhUGhhc2UsIG51bWJlcj47XG5cbmNvbnN0IGFycmF5TXV0YXRpb25NZXRob2RzID0gbmV3IFNldChbXG4gIFwiY29weVdpdGhpblwiLFxuICBcImZpbGxcIixcbiAgXCJwb3BcIixcbiAgXCJwdXNoXCIsXG4gIFwicmV2ZXJzZVwiLFxuICBcInNoaWZ0XCIsXG4gIFwic29ydFwiLFxuICBcInNwbGljZVwiLFxuICBcInVuc2hpZnRcIixcbl0pO1xuY29uc3QgcGhhc2VOYW1lcyA9IFtcIkFycmFuZ2VcIiwgXCJBY3RcIiwgXCJBc3NlcnRcIl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFtcbiAgQWFhUGhhc2UsXG4gIEFhYVBoYXNlLFxuICBBYWFQaGFzZSxcbl07XG5jb25zdCBzZXR1cExpa2VOYW1lcyA9XG4gIC9eKGFycmFuZ2V8YnVpbGR8Y3JlYXRlfGZpeHR1cmV8Z2l2ZW58bWFrZXxtb2NrfHNlZWR8c2V0dXB8c3B5fHN0dWIpL3U7XG5jb25zdCB1dGlsaXR5TWV0aG9kTmFtZXMgPSBuZXcgU2V0KFtcbiAgXCJhZHZhbmNlVGltZXJzQnlUaW1lXCIsXG4gIFwiY2xlYXJBbGxNb2Nrc1wiLFxuICBcImRlYnVnXCIsXG4gIFwiZm5cIixcbiAgXCJpbmZvXCIsXG4gIFwibG9nXCIsXG4gIFwibW9ja0ltcGxlbWVudGF0aW9uXCIsXG4gIFwibW9ja1JlamVjdGVkVmFsdWVcIixcbiAgXCJtb2NrUmVzb2x2ZWRWYWx1ZVwiLFxuICBcIm1vY2tSZXR1cm5WYWx1ZVwiLFxuICBcInJlc2V0QWxsTW9ja3NcIixcbiAgXCJ1c2VGYWtlVGltZXJzXCIsXG4gIFwid2FyblwiLFxuXSk7XG5jb25zdCB2b2lkTGlrZU1ldGhvZE5hbWVzID0gbmV3IFNldChbXG4gIFwiY2xlYXJcIixcbiAgXCJkZWJ1Z1wiLFxuICBcImRpc3BhdGNoXCIsXG4gIFwiZW1pdFwiLFxuICBcImluZm9cIixcbiAgXCJsb2dcIixcbiAgXCJwcmludFwiLFxuICBcInB1Ymxpc2hcIixcbiAgXCJyZXNldFwiLFxuICBcInNldFwiLFxuICBcInRyaWdnZXJcIixcbiAgXCJ3YXJuXCIsXG5dKTtcblxuZnVuY3Rpb24gZ2V0U2VjdGlvblBoYXNlcyhjb21tZW50VmFsdWU6IHN0cmluZyk6IEFhYVBoYXNlW10ge1xuICBjb25zdCB0cmltbWVkQ29tbWVudCA9IGNvbW1lbnRWYWx1ZS50cmltKCk7XG4gIGlmICh0cmltbWVkQ29tbWVudC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IHRyaW1tZWRDb21tZW50LnNwbGl0KC9cXHMqJlxccyovdSk7XG4gIHJldHVybiBwYXJ0cy5ldmVyeShpc0FhYVBoYXNlKSA/IHBhcnRzIDogW107XG59XG5cbmZ1bmN0aW9uIGFuYWx5emVUZXN0QmxvY2soXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IEVTVHJlZS5DYWxsRXhwcmVzc2lvbixcbik6IFRlc3RCbG9ja0FuYWx5c2lzIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdGVzdENhbGwgPSBnZXRTdXBwb3J0ZWRUZXN0Q2FsbChub2RlKTtcbiAgaWYgKHRlc3RDYWxsID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgeyBjYWxsYmFjaywgY2FsbEV4cHJlc3Npb24gfSA9IHRlc3RDYWxsO1xuICBjb25zdCB7IHNvdXJjZUNvZGUgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlY3Rpb25Db21tZW50czogVGVzdEJsb2NrQW5hbHlzaXNbXCJzZWN0aW9uQ29tbWVudHNcIl0gPSBzb3VyY2VDb2RlXG4gICAgLmdldEFsbENvbW1lbnRzKClcbiAgICAuZmlsdGVyKFxuICAgICAgKGNvbW1lbnQpID0+XG4gICAgICAgIGlzTG9jYXRlZENvbW1lbnQoY29tbWVudCkgJiZcbiAgICAgICAgY29tbWVudC50eXBlID09PSBcIkxpbmVcIiAmJlxuICAgICAgICBpc1JhbmdlV2l0aGluKGNvbW1lbnQucmFuZ2UsIGNhbGxiYWNrLmJvZHkucmFuZ2UpICYmXG4gICAgICAgIGdldFNlY3Rpb25QaGFzZXMoY29tbWVudC52YWx1ZSkubGVuZ3RoID4gMCxcbiAgICApXG4gICAgLm1hcCgoY29tbWVudCkgPT4gKHtcbiAgICAgIGNvbW1lbnQ6IGNvbW1lbnQgYXMgTG9jYXRlZENvbW1lbnQsXG4gICAgICBwaGFzZXM6IGdldFNlY3Rpb25QaGFzZXMoY29tbWVudC52YWx1ZSksXG4gICAgfSkpO1xuICBjb25zdCBmbGF0dGVuZWRTZWN0aW9ucyA9IHNlY3Rpb25Db21tZW50cy5mbGF0TWFwKChzZWN0aW9uQ29tbWVudCkgPT5cbiAgICBzZWN0aW9uQ29tbWVudC5waGFzZXMubWFwKChwaGFzZSkgPT4gKHtcbiAgICAgIGxpbmU6IHNlY3Rpb25Db21tZW50LmNvbW1lbnQubG9jLnN0YXJ0LmxpbmUsXG4gICAgICBwaGFzZSxcbiAgICB9KSksXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBib2R5OiBjYWxsYmFjay5ib2R5LFxuICAgIGJvZHlMaW5lQ291bnQ6XG4gICAgICBjYWxsYmFjay5ib2R5LmxvYy5lbmQubGluZSAtIGNhbGxiYWNrLmJvZHkubG9jLnN0YXJ0LmxpbmUgLSAxLFxuICAgIGNhbGxFeHByZXNzaW9uLFxuICAgIG5ld2xpbmU6IGdldE5ld2xpbmUoc291cmNlQ29kZS50ZXh0KSxcbiAgICBzZWN0aW9uQ29tbWVudHMsXG4gICAgc291cmNlVGV4dDogc291cmNlQ29kZS50ZXh0LFxuICAgIHN0YXRlbWVudHM6IGNhbGxiYWNrLmJvZHkuYm9keS5tYXAoKHN0YXRlbWVudCkgPT4gKHtcbiAgICAgIG5vZGU6IHN0YXRlbWVudCBhcyBMb2NhdGVkTm9kZTxFU1RyZWUuU3RhdGVtZW50PixcbiAgICAgIHBoYXNlOiBnZXRTdGF0ZW1lbnRQaGFzZShzdGF0ZW1lbnQsIGZsYXR0ZW5lZFNlY3Rpb25zKSxcbiAgICB9KSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvdW50QWN0U3RhdGVtZW50cyhhbmFseXNpczogVGVzdEJsb2NrQW5hbHlzaXMpOiBudW1iZXIge1xuICByZXR1cm4gYW5hbHlzaXMuc3RhdGVtZW50cy5maWx0ZXIoXG4gICAgKHN0YXRlbWVudCkgPT5cbiAgICAgIHN0YXRlbWVudC5waGFzZSA9PT0gXCJBY3RcIiAmJlxuICAgICAgKHN0YXRlbWVudC5ub2RlLnR5cGUgPT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiIHx8XG4gICAgICAgIHN0YXRlbWVudC5ub2RlLnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSxcbiAgKS5sZW5ndGg7XG59XG5cbmludGVyZmFjZSBBc3NlcnRpb25JZGVudGlmaWVycyB7XG4gIGFjdHVhbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBleHBlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRBc3NlcnRpb25JZGVudGlmaWVycyhcbiAgc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50LFxuKTogQXNzZXJ0aW9uSWRlbnRpZmllcnMge1xuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XG4gICAgcmV0dXJuIHsgYWN0dWFsOiB2b2lkIDAsIGV4cGVjdGVkOiB2b2lkIDAgfTtcbiAgfVxuXG4gIGNvbnN0IGV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKHN0YXRlbWVudC5leHByZXNzaW9uKTtcbiAgaWYgKGV4cHJlc3Npb24/LnR5cGUgIT09IFwiQ2FsbEV4cHJlc3Npb25cIikge1xuICAgIHJldHVybiB7IGFjdHVhbDogdm9pZCAwLCBleHBlY3RlZDogdm9pZCAwIH07XG4gIH1cblxuICBjb25zdCBleHBlY3RPcGVyYW5kcyA9IGdldEV4cGVjdE9wZXJhbmRzKGV4cHJlc3Npb24pO1xuICBpZiAoZXhwZWN0T3BlcmFuZHMgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3R1YWw6IGdldElkZW50aWZpZXJOYW1lKGV4cGVjdE9wZXJhbmRzLmFjdHVhbCksXG4gICAgICBleHBlY3RlZDogZ2V0SWRlbnRpZmllck5hbWUoZXhwZWN0T3BlcmFuZHMuZXhwZWN0ZWQpLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBhc3NlcnRPcGVyYW5kcyA9IGdldEFzc2VydE9wZXJhbmRzKGV4cHJlc3Npb24pO1xuICByZXR1cm4ge1xuICAgIGFjdHVhbDogZ2V0SWRlbnRpZmllck5hbWUoYXNzZXJ0T3BlcmFuZHM/LmFjdHVhbCksXG4gICAgZXhwZWN0ZWQ6IGdldElkZW50aWZpZXJOYW1lKGFzc2VydE9wZXJhbmRzPy5leHBlY3RlZCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMoXG4gIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcbik6IE1hcDxzdHJpbmcsIExvY2F0ZWROb2RlPEVTVHJlZS5JZGVudGlmaWVyPj4ge1xuICBjb25zdCBkZWNsYXJlZElkZW50aWZpZXJzID0gbmV3IE1hcDxzdHJpbmcsIExvY2F0ZWROb2RlPEVTVHJlZS5JZGVudGlmaWVyPj4oKTtcblxuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBhbmFseXNpcy5zdGF0ZW1lbnRzKSB7XG4gICAgaWYgKFxuICAgICAgc3RhdGVtZW50LnBoYXNlICE9PSBcIkFzc2VydFwiIHx8XG4gICAgICBzdGF0ZW1lbnQubm9kZS50eXBlICE9PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIlxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkZWNsYXJhdGlvbiBvZiBzdGF0ZW1lbnQubm9kZS5kZWNsYXJhdGlvbnMpIHtcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5pZC50eXBlID09PSBcIklkZW50aWZpZXJcIikge1xuICAgICAgICBkZWNsYXJlZElkZW50aWZpZXJzLnNldChcbiAgICAgICAgICBkZWNsYXJhdGlvbi5pZC5uYW1lLFxuICAgICAgICAgIGRlY2xhcmF0aW9uLmlkIGFzIExvY2F0ZWROb2RlPEVTVHJlZS5JZGVudGlmaWVyPixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVjbGFyZWRJZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gZ2V0RmxhdHRlbmVkU2VjdGlvbnMoXG4gIGFuYWx5c2lzOiBQaWNrPFRlc3RCbG9ja0FuYWx5c2lzLCBcInNlY3Rpb25Db21tZW50c1wiPixcbik6IEFycmF5PHsgY29tbWVudDogU291cmNlQ29tbWVudDsgcGhhc2U6IEFhYVBoYXNlIH0+IHtcbiAgcmV0dXJuIGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5mbGF0TWFwKChzZWN0aW9uQ29tbWVudCkgPT5cbiAgICBzZWN0aW9uQ29tbWVudC5waGFzZXMubWFwKChwaGFzZSkgPT4gKHtcbiAgICAgIGNvbW1lbnQ6IHNlY3Rpb25Db21tZW50LmNvbW1lbnQsXG4gICAgICBwaGFzZSxcbiAgICB9KSksXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldFBoYXNlQm91bmRhcnlDb21tZW50cyhcbiAgYW5hbHlzaXM6IFBpY2s8VGVzdEJsb2NrQW5hbHlzaXMsIFwic2VjdGlvbkNvbW1lbnRzXCI+LFxuKSB7XG4gIHJldHVybiBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHMuZmlsdGVyKChzZWN0aW9uQ29tbWVudCkgPT5cbiAgICBzZWN0aW9uQ29tbWVudC5waGFzZXMuc29tZShcbiAgICAgIChwaGFzZSkgPT4gcGhhc2UgPT09IFwiQWN0XCIgfHwgcGhhc2UgPT09IFwiQXNzZXJ0XCIsXG4gICAgKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gaGFzQXNzZXJ0aW9uKHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCk6IGJvb2xlYW4ge1xuICBsZXQgZm91bmRBc3NlcnRpb24gPSBmYWxzZTtcblxuICB2aXNpdE5vZGUoc3RhdGVtZW50LCAobm9kZSkgPT4ge1xuICAgIGlmIChub2RlLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJiBpc0Fzc2VydGlvbkNhbGwobm9kZSkpIHtcbiAgICAgIGZvdW5kQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmb3VuZEFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gaGFzQXN5bmNMb2dpYyhzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgbGV0IGZvdW5kQXN5bmNMb2dpYyA9IGZhbHNlO1xuXG4gIHZpc2l0Tm9kZShzdGF0ZW1lbnQsIChub2RlKSA9PiB7XG4gICAgaWYgKG5vZGUudHlwZSA9PT0gXCJBd2FpdEV4cHJlc3Npb25cIikge1xuICAgICAgZm91bmRBc3luY0xvZ2ljID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBub2RlLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxuICAgICAgbm9kZS5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcbiAgICAgIG5vZGUuY2FsbGVlLnByb3BlcnR5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICBbXCJjYXRjaFwiLCBcImZpbmFsbHlcIiwgXCJ0aGVuXCJdLmluY2x1ZGVzKG5vZGUuY2FsbGVlLnByb3BlcnR5Lm5hbWUpXG4gICAgKSB7XG4gICAgICBmb3VuZEFzeW5jTG9naWMgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG5vZGUudHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCIgJiZcbiAgICAgIGdldEV4cHJlc3Npb25OYW1lKG5vZGUuY2FsbGVlKSA9PT0gXCJQcm9taXNlXCJcbiAgICApIHtcbiAgICAgIGZvdW5kQXN5bmNMb2dpYyA9IHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZm91bmRBc3luY0xvZ2ljO1xufVxuXG5mdW5jdGlvbiBoYXNBd2FpdChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgbGV0IGZvdW5kQXdhaXQgPSBmYWxzZTtcblxuICB2aXNpdE5vZGUoc3RhdGVtZW50LCAobm9kZSkgPT4ge1xuICAgIGlmIChub2RlLnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIpIHtcbiAgICAgIGZvdW5kQXdhaXQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGZvdW5kQXdhaXQ7XG59XG5cbmZ1bmN0aW9uIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQoXG4gIHNvdXJjZVRleHQ6IHN0cmluZyxcbiAgY29tbWVudDogU291cmNlQ29tbWVudCxcbik6IGJvb2xlYW4ge1xuICBpZiAoIWlzTG9jYXRlZENvbW1lbnQoY29tbWVudCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVzID0gc291cmNlVGV4dC5zcGxpdCgvXFxyXFxufFxcbi91KTtcbiAgY29uc3QgcHJldmlvdXNMaW5lID0gbGluZXNbY29tbWVudC5sb2Muc3RhcnQubGluZSAtIDJdO1xuICByZXR1cm4gcHJldmlvdXNMaW5lID09PSB2b2lkIDAgfHwgcHJldmlvdXNMaW5lLnRyaW0oKS5sZW5ndGggPT09IDA7XG59XG5cbmZ1bmN0aW9uIGhhc0NhcHR1cmFibGVBY3RSZXN1bHQoc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gIGlmIChzdGF0ZW1lbnQudHlwZSAhPT0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBleHByZXNzaW9uID0gdW53cmFwRXhwcmVzc2lvbihzdGF0ZW1lbnQuZXhwcmVzc2lvbik7XG4gIGlmICghaXNBY3Rpb25FeHByZXNzaW9uKGV4cHJlc3Npb24pIHx8IGlzVXRpbGl0eUxpa2VFeHByZXNzaW9uKGV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY2FsbGVlTmFtZSA9IGdldEludm9rZWROYW1lKGV4cHJlc3Npb24pO1xuICByZXR1cm4gKFxuICAgIGNhbGxlZU5hbWUgPT09IHZvaWQgMCB8fFxuICAgICghdm9pZExpa2VNZXRob2ROYW1lcy5oYXMoY2FsbGVlTmFtZSkgJiZcbiAgICAgICEvXihjbGVhcnxkZWJ1Z3xkaXNwYXRjaHxlbWl0fGluZm98bG9nfHByaW50fHB1Ymxpc2h8cmVzZXR8c2V0fHRyaWdnZXJ8d2FybikvdS50ZXN0KFxuICAgICAgICBjYWxsZWVOYW1lLFxuICAgICAgKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gaGFzTXV0YXRpb24oc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gIGxldCBmb3VuZE11dGF0aW9uID0gZmFsc2U7XG5cbiAgdmlzaXROb2RlKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcbiAgICBpZiAoXG4gICAgICBub2RlLnR5cGUgPT09IFwiQXNzaWdubWVudEV4cHJlc3Npb25cIiB8fFxuICAgICAgbm9kZS50eXBlID09PSBcIlVwZGF0ZUV4cHJlc3Npb25cIiB8fFxuICAgICAgbm9kZS50eXBlID09PSBcIlVuYXJ5RXhwcmVzc2lvblwiXG4gICAgKSB7XG4gICAgICBpZiAobm9kZS50eXBlICE9PSBcIlVuYXJ5RXhwcmVzc2lvblwiIHx8IG5vZGUub3BlcmF0b3IgPT09IFwiZGVsZXRlXCIpIHtcbiAgICAgICAgZm91bmRNdXRhdGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiZcbiAgICAgIG5vZGUuY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXG4gICAgICBub2RlLmNhbGxlZS5wcm9wZXJ0eS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgICAgYXJyYXlNdXRhdGlvbk1ldGhvZHMuaGFzKG5vZGUuY2FsbGVlLnByb3BlcnR5Lm5hbWUpXG4gICAgKSB7XG4gICAgICBmb3VuZE11dGF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmb3VuZE11dGF0aW9uO1xufVxuXG5mdW5jdGlvbiBpc01lYW5pbmdmdWxBY3RTdGF0ZW1lbnQoc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IGV4cHJlc3Npb24gPSBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uKHN0YXRlbWVudCk7XG4gIGlmIChleHByZXNzaW9uID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGlzQWN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKSAmJlxuICAgICFpc1V0aWxpdHlMaWtlRXhwcmVzc2lvbihleHByZXNzaW9uKSAmJlxuICAgICFoYXNBc3NlcnRpb24oc3RhdGVtZW50KVxuICApO1xufVxuXG5mdW5jdGlvbiBpc1NldHVwTGlrZVN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xuICAgIHJldHVybiBzdGF0ZW1lbnQuZGVjbGFyYXRpb25zLmV2ZXJ5KChkZWNsYXJhdGlvbikgPT4ge1xuICAgICAgaWYgKGRlY2xhcmF0aW9uLmluaXQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGluaXQgPSB1bndyYXBFeHByZXNzaW9uKGRlY2xhcmF0aW9uLmluaXQpO1xuICAgICAgcmV0dXJuICFpc0FjdGlvbkV4cHJlc3Npb24oaW5pdCkgfHwgaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oaW5pdCk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBleHByZXNzaW9uID0gZ2V0U3RhdGVtZW50RXhwcmVzc2lvbihzdGF0ZW1lbnQpO1xuICByZXR1cm4gZXhwcmVzc2lvbiAhPT0gdm9pZCAwICYmIGlzVXRpbGl0eUxpa2VFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkQXNzZXJ0U3RhdGVtZW50KHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCk6IGJvb2xlYW4ge1xuICBpZiAoaGFzQXNzZXJ0aW9uKHN0YXRlbWVudCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChzdGF0ZW1lbnQudHlwZSAhPT0gXCJWYXJpYWJsZURlY2xhcmF0aW9uXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50LmRlY2xhcmF0aW9ucy5ldmVyeSgoZGVjbGFyYXRpb24pID0+IHtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gdGhlIHBhcnNlciB1c2VkIGluIHRoaXMgcmVwbyBlbWl0cyB1bmRlZmluZWQgcmF0aGVyIHRoYW4gbnVsbCBmb3IgdW5pbml0aWFsaXplZCBkZWNsYXJhdG9ycy4gKi9cbiAgICBpZiAoZGVjbGFyYXRpb24uaW5pdCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICBjb25zdCBpbml0ID0gdW53cmFwRXhwcmVzc2lvbihkZWNsYXJhdGlvbi5pbml0KTtcbiAgICByZXR1cm4gIWlzQWN0aW9uRXhwcmVzc2lvbihpbml0KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZXNQcmVmaXgobmFtZTogc3RyaW5nLCBwcmVmaXg6IFwiYWN0dWFsXCIgfCBcImV4cGVjdGVkXCIpOiBib29sZWFuIHtcbiAgcmV0dXJuIG5hbWUgPT09IHByZWZpeCB8fCBuYW1lLnN0YXJ0c1dpdGgocHJlZml4KTtcbn1cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIHZhbGlkIGFuYWx5emVyIGNhbGxlcnMgYWx3YXlzIHJlcXVlc3QgYW4gZXhpc3Rpbmcgc3RhdGVtZW50IGxpbmUuICovXG5mdW5jdGlvbiBnZXRMaW5lU3RhcnRSYW5nZShzb3VyY2VUZXh0OiBzdHJpbmcsIGxpbmU6IG51bWJlcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICBsZXQgY3VycmVudExpbmUgPSAxO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzb3VyY2VUZXh0Lmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGlmIChjdXJyZW50TGluZSA9PT0gbGluZSkge1xuICAgICAgcmV0dXJuIFtpbmRleCwgaW5kZXhdO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2VUZXh0W2luZGV4XSA9PT0gXCJcXG5cIikge1xuICAgICAgY3VycmVudExpbmUgKz0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtzb3VyY2VUZXh0Lmxlbmd0aCwgc291cmNlVGV4dC5sZW5ndGhdO1xufVxuLyogdjggaWdub3JlIHN0b3AgKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIHRoZSBpbmRlbnRhdGlvbiByZWdleCBhbHdheXMgbWF0Y2hlcywgYnV0IHRoZSBmYWxsYmFjayBrZWVwcyB0aGUgaGVscGVyIHRvdGFsLXNhZmUuICovXG5mdW5jdGlvbiBnZXRJbmRlbnRhdGlvbkF0T2Zmc2V0KHNvdXJjZVRleHQ6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBsaW5lU3RhcnQgPSBzb3VyY2VUZXh0Lmxhc3RJbmRleE9mKFwiXFxuXCIsIE1hdGgubWF4KDAsIG9mZnNldCAtIDEpKSArIDE7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBzb3VyY2VUZXh0LnNsaWNlKGxpbmVTdGFydCwgb2Zmc2V0KTtcbiAgY29uc3QgaW5kZW50YXRpb24gPSAvXlxccyovdS5leGVjKGxpbmVQcmVmaXgpO1xuICByZXR1cm4gaW5kZW50YXRpb24/LlswXSA/PyBcIlwiO1xufVxuLyogdjggaWdub3JlIHN0b3AgKi9cblxuZnVuY3Rpb24gZ2V0QXNzZXJ0T3BlcmFuZHMoZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uKTpcbiAgfCB7XG4gICAgICBhY3R1YWw6IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkO1xuICAgICAgZXhwZWN0ZWQ6IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgfCB1bmRlZmluZWQge1xuICBpZiAoXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QubmFtZSA9PT0gXCJhc3NlcnRcIlxuICApIHtcbiAgICBjb25zdCBbYWN0dWFsLCBleHBlY3RlZF0gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcbiAgICBpZiAoXG4gICAgICBhY3R1YWw/LnR5cGUgIT09IFwiU3ByZWFkRWxlbWVudFwiICYmXG4gICAgICBleHBlY3RlZD8udHlwZSAhPT0gXCJTcHJlYWRFbGVtZW50XCJcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGFjdHVhbCwgZXhwZWN0ZWQgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufVxuXG5mdW5jdGlvbiBnZXRFeHBlY3RPcGVyYW5kcyhleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pOlxuICB8IHtcbiAgICAgIGFjdHVhbDogRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQ7XG4gICAgICBleHBlY3RlZDogRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQ7XG4gICAgfVxuICB8IHVuZGVmaW5lZCB7XG4gIGlmIChcbiAgICBleHByZXNzaW9uLmNhbGxlZS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm5hbWUgPT09IFwiZXhwZWN0XCJcbiAgKSB7XG4gICAgY29uc3QgW2FjdHVhbF0gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcbiAgICByZXR1cm4gYWN0dWFsPy50eXBlID09PSBcIlNwcmVhZEVsZW1lbnRcIlxuICAgICAgPyB7IGFjdHVhbDogdm9pZCAwLCBleHBlY3RlZDogdm9pZCAwIH1cbiAgICAgIDogeyBhY3R1YWwsIGV4cGVjdGVkOiB2b2lkIDAgfTtcbiAgfVxuXG4gIGlmIChcbiAgICBleHByZXNzaW9uLmNhbGxlZS50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCJcbiAgKSB7XG4gICAgY29uc3QgbmVzdGVkT3BlcmFuZHMgPSBnZXRFeHBlY3RPcGVyYW5kcyhleHByZXNzaW9uLmNhbGxlZS5vYmplY3QpO1xuICAgIGlmIChuZXN0ZWRPcGVyYW5kcyA9PT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIGNvbnN0IFtleHBlY3RlZF0gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcbiAgICByZXR1cm4gZXhwZWN0ZWQ/LnR5cGUgPT09IFwiU3ByZWFkRWxlbWVudFwiXG4gICAgICA/IG5lc3RlZE9wZXJhbmRzXG4gICAgICA6IHsgYWN0dWFsOiBuZXN0ZWRPcGVyYW5kcy5hY3R1YWwsIGV4cGVjdGVkIH07XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gdGhlIGZhbGxiYWNrIGJyYW5jaGVzIGFyZSByZXRhaW5lZCBmb3IgaGVscGVyIHRvdGFsaXR5IGJ1dCBhcmUgbm90IHJlYWNoYWJsZSBmcm9tIGN1cnJlbnQgYW5hbHl6ZXIgZW50cnkgcG9pbnRzLiAqL1xuZnVuY3Rpb24gZ2V0RXhwcmVzc2lvbk5hbWUoXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgRVNUcmVlLlByaXZhdGVJZGVudGlmaWVyIHwgRVNUcmVlLlN1cGVyLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGV4cHJlc3Npb24udHlwZSA9PT0gXCJTdXBlclwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGlmIChleHByZXNzaW9uLnR5cGUgPT09IFwiSWRlbnRpZmllclwiKSB7XG4gICAgcmV0dXJuIGV4cHJlc3Npb24ubmFtZTtcbiAgfVxuXG4gIGlmIChcbiAgICBleHByZXNzaW9uLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXG4gICAgZXhwcmVzc2lvbi5wcm9wZXJ0eS50eXBlID09PSBcIklkZW50aWZpZXJcIlxuICApIHtcbiAgICByZXR1cm4gZXhwcmVzc2lvbi5wcm9wZXJ0eS5uYW1lO1xuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn1cbi8qIHY4IGlnbm9yZSBzdG9wICovXG5cbmZ1bmN0aW9uIGdldElkZW50aWZpZXJOYW1lKFxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBleHByZXNzaW9uPy50eXBlID09PSBcIklkZW50aWZpZXJcIiA/IGV4cHJlc3Npb24ubmFtZSA6IHZvaWQgMDtcbn1cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIGNhbGxlcnMgb25seSBhc2sgZm9yIGludm9rZWQgbmFtZXMgYWZ0ZXIgYWN0aW9uLWV4cHJlc3Npb24gY2hlY2tzIHRoYXQgbmFycm93IHRvIGNhbGwvbmV3IGV4cHJlc3Npb25zLiAqL1xuZnVuY3Rpb24gZ2V0SW52b2tlZE5hbWUoXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdW53cmFwcGVkRXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gIGlmIChcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgfHxcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIlxuICApIHtcbiAgICByZXR1cm4gZ2V0RXhwcmVzc2lvbk5hbWUodW53cmFwcGVkRXhwcmVzc2lvbi5jYWxsZWUpO1xuICB9XG4gIHJldHVybiB2b2lkIDA7XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG5mdW5jdGlvbiBnZXROZXdsaW5lKHRleHQ6IHN0cmluZyk6IFwiXFxuXCIgfCBcIlxcclxcblwiIHtcbiAgcmV0dXJuIHRleHQuaW5jbHVkZXMoXCJcXHJcXG5cIikgPyBcIlxcclxcblwiIDogXCJcXG5cIjtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhdGVtZW50RXhwcmVzc2lvbihcbiAgc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50LFxuKTogRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiKSB7XG4gICAgcmV0dXJuIHN0YXRlbWVudC5leHByZXNzaW9uO1xuICB9XG5cbiAgaWYgKFxuICAgIHN0YXRlbWVudC50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIiAmJlxuICAgIHN0YXRlbWVudC5kZWNsYXJhdGlvbnMubGVuZ3RoID09PSAxXG4gICkge1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2YWxpZCBFU1RyZWUgdmFyaWFibGUgZGVjbGFyYXRpb25zIGFsd2F5cyBjYXJyeSB0aGUgbWF0Y2hlZCBkZWNsYXJhdG9yLiAqL1xuICAgIHJldHVybiBzdGF0ZW1lbnQuZGVjbGFyYXRpb25zWzBdPy5pbml0ID8/IHZvaWQgMDtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhdGVtZW50UGhhc2UoXG4gIHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCxcbiAgZmxhdHRlbmVkU2VjdGlvbnM6IEFycmF5PHsgbGluZTogbnVtYmVyOyBwaGFzZTogQWFhUGhhc2UgfT4sXG4pOiBBYWFQaGFzZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN0YXRlbWVudExpbmUgPSBzdGF0ZW1lbnQubG9jPy5zdGFydC5saW5lO1xuICBpZiAoc3RhdGVtZW50TGluZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGxldCBjdXJyZW50UGhhc2U6IEFhYVBoYXNlIHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgZmxhdHRlbmVkU2VjdGlvbnMpIHtcbiAgICBpZiAoc2VjdGlvbi5saW5lID4gc3RhdGVtZW50TGluZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY3VycmVudFBoYXNlID0gc2VjdGlvbi5waGFzZTtcbiAgfVxuXG4gIHJldHVybiBjdXJyZW50UGhhc2U7XG59XG5cbmZ1bmN0aW9uIGdldFN1cHBvcnRlZFRlc3RDYWxsKG5vZGU6IEVTVHJlZS5DYWxsRXhwcmVzc2lvbik6XG4gIHwge1xuICAgICAgY2FsbGJhY2s6IExvY2F0ZWROb2RlPFxuICAgICAgICBFU1RyZWUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gfCBFU1RyZWUuRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgICA+ICYge1xuICAgICAgICBib2R5OiBMb2NhdGVkTm9kZTxFU1RyZWUuQmxvY2tTdGF0ZW1lbnQ+O1xuICAgICAgfTtcbiAgICAgIGNhbGxFeHByZXNzaW9uOiBMb2NhdGVkTm9kZTxFU1RyZWUuQ2FsbEV4cHJlc3Npb24+O1xuICAgIH1cbiAgfCB1bmRlZmluZWQge1xuICBjb25zdCByb290TmFtZSA9IGdldFRlc3RSb290TmFtZShub2RlLmNhbGxlZSk7XG4gIGlmIChyb290TmFtZSAhPT0gXCJpdFwiICYmIHJvb3ROYW1lICE9PSBcInRlc3RcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50ID0gbm9kZS5hcmd1bWVudHMuYXQoLTEpO1xuICBpZiAoXG4gICAgY2FsbGJhY2tBcmd1bWVudCA9PT0gdm9pZCAwIHx8XG4gICAgY2FsbGJhY2tBcmd1bWVudC50eXBlID09PSBcIlNwcmVhZEVsZW1lbnRcIiB8fFxuICAgIChjYWxsYmFja0FyZ3VtZW50LnR5cGUgIT09IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiAmJlxuICAgICAgY2FsbGJhY2tBcmd1bWVudC50eXBlICE9PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiKSB8fFxuICAgIGNhbGxiYWNrQXJndW1lbnQuYm9keS50eXBlICE9PSBcIkJsb2NrU3RhdGVtZW50XCJcbiAgKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2FsbGJhY2s6IGNhbGxiYWNrQXJndW1lbnQgYXMgTG9jYXRlZE5vZGU8XG4gICAgICBFU1RyZWUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gfCBFU1RyZWUuRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgPiAmIHsgYm9keTogTG9jYXRlZE5vZGU8RVNUcmVlLkJsb2NrU3RhdGVtZW50PiB9LFxuICAgIGNhbGxFeHByZXNzaW9uOiBub2RlIGFzIExvY2F0ZWROb2RlPEVTVHJlZS5DYWxsRXhwcmVzc2lvbj4sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFRlc3RSb290TmFtZShcbiAgY2FsbGVlOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb25bXCJjYWxsZWVcIl0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoY2FsbGVlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiKSB7XG4gICAgcmV0dXJuIGNhbGxlZS5uYW1lO1xuICB9XG5cbiAgaWYgKGNhbGxlZS50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJiBjYWxsZWUub2JqZWN0LnR5cGUgIT09IFwiU3VwZXJcIikge1xuICAgIHJldHVybiBnZXRUZXN0Um9vdE5hbWUoY2FsbGVlLm9iamVjdCBhcyBFU1RyZWUuRXhwcmVzc2lvbik7XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufVxuXG5mdW5jdGlvbiBpc0FjdGlvbkV4cHJlc3Npb24oXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHVud3JhcHBlZEV4cHJlc3Npb24gPSB1bndyYXBFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICByZXR1cm4gKFxuICAgIHVud3JhcHBlZEV4cHJlc3Npb24/LnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIgfHxcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgfHxcbiAgICB1bndyYXBwZWRFeHByZXNzaW9uPy50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIlxuICApO1xufVxuXG5mdW5jdGlvbiBpc0FhYVBoYXNlKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBBYWFQaGFzZSB7XG4gIHJldHVybiBwaGFzZU5hbWVzLmluY2x1ZGVzKHZhbHVlIGFzIEFhYVBoYXNlKTtcbn1cblxuZnVuY3Rpb24gaXNBc3NlcnRpb25DYWxsKG5vZGU6IEVTVHJlZS5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICBpZiAobm9kZS5jYWxsZWUudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIpIHtcbiAgICByZXR1cm4gbm9kZS5jYWxsZWUubmFtZSA9PT0gXCJleHBlY3RcIiB8fCBub2RlLmNhbGxlZS5uYW1lID09PSBcImFzc2VydFwiO1xuICB9XG5cbiAgaWYgKG5vZGUuY2FsbGVlLnR5cGUgIT09IFwiTWVtYmVyRXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgIG5vZGUuY2FsbGVlLm9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIG5vZGUuY2FsbGVlLm9iamVjdC5uYW1lID09PSBcImFzc2VydFwiXG4gICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKG5vZGUuY2FsbGVlLm9iamVjdC50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIpIHtcbiAgICByZXR1cm4gaXNBc3NlcnRpb25DYWxsKG5vZGUuY2FsbGVlLm9iamVjdCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzUmFuZ2VXaXRoaW4oXG4gIHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdLFxuICBjb250YWluZXI6IFtudW1iZXIsIG51bWJlcl0sXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHJhbmdlWzBdID49IGNvbnRhaW5lclswXSAmJiByYW5nZVsxXSA8PSBjb250YWluZXJbMV07XG59XG5cbmZ1bmN0aW9uIGlzVXRpbGl0eUxpa2VFeHByZXNzaW9uKFxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICBjb25zdCB1bndyYXBwZWRFeHByZXNzaW9uID0gdW53cmFwRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgaWYgKFxuICAgIHVud3JhcHBlZEV4cHJlc3Npb24/LnR5cGUgIT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxuICAgIHVud3JhcHBlZEV4cHJlc3Npb24/LnR5cGUgIT09IFwiTmV3RXhwcmVzc2lvblwiXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNhbGxlZU5hbWUgPSBnZXRFeHByZXNzaW9uTmFtZSh1bndyYXBwZWRFeHByZXNzaW9uLmNhbGxlZSk7XG4gIGlmIChjYWxsZWVOYW1lID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodXRpbGl0eU1ldGhvZE5hbWVzLmhhcyhjYWxsZWVOYW1lKSB8fCBzZXR1cExpa2VOYW1lcy50ZXN0KGNhbGxlZU5hbWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIHVud3JhcHBlZEV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXG4gICAgdW53cmFwcGVkRXhwcmVzc2lvbi5jYWxsZWUub2JqZWN0LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgW1wiY29uc29sZVwiLCBcInZpXCJdLmluY2x1ZGVzKHVud3JhcHBlZEV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC5uYW1lKVxuICApO1xufVxuXG5mdW5jdGlvbiB1bndyYXBFeHByZXNzaW9uKFxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCxcbik6IEVTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGV4cHJlc3Npb24/LnR5cGUgPT09IFwiQ2hhaW5FeHByZXNzaW9uXCIpIHtcbiAgICByZXR1cm4gdW53cmFwRXhwcmVzc2lvbihleHByZXNzaW9uLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgaWYgKGV4cHJlc3Npb24/LnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIpIHtcbiAgICByZXR1cm4gZXhwcmVzc2lvbi5hcmd1bWVudDtcbiAgfVxuXG4gIHJldHVybiBleHByZXNzaW9uO1xufVxuXG5mdW5jdGlvbiB2aXNpdE5vZGUoXG4gIG5vZGU6IEVTVHJlZS5Ob2RlLFxuICBjYWxsYmFjazogKG5vZGU6IEVTVHJlZS5Ob2RlKSA9PiB2b2lkLFxuICBzZWVuTm9kZXMgPSBuZXcgV2Vha1NldDxvYmplY3Q+KCksXG4pOiB2b2lkIHtcbiAgaWYgKHNlZW5Ob2Rlcy5oYXMobm9kZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZWVuTm9kZXMuYWRkKG5vZGUpO1xuICBjYWxsYmFjayhub2RlKTtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhub2RlKSkge1xuICAgIGlmIChrZXkgPT09IFwicGFyZW50XCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc05vZGUoaXRlbSkpIHtcbiAgICAgICAgICB2aXNpdE5vZGUoaXRlbSwgY2FsbGJhY2ssIHNlZW5Ob2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICB2aXNpdE5vZGUodmFsdWUsIGNhbGxiYWNrLCBzZWVuTm9kZXMpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc05vZGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFU1RyZWUuTm9kZSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICBcInR5cGVcIiBpbiB2YWx1ZSAmJlxuICAgIHR5cGVvZiAodmFsdWUgYXMgeyB0eXBlPzogdW5rbm93biB9KS50eXBlID09PSBcInN0cmluZ1wiXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzTG9jYXRlZENvbW1lbnQoY29tbWVudDogU291cmNlQ29tbWVudCk6IGNvbW1lbnQgaXMgTG9jYXRlZENvbW1lbnQge1xuICByZXR1cm4gKFxuICAgIGNvbW1lbnQubG9jICE9PSBudWxsICYmXG4gICAgY29tbWVudC5sb2MgIT09IHVuZGVmaW5lZCAmJlxuICAgIGNvbW1lbnQucmFuZ2UgIT09IHVuZGVmaW5lZFxuICApO1xufVxuXG5leHBvcnQge1xuICBhYWFQaGFzZU9yZGVyLFxuICBhbmFseXplVGVzdEJsb2NrLFxuICBjb3VudEFjdFN0YXRlbWVudHMsXG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBnZXRGbGF0dGVuZWRTZWN0aW9ucyxcbiAgZ2V0SW5kZW50YXRpb25BdE9mZnNldCxcbiAgZ2V0TGluZVN0YXJ0UmFuZ2UsXG4gIGdldFBoYXNlQm91bmRhcnlDb21tZW50cyxcbiAgZ2V0U2VjdGlvblBoYXNlcyxcbiAgaGFzQXNzZXJ0aW9uLFxuICBoYXNBc3luY0xvZ2ljLFxuICBoYXNBd2FpdCxcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcbiAgaGFzTXV0YXRpb24sXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCxcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXG4gIGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnQsXG4gIHVzZXNQcmVmaXgsXG59O1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/aaa/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { aaaPhaseOrder, analyzeTestBlock, countActStatements, getAssertDeclaredIdentifiers, getAssertionIdentifiers, getFlattenedSections, getIndentationAtOffset, getLineStartRange, getPhaseBoundaryComments, getSectionPhases, hasAssertion, hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, isValidAssertStatement, usesPrefix, } from "./analyzer";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9hYWEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osYUFBYSxFQUNiLFFBQVEsRUFDUix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixVQUFVLEdBQ1gsTUFBTSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBhYWFQaGFzZU9yZGVyLFxuICBhbmFseXplVGVzdEJsb2NrLFxuICBjb3VudEFjdFN0YXRlbWVudHMsXG4gIGdldEFzc2VydERlY2xhcmVkSWRlbnRpZmllcnMsXG4gIGdldEFzc2VydGlvbklkZW50aWZpZXJzLFxuICBnZXRGbGF0dGVuZWRTZWN0aW9ucyxcbiAgZ2V0SW5kZW50YXRpb25BdE9mZnNldCxcbiAgZ2V0TGluZVN0YXJ0UmFuZ2UsXG4gIGdldFBoYXNlQm91bmRhcnlDb21tZW50cyxcbiAgZ2V0U2VjdGlvblBoYXNlcyxcbiAgaGFzQXNzZXJ0aW9uLFxuICBoYXNBc3luY0xvZ2ljLFxuICBoYXNBd2FpdCxcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcbiAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCxcbiAgaGFzTXV0YXRpb24sXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCxcbiAgaXNTZXR1cExpa2VTdGF0ZW1lbnQsXG4gIGlzVmFsaWRBc3NlcnRTdGF0ZW1lbnQsXG4gIHVzZXNQcmVmaXgsXG59IGZyb20gXCIuL2FuYWx5emVyXCI7XG5leHBvcnQgdHlwZSB7XG4gIEFhYVBoYXNlLFxuICBMb2NhdGVkQ29tbWVudCxcbiAgTG9jYXRlZE5vZGUsXG4gIFNlY3Rpb25Db21tZW50LFxuICBTb3VyY2VDb21tZW50LFxuICBTdGF0ZW1lbnRQaGFzZSxcbiAgVGVzdEJsb2NrQW5hbHlzaXMsXG59IGZyb20gXCIuL3R5cGVzXCI7XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { Rule } from "eslint";
|
|
2
|
-
import type * as ESTree from "estree";
|
|
3
|
-
type AaaPhase = "Arrange" | "Act" | "Assert";
|
|
4
|
-
type SourceComment = ReturnType<Rule.RuleContext["sourceCode"]["getAllComments"]>[number];
|
|
5
|
-
type LocatedComment = SourceComment & {
|
|
6
|
-
loc: NonNullable<SourceComment["loc"]>;
|
|
7
|
-
range: [number, number];
|
|
8
|
-
};
|
|
9
|
-
type LocatedNode<TNode extends ESTree.Node = ESTree.Node> = TNode & {
|
|
10
|
-
loc: NonNullable<ESTree.Node["loc"]>;
|
|
11
|
-
range: [number, number];
|
|
12
|
-
};
|
|
13
|
-
interface SectionComment {
|
|
14
|
-
comment: LocatedComment;
|
|
15
|
-
phases: AaaPhase[];
|
|
16
|
-
}
|
|
17
|
-
interface StatementPhase {
|
|
18
|
-
node: LocatedNode<ESTree.Statement>;
|
|
19
|
-
phase: AaaPhase | undefined;
|
|
20
|
-
}
|
|
21
|
-
interface TestBlockAnalysis {
|
|
22
|
-
body: LocatedNode<ESTree.BlockStatement>;
|
|
23
|
-
bodyLineCount: number;
|
|
24
|
-
callExpression: LocatedNode<ESTree.CallExpression>;
|
|
25
|
-
newline: "\n" | "\r\n";
|
|
26
|
-
sectionComments: SectionComment[];
|
|
27
|
-
sourceText: string;
|
|
28
|
-
statements: StatementPhase[];
|
|
29
|
-
}
|
|
30
|
-
export type { AaaPhase, LocatedComment, LocatedNode, SectionComment, SourceComment, StatementPhase, TestBlockAnalysis, };
|
|
31
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/testing/aaa/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,KAAK,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE7C,KAAK,aAAa,GAAG,UAAU,CAC7B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,CACjD,CAAC,MAAM,CAAC,CAAC;AAEV,KAAK,cAAc,GAAG,aAAa,GAAG;IACpC,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB,CAAC;AAEF,KAAK,WAAW,CAAC,KAAK,SAAS,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG;IAClE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB,CAAC;AAEF,UAAU,cAAc;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACnD,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC;IACvB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,YAAY,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9hYWEvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcbmltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcblxudHlwZSBBYWFQaGFzZSA9IFwiQXJyYW5nZVwiIHwgXCJBY3RcIiB8IFwiQXNzZXJ0XCI7XG5cbnR5cGUgU291cmNlQ29tbWVudCA9IFJldHVyblR5cGU8XG4gIFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdW1wiZ2V0QWxsQ29tbWVudHNcIl1cbj5bbnVtYmVyXTtcblxudHlwZSBMb2NhdGVkQ29tbWVudCA9IFNvdXJjZUNvbW1lbnQgJiB7XG4gIGxvYzogTm9uTnVsbGFibGU8U291cmNlQ29tbWVudFtcImxvY1wiXT47XG4gIHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xufTtcblxudHlwZSBMb2NhdGVkTm9kZTxUTm9kZSBleHRlbmRzIEVTVHJlZS5Ob2RlID0gRVNUcmVlLk5vZGU+ID0gVE5vZGUgJiB7XG4gIGxvYzogTm9uTnVsbGFibGU8RVNUcmVlLk5vZGVbXCJsb2NcIl0+O1xuICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbn07XG5cbmludGVyZmFjZSBTZWN0aW9uQ29tbWVudCB7XG4gIGNvbW1lbnQ6IExvY2F0ZWRDb21tZW50O1xuICBwaGFzZXM6IEFhYVBoYXNlW107XG59XG5cbmludGVyZmFjZSBTdGF0ZW1lbnRQaGFzZSB7XG4gIG5vZGU6IExvY2F0ZWROb2RlPEVTVHJlZS5TdGF0ZW1lbnQ+O1xuICBwaGFzZTogQWFhUGhhc2UgfCB1bmRlZmluZWQ7XG59XG5cbmludGVyZmFjZSBUZXN0QmxvY2tBbmFseXNpcyB7XG4gIGJvZHk6IExvY2F0ZWROb2RlPEVTVHJlZS5CbG9ja1N0YXRlbWVudD47XG4gIGJvZHlMaW5lQ291bnQ6IG51bWJlcjtcbiAgY2FsbEV4cHJlc3Npb246IExvY2F0ZWROb2RlPEVTVHJlZS5DYWxsRXhwcmVzc2lvbj47XG4gIG5ld2xpbmU6IFwiXFxuXCIgfCBcIlxcclxcblwiO1xuICBzZWN0aW9uQ29tbWVudHM6IFNlY3Rpb25Db21tZW50W107XG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbiAgc3RhdGVtZW50czogU3RhdGVtZW50UGhhc2VbXTtcbn1cblxuZXhwb3J0IHR5cGUge1xuICBBYWFQaGFzZSxcbiAgTG9jYXRlZENvbW1lbnQsXG4gIExvY2F0ZWROb2RlLFxuICBTZWN0aW9uQ29tbWVudCxcbiAgU291cmNlQ29tbWVudCxcbiAgU3RhdGVtZW50UGhhc2UsXG4gIFRlc3RCbG9ja0FuYWx5c2lzLFxufTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/assert-actual-expected-names/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { assertActualExpectedNamesRule } from "./rule";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9hc3NlcnQtYWN0dWFsLWV4cGVjdGVkLW5hbWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGFzc2VydEFjdHVhbEV4cGVjdGVkTmFtZXNSdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/testing/assert-actual-expected-names/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAWnC,QAAA,MAAM,6BAA6B,EAAE,IAAI,CAAC,UA8DzC,CAAC;AAEF,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
|