@codeperfect/eslint-plugin 2.0.0 → 2.2.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 +3 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/application/custom-rules.d.ts +8 -8
- package/dist/application/custom-rules.js +14 -14
- package/dist/application/index.d.ts +1 -1
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +2 -2
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +3 -4
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +5 -3
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +17 -7
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +36 -4
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +2 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/index.js +3 -1
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +247 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +136 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +8 -3
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/rule.js +12 -5
- package/dist/domain/architecture/index.d.ts +2 -1
- package/dist/domain/architecture/index.d.ts.map +1 -1
- package/dist/domain/architecture/index.js +3 -2
- package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
- package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/index.js +2 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +608 -0
- package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
- package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
- package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
- package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/types.js +2 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/rule.js +58 -6
- package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
- package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/types.js +5 -2
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
- package/dist/domain/core/prefer-interface-types/rule.js +94 -23
- package/dist/domain/custom-rule-documentation.d.ts +3 -14
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
- package/dist/domain/custom-rule-documentation.js +3 -2
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +1 -1
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/rule.js +12 -4
- package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/examples.js +119 -26
- package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/fixes.js +5 -2
- package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/reporting.js +2 -2
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/rule.js +7 -3
- package/dist/domain/docs/require-example-language/types.d.ts +1 -1
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/types.js +1 -1
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts +1 -2
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/rule.js +18 -13
- package/dist/domain/index.d.ts +2 -3
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +3 -4
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts +2 -78
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +121 -3
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +199 -4
- package/dist/domain/testing/aaa/analyzer.analysis.js +30 -188
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -92
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +93 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +184 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +5 -283
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +62 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +106 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -74
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +75 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +202 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +5 -201
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +13 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.js +32 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts +6 -13
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +14 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.js +64 -0
- package/dist/domain/testing/aaa/analyzer.super.js +29 -61
- package/dist/domain/testing/aaa/index.d.ts +1 -2
- package/dist/domain/testing/aaa/index.d.ts.map +1 -1
- package/dist/domain/testing/aaa/index.js +2 -2
- package/dist/domain/testing/aaa/types.d.ts +1 -1
- package/dist/domain/testing/aaa/types.d.ts.map +1 -1
- package/dist/domain/testing/aaa/types.js +1 -1
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
- package/dist/domain/testing/assert-actual-expected-names/rule.js +33 -5
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
- package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/rule.js +165 -3
- package/dist/domain/testing/index.d.ts +0 -3
- package/dist/domain/testing/index.d.ts.map +1 -1
- package/dist/domain/testing/index.js +1 -4
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +6 -3
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-act-result-capture/rule.js +42 -10
- package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
- package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/index.js +1 -2
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/rule.js +34 -9
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
- package/dist/domain/testing/single-act-statement/rule.js +11 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
- package/dist/infrastructure/codeperfect-plugin.js +5 -5
- package/dist/infrastructure/presets.d.ts.map +1 -1
- package/dist/infrastructure/presets.js +23 -7
- package/package.json +37 -38
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
- package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
- package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
- package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
- package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
- package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
- package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
- package/dist/domain/docs/test-helpers.d.ts +0 -50
- package/dist/domain/docs/test-helpers.d.ts.map +0 -1
- package/dist/domain/docs/test-helpers.js +0 -107
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
- package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
- package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
- package/dist/domain/testing/aaa/analyzer.js +0 -59
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -34
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -86
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -150
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -81
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -189
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -92
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -62
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -203
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
- package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
- package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
- package/dist/domain/testing/require-aaa-sections/index.js +0 -2
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
- package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
- package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
- package/dist/domain/testing/require-aaa-sections/rule.js +0 -129
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
- package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -217
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
|
@@ -1,201 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* @returns Return value output.
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* hasAsyncLogic(statement);
|
|
10
|
-
* ```
|
|
11
|
-
*/
|
|
12
|
-
function hasAsyncLogic(statement) {
|
|
13
|
-
let foundAsyncLogic = false;
|
|
14
|
-
visitNode(statement, (node) => {
|
|
15
|
-
if (node.type === "AwaitExpression") {
|
|
16
|
-
foundAsyncLogic = true;
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
if (node.type === "CallExpression" &&
|
|
20
|
-
node.callee.type === "MemberExpression" &&
|
|
21
|
-
node.callee.property.type === "Identifier" &&
|
|
22
|
-
["catch", "finally", "then"].includes(node.callee.property.name)) {
|
|
23
|
-
foundAsyncLogic = true;
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
if (node.type === "NewExpression" &&
|
|
27
|
-
getExpressionName(node.callee) === "Promise") {
|
|
28
|
-
foundAsyncLogic = true;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
return foundAsyncLogic;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Checks for await usage.
|
|
35
|
-
* @param statement Input statement value.
|
|
36
|
-
* @returns Return value output.
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* hasAwait(statement);
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
function hasAwait(statement) {
|
|
43
|
-
let foundAwait = false;
|
|
44
|
-
visitNode(statement, (node) => {
|
|
45
|
-
if (node.type === "AwaitExpression") {
|
|
46
|
-
foundAwait = true;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
return foundAwait;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Checks for blank lines before comments.
|
|
53
|
-
* @param sourceText Input sourceText value.
|
|
54
|
-
* @param comment Input comment value.
|
|
55
|
-
* @returns Return value output.
|
|
56
|
-
* @example
|
|
57
|
-
* ```typescript
|
|
58
|
-
* hasBlankLineBeforeComment(sourceText, comment);
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
|
-
function hasBlankLineBeforeComment(sourceText, comment) {
|
|
62
|
-
if (!isLocatedComment(comment)) {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
const lines = sourceText.split(/\r\n|\n/u);
|
|
66
|
-
const previousLine = lines[comment.loc.start.line - 2];
|
|
67
|
-
return previousLine === void 0 || previousLine.trim().length === 0;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Checks for capturable Act results.
|
|
71
|
-
* @param statement Input statement value.
|
|
72
|
-
* @returns Return value output.
|
|
73
|
-
* @example
|
|
74
|
-
* ```typescript
|
|
75
|
-
* hasCapturableActResult(statement);
|
|
76
|
-
* ```
|
|
77
|
-
*/
|
|
78
|
-
function hasCapturableActResult(statement) {
|
|
79
|
-
if (statement.type !== "ExpressionStatement") {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
const expression = unwrapExpression(statement.expression);
|
|
83
|
-
if (!isActionExpression(expression) || isUtilityLikeExpression(expression)) {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
const calleeName = getInvokedName(expression);
|
|
87
|
-
return (calleeName === void 0 ||
|
|
88
|
-
(!voidLikeMethodNames.has(calleeName) &&
|
|
89
|
-
!voidLikeNamePattern.test(calleeName)));
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Checks for mutation.
|
|
93
|
-
* @param statement Input statement value.
|
|
94
|
-
* @returns Return value output.
|
|
95
|
-
* @example
|
|
96
|
-
* ```typescript
|
|
97
|
-
* hasMutation(statement);
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
function hasMutation(statement) {
|
|
101
|
-
let foundMutation = false;
|
|
102
|
-
visitNode(statement, (node) => {
|
|
103
|
-
if (node.type === "AssignmentExpression" ||
|
|
104
|
-
node.type === "UpdateExpression" ||
|
|
105
|
-
node.type === "UnaryExpression") {
|
|
106
|
-
if (node.type !== "UnaryExpression" || node.operator === "delete") {
|
|
107
|
-
foundMutation = true;
|
|
108
|
-
}
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
if (node.type === "CallExpression" &&
|
|
112
|
-
node.callee.type === "MemberExpression" &&
|
|
113
|
-
node.callee.property.type === "Identifier" &&
|
|
114
|
-
arrayMutationMethods.has(node.callee.property.name)) {
|
|
115
|
-
foundMutation = true;
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
return foundMutation;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Checks for meaningful Act statements.
|
|
122
|
-
* @param statement Input statement value.
|
|
123
|
-
* @returns Return value output.
|
|
124
|
-
* @example
|
|
125
|
-
* ```typescript
|
|
126
|
-
* isMeaningfulActStatement(statement);
|
|
127
|
-
* ```
|
|
128
|
-
*/
|
|
129
|
-
function isMeaningfulActStatement(statement) {
|
|
130
|
-
const expression = getStatementExpression(statement);
|
|
131
|
-
if (expression === void 0) {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
return (isActionExpression(expression) &&
|
|
135
|
-
!isUtilityLikeExpression(expression) &&
|
|
136
|
-
!hasAssertion(statement));
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Checks for rule create calls.
|
|
140
|
-
* @param expression Input expression value.
|
|
141
|
-
* @returns Return value output.
|
|
142
|
-
* @example
|
|
143
|
-
* ```typescript
|
|
144
|
-
* isRuleCreateInvocation(expression);
|
|
145
|
-
* ```
|
|
146
|
-
*/
|
|
147
|
-
function isRuleCreateInvocation(expression) {
|
|
148
|
-
return (expression.type === "CallExpression" &&
|
|
149
|
-
expression.callee.type === "MemberExpression" &&
|
|
150
|
-
expression.callee.object.type === "Identifier" &&
|
|
151
|
-
expression.callee.property.type === "Identifier" &&
|
|
152
|
-
expression.callee.property.name === "create" &&
|
|
153
|
-
expression.callee.object.name.endsWith("Rule"));
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Checks for setup-like statements.
|
|
157
|
-
* @param statement Input statement value.
|
|
158
|
-
* @returns Return value output.
|
|
159
|
-
* @example
|
|
160
|
-
* ```typescript
|
|
161
|
-
* isSetupLikeStatement(statement);
|
|
162
|
-
* ```
|
|
163
|
-
*/
|
|
164
|
-
function isSetupLikeStatement(statement) {
|
|
165
|
-
if (statement.type === "VariableDeclaration") {
|
|
166
|
-
return statement.declarations.every((declaration) => {
|
|
167
|
-
if (declaration.init === null) {
|
|
168
|
-
return true;
|
|
169
|
-
}
|
|
170
|
-
const init = unwrapExpression(declaration.init);
|
|
171
|
-
return !isActionExpression(init) || isUtilityLikeExpression(init);
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
const expression = getStatementExpression(statement);
|
|
175
|
-
return expression !== void 0 && isUtilityLikeExpression(expression);
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Checks for utility-like expressions.
|
|
179
|
-
* @param expression Input expression value.
|
|
180
|
-
* @returns Return value output.
|
|
181
|
-
* @example
|
|
182
|
-
* ```typescript
|
|
183
|
-
* isUtilityLikeExpression(expression);
|
|
184
|
-
* ```
|
|
185
|
-
*/
|
|
186
|
-
function isUtilityLikeExpression(expression) {
|
|
187
|
-
const unwrappedExpression = unwrapExpression(expression);
|
|
188
|
-
if (!isCallableExpression(unwrappedExpression)) {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
const calleeName = getExpressionName(unwrappedExpression.callee);
|
|
192
|
-
if (calleeName === void 0) {
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
return (!isRuleCreateInvocation(unwrappedExpression) &&
|
|
196
|
-
(isUtilityConstructor(unwrappedExpression, calleeName) ||
|
|
197
|
-
isUtilityNamedCall(calleeName) ||
|
|
198
|
-
isUtilityNamespaceCall(unwrappedExpression)));
|
|
199
|
-
}
|
|
200
|
-
export { hasAsyncLogic, hasAwait, hasBlankLineBeforeComment, hasCapturableActResult, hasMutation, isMeaningfulActStatement, isSetupLikeStatement, };
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLmNsYXNzaWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUNwQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxhQUFhLENBQUMsU0FBMkI7SUFDaEQsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRTVCLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUNwQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFDRSxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQjtZQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxrQkFBa0I7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVk7WUFDMUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFDaEUsQ0FBQztZQUNELGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDdkIs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QyxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDO0FBRUQsT0FBTyxFQUNMLGFBQWEsRUFDYixRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixXQUFXLEVBQ1gsd0JBQXdCLEVBQ3hCLG9CQUFvQixHQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBTb3VyY2VDb21tZW50IH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgZ2V0U3RhdGVtZW50RXhwcmVzc2lvbixcclxuICBoYXNBc3NlcnRpb24sXHJcbiAgaXNBY3Rpb25FeHByZXNzaW9uLFxyXG4gIHVud3JhcEV4cHJlc3Npb24sXHJcbn0gZnJvbSBcIi4vYW5hbHl6ZXIuYXNzZXJ0aW9uc1wiO1xyXG5pbXBvcnQge1xyXG4gIGFycmF5TXV0YXRpb25NZXRob2RzLFxyXG4gIGdldEV4cHJlc3Npb25OYW1lLFxyXG4gIGdldEludm9rZWROYW1lLFxyXG4gIGlzQ2FsbGFibGVFeHByZXNzaW9uLFxyXG4gIGlzTG9jYXRlZENvbW1lbnQsXHJcbiAgaXNVdGlsaXR5Q29uc3RydWN0b3IsXHJcbiAgaXNVdGlsaXR5TmFtZWRDYWxsLFxyXG4gIGlzVXRpbGl0eU5hbWVzcGFjZUNhbGwsXHJcbiAgdmlzaXROb2RlLFxyXG4gIHZvaWRMaWtlTWV0aG9kTmFtZXMsXHJcbiAgdm9pZExpa2VOYW1lUGF0dGVybixcclxufSBmcm9tIFwiLi9hbmFseXplci5zdXBlclwiO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgYXN5bmMgbG9naWMuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGhhc0FzeW5jTG9naWMoc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNBc3luY0xvZ2ljKHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCk6IGJvb2xlYW4ge1xyXG4gIGxldCBmb3VuZEFzeW5jTG9naWMgPSBmYWxzZTtcclxuXHJcbiAgdmlzaXROb2RlKHN0YXRlbWVudCwgKG5vZGUpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IFwiQXdhaXRFeHByZXNzaW9uXCIpIHtcclxuICAgICAgZm91bmRBc3luY0xvZ2ljID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgbm9kZS50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcclxuICAgICAgbm9kZS5jYWxsZWUucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgICAgW1wiY2F0Y2hcIiwgXCJmaW5hbGx5XCIsIFwidGhlblwiXS5pbmNsdWRlcyhub2RlLmNhbGxlZS5wcm9wZXJ0eS5uYW1lKVxyXG4gICAgKSB7XHJcbiAgICAgIGZvdW5kQXN5bmNMb2dpYyA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIG5vZGUudHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCIgJiZcclxuICAgICAgZ2V0RXhwcmVzc2lvbk5hbWUobm9kZS5jYWxsZWUpID09PSBcIlByb21pc2VcIlxyXG4gICAgKSB7XHJcbiAgICAgIGZvdW5kQXN5bmNMb2dpYyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBmb3VuZEFzeW5jTG9naWM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIGF3YWl0IHVzYWdlLlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBoYXNBd2FpdChzdGF0ZW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGhhc0F3YWl0KHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCk6IGJvb2xlYW4ge1xyXG4gIGxldCBmb3VuZEF3YWl0ID0gZmFsc2U7XHJcblxyXG4gIHZpc2l0Tm9kZShzdGF0ZW1lbnQsIChub2RlKSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSBcIkF3YWl0RXhwcmVzc2lvblwiKSB7XHJcbiAgICAgIGZvdW5kQXdhaXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZm91bmRBd2FpdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgYmxhbmsgbGluZXMgYmVmb3JlIGNvbW1lbnRzLlxyXG4gKiBAcGFyYW0gc291cmNlVGV4dCBJbnB1dCBzb3VyY2VUZXh0IHZhbHVlLlxyXG4gKiBAcGFyYW0gY29tbWVudCBJbnB1dCBjb21tZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGhhc0JsYW5rTGluZUJlZm9yZUNvbW1lbnQoc291cmNlVGV4dCwgY29tbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudChcclxuICBzb3VyY2VUZXh0OiBzdHJpbmcsXHJcbiAgY29tbWVudDogU291cmNlQ29tbWVudCxcclxuKTogYm9vbGVhbiB7XHJcbiAgaWYgKCFpc0xvY2F0ZWRDb21tZW50KGNvbW1lbnQpKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGxpbmVzID0gc291cmNlVGV4dC5zcGxpdCgvXFxyXFxufFxcbi91KTtcclxuICBjb25zdCBwcmV2aW91c0xpbmUgPSBsaW5lc1tjb21tZW50LmxvYy5zdGFydC5saW5lIC0gMl07XHJcblxyXG4gIHJldHVybiBwcmV2aW91c0xpbmUgPT09IHZvaWQgMCB8fCBwcmV2aW91c0xpbmUudHJpbSgpLmxlbmd0aCA9PT0gMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgY2FwdHVyYWJsZSBBY3QgcmVzdWx0cy5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdChzdGF0ZW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGhhc0NhcHR1cmFibGVBY3RSZXN1bHQoc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XHJcbiAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIikge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24oc3RhdGVtZW50LmV4cHJlc3Npb24pO1xyXG4gIGlmICghaXNBY3Rpb25FeHByZXNzaW9uKGV4cHJlc3Npb24pIHx8IGlzVXRpbGl0eUxpa2VFeHByZXNzaW9uKGV4cHJlc3Npb24pKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdCBjYWxsZWVOYW1lID0gZ2V0SW52b2tlZE5hbWUoXHJcbiAgICBleHByZXNzaW9uIGFzIEVTVHJlZS5DYWxsRXhwcmVzc2lvbiB8IEVTVHJlZS5OZXdFeHByZXNzaW9uLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICBjYWxsZWVOYW1lID09PSB2b2lkIDAgfHxcclxuICAgICghdm9pZExpa2VNZXRob2ROYW1lcy5oYXMoY2FsbGVlTmFtZSkgJiZcclxuICAgICAgIXZvaWRMaWtlTmFtZVBhdHRlcm4udGVzdChjYWxsZWVOYW1lKSlcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBtdXRhdGlvbi5cclxuICogQHBhcmFtIHN0YXRlbWVudCBJbnB1dCBzdGF0ZW1lbnQgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaGFzTXV0YXRpb24oc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBoYXNNdXRhdGlvbihzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBsZXQgZm91bmRNdXRhdGlvbiA9IGZhbHNlO1xyXG5cclxuICB2aXNpdE5vZGUoc3RhdGVtZW50LCAobm9kZSkgPT4ge1xyXG4gICAgaWYgKFxyXG4gICAgICBub2RlLnR5cGUgPT09IFwiQXNzaWdubWVudEV4cHJlc3Npb25cIiB8fFxyXG4gICAgICBub2RlLnR5cGUgPT09IFwiVXBkYXRlRXhwcmVzc2lvblwiIHx8XHJcbiAgICAgIG5vZGUudHlwZSA9PT0gXCJVbmFyeUV4cHJlc3Npb25cIlxyXG4gICAgKSB7XHJcbiAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiVW5hcnlFeHByZXNzaW9uXCIgfHwgbm9kZS5vcGVyYXRvciA9PT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgIGZvdW5kTXV0YXRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBub2RlLnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxyXG4gICAgICBub2RlLmNhbGxlZS50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJlxyXG4gICAgICBub2RlLmNhbGxlZS5wcm9wZXJ0eS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxyXG4gICAgICBhcnJheU11dGF0aW9uTWV0aG9kcy5oYXMobm9kZS5jYWxsZWUucHJvcGVydHkubmFtZSlcclxuICAgICkge1xyXG4gICAgICBmb3VuZE11dGF0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGZvdW5kTXV0YXRpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIG1lYW5pbmdmdWwgQWN0IHN0YXRlbWVudHMuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudChzdGF0ZW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcclxuICBjb25zdCBleHByZXNzaW9uID0gZ2V0U3RhdGVtZW50RXhwcmVzc2lvbihzdGF0ZW1lbnQpO1xyXG4gIGlmIChleHByZXNzaW9uID09PSB2b2lkIDApIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICBpc0FjdGlvbkV4cHJlc3Npb24oZXhwcmVzc2lvbikgJiZcclxuICAgICFpc1V0aWxpdHlMaWtlRXhwcmVzc2lvbihleHByZXNzaW9uKSAmJlxyXG4gICAgIWhhc0Fzc2VydGlvbihzdGF0ZW1lbnQpXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBmb3IgcnVsZSBjcmVhdGUgY2FsbHMuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNSdWxlQ3JlYXRlSW52b2NhdGlvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1J1bGVDcmVhdGVJbnZvY2F0aW9uKFxyXG4gIGV4cHJlc3Npb246IEVTVHJlZS5DYWxsRXhwcmVzc2lvbiB8IEVTVHJlZS5OZXdFeHByZXNzaW9uLFxyXG4pOiBib29sZWFuIHtcclxuICByZXR1cm4gKFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnByb3BlcnR5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS5wcm9wZXJ0eS5uYW1lID09PSBcImNyZWF0ZVwiICYmXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QubmFtZS5lbmRzV2l0aChcIlJ1bGVcIilcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGZvciBzZXR1cC1saWtlIHN0YXRlbWVudHMuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgSW5wdXQgc3RhdGVtZW50IHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzU2V0dXBMaWtlU3RhdGVtZW50KHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNTZXR1cExpa2VTdGF0ZW1lbnQoc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XHJcbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xyXG4gICAgcmV0dXJuIHN0YXRlbWVudC5kZWNsYXJhdGlvbnMuZXZlcnkoKGRlY2xhcmF0aW9uKSA9PiB7XHJcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5pbml0ID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGluaXQgPSB1bndyYXBFeHByZXNzaW9uKGRlY2xhcmF0aW9uLmluaXQpO1xyXG5cclxuICAgICAgcmV0dXJuICFpc0FjdGlvbkV4cHJlc3Npb24oaW5pdCkgfHwgaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oaW5pdCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGV4cHJlc3Npb24gPSBnZXRTdGF0ZW1lbnRFeHByZXNzaW9uKHN0YXRlbWVudCk7XHJcblxyXG4gIHJldHVybiBleHByZXNzaW9uICE9PSB2b2lkIDAgJiYgaXNVdGlsaXR5TGlrZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgZm9yIHV0aWxpdHktbGlrZSBleHByZXNzaW9ucy5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1V0aWxpdHlMaWtlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1V0aWxpdHlMaWtlRXhwcmVzc2lvbihcclxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCxcclxuKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgdW53cmFwcGVkRXhwcmVzc2lvbiA9IHVud3JhcEV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAgaWYgKCFpc0NhbGxhYmxlRXhwcmVzc2lvbih1bndyYXBwZWRFeHByZXNzaW9uKSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgY2FsbGVlTmFtZSA9IGdldEV4cHJlc3Npb25OYW1lKHVud3JhcHBlZEV4cHJlc3Npb24uY2FsbGVlKTtcclxuICBpZiAoY2FsbGVlTmFtZSA9PT0gdm9pZCAwKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgIWlzUnVsZUNyZWF0ZUludm9jYXRpb24odW53cmFwcGVkRXhwcmVzc2lvbikgJiZcclxuICAgIChpc1V0aWxpdHlDb25zdHJ1Y3Rvcih1bndyYXBwZWRFeHByZXNzaW9uLCBjYWxsZWVOYW1lKSB8fFxyXG4gICAgICBpc1V0aWxpdHlOYW1lZENhbGwoY2FsbGVlTmFtZSkgfHxcclxuICAgICAgaXNVdGlsaXR5TmFtZXNwYWNlQ2FsbCh1bndyYXBwZWRFeHByZXNzaW9uKSlcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQge1xyXG4gIGhhc0FzeW5jTG9naWMsXHJcbiAgaGFzQXdhaXQsXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudCxcclxuICBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0LFxyXG4gIGhhc011dGF0aW9uLFxyXG4gIGlzTWVhbmluZ2Z1bEFjdFN0YXRlbWVudCxcclxuICBpc1NldHVwTGlrZVN0YXRlbWVudCxcclxufTtcclxuIl19
|
|
1
|
+
/** Companion module retained for companion-spec enforcement after wrapper export removal. */
|
|
2
|
+
const analyzerClassificationModuleCompanion = void 0;
|
|
3
|
+
JSON.stringify(analyzerClassificationModuleCompanion);
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLmNsYXNzaWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDZGQUE2RjtBQUM3RixNQUFNLHFDQUFxQyxHQUN6QyxLQUFLLENBQUMsQ0FBQztBQUVULElBQUksQ0FBQyxTQUFTLENBQUMscUNBQXFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVGVzdEJsb2NrQW5hbHlzaXMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKiogQ29tcGFuaW9uIG1vZHVsZSByZXRhaW5lZCBmb3IgY29tcGFuaW9uLXNwZWMgZW5mb3JjZW1lbnQgYWZ0ZXIgd3JhcHBlciBleHBvcnQgcmVtb3ZhbC4gKi9cbmNvbnN0IGFuYWx5emVyQ2xhc3NpZmljYXRpb25Nb2R1bGVDb21wYW5pb246IFRlc3RCbG9ja0FuYWx5c2lzIHwgdW5kZWZpbmVkID1cbiAgdm9pZCAwO1xuXG5KU09OLnN0cmluZ2lmeShhbmFseXplckNsYXNzaWZpY2F0aW9uTW9kdWxlQ29tcGFuaW9uKTtcbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
/**
|
|
3
|
+
* Visits a statement while skipping nested function bodies that execute later.
|
|
4
|
+
* @param statement Input statement value.
|
|
5
|
+
* @param callback Input callback value.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* visitStatementWithoutDeferredBodies(statement, () => {});
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
declare function visitStatementWithoutDeferredBodies(statement: ESTree.Statement, callback: (node: ESTree.Node) => void): void;
|
|
12
|
+
export { visitStatementWithoutDeferredBodies };
|
|
13
|
+
//# sourceMappingURL=analyzer.classification.traversal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.classification.traversal.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.classification.traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAqBtC;;;;;;;;GAQG;AACH,iBAAS,mCAAmC,CAC1C,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,GACpC,IAAI,CAKN;AAED,OAAO,EAAE,mCAAmC,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { visitNode } from "./analyzer.super.helpers.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks whether a node introduces deferred execution.
|
|
4
|
+
* @param node Input node value.
|
|
5
|
+
* @returns Return value output.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* isDeferredFunctionNode({ type: "ArrowFunctionExpression" } as ESTree.Node);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
function isDeferredFunctionNode(node) {
|
|
12
|
+
return (node.type === "ArrowFunctionExpression" ||
|
|
13
|
+
node.type === "FunctionDeclaration" ||
|
|
14
|
+
node.type === "FunctionExpression");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Visits a statement while skipping nested function bodies that execute later.
|
|
18
|
+
* @param statement Input statement value.
|
|
19
|
+
* @param callback Input callback value.
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* visitStatementWithoutDeferredBodies(statement, () => {});
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function visitStatementWithoutDeferredBodies(statement, callback) {
|
|
26
|
+
visitNode(statement, (node) => {
|
|
27
|
+
callback(node);
|
|
28
|
+
return node === statement || !isDeferredFunctionNode(node);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export { visitStatementWithoutDeferredBodies };
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuY2xhc3NpZmljYXRpb24udHJhdmVyc2FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL2FhYS9hbmFseXplci5jbGFzc2lmaWNhdGlvbi50cmF2ZXJzYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxJQUFpQjtJQUMvQyxPQUFPLENBQ0wsSUFBSSxDQUFDLElBQUksS0FBSyx5QkFBeUI7UUFDdkMsSUFBSSxDQUFDLElBQUksS0FBSyxxQkFBcUI7UUFDbkMsSUFBSSxDQUFDLElBQUksS0FBSyxvQkFBb0IsQ0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsbUNBQW1DLENBQzFDLFNBQTJCLEVBQzNCLFFBQXFDO0lBRXJDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZixPQUFPLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbmltcG9ydCB7IHZpc2l0Tm9kZSB9IGZyb20gXCIuL2FuYWx5emVyLnN1cGVyLmhlbHBlcnNcIjtcclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgaW50cm9kdWNlcyBkZWZlcnJlZCBleGVjdXRpb24uXHJcbiAqIEBwYXJhbSBub2RlIElucHV0IG5vZGUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNEZWZlcnJlZEZ1bmN0aW9uTm9kZSh7IHR5cGU6IFwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb25cIiB9IGFzIEVTVHJlZS5Ob2RlKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0RlZmVycmVkRnVuY3Rpb25Ob2RlKG5vZGU6IEVTVHJlZS5Ob2RlKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIChcclxuICAgIG5vZGUudHlwZSA9PT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiIHx8XHJcbiAgICBub2RlLnR5cGUgPT09IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiIHx8XHJcbiAgICBub2RlLnR5cGUgPT09IFwiRnVuY3Rpb25FeHByZXNzaW9uXCJcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogVmlzaXRzIGEgc3RhdGVtZW50IHdoaWxlIHNraXBwaW5nIG5lc3RlZCBmdW5jdGlvbiBib2RpZXMgdGhhdCBleGVjdXRlIGxhdGVyLlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IElucHV0IHN0YXRlbWVudCB2YWx1ZS5cclxuICogQHBhcmFtIGNhbGxiYWNrIElucHV0IGNhbGxiYWNrIHZhbHVlLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIHZpc2l0U3RhdGVtZW50V2l0aG91dERlZmVycmVkQm9kaWVzKHN0YXRlbWVudCwgKCkgPT4ge30pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHZpc2l0U3RhdGVtZW50V2l0aG91dERlZmVycmVkQm9kaWVzKFxyXG4gIHN0YXRlbWVudDogRVNUcmVlLlN0YXRlbWVudCxcclxuICBjYWxsYmFjazogKG5vZGU6IEVTVHJlZS5Ob2RlKSA9PiB2b2lkLFxyXG4pOiB2b2lkIHtcclxuICB2aXNpdE5vZGUoc3RhdGVtZW50LCAobm9kZSkgPT4ge1xyXG4gICAgY2FsbGJhY2sobm9kZSk7XHJcbiAgICByZXR1cm4gbm9kZSA9PT0gc3RhdGVtZW50IHx8ICFpc0RlZmVycmVkRnVuY3Rpb25Ob2RlKG5vZGUpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgeyB2aXNpdFN0YXRlbWVudFdpdGhvdXREZWZlcnJlZEJvZGllcyB9O1xyXG4iXX0=
|
|
@@ -2,14 +2,8 @@ import type * as ESTree from "estree";
|
|
|
2
2
|
import type { LocatedComment, SourceComment } from "./types.js";
|
|
3
3
|
/** Array mutator methods that imply observable state changes. */
|
|
4
4
|
declare const arrayMutationMethods: Set<string>;
|
|
5
|
-
/** Names that usually signal Arrange-oriented helper calls. */
|
|
6
|
-
declare const setupLikeNames: RegExp;
|
|
7
|
-
/** Call names that should be treated as utility operations instead of Act steps. */
|
|
8
|
-
declare const utilityMethodNames: Set<string>;
|
|
9
5
|
/** Method names that usually behave like void side-effect helpers. */
|
|
10
6
|
declare const voidLikeMethodNames: Set<string>;
|
|
11
|
-
/** Name pattern used for void-like method detection. */
|
|
12
|
-
declare const voidLikeNamePattern: RegExp;
|
|
13
7
|
/**
|
|
14
8
|
* Gets an expression name when it can be resolved statically.
|
|
15
9
|
* @param expression Input expression value.
|
|
@@ -93,15 +87,14 @@ declare function isUtilityNamedCall(calleeName: string): boolean;
|
|
|
93
87
|
*/
|
|
94
88
|
declare function isUtilityNamespaceCall(expression: ESTree.CallExpression | ESTree.NewExpression): boolean;
|
|
95
89
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param
|
|
98
|
-
* @
|
|
99
|
-
* @param seenNodes Input seenNodes value.
|
|
90
|
+
* Checks whether a call name is built from void-like verb tokens.
|
|
91
|
+
* @param calleeName Input calleeName value.
|
|
92
|
+
* @returns Return value output.
|
|
100
93
|
* @example
|
|
101
94
|
* ```typescript
|
|
102
|
-
*
|
|
95
|
+
* isVoidLikeMethodName("scheduleAndFlush");
|
|
103
96
|
* ```
|
|
104
97
|
*/
|
|
105
|
-
declare function
|
|
106
|
-
export { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isRangeWithin, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall,
|
|
98
|
+
declare function isVoidLikeMethodName(calleeName: string): boolean;
|
|
99
|
+
export { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isRangeWithin, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall, isVoidLikeMethodName, voidLikeMethodNames, };
|
|
107
100
|
//# sourceMappingURL=analyzer.super.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.super.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.super.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analyzer.super.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.super.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7D,iEAAiE;AACjE,QAAA,MAAM,oBAAoB,aAUxB,CAAC;AA0BH,sEAAsE;AACtE,QAAA,MAAM,mBAAmB,aAcvB,CAAC;AAEH;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CACxB,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK,GACtE,MAAM,GAAG,SAAS,CAiBpB;AAED;;;;;;;;GAQG;AACH,iBAAS,cAAc,CACrB,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,GACvD,MAAM,GAAG,SAAS,CAEpB;AAkBD;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAC3B,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GACxC,UAAU,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAK5D;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,IAAI,cAAc,CAI3E;AAED;;;;;;;;;GASG;AACH,iBAAS,aAAa,CACpB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACvB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAET;AAED;;;;;;;;;GASG;AACH,iBAAS,oBAAoB,CAC3B,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,EACxD,UAAU,EAAE,MAAM,GACjB,OAAO,CAWT;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;GAQG;AACH,iBAAS,sBAAsB,CAC7B,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,GACvD,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
/**
|
|
3
|
+
* Visits an ESTree node graph while ignoring cycles.
|
|
4
|
+
* @param node Input node value.
|
|
5
|
+
* @param callback Input callback value.
|
|
6
|
+
* @param seenNodes Input seenNodes value.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* visitNode(node, () => {});
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
declare function visitNode(node: ESTree.Node, callback: (node: ESTree.Node) => boolean | undefined, seenNodes?: WeakSet<object>): void;
|
|
13
|
+
export { visitNode };
|
|
14
|
+
//# sourceMappingURL=analyzer.super.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer.super.helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/aaa/analyzer.super.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAyBtC;;;;;;;;;GASG;AACH,iBAAS,SAAS,CAChB,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,GAAG,SAAS,EACpD,SAAS,kBAAwB,GAChC,IAAI,CAeN;AAgCD,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks whether a value is an ESTree node.
|
|
3
|
+
* @param value The value to test.
|
|
4
|
+
* @returns `true` when value is an ESTree node, `false` otherwise.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* isNode({ type: "Identifier" }); // true
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
function isNode(value) {
|
|
11
|
+
return (typeof value === "object" &&
|
|
12
|
+
value !== null &&
|
|
13
|
+
"type" in value &&
|
|
14
|
+
typeof value.type === "string");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Visits an ESTree node graph while ignoring cycles.
|
|
18
|
+
* @param node Input node value.
|
|
19
|
+
* @param callback Input callback value.
|
|
20
|
+
* @param seenNodes Input seenNodes value.
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* visitNode(node, () => {});
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
function visitNode(node, callback, seenNodes = new WeakSet()) {
|
|
27
|
+
if (seenNodes.has(node)) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
seenNodes.add(node);
|
|
31
|
+
if (callback(node) === false) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
for (const [key, value] of Object.entries(node)) {
|
|
35
|
+
if (key !== "parent") {
|
|
36
|
+
visitValue(value, callback, seenNodes);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Visits child values that may contain nested ESTree nodes.
|
|
42
|
+
* @param value Input value value.
|
|
43
|
+
* @param callback Input callback value.
|
|
44
|
+
* @param seenNodes Input seenNodes value.
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* visitValue(value, () => {}, new WeakSet<object>());
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
function visitValue(value, callback, seenNodes) {
|
|
51
|
+
if (Array.isArray(value)) {
|
|
52
|
+
for (const item of value) {
|
|
53
|
+
if (isNode(item)) {
|
|
54
|
+
visitNode(item, callback, seenNodes);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (isNode(value)) {
|
|
60
|
+
visitNode(value, callback, seenNodes);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export { visitNode };
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuc3VwZXIuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9hYWEvYW5hbHl6ZXIuc3VwZXIuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsTUFBTSxDQUFDLEtBQWM7SUFDNUIsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDZCxNQUFNLElBQUksS0FBSztRQUNmLE9BQ0UsS0FJRCxDQUFDLElBQUksS0FBSyxRQUFRLENBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxTQUFTLENBQ2hCLElBQWlCLEVBQ2pCLFFBQW9ELEVBQ3BELFlBQVksSUFBSSxPQUFPLEVBQVU7SUFFakMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTztJQUNULENBQUM7SUFFRCxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzdCLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNyQixVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLFVBQVUsQ0FDakIsS0FBYyxFQUNkLFFBQW9ELEVBQ3BELFNBQTBCO0lBRTFCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEIsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztBQUNILENBQUM7QUFFRCxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhbiBFU1RyZWUgbm9kZS5cclxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxyXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB2YWx1ZSBpcyBhbiBFU1RyZWUgbm9kZSwgYGZhbHNlYCBvdGhlcndpc2UuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNOb2RlKHsgdHlwZTogXCJJZGVudGlmaWVyXCIgfSk7IC8vIHRydWVcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc05vZGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFU1RyZWUuTm9kZSB7XHJcbiAgcmV0dXJuIChcclxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxyXG4gICAgdmFsdWUgIT09IG51bGwgJiZcclxuICAgIFwidHlwZVwiIGluIHZhbHVlICYmXHJcbiAgICB0eXBlb2YgKFxyXG4gICAgICB2YWx1ZSBhcyB7XHJcbiAgICAgICAgLyoqIFBvdGVudGlhbCBFU1RyZWUgbm9kZSB0eXBlIGZpZWxkLiAqL1xyXG4gICAgICAgIHR5cGU/OiB1bmtub3duO1xyXG4gICAgICB9XHJcbiAgICApLnR5cGUgPT09IFwic3RyaW5nXCJcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogVmlzaXRzIGFuIEVTVHJlZSBub2RlIGdyYXBoIHdoaWxlIGlnbm9yaW5nIGN5Y2xlcy5cclxuICogQHBhcmFtIG5vZGUgSW5wdXQgbm9kZSB2YWx1ZS5cclxuICogQHBhcmFtIGNhbGxiYWNrIElucHV0IGNhbGxiYWNrIHZhbHVlLlxyXG4gKiBAcGFyYW0gc2Vlbk5vZGVzIElucHV0IHNlZW5Ob2RlcyB2YWx1ZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB2aXNpdE5vZGUobm9kZSwgKCkgPT4ge30pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHZpc2l0Tm9kZShcclxuICBub2RlOiBFU1RyZWUuTm9kZSxcclxuICBjYWxsYmFjazogKG5vZGU6IEVTVHJlZS5Ob2RlKSA9PiBib29sZWFuIHwgdW5kZWZpbmVkLFxyXG4gIHNlZW5Ob2RlcyA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKSxcclxuKTogdm9pZCB7XHJcbiAgaWYgKHNlZW5Ob2Rlcy5oYXMobm9kZSkpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHNlZW5Ob2Rlcy5hZGQobm9kZSk7XHJcbiAgaWYgKGNhbGxiYWNrKG5vZGUpID09PSBmYWxzZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobm9kZSkpIHtcclxuICAgIGlmIChrZXkgIT09IFwicGFyZW50XCIpIHtcclxuICAgICAgdmlzaXRWYWx1ZSh2YWx1ZSwgY2FsbGJhY2ssIHNlZW5Ob2Rlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmlzaXRzIGNoaWxkIHZhbHVlcyB0aGF0IG1heSBjb250YWluIG5lc3RlZCBFU1RyZWUgbm9kZXMuXHJcbiAqIEBwYXJhbSB2YWx1ZSBJbnB1dCB2YWx1ZSB2YWx1ZS5cclxuICogQHBhcmFtIGNhbGxiYWNrIElucHV0IGNhbGxiYWNrIHZhbHVlLlxyXG4gKiBAcGFyYW0gc2Vlbk5vZGVzIElucHV0IHNlZW5Ob2RlcyB2YWx1ZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB2aXNpdFZhbHVlKHZhbHVlLCAoKSA9PiB7fSwgbmV3IFdlYWtTZXQ8b2JqZWN0PigpKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiB2aXNpdFZhbHVlKFxyXG4gIHZhbHVlOiB1bmtub3duLFxyXG4gIGNhbGxiYWNrOiAobm9kZTogRVNUcmVlLk5vZGUpID0+IGJvb2xlYW4gfCB1bmRlZmluZWQsXHJcbiAgc2Vlbk5vZGVzOiBXZWFrU2V0PG9iamVjdD4sXHJcbik6IHZvaWQge1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XHJcbiAgICAgIGlmIChpc05vZGUoaXRlbSkpIHtcclxuICAgICAgICB2aXNpdE5vZGUoaXRlbSwgY2FsbGJhY2ssIHNlZW5Ob2Rlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xyXG4gICAgdmlzaXROb2RlKHZhbHVlLCBjYWxsYmFjaywgc2Vlbk5vZGVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IHZpc2l0Tm9kZSB9O1xyXG4iXX0=
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint max-lines: ["error", 320] -- Mandatory multiline JSDoc for these shared helper functions pushes this split file over the default limit. */
|
|
2
1
|
/** Array mutator methods that imply observable state changes. */
|
|
3
2
|
const arrayMutationMethods = new Set([
|
|
4
3
|
"copyWithin",
|
|
@@ -38,6 +37,7 @@ const voidLikeMethodNames = new Set([
|
|
|
38
37
|
"debug",
|
|
39
38
|
"dispatch",
|
|
40
39
|
"emit",
|
|
40
|
+
"flush",
|
|
41
41
|
"info",
|
|
42
42
|
"log",
|
|
43
43
|
"print",
|
|
@@ -47,8 +47,6 @@ const voidLikeMethodNames = new Set([
|
|
|
47
47
|
"trigger",
|
|
48
48
|
"warn",
|
|
49
49
|
]);
|
|
50
|
-
/** Name pattern used for void-like method detection. */
|
|
51
|
-
const voidLikeNamePattern = /^(?:clear|debug|dispatch|emit|info|log|print|publish|reset|set|trigger|warn)/u;
|
|
52
50
|
/**
|
|
53
51
|
* Gets an expression name when it can be resolved statically.
|
|
54
52
|
* @param expression Input expression value.
|
|
@@ -83,6 +81,21 @@ function getExpressionName(expression) {
|
|
|
83
81
|
function getInvokedName(expression) {
|
|
84
82
|
return getExpressionName(expression.callee);
|
|
85
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Splits an identifier into lowercase word tokens.
|
|
86
|
+
* @param identifier Input identifier value.
|
|
87
|
+
* @returns Return value output.
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* getNameWords("scheduleAndFlush");
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
function getNameWords(identifier) {
|
|
94
|
+
return identifier
|
|
95
|
+
.split(/(?=[A-Z])|[_-]/u)
|
|
96
|
+
.map((segment) => segment.toLowerCase())
|
|
97
|
+
.filter((segment) => segment.length > 0);
|
|
98
|
+
}
|
|
86
99
|
/**
|
|
87
100
|
* Checks whether an expression is callable.
|
|
88
101
|
* @param expression Input expression value.
|
|
@@ -108,21 +121,6 @@ function isCallableExpression(expression) {
|
|
|
108
121
|
function isLocatedComment(comment) {
|
|
109
122
|
return (comment.loc !== null && comment.loc !== void 0 && comment.range !== void 0);
|
|
110
123
|
}
|
|
111
|
-
/**
|
|
112
|
-
* Checks whether a value is an ESTree node.
|
|
113
|
-
* @param value Input value value.
|
|
114
|
-
* @returns Return value output.
|
|
115
|
-
* @example
|
|
116
|
-
* ```typescript
|
|
117
|
-
* isNode(value);
|
|
118
|
-
* ```
|
|
119
|
-
*/
|
|
120
|
-
function isNode(value) {
|
|
121
|
-
return (typeof value === "object" &&
|
|
122
|
-
value !== null &&
|
|
123
|
-
"type" in value &&
|
|
124
|
-
typeof value.type === "string");
|
|
125
|
-
}
|
|
126
124
|
/**
|
|
127
125
|
* Checks whether a range is fully contained within another range.
|
|
128
126
|
* @param range Input range value.
|
|
@@ -148,10 +146,13 @@ function isRangeWithin(range, container) {
|
|
|
148
146
|
*/
|
|
149
147
|
function isUtilityConstructor(expression, calleeName) {
|
|
150
148
|
return (expression.type === "NewExpression" &&
|
|
151
|
-
(calleeName === "
|
|
149
|
+
(calleeName === "Error" ||
|
|
150
|
+
calleeName === "Map" ||
|
|
152
151
|
calleeName === "Set" ||
|
|
153
152
|
calleeName === "SourceCode" ||
|
|
154
|
-
calleeName === "ESLint"
|
|
153
|
+
calleeName === "ESLint" ||
|
|
154
|
+
calleeName === "WeakMap" ||
|
|
155
|
+
calleeName === "WeakSet"));
|
|
155
156
|
}
|
|
156
157
|
/**
|
|
157
158
|
* Checks whether a callee name looks utility-like.
|
|
@@ -180,49 +181,16 @@ function isUtilityNamespaceCall(expression) {
|
|
|
180
181
|
["console", "vi"].includes(expression.callee.object.name));
|
|
181
182
|
}
|
|
182
183
|
/**
|
|
183
|
-
*
|
|
184
|
-
* @param
|
|
185
|
-
* @
|
|
186
|
-
* @param seenNodes Input seenNodes value.
|
|
187
|
-
* @example
|
|
188
|
-
* ```typescript
|
|
189
|
-
* visitNode(node, () => {});
|
|
190
|
-
* ```
|
|
191
|
-
*/
|
|
192
|
-
function visitNode(node, callback, seenNodes = new WeakSet()) {
|
|
193
|
-
if (seenNodes.has(node)) {
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
seenNodes.add(node);
|
|
197
|
-
callback(node);
|
|
198
|
-
for (const [key, value] of Object.entries(node)) {
|
|
199
|
-
if (key !== "parent") {
|
|
200
|
-
visitValue(value, callback, seenNodes);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Visits child values that may contain nested ESTree nodes.
|
|
206
|
-
* @param value Input value value.
|
|
207
|
-
* @param callback Input callback value.
|
|
208
|
-
* @param seenNodes Input seenNodes value.
|
|
184
|
+
* Checks whether a call name is built from void-like verb tokens.
|
|
185
|
+
* @param calleeName Input calleeName value.
|
|
186
|
+
* @returns Return value output.
|
|
209
187
|
* @example
|
|
210
188
|
* ```typescript
|
|
211
|
-
*
|
|
189
|
+
* isVoidLikeMethodName("scheduleAndFlush");
|
|
212
190
|
* ```
|
|
213
191
|
*/
|
|
214
|
-
function
|
|
215
|
-
|
|
216
|
-
for (const item of value) {
|
|
217
|
-
if (isNode(item)) {
|
|
218
|
-
visitNode(item, callback, seenNodes);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
if (isNode(value)) {
|
|
224
|
-
visitNode(value, callback, seenNodes);
|
|
225
|
-
}
|
|
192
|
+
function isVoidLikeMethodName(calleeName) {
|
|
193
|
+
return getNameWords(calleeName).some((word) => voidLikeMethodNames.has(word));
|
|
226
194
|
}
|
|
227
|
-
export { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isRangeWithin, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall,
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuc3VwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLnN1cGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9KQUFvSjtBQU1wSixpRUFBaUU7QUFDakUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxZQUFZO0lBQ1osTUFBTTtJQUNOLEtBQUs7SUFDTCxNQUFNO0lBQ04sU0FBUztJQUNULE9BQU87SUFDUCxNQUFNO0lBQ04sUUFBUTtJQUNSLFNBQVM7Q0FDVixDQUFDLENBQUM7QUFFSCwrREFBK0Q7QUFDL0QsTUFBTSxjQUFjLEdBQ2xCLHdGQUF3RixDQUFDO0FBRTNGLG9GQUFvRjtBQUNwRixNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2pDLHFCQUFxQjtJQUNyQixlQUFlO0lBQ2YsT0FBTztJQUNQLElBQUk7SUFDSixNQUFNO0lBQ04sTUFBTTtJQUNOLEtBQUs7SUFDTCxvQkFBb0I7SUFDcEIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsTUFBTTtJQUNOLGVBQWU7SUFDZixTQUFTO0lBQ1QsZUFBZTtJQUNmLE1BQU07Q0FDUCxDQUFDLENBQUM7QUFFSCxzRUFBc0U7QUFDdEUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNsQyxPQUFPO0lBQ1AsT0FBTztJQUNQLFVBQVU7SUFDVixNQUFNO0lBQ04sTUFBTTtJQUNOLEtBQUs7SUFDTCxPQUFPO0lBQ1AsU0FBUztJQUNULE9BQU87SUFDUCxLQUFLO0lBQ0wsU0FBUztJQUNULE1BQU07Q0FDUCxDQUFDLENBQUM7QUFFSCx3REFBd0Q7QUFDeEQsTUFBTSxtQkFBbUIsR0FDdkIsK0VBQStFLENBQUM7QUFRbEY7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGlCQUFpQixDQUN4QixVQUF1RTtJQUV2RSxJQUFJLFVBQVUs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U0FBUyxFQUNULG1CQUFtQixFQUNuQixtQkFBbUIsR0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBtYXgtbGluZXM6IFtcImVycm9yXCIsIDMyMF0gLS0gTWFuZGF0b3J5IG11bHRpbGluZSBKU0RvYyBmb3IgdGhlc2Ugc2hhcmVkIGhlbHBlciBmdW5jdGlvbnMgcHVzaGVzIHRoaXMgc3BsaXQgZmlsZSBvdmVyIHRoZSBkZWZhdWx0IGxpbWl0LiAqL1xyXG5cclxuaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBMb2NhdGVkQ29tbWVudCwgU291cmNlQ29tbWVudCB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG4vKiogQXJyYXkgbXV0YXRvciBtZXRob2RzIHRoYXQgaW1wbHkgb2JzZXJ2YWJsZSBzdGF0ZSBjaGFuZ2VzLiAqL1xyXG5jb25zdCBhcnJheU11dGF0aW9uTWV0aG9kcyA9IG5ldyBTZXQoW1xyXG4gIFwiY29weVdpdGhpblwiLFxyXG4gIFwiZmlsbFwiLFxyXG4gIFwicG9wXCIsXHJcbiAgXCJwdXNoXCIsXHJcbiAgXCJyZXZlcnNlXCIsXHJcbiAgXCJzaGlmdFwiLFxyXG4gIFwic29ydFwiLFxyXG4gIFwic3BsaWNlXCIsXHJcbiAgXCJ1bnNoaWZ0XCIsXHJcbl0pO1xyXG5cclxuLyoqIE5hbWVzIHRoYXQgdXN1YWxseSBzaWduYWwgQXJyYW5nZS1vcmllbnRlZCBoZWxwZXIgY2FsbHMuICovXHJcbmNvbnN0IHNldHVwTGlrZU5hbWVzID1cclxuICAvXig/OmFycmFuZ2V8YnVpbGR8Y3JlYXRlfGZpeHR1cmV8Z2V0fGdpdmVufG1ha2V8bW9ja3xwYXJzZXxzZWVkfHNldHVwfHNweXxzdHVifHdyaXRlKS91O1xyXG5cclxuLyoqIENhbGwgbmFtZXMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCBhcyB1dGlsaXR5IG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBY3Qgc3RlcHMuICovXHJcbmNvbnN0IHV0aWxpdHlNZXRob2ROYW1lcyA9IG5ldyBTZXQoW1xyXG4gIFwiYWR2YW5jZVRpbWVyc0J5VGltZVwiLFxyXG4gIFwiY2xlYXJBbGxNb2Nrc1wiLFxyXG4gIFwiZGVidWdcIixcclxuICBcImZuXCIsXHJcbiAgXCJpbmZvXCIsXHJcbiAgXCJqb2luXCIsXHJcbiAgXCJsb2dcIixcclxuICBcIm1vY2tJbXBsZW1lbnRhdGlvblwiLFxyXG4gIFwibW9ja1JlamVjdGVkVmFsdWVcIixcclxuICBcIm1vY2tSZXNvbHZlZFZhbHVlXCIsXHJcbiAgXCJtb2NrUmV0dXJuVmFsdWVcIixcclxuICBcInB1c2hcIixcclxuICBcInJlc2V0QWxsTW9ja3NcIixcclxuICBcInJlc29sdmVcIixcclxuICBcInVzZUZha2VUaW1lcnNcIixcclxuICBcIndhcm5cIixcclxuXSk7XHJcblxyXG4vKiogTWV0aG9kIG5hbWVzIHRoYXQgdXN1YWxseSBiZWhhdmUgbGlrZSB2b2lkIHNpZGUtZWZmZWN0IGhlbHBlcnMuICovXHJcbmNvbnN0IHZvaWRMaWtlTWV0aG9kTmFtZXMgPSBuZXcgU2V0KFtcclxuICBcImNsZWFyXCIsXHJcbiAgXCJkZWJ1Z1wiLFxyXG4gIFwiZGlzcGF0Y2hcIixcclxuICBcImVtaXRcIixcclxuICBcImluZm9cIixcclxuICBcImxvZ1wiLFxyXG4gIFwicHJpbnRcIixcclxuICBcInB1Ymxpc2hcIixcclxuICBcInJlc2V0XCIsXHJcbiAgXCJzZXRcIixcclxuICBcInRyaWdnZXJcIixcclxuICBcIndhcm5cIixcclxuXSk7XHJcblxyXG4vKiogTmFtZSBwYXR0ZXJuIHVzZWQgZm9yIHZvaWQtbGlrZSBtZXRob2QgZGV0ZWN0aW9uLiAqL1xyXG5jb25zdCB2b2lkTGlrZU5hbWVQYXR0ZXJuID1cclxuICAvXig/OmNsZWFyfGRlYnVnfGRpc3BhdGNofGVtaXR8aW5mb3xsb2d8cHJpbnR8cHVibGlzaHxyZXNldHxzZXR8dHJpZ2dlcnx3YXJuKS91O1xyXG5cclxuLyoqIE9iamVjdCBzaGFwZSB1c2VkIGZvciBFU1RyZWUgbm9kZSBuYXJyb3dpbmcuICovXHJcbmludGVyZmFjZSBOb2RlTGlrZVZhbHVlIHtcclxuICAvKiogUG90ZW50aWFsIEVTVHJlZSBub2RlIHR5cGUgZmllbGQuICovXHJcbiAgdHlwZT86IHVua25vd247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIGFuIGV4cHJlc3Npb24gbmFtZSB3aGVuIGl0IGNhbiBiZSByZXNvbHZlZCBzdGF0aWNhbGx5LlxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBJbnB1dCBleHByZXNzaW9uIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGdldEV4cHJlc3Npb25OYW1lKGV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldEV4cHJlc3Npb25OYW1lKFxyXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgRVNUcmVlLlByaXZhdGVJZGVudGlmaWVyIHwgRVNUcmVlLlN1cGVyLFxyXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIGlmIChleHByZXNzaW9uLnR5cGUgPT09IFwiU3VwZXJcIikge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGlmIChleHByZXNzaW9uLnR5cGUgPT09IFwiSWRlbnRpZmllclwiKSB7XHJcbiAgICByZXR1cm4gZXhwcmVzc2lvbi5uYW1lO1xyXG4gIH1cclxuXHJcbiAgaWYgKFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJlxyXG4gICAgZXhwcmVzc2lvbi5wcm9wZXJ0eS50eXBlID09PSBcIklkZW50aWZpZXJcIlxyXG4gICkge1xyXG4gICAgcmV0dXJuIGV4cHJlc3Npb24ucHJvcGVydHkubmFtZTtcclxuICB9XHJcblxyXG4gIHJldHVybiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIGEgY2FsbGVlIG5hbWUgZm9yIGEgY2FsbCBvciBjb25zdHJ1Y3Rpb24gZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBnZXRJbnZva2VkTmFtZShleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRJbnZva2VkTmFtZShcclxuICBleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24gfCBFU1RyZWUuTmV3RXhwcmVzc2lvbixcclxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICByZXR1cm4gZ2V0RXhwcmVzc2lvbk5hbWUoZXhwcmVzc2lvbi5jYWxsZWUpO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBpcyBjYWxsYWJsZS5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc0NhbGxhYmxlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0NhbGxhYmxlRXhwcmVzc2lvbihcclxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCxcclxuKTogZXhwcmVzc2lvbiBpcyBFU1RyZWUuQ2FsbEV4cHJlc3Npb24gfCBFU1RyZWUuTmV3RXhwcmVzc2lvbiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGV4cHJlc3Npb24/LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiB8fFxyXG4gICAgZXhwcmVzc2lvbj8udHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCJcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSBjb21tZW50IGhhcyBsb2NhdGlvbiBtZXRhZGF0YS5cclxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc0xvY2F0ZWRDb21tZW50KGNvbW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzTG9jYXRlZENvbW1lbnQoY29tbWVudDogU291cmNlQ29tbWVudCk6IGNvbW1lbnQgaXMgTG9jYXRlZENvbW1lbnQge1xyXG4gIHJldHVybiAoXHJcbiAgICBjb21tZW50LmxvYyAhPT0gbnVsbCAmJiBjb21tZW50LmxvYyAhPT0gdm9pZCAwICYmIGNvbW1lbnQucmFuZ2UgIT09IHZvaWQgMFxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGFuIEVTVHJlZSBub2RlLlxyXG4gKiBAcGFyYW0gdmFsdWUgSW5wdXQgdmFsdWUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNOb2RlKHZhbHVlKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc05vZGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFU1RyZWUuTm9kZSB7XHJcbiAgcmV0dXJuIChcclxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxyXG4gICAgdmFsdWUgIT09IG51bGwgJiZcclxuICAgIFwidHlwZVwiIGluIHZhbHVlICYmXHJcbiAgICB0eXBlb2YgKHZhbHVlIGFzIE5vZGVMaWtlVmFsdWUpLnR5cGUgPT09IFwic3RyaW5nXCJcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSByYW5nZSBpcyBmdWxseSBjb250YWluZWQgd2l0aGluIGFub3RoZXIgcmFuZ2UuXHJcbiAqIEBwYXJhbSByYW5nZSBJbnB1dCByYW5nZSB2YWx1ZS5cclxuICogQHBhcmFtIGNvbnRhaW5lciBJbnB1dCBjb250YWluZXIgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNSYW5nZVdpdGhpbihyYW5nZSwgY29udGFpbmVyKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1JhbmdlV2l0aGluKFxyXG4gIHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdLFxyXG4gIGNvbnRhaW5lcjogW251bWJlciwgbnVtYmVyXSxcclxuKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHJhbmdlWzBdID49IGNvbnRhaW5lclswXSAmJiByYW5nZVsxXSA8PSBjb250YWluZXJbMV07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIGNvbnN0cnVjdG9yIGNhbGwgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgc2V0dXAuXHJcbiAqIEBwYXJhbSBleHByZXNzaW9uIElucHV0IGV4cHJlc3Npb24gdmFsdWUuXHJcbiAqIEBwYXJhbSBjYWxsZWVOYW1lIElucHV0IGNhbGxlZU5hbWUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNVdGlsaXR5Q29uc3RydWN0b3IoZXhwcmVzc2lvbiwgXCJNYXBcIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNVdGlsaXR5Q29uc3RydWN0b3IoXHJcbiAgZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uIHwgRVNUcmVlLk5ld0V4cHJlc3Npb24sXHJcbiAgY2FsbGVlTmFtZTogc3RyaW5nLFxyXG4pOiBib29sZWFuIHtcclxuICByZXR1cm4gKFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBcIk5ld0V4cHJlc3Npb25cIiAmJlxyXG4gICAgKGNhbGxlZU5hbWUgPT09IFwiTWFwXCIgfHxcclxuICAgICAgY2FsbGVlTmFtZSA9PT0gXCJTZXRcIiB8fFxyXG4gICAgICBjYWxsZWVOYW1lID09PSBcIlNvdXJjZUNvZGVcIiB8fFxyXG4gICAgICBjYWxsZWVOYW1lID09PSBcIkVTTGludFwiKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGxlZSBuYW1lIGxvb2tzIHV0aWxpdHktbGlrZS5cclxuICogQHBhcmFtIGNhbGxlZU5hbWUgSW5wdXQgY2FsbGVlTmFtZSB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1V0aWxpdHlOYW1lZENhbGwoXCJzZXR1cEZpeHR1cmVcIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNVdGlsaXR5TmFtZWRDYWxsKGNhbGxlZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiB1dGlsaXR5TWV0aG9kTmFtZXMuaGFzKGNhbGxlZU5hbWUpIHx8IHNldHVwTGlrZU5hbWVzLnRlc3QoY2FsbGVlTmFtZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgdXNlcyBhIHV0aWxpdHkgbmFtZXNwYWNlLlxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBJbnB1dCBleHByZXNzaW9uIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzVXRpbGl0eU5hbWVzcGFjZUNhbGwoZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNVdGlsaXR5TmFtZXNwYWNlQ2FsbChcclxuICBleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24gfCBFU1RyZWUuTmV3RXhwcmVzc2lvbixcclxuKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgIFtcImNvbnNvbGVcIiwgXCJ2aVwiXS5pbmNsdWRlcyhleHByZXNzaW9uLmNhbGxlZS5vYmplY3QubmFtZSlcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogVmlzaXRzIGFuIEVTVHJlZSBub2RlIGdyYXBoIHdoaWxlIGlnbm9yaW5nIGN5Y2xlcy5cclxuICogQHBhcmFtIG5vZGUgSW5wdXQgbm9kZSB2YWx1ZS5cclxuICogQHBhcmFtIGNhbGxiYWNrIElucHV0IGNhbGxiYWNrIHZhbHVlLlxyXG4gKiBAcGFyYW0gc2Vlbk5vZGVzIElucHV0IHNlZW5Ob2RlcyB2YWx1ZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiB2aXNpdE5vZGUobm9kZSwgKCkgPT4ge30pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIHZpc2l0Tm9kZShcclxuICBub2RlOiBFU1RyZWUuTm9kZSxcclxuICBjYWxsYmFjazogKG5vZGU6IEVTVHJlZS5Ob2RlKSA9PiB2b2lkLFxyXG4gIHNlZW5Ob2RlcyA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKSxcclxuKTogdm9pZCB7XHJcbiAgaWYgKHNlZW5Ob2Rlcy5oYXMobm9kZSkpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHNlZW5Ob2Rlcy5hZGQobm9kZSk7XHJcbiAgY2FsbGJhY2sobm9kZSk7XHJcblxyXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5vZGUpKSB7XHJcbiAgICBpZiAoa2V5ICE9PSBcInBhcmVudFwiKSB7XHJcbiAgICAgIHZpc2l0VmFsdWUodmFsdWUsIGNhbGxiYWNrLCBzZWVuTm9kZXMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZpc2l0cyBjaGlsZCB2YWx1ZXMgdGhhdCBtYXkgY29udGFpbiBuZXN0ZWQgRVNUcmVlIG5vZGVzLlxyXG4gKiBAcGFyYW0gdmFsdWUgSW5wdXQgdmFsdWUgdmFsdWUuXHJcbiAqIEBwYXJhbSBjYWxsYmFjayBJbnB1dCBjYWxsYmFjayB2YWx1ZS5cclxuICogQHBhcmFtIHNlZW5Ob2RlcyBJbnB1dCBzZWVuTm9kZXMgdmFsdWUuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogdmlzaXRWYWx1ZSh2YWx1ZSwgKCkgPT4ge30sIG5ldyBXZWFrU2V0PG9iamVjdD4oKSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gdmlzaXRWYWx1ZShcclxuICB2YWx1ZTogdW5rbm93bixcclxuICBjYWxsYmFjazogKG5vZGU6IEVTVHJlZS5Ob2RlKSA9PiB2b2lkLFxyXG4gIHNlZW5Ob2RlczogV2Vha1NldDxvYmplY3Q+LFxyXG4pOiB2b2lkIHtcclxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICBpZiAoaXNOb2RlKGl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaXROb2RlKGl0ZW0sIGNhbGxiYWNrLCBzZWVuTm9kZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcclxuICAgIHZpc2l0Tm9kZSh2YWx1ZSwgY2FsbGJhY2ssIHNlZW5Ob2Rlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQge1xyXG4gIGFycmF5TXV0YXRpb25NZXRob2RzLFxyXG4gIGdldEV4cHJlc3Npb25OYW1lLFxyXG4gIGdldEludm9rZWROYW1lLFxyXG4gIGlzQ2FsbGFibGVFeHByZXNzaW9uLFxyXG4gIGlzTG9jYXRlZENvbW1lbnQsXHJcbiAgaXNSYW5nZVdpdGhpbixcclxuICBpc1V0aWxpdHlDb25zdHJ1Y3RvcixcclxuICBpc1V0aWxpdHlOYW1lZENhbGwsXHJcbiAgaXNVdGlsaXR5TmFtZXNwYWNlQ2FsbCxcclxuICBzZXR1cExpa2VOYW1lcyxcclxuICB1dGlsaXR5TWV0aG9kTmFtZXMsXHJcbiAgdmlzaXROb2RlLFxyXG4gIHZvaWRMaWtlTWV0aG9kTmFtZXMsXHJcbiAgdm9pZExpa2VOYW1lUGF0dGVybixcclxufTtcclxuIl19
|
|
195
|
+
export { arrayMutationMethods, getExpressionName, getInvokedName, isCallableExpression, isLocatedComment, isRangeWithin, isUtilityConstructor, isUtilityNamedCall, isUtilityNamespaceCall, isVoidLikeMethodName, voidLikeMethodNames, };
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuc3VwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvYWFhL2FuYWx5emVyLnN1cGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ25DLFlBQVk7SUFDWixNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07SUFDTixTQUFTO0lBQ1QsT0FBTztJQUNQLE1BQU07SUFDTixRQUFRO0lBQ1IsU0FBUztDQUNWLENBQUMsQ0FBQztBQUVILCtEQUErRDtBQUMvRCxNQUFNLGNBQWMsR0FDbEIsd0ZBQXdGLENBQUM7QUFFM0Ysb0ZBQW9GO0FBQ3BGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixPQUFPO0lBQ1AsSUFBSTtJQUNKLE1BQU07SUFDTixNQUFNO0lBQ04sS0FBSztJQUNMLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixNQUFNO0lBQ04sZUFBZTtJQUNmLFNBQVM7SUFDVCxlQUFlO0lBQ2YsTUFBTTtDQUNQLENBQUMsQ0FBQztBQUVILHNFQUFzRTtBQUN0RSxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2xDLE9BQU87SUFDUCxPQUFPO0lBQ1AsVUFBVTtJQUNWLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLEtBQUs7SUFDTCxPQUFPO0lBQ1AsU0FBUztJQUNULE9BQU87SUFDUCxLQUFLO0lBQ0wsU0FBUztJQUNULE1BQU07Q0FDUCxDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsaUJBQWlCLENBQ3hCLFVBQXVFO0lBRXZFLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEtBQUssQ0FBQyxD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Ozs7R0FRRztBQUNILFNBQVMsb0JBQW9CLENBQUMsVUFBa0I7SUFDOUMsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixtQkFBbUIsR0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbmltcG9ydCB0eXBlIHsgTG9jYXRlZENvbW1lbnQsIFNvdXJjZUNvbW1lbnQgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuLyoqIEFycmF5IG11dGF0b3IgbWV0aG9kcyB0aGF0IGltcGx5IG9ic2VydmFibGUgc3RhdGUgY2hhbmdlcy4gKi9cclxuY29uc3QgYXJyYXlNdXRhdGlvbk1ldGhvZHMgPSBuZXcgU2V0KFtcclxuICBcImNvcHlXaXRoaW5cIixcclxuICBcImZpbGxcIixcclxuICBcInBvcFwiLFxyXG4gIFwicHVzaFwiLFxyXG4gIFwicmV2ZXJzZVwiLFxyXG4gIFwic2hpZnRcIixcclxuICBcInNvcnRcIixcclxuICBcInNwbGljZVwiLFxyXG4gIFwidW5zaGlmdFwiLFxyXG5dKTtcclxuXHJcbi8qKiBOYW1lcyB0aGF0IHVzdWFsbHkgc2lnbmFsIEFycmFuZ2Utb3JpZW50ZWQgaGVscGVyIGNhbGxzLiAqL1xyXG5jb25zdCBzZXR1cExpa2VOYW1lcyA9XHJcbiAgL14oPzphcnJhbmdlfGJ1aWxkfGNyZWF0ZXxmaXh0dXJlfGdldHxnaXZlbnxtYWtlfG1vY2t8cGFyc2V8c2VlZHxzZXR1cHxzcHl8c3R1Ynx3cml0ZSkvdTtcclxuXHJcbi8qKiBDYWxsIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgdXRpbGl0eSBvcGVyYXRpb25zIGluc3RlYWQgb2YgQWN0IHN0ZXBzLiAqL1xyXG5jb25zdCB1dGlsaXR5TWV0aG9kTmFtZXMgPSBuZXcgU2V0KFtcclxuICBcImFkdmFuY2VUaW1lcnNCeVRpbWVcIixcclxuICBcImNsZWFyQWxsTW9ja3NcIixcclxuICBcImRlYnVnXCIsXHJcbiAgXCJmblwiLFxyXG4gIFwiaW5mb1wiLFxyXG4gIFwiam9pblwiLFxyXG4gIFwibG9nXCIsXHJcbiAgXCJtb2NrSW1wbGVtZW50YXRpb25cIixcclxuICBcIm1vY2tSZWplY3RlZFZhbHVlXCIsXHJcbiAgXCJtb2NrUmVzb2x2ZWRWYWx1ZVwiLFxyXG4gIFwibW9ja1JldHVyblZhbHVlXCIsXHJcbiAgXCJwdXNoXCIsXHJcbiAgXCJyZXNldEFsbE1vY2tzXCIsXHJcbiAgXCJyZXNvbHZlXCIsXHJcbiAgXCJ1c2VGYWtlVGltZXJzXCIsXHJcbiAgXCJ3YXJuXCIsXHJcbl0pO1xyXG5cclxuLyoqIE1ldGhvZCBuYW1lcyB0aGF0IHVzdWFsbHkgYmVoYXZlIGxpa2Ugdm9pZCBzaWRlLWVmZmVjdCBoZWxwZXJzLiAqL1xyXG5jb25zdCB2b2lkTGlrZU1ldGhvZE5hbWVzID0gbmV3IFNldChbXHJcbiAgXCJjbGVhclwiLFxyXG4gIFwiZGVidWdcIixcclxuICBcImRpc3BhdGNoXCIsXHJcbiAgXCJlbWl0XCIsXHJcbiAgXCJmbHVzaFwiLFxyXG4gIFwiaW5mb1wiLFxyXG4gIFwibG9nXCIsXHJcbiAgXCJwcmludFwiLFxyXG4gIFwicHVibGlzaFwiLFxyXG4gIFwicmVzZXRcIixcclxuICBcInNldFwiLFxyXG4gIFwidHJpZ2dlclwiLFxyXG4gIFwid2FyblwiLFxyXG5dKTtcclxuXHJcbi8qKlxyXG4gKiBHZXRzIGFuIGV4cHJlc3Npb24gbmFtZSB3aGVuIGl0IGNhbiBiZSByZXNvbHZlZCBzdGF0aWNhbGx5LlxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBJbnB1dCBleHByZXNzaW9uIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGdldEV4cHJlc3Npb25OYW1lKGV4cHJlc3Npb24pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldEV4cHJlc3Npb25OYW1lKFxyXG4gIGV4cHJlc3Npb246IEVTVHJlZS5FeHByZXNzaW9uIHwgRVNUcmVlLlByaXZhdGVJZGVudGlmaWVyIHwgRVNUcmVlLlN1cGVyLFxyXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIGlmIChleHByZXNzaW9uLnR5cGUgPT09IFwiU3VwZXJcIikge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIGlmIChleHByZXNzaW9uLnR5cGUgPT09IFwiSWRlbnRpZmllclwiKSB7XHJcbiAgICByZXR1cm4gZXhwcmVzc2lvbi5uYW1lO1xyXG4gIH1cclxuXHJcbiAgaWYgKFxyXG4gICAgZXhwcmVzc2lvbi50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJlxyXG4gICAgZXhwcmVzc2lvbi5wcm9wZXJ0eS50eXBlID09PSBcIklkZW50aWZpZXJcIlxyXG4gICkge1xyXG4gICAgcmV0dXJuIGV4cHJlc3Npb24ucHJvcGVydHkubmFtZTtcclxuICB9XHJcblxyXG4gIHJldHVybiB2b2lkIDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIGEgY2FsbGVlIG5hbWUgZm9yIGEgY2FsbCBvciBjb25zdHJ1Y3Rpb24gZXhwcmVzc2lvbi5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBnZXRJbnZva2VkTmFtZShleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRJbnZva2VkTmFtZShcclxuICBleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24gfCBFU1RyZWUuTmV3RXhwcmVzc2lvbixcclxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICByZXR1cm4gZ2V0RXhwcmVzc2lvbk5hbWUoZXhwcmVzc2lvbi5jYWxsZWUpO1xyXG59XHJcblxyXG4vKipcclxuICogU3BsaXRzIGFuIGlkZW50aWZpZXIgaW50byBsb3dlcmNhc2Ugd29yZCB0b2tlbnMuXHJcbiAqIEBwYXJhbSBpZGVudGlmaWVyIElucHV0IGlkZW50aWZpZXIgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogZ2V0TmFtZVdvcmRzKFwic2NoZWR1bGVBbmRGbHVzaFwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXROYW1lV29yZHMoaWRlbnRpZmllcjogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gIHJldHVybiBpZGVudGlmaWVyXHJcbiAgICAuc3BsaXQoLyg/PVtBLVpdKXxbXy1dL3UpXHJcbiAgICAubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAuZmlsdGVyKChzZWdtZW50KSA9PiBzZWdtZW50Lmxlbmd0aCA+IDApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBpcyBjYWxsYWJsZS5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc0NhbGxhYmxlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0NhbGxhYmxlRXhwcmVzc2lvbihcclxuICBleHByZXNzaW9uOiBFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCxcclxuKTogZXhwcmVzc2lvbiBpcyBFU1RyZWUuQ2FsbEV4cHJlc3Npb24gfCBFU1RyZWUuTmV3RXhwcmVzc2lvbiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGV4cHJlc3Npb24/LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiB8fFxyXG4gICAgZXhwcmVzc2lvbj8udHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCJcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSBjb21tZW50IGhhcyBsb2NhdGlvbiBtZXRhZGF0YS5cclxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc0xvY2F0ZWRDb21tZW50KGNvbW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzTG9jYXRlZENvbW1lbnQoY29tbWVudDogU291cmNlQ29tbWVudCk6IGNvbW1lbnQgaXMgTG9jYXRlZENvbW1lbnQge1xyXG4gIHJldHVybiAoXHJcbiAgICBjb21tZW50LmxvYyAhPT0gbnVsbCAmJiBjb21tZW50LmxvYyAhPT0gdm9pZCAwICYmIGNvbW1lbnQucmFuZ2UgIT09IHZvaWQgMFxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIHJhbmdlIGlzIGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gYW5vdGhlciByYW5nZS5cclxuICogQHBhcmFtIHJhbmdlIElucHV0IHJhbmdlIHZhbHVlLlxyXG4gKiBAcGFyYW0gY29udGFpbmVyIElucHV0IGNvbnRhaW5lciB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1JhbmdlV2l0aGluKHJhbmdlLCBjb250YWluZXIpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzUmFuZ2VXaXRoaW4oXHJcbiAgcmFuZ2U6IFtudW1iZXIsIG51bWJlcl0sXHJcbiAgY29udGFpbmVyOiBbbnVtYmVyLCBudW1iZXJdLFxyXG4pOiBib29sZWFuIHtcclxuICByZXR1cm4gcmFuZ2VbMF0gPj0gY29udGFpbmVyWzBdICYmIHJhbmdlWzFdIDw9IGNvbnRhaW5lclsxXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGEgY29uc3RydWN0b3IgY2FsbCBzaG91bGQgYmUgdHJlYXRlZCBhcyBzZXR1cC5cclxuICogQHBhcmFtIGV4cHJlc3Npb24gSW5wdXQgZXhwcmVzc2lvbiB2YWx1ZS5cclxuICogQHBhcmFtIGNhbGxlZU5hbWUgSW5wdXQgY2FsbGVlTmFtZSB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1V0aWxpdHlDb25zdHJ1Y3RvcihleHByZXNzaW9uLCBcIk1hcFwiKTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1V0aWxpdHlDb25zdHJ1Y3RvcihcclxuICBleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24gfCBFU1RyZWUuTmV3RXhwcmVzc2lvbixcclxuICBjYWxsZWVOYW1lOiBzdHJpbmcsXHJcbik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiAoXHJcbiAgICBleHByZXNzaW9uLnR5cGUgPT09IFwiTmV3RXhwcmVzc2lvblwiICYmXHJcbiAgICAoY2FsbGVlTmFtZSA9PT0gXCJFcnJvclwiIHx8XHJcbiAgICAgIGNhbGxlZU5hbWUgPT09IFwiTWFwXCIgfHxcclxuICAgICAgY2FsbGVlTmFtZSA9PT0gXCJTZXRcIiB8fFxyXG4gICAgICBjYWxsZWVOYW1lID09PSBcIlNvdXJjZUNvZGVcIiB8fFxyXG4gICAgICBjYWxsZWVOYW1lID09PSBcIkVTTGludFwiIHx8XHJcbiAgICAgIGNhbGxlZU5hbWUgPT09IFwiV2Vha01hcFwiIHx8XHJcbiAgICAgIGNhbGxlZU5hbWUgPT09IFwiV2Vha1NldFwiKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGxlZSBuYW1lIGxvb2tzIHV0aWxpdHktbGlrZS5cclxuICogQHBhcmFtIGNhbGxlZU5hbWUgSW5wdXQgY2FsbGVlTmFtZSB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpc1V0aWxpdHlOYW1lZENhbGwoXCJzZXR1cEZpeHR1cmVcIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNVdGlsaXR5TmFtZWRDYWxsKGNhbGxlZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiB1dGlsaXR5TWV0aG9kTmFtZXMuaGFzKGNhbGxlZU5hbWUpIHx8IHNldHVwTGlrZU5hbWVzLnRlc3QoY2FsbGVlTmFtZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgdXNlcyBhIHV0aWxpdHkgbmFtZXNwYWNlLlxyXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBJbnB1dCBleHByZXNzaW9uIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGlzVXRpbGl0eU5hbWVzcGFjZUNhbGwoZXhwcmVzc2lvbik7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaXNVdGlsaXR5TmFtZXNwYWNlQ2FsbChcclxuICBleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24gfCBFU1RyZWUuTmV3RXhwcmVzc2lvbixcclxuKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIChcclxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXHJcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcclxuICAgIFtcImNvbnNvbGVcIiwgXCJ2aVwiXS5pbmNsdWRlcyhleHByZXNzaW9uLmNhbGxlZS5vYmplY3QubmFtZSlcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgYSBjYWxsIG5hbWUgaXMgYnVpbHQgZnJvbSB2b2lkLWxpa2UgdmVyYiB0b2tlbnMuXHJcbiAqIEBwYXJhbSBjYWxsZWVOYW1lIElucHV0IGNhbGxlZU5hbWUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaXNWb2lkTGlrZU1ldGhvZE5hbWUoXCJzY2hlZHVsZUFuZEZsdXNoXCIpO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzVm9pZExpa2VNZXRob2ROYW1lKGNhbGxlZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBnZXROYW1lV29yZHMoY2FsbGVlTmFtZSkuc29tZSgod29yZCkgPT4gdm9pZExpa2VNZXRob2ROYW1lcy5oYXMod29yZCkpO1xyXG59XHJcblxyXG5leHBvcnQge1xyXG4gIGFycmF5TXV0YXRpb25NZXRob2RzLFxyXG4gIGdldEV4cHJlc3Npb25OYW1lLFxyXG4gIGdldEludm9rZWROYW1lLFxyXG4gIGlzQ2FsbGFibGVFeHByZXNzaW9uLFxyXG4gIGlzTG9jYXRlZENvbW1lbnQsXHJcbiAgaXNSYW5nZVdpdGhpbixcclxuICBpc1V0aWxpdHlDb25zdHJ1Y3RvcixcclxuICBpc1V0aWxpdHlOYW1lZENhbGwsXHJcbiAgaXNVdGlsaXR5TmFtZXNwYWNlQ2FsbCxcclxuICBpc1ZvaWRMaWtlTWV0aG9kTmFtZSxcclxuICB2b2lkTGlrZU1ldGhvZE5hbWVzLFxyXG59O1xyXG4iXX0=
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export type { AaaPhase, LocatedComment, LocatedNode, SectionComment, SourceComment, StatementPhase, TestBlockAnalysis, } from "./types.js";
|
|
1
|
+
export type { AaaPhase, LocatedComment, LocatedNode, SectionComment, SourceComment, TestBlockAnalysis, } from "./types.js";
|
|
3
2
|
//# sourceMappingURL=index.d.ts.map
|