@codeperfect/eslint-plugin 1.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/{custom-rules.d.ts → application/custom-rules.d.ts} +3 -0
- package/dist/application/custom-rules.d.ts.map +1 -0
- package/dist/application/custom-rules.js +74 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +3 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +56 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +149 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +4 -4
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +98 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +45 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +64 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +5 -4
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +87 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +145 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/index.js +4 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +90 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +91 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +4 -6
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +95 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.js +51 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +4 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +4 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/test-helpers.d.ts +48 -48
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +20 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +25 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +235 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts +19 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/types.js +2 -0
- package/dist/{architecture → domain/architecture}/index.d.ts +1 -1
- package/dist/domain/architecture/index.d.ts.map +1 -0
- package/dist/domain/architecture/index.js +2 -0
- package/dist/{core → domain/core}/index.d.ts +2 -2
- package/dist/domain/core/index.d.ts.map +1 -0
- package/dist/domain/core/index.js +3 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts +2 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/index.js +2 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +101 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +108 -0
- package/dist/{core → domain/core}/no-multiple-declarators/rule.d.ts +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +35 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.js +95 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.js +222 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +4 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts +77 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/types.js +38 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts +2 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/index.js +2 -0
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/rule.js +148 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.js +116 -0
- package/dist/{custom-rule-documentation.d.ts → domain/custom-rule-documentation.d.ts} +3 -1
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
- package/dist/domain/custom-rule-documentation.js +36 -0
- package/dist/domain/docs/index.d.ts +4 -0
- package/dist/domain/docs/index.d.ts.map +1 -0
- package/dist/domain/docs/index.js +4 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +146 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts +2 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/index.js +2 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-tags.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +101 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +125 -0
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/rule.js +171 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.js +2 -2
- package/dist/{docs → domain/docs}/no-interface-member-docs/types.d.ts +2 -2
- package/dist/domain/docs/no-interface-member-docs/types.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/types.js +2 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts +5 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/create-fixer.js +5 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.js +169 -0
- package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/example-utilities.js +76 -0
- package/dist/{docs → domain/docs}/require-example-language/examples.d.ts +1 -1
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/examples.js +181 -0
- package/dist/{docs → domain/docs}/require-example-language/fixes.d.ts +2 -2
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/fixes.js +182 -0
- package/dist/domain/docs/require-example-language/index.d.ts +3 -0
- package/dist/domain/docs/require-example-language/index.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/index.js +2 -0
- package/dist/{docs → domain/docs}/require-example-language/reporting.d.ts +1 -1
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/reporting.js +148 -0
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/rule.js +37 -0
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/types.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/index.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/rule.js +201 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
- package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
- package/dist/domain/docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/test-helpers.js +107 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +6 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts +34 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +145 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +203 -0
- package/dist/domain/testing/aaa/analyzer.analysis.js +82 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +18 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +4 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +95 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +185 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +33 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +64 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +105 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +16 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +77 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +203 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +31 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.mutations.js +4 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +15 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.traversal.js +34 -0
- package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
- package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.js +59 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts +106 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +27 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.helpers.js +66 -0
- package/dist/domain/testing/aaa/analyzer.super.js +211 -0
- package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
- package/dist/domain/testing/aaa/index.d.ts.map +1 -0
- package/dist/domain/testing/aaa/index.js +2 -0
- package/dist/domain/testing/aaa/types.d.ts +58 -0
- package/dist/domain/testing/aaa/types.d.ts.map +1 -0
- package/dist/domain/testing/aaa/types.js +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
- package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.js +116 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
- package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +37 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
- package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.js +88 -0
- package/dist/{testing → domain/testing}/index.d.ts +9 -8
- package/dist/domain/testing/index.d.ts.map +1 -0
- package/dist/domain/testing/index.js +10 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +39 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +97 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +174 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +84 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +195 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +96 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +88 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +187 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/index.js +2 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
- package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.js +134 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.js +216 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/index.js +2 -0
- package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.js +109 -0
- package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
- package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/index.js +3 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/rule.js +82 -0
- package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/types.js +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/index.js +2 -0
- package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/rule.js +37 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
- package/dist/infrastructure/codeperfect-plugin.js +30 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +4 -0
- package/dist/infrastructure/presets.d.ts +18 -0
- package/dist/infrastructure/presets.d.ts.map +1 -0
- package/dist/infrastructure/presets.js +81 -0
- package/package.json +67 -32
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
- package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
- package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/index.js +0 -4
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
- package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/rule.js +0 -58
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
- package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
- package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/types.js +0 -2
- package/dist/architecture/index.d.ts.map +0 -1
- package/dist/architecture/index.js +0 -2
- package/dist/benchmark-rules.d.ts +0 -83
- package/dist/benchmark-rules.d.ts.map +0 -1
- package/dist/benchmark-rules.js +0 -175
- package/dist/codeperfect-plugin.d.ts.map +0 -1
- package/dist/codeperfect-plugin.js +0 -29
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/no-multiple-declarators/index.d.ts +0 -2
- package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/index.js +0 -2
- package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/rule.js +0 -100
- package/dist/core/prefer-interface-types/index.d.ts +0 -2
- package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/index.js +0 -2
- package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/rule.js +0 -145
- package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/test-helpers.js +0 -116
- package/dist/custom-rule-documentation.d.ts.map +0 -1
- package/dist/custom-rule-documentation.js +0 -35
- package/dist/custom-rules.d.ts.map +0 -1
- package/dist/custom-rules.js +0 -70
- package/dist/docs/index.d.ts +0 -4
- package/dist/docs/index.d.ts.map +0 -1
- package/dist/docs/index.js +0 -4
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
- package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
- package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/index.js +0 -2
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
- package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/rule.js +0 -168
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.js +0 -2
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
- package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
- package/dist/docs/require-example-language/example-utilities.js +0 -76
- package/dist/docs/require-example-language/examples.d.ts.map +0 -1
- package/dist/docs/require-example-language/examples.js +0 -181
- package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/fixes.js +0 -182
- package/dist/docs/require-example-language/index.d.ts +0 -3
- package/dist/docs/require-example-language/index.d.ts.map +0 -1
- package/dist/docs/require-example-language/index.js +0 -2
- package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
- package/dist/docs/require-example-language/reporting.js +0 -145
- package/dist/docs/require-example-language/rule.d.ts.map +0 -1
- package/dist/docs/require-example-language/rule.js +0 -34
- package/dist/docs/require-example-language/types.d.ts.map +0 -1
- package/dist/docs/require-example-language/types.js +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/index.js +0 -2
- package/dist/docs/single-line-jsdoc/rule.d.ts +0 -5
- package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/rule.js +0 -196
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
- package/dist/docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/test-helpers.js +0 -107
- package/dist/presets.d.ts +0 -10
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -50
- package/dist/rules/index.d.ts +0 -5
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -6
- package/dist/testing/aaa/analyzer.d.ts +0 -36
- package/dist/testing/aaa/analyzer.d.ts.map +0 -1
- package/dist/testing/aaa/analyzer.js +0 -490
- package/dist/testing/aaa/index.d.ts.map +0 -1
- package/dist/testing/aaa/index.js +0 -2
- package/dist/testing/aaa/types.d.ts +0 -31
- package/dist/testing/aaa/types.d.ts.map +0 -1
- package/dist/testing/aaa/types.js +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/index.js +0 -2
- package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/rule.js +0 -54
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
- package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/index.js +0 -2
- package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/rule.js +0 -48
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -9
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
- package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
- package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
- package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
- package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
- package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/index.js +0 -2
- package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/rule.js +0 -111
- package/dist/testing/require-act-result-capture/index.d.ts +0 -2
- package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/index.js +0 -2
- package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/rule.js +0 -34
- package/dist/testing/require-test-companion/index.d.ts +0 -3
- package/dist/testing/require-test-companion/index.d.ts.map +0 -1
- package/dist/testing/require-test-companion/index.js +0 -3
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
- package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
- package/dist/testing/require-test-companion/rule.js +0 -57
- package/dist/testing/require-test-companion/types.d.ts.map +0 -1
- package/dist/testing/require-test-companion/types.js +0 -2
- package/dist/testing/single-act-statement/index.d.ts +0 -2
- package/dist/testing/single-act-statement/index.d.ts.map +0 -1
- package/dist/testing/single-act-statement/index.js +0 -2
- package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
- package/dist/testing/single-act-statement/rule.js +0 -33
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
- /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { normalizeMaxLineLength, reportIfSingleLine, } from "./single-line-jsdoc-utilities.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the token after a comment when available.
|
|
4
|
+
* @param sourceCode Source code accessors.
|
|
5
|
+
* @param comment Comment node to inspect.
|
|
6
|
+
* @returns Token range metadata when available.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* getTokenAfterRange({} as SourceCodeAccess, {} as SourceComment);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
const getTokenAfterRange = (sourceCode, comment) => {
|
|
13
|
+
if (typeof sourceCode.getTokenAfter !== "function") {
|
|
14
|
+
return void 0;
|
|
15
|
+
}
|
|
16
|
+
const tokenAfter = sourceCode.getTokenAfter(comment, {
|
|
17
|
+
includeComments: false,
|
|
18
|
+
});
|
|
19
|
+
if (tokenAfter?.range === void 0) {
|
|
20
|
+
return void 0;
|
|
21
|
+
}
|
|
22
|
+
return { range: tokenAfter.range };
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Function-like node types handled directly.
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* functionLikeTypes.has("TSFunctionType");
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
const functionLikeTypes = new Set([
|
|
32
|
+
"TSCallSignatureDeclaration",
|
|
33
|
+
"TSConstructSignatureDeclaration",
|
|
34
|
+
"TSFunctionType",
|
|
35
|
+
]);
|
|
36
|
+
/**
|
|
37
|
+
* Checks if a node is a function expression or arrow function.
|
|
38
|
+
* @param node Node to inspect.
|
|
39
|
+
* @returns True when the node is a function expression.
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* isFunctionExpression({ type: "FunctionExpression" } as EstreeNode);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
const isFunctionExpression = (node) => node?.type === "FunctionExpression" ||
|
|
46
|
+
node?.type === "ArrowFunctionExpression";
|
|
47
|
+
/**
|
|
48
|
+
* Checks if a node is a function declaration or TS declaration signature.
|
|
49
|
+
* @param node Node to inspect.
|
|
50
|
+
* @returns True when the node is a function declaration.
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* isFunctionDeclaration({ type: "FunctionDeclaration" } as EstreeNode);
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
const isFunctionDeclaration = (node) => node?.type === "FunctionDeclaration" || node?.type === "TSDeclareFunction";
|
|
57
|
+
/**
|
|
58
|
+
* Checks if a node is a method-like declaration.
|
|
59
|
+
* @param node Node to inspect.
|
|
60
|
+
* @returns True when the node is a method-like declaration.
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* isMethodLike({ type: "MethodDefinition" } as EstreeNode);
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
const isMethodLike = (node) => node?.type === "MethodDefinition" || node?.type === "TSMethodSignature";
|
|
67
|
+
/**
|
|
68
|
+
* Checks if a node is a property with a function initializer.
|
|
69
|
+
* @param node Node to inspect.
|
|
70
|
+
* @returns True when the property value is a function.
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* isPropertyWithFunctionValue({ type: "Property" } as EstreeNode);
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
const isPropertyWithFunctionValue = (node) => {
|
|
77
|
+
if (node.type !== "PropertyDefinition" && node.type !== "Property") {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
const { value } = node;
|
|
81
|
+
return isFunctionExpression(value);
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Checks if a variable declaration contains a function initializer.
|
|
85
|
+
* @param node Node to inspect.
|
|
86
|
+
* @returns True when any initializer is a function.
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* isVariableWithFunctionInit({ type: "VariableDeclaration" } as EstreeNode);
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
const isVariableWithFunctionInit = (node) => {
|
|
93
|
+
if (node.type !== "VariableDeclaration") {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
const { declarations } = node;
|
|
97
|
+
const initialized = declarations ?? [];
|
|
98
|
+
return initialized.some((declaration) => isFunctionExpression(declaration.init));
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Checks if an export wraps a function-like declaration.
|
|
102
|
+
* @param node Node to inspect.
|
|
103
|
+
* @returns True when the exported declaration is function-like.
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* isExportedFunctionLike({ type: "ExportNamedDeclaration" } as EstreeNode);
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
const isExportedFunctionLike = (node) => {
|
|
110
|
+
if (node.type !== "ExportNamedDeclaration" &&
|
|
111
|
+
node.type !== "ExportDefaultDeclaration") {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const { declaration } = node;
|
|
115
|
+
return isFunctionLikeNode(declaration);
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Checks if a node represents any supported function-like declaration.
|
|
119
|
+
* @param node Node to inspect.
|
|
120
|
+
* @returns True when the node is function-like.
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* isFunctionLikeNode({ type: "FunctionDeclaration" } as EstreeNode);
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
const isFunctionLikeNode = (node) => {
|
|
127
|
+
if (node === null || node === void 0) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return (isFunctionDeclaration(node) ||
|
|
131
|
+
isFunctionExpression(node) ||
|
|
132
|
+
isMethodLike(node) ||
|
|
133
|
+
functionLikeTypes.has(node.type) ||
|
|
134
|
+
isPropertyWithFunctionValue(node) ||
|
|
135
|
+
isVariableWithFunctionInit(node) ||
|
|
136
|
+
isExportedFunctionLike(node));
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Determines whether a JSDoc comment should be skipped for function targets.
|
|
140
|
+
* @param context Rule context.
|
|
141
|
+
* @param comment Comment node to inspect.
|
|
142
|
+
* @returns True when the comment targets a function-like node.
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* shouldSkipForFunction({} as Rule.RuleContext, {} as SourceComment);
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
const shouldSkipForFunction = (context, comment) => {
|
|
149
|
+
const sourceCode = context.sourceCode;
|
|
150
|
+
if (typeof sourceCode.getNodeByRangeIndex !== "function") {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
const tokenAfter = getTokenAfterRange(sourceCode, comment);
|
|
154
|
+
if (tokenAfter === void 0) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
const [rangeStart] = tokenAfter.range;
|
|
158
|
+
const node = sourceCode.getNodeByRangeIndex(rangeStart);
|
|
159
|
+
return isFunctionLikeNode(node);
|
|
160
|
+
};
|
|
161
|
+
/** Rule module enforcing single-line JSDoc when it fits. */
|
|
162
|
+
export const singleLineJsdocRule = {
|
|
163
|
+
create(context) {
|
|
164
|
+
const { options, sourceCode } = context;
|
|
165
|
+
const maxLineLength = normalizeMaxLineLength(options);
|
|
166
|
+
const comments = sourceCode.getAllComments();
|
|
167
|
+
for (const comment of comments) {
|
|
168
|
+
if (!shouldSkipForFunction(context, comment)) {
|
|
169
|
+
reportIfSingleLine(context, comment, maxLineLength);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return {};
|
|
173
|
+
},
|
|
174
|
+
meta: {
|
|
175
|
+
defaultOptions: [{ maxLineLength: 80 }],
|
|
176
|
+
docs: {
|
|
177
|
+
description: "Require JSDoc comments to use a single line when they fit.",
|
|
178
|
+
recommended: false,
|
|
179
|
+
url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/single-line-jsdoc.md",
|
|
180
|
+
},
|
|
181
|
+
fixable: "code",
|
|
182
|
+
messages: {
|
|
183
|
+
singleLine: "Use a single-line JSDoc comment when it fits on one line.",
|
|
184
|
+
},
|
|
185
|
+
schema: [
|
|
186
|
+
{
|
|
187
|
+
additionalProperties: false,
|
|
188
|
+
properties: {
|
|
189
|
+
maxLineLength: {
|
|
190
|
+
description: "Maximum line length that still allows a JSDoc block to be collapsed to a single line.",
|
|
191
|
+
minimum: 1,
|
|
192
|
+
type: "number",
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
type: "object",
|
|
196
|
+
},
|
|
197
|
+
],
|
|
198
|
+
type: "layout",
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9zaW5nbGUtbGluZS1qc2RvYy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsa0JBQWtCLEdBQ25CLE1BQU0sK0JBQStCLENBQUM7QUEwRHZDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FDekIsVUFBNEIsRUFDNUIsT0FBc0IsRUFDTSxFQUFFO0lBQzlCLElBQUksT0FBTyxVQUFVLENBQUMsYUFBYSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ25ELE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO1FBQ25ELGVBQWUsRUFBRSxLQUFLO0tBQ3ZCLENBQUMsQ0FBQztJQUNILElBQUksVUFBVSxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQVM7SUFDeEMsNEJBQTRCO0lBQzVCLGlDQUFpQztJQUNqQyxnQkFBZ0I7Q0FDakIsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBZSxFQUFXLEVBQUUsQ0FDeEQsSUFBSSxFQUFFLElBQUksS0FBSyxvQkFBb0I7SUFDbkMsSUFBSSxFQUFFLElBQUksS0FBSyx5QkFBeUIsQ0FBQztBQUUzQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUFlLEVBQVcsRUFBRSxDQUN6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QUFFLENBQUM7d0JBQ1YsSUFBSSxFQUFFLFFBQVE7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7YUFDZjtTQUNGO1FBQ0QsSUFBSSxFQUFFLFFBQVE7S0FDZjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSB7IENvbW1lbnQgYXMgRXN0cmVlQ29tbWVudCwgTm9kZSBhcyBFc3RyZWVOb2RlIH0gZnJvbSBcImVzdHJlZVwiO1xuXG5pbXBvcnQge1xuICBub3JtYWxpemVNYXhMaW5lTGVuZ3RoLFxuICByZXBvcnRJZlNpbmdsZUxpbmUsXG59IGZyb20gXCIuL3NpbmdsZS1saW5lLWpzZG9jLXV0aWxpdGllc1wiO1xuXG4vKiogVHlwZSB1bmlvbiBmb3Igbm9kZXMgdGhhdCBtYXkgYmUgbWlzc2luZy4gKi9cbnR5cGUgTWF5YmVOb2RlID0gRXN0cmVlTm9kZSB8IE5vZGVXaXRoVHlwZSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbi8qKiBTaGFwZSBmb3IgZXhwb3J0IG5vZGVzIHRoYXQgd3JhcCBhIGRlY2xhcmF0aW9uLiAqL1xuaW50ZXJmYWNlIE5vZGVXaXRoRGVjbGFyYXRpb24ge1xuICAvKiogRGVjbGFyYXRpb24gd3JhcHBlZCBieSB0aGUgZXhwb3J0LiAqL1xuICBkZWNsYXJhdGlvbj86IE1heWJlTm9kZTtcbn1cbi8qKiBTaGFwZSBmb3Igbm9kZXMgdGhhdCBoYXZlIGRlY2xhcmF0aW9ucy4gKi9cbmludGVyZmFjZSBOb2RlV2l0aERlY2xhcmF0aW9ucyB7XG4gIC8qKiBWYXJpYWJsZSBkZWNsYXJhdGlvbnMgZm9yIGEgZGVjbGFyYXRpb24gbGlzdC4gKi9cbiAgZGVjbGFyYXRpb25zPzogVmFyaWFibGVEZWNsYXJhdGlvbkVudHJ5W107XG59XG4vKiogU2hhcGUgZm9yIG1pbmltYWwgbm9kZXMgdGhhdCBvbmx5IGV4cG9zZSBhIHR5cGUuICovXG5pbnRlcmZhY2UgTm9kZVdpdGhUeXBlIHtcbiAgLyoqIE5vZGUgdHlwZSBkaXNjcmltaW5hdG9yLiAqL1xuICB0eXBlOiBzdHJpbmc7XG59XG4vKiogU2hhcGUgZm9yIG5vZGVzIHRoYXQgaGF2ZSBhIHZhbHVlLiAqL1xuaW50ZXJmYWNlIE5vZGVXaXRoVmFsdWUge1xuICAvKiogVmFsdWUgbm9kZSB1c2VkIGZvciBwcm9wZXJ0eSBpbml0aWFsaXplcnMuICovXG4gIHZhbHVlPzogTWF5YmVOb2RlO1xufVxuLyoqIFNvdXJjZUNvZGUgYWNjZXNzb3JzIHVzZWQgYnkgdGhpcyBydWxlLiAqL1xuaW50ZXJmYWNlIFNvdXJjZUNvZGVBY2Nlc3Mge1xuICAvKiogUmV0dXJucyB0aGUgbm9kZSBhdCBhIHJhbmdlIGluZGV4LiAqL1xuICBnZXROb2RlQnlSYW5nZUluZGV4OiAoaW5kZXg6IG51bWJlcikgPT4gRXN0cmVlTm9kZSB8IG51bGw7XG4gIC8qKiBSZXR1cm5zIHRoZSBmaXJzdCB0b2tlbiBhZnRlciBhIGNvbW1lbnQuICovXG4gIGdldFRva2VuQWZ0ZXI6IChcbiAgICBub2RlOiBFc3RyZWVDb21tZW50LFxuICAgIG9wdGlvbnM/OiBUb2tlbkFmdGVyT3B0aW9ucyxcbiAgKSA9PiBudWxsIHwgVG9rZW5XaXRoT3B0aW9uYWxSYW5nZTtcbn1cbi8qKiBUeXBlIGFsaWFzIGZvciBjb21tZW50IG5vZGVzIHByb3ZpZGVkIGJ5IEVTTGludC4gKi9cbnR5cGUgU291cmNlQ29tbWVudCA9IEVzdHJlZUNvbW1lbnQ7XG4vKiogT3B0aW9ucyB1c2VkIHdoZW4gZmV0Y2hpbmcgdG9rZW5zIGFmdGVyIGNvbW1lbnRzLiAqL1xuaW50ZXJmYWNlIFRva2VuQWZ0ZXJPcHRpb25zIHtcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSBjb21tZW50IHRva2Vucy4gKi9cbiAgaW5jbHVkZUNvbW1lbnRzPzogYm9vbGVhbjtcbn1cbi8qKiBTaGFwZSBmb3IgdG9rZW5zIHRoYXQgbWF5IGluY2x1ZGUgYSByYW5nZS4gKi9cbmludGVyZmFjZSBUb2tlbldpdGhPcHRpb25hbFJhbmdlIHtcbiAgLyoqIFRva2VuIHJhbmdlIHVzZWQgZm9yIGxvb2t1cHMuICovXG4gIHJhbmdlPzogW251bWJlciwgbnVtYmVyXTtcbn1cbi8qKiBTaGFwZSBmb3IgdG9rZW5zIHdpdGggcmFuZ2UgbWV0YWRhdGEuICovXG5pbnRlcmZhY2UgVG9rZW5XaXRoUmFuZ2Uge1xuICAvKiogVG9rZW4gcmFuZ2UgdXNlZCBmb3IgbG9va3Vwcy4gKi9cbiAgcmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG59XG4vKiogU2hhcGUgZm9yIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGVudHJpZXMuICovXG5pbnRlcmZhY2UgVmFyaWFibGVEZWNsYXJhdGlvbkVudHJ5IHtcbiAgLyoqIE9wdGlvbmFsIGluaXRpYWxpemVyIGZvciB0aGUgZGVjbGFyYXRpb24uICovXG4gIGluaXQ/OiBNYXliZU5vZGU7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHRva2VuIGFmdGVyIGEgY29tbWVudCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBjb2RlIGFjY2Vzc29ycy5cbiAqIEBwYXJhbSBjb21tZW50IENvbW1lbnQgbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVG9rZW4gcmFuZ2UgbWV0YWRhdGEgd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0VG9rZW5BZnRlclJhbmdlKHt9IGFzIFNvdXJjZUNvZGVBY2Nlc3MsIHt9IGFzIFNvdXJjZUNvbW1lbnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFRva2VuQWZ0ZXJSYW5nZSA9IChcbiAgc291cmNlQ29kZTogU291cmNlQ29kZUFjY2VzcyxcbiAgY29tbWVudDogU291cmNlQ29tbWVudCxcbik6IFRva2VuV2l0aFJhbmdlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb2RlLmdldFRva2VuQWZ0ZXIgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCB0b2tlbkFmdGVyID0gc291cmNlQ29kZS5nZXRUb2tlbkFmdGVyKGNvbW1lbnQsIHtcbiAgICBpbmNsdWRlQ29tbWVudHM6IGZhbHNlLFxuICB9KTtcbiAgaWYgKHRva2VuQWZ0ZXI/LnJhbmdlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIHJldHVybiB7IHJhbmdlOiB0b2tlbkFmdGVyLnJhbmdlIH07XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uLWxpa2Ugbm9kZSB0eXBlcyBoYW5kbGVkIGRpcmVjdGx5LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGZ1bmN0aW9uTGlrZVR5cGVzLmhhcyhcIlRTRnVuY3Rpb25UeXBlXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGZ1bmN0aW9uTGlrZVR5cGVzID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJUU0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvblwiLFxuICBcIlRTQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb25cIixcbiAgXCJUU0Z1bmN0aW9uVHlwZVwiLFxuXSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbm9kZSBpcyBhIGZ1bmN0aW9uIGV4cHJlc3Npb24gb3IgYXJyb3cgZnVuY3Rpb24uXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIG5vZGUgaXMgYSBmdW5jdGlvbiBleHByZXNzaW9uLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzRnVuY3Rpb25FeHByZXNzaW9uKHsgdHlwZTogXCJGdW5jdGlvbkV4cHJlc3Npb25cIiB9IGFzIEVzdHJlZU5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzRnVuY3Rpb25FeHByZXNzaW9uID0gKG5vZGU6IE1heWJlTm9kZSk6IGJvb2xlYW4gPT5cbiAgbm9kZT8udHlwZSA9PT0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIiB8fFxuICBub2RlPy50eXBlID09PSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCI7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbm9kZSBpcyBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG9yIFRTIGRlY2xhcmF0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgbm9kZSBpcyBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzRnVuY3Rpb25EZWNsYXJhdGlvbih7IHR5cGU6IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiIH0gYXMgRXN0cmVlTm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNGdW5jdGlvbkRlY2xhcmF0aW9uID0gKG5vZGU6IE1heWJlTm9kZSk6IGJvb2xlYW4gPT5cbiAgbm9kZT8udHlwZSA9PT0gXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCIgfHwgbm9kZT8udHlwZSA9PT0gXCJUU0RlY2xhcmVGdW5jdGlvblwiO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG5vZGUgaXMgYSBtZXRob2QtbGlrZSBkZWNsYXJhdGlvbi5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgbm9kZSBpcyBhIG1ldGhvZC1saWtlIGRlY2xhcmF0aW9uLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzTWV0aG9kTGlrZSh7IHR5cGU6IFwiTWV0aG9kRGVmaW5pdGlvblwiIH0gYXMgRXN0cmVlTm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNNZXRob2RMaWtlID0gKG5vZGU6IE1heWJlTm9kZSk6IGJvb2xlYW4gPT5cbiAgbm9kZT8udHlwZSA9PT0gXCJNZXRob2REZWZpbml0aW9uXCIgfHwgbm9kZT8udHlwZSA9PT0gXCJUU01ldGhvZFNpZ25hdHVyZVwiO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG5vZGUgaXMgYSBwcm9wZXJ0eSB3aXRoIGEgZnVuY3Rpb24gaW5pdGlhbGl6ZXIuXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHByb3BlcnR5IHZhbHVlIGlzIGEgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaXNQcm9wZXJ0eVdpdGhGdW5jdGlvblZhbHVlKHsgdHlwZTogXCJQcm9wZXJ0eVwiIH0gYXMgRXN0cmVlTm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNQcm9wZXJ0eVdpdGhGdW5jdGlvblZhbHVlID0gKG5vZGU6IEVzdHJlZU5vZGUpOiBib29sZWFuID0+IHtcbiAgaWYgKG5vZGUudHlwZSAhPT0gXCJQcm9wZXJ0eURlZmluaXRpb25cIiAmJiBub2RlLnR5cGUgIT09IFwiUHJvcGVydHlcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHsgdmFsdWUgfSA9IG5vZGUgYXMgTm9kZVdpdGhWYWx1ZTtcbiAgcmV0dXJuIGlzRnVuY3Rpb25FeHByZXNzaW9uKHZhbHVlKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gY29udGFpbnMgYSBmdW5jdGlvbiBpbml0aWFsaXplci5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiBhbnkgaW5pdGlhbGl6ZXIgaXMgYSBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpc1ZhcmlhYmxlV2l0aEZ1bmN0aW9uSW5pdCh7IHR5cGU6IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiIH0gYXMgRXN0cmVlTm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNWYXJpYWJsZVdpdGhGdW5jdGlvbkluaXQgPSAobm9kZTogRXN0cmVlTm9kZSk6IGJvb2xlYW4gPT4ge1xuICBpZiAobm9kZS50eXBlICE9PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHsgZGVjbGFyYXRpb25zIH0gPSBub2RlIGFzIE5vZGVXaXRoRGVjbGFyYXRpb25zO1xuICBjb25zdCBpbml0aWFsaXplZCA9IGRlY2xhcmF0aW9ucyA/PyBbXTtcblxuICByZXR1cm4gaW5pdGlhbGl6ZWQuc29tZSgoZGVjbGFyYXRpb24pID0+XG4gICAgaXNGdW5jdGlvbkV4cHJlc3Npb24oZGVjbGFyYXRpb24uaW5pdCksXG4gICk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhbiBleHBvcnQgd3JhcHMgYSBmdW5jdGlvbi1saWtlIGRlY2xhcmF0aW9uLlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBleHBvcnRlZCBkZWNsYXJhdGlvbiBpcyBmdW5jdGlvbi1saWtlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzRXhwb3J0ZWRGdW5jdGlvbkxpa2UoeyB0eXBlOiBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiB9IGFzIEVzdHJlZU5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzRXhwb3J0ZWRGdW5jdGlvbkxpa2UgPSAobm9kZTogRXN0cmVlTm9kZSk6IGJvb2xlYW4gPT4ge1xuICBpZiAoXG4gICAgbm9kZS50eXBlICE9PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiAmJlxuICAgIG5vZGUudHlwZSAhPT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIlxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB7IGRlY2xhcmF0aW9uIH0gPSBub2RlIGFzIE5vZGVXaXRoRGVjbGFyYXRpb247XG5cbiAgcmV0dXJuIGlzRnVuY3Rpb25MaWtlTm9kZShkZWNsYXJhdGlvbik7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG5vZGUgcmVwcmVzZW50cyBhbnkgc3VwcG9ydGVkIGZ1bmN0aW9uLWxpa2UgZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIG5vZGUgaXMgZnVuY3Rpb24tbGlrZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpc0Z1bmN0aW9uTGlrZU5vZGUoeyB0eXBlOiBcIkZ1bmN0aW9uRGVjbGFyYXRpb25cIiB9IGFzIEVzdHJlZU5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzRnVuY3Rpb25MaWtlTm9kZSA9IChub2RlOiBNYXliZU5vZGUpOiBib29sZWFuID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICBpc0Z1bmN0aW9uRGVjbGFyYXRpb24obm9kZSkgfHxcbiAgICBpc0Z1bmN0aW9uRXhwcmVzc2lvbihub2RlKSB8fFxuICAgIGlzTWV0aG9kTGlrZShub2RlKSB8fFxuICAgIGZ1bmN0aW9uTGlrZVR5cGVzLmhhcyhub2RlLnR5cGUpIHx8XG4gICAgaXNQcm9wZXJ0eVdpdGhGdW5jdGlvblZhbHVlKG5vZGUgYXMgRXN0cmVlTm9kZSkgfHxcbiAgICBpc1ZhcmlhYmxlV2l0aEZ1bmN0aW9uSW5pdChub2RlIGFzIEVzdHJlZU5vZGUpIHx8XG4gICAgaXNFeHBvcnRlZEZ1bmN0aW9uTGlrZShub2RlIGFzIEVzdHJlZU5vZGUpXG4gICk7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIEpTRG9jIGNvbW1lbnQgc2hvdWxkIGJlIHNraXBwZWQgZm9yIGZ1bmN0aW9uIHRhcmdldHMuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGNvbnRleHQuXG4gKiBAcGFyYW0gY29tbWVudCBDb21tZW50IG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgY29tbWVudCB0YXJnZXRzIGEgZnVuY3Rpb24tbGlrZSBub2RlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHNob3VsZFNraXBGb3JGdW5jdGlvbih7fSBhcyBSdWxlLlJ1bGVDb250ZXh0LCB7fSBhcyBTb3VyY2VDb21tZW50KTtcbiAqIGBgYFxuICovXG5jb25zdCBzaG91bGRTa2lwRm9yRnVuY3Rpb24gPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGNvbW1lbnQ6IFNvdXJjZUNvbW1lbnQsXG4pOiBib29sZWFuID0+IHtcbiAgY29uc3Qgc291cmNlQ29kZSA9IGNvbnRleHQuc291cmNlQ29kZSBhcyBTb3VyY2VDb2RlQWNjZXNzO1xuICBpZiAodHlwZW9mIHNvdXJjZUNvZGUuZ2V0Tm9kZUJ5UmFuZ2VJbmRleCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgdG9rZW5BZnRlciA9IGdldFRva2VuQWZ0ZXJSYW5nZShzb3VyY2VDb2RlLCBjb21tZW50KTtcbiAgaWYgKHRva2VuQWZ0ZXIgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IFtyYW5nZVN0YXJ0XSA9IHRva2VuQWZ0ZXIucmFuZ2U7XG4gIGNvbnN0IG5vZGUgPSBzb3VyY2VDb2RlLmdldE5vZGVCeVJhbmdlSW5kZXgocmFuZ2VTdGFydCk7XG4gIHJldHVybiBpc0Z1bmN0aW9uTGlrZU5vZGUobm9kZSk7XG59O1xuXG4vKiogUnVsZSBtb2R1bGUgZW5mb3JjaW5nIHNpbmdsZS1saW5lIEpTRG9jIHdoZW4gaXQgZml0cy4gKi9cbmV4cG9ydCBjb25zdCBzaW5nbGVMaW5lSnNkb2NSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgc291cmNlQ29kZSB9ID0gY29udGV4dDtcbiAgICBjb25zdCBtYXhMaW5lTGVuZ3RoID0gbm9ybWFsaXplTWF4TGluZUxlbmd0aChvcHRpb25zKTtcbiAgICBjb25zdCBjb21tZW50cyA9IHNvdXJjZUNvZGUuZ2V0QWxsQ29tbWVudHMoKTtcblxuICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBjb21tZW50cykge1xuICAgICAgaWYgKCFzaG91bGRTa2lwRm9yRnVuY3Rpb24oY29udGV4dCwgY29tbWVudCkpIHtcbiAgICAgICAgcmVwb3J0SWZTaW5nbGVMaW5lKGNvbnRleHQsIGNvbW1lbnQsIG1heExpbmVMZW5ndGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRlZmF1bHRPcHRpb25zOiBbeyBtYXhMaW5lTGVuZ3RoOiA4MCB9XSxcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXF1aXJlIEpTRG9jIGNvbW1lbnRzIHRvIHVzZSBhIHNpbmdsZSBsaW5lIHdoZW4gdGhleSBmaXQuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9zaW5nbGUtbGluZS1qc2RvYy5tZFwiLFxuICAgIH0sXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHNpbmdsZUxpbmU6IFwiVXNlIGEgc2luZ2xlLWxpbmUgSlNEb2MgY29tbWVudCB3aGVuIGl0IGZpdHMgb24gb25lIGxpbmUuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgbWF4TGluZUxlbmd0aDoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiTWF4aW11bSBsaW5lIGxlbmd0aCB0aGF0IHN0aWxsIGFsbG93cyBhIEpTRG9jIGJsb2NrIHRvIGJlIGNvbGxhcHNlZCB0byBhIHNpbmdsZSBsaW5lLlwiLFxuICAgICAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICB0eXBlOiBcImxheW91dFwiLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.node-lookups.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/single-line-jsdoc/rule.node-lookups.ts"],"names":[],"mappings":"AAEA,qEAAqE;AACrE,QAAA,MAAM,8BAA8B,kCAAsB,CAAC;AAE3D,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { singleLineJsdocRule } from "./rule.js";
|
|
2
|
+
/** Companion module for single-line-jsdoc lookup edge-case tests. */
|
|
3
|
+
const singleLineJsdocRuleNodeLookups = singleLineJsdocRule;
|
|
4
|
+
export { singleLineJsdocRuleNodeLookups };
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5ub2RlLWxvb2t1cHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3Mvc2luZ2xlLWxpbmUtanNkb2MvcnVsZS5ub2RlLWxvb2t1cHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTdDLHFFQUFxRTtBQUNyRSxNQUFNLDhCQUE4QixHQUFHLG1CQUFtQixDQUFDO0FBRTNELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2luZ2xlTGluZUpzZG9jUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcclxuXHJcbi8qKiBDb21wYW5pb24gbW9kdWxlIGZvciBzaW5nbGUtbGluZS1qc2RvYyBsb29rdXAgZWRnZS1jYXNlIHRlc3RzLiAqL1xyXG5jb25zdCBzaW5nbGVMaW5lSnNkb2NSdWxlTm9kZUxvb2t1cHMgPSBzaW5nbGVMaW5lSnNkb2NSdWxlO1xyXG5cclxuZXhwb3J0IHsgc2luZ2xlTGluZUpzZG9jUnVsZU5vZGVMb29rdXBzIH07XHJcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-line-jsdoc-content.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/single-line-jsdoc/single-line-jsdoc-content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,qCAAqC;AACrC,KAAK,OAAO,GAAG,UAAU,CACvB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,CACjD,CAAC,MAAM,CAAC,CAAC;AAyFV;;;;;;;;GAQG;AACH,QAAA,MAAM,mBAAmB,GAAI,SAAS,OAAO,KAAG,MAAM,GAAG,SAYxD,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,YAAY,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines stripJsdocLine.
|
|
3
|
+
* @param line Input line value.
|
|
4
|
+
* @returns Return value output.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* stripJsdocLine();
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
const stripJsdocLine = (line) => line.replace(/^\s*\*? ?/u, "").trimEnd();
|
|
11
|
+
/**
|
|
12
|
+
* Defines trimEmptyEdges.
|
|
13
|
+
* @param lines Input lines value.
|
|
14
|
+
* @returns Return value output.
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* trimEmptyEdges();
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
const trimEmptyEdges = (lines) => {
|
|
21
|
+
let start = 0;
|
|
22
|
+
let end = lines.length - 1;
|
|
23
|
+
while (start <= end && lines[start]?.length === 0) {
|
|
24
|
+
start += 1;
|
|
25
|
+
}
|
|
26
|
+
while (end >= start && lines[end]?.length === 0) {
|
|
27
|
+
end -= 1;
|
|
28
|
+
}
|
|
29
|
+
return lines.slice(start, end + 1);
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Gets getContentLines.
|
|
33
|
+
* @param commentValue Input commentValue value.
|
|
34
|
+
* @returns Return value output.
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* getContentLines();
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
const getContentLines = (commentValue) => {
|
|
41
|
+
const lines = commentValue
|
|
42
|
+
.split(/\r?\n/u)
|
|
43
|
+
.map((line) => stripJsdocLine(line))
|
|
44
|
+
.map((line) => line.trim());
|
|
45
|
+
return trimEmptyEdges(lines);
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Checks shouldSkipContent.
|
|
49
|
+
* @param lines Input lines value.
|
|
50
|
+
* @returns Return value output.
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* shouldSkipContent();
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
const shouldSkipContent = (lines) => {
|
|
57
|
+
if (lines.length === 0) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (lines.some((line) => line.length === 0)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return lines.some((line) => line.startsWith("@"));
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Defines collapseContent.
|
|
67
|
+
* @param lines Input lines value.
|
|
68
|
+
* @returns Return value output.
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* collapseContent();
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
const collapseContent = (lines) => lines.join(" ").replaceAll(/\s+/gu, " ").trim();
|
|
75
|
+
/**
|
|
76
|
+
* Gets getCollapsedContent.
|
|
77
|
+
* @param comment Input comment value.
|
|
78
|
+
* @returns Return value output.
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* getCollapsedContent();
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
const getCollapsedContent = (comment) => {
|
|
85
|
+
const contentLines = getContentLines(comment.value);
|
|
86
|
+
if (shouldSkipContent(contentLines)) {
|
|
87
|
+
return void 0;
|
|
88
|
+
}
|
|
89
|
+
if (contentLines.length !== 1) {
|
|
90
|
+
return void 0;
|
|
91
|
+
}
|
|
92
|
+
return collapseContent(contentLines);
|
|
93
|
+
};
|
|
94
|
+
export { getCollapsedContent };
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWxpbmUtanNkb2MtY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9zaW5nbGUtbGluZS1qc2RvYy9zaW5nbGUtbGluZS1qc2RvYy1jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRSxDQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUUzQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBZSxFQUFZLEVBQUU7SUFDbkQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFM0IsT0FBTyxLQUFLLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEQsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxPQUFPLEdBQUcsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxZQUFvQixFQUFZLEVBQUU7SUFDekQsTUFBTSxLQUFLLEdBQUcsWUFBWTtTQUN2QixLQUFLLENBQUMsUUFBUSxDQUFDO1NBQ2YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU5QixPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFlLEVBQVcsRUFBRTtJQUNyRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWUsRUFBVSxFQUFFLENBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUVsRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxPQUFnQixFQUFzQixFQUFFO0lBQ25FLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFcEQsSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xudHlwZSBDb21tZW50ID0gUmV0dXJuVHlwZTxcbiAgUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl1bXCJnZXRBbGxDb21tZW50c1wiXVxuPltudW1iZXJdO1xuXG4vKipcbiAqIERlZmluZXMgc3RyaXBKc2RvY0xpbmUuXG4gKiBAcGFyYW0gbGluZSBJbnB1dCBsaW5lIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzdHJpcEpzZG9jTGluZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IHN0cmlwSnNkb2NMaW5lID0gKGxpbmU6IHN0cmluZyk6IHN0cmluZyA9PlxuICBsaW5lLnJlcGxhY2UoL15cXHMqXFwqPyA/L3UsIFwiXCIpLnRyaW1FbmQoKTtcblxuLyoqXG4gKiBEZWZpbmVzIHRyaW1FbXB0eUVkZ2VzLlxuICogQHBhcmFtIGxpbmVzIElucHV0IGxpbmVzIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0cmltRW1wdHlFZGdlcygpO1xuICogYGBgXG4gKi9cbmNvbnN0IHRyaW1FbXB0eUVkZ2VzID0gKGxpbmVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IGVuZCA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgd2hpbGUgKHN0YXJ0IDw9IGVuZCAmJiBsaW5lc1tzdGFydF0/Lmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXJ0ICs9IDE7XG4gIH1cblxuICB3aGlsZSAoZW5kID49IHN0YXJ0ICYmIGxpbmVzW2VuZF0/Lmxlbmd0aCA9PT0gMCkge1xuICAgIGVuZCAtPSAxO1xuICB9XG5cbiAgcmV0dXJuIGxpbmVzLnNsaWNlKHN0YXJ0LCBlbmQgKyAxKTtcbn07XG5cbi8qKlxuICogR2V0cyBnZXRDb250ZW50TGluZXMuXG4gKiBAcGFyYW0gY29tbWVudFZhbHVlIElucHV0IGNvbW1lbnRWYWx1ZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0Q29udGVudExpbmVzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29udGVudExpbmVzID0gKGNvbW1lbnRWYWx1ZTogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBsaW5lcyA9IGNvbW1lbnRWYWx1ZVxuICAgIC5zcGxpdCgvXFxyP1xcbi91KVxuICAgIC5tYXAoKGxpbmUpID0+IHN0cmlwSnNkb2NMaW5lKGxpbmUpKVxuICAgIC5tYXAoKGxpbmUpID0+IGxpbmUudHJpbSgpKTtcblxuICByZXR1cm4gdHJpbUVtcHR5RWRnZXMobGluZXMpO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgc2hvdWxkU2tpcENvbnRlbnQuXG4gKiBAcGFyYW0gbGluZXMgSW5wdXQgbGluZXMgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHNob3VsZFNraXBDb250ZW50KCk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgc2hvdWxkU2tpcENvbnRlbnQgPSAobGluZXM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGlmIChsaW5lcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChsaW5lcy5zb21lKChsaW5lKSA9PiBsaW5lLmxlbmd0aCA9PT0gMCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5zb21lKChsaW5lKSA9PiBsaW5lLnN0YXJ0c1dpdGgoXCJAXCIpKTtcbn07XG5cbi8qKlxuICogRGVmaW5lcyBjb2xsYXBzZUNvbnRlbnQuXG4gKiBAcGFyYW0gbGluZXMgSW5wdXQgbGluZXMgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbGxhcHNlQ29udGVudCgpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNvbGxhcHNlQ29udGVudCA9IChsaW5lczogc3RyaW5nW10pOiBzdHJpbmcgPT5cbiAgbGluZXMuam9pbihcIiBcIikucmVwbGFjZUFsbCgvXFxzKy9ndSwgXCIgXCIpLnRyaW0oKTtcblxuLyoqXG4gKiBHZXRzIGdldENvbGxhcHNlZENvbnRlbnQuXG4gKiBAcGFyYW0gY29tbWVudCBJbnB1dCBjb21tZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRDb2xsYXBzZWRDb250ZW50KCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29sbGFwc2VkQ29udGVudCA9IChjb21tZW50OiBDb21tZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY29udGVudExpbmVzID0gZ2V0Q29udGVudExpbmVzKGNvbW1lbnQudmFsdWUpO1xuXG4gIGlmIChzaG91bGRTa2lwQ29udGVudChjb250ZW50TGluZXMpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGlmIChjb250ZW50TGluZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBjb2xsYXBzZUNvbnRlbnQoY29udGVudExpbmVzKTtcbn07XG5cbmV4cG9ydCB7IGdldENvbGxhcHNlZENvbnRlbnQgfTtcbmV4cG9ydCB0eXBlIHsgQ29tbWVudCB9O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-line-jsdoc-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAa3D;;;;;;;;GAQG;AACH,QAAA,MAAM,sBAAsB,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,MAU7D,CAAC;AAiHF;;;;;;;;;GASG;AACH,QAAA,MAAM,kBAAkB,GACtB,SAAS,IAAI,CAAC,WAAW,EACzB,SAAS,OAAO,EAChB,eAAe,MAAM,KACpB,IAsBF,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { getCollapsedContent } from "./single-line-jsdoc-content.js";
|
|
2
|
+
/** Default value used by this module. */
|
|
3
|
+
const DEFAULT_MAX_LINE_LENGTH = 80;
|
|
4
|
+
/**
|
|
5
|
+
* Normalizes normalizeMaxLineLength.
|
|
6
|
+
* @param options Input options value.
|
|
7
|
+
* @returns Return value output.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* normalizeMaxLineLength();
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
const normalizeMaxLineLength = (options) => {
|
|
14
|
+
const rawOptions = options[0];
|
|
15
|
+
const maxLineLength = rawOptions?.maxLineLength;
|
|
16
|
+
if (typeof maxLineLength === "number" && Number.isFinite(maxLineLength)) {
|
|
17
|
+
const normalized = Math.floor(maxLineLength);
|
|
18
|
+
return normalized > 0 ? normalized : DEFAULT_MAX_LINE_LENGTH;
|
|
19
|
+
}
|
|
20
|
+
return DEFAULT_MAX_LINE_LENGTH;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Checks isMultilineComment.
|
|
24
|
+
* @param comment Input comment value.
|
|
25
|
+
* @returns Return value output.
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* isMultilineComment();
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
const isMultilineComment = (comment) => {
|
|
32
|
+
const { loc, value } = comment;
|
|
33
|
+
if (loc === null || loc === void 0) {
|
|
34
|
+
return /\r|\n/u.test(value);
|
|
35
|
+
}
|
|
36
|
+
return loc.start.line !== loc.end.line;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Build a single-line JSDoc string from content.
|
|
40
|
+
* @param content Input content value.
|
|
41
|
+
* @returns Return value output.
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const text = buildSingleLineText("ok");
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
const buildSingleLineText = (content) => `/** ${content} */`;
|
|
48
|
+
/**
|
|
49
|
+
* Creates a fixer for replacing a JSDoc range.
|
|
50
|
+
* @param range Input range value.
|
|
51
|
+
* @param replacementText Input replacementText value.
|
|
52
|
+
* @returns Fixer function for ESLint.
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const fixer = createFix([0, 1], "/** ok *\\/");
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
const createFix = (range, replacementText) => {
|
|
59
|
+
return (fixer) => fixer.replaceTextRange(range, replacementText);
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Checks isJsdocComment.
|
|
63
|
+
* @param comment Input comment value.
|
|
64
|
+
* @returns Return value output.
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* isJsdocComment();
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
const isJsdocComment = (comment) => comment.type === "Block" && comment.value.startsWith("*");
|
|
71
|
+
/**
|
|
72
|
+
* Gets getStartColumn.
|
|
73
|
+
* @param comment Input comment value.
|
|
74
|
+
* @returns Return value output.
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* getStartColumn();
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
const getStartColumn = (comment) => {
|
|
81
|
+
const { loc } = comment;
|
|
82
|
+
if (loc === null || loc === void 0) {
|
|
83
|
+
return void 0;
|
|
84
|
+
}
|
|
85
|
+
return loc.start.column;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Builds a single-line replacement when it fits.
|
|
89
|
+
* @param comment Input comment value.
|
|
90
|
+
* @param maxLineLength Input maxLineLength value.
|
|
91
|
+
* @returns Replacement text when available.
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const text = getSingleLineReplacement(comment, 80);
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
const getSingleLineReplacement = (comment, maxLineLength) => {
|
|
98
|
+
if (!isMultilineComment(comment)) {
|
|
99
|
+
return void 0;
|
|
100
|
+
}
|
|
101
|
+
const content = getCollapsedContent(comment);
|
|
102
|
+
const startColumn = getStartColumn(comment);
|
|
103
|
+
if (content === void 0 || startColumn === void 0) {
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
const singleLineText = buildSingleLineText(content);
|
|
107
|
+
return startColumn + singleLineText.length > maxLineLength
|
|
108
|
+
? void 0
|
|
109
|
+
: singleLineText;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Reports a comment when it can be collapsed to a single line.
|
|
113
|
+
* @param context Input context value.
|
|
114
|
+
* @param comment Input comment value.
|
|
115
|
+
* @param maxLineLength Input maxLineLength value.
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* reportIfSingleLine(context, comment, 80);
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
const reportIfSingleLine = (context, comment, maxLineLength) => {
|
|
122
|
+
if (!isJsdocComment(comment)) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const singleLineText = getSingleLineReplacement(comment, maxLineLength);
|
|
126
|
+
if (singleLineText === void 0) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const { loc, range } = comment;
|
|
130
|
+
if (loc === null || loc === void 0 || range === void 0) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
context.report({
|
|
134
|
+
fix: createFix(range, singleLineText),
|
|
135
|
+
loc,
|
|
136
|
+
messageId: "singleLine",
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
export { normalizeMaxLineLength, reportIfSingleLine };
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWxpbmUtanNkb2MtdXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9kb2NzL3NpbmdsZS1saW5lLWpzZG9jL3NpbmdsZS1saW5lLWpzZG9jLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVsRSx5Q0FBeUM7QUFDekMsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFRbkM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBMkIsRUFBVSxFQUFFO0lBQ3JFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQXVDLENBQUM7SUFDcEUsTUFBTSxhQUFhLEdBQUcsVUFBVSxFQUFFLGFBQWEsQ0FBQztJQUVoRCxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDeEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxPQUFPLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7SUFDL0QsQ0FBQztJQUVELE9BQU8sdUJBQXVCLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBZ0IsRUFBVyxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRS9CLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIs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QUM7QUFDTCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tZW50IH0gZnJvbSBcIi4vc2luZ2xlLWxpbmUtanNkb2MtY29udGVudFwiO1xuXG5pbXBvcnQgeyBnZXRDb2xsYXBzZWRDb250ZW50IH0gZnJvbSBcIi4vc2luZ2xlLWxpbmUtanNkb2MtY29udGVudFwiO1xuXG4vKiogRGVmYXVsdCB2YWx1ZSB1c2VkIGJ5IHRoaXMgbW9kdWxlLiAqL1xuY29uc3QgREVGQVVMVF9NQVhfTElORV9MRU5HVEggPSA4MDtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFNpbmdsZUxpbmVKc2RvY09wdGlvbnMge1xuICAvKiogTWF4TGluZUxlbmd0aCBoZWxwZXIgdmFsdWUuICovXG4gIG1heExpbmVMZW5ndGg/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBub3JtYWxpemVNYXhMaW5lTGVuZ3RoLlxuICogQHBhcmFtIG9wdGlvbnMgSW5wdXQgb3B0aW9ucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbm9ybWFsaXplTWF4TGluZUxlbmd0aCgpO1xuICogYGBgXG4gKi9cbmNvbnN0IG5vcm1hbGl6ZU1heExpbmVMZW5ndGggPSAob3B0aW9uczogcmVhZG9ubHkgdW5rbm93bltdKTogbnVtYmVyID0+IHtcbiAgY29uc3QgcmF3T3B0aW9ucyA9IG9wdGlvbnNbMF0gYXMgU2luZ2xlTGluZUpzZG9jT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgbWF4TGluZUxlbmd0aCA9IHJhd09wdGlvbnM/Lm1heExpbmVMZW5ndGg7XG5cbiAgaWYgKHR5cGVvZiBtYXhMaW5lTGVuZ3RoID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZShtYXhMaW5lTGVuZ3RoKSkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBNYXRoLmZsb29yKG1heExpbmVMZW5ndGgpO1xuICAgIHJldHVybiBub3JtYWxpemVkID4gMCA/IG5vcm1hbGl6ZWQgOiBERUZBVUxUX01BWF9MSU5FX0xFTkdUSDtcbiAgfVxuXG4gIHJldHVybiBERUZBVUxUX01BWF9MSU5FX0xFTkdUSDtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlzTXVsdGlsaW5lQ29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50IElucHV0IGNvbW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzTXVsdGlsaW5lQ29tbWVudCgpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTXVsdGlsaW5lQ29tbWVudCA9IChjb21tZW50OiBDb21tZW50KTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHsgbG9jLCB2YWx1ZSB9ID0gY29tbWVudDtcblxuICBpZiAobG9jID09PSBudWxsIHx8IGxvYyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIC9cXHJ8XFxuL3UudGVzdCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gbG9jLnN0YXJ0LmxpbmUgIT09IGxvYy5lbmQubGluZTtcbn07XG5cbi8qKlxuICogQnVpbGQgYSBzaW5nbGUtbGluZSBKU0RvYyBzdHJpbmcgZnJvbSBjb250ZW50LlxuICogQHBhcmFtIGNvbnRlbnQgSW5wdXQgY29udGVudCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IGJ1aWxkU2luZ2xlTGluZVRleHQoXCJva1wiKTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZFNpbmdsZUxpbmVUZXh0ID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PiBgLyoqICR7Y29udGVudH0gKi9gO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmaXhlciBmb3IgcmVwbGFjaW5nIGEgSlNEb2MgcmFuZ2UuXG4gKiBAcGFyYW0gcmFuZ2UgSW5wdXQgcmFuZ2UgdmFsdWUuXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRUZXh0IElucHV0IHJlcGxhY2VtZW50VGV4dCB2YWx1ZS5cbiAqIEByZXR1cm5zIEZpeGVyIGZ1bmN0aW9uIGZvciBFU0xpbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZml4ZXIgPSBjcmVhdGVGaXgoWzAsIDFdLCBcIi8qKiBvayAqXFxcXC9cIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgY3JlYXRlRml4ID0gKFxuICByYW5nZTogW251bWJlciwgbnVtYmVyXSxcbiAgcmVwbGFjZW1lbnRUZXh0OiBzdHJpbmcsXG4pOiBSdWxlLlJlcG9ydEZpeGVyID0+IHtcbiAgcmV0dXJuIChmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeCA9PlxuICAgIGZpeGVyLnJlcGxhY2VUZXh0UmFuZ2UocmFuZ2UsIHJlcGxhY2VtZW50VGV4dCk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpc0pzZG9jQ29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50IElucHV0IGNvbW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzSnNkb2NDb21tZW50KCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNKc2RvY0NvbW1lbnQgPSAoY29tbWVudDogQ29tbWVudCk6IGJvb2xlYW4gPT5cbiAgY29tbWVudC50eXBlID09PSBcIkJsb2NrXCIgJiYgY29tbWVudC52YWx1ZS5zdGFydHNXaXRoKFwiKlwiKTtcblxuLyoqXG4gKiBHZXRzIGdldFN0YXJ0Q29sdW1uLlxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0U3RhcnRDb2x1bW4oKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRTdGFydENvbHVtbiA9IChjb21tZW50OiBDb21tZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgeyBsb2MgfSA9IGNvbW1lbnQ7XG5cbiAgaWYgKGxvYyA9PT0gbnVsbCB8fCBsb2MgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gbG9jLnN0YXJ0LmNvbHVtbjtcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgc2luZ2xlLWxpbmUgcmVwbGFjZW1lbnQgd2hlbiBpdCBmaXRzLlxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cbiAqIEBwYXJhbSBtYXhMaW5lTGVuZ3RoIElucHV0IG1heExpbmVMZW5ndGggdmFsdWUuXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudCB0ZXh0IHdoZW4gYXZhaWxhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHRleHQgPSBnZXRTaW5nbGVMaW5lUmVwbGFjZW1lbnQoY29tbWVudCwgODApO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFNpbmdsZUxpbmVSZXBsYWNlbWVudCA9IChcbiAgY29tbWVudDogQ29tbWVudCxcbiAgbWF4TGluZUxlbmd0aDogbnVtYmVyLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFpc011bHRpbGluZUNvbW1lbnQoY29tbWVudCkpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgY29udGVudCA9IGdldENvbGxhcHNlZENvbnRlbnQoY29tbWVudCk7XG4gIGNvbnN0IHN0YXJ0Q29sdW1uID0gZ2V0U3RhcnRDb2x1bW4oY29tbWVudCk7XG5cbiAgaWYgKGNvbnRlbnQgPT09IHZvaWQgMCB8fCBzdGFydENvbHVtbiA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHNpbmdsZUxpbmVUZXh0ID0gYnVpbGRTaW5nbGVMaW5lVGV4dChjb250ZW50KTtcblxuICByZXR1cm4gc3RhcnRDb2x1bW4gKyBzaW5nbGVMaW5lVGV4dC5sZW5ndGggPiBtYXhMaW5lTGVuZ3RoXG4gICAgPyB2b2lkIDBcbiAgICA6IHNpbmdsZUxpbmVUZXh0O1xufTtcblxuLyoqXG4gKiBSZXBvcnRzIGEgY29tbWVudCB3aGVuIGl0IGNhbiBiZSBjb2xsYXBzZWQgdG8gYSBzaW5nbGUgbGluZS5cbiAqIEBwYXJhbSBjb250ZXh0IElucHV0IGNvbnRleHQgdmFsdWUuXG4gKiBAcGFyYW0gY29tbWVudCBJbnB1dCBjb21tZW50IHZhbHVlLlxuICogQHBhcmFtIG1heExpbmVMZW5ndGggSW5wdXQgbWF4TGluZUxlbmd0aCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRJZlNpbmdsZUxpbmUoY29udGV4dCwgY29tbWVudCwgODApO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlcG9ydElmU2luZ2xlTGluZSA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgY29tbWVudDogQ29tbWVudCxcbiAgbWF4TGluZUxlbmd0aDogbnVtYmVyLFxuKTogdm9pZCA9PiB7XG4gIGlmICghaXNKc2RvY0NvbW1lbnQoY29tbWVudCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzaW5nbGVMaW5lVGV4dCA9IGdldFNpbmdsZUxpbmVSZXBsYWNlbWVudChjb21tZW50LCBtYXhMaW5lTGVuZ3RoKTtcblxuICBpZiAoc2luZ2xlTGluZVRleHQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgbG9jLCByYW5nZSB9ID0gY29tbWVudDtcblxuICBpZiAobG9jID09PSBudWxsIHx8IGxvYyA9PT0gdm9pZCAwIHx8IHJhbmdlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgZml4OiBjcmVhdGVGaXgocmFuZ2UsIHNpbmdsZUxpbmVUZXh0KSxcbiAgICBsb2MsXG4gICAgbWVzc2FnZUlkOiBcInNpbmdsZUxpbmVcIixcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBub3JtYWxpemVNYXhMaW5lTGVuZ3RoLCByZXBvcnRJZlNpbmdsZUxpbmUgfTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/domain/docs/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,qCAAqC;AACrC,UAAU,cAAc;IACtB,wBAAwB;IACxB,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;CAC3C;AAED,qCAAqC;AACrC,KAAK,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;AAE7D;;;;;;;GAOG;AACH,QAAA,MAAM,WAAW,QAAO,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAqBpD,CAAC;AAcH;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,GAAI,YAAY,SAAS,KAAG,MAAM,GAAG,SASpD,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,QAAQ,GAAI,SAAS,cAAc,EAAE,KAAG,IAAI,CAAC,GAAG,EAiBrD,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,UAAU,GAAI,YAAY,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,KAAG,MAgB3D,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates createFixer.
|
|
3
|
+
* @returns Return value output.
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* createFixer();
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
const createFixer = () => ({
|
|
10
|
+
insertTextAfter: (syntaxElement, text) => {
|
|
11
|
+
void syntaxElement;
|
|
12
|
+
return { range: [0, 0], text };
|
|
13
|
+
},
|
|
14
|
+
insertTextAfterRange: (range, text) => ({ range, text }),
|
|
15
|
+
insertTextBefore: (syntaxElement, text) => {
|
|
16
|
+
void syntaxElement;
|
|
17
|
+
return { range: [0, 0], text };
|
|
18
|
+
},
|
|
19
|
+
insertTextBeforeRange: (range, text) => ({ range, text }),
|
|
20
|
+
remove: (syntaxElement) => {
|
|
21
|
+
void syntaxElement;
|
|
22
|
+
return { range: [0, 0], text: "" };
|
|
23
|
+
},
|
|
24
|
+
removeRange: (range) => ({ range, text: "" }),
|
|
25
|
+
replaceText: (syntaxElement, text) => {
|
|
26
|
+
void syntaxElement;
|
|
27
|
+
return { range: [0, 0], text };
|
|
28
|
+
},
|
|
29
|
+
replaceTextRange: (range, text) => ({ range, text }),
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Checks isFixIterable.
|
|
33
|
+
* @param fixResult Input fixResult value.
|
|
34
|
+
* @returns Return value output.
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* isFixIterable();
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
const isFixIterable = (fixResult) => Symbol.iterator in fixResult;
|
|
41
|
+
/**
|
|
42
|
+
* Gets getFixText.
|
|
43
|
+
* @param fixResult Input fixResult value.
|
|
44
|
+
* @returns Return value output.
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* getFixText();
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
const getFixText = (fixResult) => {
|
|
51
|
+
if (fixResult === void 0) {
|
|
52
|
+
return void 0;
|
|
53
|
+
}
|
|
54
|
+
if (isFixIterable(fixResult)) {
|
|
55
|
+
return [...fixResult][0]?.text;
|
|
56
|
+
}
|
|
57
|
+
return fixResult.text;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Gets getFixes.
|
|
61
|
+
* @param reports Input reports value.
|
|
62
|
+
* @returns Return value output.
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* getFixes();
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
const getFixes = (reports) => {
|
|
69
|
+
const fixer = createFixer();
|
|
70
|
+
const fixes = [];
|
|
71
|
+
for (const report of reports) {
|
|
72
|
+
const fixResult = report.fix?.(fixer) ?? void 0;
|
|
73
|
+
if (fixResult !== void 0) {
|
|
74
|
+
if (isFixIterable(fixResult)) {
|
|
75
|
+
fixes.push(...fixResult);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
fixes.push(fixResult);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return fixes;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Applies applyFixes.
|
|
86
|
+
* @param sourceText Input sourceText value.
|
|
87
|
+
* @param fixes Input fixes value.
|
|
88
|
+
* @returns Return value output.
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* applyFixes();
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
const applyFixes = (sourceText, fixes) => {
|
|
95
|
+
const sorted = fixes.toSorted((left, right) => right.range[0] - left.range[0]);
|
|
96
|
+
let output = sourceText;
|
|
97
|
+
for (const fix of sorted) {
|
|
98
|
+
output = [
|
|
99
|
+
output.slice(0, fix.range[0]),
|
|
100
|
+
fix.text,
|
|
101
|
+
output.slice(fix.range[1]),
|
|
102
|
+
].join("");
|
|
103
|
+
}
|
|
104
|
+
return output;
|
|
105
|
+
};
|
|
106
|
+
export { applyFixes, createFixer, getFixes, getFixText };
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RvbWFpbi9kb2NzL3Rlc3QtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxXQUFXLEdBQUcsR0FBb0MsRUFBRSxDQUFDLENBQUM7SUFDMUQsZUFBZSxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksRUFBWSxFQUFFO1FBQ2pELEtBQUssYUFBYSxDQUFDO1FBQ25CLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxnQkFBZ0IsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQVksRUFBRTtRQUNsRCxLQUFLLGFBQWEsQ0FBQztRQUNuQixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxxQkFBcUIsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbkUsTUFBTSxFQUFFLENBQUMsYUFBYSxFQUFZLEVBQUU7UUFDbEMsS0FBSyxhQUFhLENBQUM7UUFDbkIsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUNELFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFD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XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGaXhSZXBvcnRFbnRyeSB7XG4gIC8qKiBGaXggaGVscGVyIHZhbHVlLiAqL1xuICBmaXg/OiBudWxsIHwgUnVsZS5SZXBvcnRGaXhlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xudHlwZSBGaXhSZXN1bHQgPSBFeGNsdWRlPFJldHVyblR5cGU8UnVsZS5SZXBvcnRGaXhlcj4sIG51bGw+O1xuXG4vKipcbiAqIENyZWF0ZXMgY3JlYXRlRml4ZXIuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNyZWF0ZUZpeGVyKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY3JlYXRlRml4ZXIgPSAoKTogUGFyYW1ldGVyczxSdWxlLlJlcG9ydEZpeGVyPlswXSA9PiAoe1xuICBpbnNlcnRUZXh0QWZ0ZXI6IChzeW50YXhFbGVtZW50LCB0ZXh0KTogUnVsZS5GaXggPT4ge1xuICAgIHZvaWQgc3ludGF4RWxlbWVudDtcbiAgICByZXR1cm4geyByYW5nZTogWzAsIDBdLCB0ZXh0IH07XG4gIH0sXG4gIGluc2VydFRleHRBZnRlclJhbmdlOiAocmFuZ2UsIHRleHQpOiBSdWxlLkZpeCA9PiAoeyByYW5nZSwgdGV4dCB9KSxcbiAgaW5zZXJ0VGV4dEJlZm9yZTogKHN5bnRheEVsZW1lbnQsIHRleHQpOiBSdWxlLkZpeCA9PiB7XG4gICAgdm9pZCBzeW50YXhFbGVtZW50O1xuICAgIHJldHVybiB7IHJhbmdlOiBbMCwgMF0sIHRleHQgfTtcbiAgfSxcbiAgaW5zZXJ0VGV4dEJlZm9yZVJhbmdlOiAocmFuZ2UsIHRleHQpOiBSdWxlLkZpeCA9PiAoeyByYW5nZSwgdGV4dCB9KSxcbiAgcmVtb3ZlOiAoc3ludGF4RWxlbWVudCk6IFJ1bGUuRml4ID0+IHtcbiAgICB2b2lkIHN5bnRheEVsZW1lbnQ7XG4gICAgcmV0dXJuIHsgcmFuZ2U6IFswLCAwXSwgdGV4dDogXCJcIiB9O1xuICB9LFxuICByZW1vdmVSYW5nZTogKHJhbmdlKTogUnVsZS5GaXggPT4gKHsgcmFuZ2UsIHRleHQ6IFwiXCIgfSksXG4gIHJlcGxhY2VUZXh0OiAoc3ludGF4RWxlbWVudCwgdGV4dCk6IFJ1bGUuRml4ID0+IHtcbiAgICB2b2lkIHN5bnRheEVsZW1lbnQ7XG4gICAgcmV0dXJuIHsgcmFuZ2U6IFswLCAwXSwgdGV4dCB9O1xuICB9LFxuICByZXBsYWNlVGV4dFJhbmdlOiAocmFuZ2UsIHRleHQpOiBSdWxlLkZpeCA9PiAoeyByYW5nZSwgdGV4dCB9KSxcbn0pO1xuXG4vKipcbiAqIENoZWNrcyBpc0ZpeEl0ZXJhYmxlLlxuICogQHBhcmFtIGZpeFJlc3VsdCBJbnB1dCBmaXhSZXN1bHQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzRml4SXRlcmFibGUoKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc0ZpeEl0ZXJhYmxlID0gKGZpeFJlc3VsdDogRml4UmVzdWx0KTogZml4UmVzdWx0IGlzIEl0ZXJhYmxlPFJ1bGUuRml4PiA9PlxuICBTeW1ib2wuaXRlcmF0b3IgaW4gZml4UmVzdWx0O1xuXG4vKipcbiAqIEdldHMgZ2V0Rml4VGV4dC5cbiAqIEBwYXJhbSBmaXhSZXN1bHQgSW5wdXQgZml4UmVzdWx0IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRGaXhUZXh0KCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Rml4VGV4dCA9IChmaXhSZXN1bHQ/OiBGaXhSZXN1bHQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoZml4UmVzdWx0ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGlmIChpc0ZpeEl0ZXJhYmxlKGZpeFJlc3VsdCkpIHtcbiAgICByZXR1cm4gWy4uLmZpeFJlc3VsdF1bMF0/LnRleHQ7XG4gIH1cblxuICByZXR1cm4gZml4UmVzdWx0LnRleHQ7XG59O1xuXG4vKipcbiAqIEdldHMgZ2V0Rml4ZXMuXG4gKiBAcGFyYW0gcmVwb3J0cyBJbnB1dCByZXBvcnRzIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRGaXhlcygpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldEZpeGVzID0gKHJlcG9ydHM6IEZpeFJlcG9ydEVudHJ5W10pOiBSdWxlLkZpeFtdID0+IHtcbiAgY29uc3QgZml4ZXIgPSBjcmVhdGVGaXhlcigpO1xuICBjb25zdCBmaXhlczogUnVsZS5GaXhbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmVwb3J0IG9mIHJlcG9ydHMpIHtcbiAgICBjb25zdCBmaXhSZXN1bHQgPSByZXBvcnQuZml4Py4oZml4ZXIpID8/IHZvaWQgMDtcblxuICAgIGlmIChmaXhSZXN1bHQgIT09IHZvaWQgMCkge1xuICAgICAgaWYgKGlzRml4SXRlcmFibGUoZml4UmVzdWx0KSkge1xuICAgICAgICBmaXhlcy5wdXNoKC4uLmZpeFJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXhlcy5wdXNoKGZpeFJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpeGVzO1xufTtcblxuLyoqXG4gKiBBcHBsaWVzIGFwcGx5Rml4ZXMuXG4gKiBAcGFyYW0gc291cmNlVGV4dCBJbnB1dCBzb3VyY2VUZXh0IHZhbHVlLlxuICogQHBhcmFtIGZpeGVzIElucHV0IGZpeGVzIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhcHBseUZpeGVzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYXBwbHlGaXhlcyA9IChzb3VyY2VUZXh0OiBzdHJpbmcsIGZpeGVzOiBSdWxlLkZpeFtdKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc29ydGVkID0gZml4ZXMudG9Tb3J0ZWQoXG4gICAgKGxlZnQsIHJpZ2h0KSA9PiByaWdodC5yYW5nZVswXSAtIGxlZnQucmFuZ2VbMF0sXG4gICk7XG5cbiAgbGV0IG91dHB1dCA9IHNvdXJjZVRleHQ7XG5cbiAgZm9yIChjb25zdCBmaXggb2Ygc29ydGVkKSB7XG4gICAgb3V0cHV0ID0gW1xuICAgICAgb3V0cHV0LnNsaWNlKDAsIGZpeC5yYW5nZVswXSksXG4gICAgICBmaXgudGV4dCxcbiAgICAgIG91dHB1dC5zbGljZShmaXgucmFuZ2VbMV0pLFxuICAgIF0uam9pbihcIlwiKTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5leHBvcnQgeyBhcHBseUZpeGVzLCBjcmVhdGVGaXhlciwgZ2V0Rml4ZXMsIGdldEZpeFRleHQgfTtcbiJdfQ==
|