@codeperfect/eslint-plugin 1.0.0 → 2.0.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 +140 -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 +85 -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 +43 -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 +219 -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 +145 -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} +1 -1
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
- package/dist/domain/custom-rule-documentation.js +35 -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 +168 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.js +157 -0
- 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 +34 -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.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 +196 -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 +92 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.js +247 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +93 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +283 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +75 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +201 -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.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 +107 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.js +228 -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 +113 -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.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 +34 -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 +85 -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 +36 -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 +86 -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 +150 -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 +81 -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 +189 -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 +92 -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 +62 -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 +203 -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 +129 -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 +217 -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 +106 -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 +57 -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 +34 -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 +54 -27
- 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/test-helpers.js +0 -157
- 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.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/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
- /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
|
@@ -1,62 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtd2Fsay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL3ByZWZlci12aS1tb2NrZWQtaW1wb3J0L21hdGNoLXdhbGsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxhQUFhLENBQUMsSUFBaUI7SUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUEwQyxDQUFDO1NBQ3RFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUM7U0FDbkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLE1BQU0sQ0FBQyxLQUFjO0lBQzVCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQztBQUN4RSxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxVQUFVLENBQUMsS0FBYztJQUNoQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQTRCLEVBQUUsQ0FDMUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxRQUFRLENBQ2YsSUFBaUIsRUFDakIsT0FBMkM7SUFFM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2QsS0FBSyxNQUFNLFNBQVMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7QUFDSCxDQUFDO0FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG4vKipcbiAqIFJldHVybnMgY2hpbGQgbm9kZXMgZm9yIGEgZ2l2ZW4gQVNUIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBTb3VyY2Ugbm9kZS5cbiAqIEByZXR1cm5zIEZsYXR0ZW5lZCBsaXN0IG9mIGNoaWxkIG5vZGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNoaWxkTm9kZXMgPSBnZXRDaGlsZE5vZGVzKHsgdHlwZTogXCJQcm9ncmFtXCIsIGJvZHk6IFtdLCBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBjaGlsZE5vZGVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldENoaWxkTm9kZXMobm9kZTogRVNUcmVlLk5vZGUpOiBFU1RyZWUuTm9kZVtdIHtcbiAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmVudHJpZXMobm9kZSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09IFwicGFyZW50XCIpXG4gICAgLm1hcCgoWywgdmFsdWVdKSA9PiB2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZXMuZmxhdE1hcCgodmFsdWUpID0+IHRvTm9kZUxpc3QodmFsdWUpKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGFuIEVTVHJlZSBub2RlLlxuICogQHBhcmFtIHZhbHVlIEFyYml0cmFyeSB2YWx1ZSBmcm9tIG5vZGUgcHJvcGVydHkgaXRlcmF0aW9uLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSB2YWx1ZSBoYXMgbm9kZS1saWtlIHNoYXBlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNOb2RlKHsgdHlwZTogXCJJZGVudGlmaWVyXCIsIG5hbWU6IFwieFwiIH0pO1xuICogdm9pZCBvaztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc05vZGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFU1RyZWUuTm9kZSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgXCJ0eXBlXCIgaW4gdmFsdWU7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gdW5rbm93biB2YWx1ZSBpbnRvIGEgbGlzdCBvZiBBU1Qgbm9kZXMuXG4gKiBAcGFyYW0gdmFsdWUgQXJiaXRyYXJ5IHZhbHVlIGZyb20gdGhlIEFTVCBvYmplY3QgZ3JhcGguXG4gKiBAcmV0dXJucyBOb2RlIGxpc3QgZXh0cmFjdGVkIGZyb20gYXJyYXlzIG9yIHNpbmdsZSB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGlzdCA9IHRvTm9kZUxpc3QoW3sgdHlwZTogXCJJZGVudGlmaWVyXCIsIG5hbWU6IFwieFwiIH1dIGFzIG5ldmVyKTtcbiAqIHZvaWQgbGlzdDtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB0b05vZGVMaXN0KHZhbHVlOiB1bmtub3duKTogRVNUcmVlLk5vZGVbXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5maWx0ZXIoKG5vZGVWYWx1ZSk6IG5vZGVWYWx1ZSBpcyBFU1RyZWUuTm9kZSA9PlxuICAgICAgaXNOb2RlKG5vZGVWYWx1ZSksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBpc05vZGUodmFsdWUpID8gW3ZhbHVlXSA6IFtdO1xufVxuXG4vKipcbiAqIFZpc2l0cyBhIG5vZGUgYW5kIGFsbCBuZXN0ZWQgY2hpbGQgbm9kZXMuXG4gKiBAcGFyYW0gbm9kZSBSb290IG5vZGUgdG8gdmlzaXQuXG4gKiBAcGFyYW0gdmlzaXRvciBDYWxsYmFjayBydW4gZm9yIGVhY2ggdmlzaXRlZCBub2RlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHdhbGtOb2RlKHsgdHlwZTogXCJQcm9ncmFtXCIsIGJvZHk6IFtdLCBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiIH0gYXMgbmV2ZXIsICgpID0+IHt9KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB3YWxrTm9kZShcbiAgbm9kZTogRVNUcmVlLk5vZGUsXG4gIHZpc2l0b3I6IChjdXJyZW50Tm9kZTogRVNUcmVlLk5vZGUpID0+IHZvaWQsXG4pOiB2b2lkIHtcbiAgdmlzaXRvcihub2RlKTtcbiAgZm9yIChjb25zdCBjaGlsZE5vZGUgb2YgZ2V0Q2hpbGROb2Rlcyhub2RlKSkge1xuICAgIHdhbGtOb2RlKGNoaWxkTm9kZSwgdmlzaXRvcik7XG4gIH1cbn1cblxuZXhwb3J0IHsgd2Fsa05vZGUgfTtcbiJdfQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Rule } from "eslint";
|
|
2
|
-
import type { RuleMatch } from "./types";
|
|
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
|
-
export { collectMatch };
|
|
15
|
-
//# sourceMappingURL=match.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../src/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,CAItE;AA6KD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import { collectBindings } from "./match-bindings";
|
|
2
|
-
import { collectDeclarations } from "./match-declarations";
|
|
3
|
-
import { getFactoryReturnObject, getModuleSpecifier, getNewline, hasRange, } from "./match-helpers";
|
|
4
|
-
import { resolveImportPlan } from "./match-imports";
|
|
5
|
-
import { areLocalsSafeToInline, buildAllowedRanges, collectMemberRewrites, } from "./match-rewrites";
|
|
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
|
-
const program = context.sourceCode.ast;
|
|
55
|
-
const seed = collectSeed(program);
|
|
56
|
-
return seed === void 0 ? void 0 : buildMatch(context, program, seed);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Collects seed data needed to build a full match.
|
|
60
|
-
* @param program Program node.
|
|
61
|
-
* @returns Match seed.
|
|
62
|
-
* @example
|
|
63
|
-
* ```typescript
|
|
64
|
-
* const seed = collectSeed({ body: [], sourceType: "module", type: "Program" } as never);
|
|
65
|
-
* void seed;
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
function collectSeed(program) {
|
|
69
|
-
const mockStatement = findMockStatement(program);
|
|
70
|
-
if (mockStatement === void 0) {
|
|
71
|
-
return void 0;
|
|
72
|
-
}
|
|
73
|
-
const { expression } = mockStatement;
|
|
74
|
-
if (expression.type !== "CallExpression") {
|
|
75
|
-
return void 0;
|
|
76
|
-
}
|
|
77
|
-
const callArguments = getMockCallArguments(expression);
|
|
78
|
-
if (callArguments === void 0) {
|
|
79
|
-
return void 0;
|
|
80
|
-
}
|
|
81
|
-
return createSeed(mockStatement, callArguments[0], callArguments[1]);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Creates seed data from validated call arguments.
|
|
85
|
-
* @param mockStatement Matched `vi.mock` statement.
|
|
86
|
-
* @param specifierExpression First argument expression.
|
|
87
|
-
* @param factoryExpression Factory callback expression.
|
|
88
|
-
* @returns Match seed when arguments are supported.
|
|
89
|
-
* @example
|
|
90
|
-
* ```typescript
|
|
91
|
-
* 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);
|
|
92
|
-
* void seed;
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
function createSeed(mockStatement, specifierExpression, factoryExpression) {
|
|
96
|
-
if (!hasRange(specifierExpression)) {
|
|
97
|
-
return void 0;
|
|
98
|
-
}
|
|
99
|
-
const moduleSpecifier = getModuleSpecifier(specifierExpression);
|
|
100
|
-
const factoryObject = getFactoryReturnObject(factoryExpression);
|
|
101
|
-
return moduleSpecifier === void 0 || factoryObject === void 0
|
|
102
|
-
? void 0
|
|
103
|
-
: { factoryObject, mockStatement, moduleSpecifier, specifierExpression };
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Returns the first top-level `vi.mock` or `vi.doMock` statement.
|
|
107
|
-
* @param program Program node.
|
|
108
|
-
* @returns Matching expression statement.
|
|
109
|
-
* @example
|
|
110
|
-
* ```typescript
|
|
111
|
-
* const statement = findMockStatement({ body: [], sourceType: "module", type: "Program" } as never);
|
|
112
|
-
* void statement;
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
function findMockStatement(program) {
|
|
116
|
-
return program.body.find((statement) => isMockExpressionStatement(statement));
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Returns sorted unique import names from bindings.
|
|
120
|
-
* @param bindings Bindings list.
|
|
121
|
-
* @returns Sorted import names.
|
|
122
|
-
* @example
|
|
123
|
-
* ```typescript
|
|
124
|
-
* const names = getImportNames([]);
|
|
125
|
-
* void names;
|
|
126
|
-
* ```
|
|
127
|
-
*/
|
|
128
|
-
function getImportNames(bindings) {
|
|
129
|
-
return [
|
|
130
|
-
...new Set(bindings.map((binding) => binding.exportedName)),
|
|
131
|
-
].toSorted();
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Returns mock call arguments when both arguments are supported expressions.
|
|
135
|
-
* @param expression Call expression node.
|
|
136
|
-
* @returns First and second call arguments.
|
|
137
|
-
* @example
|
|
138
|
-
* ```typescript
|
|
139
|
-
* const args = getMockCallArguments({ arguments: [], type: "CallExpression" } as never);
|
|
140
|
-
* void args;
|
|
141
|
-
* ```
|
|
142
|
-
*/
|
|
143
|
-
function getMockCallArguments(expression) {
|
|
144
|
-
const [firstArgument, secondArgument] = expression.arguments;
|
|
145
|
-
if (firstArgument === void 0 || secondArgument === void 0) {
|
|
146
|
-
return void 0;
|
|
147
|
-
}
|
|
148
|
-
if (firstArgument.type === "SpreadElement" ||
|
|
149
|
-
secondArgument.type === "SpreadElement") {
|
|
150
|
-
return void 0;
|
|
151
|
-
}
|
|
152
|
-
return [firstArgument, secondArgument];
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Checks whether a statement is a supported mock expression statement.
|
|
156
|
-
* @param statement Candidate statement.
|
|
157
|
-
* @returns True when statement is a supported mock call.
|
|
158
|
-
* @example
|
|
159
|
-
* ```typescript
|
|
160
|
-
* const ok = isMockExpressionStatement({ type: "EmptyStatement" } as never);
|
|
161
|
-
* void ok;
|
|
162
|
-
* ```
|
|
163
|
-
*/
|
|
164
|
-
function isMockExpressionStatement(statement) {
|
|
165
|
-
if (statement.type !== "ExpressionStatement") {
|
|
166
|
-
return false;
|
|
167
|
-
}
|
|
168
|
-
const { expression } = statement;
|
|
169
|
-
if (expression.type !== "CallExpression" ||
|
|
170
|
-
expression.callee.type !== "MemberExpression") {
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
const { object, property } = expression.callee;
|
|
174
|
-
return (object.type === "Identifier" &&
|
|
175
|
-
object.name === "vi" &&
|
|
176
|
-
property.type === "Identifier" &&
|
|
177
|
-
(property.name === "mock" || property.name === "doMock"));
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Creates local-to-exported mapping from bindings.
|
|
181
|
-
* @param bindings Bindings list.
|
|
182
|
-
* @returns Mapping used for rewrite lookup.
|
|
183
|
-
* @example
|
|
184
|
-
* ```typescript
|
|
185
|
-
* const map = toLocalMap([]);
|
|
186
|
-
* void map;
|
|
187
|
-
* ```
|
|
188
|
-
*/
|
|
189
|
-
function toLocalMap(bindings) {
|
|
190
|
-
return new Map(bindings.map((binding) => [binding.localName, binding.exportedName]));
|
|
191
|
-
}
|
|
192
|
-
export { collectMatch };
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9wcmVmZXItdmktbW9ja2VkLWltcG9ydC9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLHFCQUFxQixHQUN0QixNQUFNLGtCQUFrQixDQUFDO0FBb0IxQjs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQVMsVUFBVSxDQUNqQixPQUF5QixFQUN6QixPQUF1QixFQUN2QixJQUFlO0lBRWYsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE1B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QUNwQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxrQkFBa0IsRUFDN0MsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUMvQyxPQUFPLENBQ0wsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQzVCLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSTtRQUNwQixRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDOUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUN6RCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsVUFBVSxDQUFDLFFBQStCO0lBQ2pELE9BQU8sSUFBSSxHQUFHLENBQ1osUUFBUSxDQUFDLEdBQUcsQ0FDVixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQVUsQ0FDaEUsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcbmltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcblxuaW1wb3J0IHR5cGUgeyBSdWxlTWF0Y2ggfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBjb2xsZWN0QmluZGluZ3MgfSBmcm9tIFwiLi9tYXRjaC1iaW5kaW5nc1wiO1xuaW1wb3J0IHsgY29sbGVjdERlY2xhcmF0aW9ucyB9IGZyb20gXCIuL21hdGNoLWRlY2xhcmF0aW9uc1wiO1xuaW1wb3J0IHtcbiAgZ2V0RmFjdG9yeVJldHVybk9iamVjdCxcbiAgZ2V0TW9kdWxlU3BlY2lmaWVyLFxuICBnZXROZXdsaW5lLFxuICBoYXNSYW5nZSxcbn0gZnJvbSBcIi4vbWF0Y2gtaGVscGVyc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUltcG9ydFBsYW4gfSBmcm9tIFwiLi9tYXRjaC1pbXBvcnRzXCI7XG5pbXBvcnQge1xuICBhcmVMb2NhbHNTYWZlVG9JbmxpbmUsXG4gIGJ1aWxkQWxsb3dlZFJhbmdlcyxcbiAgY29sbGVjdE1lbWJlclJld3JpdGVzLFxufSBmcm9tIFwiLi9tYXRjaC1yZXdyaXRlc1wiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgTWF0Y2hTZWVkIHtcbiAgLyoqIFJldHVybmVkIG9iamVjdCBleHByZXNzaW9uIGZyb20gdGhlIG1vY2sgZmFjdG9yeS4gKi9cbiAgZmFjdG9yeU9iamVjdDogRVNUcmVlLk9iamVjdEV4cHJlc3Npb247XG5cbiAgLyoqIEV4cHJlc3Npb24gc3RhdGVtZW50IGNvbnRhaW5pbmcgYHZpLm1vY2tgIG9yIGB2aS5kb01vY2tgLiAqL1xuICBtb2NrU3RhdGVtZW50OiBFU1RyZWUuRXhwcmVzc2lvblN0YXRlbWVudDtcblxuICAvKiogTW9kdWxlIHBhdGggc3RyaW5nIGV4dHJhY3RlZCBmcm9tIHRoZSBmaXJzdCBtb2NrIGFyZ3VtZW50LiAqL1xuICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZztcblxuICAvKiogT3JpZ2luYWwgZmlyc3QgYXJndW1lbnQgbm9kZSwgaW5jbHVkaW5nIGByYW5nZWAsIGZvciBmaXhlciB1c2UuICovXG4gIHNwZWNpZmllckV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uICYge1xuICAgIC8qKiBTb3VyY2UgcmFuZ2UgZm9yIHRoZSBtb2NrIHNwZWNpZmllciBleHByZXNzaW9uLiAqL1xuICAgIHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGZ1bGwgcnVsZSBtYXRjaCBmcm9tIHNlZWQgZGF0YS5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgY29udGV4dC5cbiAqIEBwYXJhbSBwcm9ncmFtIFByb2dyYW0gbm9kZS5cbiAqIEBwYXJhbSBzZWVkIFNlZWQgZGF0YS5cbiAqIEByZXR1cm5zIFJ1bGUgbWF0Y2ggd2hlbiBzYWZlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1hdGNoID0gYnVpbGRNYXRjaCh7IHNvdXJjZUNvZGU6IHsgdGV4dDogXCJcIiB9IH0gYXMgbmV2ZXIsIHsgYm9keTogW10sIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsIHR5cGU6IFwiUHJvZ3JhbVwiIH0gYXMgbmV2ZXIsIHsgZmFjdG9yeU9iamVjdDogeyBwcm9wZXJ0aWVzOiBbXSwgdHlwZTogXCJPYmplY3RFeHByZXNzaW9uXCIgfSwgbW9ja1N0YXRlbWVudDogeyBleHByZXNzaW9uOiB7IGFyZ3VtZW50czogW10sIHR5cGU6IFwiQ2FsbEV4cHJlc3Npb25cIiB9LCB0eXBlOiBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIiB9LCBtb2R1bGVTcGVjaWZpZXI6IFwiLi94XCIsIHNwZWNpZmllckV4cHJlc3Npb246IHsgcmFuZ2U6IFswLCAxXSwgdHlwZTogXCJMaXRlcmFsXCIsIHZhbHVlOiBcIi4veFwiIH0gYXMgbmV2ZXIgfSk7XG4gKiB2b2lkIG1hdGNoO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTWF0Y2goXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIHByb2dyYW06IEVTVHJlZS5Qcm9ncmFtLFxuICBzZWVkOiBNYXRjaFNlZWQsXG4pOiBSdWxlTWF0Y2ggfCB1bmRlZmluZWQge1xuICBjb25zdCBkZWNsYXJhdGlvbnMgPSBjb2xsZWN0RGVjbGFyYXRpb25zKHByb2dyYW0sIGNvbnRleHQuc291cmNlQ29kZSk7XG4gIGNvbnN0IGJpbmRpbmdzID0gY29sbGVjdEJpbmRpbmdzKHNlZWQuZmFjdG9yeU9iamVjdCwgZGVjbGFyYXRpb25zKTtcbiAgaWYgKGJpbmRpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtZW1iZXJSZXdyaXRlcyA9IGNvbGxlY3RNZW1iZXJSZXdyaXRlcyhwcm9ncmFtLCB0b0xvY2FsTWFwKGJpbmRpbmdzKSk7XG4gIGNvbnN0IGxvY2FsTmFtZXMgPSBuZXcgU2V0KGJpbmRpbmdzLm1hcCgoYmluZGluZykgPT4gYmluZGluZy5sb2NhbE5hbWUpKTtcbiAgY29uc3QgYWxsb3dlZFJhbmdlcyA9IGJ1aWxkQWxsb3dlZFJhbmdlcyhcbiAgICBiaW5kaW5ncyxcbiAgICBkZWNsYXJhdGlvbnMsXG4gICAgbWVtYmVyUmV3cml0ZXMsXG4gICk7XG4gIGlmICghYXJlTG9jYWxzU2FmZVRvSW5saW5lKHByb2dyYW0sIGFsbG93ZWRSYW5nZXMsIGxvY2FsTmFtZXMpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmluZGluZ3MsXG4gICAgZGVjbGFyYXRpb25zLFxuICAgIGltcG9ydFBsYW46IHJlc29sdmVJbXBvcnRQbGFuKFxuICAgICAgcHJvZ3JhbSxcbiAgICAgIHNlZWQubW9kdWxlU3BlY2lmaWVyLFxuICAgICAgZ2V0SW1wb3J0TmFtZXMoYmluZGluZ3MpLFxuICAgICksXG4gICAgbWVtYmVyUmV3cml0ZXMsXG4gICAgbW9ja1NwZWNpZmllcklzSW1wb3J0RXhwcmVzc2lvbjpcbiAgICAgIHNlZWQuc3BlY2lmaWVyRXhwcmVzc2lvbi50eXBlID09PSBcIkltcG9ydEV4cHJlc3Npb25cIixcbiAgICBtb2NrU3BlY2lmaWVyUmFuZ2U6IHNlZWQuc3BlY2lmaWVyRXhwcmVzc2lvbi5yYW5nZSxcbiAgICBtb2R1bGVTcGVjaWZpZXI6IHNlZWQubW9kdWxlU3BlY2lmaWVyLFxuICAgIG5ld2xpbmU6IGdldE5ld2xpbmUoY29udGV4dC5zb3VyY2VDb2RlLnRleHQpLFxuICAgIG5vZGU6IHNlZWQubW9ja1N0YXRlbWVudCBhcyB1bmtub3duIGFzIFJ1bGUuTm9kZSxcbiAgICBzb3VyY2VUZXh0OiBjb250ZXh0LnNvdXJjZUNvZGUudGV4dCxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyB0aGUgZmlyc3QgYXBwbGljYWJsZSBydWxlIG1hdGNoIGZyb20gdGhlIGZpbGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGNvbnRleHQuXG4gKiBAcmV0dXJucyBDb2xsZWN0ZWQgbWF0Y2ggd2hlbiBwYXR0ZXJuIGlzIGZvdW5kLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1hdGNoID0gY29sbGVjdE1hdGNoKHsgc291cmNlQ29kZTogeyBhc3Q6IHsgYm9keTogW10sIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsIHR5cGU6IFwiUHJvZ3JhbVwiIH0sIHRleHQ6IFwiXCIgfSB9IGFzIG5ldmVyKTtcbiAqIHZvaWQgbWF0Y2g7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY29sbGVjdE1hdGNoKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlTWF0Y2ggfCB1bmRlZmluZWQge1xuICBjb25zdCBwcm9ncmFtID0gY29udGV4dC5zb3VyY2VDb2RlLmFzdCBhcyBFU1RyZWUuUHJvZ3JhbTtcbiAgY29uc3Qgc2VlZCA9IGNvbGxlY3RTZWVkKHByb2dyYW0pO1xuICByZXR1cm4gc2VlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogYnVpbGRNYXRjaChjb250ZXh0LCBwcm9ncmFtLCBzZWVkKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyBzZWVkIGRhdGEgbmVlZGVkIHRvIGJ1aWxkIGEgZnVsbCBtYXRjaC5cbiAqIEBwYXJhbSBwcm9ncmFtIFByb2dyYW0gbm9kZS5cbiAqIEByZXR1cm5zIE1hdGNoIHNlZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc2VlZCA9IGNvbGxlY3RTZWVkKHsgYm9keTogW10sIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsIHR5cGU6IFwiUHJvZ3JhbVwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBzZWVkO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RTZWVkKHByb2dyYW06IEVTVHJlZS5Qcm9ncmFtKTogTWF0Y2hTZWVkIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbW9ja1N0YXRlbWVudCA9IGZpbmRNb2NrU3RhdGVtZW50KHByb2dyYW0pO1xuICBpZiAobW9ja1N0YXRlbWVudCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHsgZXhwcmVzc2lvbiB9ID0gbW9ja1N0YXRlbWVudDtcbiAgaWYgKGV4cHJlc3Npb24udHlwZSAhPT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGNhbGxBcmd1bWVudHMgPSBnZXRNb2NrQ2FsbEFyZ3VtZW50cyhleHByZXNzaW9uKTtcbiAgaWYgKGNhbGxBcmd1bWVudHMgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlU2VlZChtb2NrU3RhdGVtZW50LCBjYWxsQXJndW1lbnRzWzBdLCBjYWxsQXJndW1lbnRzWzFdKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHNlZWQgZGF0YSBmcm9tIHZhbGlkYXRlZCBjYWxsIGFyZ3VtZW50cy5cbiAqIEBwYXJhbSBtb2NrU3RhdGVtZW50IE1hdGNoZWQgYHZpLm1vY2tgIHN0YXRlbWVudC5cbiAqIEBwYXJhbSBzcGVjaWZpZXJFeHByZXNzaW9uIEZpcnN0IGFyZ3VtZW50IGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gZmFjdG9yeUV4cHJlc3Npb24gRmFjdG9yeSBjYWxsYmFjayBleHByZXNzaW9uLlxuICogQHJldHVybnMgTWF0Y2ggc2VlZCB3aGVuIGFyZ3VtZW50cyBhcmUgc3VwcG9ydGVkLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlZWQgPSBjcmVhdGVTZWVkKHsgZXhwcmVzc2lvbjogeyBhcmd1bWVudHM6IFtdLCB0eXBlOiBcIkNhbGxFeHByZXNzaW9uXCIgfSwgdHlwZTogXCJFeHByZXNzaW9uU3RhdGVtZW50XCIgfSBhcyBuZXZlciwgeyB0eXBlOiBcIkxpdGVyYWxcIiwgdmFsdWU6IFwiLi94XCIgfSBhcyBuZXZlciwgeyBib2R5OiB7IHByb3BlcnRpZXM6IFtdLCB0eXBlOiBcIk9iamVjdEV4cHJlc3Npb25cIiB9LCB0eXBlOiBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgfSBhcyBuZXZlcik7XG4gKiB2b2lkIHNlZWQ7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU2VlZChcbiAgbW9ja1N0YXRlbWVudDogRVNUcmVlLkV4cHJlc3Npb25TdGF0ZW1lbnQsXG4gIHNwZWNpZmllckV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uLFxuICBmYWN0b3J5RXhwcmVzc2lvbjogRVNUcmVlLkV4cHJlc3Npb24sXG4pOiBNYXRjaFNlZWQgfCB1bmRlZmluZWQge1xuICBpZiAoIWhhc1JhbmdlKHNwZWNpZmllckV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IG1vZHVsZVNwZWNpZmllciA9IGdldE1vZHVsZVNwZWNpZmllcihzcGVjaWZpZXJFeHByZXNzaW9uKTtcbiAgY29uc3QgZmFjdG9yeU9iamVjdCA9IGdldEZhY3RvcnlSZXR1cm5PYmplY3QoZmFjdG9yeUV4cHJlc3Npb24pO1xuICByZXR1cm4gbW9kdWxlU3BlY2lmaWVyID09PSB2b2lkIDAgfHwgZmFjdG9yeU9iamVjdCA9PT0gdm9pZCAwXG4gICAgPyB2b2lkIDBcbiAgICA6IHsgZmFjdG9yeU9iamVjdCwgbW9ja1N0YXRlbWVudCwgbW9kdWxlU3BlY2lmaWVyLCBzcGVjaWZpZXJFeHByZXNzaW9uIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgdG9wLWxldmVsIGB2aS5tb2NrYCBvciBgdmkuZG9Nb2NrYCBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gcHJvZ3JhbSBQcm9ncmFtIG5vZGUuXG4gKiBAcmV0dXJucyBNYXRjaGluZyBleHByZXNzaW9uIHN0YXRlbWVudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzdGF0ZW1lbnQgPSBmaW5kTW9ja1N0YXRlbWVudCh7IGJvZHk6IFtdLCBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLCB0eXBlOiBcIlByb2dyYW1cIiB9IGFzIG5ldmVyKTtcbiAqIHZvaWQgc3RhdGVtZW50O1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGZpbmRNb2NrU3RhdGVtZW50KFxuICBwcm9ncmFtOiBFU1RyZWUuUHJvZ3JhbSxcbik6IEVTVHJlZS5FeHByZXNzaW9uU3RhdGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHByb2dyYW0uYm9keS5maW5kKFxuICAgIChzdGF0ZW1lbnQpOiBzdGF0ZW1lbnQgaXMgRVNUcmVlLkV4cHJlc3Npb25TdGF0ZW1lbnQgPT5cbiAgICAgIGlzTW9ja0V4cHJlc3Npb25TdGF0ZW1lbnQoc3RhdGVtZW50KSxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHNvcnRlZCB1bmlxdWUgaW1wb3J0IG5hbWVzIGZyb20gYmluZGluZ3MuXG4gKiBAcGFyYW0gYmluZGluZ3MgQmluZGluZ3MgbGlzdC5cbiAqIEByZXR1cm5zIFNvcnRlZCBpbXBvcnQgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmFtZXMgPSBnZXRJbXBvcnROYW1lcyhbXSk7XG4gKiB2b2lkIG5hbWVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldEltcG9ydE5hbWVzKGJpbmRpbmdzOiBSdWxlTWF0Y2hbXCJiaW5kaW5nc1wiXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIFtcbiAgICAuLi5uZXcgU2V0KGJpbmRpbmdzLm1hcCgoYmluZGluZykgPT4gYmluZGluZy5leHBvcnRlZE5hbWUpKSxcbiAgXS50b1NvcnRlZCgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgbW9jayBjYWxsIGFyZ3VtZW50cyB3aGVuIGJvdGggYXJndW1lbnRzIGFyZSBzdXBwb3J0ZWQgZXhwcmVzc2lvbnMuXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBDYWxsIGV4cHJlc3Npb24gbm9kZS5cbiAqIEByZXR1cm5zIEZpcnN0IGFuZCBzZWNvbmQgY2FsbCBhcmd1bWVudHMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYXJncyA9IGdldE1vY2tDYWxsQXJndW1lbnRzKHsgYXJndW1lbnRzOiBbXSwgdHlwZTogXCJDYWxsRXhwcmVzc2lvblwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBhcmdzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldE1vY2tDYWxsQXJndW1lbnRzKFxuICBleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24sXG4pOiBbRVNUcmVlLkV4cHJlc3Npb24sIEVTVHJlZS5FeHByZXNzaW9uXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IFtmaXJzdEFyZ3VtZW50LCBzZWNvbmRBcmd1bWVudF0gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcbiAgaWYgKGZpcnN0QXJndW1lbnQgPT09IHZvaWQgMCB8fCBzZWNvbmRBcmd1bWVudCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBpZiAoXG4gICAgZmlyc3RBcmd1bWVudC50eXBlID09PSBcIlNwcmVhZEVsZW1lbnRcIiB8fFxuICAgIHNlY29uZEFyZ3VtZW50LnR5cGUgPT09IFwiU3ByZWFkRWxlbWVudFwiXG4gICkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gW2ZpcnN0QXJndW1lbnQsIHNlY29uZEFyZ3VtZW50XTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHN0YXRlbWVudCBpcyBhIHN1cHBvcnRlZCBtb2NrIGV4cHJlc3Npb24gc3RhdGVtZW50LlxuICogQHBhcmFtIHN0YXRlbWVudCBDYW5kaWRhdGUgc3RhdGVtZW50LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHN0YXRlbWVudCBpcyBhIHN1cHBvcnRlZCBtb2NrIGNhbGwuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBpc01vY2tFeHByZXNzaW9uU3RhdGVtZW50KHsgdHlwZTogXCJFbXB0eVN0YXRlbWVudFwiIH0gYXMgbmV2ZXIpO1xuICogdm9pZCBvaztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc01vY2tFeHByZXNzaW9uU3RhdGVtZW50KFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXVtudW1iZXJdLFxuKTogYm9vbGVhbiB7XG4gIGlmIChzdGF0ZW1lbnQudHlwZSAhPT0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB7IGV4cHJlc3Npb24gfSA9IHN0YXRlbWVudDtcbiAgaWYgKFxuICAgIGV4cHJlc3Npb24udHlwZSAhPT0gXCJDYWxsRXhwcmVzc2lvblwiIHx8XG4gICAgZXhwcmVzc2lvbi5jYWxsZWUudHlwZSAhPT0gXCJNZW1iZXJFeHByZXNzaW9uXCJcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgeyBvYmplY3QsIHByb3BlcnR5IH0gPSBleHByZXNzaW9uLmNhbGxlZTtcbiAgcmV0dXJuIChcbiAgICBvYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICBvYmplY3QubmFtZSA9PT0gXCJ2aVwiICYmXG4gICAgcHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAocHJvcGVydHkubmFtZSA9PT0gXCJtb2NrXCIgfHwgcHJvcGVydHkubmFtZSA9PT0gXCJkb01vY2tcIilcbiAgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGxvY2FsLXRvLWV4cG9ydGVkIG1hcHBpbmcgZnJvbSBiaW5kaW5ncy5cbiAqIEBwYXJhbSBiaW5kaW5ncyBCaW5kaW5ncyBsaXN0LlxuICogQHJldHVybnMgTWFwcGluZyB1c2VkIGZvciByZXdyaXRlIGxvb2t1cC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXAgPSB0b0xvY2FsTWFwKFtdKTtcbiAqIHZvaWQgbWFwO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHRvTG9jYWxNYXAoYmluZGluZ3M6IFJ1bGVNYXRjaFtcImJpbmRpbmdzXCJdKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gIHJldHVybiBuZXcgTWFwKFxuICAgIGJpbmRpbmdzLm1hcChcbiAgICAgIChiaW5kaW5nKSA9PiBbYmluZGluZy5sb2NhbE5hbWUsIGJpbmRpbmcuZXhwb3J0ZWROYW1lXSBhcyBjb25zdCxcbiAgICApLFxuICApO1xufVxuXG5leHBvcnQgeyBjb2xsZWN0TWF0Y2ggfTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/testing/prefer-vi-mocked-import/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAMnC,6EAA6E;AAC7E,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UA+BpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
2
|
-
import { buildFix } from "./fix";
|
|
3
|
-
import { collectMatch } from "./match";
|
|
4
|
-
/** Enforce inline `vi.fn()` mocks inside `vi.mock`/`vi.doMock` factories. */
|
|
5
|
-
const preferViMockedImportRule = {
|
|
6
|
-
create(context) {
|
|
7
|
-
return {
|
|
8
|
-
Program: () => {
|
|
9
|
-
const match = collectMatch(context);
|
|
10
|
-
if (match === void 0) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
context.report({
|
|
14
|
-
fix: (fixer) => buildFix(match, fixer),
|
|
15
|
-
messageId: "preferViMockedImport",
|
|
16
|
-
node: match.node,
|
|
17
|
-
});
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
},
|
|
21
|
-
meta: {
|
|
22
|
-
docs: createRuleDocumentation("prefer-vi-mocked-import", "Prefer inlining vi.fn mocks in vi.mock/vi.doMock factories and using vi.mocked(...)."),
|
|
23
|
-
fixable: "code",
|
|
24
|
-
messages: {
|
|
25
|
-
preferViMockedImport: "Inline vi.fn mocks in the vi.mock/vi.doMock factory and use vi.mocked(...) for calls.",
|
|
26
|
-
},
|
|
27
|
-
schema: [],
|
|
28
|
-
type: "suggestion",
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
export { preferViMockedImportRule };
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL3ByZWZlci12aS1tb2NrZWQtaW1wb3J0L3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXZDLDZFQUE2RTtBQUM3RSxNQUFNLHdCQUF3QixHQUFvQjtJQUNoRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTztZQUNMLE9BQU8sRUFBRSxHQUFTLEVBQUU7Z0JBQ2xCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFcEMsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDckIsT0FBTztnQkFDVCxDQUFDO2dCQUVELE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ2IsR0FBRyxFQUFFLENBQUMsS0FBcUIsRUFBYyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7b0JBQ2xFLFNBQVMsRUFBRSxzQkFBc0I7b0JBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtpQkFDakIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztTQUMwQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsdUJBQXVCLENBQzNCLHlCQUF5QixFQUN6QixzRkFBc0YsQ0FDdkY7UUFDRCxPQUFPLEVBQUUsTUFBTTtRQUNmLFFBQVEsRUFBRTtZQUNSLG9CQUFvQixFQUNsQix1RkFBdUY7U0FDMUY7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxZQUFZO0tBQ25CO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbiB9IGZyb20gXCIuLi8uLi9jdXN0b20tcnVsZS1kb2N1bWVudGF0aW9uXCI7XG5pbXBvcnQgeyBidWlsZEZpeCB9IGZyb20gXCIuL2ZpeFwiO1xuaW1wb3J0IHsgY29sbGVjdE1hdGNoIH0gZnJvbSBcIi4vbWF0Y2hcIjtcblxuLyoqIEVuZm9yY2UgaW5saW5lIGB2aS5mbigpYCBtb2NrcyBpbnNpZGUgYHZpLm1vY2tgL2B2aS5kb01vY2tgIGZhY3Rvcmllcy4gKi9cbmNvbnN0IHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgUHJvZ3JhbTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNvbGxlY3RNYXRjaChjb250ZXh0KTtcblxuICAgICAgICBpZiAobWF0Y2ggPT09IHZvaWQgMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBmaXg6IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeFtdID0+IGJ1aWxkRml4KG1hdGNoLCBmaXhlciksXG4gICAgICAgICAgbWVzc2FnZUlkOiBcInByZWZlclZpTW9ja2VkSW1wb3J0XCIsXG4gICAgICAgICAgbm9kZTogbWF0Y2gubm9kZSxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFJ1bGUuUnVsZUxpc3RlbmVyO1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczogY3JlYXRlUnVsZURvY3VtZW50YXRpb24oXG4gICAgICBcInByZWZlci12aS1tb2NrZWQtaW1wb3J0XCIsXG4gICAgICBcIlByZWZlciBpbmxpbmluZyB2aS5mbiBtb2NrcyBpbiB2aS5tb2NrL3ZpLmRvTW9jayBmYWN0b3JpZXMgYW5kIHVzaW5nIHZpLm1vY2tlZCguLi4pLlwiLFxuICAgICksXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHByZWZlclZpTW9ja2VkSW1wb3J0OlxuICAgICAgICBcIklubGluZSB2aS5mbiBtb2NrcyBpbiB0aGUgdmkubW9jay92aS5kb01vY2sgZmFjdG9yeSBhbmQgdXNlIHZpLm1vY2tlZCguLi4pIGZvciBjYWxscy5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJzdWdnZXN0aW9uXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBwcmVmZXJWaU1vY2tlZEltcG9ydFJ1bGUgfTtcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9wcmVmZXItdmktbW9ja2VkLWltcG9ydC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IFJhbmdlIH0gZnJvbSBcIi4vbWF0Y2gtaGVscGVyc1wiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgQmluZGluZyB7XG4gIC8qKiBOYW1lIG9mIHRoZSBtb2NrZWQgZXhwb3J0IChvYmplY3QgcHJvcGVydHkga2V5KS4gKi9cbiAgZXhwb3J0ZWROYW1lOiBzdHJpbmc7XG5cbiAgLyoqIExvY2FsIHZhcmlhYmxlIG5hbWUgcmVmZXJlbmNlZCBpbiB0aGUgbW9jayBmYWN0b3J5IG9iamVjdC4gKi9cbiAgbG9jYWxOYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBvYmplY3QgcHJvcGVydHkga2V5IGlkZW50aWZpZXIuICovXG4gIHByb3BlcnR5S2V5UmFuZ2U6IFJhbmdlO1xuXG4gIC8qKiBGdWxsIHJhbmdlIG9mIHRoZSBvYmplY3QgcHJvcGVydHkgdG8gcmVwbGFjZS4gKi9cbiAgcHJvcGVydHlSYW5nZTogUmFuZ2U7XG5cbiAgLyoqIFJhbmdlIG9mIHRoZSBpZGVudGlmaWVyIHRoYXQgcmVmZXJlbmNlcyB0aGUgbG9jYWwgdmFyaWFibGUuICovXG4gIHByb3BlcnR5VmFsdWVSYW5nZTogUmFuZ2U7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBEZWNsYXJhdGlvbiB7XG4gIC8qKiBSYW5nZSBvZiB0aGUgaWRlbnRpZmllciBiZWluZyBkZWNsYXJlZCAoZS5nLiBgeGAgaW4gYGNvbnN0IHggPSAuLi5gKS4gKi9cbiAgZGVjbGFyYXRpb25JZFJhbmdlOiBSYW5nZTtcblxuICAvKiogUmFuZ2Ugb2YgdGhlIGluaXRpYWxpemVyIGV4cHJlc3Npb24gKHRoZSBgdmkuZm4oLi4uKWAgY2FsbCkuICovXG4gIGluaXRpYWxpemVyUmFuZ2U6IFJhbmdlO1xuXG4gIC8qKiBMb2NhbCB2YXJpYWJsZSBuYW1lLiAqL1xuICBsb2NhbE5hbWU6IHN0cmluZztcblxuICAvKiogUmFuZ2Ugb2YgdGhlIGZ1bGwgc3RhdGVtZW50IHRvIHJlbW92ZS4gKi9cbiAgc3RhdGVtZW50UmFuZ2U6IFJhbmdlO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgSW1wb3J0SW5zZXJ0UGxhbiB7XG4gIC8qKiBSYW5nZSBvZiB0aGUgbGFzdCBpbXBvcnQgc3RhdGVtZW50LCB3aGVuIHByZXNlbnQuICovXG4gIGFmdGVyUmFuZ2U/OiBSYW5nZTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEltcG9ydFBsYW4ge1xuICAvKiogSW5zZXJ0IHBsYW4gd2hlbiBubyBjb21wYXRpYmxlIGltcG9ydCBleGlzdHMuICovXG4gIGluc2VydD86IEltcG9ydEluc2VydFBsYW47XG5cbiAgLyoqIE1vZHVsZSBzcGVjaWZpZXIgdG8gaW1wb3J0IGZyb20uICovXG4gIG1vZHVsZVNwZWNpZmllcjogc3RyaW5nO1xuXG4gIC8qKiBOYW1lcyB0aGF0IG11c3QgYmUgaW1wb3J0ZWQgZnJvbSB0aGUgbW9kdWxlLiAqL1xuICBuYW1lczogc3RyaW5nW107XG5cbiAgLyoqIFVwZGF0ZSBwbGFuIHdoZW4gYW4gaW1wb3J0IGNhbiBiZSB1cGRhdGVkIGluLXBsYWNlLiAqL1xuICB1cGRhdGU/OiBJbXBvcnRVcGRhdGVQbGFuO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgSW1wb3J0VXBkYXRlUGxhbiB7XG4gIC8qKiBEZWZhdWx0IGltcG9ydCBsb2NhbCBuYW1lLCB3aGVuIHByZXNlbnQuICovXG4gIGRlZmF1bHRJbXBvcnROYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBFeGlzdGluZyBuYW1lZCBpbXBvcnRzIGZyb20gdGhlIG1vZHVsZS4gKi9cbiAgZXhpc3RpbmdOYW1lZEltcG9ydHM6IHN0cmluZ1tdO1xuXG4gIC8qKiBSYW5nZSBvZiB0aGUgaW1wb3J0IHN0YXRlbWVudCB0byByZXBsYWNlLiAqL1xuICByYW5nZTogUmFuZ2U7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBNZW1iZXJSZXdyaXRlIHtcbiAgLyoqIEV4cG9ydGVkIG5hbWUgdG8gdXNlIGluc2lkZSBgdmkubW9ja2VkKC4uLilgLiAqL1xuICBleHBvcnRlZE5hbWU6IHN0cmluZztcblxuICAvKiogUmFuZ2Ugb2YgdGhlIGlkZW50aWZpZXIgdXNlZCBhcyB0aGUgbWVtYmVyLWV4cHJlc3Npb24gb2JqZWN0LiAqL1xuICBsb2NhbE9iamVjdFJhbmdlOiBSYW5nZTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFJ1bGVNYXRjaCB7XG4gIC8qKiBCaW5kaW5ncyB0aGF0IGNhbiBiZSBpbmxpbmVkIGludG8gdGhlIG1vY2sgZmFjdG9yeS4gKi9cbiAgYmluZGluZ3M6IEJpbmRpbmdbXTtcblxuICAvKiogRGVjbGFyYXRpb25zIGJ5IGxvY2FsIG5hbWUuICovXG4gIGRlY2xhcmF0aW9uczogTWFwPHN0cmluZywgRGVjbGFyYXRpb24+O1xuXG4gIC8qKiBJbXBvcnQgaW5zZXJ0aW9uL3VwZGF0ZSBwbGFuLiAqL1xuICBpbXBvcnRQbGFuOiBJbXBvcnRQbGFuO1xuXG4gIC8qKiBNZW1iZXItZXhwcmVzc2lvbiByZXdyaXRlcyBmb3IgYC5tb2NrKmAgY2FsbHMuICovXG4gIG1lbWJlclJld3JpdGVzOiBNZW1iZXJSZXdyaXRlW107XG5cbiAgLyoqIFRydWUgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYWxyZWFkeSBgaW1wb3J0KFwiLi4uXCIpYC4gKi9cbiAgbW9ja1NwZWNpZmllcklzSW1wb3J0RXhwcmVzc2lvbjogYm9vbGVhbjtcblxuICAvKiogUmFuZ2Ugb2YgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGB2aS5tb2NrYC9gdmkuZG9Nb2NrYC4gKi9cbiAgbW9ja1NwZWNpZmllclJhbmdlOiBSYW5nZTtcblxuICAvKiogTW9kdWxlIHNwZWNpZmllciBiZWluZyBtb2NrZWQuICovXG4gIG1vZHVsZVNwZWNpZmllcjogc3RyaW5nO1xuXG4gIC8qKiBQcmVmZXJyZWQgbmV3bGluZSBzZXF1ZW5jZSB1c2VkIGJ5IHRoZSBmaWxlLiAqL1xuICBuZXdsaW5lOiBcIlxcblwiIHwgXCJcXHJcXG5cIjtcblxuICAvKiogTm9kZSB0byB1c2UgZm9yIHJlcG9ydGluZy4gKi9cbiAgbm9kZTogUnVsZS5Ob2RlO1xuXG4gIC8qKiBGdWxsIHNvdXJjZSB0ZXh0LiAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIHsgQmluZGluZywgRGVjbGFyYXRpb24sIEltcG9ydFBsYW4sIE1lbWJlclJld3JpdGUsIFJ1bGVNYXRjaCB9O1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/require-aaa-sections/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { requireAaaSectionsRule } from "./rule";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9yZXF1aXJlLWFhYS1zZWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyByZXF1aXJlQWFhU2VjdGlvbnNSdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/testing/require-aaa-sections/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAcnC,QAAA,MAAM,sBAAsB,EAAE,IAAI,CAAC,UA+BlC,CAAC;AAiJF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
2
|
-
import { aaaPhaseOrder, analyzeTestBlock, getLineStartRange, getPhaseBoundaryComments, hasBlankLineBeforeComment, } from "../aaa";
|
|
3
|
-
const requireAaaSectionsRule = {
|
|
4
|
-
create(context) {
|
|
5
|
-
return {
|
|
6
|
-
CallExpression(node) {
|
|
7
|
-
const analysis = analyzeTestBlock(context, node);
|
|
8
|
-
if (analysis === void 0) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
reportMissingSections(context, analysis);
|
|
12
|
-
reportCodeBeforeArrange(context, analysis);
|
|
13
|
-
reportBlankLineSeparators(context, analysis);
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
},
|
|
17
|
-
meta: {
|
|
18
|
-
docs: createRuleDocumentation("require-aaa-sections", "Require strict // Arrange, // Act, and // Assert markers in supported test blocks."),
|
|
19
|
-
fixable: "code",
|
|
20
|
-
messages: {
|
|
21
|
-
blankLineBeforeSection: "Insert a blank line before the // {{section}} section comment.",
|
|
22
|
-
codeBeforeArrange: "Move setup statements below the first // Arrange section comment.",
|
|
23
|
-
missingSections: "Add the missing AAA section comments: {{sections}}.",
|
|
24
|
-
},
|
|
25
|
-
schema: [],
|
|
26
|
-
type: "layout",
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
function reportBlankLineSeparators(context, analysis) {
|
|
30
|
-
for (const sectionComment of getPhaseBoundaryComments(analysis)) {
|
|
31
|
-
if (hasBlankLineBeforeComment(analysis.sourceText, sectionComment.comment)) {
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
context.report({
|
|
35
|
-
data: { section: sectionComment.phases.join(" & ") },
|
|
36
|
-
fix: (fixer) => fixer.insertTextBeforeRange(getLineStartRange(analysis.sourceText, sectionComment.comment.loc.start.line), analysis.newline),
|
|
37
|
-
messageId: "blankLineBeforeSection",
|
|
38
|
-
node: sectionComment.comment,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function reportCodeBeforeArrange(context, analysis) {
|
|
43
|
-
const firstArrangeLine = analysis.sectionComments.find((sectionComment) => sectionComment.phases.includes("Arrange"))?.comment.loc.start.line;
|
|
44
|
-
if (firstArrangeLine === void 0) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const statementBeforeArrange = analysis.statements.find((statement) => statement.node.loc.start.line < firstArrangeLine);
|
|
48
|
-
if (statementBeforeArrange === void 0) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
context.report({
|
|
52
|
-
messageId: "codeBeforeArrange",
|
|
53
|
-
node: statementBeforeArrange.node,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
function reportMissingSections(context, analysis) {
|
|
57
|
-
const presentSections = new Set(analysis.sectionComments.flatMap((sectionComment) => sectionComment.phases));
|
|
58
|
-
const missingSections = ["Arrange", "Act", "Assert"].filter((phase) => !presentSections.has(phase));
|
|
59
|
-
if (missingSections.length === 0) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
context.report({
|
|
63
|
-
data: { sections: missingSections.join(", ") },
|
|
64
|
-
fix: analysis.bodyLineCount >= 3
|
|
65
|
-
? (fixer) => buildMissingSectionFixes(analysis, missingSections, fixer)
|
|
66
|
-
: null,
|
|
67
|
-
messageId: "missingSections",
|
|
68
|
-
node: analysis.callExpression,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
function buildMissingSectionFixes(analysis, missingSections, fixer) {
|
|
72
|
-
if (analysis.statements.length === 0) {
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
const anchorMap = new Map();
|
|
76
|
-
const sourceLines = analysis.sourceText.split(/\r\n|\n/u);
|
|
77
|
-
const firstStatement = analysis.statements[0]?.node;
|
|
78
|
-
const middleStatement = analysis.statements[Math.min(analysis.statements.length - 1, Math.floor(analysis.statements.length / 2))]?.node;
|
|
79
|
-
const lastStatement = analysis.statements.at(-1)?.node;
|
|
80
|
-
for (const phase of missingSections) {
|
|
81
|
-
const anchorNode = phase === "Arrange"
|
|
82
|
-
? firstStatement
|
|
83
|
-
: phase === "Act"
|
|
84
|
-
? middleStatement
|
|
85
|
-
: lastStatement;
|
|
86
|
-
/* v8 ignore start -- guarded by the empty-statements early return above. */
|
|
87
|
-
if (anchorNode === void 0) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
/* v8 ignore stop */
|
|
91
|
-
const existing = anchorMap.get(anchorNode.range[0]) ?? [];
|
|
92
|
-
existing.push(phase);
|
|
93
|
-
anchorMap.set(anchorNode.range[0], existing);
|
|
94
|
-
}
|
|
95
|
-
return [...anchorMap.entries()].map(([offset, phases]) => {
|
|
96
|
-
const sortedPhases = phases.toSorted((left, right) => aaaPhaseOrder[left] - aaaPhaseOrder[right]);
|
|
97
|
-
const statementLine = analysis.sourceText
|
|
98
|
-
.slice(0, offset)
|
|
99
|
-
.split(/\r\n|\n/u).length;
|
|
100
|
-
/* v8 ignore start -- fixer anchors always point to real statement lines in analyzed test blocks. */
|
|
101
|
-
const previousLine = sourceLines[statementLine - 2] ?? "";
|
|
102
|
-
const lineStartRange = getLineStartRange(analysis.sourceText, statementLine);
|
|
103
|
-
const needsLeadingBlankLine = sortedPhases.some((phase) => phase !== "Arrange") &&
|
|
104
|
-
previousLine.trim().length > 0;
|
|
105
|
-
const indentation = /^\s*/u.exec(sourceLines[statementLine - 1] ?? "")?.[0] ?? "";
|
|
106
|
-
/* v8 ignore stop */
|
|
107
|
-
return fixer.insertTextBeforeRange(lineStartRange, `${needsLeadingBlankLine ? analysis.newline : ""}${indentation}// ${sortedPhases.join(" & ")}${analysis.newline}`);
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
export { requireAaaSectionsRule };
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL3JlcXVpcmUtYWFhLXNlY3Rpb25zL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsRUFFaEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDMUIsTUFBTSxRQUFRLENBQUM7QUFFaEIsTUFBTSxzQkFBc0IsR0FBb0I7SUFDOUMsTUFBTSxDQUFDLE9BQXlCO1FBQzlCLE9BQU87WUFDTCxjQUFjLENBQUMsSUFBSTtnQkFDakIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLFFBQVEsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN4QixPQUFPO2dCQUNULENBQUM7Z0JBRUQscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN6Qyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQyxDQUFDO1NBQzBCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSx1QkFBdUIsQ0FDM0Isc0JBQXNCLEVBQ3RCLG9GQUFvRixDQUNyRjtRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsUUFBUSxFQUFFO1lBQ1Isc0JBQXNCLEVBQ3BCLGdFQUFnRTtZQUNsRSxpQkFBaUIsRUFDZixtRUFBbUU7WUFDckUsZUFBZSxFQUFFLHFEQUFxRDtTQUN2RTtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFFBQVE7S0FDZjtDQUNGLENBQUM7QUFFRixTQUFTLHlCQUF5QixDQUNoQyxPQUF5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Q0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLG9CQUFvQjtRQUVwQixPQUFPLEtBQUssQ0FBQyxxQkFBcUIsQ0FDaEMsY0FBYyxFQUNkLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxXQUFXLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQ2xILENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBBYWFQaGFzZSwgVGVzdEJsb2NrQW5hbHlzaXMgfSBmcm9tIFwiLi4vYWFhXCI7XG5cbmltcG9ydCB7IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uIH0gZnJvbSBcIi4uLy4uL2N1c3RvbS1ydWxlLWRvY3VtZW50YXRpb25cIjtcbmltcG9ydCB7XG4gIGFhYVBoYXNlT3JkZXIsXG4gIGFuYWx5emVUZXN0QmxvY2ssXG4gIGdldEluZGVudGF0aW9uQXRPZmZzZXQsXG4gIGdldExpbmVTdGFydFJhbmdlLFxuICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHMsXG4gIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQsXG59IGZyb20gXCIuLi9hYWFcIjtcblxuY29uc3QgcmVxdWlyZUFhYVNlY3Rpb25zUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVUZXN0QmxvY2soY29udGV4dCwgbm9kZSk7XG4gICAgICAgIGlmIChhbmFseXNpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVwb3J0TWlzc2luZ1NlY3Rpb25zKGNvbnRleHQsIGFuYWx5c2lzKTtcbiAgICAgICAgcmVwb3J0Q29kZUJlZm9yZUFycmFuZ2UoY29udGV4dCwgYW5hbHlzaXMpO1xuICAgICAgICByZXBvcnRCbGFua0xpbmVTZXBhcmF0b3JzKGNvbnRleHQsIGFuYWx5c2lzKTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgUnVsZS5SdWxlTGlzdGVuZXI7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbihcbiAgICAgIFwicmVxdWlyZS1hYWEtc2VjdGlvbnNcIixcbiAgICAgIFwiUmVxdWlyZSBzdHJpY3QgLy8gQXJyYW5nZSwgLy8gQWN0LCBhbmQgLy8gQXNzZXJ0IG1hcmtlcnMgaW4gc3VwcG9ydGVkIHRlc3QgYmxvY2tzLlwiLFxuICAgICksXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIGJsYW5rTGluZUJlZm9yZVNlY3Rpb246XG4gICAgICAgIFwiSW5zZXJ0IGEgYmxhbmsgbGluZSBiZWZvcmUgdGhlIC8vIHt7c2VjdGlvbn19IHNlY3Rpb24gY29tbWVudC5cIixcbiAgICAgIGNvZGVCZWZvcmVBcnJhbmdlOlxuICAgICAgICBcIk1vdmUgc2V0dXAgc3RhdGVtZW50cyBiZWxvdyB0aGUgZmlyc3QgLy8gQXJyYW5nZSBzZWN0aW9uIGNvbW1lbnQuXCIsXG4gICAgICBtaXNzaW5nU2VjdGlvbnM6IFwiQWRkIHRoZSBtaXNzaW5nIEFBQSBzZWN0aW9uIGNvbW1lbnRzOiB7e3NlY3Rpb25zfX0uXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwibGF5b3V0XCIsXG4gIH0sXG59O1xuXG5mdW5jdGlvbiByZXBvcnRCbGFua0xpbmVTZXBhcmF0b3JzKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBhbmFseXNpczogVGVzdEJsb2NrQW5hbHlzaXMsXG4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBzZWN0aW9uQ29tbWVudCBvZiBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHMoYW5hbHlzaXMpKSB7XG4gICAgaWYgKFxuICAgICAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudChhbmFseXNpcy5zb3VyY2VUZXh0LCBzZWN0aW9uQ29tbWVudC5jb21tZW50KVxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBzZWN0aW9uOiBzZWN0aW9uQ29tbWVudC5waGFzZXMuam9pbihcIiAmIFwiKSB9LFxuICAgICAgZml4OiAoZml4ZXIpID0+XG4gICAgICAgIGZpeGVyLmluc2VydFRleHRCZWZvcmVSYW5nZShcbiAgICAgICAgICBnZXRMaW5lU3RhcnRSYW5nZShcbiAgICAgICAgICAgIGFuYWx5c2lzLnNvdXJjZVRleHQsXG4gICAgICAgICAgICBzZWN0aW9uQ29tbWVudC5jb21tZW50LmxvYy5zdGFydC5saW5lLFxuICAgICAgICAgICksXG4gICAgICAgICAgYW5hbHlzaXMubmV3bGluZSxcbiAgICAgICAgKSxcbiAgICAgIG1lc3NhZ2VJZDogXCJibGFua0xpbmVCZWZvcmVTZWN0aW9uXCIsXG4gICAgICBub2RlOiBzZWN0aW9uQ29tbWVudC5jb21tZW50LFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcG9ydENvZGVCZWZvcmVBcnJhbmdlKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBhbmFseXNpczogVGVzdEJsb2NrQW5hbHlzaXMsXG4pOiB2b2lkIHtcbiAgY29uc3QgZmlyc3RBcnJhbmdlTGluZSA9IGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5maW5kKChzZWN0aW9uQ29tbWVudCkgPT5cbiAgICBzZWN0aW9uQ29tbWVudC5waGFzZXMuaW5jbHVkZXMoXCJBcnJhbmdlXCIpLFxuICApPy5jb21tZW50LmxvYy5zdGFydC5saW5lO1xuICBpZiAoZmlyc3RBcnJhbmdlTGluZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVtZW50QmVmb3JlQXJyYW5nZSA9IGFuYWx5c2lzLnN0YXRlbWVudHMuZmluZChcbiAgICAoc3RhdGVtZW50KSA9PiBzdGF0ZW1lbnQubm9kZS5sb2Muc3RhcnQubGluZSA8IGZpcnN0QXJyYW5nZUxpbmUsXG4gICk7XG4gIGlmIChzdGF0ZW1lbnRCZWZvcmVBcnJhbmdlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgbWVzc2FnZUlkOiBcImNvZGVCZWZvcmVBcnJhbmdlXCIsXG4gICAgbm9kZTogc3RhdGVtZW50QmVmb3JlQXJyYW5nZS5ub2RlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVwb3J0TWlzc2luZ1NlY3Rpb25zKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBhbmFseXNpczogVGVzdEJsb2NrQW5hbHlzaXMsXG4pOiB2b2lkIHtcbiAgY29uc3QgcHJlc2VudFNlY3Rpb25zID0gbmV3IFNldChcbiAgICBhbmFseXNpcy5zZWN0aW9uQ29tbWVudHMuZmxhdE1hcCgoc2VjdGlvbkNvbW1lbnQpID0+IHNlY3Rpb25Db21tZW50LnBoYXNlcyksXG4gICk7XG4gIGNvbnN0IG1pc3NpbmdTZWN0aW9ucyA9IChbXCJBcnJhbmdlXCIsIFwiQWN0XCIsIFwiQXNzZXJ0XCJdIGFzIGNvbnN0KS5maWx0ZXIoXG4gICAgKHBoYXNlKSA9PiAhcHJlc2VudFNlY3Rpb25zLmhhcyhwaGFzZSksXG4gICk7XG5cbiAgaWYgKG1pc3NpbmdTZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgZGF0YTogeyBzZWN0aW9uczogbWlzc2luZ1NlY3Rpb25zLmpvaW4oXCIsIFwiKSB9LFxuICAgIGZpeDpcbiAgICAgIGFuYWx5c2lzLmJvZHlMaW5lQ291bnQgPj0gM1xuICAgICAgICA/IChmaXhlcikgPT4gYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzKGFuYWx5c2lzLCBtaXNzaW5nU2VjdGlvbnMsIGZpeGVyKVxuICAgICAgICA6IG51bGwsXG4gICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdTZWN0aW9uc1wiLFxuICAgIG5vZGU6IGFuYWx5c2lzLmNhbGxFeHByZXNzaW9uLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzKFxuICBhbmFseXNpczogVGVzdEJsb2NrQW5hbHlzaXMsXG4gIG1pc3NpbmdTZWN0aW9uczogcmVhZG9ubHkgQWFhUGhhc2VbXSxcbiAgZml4ZXI6IFJ1bGUuUnVsZUZpeGVyLFxuKTogUnVsZS5GaXhbXSB7XG4gIGlmIChhbmFseXNpcy5zdGF0ZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGFuY2hvck1hcCA9IG5ldyBNYXA8bnVtYmVyLCBBYWFQaGFzZVtdPigpO1xuICBjb25zdCBzb3VyY2VMaW5lcyA9IGFuYWx5c2lzLnNvdXJjZVRleHQuc3BsaXQoL1xcclxcbnxcXG4vdSk7XG4gIGNvbnN0IGZpcnN0U3RhdGVtZW50ID0gYW5hbHlzaXMuc3RhdGVtZW50c1swXT8ubm9kZTtcbiAgY29uc3QgbWlkZGxlU3RhdGVtZW50ID1cbiAgICBhbmFseXNpcy5zdGF0ZW1lbnRzW1xuICAgICAgTWF0aC5taW4oXG4gICAgICAgIGFuYWx5c2lzLnN0YXRlbWVudHMubGVuZ3RoIC0gMSxcbiAgICAgICAgTWF0aC5mbG9vcihhbmFseXNpcy5zdGF0ZW1lbnRzLmxlbmd0aCAvIDIpLFxuICAgICAgKVxuICAgIF0/Lm5vZGU7XG4gIGNvbnN0IGxhc3RTdGF0ZW1lbnQgPSBhbmFseXNpcy5zdGF0ZW1lbnRzLmF0KC0xKT8ubm9kZTtcblxuICBmb3IgKGNvbnN0IHBoYXNlIG9mIG1pc3NpbmdTZWN0aW9ucykge1xuICAgIGNvbnN0IGFuY2hvck5vZGUgPVxuICAgICAgcGhhc2UgPT09IFwiQXJyYW5nZVwiXG4gICAgICAgID8gZmlyc3RTdGF0ZW1lbnRcbiAgICAgICAgOiBwaGFzZSA9PT0gXCJBY3RcIlxuICAgICAgICAgID8gbWlkZGxlU3RhdGVtZW50XG4gICAgICAgICAgOiBsYXN0U3RhdGVtZW50O1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBndWFyZGVkIGJ5IHRoZSBlbXB0eS1zdGF0ZW1lbnRzIGVhcmx5IHJldHVybiBhYm92ZS4gKi9cbiAgICBpZiAoYW5jaG9yTm9kZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICAgIGNvbnN0IGV4aXN0aW5nID0gYW5jaG9yTWFwLmdldChhbmNob3JOb2RlLnJhbmdlWzBdKSA/PyBbXTtcbiAgICBleGlzdGluZy5wdXNoKHBoYXNlKTtcbiAgICBhbmNob3JNYXAuc2V0KGFuY2hvck5vZGUucmFuZ2VbMF0sIGV4aXN0aW5nKTtcbiAgfVxuXG4gIHJldHVybiBbLi4uYW5jaG9yTWFwLmVudHJpZXMoKV0ubWFwKChbb2Zmc2V0LCBwaGFzZXNdKSA9PiB7XG4gICAgY29uc3Qgc29ydGVkUGhhc2VzID0gcGhhc2VzLnRvU29ydGVkKFxuICAgICAgKGxlZnQsIHJpZ2h0KSA9PiBhYWFQaGFzZU9yZGVyW2xlZnRdIC0gYWFhUGhhc2VPcmRlcltyaWdodF0sXG4gICAgKTtcbiAgICBjb25zdCBzdGF0ZW1lbnRMaW5lID0gYW5hbHlzaXMuc291cmNlVGV4dFxuICAgICAgLnNsaWNlKDAsIG9mZnNldClcbiAgICAgIC5zcGxpdCgvXFxyXFxufFxcbi91KS5sZW5ndGg7XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIGZpeGVyIGFuY2hvcnMgYWx3YXlzIHBvaW50IHRvIHJlYWwgc3RhdGVtZW50IGxpbmVzIGluIGFuYWx5emVkIHRlc3QgYmxvY2tzLiAqL1xuICAgIGNvbnN0IHByZXZpb3VzTGluZSA9IHNvdXJjZUxpbmVzW3N0YXRlbWVudExpbmUgLSAyXSA/PyBcIlwiO1xuICAgIGNvbnN0IGxpbmVTdGFydFJhbmdlID0gZ2V0TGluZVN0YXJ0UmFuZ2UoXG4gICAgICBhbmFseXNpcy5zb3VyY2VUZXh0LFxuICAgICAgc3RhdGVtZW50TGluZSxcbiAgICApO1xuICAgIGNvbnN0IG5lZWRzTGVhZGluZ0JsYW5rTGluZSA9XG4gICAgICBzb3J0ZWRQaGFzZXMuc29tZSgocGhhc2UpID0+IHBoYXNlICE9PSBcIkFycmFuZ2VcIikgJiZcbiAgICAgIHByZXZpb3VzTGluZS50cmltKCkubGVuZ3RoID4gMDtcbiAgICBjb25zdCBpbmRlbnRhdGlvbiA9XG4gICAgICAvXlxccyovdS5leGVjKHNvdXJjZUxpbmVzW3N0YXRlbWVudExpbmUgLSAxXSA/PyBcIlwiKT8uWzBdID8/IFwiXCI7XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICAgIHJldHVybiBmaXhlci5pbnNlcnRUZXh0QmVmb3JlUmFuZ2UoXG4gICAgICBsaW5lU3RhcnRSYW5nZSxcbiAgICAgIGAke25lZWRzTGVhZGluZ0JsYW5rTGluZSA/IGFuYWx5c2lzLm5ld2xpbmUgOiBcIlwifSR7aW5kZW50YXRpb259Ly8gJHtzb3J0ZWRQaGFzZXMuam9pbihcIiAmIFwiKX0ke2FuYWx5c2lzLm5ld2xpbmV9YCxcbiAgICApO1xuICB9KTtcbn1cblxuZXhwb3J0IHsgcmVxdWlyZUFhYVNlY3Rpb25zUnVsZSB9O1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/require-act-result-capture/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { requireActResultCaptureRule } from "./rule";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9yZXF1aXJlLWFjdC1yZXN1bHQtY2FwdHVyZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyByZXF1aXJlQWN0UmVzdWx0Q2FwdHVyZVJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/testing/require-act-result-capture/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,QAAA,MAAM,2BAA2B,EAAE,IAAI,CAAC,UAqCvC,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
2
|
-
import { analyzeTestBlock, hasCapturableActResult } from "../aaa";
|
|
3
|
-
const requireActResultCaptureRule = {
|
|
4
|
-
create(context) {
|
|
5
|
-
return {
|
|
6
|
-
CallExpression(node) {
|
|
7
|
-
const analysis = analyzeTestBlock(context, node);
|
|
8
|
-
if (analysis === void 0) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
for (const statement of analysis.statements) {
|
|
12
|
-
if (statement.phase !== "Act" ||
|
|
13
|
-
!hasCapturableActResult(statement.node)) {
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
context.report({
|
|
17
|
-
messageId: "captureActResult",
|
|
18
|
-
node: statement.node,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
},
|
|
24
|
-
meta: {
|
|
25
|
-
docs: createRuleDocumentation("require-act-result-capture", "Require non-void Act expressions to store the observed result before assertions."),
|
|
26
|
-
messages: {
|
|
27
|
-
captureActResult: "Capture the // Act result in a named variable before asserting on it.",
|
|
28
|
-
},
|
|
29
|
-
schema: [],
|
|
30
|
-
type: "suggestion",
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
export { requireActResultCaptureRule };
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL3JlcXVpcmUtYWN0LXJlc3VsdC1jYXB0dXJlL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWxFLE1BQU0sMkJBQTJCLEdBQW9CO0lBQ25ELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPO1lBQ0wsY0FBYyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUVELEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUM1QyxJQUNFLFNBQVMsQ0FBQyxLQUFLLEtBQUssS0FBSzt3QkFDekIsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ3ZDLENBQUM7d0JBQ0QsU0FBUztvQkFDWCxDQUFDO29CQUVELE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ2IsU0FBUyxFQUFFLGtCQUFrQjt3QkFDN0IsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO3FCQUNyQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7U0FDMEIsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLHVCQUF1QixDQUMzQiw0QkFBNEIsRUFDNUIsa0ZBQWtGLENBQ25GO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQ2QsdUVBQXVFO1NBQzFFO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgY3JlYXRlUnVsZURvY3VtZW50YXRpb24gfSBmcm9tIFwiLi4vLi4vY3VzdG9tLXJ1bGUtZG9jdW1lbnRhdGlvblwiO1xuaW1wb3J0IHsgYW5hbHl6ZVRlc3RCbG9jaywgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdCB9IGZyb20gXCIuLi9hYWFcIjtcblxuY29uc3QgcmVxdWlyZUFjdFJlc3VsdENhcHR1cmVSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIHJldHVybiB7XG4gICAgICBDYWxsRXhwcmVzc2lvbihub2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZVRlc3RCbG9jayhjb250ZXh0LCBub2RlKTtcbiAgICAgICAgaWYgKGFuYWx5c2lzID09PSB2b2lkIDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBhbmFseXNpcy5zdGF0ZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc3RhdGVtZW50LnBoYXNlICE9PSBcIkFjdFwiIHx8XG4gICAgICAgICAgICAhaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdChzdGF0ZW1lbnQubm9kZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJjYXB0dXJlQWN0UmVzdWx0XCIsXG4gICAgICAgICAgICBub2RlOiBzdGF0ZW1lbnQubm9kZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBSdWxlLlJ1bGVMaXN0ZW5lcjtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uKFxuICAgICAgXCJyZXF1aXJlLWFjdC1yZXN1bHQtY2FwdHVyZVwiLFxuICAgICAgXCJSZXF1aXJlIG5vbi12b2lkIEFjdCBleHByZXNzaW9ucyB0byBzdG9yZSB0aGUgb2JzZXJ2ZWQgcmVzdWx0IGJlZm9yZSBhc3NlcnRpb25zLlwiLFxuICAgICksXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIGNhcHR1cmVBY3RSZXN1bHQ6XG4gICAgICAgIFwiQ2FwdHVyZSB0aGUgLy8gQWN0IHJlc3VsdCBpbiBhIG5hbWVkIHZhcmlhYmxlIGJlZm9yZSBhc3NlcnRpbmcgb24gaXQuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwic3VnZ2VzdGlvblwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgcmVxdWlyZUFjdFJlc3VsdENhcHR1cmVSdWxlIH07XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/require-test-companion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,UAAU,GACX,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { buildListenerForFilename, getOptions, } from "./require-test-companion-utilities";
|
|
2
|
-
export { requireTestCompanionRule } from "./rule";
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9yZXF1aXJlLXRlc3QtY29tcGFuaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsVUFBVSxHQUNYLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgYnVpbGRMaXN0ZW5lckZvckZpbGVuYW1lLFxuICBnZXRPcHRpb25zLFxufSBmcm9tIFwiLi9yZXF1aXJlLXRlc3QtY29tcGFuaW9uLXV0aWxpdGllc1wiO1xuZXhwb3J0IHsgcmVxdWlyZVRlc3RDb21wYW5pb25SdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"require-test-companion-listeners.d.ts","sourceRoot":"","sources":["../../../src/testing/require-test-companion/require-test-companion-listeners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAuLlF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,wBAAwB,GAC5B,SAAS,IAAI,CAAC,WAAW,EACzB,UAAU,MAAM,EAChB,SAAS,yBAAyB,KACjC,IAAI,CAAC,YAuBP,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|