@codeperfect/eslint-plugin 1.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/{custom-rules.d.ts → application/custom-rules.d.ts} +3 -0
- package/dist/application/custom-rules.d.ts.map +1 -0
- package/dist/application/custom-rules.js +74 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +3 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +56 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +149 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +4 -4
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +98 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +45 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +64 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +5 -4
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +87 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +145 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/index.js +4 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +90 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +91 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +4 -6
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +95 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.js +51 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +4 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +4 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/test-helpers.d.ts +48 -48
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +20 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +25 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +235 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts +19 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/types.js +2 -0
- package/dist/{architecture → domain/architecture}/index.d.ts +1 -1
- package/dist/domain/architecture/index.d.ts.map +1 -0
- package/dist/domain/architecture/index.js +2 -0
- package/dist/{core → domain/core}/index.d.ts +2 -2
- package/dist/domain/core/index.d.ts.map +1 -0
- package/dist/domain/core/index.js +3 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts +2 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/index.js +2 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +101 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +108 -0
- package/dist/{core → domain/core}/no-multiple-declarators/rule.d.ts +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +35 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.js +95 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.js +222 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +4 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts +77 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/types.js +38 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts +2 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/index.js +2 -0
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/rule.js +148 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.js +116 -0
- package/dist/{custom-rule-documentation.d.ts → domain/custom-rule-documentation.d.ts} +3 -1
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
- package/dist/domain/custom-rule-documentation.js +36 -0
- package/dist/domain/docs/index.d.ts +4 -0
- package/dist/domain/docs/index.d.ts.map +1 -0
- package/dist/domain/docs/index.js +4 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +146 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts +2 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/index.js +2 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-tags.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +101 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +125 -0
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/rule.js +171 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.js +2 -2
- package/dist/{docs → domain/docs}/no-interface-member-docs/types.d.ts +2 -2
- package/dist/domain/docs/no-interface-member-docs/types.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/types.js +2 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts +5 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/create-fixer.js +5 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.js +169 -0
- package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/example-utilities.js +76 -0
- package/dist/{docs → domain/docs}/require-example-language/examples.d.ts +1 -1
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/examples.js +181 -0
- package/dist/{docs → domain/docs}/require-example-language/fixes.d.ts +2 -2
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/fixes.js +182 -0
- package/dist/domain/docs/require-example-language/index.d.ts +3 -0
- package/dist/domain/docs/require-example-language/index.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/index.js +2 -0
- package/dist/{docs → domain/docs}/require-example-language/reporting.d.ts +1 -1
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/reporting.js +148 -0
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/rule.js +37 -0
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/types.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/index.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/rule.js +201 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
- package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
- package/dist/domain/docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/test-helpers.js +107 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +6 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts +34 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +145 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +203 -0
- package/dist/domain/testing/aaa/analyzer.analysis.js +82 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +18 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +95 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +185 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +33 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +64 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +105 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +16 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +77 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +203 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +31 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.js +4 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +15 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.js +34 -0
- package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
- package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.js +59 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts +106 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +27 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.js +66 -0
- package/dist/domain/testing/aaa/analyzer.super.js +211 -0
- package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
- package/dist/domain/testing/aaa/index.d.ts.map +1 -0
- package/dist/domain/testing/aaa/index.js +2 -0
- package/dist/domain/testing/aaa/types.d.ts +58 -0
- package/dist/domain/testing/aaa/types.d.ts.map +1 -0
- package/dist/domain/testing/aaa/types.js +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
- package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.js +116 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
- package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +37 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
- package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.js +88 -0
- package/dist/{testing → domain/testing}/index.d.ts +9 -8
- package/dist/domain/testing/index.d.ts.map +1 -0
- package/dist/domain/testing/index.js +10 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +39 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +97 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +174 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +84 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +195 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +96 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +88 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +187 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/index.js +2 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
- package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.js +134 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.js +216 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/index.js +2 -0
- package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.js +109 -0
- package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
- package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/index.js +3 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/rule.js +82 -0
- package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/types.js +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/index.js +2 -0
- package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/rule.js +37 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
- package/dist/infrastructure/codeperfect-plugin.js +30 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +4 -0
- package/dist/infrastructure/presets.d.ts +18 -0
- package/dist/infrastructure/presets.d.ts.map +1 -0
- package/dist/infrastructure/presets.js +81 -0
- package/package.json +67 -32
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
- package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
- package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/index.js +0 -4
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
- package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/rule.js +0 -58
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
- package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
- package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/types.js +0 -2
- package/dist/architecture/index.d.ts.map +0 -1
- package/dist/architecture/index.js +0 -2
- package/dist/benchmark-rules.d.ts +0 -83
- package/dist/benchmark-rules.d.ts.map +0 -1
- package/dist/benchmark-rules.js +0 -175
- package/dist/codeperfect-plugin.d.ts.map +0 -1
- package/dist/codeperfect-plugin.js +0 -29
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/no-multiple-declarators/index.d.ts +0 -2
- package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/index.js +0 -2
- package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/rule.js +0 -100
- package/dist/core/prefer-interface-types/index.d.ts +0 -2
- package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/index.js +0 -2
- package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/rule.js +0 -145
- package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/test-helpers.js +0 -116
- package/dist/custom-rule-documentation.d.ts.map +0 -1
- package/dist/custom-rule-documentation.js +0 -35
- package/dist/custom-rules.d.ts.map +0 -1
- package/dist/custom-rules.js +0 -70
- package/dist/docs/index.d.ts +0 -4
- package/dist/docs/index.d.ts.map +0 -1
- package/dist/docs/index.js +0 -4
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
- package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
- package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/index.js +0 -2
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
- package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/rule.js +0 -168
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.js +0 -2
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
- package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
- package/dist/docs/require-example-language/example-utilities.js +0 -76
- package/dist/docs/require-example-language/examples.d.ts.map +0 -1
- package/dist/docs/require-example-language/examples.js +0 -181
- package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/fixes.js +0 -182
- package/dist/docs/require-example-language/index.d.ts +0 -3
- package/dist/docs/require-example-language/index.d.ts.map +0 -1
- package/dist/docs/require-example-language/index.js +0 -2
- package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
- package/dist/docs/require-example-language/reporting.js +0 -145
- package/dist/docs/require-example-language/rule.d.ts.map +0 -1
- package/dist/docs/require-example-language/rule.js +0 -34
- package/dist/docs/require-example-language/types.d.ts.map +0 -1
- package/dist/docs/require-example-language/types.js +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/index.js +0 -2
- package/dist/docs/single-line-jsdoc/rule.d.ts +0 -5
- package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/rule.js +0 -196
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
- package/dist/docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/test-helpers.js +0 -107
- package/dist/presets.d.ts +0 -10
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -50
- package/dist/rules/index.d.ts +0 -5
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -6
- package/dist/testing/aaa/analyzer.d.ts +0 -36
- package/dist/testing/aaa/analyzer.d.ts.map +0 -1
- package/dist/testing/aaa/analyzer.js +0 -490
- package/dist/testing/aaa/index.d.ts.map +0 -1
- package/dist/testing/aaa/index.js +0 -2
- package/dist/testing/aaa/types.d.ts +0 -31
- package/dist/testing/aaa/types.d.ts.map +0 -1
- package/dist/testing/aaa/types.js +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/index.js +0 -2
- package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/rule.js +0 -54
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
- package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/index.js +0 -2
- package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/rule.js +0 -48
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -9
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
- package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
- package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
- package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
- package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
- package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/index.js +0 -2
- package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/rule.js +0 -111
- package/dist/testing/require-act-result-capture/index.d.ts +0 -2
- package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/index.js +0 -2
- package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/rule.js +0 -34
- package/dist/testing/require-test-companion/index.d.ts +0 -3
- package/dist/testing/require-test-companion/index.d.ts.map +0 -1
- package/dist/testing/require-test-companion/index.js +0 -3
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
- package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
- package/dist/testing/require-test-companion/rule.js +0 -57
- package/dist/testing/require-test-companion/types.d.ts.map +0 -1
- package/dist/testing/require-test-companion/types.js +0 -2
- package/dist/testing/single-act-statement/index.d.ts +0 -2
- package/dist/testing/single-act-statement/index.d.ts.map +0 -1
- package/dist/testing/single-act-statement/index.js +0 -2
- package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
- package/dist/testing/single-act-statement/rule.js +0 -33
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
- /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { hasRange } from "./match-helpers.js";
|
|
2
|
+
import { walkNode } from "./match-walk.js";
|
|
3
|
+
/**
|
|
4
|
+
* Adds declaration identifier range to the allowed set.
|
|
5
|
+
* @param allowedRanges Allowed range set.
|
|
6
|
+
* @param declaration Declaration to include.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const allowed = new Set<string>();
|
|
10
|
+
* addDeclarationIdRange(allowed, void 0);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function addDeclarationIdRange(allowedRanges, declaration) {
|
|
14
|
+
if (declaration !== void 0) {
|
|
15
|
+
const rangeKey = `${declaration.declarationIdRange[0]}:${declaration.declarationIdRange[1]}`;
|
|
16
|
+
allowedRanges.add(rangeKey);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns false if a binding local is used outside allowed rewrite sites.
|
|
21
|
+
* @param program Program node containing mock usage.
|
|
22
|
+
* @param allowedIdentifierRanges Identifier ranges that are safe to rewrite.
|
|
23
|
+
* @param localNames Local names tracked by the matcher.
|
|
24
|
+
* @returns True when all local usages are safe.
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const safe = areLocalsSafeToInline({ body: [], sourceType: "module", type: "Program" } as never, new Set(), new Set());
|
|
28
|
+
* void safe;
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
function areLocalsSafeToInline(program, allowedIdentifierRanges, localNames) {
|
|
32
|
+
let isSafe = true;
|
|
33
|
+
walkNode(program, (currentNode) => {
|
|
34
|
+
if (!isSafe ||
|
|
35
|
+
currentNode.type !== "Identifier" ||
|
|
36
|
+
!hasRange(currentNode)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const key = `${currentNode.range[0]}:${currentNode.range[1]}`;
|
|
40
|
+
if (localNames.has(currentNode.name) && !allowedIdentifierRanges.has(key)) {
|
|
41
|
+
isSafe = false;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return isSafe;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Builds a set of allowed identifier ranges for safe-inline validation.
|
|
48
|
+
* @param bindings Bindings list.
|
|
49
|
+
* @param declarations Declarations map.
|
|
50
|
+
* @param rewrites Member rewrites.
|
|
51
|
+
* @returns Allowed identifier range keys.
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const ranges = buildAllowedRanges([], new Map(), []);
|
|
55
|
+
* void ranges;
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
function buildAllowedRanges(bindings, declarations, rewrites) {
|
|
59
|
+
const allowedRanges = new Set();
|
|
60
|
+
for (const binding of bindings) {
|
|
61
|
+
allowedRanges.add(`${binding.propertyKeyRange[0]}:${binding.propertyKeyRange[1]}`);
|
|
62
|
+
allowedRanges.add(`${binding.propertyValueRange[0]}:${binding.propertyValueRange[1]}`);
|
|
63
|
+
addDeclarationIdRange(allowedRanges, declarations.get(binding.localName));
|
|
64
|
+
}
|
|
65
|
+
for (const rewrite of rewrites) {
|
|
66
|
+
allowedRanges.add(`${rewrite.localObjectRange[0]}:${rewrite.localObjectRange[1]}`);
|
|
67
|
+
}
|
|
68
|
+
return allowedRanges;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Collects member-expression object rewrites for `.mock*` calls.
|
|
72
|
+
* @param program Program node.
|
|
73
|
+
* @param localToExported Local to exported name map.
|
|
74
|
+
* @returns Collected member rewrites.
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const rewrites = collectMemberRewrites({ body: [], sourceType: "module", type: "Program" } as never, new Map());
|
|
78
|
+
* void rewrites;
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
function collectMemberRewrites(program, localToExported) {
|
|
82
|
+
const rewrites = [];
|
|
83
|
+
walkNode(program, (currentNode) => {
|
|
84
|
+
const rewrite = toMemberRewrite(currentNode, localToExported);
|
|
85
|
+
if (rewrite !== void 0) {
|
|
86
|
+
rewrites.push(rewrite);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
return rewrites;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Converts a node into a member rewrite when supported.
|
|
93
|
+
* @param currentNode Candidate node.
|
|
94
|
+
* @param localToExported Local to exported name map.
|
|
95
|
+
* @returns Member rewrite when node is supported.
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const rewrite = toMemberRewrite({ type: "Identifier", name: "x" } as never, new Map());
|
|
99
|
+
* void rewrite;
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
function toMemberRewrite(currentNode, localToExported) {
|
|
103
|
+
if (currentNode.type !== "MemberExpression") {
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
const { object, property } = currentNode;
|
|
107
|
+
if (object.type !== "Identifier" ||
|
|
108
|
+
!hasRange(object) ||
|
|
109
|
+
property.type !== "Identifier" ||
|
|
110
|
+
!property.name.startsWith("mock")) {
|
|
111
|
+
return void 0;
|
|
112
|
+
}
|
|
113
|
+
const exportedName = localToExported.get(object.name);
|
|
114
|
+
return exportedName === void 0
|
|
115
|
+
? void 0
|
|
116
|
+
: { exportedName, localObjectRange: object.range };
|
|
117
|
+
}
|
|
118
|
+
export { areLocalsSafeToInline, buildAllowedRanges, collectMemberRewrites };
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtcmV3cml0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvbWF0Y2gtcmV3cml0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFeEM7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsYUFBMEIsRUFDMUIsV0FBb0M7SUFFcEMsSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RixhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixPQUF1QixFQUN2Qix1QkFBb0MsRUFDcEMsVUFBdUI7SUFFdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUNoQyxJQUNFLENBQUMsTUFBTTtZQUNQLFdBQVcsQ0FBQyxJQUFJLEtBQUssWUFBWTtZQUNqQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFDdEIsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUUsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFTLGtCQUFrQixDQUN6QixRQUFtQixFQUNuQixZQUFzQyxFQUN0QyxRQUF5QjtJQUV6QixNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3hDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsYUFBYSxDQUFDLEdBQUcsQ0FDZixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDaEUsQ0FBQztRQUNGLGFBQWEsQ0FBQyxHQUFHLENBQ2YsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BFLENBQUM7UUFDRixxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixhQUFhLENBQUMsR0FBRyxDQUNmLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsT0FBdUIsRUFDdkIsZUFBb0M7SUFFcEMsTUFBTSxRQUFRLEdBQW9CLEVBQUUsQ0FBQztJQUNyQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDaEMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLGVBQWUsQ0FDdEIsV0FBd0IsRUFDeEIsZUFBb0M7SUFFcEMsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDekMsSUFDRSxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDNUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ2pCLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUM5QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUNqQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsT0FBTyxZQUFZLEtBQUssS0FBSyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3ZELENBQUM7QUFFRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcblxuaW1wb3J0IHR5cGUgeyBCaW5kaW5nLCBEZWNsYXJhdGlvbiwgTWVtYmVyUmV3cml0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IGhhc1JhbmdlIH0gZnJvbSBcIi4vbWF0Y2gtaGVscGVyc1wiO1xuaW1wb3J0IHsgd2Fsa05vZGUgfSBmcm9tIFwiLi9tYXRjaC13YWxrXCI7XG5cbi8qKlxuICogQWRkcyBkZWNsYXJhdGlvbiBpZGVudGlmaWVyIHJhbmdlIHRvIHRoZSBhbGxvd2VkIHNldC5cbiAqIEBwYXJhbSBhbGxvd2VkUmFuZ2VzIEFsbG93ZWQgcmFuZ2Ugc2V0LlxuICogQHBhcmFtIGRlY2xhcmF0aW9uIERlY2xhcmF0aW9uIHRvIGluY2x1ZGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYWxsb3dlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICogYWRkRGVjbGFyYXRpb25JZFJhbmdlKGFsbG93ZWQsIHZvaWQgMCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYWRkRGVjbGFyYXRpb25JZFJhbmdlKFxuICBhbGxvd2VkUmFuZ2VzOiBTZXQ8c3RyaW5nPixcbiAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uIHwgdW5kZWZpbmVkLFxuKTogdm9pZCB7XG4gIGlmIChkZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgY29uc3QgcmFuZ2VLZXkgPSBgJHtkZWNsYXJhdGlvbi5kZWNsYXJhdGlvbklkUmFuZ2VbMF19OiR7ZGVjbGFyYXRpb24uZGVjbGFyYXRpb25JZFJhbmdlWzFdfWA7XG4gICAgYWxsb3dlZFJhbmdlcy5hZGQocmFuZ2VLZXkpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBmYWxzZSBpZiBhIGJpbmRpbmcgbG9jYWwgaXMgdXNlZCBvdXRzaWRlIGFsbG93ZWQgcmV3cml0ZSBzaXRlcy5cbiAqIEBwYXJhbSBwcm9ncmFtIFByb2dyYW0gbm9kZSBjb250YWluaW5nIG1vY2sgdXNhZ2UuXG4gKiBAcGFyYW0gYWxsb3dlZElkZW50aWZpZXJSYW5nZXMgSWRlbnRpZmllciByYW5nZXMgdGhhdCBhcmUgc2FmZSB0byByZXdyaXRlLlxuICogQHBhcmFtIGxvY2FsTmFtZXMgTG9jYWwgbmFtZXMgdHJhY2tlZCBieSB0aGUgbWF0Y2hlci5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiBhbGwgbG9jYWwgdXNhZ2VzIGFyZSBzYWZlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNhZmUgPSBhcmVMb2NhbHNTYWZlVG9JbmxpbmUoeyBib2R5OiBbXSwgc291cmNlVHlwZTogXCJtb2R1bGVcIiwgdHlwZTogXCJQcm9ncmFtXCIgfSBhcyBuZXZlciwgbmV3IFNldCgpLCBuZXcgU2V0KCkpO1xuICogdm9pZCBzYWZlO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGFyZUxvY2Fsc1NhZmVUb0lubGluZShcbiAgcHJvZ3JhbTogRVNUcmVlLlByb2dyYW0sXG4gIGFsbG93ZWRJZGVudGlmaWVyUmFuZ2VzOiBTZXQ8c3RyaW5nPixcbiAgbG9jYWxOYW1lczogU2V0PHN0cmluZz4sXG4pOiBib29sZWFuIHtcbiAgbGV0IGlzU2FmZSA9IHRydWU7XG4gIHdhbGtOb2RlKHByb2dyYW0sIChjdXJyZW50Tm9kZSkgPT4ge1xuICAgIGlmIChcbiAgICAgICFpc1NhZmUgfHxcbiAgICAgIGN1cnJlbnROb2RlLnR5cGUgIT09IFwiSWRlbnRpZmllclwiIHx8XG4gICAgICAhaGFzUmFuZ2UoY3VycmVudE5vZGUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gYCR7Y3VycmVudE5vZGUucmFuZ2VbMF19OiR7Y3VycmVudE5vZGUucmFuZ2VbMV19YDtcbiAgICBpZiAobG9jYWxOYW1lcy5oYXMoY3VycmVudE5vZGUubmFtZSkgJiYgIWFsbG93ZWRJZGVudGlmaWVyUmFuZ2VzLmhhcyhrZXkpKSB7XG4gICAgICBpc1NhZmUgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpc1NhZmU7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgc2V0IG9mIGFsbG93ZWQgaWRlbnRpZmllciByYW5nZXMgZm9yIHNhZmUtaW5saW5lIHZhbGlkYXRpb24uXG4gKiBAcGFyYW0gYmluZGluZ3MgQmluZGluZ3MgbGlzdC5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbnMgRGVjbGFyYXRpb25zIG1hcC5cbiAqIEBwYXJhbSByZXdyaXRlcyBNZW1iZXIgcmV3cml0ZXMuXG4gKiBAcmV0dXJucyBBbGxvd2VkIGlkZW50aWZpZXIgcmFuZ2Uga2V5cy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByYW5nZXMgPSBidWlsZEFsbG93ZWRSYW5nZXMoW10sIG5ldyBNYXAoKSwgW10pO1xuICogdm9pZCByYW5nZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYnVpbGRBbGxvd2VkUmFuZ2VzKFxuICBiaW5kaW5nczogQmluZGluZ1tdLFxuICBkZWNsYXJhdGlvbnM6IE1hcDxzdHJpbmcsIERlY2xhcmF0aW9uPixcbiAgcmV3cml0ZXM6IE1lbWJlclJld3JpdGVbXSxcbik6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgYWxsb3dlZFJhbmdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGJpbmRpbmcgb2YgYmluZGluZ3MpIHtcbiAgICBhbGxvd2VkUmFuZ2VzLmFkZChcbiAgICAgIGAke2JpbmRpbmcucHJvcGVydHlLZXlSYW5nZVswXX06JHtiaW5kaW5nLnByb3BlcnR5S2V5UmFuZ2VbMV19YCxcbiAgICApO1xuICAgIGFsbG93ZWRSYW5nZXMuYWRkKFxuICAgICAgYCR7YmluZGluZy5wcm9wZXJ0eVZhbHVlUmFuZ2VbMF19OiR7YmluZGluZy5wcm9wZXJ0eVZhbHVlUmFuZ2VbMV19YCxcbiAgICApO1xuICAgIGFkZERlY2xhcmF0aW9uSWRSYW5nZShhbGxvd2VkUmFuZ2VzLCBkZWNsYXJhdGlvbnMuZ2V0KGJpbmRpbmcubG9jYWxOYW1lKSk7XG4gIH1cbiAgZm9yIChjb25zdCByZXdyaXRlIG9mIHJld3JpdGVzKSB7XG4gICAgYWxsb3dlZFJhbmdlcy5hZGQoXG4gICAgICBgJHtyZXdyaXRlLmxvY2FsT2JqZWN0UmFuZ2VbMF19OiR7cmV3cml0ZS5sb2NhbE9iamVjdFJhbmdlWzFdfWAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhbGxvd2VkUmFuZ2VzO1xufVxuXG4vKipcbiAqIENvbGxlY3RzIG1lbWJlci1leHByZXNzaW9uIG9iamVjdCByZXdyaXRlcyBmb3IgYC5tb2NrKmAgY2FsbHMuXG4gKiBAcGFyYW0gcHJvZ3JhbSBQcm9ncmFtIG5vZGUuXG4gKiBAcGFyYW0gbG9jYWxUb0V4cG9ydGVkIExvY2FsIHRvIGV4cG9ydGVkIG5hbWUgbWFwLlxuICogQHJldHVybnMgQ29sbGVjdGVkIG1lbWJlciByZXdyaXRlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXdyaXRlcyA9IGNvbGxlY3RNZW1iZXJSZXdyaXRlcyh7IGJvZHk6IFtdLCBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLCB0eXBlOiBcIlByb2dyYW1cIiB9IGFzIG5ldmVyLCBuZXcgTWFwKCkpO1xuICogdm9pZCByZXdyaXRlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjb2xsZWN0TWVtYmVyUmV3cml0ZXMoXG4gIHByb2dyYW06IEVTVHJlZS5Qcm9ncmFtLFxuICBsb2NhbFRvRXhwb3J0ZWQ6IE1hcDxzdHJpbmcsIHN0cmluZz4sXG4pOiBNZW1iZXJSZXdyaXRlW10ge1xuICBjb25zdCByZXdyaXRlczogTWVtYmVyUmV3cml0ZVtdID0gW107XG4gIHdhbGtOb2RlKHByb2dyYW0sIChjdXJyZW50Tm9kZSkgPT4ge1xuICAgIGNvbnN0IHJld3JpdGUgPSB0b01lbWJlclJld3JpdGUoY3VycmVudE5vZGUsIGxvY2FsVG9FeHBvcnRlZCk7XG4gICAgaWYgKHJld3JpdGUgIT09IHZvaWQgMCkge1xuICAgICAgcmV3cml0ZXMucHVzaChyZXdyaXRlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXdyaXRlcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIG5vZGUgaW50byBhIG1lbWJlciByZXdyaXRlIHdoZW4gc3VwcG9ydGVkLlxuICogQHBhcmFtIGN1cnJlbnROb2RlIENhbmRpZGF0ZSBub2RlLlxuICogQHBhcmFtIGxvY2FsVG9FeHBvcnRlZCBMb2NhbCB0byBleHBvcnRlZCBuYW1lIG1hcC5cbiAqIEByZXR1cm5zIE1lbWJlciByZXdyaXRlIHdoZW4gbm9kZSBpcyBzdXBwb3J0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmV3cml0ZSA9IHRvTWVtYmVyUmV3cml0ZSh7IHR5cGU6IFwiSWRlbnRpZmllclwiLCBuYW1lOiBcInhcIiB9IGFzIG5ldmVyLCBuZXcgTWFwKCkpO1xuICogdm9pZCByZXdyaXRlO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHRvTWVtYmVyUmV3cml0ZShcbiAgY3VycmVudE5vZGU6IEVTVHJlZS5Ob2RlLFxuICBsb2NhbFRvRXhwb3J0ZWQ6IE1hcDxzdHJpbmcsIHN0cmluZz4sXG4pOiBNZW1iZXJSZXdyaXRlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGN1cnJlbnROb2RlLnR5cGUgIT09IFwiTWVtYmVyRXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHsgb2JqZWN0LCBwcm9wZXJ0eSB9ID0gY3VycmVudE5vZGU7XG4gIGlmIChcbiAgICBvYmplY3QudHlwZSAhPT0gXCJJZGVudGlmaWVyXCIgfHxcbiAgICAhaGFzUmFuZ2Uob2JqZWN0KSB8fFxuICAgIHByb3BlcnR5LnR5cGUgIT09IFwiSWRlbnRpZmllclwiIHx8XG4gICAgIXByb3BlcnR5Lm5hbWUuc3RhcnRzV2l0aChcIm1vY2tcIilcbiAgKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGV4cG9ydGVkTmFtZSA9IGxvY2FsVG9FeHBvcnRlZC5nZXQob2JqZWN0Lm5hbWUpO1xuICByZXR1cm4gZXhwb3J0ZWROYW1lID09PSB2b2lkIDBcbiAgICA/IHZvaWQgMFxuICAgIDogeyBleHBvcnRlZE5hbWUsIGxvY2FsT2JqZWN0UmFuZ2U6IG9iamVjdC5yYW5nZSB9O1xufVxuXG5leHBvcnQgeyBhcmVMb2NhbHNTYWZlVG9JbmxpbmUsIGJ1aWxkQWxsb3dlZFJhbmdlcywgY29sbGVjdE1lbWJlclJld3JpdGVzIH07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-walk.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/match-walk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAqDtC;;;;;;;;GAQG;AACH,iBAAS,QAAQ,CACf,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,GAC1C,IAAI,CAKN;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns child nodes for a given AST node.
|
|
3
|
+
* @param node Source node.
|
|
4
|
+
* @returns Flattened list of child nodes.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const childNodes = getChildNodes({ type: "Program", body: [], sourceType: "module" } as never);
|
|
8
|
+
* void childNodes;
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
function getChildNodes(node) {
|
|
12
|
+
const values = Object.entries(node)
|
|
13
|
+
.filter(([key]) => key !== "parent")
|
|
14
|
+
.map(([, value]) => value);
|
|
15
|
+
return values.flatMap((value) => toNodeList(value));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Checks whether a value is an ESTree node.
|
|
19
|
+
* @param value Arbitrary value from node property iteration.
|
|
20
|
+
* @returns True when the value has node-like shape.
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const ok = isNode({ type: "Identifier", name: "x" });
|
|
24
|
+
* void ok;
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function isNode(value) {
|
|
28
|
+
return typeof value === "object" && value !== null && "type" in value;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Converts an unknown value into a list of AST nodes.
|
|
32
|
+
* @param value Arbitrary value from the AST object graph.
|
|
33
|
+
* @returns Node list extracted from arrays or single values.
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const list = toNodeList([{ type: "Identifier", name: "x" }] as never);
|
|
37
|
+
* void list;
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
function toNodeList(value) {
|
|
41
|
+
if (Array.isArray(value)) {
|
|
42
|
+
return value.filter((nodeValue) => isNode(nodeValue));
|
|
43
|
+
}
|
|
44
|
+
return isNode(value) ? [value] : [];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Visits a node and all nested child nodes.
|
|
48
|
+
* @param node Root node to visit.
|
|
49
|
+
* @param visitor Callback run for each visited node.
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* walkNode({ type: "Program", body: [], sourceType: "module" } as never, () => {});
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
function walkNode(node, visitor) {
|
|
56
|
+
visitor(node);
|
|
57
|
+
for (const childNode of getChildNodes(node)) {
|
|
58
|
+
walkNode(childNode, visitor);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export { walkNode };
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtd2Fsay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9wcmVmZXItdmktbW9ja2VkLWltcG9ydC9tYXRjaC13YWxrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsYUFBYSxDQUFDLElBQWlCO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBMEMsQ0FBQztTQUN0RSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDO1NBQ25DLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxNQUFNLENBQUMsS0FBYztJQUM1QixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUM7QUFDeEUsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsVUFBVSxDQUFDLEtBQWM7SUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUE0QixFQUFFLENBQzFELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsUUFBUSxDQUNmLElBQWlCLEVBQ2pCLE9BQTJDO0lBRTNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLEtBQUssTUFBTSxTQUFTLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDNUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0FBQ0gsQ0FBQztBQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcblxuLyoqXG4gKiBSZXR1cm5zIGNoaWxkIG5vZGVzIGZvciBhIGdpdmVuIEFTVCBub2RlLlxuICogQHBhcmFtIG5vZGUgU291cmNlIG5vZGUuXG4gKiBAcmV0dXJucyBGbGF0dGVuZWQgbGlzdCBvZiBjaGlsZCBub2Rlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjaGlsZE5vZGVzID0gZ2V0Q2hpbGROb2Rlcyh7IHR5cGU6IFwiUHJvZ3JhbVwiLCBib2R5OiBbXSwgc291cmNlVHlwZTogXCJtb2R1bGVcIiB9IGFzIG5ldmVyKTtcbiAqIHZvaWQgY2hpbGROb2RlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRDaGlsZE5vZGVzKG5vZGU6IEVTVHJlZS5Ob2RlKTogRVNUcmVlLk5vZGVbXSB7XG4gIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKG5vZGUgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSBcInBhcmVudFwiKVxuICAgIC5tYXAoKFssIHZhbHVlXSkgPT4gdmFsdWUpO1xuICByZXR1cm4gdmFsdWVzLmZsYXRNYXAoKHZhbHVlKSA9PiB0b05vZGVMaXN0KHZhbHVlKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhbiBFU1RyZWUgbm9kZS5cbiAqIEBwYXJhbSB2YWx1ZSBBcmJpdHJhcnkgdmFsdWUgZnJvbSBub2RlIHByb3BlcnR5IGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgdmFsdWUgaGFzIG5vZGUtbGlrZSBzaGFwZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvayA9IGlzTm9kZSh7IHR5cGU6IFwiSWRlbnRpZmllclwiLCBuYW1lOiBcInhcIiB9KTtcbiAqIHZvaWQgb2s7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNOb2RlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRVNUcmVlLk5vZGUge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmIFwidHlwZVwiIGluIHZhbHVlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIHVua25vd24gdmFsdWUgaW50byBhIGxpc3Qgb2YgQVNUIG5vZGVzLlxuICogQHBhcmFtIHZhbHVlIEFyYml0cmFyeSB2YWx1ZSBmcm9tIHRoZSBBU1Qgb2JqZWN0IGdyYXBoLlxuICogQHJldHVybnMgTm9kZSBsaXN0IGV4dHJhY3RlZCBmcm9tIGFycmF5cyBvciBzaW5nbGUgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpc3QgPSB0b05vZGVMaXN0KFt7IHR5cGU6IFwiSWRlbnRpZmllclwiLCBuYW1lOiBcInhcIiB9XSBhcyBuZXZlcik7XG4gKiB2b2lkIGxpc3Q7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gdG9Ob2RlTGlzdCh2YWx1ZTogdW5rbm93bik6IEVTVHJlZS5Ob2RlW10ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZmlsdGVyKChub2RlVmFsdWUpOiBub2RlVmFsdWUgaXMgRVNUcmVlLk5vZGUgPT5cbiAgICAgIGlzTm9kZShub2RlVmFsdWUpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gaXNOb2RlKHZhbHVlKSA/IFt2YWx1ZV0gOiBbXTtcbn1cblxuLyoqXG4gKiBWaXNpdHMgYSBub2RlIGFuZCBhbGwgbmVzdGVkIGNoaWxkIG5vZGVzLlxuICogQHBhcmFtIG5vZGUgUm9vdCBub2RlIHRvIHZpc2l0LlxuICogQHBhcmFtIHZpc2l0b3IgQ2FsbGJhY2sgcnVuIGZvciBlYWNoIHZpc2l0ZWQgbm9kZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB3YWxrTm9kZSh7IHR5cGU6IFwiUHJvZ3JhbVwiLCBib2R5OiBbXSwgc291cmNlVHlwZTogXCJtb2R1bGVcIiB9IGFzIG5ldmVyLCAoKSA9PiB7fSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gd2Fsa05vZGUoXG4gIG5vZGU6IEVTVHJlZS5Ob2RlLFxuICB2aXNpdG9yOiAoY3VycmVudE5vZGU6IEVTVHJlZS5Ob2RlKSA9PiB2b2lkLFxuKTogdm9pZCB7XG4gIHZpc2l0b3Iobm9kZSk7XG4gIGZvciAoY29uc3QgY2hpbGROb2RlIG9mIGdldENoaWxkTm9kZXMobm9kZSkpIHtcbiAgICB3YWxrTm9kZShjaGlsZE5vZGUsIHZpc2l0b3IpO1xuICB9XG59XG5cbmV4cG9ydCB7IHdhbGtOb2RlIH07XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Rule } from "eslint";
|
|
2
|
+
import type { RuleMatch } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Collects the first applicable rule match from the file.
|
|
5
|
+
* @param context Rule context.
|
|
6
|
+
* @returns Collected match when pattern is found.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const match = collectMatch({ sourceCode: { ast: { body: [], sourceType: "module", type: "Program" }, text: "" } } as never);
|
|
10
|
+
* void match;
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare function collectMatch(context: Rule.RuleContext): RuleMatch | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Collects every applicable rule match from the file.
|
|
16
|
+
* @param context Rule context.
|
|
17
|
+
* @returns Collected matches when patterns are found.
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const matches = collectMatches({ sourceCode: { ast: { body: [], sourceType: "module", type: "Program" }, text: "" } } as never);
|
|
21
|
+
* void matches;
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
declare function collectMatches(context: Rule.RuleContext): RuleMatch[];
|
|
25
|
+
export { collectMatch, collectMatches };
|
|
26
|
+
//# sourceMappingURL=match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAwFzC;;;;;;;;;GASG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,GAAG,SAAS,GAAG,SAAS,CAEtE;AAED;;;;;;;;;GASG;AACH,iBAAS,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,GAAG,SAAS,EAAE,CAM9D;AAmKD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { collectBindings } from "./match-bindings.js";
|
|
2
|
+
import { collectDeclarations } from "./match-declarations.js";
|
|
3
|
+
import { getFactoryReturnObject, getModuleSpecifier, getNewline, hasRange, } from "./match-helpers.js";
|
|
4
|
+
import { resolveImportPlan } from "./match-imports.js";
|
|
5
|
+
import { areLocalsSafeToInline, buildAllowedRanges, collectMemberRewrites, } from "./match-rewrites.js";
|
|
6
|
+
/**
|
|
7
|
+
* Builds a full rule match from seed data.
|
|
8
|
+
* @param context Rule context.
|
|
9
|
+
* @param program Program node.
|
|
10
|
+
* @param seed Seed data.
|
|
11
|
+
* @returns Rule match when safe.
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const match = buildMatch({ sourceCode: { text: "" } } as never, { body: [], sourceType: "module", type: "Program" } as never, { factoryObject: { properties: [], type: "ObjectExpression" }, mockStatement: { expression: { arguments: [], type: "CallExpression" }, type: "ExpressionStatement" }, moduleSpecifier: "./x", specifierExpression: { range: [0, 1], type: "Literal", value: "./x" } as never });
|
|
15
|
+
* void match;
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function buildMatch(context, program, seed) {
|
|
19
|
+
const declarations = collectDeclarations(program, context.sourceCode);
|
|
20
|
+
const bindings = collectBindings(seed.factoryObject, declarations);
|
|
21
|
+
if (bindings.length === 0) {
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
const memberRewrites = collectMemberRewrites(program, toLocalMap(bindings));
|
|
25
|
+
const localNames = new Set(bindings.map((binding) => binding.localName));
|
|
26
|
+
const allowedRanges = buildAllowedRanges(bindings, declarations, memberRewrites);
|
|
27
|
+
if (!areLocalsSafeToInline(program, allowedRanges, localNames)) {
|
|
28
|
+
return void 0;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
bindings,
|
|
32
|
+
declarations,
|
|
33
|
+
importPlan: resolveImportPlan(program, seed.moduleSpecifier, getImportNames(bindings)),
|
|
34
|
+
memberRewrites,
|
|
35
|
+
mockSpecifierIsImportExpression: seed.specifierExpression.type === "ImportExpression",
|
|
36
|
+
mockSpecifierRange: seed.specifierExpression.range,
|
|
37
|
+
moduleSpecifier: seed.moduleSpecifier,
|
|
38
|
+
newline: getNewline(context.sourceCode.text),
|
|
39
|
+
node: seed.mockStatement,
|
|
40
|
+
sourceText: context.sourceCode.text,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Collects the first applicable rule match from the file.
|
|
45
|
+
* @param context Rule context.
|
|
46
|
+
* @returns Collected match when pattern is found.
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const match = collectMatch({ sourceCode: { ast: { body: [], sourceType: "module", type: "Program" }, text: "" } } as never);
|
|
50
|
+
* void match;
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
function collectMatch(context) {
|
|
54
|
+
return collectMatches(context)[0];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Collects every applicable rule match from the file.
|
|
58
|
+
* @param context Rule context.
|
|
59
|
+
* @returns Collected matches when patterns are found.
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const matches = collectMatches({ sourceCode: { ast: { body: [], sourceType: "module", type: "Program" }, text: "" } } as never);
|
|
63
|
+
* void matches;
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
function collectMatches(context) {
|
|
67
|
+
const program = context.sourceCode.ast;
|
|
68
|
+
return collectSeeds(program)
|
|
69
|
+
.map((seed) => buildMatch(context, program, seed))
|
|
70
|
+
.filter((match) => match !== void 0);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Collects seed data for every supported mock statement in the file.
|
|
74
|
+
* @param program Program node.
|
|
75
|
+
* @returns Match seeds.
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const seeds = collectSeeds({ body: [], sourceType: "module", type: "Program" } as never);
|
|
79
|
+
* void seeds;
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
function collectSeeds(program) {
|
|
83
|
+
if (!Array.isArray(program.body)) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
return program.body.flatMap((statement) => {
|
|
87
|
+
const expression = getMockCallExpression(statement);
|
|
88
|
+
if (expression === void 0) {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
const callArguments = getMockCallArguments(expression);
|
|
92
|
+
if (callArguments === void 0) {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const seed = createSeed(statement, callArguments[0], callArguments[1]);
|
|
96
|
+
return seed === void 0 ? [] : [seed];
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Creates seed data from validated call arguments.
|
|
101
|
+
* @param mockStatement Matched `vi.mock` statement.
|
|
102
|
+
* @param specifierExpression First argument expression.
|
|
103
|
+
* @param factoryExpression Factory callback expression.
|
|
104
|
+
* @returns Match seed when arguments are supported.
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const seed = createSeed({ expression: { arguments: [], type: "CallExpression" }, type: "ExpressionStatement" } as never, { type: "Literal", value: "./x" } as never, { body: { properties: [], type: "ObjectExpression" }, type: "ArrowFunctionExpression" } as never);
|
|
108
|
+
* void seed;
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
function createSeed(mockStatement, specifierExpression, factoryExpression) {
|
|
112
|
+
if (!hasRange(specifierExpression)) {
|
|
113
|
+
return void 0;
|
|
114
|
+
}
|
|
115
|
+
const moduleSpecifier = getModuleSpecifier(specifierExpression);
|
|
116
|
+
const factoryObject = getFactoryReturnObject(factoryExpression);
|
|
117
|
+
return moduleSpecifier === void 0 || factoryObject === void 0
|
|
118
|
+
? void 0
|
|
119
|
+
: { factoryObject, mockStatement, moduleSpecifier, specifierExpression };
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Returns sorted unique import names from bindings.
|
|
123
|
+
* @param bindings Bindings list.
|
|
124
|
+
* @returns Sorted import names.
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* const names = getImportNames([]);
|
|
128
|
+
* void names;
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
function getImportNames(bindings) {
|
|
132
|
+
return [
|
|
133
|
+
...new Set(bindings.map((binding) => binding.exportedName)),
|
|
134
|
+
].toSorted();
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Returns mock call arguments when both arguments are supported expressions.
|
|
138
|
+
* @param expression Call expression node.
|
|
139
|
+
* @returns First and second call arguments.
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* const args = getMockCallArguments({ arguments: [], type: "CallExpression" } as never);
|
|
143
|
+
* void args;
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
function getMockCallArguments(expression) {
|
|
147
|
+
const [firstArgument, secondArgument] = expression.arguments;
|
|
148
|
+
if (firstArgument === void 0 || secondArgument === void 0) {
|
|
149
|
+
return void 0;
|
|
150
|
+
}
|
|
151
|
+
if (firstArgument.type === "SpreadElement" ||
|
|
152
|
+
secondArgument.type === "SpreadElement") {
|
|
153
|
+
return void 0;
|
|
154
|
+
}
|
|
155
|
+
return [firstArgument, secondArgument];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Returns the call expression for a supported mock statement.
|
|
159
|
+
* @param statement Candidate statement.
|
|
160
|
+
* @returns Supported mock call expression when present.
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* const expression = getMockCallExpression({ type: "EmptyStatement" } as never);
|
|
164
|
+
* void expression;
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
function getMockCallExpression(statement) {
|
|
168
|
+
if (statement.type !== "ExpressionStatement") {
|
|
169
|
+
return void 0;
|
|
170
|
+
}
|
|
171
|
+
const { expression } = statement;
|
|
172
|
+
if (expression.type !== "CallExpression" ||
|
|
173
|
+
expression.callee.type !== "MemberExpression") {
|
|
174
|
+
return void 0;
|
|
175
|
+
}
|
|
176
|
+
const { object, property } = expression.callee;
|
|
177
|
+
return object.type === "Identifier" &&
|
|
178
|
+
object.name === "vi" &&
|
|
179
|
+
property.type === "Identifier" &&
|
|
180
|
+
(property.name === "mock" || property.name === "doMock")
|
|
181
|
+
? expression
|
|
182
|
+
: void 0;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Creates local-to-exported mapping from bindings.
|
|
186
|
+
* @param bindings Bindings list.
|
|
187
|
+
* @returns Mapping used for rewrite lookup.
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* const map = toLocalMap([]);
|
|
191
|
+
* void map;
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
function toLocalMap(bindings) {
|
|
195
|
+
return new Map(bindings.map((binding) => [binding.localName, binding.exportedName]));
|
|
196
|
+
}
|
|
197
|
+
export { collectMatch, collectMatches };
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvbWF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixRQUFRLEdBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixxQkFBcUIsR0FDdEIsTUFBTSxrQkFBa0IsQ0FBQztBQW9CMUI7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFTLFVBQVUsQ0FDakIsT0FBeUIsRUFDekIsT0FBdUIsRUFDdkIsSUFBZTtJQUVmLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbkUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6RSxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FDdEMsUUFBUSxFQUNSLFlBQVksRUFDWixjQUFjLENBQ2YsQ0FBQztJQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTztRQUNMLFFBQVE7UUFDUixZQUFZO1FBQ1osVUFBVSxFQUFFLGlCQUFpQixDQUMzQixPQUFPLEVBQ1AsSUFBSSxDQUFDLGVBQWUsRUFDcEIsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUN6QjtRQUNELGNBQWM7UUFDZCwrQkFBK0IsRUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksS0FBSyxrQkFBa0I7UUFDdEQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUs7UUFDbEQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1FBQ3JDLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFxQztRQUNoRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBeUI7SUFDN0MsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsY0FBYyxDQUFDLE9BQXlCO0lBQy9DLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBcUIsQ0FBQztJQUV6RCxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUM7U0FDekIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNqRCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQXNCLEVBQUUsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBdUI7SUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBELElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQ3JCLFNBQXVDLEVBQ3ZDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBRUYsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQVMsVUFBVSxDQUNqQixhQUF5QyxFQUN6QyxtQkFBc0MsRUFDdEMsaUJBQW9DO0lBRXBDLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEUsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRSxPQUFPLGVBQWUsS0FBSyxLQUFLLENBQUMsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDO1FBQzNELENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0FBQzdFLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxRQUErQjtJQUNyRCxPQUFPO1FBQ0wsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDNUQsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLG9CQUFvQixDQUMzQixVQUFpQztJQUVqQyxNQUFNLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDN0QsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDLElBQUksY0FBYyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFDRSxhQUFhLENBQUMsSUFBSSxLQUFLLGVBQWU7UUFDdEMsY0FBYyxDQUFDLElBQUksS0FBSyxlQUFlLEVBQ3ZDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixTQUF5QztJQUV6QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLElBQ0UsVUFBVSxDQUFDLElBQUksS0FBSyxnQkFBZ0I7UUFDcEMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQzdDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDL0MsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDakMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJO1FBQ3BCLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUM5QixDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO1FBQ3hELENBQUMsQ0FBQyxVQUFVO1FBQ1osQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsVUFBVSxDQUFDLFFBQStCO0lBQ2pELE9BQU8sSUFBSSxHQUFHLENBQ1osUUFBUSxDQUFDLEdBQUcsQ0FDVixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQVUsQ0FDaEUsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XG5cbmltcG9ydCB0eXBlIHsgUnVsZU1hdGNoIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgY29sbGVjdEJpbmRpbmdzIH0gZnJvbSBcIi4vbWF0Y2gtYmluZGluZ3NcIjtcbmltcG9ydCB7IGNvbGxlY3REZWNsYXJhdGlvbnMgfSBmcm9tIFwiLi9tYXRjaC1kZWNsYXJhdGlvbnNcIjtcbmltcG9ydCB7XG4gIGdldEZhY3RvcnlSZXR1cm5PYmplY3QsXG4gIGdldE1vZHVsZVNwZWNpZmllcixcbiAgZ2V0TmV3bGluZSxcbiAgaGFzUmFuZ2UsXG59IGZyb20gXCIuL21hdGNoLWhlbHBlcnNcIjtcbmltcG9ydCB7IHJlc29sdmVJbXBvcnRQbGFuIH0gZnJvbSBcIi4vbWF0Y2gtaW1wb3J0c1wiO1xuaW1wb3J0IHtcbiAgYXJlTG9jYWxzU2FmZVRvSW5saW5lLFxuICBidWlsZEFsbG93ZWRSYW5nZXMsXG4gIGNvbGxlY3RNZW1iZXJSZXdyaXRlcyxcbn0gZnJvbSBcIi4vbWF0Y2gtcmV3cml0ZXNcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIE1hdGNoU2VlZCB7XG4gIC8qKiBSZXR1cm5lZCBvYmplY3QgZXhwcmVzc2lvbiBmcm9tIHRoZSBtb2NrIGZhY3RvcnkuICovXG4gIGZhY3RvcnlPYmplY3Q6IEVTVHJlZS5PYmplY3RFeHByZXNzaW9uO1xuXG4gIC8qKiBFeHByZXNzaW9uIHN0YXRlbWVudCBjb250YWluaW5nIGB2aS5tb2NrYCBvciBgdmkuZG9Nb2NrYC4gKi9cbiAgbW9ja1N0YXRlbWVudDogRVNUcmVlLkV4cHJlc3Npb25TdGF0ZW1lbnQ7XG5cbiAgLyoqIE1vZHVsZSBwYXRoIHN0cmluZyBleHRyYWN0ZWQgZnJvbSB0aGUgZmlyc3QgbW9jayBhcmd1bWVudC4gKi9cbiAgbW9kdWxlU3BlY2lmaWVyOiBzdHJpbmc7XG5cbiAgLyoqIE9yaWdpbmFsIGZpcnN0IGFyZ3VtZW50IG5vZGUsIGluY2x1ZGluZyBgcmFuZ2VgLCBmb3IgZml4ZXIgdXNlLiAqL1xuICBzcGVjaWZpZXJFeHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiAmIHtcbiAgICAvKiogU291cmNlIHJhbmdlIGZvciB0aGUgbW9jayBzcGVjaWZpZXIgZXhwcmVzc2lvbi4gKi9cbiAgICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBmdWxsIHJ1bGUgbWF0Y2ggZnJvbSBzZWVkIGRhdGEuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGNvbnRleHQuXG4gKiBAcGFyYW0gcHJvZ3JhbSBQcm9ncmFtIG5vZGUuXG4gKiBAcGFyYW0gc2VlZCBTZWVkIGRhdGEuXG4gKiBAcmV0dXJucyBSdWxlIG1hdGNoIHdoZW4gc2FmZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXRjaCA9IGJ1aWxkTWF0Y2goeyBzb3VyY2VDb2RlOiB7IHRleHQ6IFwiXCIgfSB9IGFzIG5ldmVyLCB7IGJvZHk6IFtdLCBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLCB0eXBlOiBcIlByb2dyYW1cIiB9IGFzIG5ldmVyLCB7IGZhY3RvcnlPYmplY3Q6IHsgcHJvcGVydGllczogW10sIHR5cGU6IFwiT2JqZWN0RXhwcmVzc2lvblwiIH0sIG1vY2tTdGF0ZW1lbnQ6IHsgZXhwcmVzc2lvbjogeyBhcmd1bWVudHM6IFtdLCB0eXBlOiBcIkNhbGxFeHByZXNzaW9uXCIgfSwgdHlwZTogXCJFeHByZXNzaW9uU3RhdGVtZW50XCIgfSwgbW9kdWxlU3BlY2lmaWVyOiBcIi4veFwiLCBzcGVjaWZpZXJFeHByZXNzaW9uOiB7IHJhbmdlOiBbMCwgMV0sIHR5cGU6IFwiTGl0ZXJhbFwiLCB2YWx1ZTogXCIuL3hcIiB9IGFzIG5ldmVyIH0pO1xuICogdm9pZCBtYXRjaDtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZE1hdGNoKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBwcm9ncmFtOiBFU1RyZWUuUHJvZ3JhbSxcbiAgc2VlZDogTWF0Y2hTZWVkLFxuKTogUnVsZU1hdGNoIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVjbGFyYXRpb25zID0gY29sbGVjdERlY2xhcmF0aW9ucyhwcm9ncmFtLCBjb250ZXh0LnNvdXJjZUNvZGUpO1xuICBjb25zdCBiaW5kaW5ncyA9IGNvbGxlY3RCaW5kaW5ncyhzZWVkLmZhY3RvcnlPYmplY3QsIGRlY2xhcmF0aW9ucyk7XG4gIGlmIChiaW5kaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgbWVtYmVyUmV3cml0ZXMgPSBjb2xsZWN0TWVtYmVyUmV3cml0ZXMocHJvZ3JhbSwgdG9Mb2NhbE1hcChiaW5kaW5ncykpO1xuICBjb25zdCBsb2NhbE5hbWVzID0gbmV3IFNldChiaW5kaW5ncy5tYXAoKGJpbmRpbmcpID0+IGJpbmRpbmcubG9jYWxOYW1lKSk7XG4gIGNvbnN0IGFsbG93ZWRSYW5nZXMgPSBidWlsZEFsbG93ZWRSYW5nZXMoXG4gICAgYmluZGluZ3MsXG4gICAgZGVjbGFyYXRpb25zLFxuICAgIG1lbWJlclJld3JpdGVzLFxuICApO1xuICBpZiAoIWFyZUxvY2Fsc1NhZmVUb0lubGluZShwcm9ncmFtLCBhbGxvd2VkUmFuZ2VzLCBsb2NhbE5hbWVzKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpbmRpbmdzLFxuICAgIGRlY2xhcmF0aW9ucyxcbiAgICBpbXBvcnRQbGFuOiByZXNvbHZlSW1wb3J0UGxhbihcbiAgICAgIHByb2dyYW0sXG4gICAgICBzZWVkLm1vZHVsZVNwZWNpZmllcixcbiAgICAgIGdldEltcG9ydE5hbWVzKGJpbmRpbmdzKSxcbiAgICApLFxuICAgIG1lbWJlclJld3JpdGVzLFxuICAgIG1vY2tTcGVjaWZpZXJJc0ltcG9ydEV4cHJlc3Npb246XG4gICAgICBzZWVkLnNwZWNpZmllckV4cHJlc3Npb24udHlwZSA9PT0gXCJJbXBvcnRFeHByZXNzaW9uXCIsXG4gICAgbW9ja1NwZWNpZmllclJhbmdlOiBzZWVkLnNwZWNpZmllckV4cHJlc3Npb24ucmFuZ2UsXG4gICAgbW9kdWxlU3BlY2lmaWVyOiBzZWVkLm1vZHVsZVNwZWNpZmllcixcbiAgICBuZXdsaW5lOiBnZXROZXdsaW5lKGNvbnRleHQuc291cmNlQ29kZS50ZXh0KSxcbiAgICBub2RlOiBzZWVkLm1vY2tTdGF0ZW1lbnQgYXMgdW5rbm93biBhcyBSdWxlLk5vZGUsXG4gICAgc291cmNlVGV4dDogY29udGV4dC5zb3VyY2VDb2RlLnRleHQsXG4gIH07XG59XG5cbi8qKlxuICogQ29sbGVjdHMgdGhlIGZpcnN0IGFwcGxpY2FibGUgcnVsZSBtYXRjaCBmcm9tIHRoZSBmaWxlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBjb250ZXh0LlxuICogQHJldHVybnMgQ29sbGVjdGVkIG1hdGNoIHdoZW4gcGF0dGVybiBpcyBmb3VuZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXRjaCA9IGNvbGxlY3RNYXRjaCh7IHNvdXJjZUNvZGU6IHsgYXN0OiB7IGJvZHk6IFtdLCBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLCB0eXBlOiBcIlByb2dyYW1cIiB9LCB0ZXh0OiBcIlwiIH0gfSBhcyBuZXZlcik7XG4gKiB2b2lkIG1hdGNoO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RNYXRjaChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZU1hdGNoIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGNvbGxlY3RNYXRjaGVzKGNvbnRleHQpWzBdO1xufVxuXG4vKipcbiAqIENvbGxlY3RzIGV2ZXJ5IGFwcGxpY2FibGUgcnVsZSBtYXRjaCBmcm9tIHRoZSBmaWxlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBjb250ZXh0LlxuICogQHJldHVybnMgQ29sbGVjdGVkIG1hdGNoZXMgd2hlbiBwYXR0ZXJucyBhcmUgZm91bmQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWF0Y2hlcyA9IGNvbGxlY3RNYXRjaGVzKHsgc291cmNlQ29kZTogeyBhc3Q6IHsgYm9keTogW10sIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsIHR5cGU6IFwiUHJvZ3JhbVwiIH0sIHRleHQ6IFwiXCIgfSB9IGFzIG5ldmVyKTtcbiAqIHZvaWQgbWF0Y2hlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjb2xsZWN0TWF0Y2hlcyhjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZU1hdGNoW10ge1xuICBjb25zdCBwcm9ncmFtID0gY29udGV4dC5zb3VyY2VDb2RlLmFzdCBhcyBFU1RyZWUuUHJvZ3JhbTtcblxuICByZXR1cm4gY29sbGVjdFNlZWRzKHByb2dyYW0pXG4gICAgLm1hcCgoc2VlZCkgPT4gYnVpbGRNYXRjaChjb250ZXh0LCBwcm9ncmFtLCBzZWVkKSlcbiAgICAuZmlsdGVyKChtYXRjaCk6IG1hdGNoIGlzIFJ1bGVNYXRjaCA9PiBtYXRjaCAhPT0gdm9pZCAwKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyBzZWVkIGRhdGEgZm9yIGV2ZXJ5IHN1cHBvcnRlZCBtb2NrIHN0YXRlbWVudCBpbiB0aGUgZmlsZS5cbiAqIEBwYXJhbSBwcm9ncmFtIFByb2dyYW0gbm9kZS5cbiAqIEByZXR1cm5zIE1hdGNoIHNlZWRzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlZWRzID0gY29sbGVjdFNlZWRzKHsgYm9keTogW10sIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsIHR5cGU6IFwiUHJvZ3JhbVwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBzZWVkcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjb2xsZWN0U2VlZHMocHJvZ3JhbTogRVNUcmVlLlByb2dyYW0pOiBNYXRjaFNlZWRbXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShwcm9ncmFtLmJvZHkpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIHByb2dyYW0uYm9keS5mbGF0TWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICBjb25zdCBleHByZXNzaW9uID0gZ2V0TW9ja0NhbGxFeHByZXNzaW9uKHN0YXRlbWVudCk7XG5cbiAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgY2FsbEFyZ3VtZW50cyA9IGdldE1vY2tDYWxsQXJndW1lbnRzKGV4cHJlc3Npb24pO1xuXG4gICAgaWYgKGNhbGxBcmd1bWVudHMgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHNlZWQgPSBjcmVhdGVTZWVkKFxuICAgICAgc3RhdGVtZW50IGFzIEVTVHJlZS5FeHByZXNzaW9uU3RhdGVtZW50LFxuICAgICAgY2FsbEFyZ3VtZW50c1swXSxcbiAgICAgIGNhbGxBcmd1bWVudHNbMV0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWVkID09PSB2b2lkIDAgPyBbXSA6IFtzZWVkXTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBzZWVkIGRhdGEgZnJvbSB2YWxpZGF0ZWQgY2FsbCBhcmd1bWVudHMuXG4gKiBAcGFyYW0gbW9ja1N0YXRlbWVudCBNYXRjaGVkIGB2aS5tb2NrYCBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gc3BlY2lmaWVyRXhwcmVzc2lvbiBGaXJzdCBhcmd1bWVudCBleHByZXNzaW9uLlxuICogQHBhcmFtIGZhY3RvcnlFeHByZXNzaW9uIEZhY3RvcnkgY2FsbGJhY2sgZXhwcmVzc2lvbi5cbiAqIEByZXR1cm5zIE1hdGNoIHNlZWQgd2hlbiBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzZWVkID0gY3JlYXRlU2VlZCh7IGV4cHJlc3Npb246IHsgYXJndW1lbnRzOiBbXSwgdHlwZTogXCJDYWxsRXhwcmVzc2lvblwiIH0sIHR5cGU6IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiIH0gYXMgbmV2ZXIsIHsgdHlwZTogXCJMaXRlcmFsXCIsIHZhbHVlOiBcIi4veFwiIH0gYXMgbmV2ZXIsIHsgYm9keTogeyBwcm9wZXJ0aWVzOiBbXSwgdHlwZTogXCJPYmplY3RFeHByZXNzaW9uXCIgfSwgdHlwZTogXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBzZWVkO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNlZWQoXG4gIG1vY2tTdGF0ZW1lbnQ6IEVTVHJlZS5FeHByZXNzaW9uU3RhdGVtZW50LFxuICBzcGVjaWZpZXJFeHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbixcbiAgZmFjdG9yeUV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uLFxuKTogTWF0Y2hTZWVkIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFoYXNSYW5nZShzcGVjaWZpZXJFeHByZXNzaW9uKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBnZXRNb2R1bGVTcGVjaWZpZXIoc3BlY2lmaWVyRXhwcmVzc2lvbik7XG4gIGNvbnN0IGZhY3RvcnlPYmplY3QgPSBnZXRGYWN0b3J5UmV0dXJuT2JqZWN0KGZhY3RvcnlFeHByZXNzaW9uKTtcbiAgcmV0dXJuIG1vZHVsZVNwZWNpZmllciA9PT0gdm9pZCAwIHx8IGZhY3RvcnlPYmplY3QgPT09IHZvaWQgMFxuICAgID8gdm9pZCAwXG4gICAgOiB7IGZhY3RvcnlPYmplY3QsIG1vY2tTdGF0ZW1lbnQsIG1vZHVsZVNwZWNpZmllciwgc3BlY2lmaWVyRXhwcmVzc2lvbiB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgc29ydGVkIHVuaXF1ZSBpbXBvcnQgbmFtZXMgZnJvbSBiaW5kaW5ncy5cbiAqIEBwYXJhbSBiaW5kaW5ncyBCaW5kaW5ncyBsaXN0LlxuICogQHJldHVybnMgU29ydGVkIGltcG9ydCBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lcyA9IGdldEltcG9ydE5hbWVzKFtdKTtcbiAqIHZvaWQgbmFtZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0SW1wb3J0TmFtZXMoYmluZGluZ3M6IFJ1bGVNYXRjaFtcImJpbmRpbmdzXCJdKTogc3RyaW5nW10ge1xuICByZXR1cm4gW1xuICAgIC4uLm5ldyBTZXQoYmluZGluZ3MubWFwKChiaW5kaW5nKSA9PiBiaW5kaW5nLmV4cG9ydGVkTmFtZSkpLFxuICBdLnRvU29ydGVkKCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBtb2NrIGNhbGwgYXJndW1lbnRzIHdoZW4gYm90aCBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZCBleHByZXNzaW9ucy5cbiAqIEBwYXJhbSBleHByZXNzaW9uIENhbGwgZXhwcmVzc2lvbiBub2RlLlxuICogQHJldHVybnMgRmlyc3QgYW5kIHNlY29uZCBjYWxsIGFyZ3VtZW50cy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhcmdzID0gZ2V0TW9ja0NhbGxBcmd1bWVudHMoeyBhcmd1bWVudHM6IFtdLCB0eXBlOiBcIkNhbGxFeHByZXNzaW9uXCIgfSBhcyBuZXZlcik7XG4gKiB2b2lkIGFyZ3M7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0TW9ja0NhbGxBcmd1bWVudHMoXG4gIGV4cHJlc3Npb246IEVTVHJlZS5DYWxsRXhwcmVzc2lvbixcbik6IFtFU1RyZWUuRXhwcmVzc2lvbiwgRVNUcmVlLkV4cHJlc3Npb25dIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgW2ZpcnN0QXJndW1lbnQsIHNlY29uZEFyZ3VtZW50XSA9IGV4cHJlc3Npb24uYXJndW1lbnRzO1xuICBpZiAoZmlyc3RBcmd1bWVudCA9PT0gdm9pZCAwIHx8IHNlY29uZEFyZ3VtZW50ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGlmIChcbiAgICBmaXJzdEFyZ3VtZW50LnR5cGUgPT09IFwiU3ByZWFkRWxlbWVudFwiIHx8XG4gICAgc2Vjb25kQXJndW1lbnQudHlwZSA9PT0gXCJTcHJlYWRFbGVtZW50XCJcbiAgKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBbZmlyc3RBcmd1bWVudCwgc2Vjb25kQXJndW1lbnRdO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGNhbGwgZXhwcmVzc2lvbiBmb3IgYSBzdXBwb3J0ZWQgbW9jayBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gc3RhdGVtZW50IENhbmRpZGF0ZSBzdGF0ZW1lbnQuXG4gKiBAcmV0dXJucyBTdXBwb3J0ZWQgbW9jayBjYWxsIGV4cHJlc3Npb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGV4cHJlc3Npb24gPSBnZXRNb2NrQ2FsbEV4cHJlc3Npb24oeyB0eXBlOiBcIkVtcHR5U3RhdGVtZW50XCIgfSBhcyBuZXZlcik7XG4gKiB2b2lkIGV4cHJlc3Npb247XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0TW9ja0NhbGxFeHByZXNzaW9uKFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXVtudW1iZXJdLFxuKTogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCB7IGV4cHJlc3Npb24gfSA9IHN0YXRlbWVudDtcbiAgaWYgKFxuICAgIGV4cHJlc3Npb24udHlwZSAhPT0gXCJDYWxsRXhwcmVzc2lvblwiIHx8XG4gICAgZXhwcmVzc2lvbi5jYWxsZWUudHlwZSAhPT0gXCJNZW1iZXJFeHByZXNzaW9uXCJcbiAgKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHsgb2JqZWN0LCBwcm9wZXJ0eSB9ID0gZXhwcmVzc2lvbi5jYWxsZWU7XG4gIHJldHVybiBvYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICBvYmplY3QubmFtZSA9PT0gXCJ2aVwiICYmXG4gICAgcHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAocHJvcGVydHkubmFtZSA9PT0gXCJtb2NrXCIgfHwgcHJvcGVydHkubmFtZSA9PT0gXCJkb01vY2tcIilcbiAgICA/IGV4cHJlc3Npb25cbiAgICA6IHZvaWQgMDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGxvY2FsLXRvLWV4cG9ydGVkIG1hcHBpbmcgZnJvbSBiaW5kaW5ncy5cbiAqIEBwYXJhbSBiaW5kaW5ncyBCaW5kaW5ncyBsaXN0LlxuICogQHJldHVybnMgTWFwcGluZyB1c2VkIGZvciByZXdyaXRlIGxvb2t1cC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXAgPSB0b0xvY2FsTWFwKFtdKTtcbiAqIHZvaWQgbWFwO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHRvTG9jYWxNYXAoYmluZGluZ3M6IFJ1bGVNYXRjaFtcImJpbmRpbmdzXCJdKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gIHJldHVybiBuZXcgTWFwKFxuICAgIGJpbmRpbmdzLm1hcChcbiAgICAgIChiaW5kaW5nKSA9PiBbYmluZGluZy5sb2NhbE5hbWUsIGJpbmRpbmcuZXhwb3J0ZWROYW1lXSBhcyBjb25zdCxcbiAgICApLFxuICApO1xufVxuXG5leHBvcnQgeyBjb2xsZWN0TWF0Y2gsIGNvbGxlY3RNYXRjaGVzIH07XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Linter } from "eslint";
|
|
2
|
+
/** Type definition for rule data. */
|
|
3
|
+
interface FixRunResult {
|
|
4
|
+
/** Lint messages produced during the run. */
|
|
5
|
+
messages: Linter.LintMessage[];
|
|
6
|
+
/** Output code after fixes. */
|
|
7
|
+
output: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Runs the prefer-vi-mocked-import rule with autofix enabled.
|
|
11
|
+
* @param code Input code.
|
|
12
|
+
* @returns Fixed output and messages.
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const result = runFix("const value = 1;\n");
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare const runFix: (code: string) => FixRunResult;
|
|
19
|
+
export { runFix };
|
|
20
|
+
//# sourceMappingURL=rule-test-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/rule-test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,qCAAqC;AACrC,UAAU,YAAY;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAE/B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,QAAA,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,YA8B9B,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Linter } from "eslint";
|
|
2
|
+
import { parser } from "typescript-eslint";
|
|
3
|
+
import { preferViMockedImportRule } from "./rule.js";
|
|
4
|
+
/**
|
|
5
|
+
* Runs the prefer-vi-mocked-import rule with autofix enabled.
|
|
6
|
+
* @param code Input code.
|
|
7
|
+
* @returns Fixed output and messages.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const result = runFix("const value = 1;\n");
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
const runFix = (code) => {
|
|
14
|
+
const linter = new Linter({ configType: "flat" });
|
|
15
|
+
const result = linter.verifyAndFix(code, [
|
|
16
|
+
{
|
|
17
|
+
files: ["**/*.ts"],
|
|
18
|
+
languageOptions: {
|
|
19
|
+
ecmaVersion: 2022,
|
|
20
|
+
parser,
|
|
21
|
+
parserOptions: { range: true },
|
|
22
|
+
sourceType: "module",
|
|
23
|
+
},
|
|
24
|
+
plugins: {
|
|
25
|
+
codeperfect: {
|
|
26
|
+
rules: {
|
|
27
|
+
"prefer-vi-mocked-import": preferViMockedImportRule,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
rules: {
|
|
32
|
+
"codeperfect/prefer-vi-mocked-import": "error",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
], { filename: "example.spec.ts" });
|
|
36
|
+
return { messages: result.messages, output: result.output };
|
|
37
|
+
};
|
|
38
|
+
export { runFix };
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS10ZXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvcnVsZS10ZXN0LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBV2xEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQWdCLEVBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVsRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUNoQyxJQUFJLEVBQ0o7UUFDRTtZQUNFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNsQixlQUFlLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE1BQU07Z0JBQ04sYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDOUIsVUFBVSxFQUFFLFFBQVE7YUFDckI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFO29CQUNYLEtBQUssRUFBRTt3QkFDTCx5QkFBeUIsRUFBRSx3QkFBd0I7cUJBQ3BEO2lCQUNGO2FBQ0Y7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wscUNBQXFDLEVBQUUsT0FBTzthQUMvQztTQUNGO0tBQ0YsRUFDRCxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUNoQyxDQUFDO0lBRUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xyXG5pbXBvcnQgeyBwYXJzZXIgfSBmcm9tIFwidHlwZXNjcmlwdC1lc2xpbnRcIjtcclxuXHJcbmltcG9ydCB7IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcclxuXHJcbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cclxuaW50ZXJmYWNlIEZpeFJ1blJlc3VsdCB7XHJcbiAgLyoqIExpbnQgbWVzc2FnZXMgcHJvZHVjZWQgZHVyaW5nIHRoZSBydW4uICovXHJcbiAgbWVzc2FnZXM6IExpbnRlci5MaW50TWVzc2FnZVtdO1xyXG5cclxuICAvKiogT3V0cHV0IGNvZGUgYWZ0ZXIgZml4ZXMuICovXHJcbiAgb3V0cHV0OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSdW5zIHRoZSBwcmVmZXItdmktbW9ja2VkLWltcG9ydCBydWxlIHdpdGggYXV0b2ZpeCBlbmFibGVkLlxyXG4gKiBAcGFyYW0gY29kZSBJbnB1dCBjb2RlLlxyXG4gKiBAcmV0dXJucyBGaXhlZCBvdXRwdXQgYW5kIG1lc3NhZ2VzLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IHJlc3VsdCA9IHJ1bkZpeChcImNvbnN0IHZhbHVlID0gMTtcXG5cIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgcnVuRml4ID0gKGNvZGU6IHN0cmluZyk6IEZpeFJ1blJlc3VsdCA9PiB7XHJcbiAgY29uc3QgbGludGVyID0gbmV3IExpbnRlcih7IGNvbmZpZ1R5cGU6IFwiZmxhdFwiIH0pO1xyXG5cclxuICBjb25zdCByZXN1bHQgPSBsaW50ZXIudmVyaWZ5QW5kRml4KFxyXG4gICAgY29kZSxcclxuICAgIFtcclxuICAgICAge1xyXG4gICAgICAgIGZpbGVzOiBbXCIqKi8qLnRzXCJdLFxyXG4gICAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xyXG4gICAgICAgICAgZWNtYVZlcnNpb246IDIwMjIsXHJcbiAgICAgICAgICBwYXJzZXIsXHJcbiAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7IHJhbmdlOiB0cnVlIH0sXHJcbiAgICAgICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgICAgY29kZXBlcmZlY3Q6IHtcclxuICAgICAgICAgICAgcnVsZXM6IHtcclxuICAgICAgICAgICAgICBcInByZWZlci12aS1tb2NrZWQtaW1wb3J0XCI6IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBydWxlczoge1xyXG4gICAgICAgICAgXCJjb2RlcGVyZmVjdC9wcmVmZXItdmktbW9ja2VkLWltcG9ydFwiOiBcImVycm9yXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB7IGZpbGVuYW1lOiBcImV4YW1wbGUuc3BlYy50c1wiIH0sXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHsgbWVzc2FnZXM6IHJlc3VsdC5tZXNzYWdlcywgb3V0cHV0OiByZXN1bHQub3V0cHV0IH07XHJcbn07XHJcblxyXG5leHBvcnQgeyBydW5GaXggfTtcclxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,6EAA6E;AAC7E,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UAuCpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { buildFixes } from "./fix.js";
|
|
2
|
+
import { collectMatches } from "./match.js";
|
|
3
|
+
/** Enforce inline `vi.fn()` mocks inside `vi.mock`/`vi.doMock` factories. */
|
|
4
|
+
const preferViMockedImportRule = {
|
|
5
|
+
create(context) {
|
|
6
|
+
return {
|
|
7
|
+
Program: () => {
|
|
8
|
+
const matches = collectMatches(context);
|
|
9
|
+
if (matches.length === 0) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
for (const [index, match] of matches.entries()) {
|
|
13
|
+
context.report({
|
|
14
|
+
fix: index === 0
|
|
15
|
+
? (fixer) => buildFixes(matches, fixer)
|
|
16
|
+
: void 0,
|
|
17
|
+
messageId: "preferViMockedImport",
|
|
18
|
+
node: match.node,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
meta: {
|
|
25
|
+
docs: {
|
|
26
|
+
description: "Prefer inlining vi.fn mocks in vi.mock/vi.doMock factories and using vi.mocked(...).",
|
|
27
|
+
recommended: false,
|
|
28
|
+
url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/prefer-vi-mocked-import.md",
|
|
29
|
+
},
|
|
30
|
+
fixable: "code",
|
|
31
|
+
messages: {
|
|
32
|
+
preferViMockedImport: "Inline vi.fn mocks in the vi.mock/vi.doMock factory and use vi.mocked(...) for calls.",
|
|
33
|
+
},
|
|
34
|
+
schema: [],
|
|
35
|
+
type: "suggestion",
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
export { preferViMockedImportRule };
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9wcmVmZXItdmktbW9ja2VkLWltcG9ydC9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDbkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6Qyw2RUFBNkU7QUFDN0UsTUFBTSx3QkFBd0IsR0FBb0I7SUFDaEQsTUFBTSxDQUFDLE9BQXlCO1FBQzlCLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBUyxFQUFFO2dCQUNsQixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXhDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDekIsT0FBTztnQkFDVCxDQUFDO2dCQUVELEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixHQUFHLEVBQ0QsS0FBSyxLQUFLLENBQUM7NEJBQ1QsQ0FBQyxDQUFDLENBQUMsS0FBcUIsRUFBYyxFQUFFLENBQ3BDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDOzRCQUM5QixDQUFDLENBQUMsS0FBSyxDQUFDO3dCQUNaLFNBQVMsRUFBRSxzQkFBc0I7d0JBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtxQkFDakIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxzRkFBc0Y7WUFDeEYsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDBGQUEwRjtTQUNoRztRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsUUFBUSxFQUFFO1lBQ1Isb0JBQW9CLEVBQ2xCLHVGQUF1RjtTQUMxRjtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGJ1aWxkRml4ZXMgfSBmcm9tIFwiLi9maXhcIjtcbmltcG9ydCB7IGNvbGxlY3RNYXRjaGVzIH0gZnJvbSBcIi4vbWF0Y2hcIjtcblxuLyoqIEVuZm9yY2UgaW5saW5lIGB2aS5mbigpYCBtb2NrcyBpbnNpZGUgYHZpLm1vY2tgL2B2aS5kb01vY2tgIGZhY3Rvcmllcy4gKi9cbmNvbnN0IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgUHJvZ3JhbTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gY29sbGVjdE1hdGNoZXMoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIG1hdGNoXSBvZiBtYXRjaGVzLmVudHJpZXMoKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIGZpeDpcbiAgICAgICAgICAgICAgaW5kZXggPT09IDBcbiAgICAgICAgICAgICAgICA/IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeFtdID0+XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkRml4ZXMobWF0Y2hlcywgZml4ZXIpXG4gICAgICAgICAgICAgICAgOiB2b2lkIDAsXG4gICAgICAgICAgICBtZXNzYWdlSWQ6IFwicHJlZmVyVmlNb2NrZWRJbXBvcnRcIixcbiAgICAgICAgICAgIG5vZGU6IG1hdGNoLm5vZGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgUnVsZS5SdWxlTGlzdGVuZXI7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQcmVmZXIgaW5saW5pbmcgdmkuZm4gbW9ja3MgaW4gdmkubW9jay92aS5kb01vY2sgZmFjdG9yaWVzIGFuZCB1c2luZyB2aS5tb2NrZWQoLi4uKS5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3ByZWZlci12aS1tb2NrZWQtaW1wb3J0Lm1kXCIsXG4gICAgfSxcbiAgICBmaXhhYmxlOiBcImNvZGVcIixcbiAgICBtZXNzYWdlczoge1xuICAgICAgcHJlZmVyVmlNb2NrZWRJbXBvcnQ6XG4gICAgICAgIFwiSW5saW5lIHZpLmZuIG1vY2tzIGluIHRoZSB2aS5tb2NrL3ZpLmRvTW9jayBmYWN0b3J5IGFuZCB1c2UgdmkubW9ja2VkKC4uLikgZm9yIGNhbGxzLlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSB9O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/prefer-vi-mocked-import/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qCAAqC;AACrC,UAAU,OAAO;IACf,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IAErB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAElB,mDAAmD;IACnD,gBAAgB,EAAE,KAAK,CAAC;IAExB,oDAAoD;IACpD,aAAa,EAAE,KAAK,CAAC;IAErB,kEAAkE;IAClE,kBAAkB,EAAE,KAAK,CAAC;CAC3B;AAED,qCAAqC;AACrC,UAAU,WAAW;IACnB,4EAA4E;IAC5E,kBAAkB,EAAE,KAAK,CAAC;IAE1B,mEAAmE;IACnE,gBAAgB,EAAE,KAAK,CAAC;IAExB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,cAAc,EAAE,KAAK,CAAC;CACvB;AAED,qCAAqC;AACrC,UAAU,gBAAgB;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,qCAAqC;AACrC,UAAU,UAAU;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,qCAAqC;AACrC,UAAU,gBAAgB;IACxB,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAE/B,gDAAgD;IAChD,KAAK,EAAE,KAAK,CAAC;CACd;AAED,qCAAqC;AACrC,UAAU,aAAa;IACrB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IAErB,oEAAoE;IACpE,gBAAgB,EAAE,KAAK,CAAC;CACzB;AAED,qCAAqC;AACrC,UAAU,SAAS;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB,kCAAkC;IAClC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEvC,oCAAoC;IACpC,UAAU,EAAE,UAAU,CAAC;IAEvB,qDAAqD;IACrD,cAAc,EAAE,aAAa,EAAE,CAAC;IAEhC,+DAA+D;IAC/D,+BAA+B,EAAE,OAAO,CAAC;IAEzC,4DAA4D;IAC5D,kBAAkB,EAAE,KAAK,CAAC;IAE1B,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC;IAEvB,iCAAiC;IACjC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;IAEhB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcHJlZmVyLXZpLW1vY2tlZC1pbXBvcnQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBSYW5nZSB9IGZyb20gXCIuL21hdGNoLWhlbHBlcnNcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEJpbmRpbmcge1xuICAvKiogTmFtZSBvZiB0aGUgbW9ja2VkIGV4cG9ydCAob2JqZWN0IHByb3BlcnR5IGtleSkuICovXG4gIGV4cG9ydGVkTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBMb2NhbCB2YXJpYWJsZSBuYW1lIHJlZmVyZW5jZWQgaW4gdGhlIG1vY2sgZmFjdG9yeSBvYmplY3QuICovXG4gIGxvY2FsTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBSYW5nZSBvZiB0aGUgb2JqZWN0IHByb3BlcnR5IGtleSBpZGVudGlmaWVyLiAqL1xuICBwcm9wZXJ0eUtleVJhbmdlOiBSYW5nZTtcblxuICAvKiogRnVsbCByYW5nZSBvZiB0aGUgb2JqZWN0IHByb3BlcnR5IHRvIHJlcGxhY2UuICovXG4gIHByb3BlcnR5UmFuZ2U6IFJhbmdlO1xuXG4gIC8qKiBSYW5nZSBvZiB0aGUgaWRlbnRpZmllciB0aGF0IHJlZmVyZW5jZXMgdGhlIGxvY2FsIHZhcmlhYmxlLiAqL1xuICBwcm9wZXJ0eVZhbHVlUmFuZ2U6IFJhbmdlO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgRGVjbGFyYXRpb24ge1xuICAvKiogUmFuZ2Ugb2YgdGhlIGlkZW50aWZpZXIgYmVpbmcgZGVjbGFyZWQgKGUuZy4gYHhgIGluIGBjb25zdCB4ID0gLi4uYCkuICovXG4gIGRlY2xhcmF0aW9uSWRSYW5nZTogUmFuZ2U7XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBpbml0aWFsaXplciBleHByZXNzaW9uICh0aGUgYHZpLmZuKC4uLilgIGNhbGwpLiAqL1xuICBpbml0aWFsaXplclJhbmdlOiBSYW5nZTtcblxuICAvKiogTG9jYWwgdmFyaWFibGUgbmFtZS4gKi9cbiAgbG9jYWxOYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBmdWxsIHN0YXRlbWVudCB0byByZW1vdmUuICovXG4gIHN0YXRlbWVudFJhbmdlOiBSYW5nZTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEltcG9ydEluc2VydFBsYW4ge1xuICAvKiogUmFuZ2Ugb2YgdGhlIGxhc3QgaW1wb3J0IHN0YXRlbWVudCwgd2hlbiBwcmVzZW50LiAqL1xuICBhZnRlclJhbmdlPzogUmFuZ2U7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBJbXBvcnRQbGFuIHtcbiAgLyoqIEluc2VydCBwbGFuIHdoZW4gbm8gY29tcGF0aWJsZSBpbXBvcnQgZXhpc3RzLiAqL1xuICBpbnNlcnQ/OiBJbXBvcnRJbnNlcnRQbGFuO1xuXG4gIC8qKiBNb2R1bGUgc3BlY2lmaWVyIHRvIGltcG9ydCBmcm9tLiAqL1xuICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZztcblxuICAvKiogTmFtZXMgdGhhdCBtdXN0IGJlIGltcG9ydGVkIGZyb20gdGhlIG1vZHVsZS4gKi9cbiAgbmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8qKiBVcGRhdGUgcGxhbiB3aGVuIGFuIGltcG9ydCBjYW4gYmUgdXBkYXRlZCBpbi1wbGFjZS4gKi9cbiAgdXBkYXRlPzogSW1wb3J0VXBkYXRlUGxhbjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEltcG9ydFVwZGF0ZVBsYW4ge1xuICAvKiogRGVmYXVsdCBpbXBvcnQgbG9jYWwgbmFtZSwgd2hlbiBwcmVzZW50LiAqL1xuICBkZWZhdWx0SW1wb3J0TmFtZT86IHN0cmluZztcblxuICAvKiogRXhpc3RpbmcgbmFtZWQgaW1wb3J0cyBmcm9tIHRoZSBtb2R1bGUuICovXG4gIGV4aXN0aW5nTmFtZWRJbXBvcnRzOiBzdHJpbmdbXTtcblxuICAvKiogUmFuZ2Ugb2YgdGhlIGltcG9ydCBzdGF0ZW1lbnQgdG8gcmVwbGFjZS4gKi9cbiAgcmFuZ2U6IFJhbmdlO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgTWVtYmVyUmV3cml0ZSB7XG4gIC8qKiBFeHBvcnRlZCBuYW1lIHRvIHVzZSBpbnNpZGUgYHZpLm1vY2tlZCguLi4pYC4gKi9cbiAgZXhwb3J0ZWROYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBpZGVudGlmaWVyIHVzZWQgYXMgdGhlIG1lbWJlci1leHByZXNzaW9uIG9iamVjdC4gKi9cbiAgbG9jYWxPYmplY3RSYW5nZTogUmFuZ2U7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSdWxlTWF0Y2gge1xuICAvKiogQmluZGluZ3MgdGhhdCBjYW4gYmUgaW5saW5lZCBpbnRvIHRoZSBtb2NrIGZhY3RvcnkuICovXG4gIGJpbmRpbmdzOiBCaW5kaW5nW107XG5cbiAgLyoqIERlY2xhcmF0aW9ucyBieSBsb2NhbCBuYW1lLiAqL1xuICBkZWNsYXJhdGlvbnM6IE1hcDxzdHJpbmcsIERlY2xhcmF0aW9uPjtcblxuICAvKiogSW1wb3J0IGluc2VydGlvbi91cGRhdGUgcGxhbi4gKi9cbiAgaW1wb3J0UGxhbjogSW1wb3J0UGxhbjtcblxuICAvKiogTWVtYmVyLWV4cHJlc3Npb24gcmV3cml0ZXMgZm9yIGAubW9jaypgIGNhbGxzLiAqL1xuICBtZW1iZXJSZXdyaXRlczogTWVtYmVyUmV3cml0ZVtdO1xuXG4gIC8qKiBUcnVlIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFscmVhZHkgYGltcG9ydChcIi4uLlwiKWAuICovXG4gIG1vY2tTcGVjaWZpZXJJc0ltcG9ydEV4cHJlc3Npb246IGJvb2xlYW47XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCB0byBgdmkubW9ja2AvYHZpLmRvTW9ja2AuICovXG4gIG1vY2tTcGVjaWZpZXJSYW5nZTogUmFuZ2U7XG5cbiAgLyoqIE1vZHVsZSBzcGVjaWZpZXIgYmVpbmcgbW9ja2VkLiAqL1xuICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZztcblxuICAvKiogUHJlZmVycmVkIG5ld2xpbmUgc2VxdWVuY2UgdXNlZCBieSB0aGUgZmlsZS4gKi9cbiAgbmV3bGluZTogXCJcXG5cIiB8IFwiXFxyXFxuXCI7XG5cbiAgLyoqIE5vZGUgdG8gdXNlIGZvciByZXBvcnRpbmcuICovXG4gIG5vZGU6IFJ1bGUuTm9kZTtcblxuICAvKiogRnVsbCBzb3VyY2UgdGV4dC4gKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSB7IEJpbmRpbmcsIERlY2xhcmF0aW9uLCBJbXBvcnRQbGFuLCBNZW1iZXJSZXdyaXRlLCBSdWxlTWF0Y2ggfTtcbiJdfQ==
|