@codeperfect/eslint-plugin 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/{custom-rules.d.ts → application/custom-rules.d.ts} +3 -0
- package/dist/application/custom-rules.d.ts.map +1 -0
- package/dist/application/custom-rules.js +74 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +3 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +56 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +149 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +4 -4
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +98 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +45 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +64 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +5 -4
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +87 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +140 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +5 -0
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/index.js +4 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +85 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +91 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +4 -6
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +95 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.js +43 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +4 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +4 -0
- package/dist/{architecture → domain/architecture}/consistent-barrel-files/test-helpers.d.ts +48 -48
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +20 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +25 -0
- package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +235 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts +19 -0
- package/dist/domain/architecture/consistent-barrel-files/types.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/types.js +2 -0
- package/dist/{architecture → domain/architecture}/index.d.ts +1 -1
- package/dist/domain/architecture/index.d.ts.map +1 -0
- package/dist/domain/architecture/index.js +2 -0
- package/dist/{core → domain/core}/index.d.ts +2 -2
- package/dist/domain/core/index.d.ts.map +1 -0
- package/dist/domain/core/index.js +3 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts +2 -0
- package/dist/domain/core/no-multiple-declarators/index.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/index.js +2 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +101 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +108 -0
- package/dist/{core → domain/core}/no-multiple-declarators/rule.d.ts +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +35 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.fixes.js +95 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.js +219 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +4 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +4 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts +77 -0
- package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/types.js +38 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts +2 -0
- package/dist/domain/core/prefer-interface-types/index.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/index.js +2 -0
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/rule.js +145 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/test-helpers.js +116 -0
- package/dist/{custom-rule-documentation.d.ts → domain/custom-rule-documentation.d.ts} +1 -1
- package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
- package/dist/domain/custom-rule-documentation.js +35 -0
- package/dist/domain/docs/index.d.ts +4 -0
- package/dist/domain/docs/index.d.ts.map +1 -0
- package/dist/domain/docs/index.js +4 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +146 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts +2 -0
- package/dist/domain/docs/no-interface-member-docs/index.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/index.js +2 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-tags.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +101 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-utilities.d.ts +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +125 -0
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/rule.js +168 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/test-helpers.js +157 -0
- package/dist/{docs → domain/docs}/no-interface-member-docs/types.d.ts +2 -2
- package/dist/domain/docs/no-interface-member-docs/types.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/types.js +2 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts +5 -0
- package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/create-fixer.js +5 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/empty-fence-fixes.js +169 -0
- package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/example-utilities.js +76 -0
- package/dist/{docs → domain/docs}/require-example-language/examples.d.ts +1 -1
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/examples.js +181 -0
- package/dist/{docs → domain/docs}/require-example-language/fixes.d.ts +2 -2
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/fixes.js +182 -0
- package/dist/domain/docs/require-example-language/index.d.ts +3 -0
- package/dist/domain/docs/require-example-language/index.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/index.js +2 -0
- package/dist/{docs → domain/docs}/require-example-language/reporting.d.ts +1 -1
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/reporting.js +148 -0
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/rule.js +34 -0
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/types.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts +2 -0
- package/dist/domain/docs/single-line-jsdoc/index.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/index.js +2 -0
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/rule.js +196 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
- package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
- package/dist/domain/docs/test-helpers.d.ts.map +1 -0
- package/dist/domain/docs/test-helpers.js +107 -0
- package/dist/domain/index.d.ts +6 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +6 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts +92 -0
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +4 -0
- package/dist/domain/testing/aaa/analyzer.analysis.js +247 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts +93 -0
- package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.assertions.js +283 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts +75 -0
- package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.js +201 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
- package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
- package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.js +59 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts +107 -0
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
- package/dist/domain/testing/aaa/analyzer.super.js +228 -0
- package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
- package/dist/domain/testing/aaa/index.d.ts.map +1 -0
- package/dist/domain/testing/aaa/index.js +2 -0
- package/dist/domain/testing/aaa/types.d.ts +58 -0
- package/dist/domain/testing/aaa/types.d.ts.map +1 -0
- package/dist/domain/testing/aaa/types.js +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
- package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
- package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
- package/dist/domain/testing/assert-actual-expected-names/rule.js +113 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
- package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +34 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
- package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
- package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.js +85 -0
- package/dist/{testing → domain/testing}/index.d.ts +9 -8
- package/dist/domain/testing/index.d.ts.map +1 -0
- package/dist/domain/testing/index.js +10 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +36 -0
- package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +86 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +150 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +81 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +189 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +92 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +62 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +203 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
- package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/index.js +2 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
- package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.js +129 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
- package/dist/domain/testing/require-aaa-sections/rule.reporting.js +217 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
- package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/index.js +2 -0
- package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-act-result-capture/rule.js +106 -0
- package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
- package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/index.js +3 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
- package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/rule.js +57 -0
- package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
- package/dist/domain/testing/require-test-companion/types.js +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
- package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/index.js +2 -0
- package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
- package/dist/domain/testing/single-act-statement/rule.js +34 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
- package/dist/infrastructure/codeperfect-plugin.js +30 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +4 -0
- package/dist/infrastructure/presets.d.ts +18 -0
- package/dist/infrastructure/presets.d.ts.map +1 -0
- package/dist/infrastructure/presets.js +81 -0
- package/package.json +54 -27
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
- package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
- package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/index.js +0 -4
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
- package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/rule.js +0 -58
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
- package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
- package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
- package/dist/architecture/consistent-barrel-files/types.js +0 -2
- package/dist/architecture/index.d.ts.map +0 -1
- package/dist/architecture/index.js +0 -2
- package/dist/benchmark-rules.d.ts +0 -83
- package/dist/benchmark-rules.d.ts.map +0 -1
- package/dist/benchmark-rules.js +0 -175
- package/dist/codeperfect-plugin.d.ts.map +0 -1
- package/dist/codeperfect-plugin.js +0 -29
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/no-multiple-declarators/index.d.ts +0 -2
- package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/index.js +0 -2
- package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
- package/dist/core/no-multiple-declarators/rule.js +0 -100
- package/dist/core/prefer-interface-types/index.d.ts +0 -2
- package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/index.js +0 -2
- package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/rule.js +0 -145
- package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
- package/dist/core/prefer-interface-types/test-helpers.js +0 -116
- package/dist/custom-rule-documentation.d.ts.map +0 -1
- package/dist/custom-rule-documentation.js +0 -35
- package/dist/custom-rules.d.ts.map +0 -1
- package/dist/custom-rules.js +0 -70
- package/dist/docs/index.d.ts +0 -4
- package/dist/docs/index.d.ts.map +0 -1
- package/dist/docs/index.js +0 -4
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
- package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
- package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/index.js +0 -2
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
- package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/rule.js +0 -168
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/test-helpers.js +0 -157
- package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
- package/dist/docs/no-interface-member-docs/types.js +0 -2
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
- package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
- package/dist/docs/require-example-language/example-utilities.js +0 -76
- package/dist/docs/require-example-language/examples.d.ts.map +0 -1
- package/dist/docs/require-example-language/examples.js +0 -181
- package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
- package/dist/docs/require-example-language/fixes.js +0 -182
- package/dist/docs/require-example-language/index.d.ts +0 -3
- package/dist/docs/require-example-language/index.d.ts.map +0 -1
- package/dist/docs/require-example-language/index.js +0 -2
- package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
- package/dist/docs/require-example-language/reporting.js +0 -145
- package/dist/docs/require-example-language/rule.d.ts.map +0 -1
- package/dist/docs/require-example-language/rule.js +0 -34
- package/dist/docs/require-example-language/types.d.ts.map +0 -1
- package/dist/docs/require-example-language/types.js +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
- package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/index.js +0 -2
- package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/rule.js +0 -196
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
- package/dist/docs/test-helpers.d.ts.map +0 -1
- package/dist/docs/test-helpers.js +0 -107
- package/dist/presets.d.ts +0 -10
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -50
- package/dist/rules/index.d.ts +0 -5
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -6
- package/dist/testing/aaa/analyzer.d.ts +0 -36
- package/dist/testing/aaa/analyzer.d.ts.map +0 -1
- package/dist/testing/aaa/analyzer.js +0 -490
- package/dist/testing/aaa/index.d.ts.map +0 -1
- package/dist/testing/aaa/index.js +0 -2
- package/dist/testing/aaa/types.d.ts +0 -31
- package/dist/testing/aaa/types.d.ts.map +0 -1
- package/dist/testing/aaa/types.js +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
- package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/index.js +0 -2
- package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
- package/dist/testing/assert-actual-expected-names/rule.js +0 -54
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
- package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
- package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/index.js +0 -2
- package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
- package/dist/testing/enforce-aaa-structure/rule.js +0 -48
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -9
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
- package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
- package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
- package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
- package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
- package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
- package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts +0 -2
- package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/index.js +0 -2
- package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
- package/dist/testing/require-aaa-sections/rule.js +0 -111
- package/dist/testing/require-act-result-capture/index.d.ts +0 -2
- package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/index.js +0 -2
- package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
- package/dist/testing/require-act-result-capture/rule.js +0 -34
- package/dist/testing/require-test-companion/index.d.ts +0 -3
- package/dist/testing/require-test-companion/index.d.ts.map +0 -1
- package/dist/testing/require-test-companion/index.js +0 -3
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
- package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
- package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
- package/dist/testing/require-test-companion/rule.js +0 -57
- package/dist/testing/require-test-companion/types.d.ts.map +0 -1
- package/dist/testing/require-test-companion/types.js +0 -2
- package/dist/testing/single-act-statement/index.d.ts +0 -2
- package/dist/testing/single-act-statement/index.d.ts.map +0 -1
- package/dist/testing/single-act-statement/index.js +0 -2
- package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
- package/dist/testing/single-act-statement/rule.js +0 -33
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
- /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
- /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/rule.d.ts +0 -0
- /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
- /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
- /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
- /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { getFenceLanguage, getInlineContent, getLineMeta, getPrefix, hasLineContent, } from "./example-utilities.js";
|
|
2
|
+
/** Captures `@example` headers and bodies for analysis. */
|
|
3
|
+
const examplePattern = /^(?<header>\s*\*?\s*@example\b[^\n]*)(?<body>[\s\S]*?)(?=^\s*\*?\s*@\w+|(?![\s\S]))/gmu;
|
|
4
|
+
/**
|
|
5
|
+
* Updates fence state based on the detected language.
|
|
6
|
+
* @param state Current fence tracking state.
|
|
7
|
+
* @param language Fence language string.
|
|
8
|
+
* @returns Updated fence tracking state.
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const next = updateFenceState(state, "typescript");
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
const updateFenceState = (state, language) => {
|
|
15
|
+
if (!state.inFence) {
|
|
16
|
+
if (language.length === 0) {
|
|
17
|
+
return { ...state, missingLanguage: true, sawFence: true };
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
...state,
|
|
21
|
+
currentFenceHasContent: false,
|
|
22
|
+
inFence: true,
|
|
23
|
+
missingLanguage: false,
|
|
24
|
+
sawFence: true,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
...state,
|
|
29
|
+
currentFenceHasContent: false,
|
|
30
|
+
hasEmptyFence: state.hasEmptyFence || !state.currentFenceHasContent,
|
|
31
|
+
inFence: false,
|
|
32
|
+
missingLanguage: false,
|
|
33
|
+
sawFence: true,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Updates fence tracking for a single example line.
|
|
38
|
+
* @param state Current fence tracking state.
|
|
39
|
+
* @param line Example line to inspect.
|
|
40
|
+
* @returns Updated fence tracking state.
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const next = updateFenceStateForLine(state, " * ok");
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
const updateFenceStateForLine = (state, line) => {
|
|
47
|
+
const language = getFenceLanguage(line);
|
|
48
|
+
if (language !== void 0) {
|
|
49
|
+
return updateFenceState(state, language);
|
|
50
|
+
}
|
|
51
|
+
if (state.inFence && hasLineContent(line)) {
|
|
52
|
+
return { ...state, currentFenceHasContent: true };
|
|
53
|
+
}
|
|
54
|
+
return state;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Analyzes fenced code blocks for missing language identifiers.
|
|
58
|
+
* @param content Example content to analyze.
|
|
59
|
+
* @returns Fence analysis results.
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const analysis = analyzeFenceContent("```typescript\nconst value = 1;\n```");
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
function analyzeFenceContent(content) {
|
|
66
|
+
const lines = content.split(/\r?\n/u);
|
|
67
|
+
let state = {
|
|
68
|
+
currentFenceHasContent: false,
|
|
69
|
+
hasEmptyFence: false,
|
|
70
|
+
inFence: false,
|
|
71
|
+
missingLanguage: false,
|
|
72
|
+
sawFence: false,
|
|
73
|
+
};
|
|
74
|
+
for (const line of lines) {
|
|
75
|
+
state = updateFenceStateForLine(state, line);
|
|
76
|
+
if (state.missingLanguage) {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (state.inFence && !state.currentFenceHasContent) {
|
|
81
|
+
state = { ...state, hasEmptyFence: true };
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
hasEmptyFence: state.hasEmptyFence,
|
|
85
|
+
missingLanguage: state.missingLanguage,
|
|
86
|
+
sawFence: state.sawFence,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Builds example content from an inline header and body lines.
|
|
91
|
+
* @param context Example header and body lines.
|
|
92
|
+
* @returns Combined example content.
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const content = buildExampleContent({ body: "* ok", header: "* @example" });
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
function buildExampleContent(context) {
|
|
99
|
+
const { body, header } = context;
|
|
100
|
+
const inlineContent = getInlineContent(header);
|
|
101
|
+
if (inlineContent.length > 0) {
|
|
102
|
+
return `${inlineContent}\n${body}`;
|
|
103
|
+
}
|
|
104
|
+
return body;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Builds an Example from a regex match and raw comment value.
|
|
108
|
+
* @param match Regex match from the example pattern.
|
|
109
|
+
* @param commentValue Raw comment value.
|
|
110
|
+
* @returns Example metadata extracted from the match.
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const example = buildExampleFromMatch(match, commentValue);
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
function buildExampleFromMatch(match, commentValue) {
|
|
117
|
+
const [full] = match;
|
|
118
|
+
const header = match.groups?.["header"] ?? "";
|
|
119
|
+
const body = match.groups?.["body"] ?? "";
|
|
120
|
+
const startOffset = match.index ?? 0;
|
|
121
|
+
const content = buildExampleContent({ body, header });
|
|
122
|
+
const prefix = getPrefix(header);
|
|
123
|
+
const { endIndex, endOffset, lineIndex } = getLineMeta({
|
|
124
|
+
commentValue,
|
|
125
|
+
full,
|
|
126
|
+
startOffset,
|
|
127
|
+
});
|
|
128
|
+
return {
|
|
129
|
+
content: content.trim(),
|
|
130
|
+
endIndex,
|
|
131
|
+
endOffset,
|
|
132
|
+
lineIndex,
|
|
133
|
+
prefix,
|
|
134
|
+
startOffset,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Checks example content for required fences and language.
|
|
139
|
+
* @param content Example content to inspect.
|
|
140
|
+
* @returns Problem identifier when the content is invalid.
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const problem = checkExampleContent("```typescript\nconst ok = true;\n```");
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
function checkExampleContent(content) {
|
|
147
|
+
if (content.trim().length === 0) {
|
|
148
|
+
return "emptyExample";
|
|
149
|
+
}
|
|
150
|
+
const { hasEmptyFence, missingLanguage, sawFence } = analyzeFenceContent(content);
|
|
151
|
+
if (missingLanguage) {
|
|
152
|
+
return "missingLanguage";
|
|
153
|
+
}
|
|
154
|
+
if (sawFence && hasEmptyFence) {
|
|
155
|
+
return "emptyExample";
|
|
156
|
+
}
|
|
157
|
+
if (!sawFence) {
|
|
158
|
+
return "missingFence";
|
|
159
|
+
}
|
|
160
|
+
return void 0;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Extracts all `@example` entries from a JSDoc comment value.
|
|
164
|
+
* Uses a multiline regex to capture the header and following lines
|
|
165
|
+
* until the next JSDoc tag or the end of the comment.
|
|
166
|
+
* @param commentValue Raw comment value.
|
|
167
|
+
* @returns Extracted examples.
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* const examples = getExamples("* @example\n* ```typescript\n* ok\n* ```");
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
function getExamples(commentValue) {
|
|
174
|
+
const examples = [];
|
|
175
|
+
for (const match of commentValue.matchAll(examplePattern)) {
|
|
176
|
+
examples.push(buildExampleFromMatch(match, commentValue));
|
|
177
|
+
}
|
|
178
|
+
return examples;
|
|
179
|
+
}
|
|
180
|
+
export { buildExampleFromMatch, checkExampleContent, getExamples };
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3MvcmVxdWlyZS1leGFtcGxlLWxhbmd1YWdlL2V4YW1wbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsY0FBYyxHQUNmLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsMkRBQTJEO0FBQzNELE1BQU0sY0FBYyxHQUNsQix3RkFBd0YsQ0FBQztBQW9CM0Y7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBZ0IsRUFBYyxFQUFFO0lBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3RCxDQUFDO1FBRUQsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLHNCQUFzQixFQUFFLEtBQUs7WUFDN0IsT0FBTyxFQUFFLElBQUk7WUFDYixlQUFlLEVBQUUsS0FBSztZQUN0QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLHNCQUFzQixFQUFFLEtBQUs7UUFDN0IsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCO1FBQ25FLE9BQU8sRUFBRSxLQUFLO1FBQ2QsZUFBZSxFQUFFLEtBQUs7UUFDdEIsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5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IFwiLi90eXBlc1wiO1xuXG5pbXBvcnQge1xuICBnZXRGZW5jZUxhbmd1YWdlLFxuICBnZXRJbmxpbmVDb250ZW50LFxuICBnZXRMaW5lTWV0YSxcbiAgZ2V0UHJlZml4LFxuICBoYXNMaW5lQ29udGVudCxcbn0gZnJvbSBcIi4vZXhhbXBsZS11dGlsaXRpZXNcIjtcblxuLyoqIENhcHR1cmVzIGBAZXhhbXBsZWAgaGVhZGVycyBhbmQgYm9kaWVzIGZvciBhbmFseXNpcy4gKi9cbmNvbnN0IGV4YW1wbGVQYXR0ZXJuID1cbiAgL14oPzxoZWFkZXI+XFxzKlxcKj9cXHMqQGV4YW1wbGVcXGJbXlxcbl0qKSg/PGJvZHk+W1xcc1xcU10qPykoPz1eXFxzKlxcKj9cXHMqQFxcdyt8KD8hW1xcc1xcU10pKS9nbXU7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGZW5jZVN0YXRlIHtcbiAgLyoqIEN1cnJlbnRGZW5jZUhhc0NvbnRlbnQgZmllbGQgdmFsdWUuICovXG4gIGN1cnJlbnRGZW5jZUhhc0NvbnRlbnQ6IGJvb2xlYW47XG5cbiAgLyoqIEhhc0VtcHR5RmVuY2UgZmllbGQgdmFsdWUuICovXG4gIGhhc0VtcHR5RmVuY2U6IGJvb2xlYW47XG5cbiAgLyoqIEluRmVuY2UgZmllbGQgdmFsdWUuICovXG4gIGluRmVuY2U6IGJvb2xlYW47XG5cbiAgLyoqIE1pc3NpbmdMYW5ndWFnZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbWlzc2luZ0xhbmd1YWdlOiBib29sZWFuO1xuXG4gIC8qKiBTYXdGZW5jZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc2F3RmVuY2U6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVXBkYXRlcyBmZW5jZSBzdGF0ZSBiYXNlZCBvbiB0aGUgZGV0ZWN0ZWQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0gc3RhdGUgQ3VycmVudCBmZW5jZSB0cmFja2luZyBzdGF0ZS5cbiAqIEBwYXJhbSBsYW5ndWFnZSBGZW5jZSBsYW5ndWFnZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBVcGRhdGVkIGZlbmNlIHRyYWNraW5nIHN0YXRlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5leHQgPSB1cGRhdGVGZW5jZVN0YXRlKHN0YXRlLCBcInR5cGVzY3JpcHRcIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgdXBkYXRlRmVuY2VTdGF0ZSA9IChzdGF0ZTogRmVuY2VTdGF0ZSwgbGFuZ3VhZ2U6IHN0cmluZyk6IEZlbmNlU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLmluRmVuY2UpIHtcbiAgICBpZiAobGFuZ3VhZ2UubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWlzc2luZ0xhbmd1YWdlOiB0cnVlLCBzYXdGZW5jZTogdHJ1ZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRGZW5jZUhhc0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgaW5GZW5jZTogdHJ1ZSxcbiAgICAgIG1pc3NpbmdMYW5ndWFnZTogZmFsc2UsXG4gICAgICBzYXdGZW5jZTogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBjdXJyZW50RmVuY2VIYXNDb250ZW50OiBmYWxzZSxcbiAgICBoYXNFbXB0eUZlbmNlOiBzdGF0ZS5oYXNFbXB0eUZlbmNlIHx8ICFzdGF0ZS5jdXJyZW50RmVuY2VIYXNDb250ZW50LFxuICAgIGluRmVuY2U6IGZhbHNlLFxuICAgIG1pc3NpbmdMYW5ndWFnZTogZmFsc2UsXG4gICAgc2F3RmVuY2U6IHRydWUsXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgZmVuY2UgdHJhY2tpbmcgZm9yIGEgc2luZ2xlIGV4YW1wbGUgbGluZS5cbiAqIEBwYXJhbSBzdGF0ZSBDdXJyZW50IGZlbmNlIHRyYWNraW5nIHN0YXRlLlxuICogQHBhcmFtIGxpbmUgRXhhbXBsZSBsaW5lIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBVcGRhdGVkIGZlbmNlIHRyYWNraW5nIHN0YXRlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5leHQgPSB1cGRhdGVGZW5jZVN0YXRlRm9yTGluZShzdGF0ZSwgXCIgKiBva1wiKTtcbiAqIGBgYFxuICovXG5jb25zdCB1cGRhdGVGZW5jZVN0YXRlRm9yTGluZSA9IChcbiAgc3RhdGU6IEZlbmNlU3RhdGUsXG4gIGxpbmU6IHN0cmluZyxcbik6IEZlbmNlU3RhdGUgPT4ge1xuICBjb25zdCBsYW5ndWFnZSA9IGdldEZlbmNlTGFuZ3VhZ2UobGluZSk7XG5cbiAgaWYgKGxhbmd1YWdlICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdXBkYXRlRmVuY2VTdGF0ZShzdGF0ZSwgbGFuZ3VhZ2UpO1xuICB9XG5cbiAgaWYgKHN0YXRlLmluRmVuY2UgJiYgaGFzTGluZUNvbnRlbnQobGluZSkpIHtcbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudEZlbmNlSGFzQ29udGVudDogdHJ1ZSB9O1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEV4YW1wbGVDb250ZW50Q29udGV4dCB7XG4gIC8qKiBCb2R5IGZpZWxkIHZhbHVlLiAqL1xuICBib2R5OiBzdHJpbmc7XG5cbiAgLyoqIEhlYWRlciBmaWVsZCB2YWx1ZS4gKi9cbiAgaGVhZGVyOiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGZW5jZUFuYWx5c2lzIHtcbiAgLyoqIEhhc0VtcHR5RmVuY2UgZmllbGQgdmFsdWUuICovXG4gIGhhc0VtcHR5RmVuY2U6IGJvb2xlYW47XG5cbiAgLyoqIE1pc3NpbmdMYW5ndWFnZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbWlzc2luZ0xhbmd1YWdlOiBib29sZWFuO1xuXG4gIC8qKiBTYXdGZW5jZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc2F3RmVuY2U6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQW5hbHl6ZXMgZmVuY2VkIGNvZGUgYmxvY2tzIGZvciBtaXNzaW5nIGxhbmd1YWdlIGlkZW50aWZpZXJzLlxuICogQHBhcmFtIGNvbnRlbnQgRXhhbXBsZSBjb250ZW50IHRvIGFuYWx5emUuXG4gKiBAcmV0dXJucyBGZW5jZSBhbmFseXNpcyByZXN1bHRzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZUZlbmNlQ29udGVudChcImBgYHR5cGVzY3JpcHRcXG5jb25zdCB2YWx1ZSA9IDE7XFxuYGBgXCIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGFuYWx5emVGZW5jZUNvbnRlbnQoY29udGVudDogc3RyaW5nKTogRmVuY2VBbmFseXNpcyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgbGV0IHN0YXRlOiBGZW5jZVN0YXRlID0ge1xuICAgIGN1cnJlbnRGZW5jZUhhc0NvbnRlbnQ6IGZhbHNlLFxuICAgIGhhc0VtcHR5RmVuY2U6IGZhbHNlLFxuICAgIGluRmVuY2U6IGZhbHNlLFxuICAgIG1pc3NpbmdMYW5ndWFnZTogZmFsc2UsXG4gICAgc2F3RmVuY2U6IGZhbHNlLFxuICB9O1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIHN0YXRlID0gdXBkYXRlRmVuY2VTdGF0ZUZvckxpbmUoc3RhdGUsIGxpbmUpO1xuXG4gICAgaWYgKHN0YXRlLm1pc3NpbmdMYW5ndWFnZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLmluRmVuY2UgJiYgIXN0YXRlLmN1cnJlbnRGZW5jZUhhc0NvbnRlbnQpIHtcbiAgICBzdGF0ZSA9IHsgLi4uc3RhdGUsIGhhc0VtcHR5RmVuY2U6IHRydWUgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGFzRW1wdHlGZW5jZTogc3RhdGUuaGFzRW1wdHlGZW5jZSxcbiAgICBtaXNzaW5nTGFuZ3VhZ2U6IHN0YXRlLm1pc3NpbmdMYW5ndWFnZSxcbiAgICBzYXdGZW5jZTogc3RhdGUuc2F3RmVuY2UsXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGRzIGV4YW1wbGUgY29udGVudCBmcm9tIGFuIGlubGluZSBoZWFkZXIgYW5kIGJvZHkgbGluZXMuXG4gKiBAcGFyYW0gY29udGV4dCBFeGFtcGxlIGhlYWRlciBhbmQgYm9keSBsaW5lcy5cbiAqIEByZXR1cm5zIENvbWJpbmVkIGV4YW1wbGUgY29udGVudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb250ZW50ID0gYnVpbGRFeGFtcGxlQ29udGVudCh7IGJvZHk6IFwiKiBva1wiLCBoZWFkZXI6IFwiKiBAZXhhbXBsZVwiIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkRXhhbXBsZUNvbnRlbnQoY29udGV4dDogRXhhbXBsZUNvbnRlbnRDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgeyBib2R5LCBoZWFkZXIgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGlubGluZUNvbnRlbnQgPSBnZXRJbmxpbmVDb250ZW50KGhlYWRlcik7XG5cbiAgaWYgKGlubGluZUNvbnRlbnQubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBgJHtpbmxpbmVDb250ZW50fVxcbiR7Ym9keX1gO1xuICB9XG5cbiAgcmV0dXJuIGJvZHk7XG59XG5cbi8qKlxuICogQnVpbGRzIGFuIEV4YW1wbGUgZnJvbSBhIHJlZ2V4IG1hdGNoIGFuZCByYXcgY29tbWVudCB2YWx1ZS5cbiAqIEBwYXJhbSBtYXRjaCBSZWdleCBtYXRjaCBmcm9tIHRoZSBleGFtcGxlIHBhdHRlcm4uXG4gKiBAcGFyYW0gY29tbWVudFZhbHVlIFJhdyBjb21tZW50IHZhbHVlLlxuICogQHJldHVybnMgRXhhbXBsZSBtZXRhZGF0YSBleHRyYWN0ZWQgZnJvbSB0aGUgbWF0Y2guXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXhhbXBsZSA9IGJ1aWxkRXhhbXBsZUZyb21NYXRjaChtYXRjaCwgY29tbWVudFZhbHVlKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZEV4YW1wbGVGcm9tTWF0Y2goXG4gIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LFxuICBjb21tZW50VmFsdWU6IHN0cmluZyxcbik6IEV4YW1wbGUge1xuICBjb25zdCBbZnVsbF0gPSBtYXRjaDtcbiAgY29uc3QgaGVhZGVyID0gbWF0Y2guZ3JvdXBzPy5bXCJoZWFkZXJcIl0gPz8gXCJcIjtcbiAgY29uc3QgYm9keSA9IG1hdGNoLmdyb3Vwcz8uW1wiYm9keVwiXSA/PyBcIlwiO1xuICBjb25zdCBzdGFydE9mZnNldCA9IG1hdGNoLmluZGV4ID8/IDA7XG4gIGNvbnN0IGNvbnRlbnQgPSBidWlsZEV4YW1wbGVDb250ZW50KHsgYm9keSwgaGVhZGVyIH0pO1xuICBjb25zdCBwcmVmaXggPSBnZXRQcmVmaXgoaGVhZGVyKTtcbiAgY29uc3QgeyBlbmRJbmRleCwgZW5kT2Zmc2V0LCBsaW5lSW5kZXggfSA9IGdldExpbmVNZXRhKHtcbiAgICBjb21tZW50VmFsdWUsXG4gICAgZnVsbCxcbiAgICBzdGFydE9mZnNldCxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZW50OiBjb250ZW50LnRyaW0oKSxcbiAgICBlbmRJbmRleCxcbiAgICBlbmRPZmZzZXQsXG4gICAgbGluZUluZGV4LFxuICAgIHByZWZpeCxcbiAgICBzdGFydE9mZnNldCxcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgZXhhbXBsZSBjb250ZW50IGZvciByZXF1aXJlZCBmZW5jZXMgYW5kIGxhbmd1YWdlLlxuICogQHBhcmFtIGNvbnRlbnQgRXhhbXBsZSBjb250ZW50IHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBQcm9ibGVtIGlkZW50aWZpZXIgd2hlbiB0aGUgY29udGVudCBpcyBpbnZhbGlkLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHByb2JsZW0gPSBjaGVja0V4YW1wbGVDb250ZW50KFwiYGBgdHlwZXNjcmlwdFxcbmNvbnN0IG9rID0gdHJ1ZTtcXG5gYGBcIik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY2hlY2tFeGFtcGxlQ29udGVudChjb250ZW50OiBzdHJpbmcpOiBQcm9ibGVtIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNvbnRlbnQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBcImVtcHR5RXhhbXBsZVwiO1xuICB9XG4gIGNvbnN0IHsgaGFzRW1wdHlGZW5jZSwgbWlzc2luZ0xhbmd1YWdlLCBzYXdGZW5jZSB9ID1cbiAgICBhbmFseXplRmVuY2VDb250ZW50KGNvbnRlbnQpO1xuXG4gIGlmIChtaXNzaW5nTGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gXCJtaXNzaW5nTGFuZ3VhZ2VcIjtcbiAgfVxuXG4gIGlmIChzYXdGZW5jZSAmJiBoYXNFbXB0eUZlbmNlKSB7XG4gICAgcmV0dXJuIFwiZW1wdHlFeGFtcGxlXCI7XG4gIH1cblxuICBpZiAoIXNhd0ZlbmNlKSB7XG4gICAgcmV0dXJuIFwibWlzc2luZ0ZlbmNlXCI7XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIGFsbCBgQGV4YW1wbGVgIGVudHJpZXMgZnJvbSBhIEpTRG9jIGNvbW1lbnQgdmFsdWUuXG4gKiBVc2VzIGEgbXVsdGlsaW5lIHJlZ2V4IHRvIGNhcHR1cmUgdGhlIGhlYWRlciBhbmQgZm9sbG93aW5nIGxpbmVzXG4gKiB1bnRpbCB0aGUgbmV4dCBKU0RvYyB0YWcgb3IgdGhlIGVuZCBvZiB0aGUgY29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50VmFsdWUgUmF3IGNvbW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBFeHRyYWN0ZWQgZXhhbXBsZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXhhbXBsZXMgPSBnZXRFeGFtcGxlcyhcIiogQGV4YW1wbGVcXG4qIGBgYHR5cGVzY3JpcHRcXG4qIG9rXFxuKiBgYGBcIik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0RXhhbXBsZXMoY29tbWVudFZhbHVlOiBzdHJpbmcpOiBFeGFtcGxlW10ge1xuICBjb25zdCBleGFtcGxlczogRXhhbXBsZVtdID0gW107XG5cbiAgZm9yIChjb25zdCBtYXRjaCBvZiBjb21tZW50VmFsdWUubWF0Y2hBbGwoZXhhbXBsZVBhdHRlcm4pKSB7XG4gICAgZXhhbXBsZXMucHVzaChidWlsZEV4YW1wbGVGcm9tTWF0Y2gobWF0Y2gsIGNvbW1lbnRWYWx1ZSkpO1xuICB9XG5cbiAgcmV0dXJuIGV4YW1wbGVzO1xufVxuXG5leHBvcnQgeyBidWlsZEV4YW1wbGVGcm9tTWF0Y2gsIGNoZWNrRXhhbXBsZUNvbnRlbnQsIGdldEV4YW1wbGVzIH07XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Rule } from "eslint";
|
|
2
|
-
import type { Example, Problem } from "./types";
|
|
2
|
+
import type { Example, Problem } from "./types.js";
|
|
3
3
|
/** Type definition for rule data. */
|
|
4
4
|
interface FixerContext {
|
|
5
5
|
/** AbsoluteEnd field value. */
|
|
@@ -44,6 +44,6 @@ declare function buildMissingLanguageFix(original: string): string | undefined;
|
|
|
44
44
|
* const fixer = createFixer(context);
|
|
45
45
|
* ```
|
|
46
46
|
*/
|
|
47
|
-
declare function createFixer(context: FixerContext): (fixer: Rule.RuleFixer) =>
|
|
47
|
+
declare function createFixer(context: FixerContext): (fixer: Rule.RuleFixer) => Rule.Fix | undefined;
|
|
48
48
|
export { buildMissingFenceFix, buildMissingLanguageFix, createFixer };
|
|
49
49
|
//# sourceMappingURL=fixes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixes.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/fixes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA8BhD,qCAAqC;AACrC,UAAU,YAAY;IACpB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AA2CD;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAgBtD;AAED;;;;;;;;GAQG;AACH,iBAAS,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiBrE;AAED;;;;;;;;GAQG;AACH,iBAAS,WAAW,CAClB,OAAO,EAAE,YAAY,GACpB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG,GAAG,SAAS,CAYjD;AAwHD,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { parseFenceLine, removeEmptyFences } from "./empty-fence-fixes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Applies a language to a fence line when needed.
|
|
4
|
+
* @param context Fence state and line data.
|
|
5
|
+
* @returns Updated line and fence state.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const result = applyFenceLanguage({ inFence: false, line: " * ```" });
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
function applyFenceLanguage(context) {
|
|
12
|
+
const { inFence, line } = context;
|
|
13
|
+
const fenceInfo = parseFenceLine(line);
|
|
14
|
+
if (fenceInfo === void 0) {
|
|
15
|
+
return { inFence, line };
|
|
16
|
+
}
|
|
17
|
+
const shouldAddLanguage = !inFence && fenceInfo.language.length === 0;
|
|
18
|
+
const nextLine = shouldAddLanguage
|
|
19
|
+
? `${fenceInfo.leading}\`\`\`typescript`
|
|
20
|
+
: line;
|
|
21
|
+
return { inFence: !inFence, line: nextLine };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Builds a full example with a fenced block when missing entirely.
|
|
25
|
+
* @param example Example metadata.
|
|
26
|
+
* @returns Example text with a fenced block.
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const text = buildMissingFenceFix(example);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
function buildMissingFenceFix(example) {
|
|
33
|
+
const contentLines = normalizeContentLines({
|
|
34
|
+
content: example.content,
|
|
35
|
+
prefix: example.prefix,
|
|
36
|
+
});
|
|
37
|
+
return [
|
|
38
|
+
`${example.prefix}@example`,
|
|
39
|
+
`${example.prefix}\`\`\`typescript`,
|
|
40
|
+
...contentLines.map((contentLine) => contentLine.length > 0
|
|
41
|
+
? `${example.prefix} ${contentLine}`
|
|
42
|
+
: example.prefix),
|
|
43
|
+
`${example.prefix}\`\`\``,
|
|
44
|
+
].join("\n");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Adds missing languages to existing fenced blocks.
|
|
48
|
+
* @param original Original comment text.
|
|
49
|
+
* @returns Updated comment text when changes are made.
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const updated = buildMissingLanguageFix("* ```\n* ok\n* ```");
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
function buildMissingLanguageFix(original) {
|
|
56
|
+
const lineBreak = original.includes("\r\n") ? "\r\n" : "\n";
|
|
57
|
+
const lines = original.split(/\r?\n/u);
|
|
58
|
+
let inFence = false;
|
|
59
|
+
const updatedLines = lines.map((line) => {
|
|
60
|
+
const { inFence: nextInFence, line: nextLine } = applyFenceLanguage({
|
|
61
|
+
inFence,
|
|
62
|
+
line,
|
|
63
|
+
});
|
|
64
|
+
inFence = nextInFence;
|
|
65
|
+
return nextLine;
|
|
66
|
+
});
|
|
67
|
+
const updated = updatedLines.join(lineBreak);
|
|
68
|
+
return updated === original ? void 0 : updated;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Builds a fixer function for the report.
|
|
72
|
+
* @param context Fixer context details.
|
|
73
|
+
* @returns Fixer function for ESLint.
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const fixer = createFixer(context);
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
function createFixer(context) {
|
|
80
|
+
const { absoluteEnd, absoluteStart } = context;
|
|
81
|
+
return (fixer) => {
|
|
82
|
+
const updated = getUpdatedExampleText(context);
|
|
83
|
+
if (updated === void 0) {
|
|
84
|
+
return void 0;
|
|
85
|
+
}
|
|
86
|
+
return fixer.replaceTextRange([absoluteStart, absoluteEnd], updated);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Extracts trailing whitespace from the original example range.
|
|
91
|
+
* @param original Original example text.
|
|
92
|
+
* @returns Trailing whitespace to preserve.
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const suffix = getTrailingWhitespace("* @example ok\n ");
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
function getTrailingWhitespace(original) {
|
|
99
|
+
const trailingMatch = /(?:\r?\n[ \t]*)$/u.exec(original);
|
|
100
|
+
return trailingMatch?.[0] ?? "";
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolves the updated text for an example.
|
|
104
|
+
* @param context Fixer context details.
|
|
105
|
+
* @returns Fixed example text when a change is required.
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const text = getUpdatedExampleText(context);
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
function getUpdatedExampleText(context) {
|
|
112
|
+
const { absoluteEnd, absoluteStart, example, hasOtherExamples, problem, sourceText, } = context;
|
|
113
|
+
const original = sourceText.slice(absoluteStart, absoluteEnd);
|
|
114
|
+
if (problem === "missingLanguage") {
|
|
115
|
+
return buildMissingLanguageFix(original);
|
|
116
|
+
}
|
|
117
|
+
if (problem === "emptyExample") {
|
|
118
|
+
return resolveEmptyExampleFix({ example, hasOtherExamples, original });
|
|
119
|
+
}
|
|
120
|
+
const fixed = buildMissingFenceFix(example);
|
|
121
|
+
const trailingWhitespace = getTrailingWhitespace(original);
|
|
122
|
+
return trailingWhitespace.length > 0
|
|
123
|
+
? `${fixed}${trailingWhitespace}`
|
|
124
|
+
: fixed;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Normalizes raw example content lines before fence wrapping.
|
|
128
|
+
* @param context Prefix and raw content.
|
|
129
|
+
* @returns Content lines safe to wrap in a fenced block.
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* const lines = normalizeContentLines({ content: "a\n * b", prefix: " * " });
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
function normalizeContentLines(context) {
|
|
136
|
+
const { content, prefix } = context;
|
|
137
|
+
const lines = content.length > 0 ? content.split(/\r?\n/u) : [];
|
|
138
|
+
return lines
|
|
139
|
+
.map((line) => stripContentPrefix({ line, prefix }))
|
|
140
|
+
.map((line) => line.replace(/\s*\*\/[ \t]*$/u, ""));
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Resolves the appropriate fix for empty examples.
|
|
144
|
+
* @param context Empty example fix details.
|
|
145
|
+
* @returns Fixed example text when a change is required.
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* const text = resolveEmptyExampleFix(context);
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
function resolveEmptyExampleFix(context) {
|
|
152
|
+
const { example, hasOtherExamples, original } = context;
|
|
153
|
+
const cleaned = removeEmptyFences(original);
|
|
154
|
+
if (cleaned !== void 0) {
|
|
155
|
+
return cleaned;
|
|
156
|
+
}
|
|
157
|
+
if (hasOtherExamples) {
|
|
158
|
+
return "";
|
|
159
|
+
}
|
|
160
|
+
if (original.includes("```")) {
|
|
161
|
+
return void 0;
|
|
162
|
+
}
|
|
163
|
+
return buildMissingFenceFix(example);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Removes JSDoc line prefixes from example content.
|
|
167
|
+
* @param context Prefix and source line.
|
|
168
|
+
* @returns Cleaned content line.
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* const line = stripContentPrefix({ line: " * value", prefix: " * " });
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
function stripContentPrefix(context) {
|
|
175
|
+
const { line, prefix } = context;
|
|
176
|
+
if (line.startsWith(prefix)) {
|
|
177
|
+
return line.slice(prefix.length);
|
|
178
|
+
}
|
|
179
|
+
return line.replace(/^\s*\*\s?/u, "");
|
|
180
|
+
}
|
|
181
|
+
export { buildMissingFenceFix, buildMissingLanguageFix, createFixer };
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3MvcmVxdWlyZS1leGFtcGxlLWxhbmd1YWdlL2ZpeGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQTREeEU7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE9BQTZCO0lBQ3ZELE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV2QyxJQUFJLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLGlCQUFpQjtRQUNoQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsT0FBTyxrQkFBa0I7UUFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVULE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsb0JBQW9CLENBQUMsT0FBZ0I7SUFDNUMsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUM7UUFDekMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsR0FBRyxPQUFPLENBQUMsTUFBTSxVQUFVO1FBQzNCLEdBQUcsT0FBTyxD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QUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE9BQWtDO0lBQzVELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRWpDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBFeGFtcGxlLCBQcm9ibGVtIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgcGFyc2VGZW5jZUxpbmUsIHJlbW92ZUVtcHR5RmVuY2VzIH0gZnJvbSBcIi4vZW1wdHktZmVuY2UtZml4ZXNcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEVtcHR5RXhhbXBsZUZpeENvbnRleHQge1xuICAvKiogRXhhbXBsZSBmaWVsZCB2YWx1ZS4gKi9cbiAgZXhhbXBsZTogRXhhbXBsZTtcbiAgLyoqIEhhc090aGVyRXhhbXBsZXMgZmllbGQgdmFsdWUuICovXG4gIGhhc090aGVyRXhhbXBsZXM6IGJvb2xlYW47XG4gIC8qKiBPcmlnaW5hbCBmaWVsZCB2YWx1ZS4gKi9cbiAgb3JpZ2luYWw6IHN0cmluZztcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEZlbmNlTGFuZ3VhZ2VDb250ZXh0IHtcbiAgLyoqIEluRmVuY2UgZmllbGQgdmFsdWUuICovXG4gIGluRmVuY2U6IGJvb2xlYW47XG4gIC8qKiBMaW5lIGZpZWxkIHZhbHVlLiAqL1xuICBsaW5lOiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGZW5jZVJlc3VsdCB7XG4gIC8qKiBJbkZlbmNlIGZpZWxkIHZhbHVlLiAqL1xuICBpbkZlbmNlOiBib29sZWFuO1xuICAvKiogTGluZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbGluZTogc3RyaW5nO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgRml4ZXJDb250ZXh0IHtcbiAgLyoqIEFic29sdXRlRW5kIGZpZWxkIHZhbHVlLiAqL1xuICBhYnNvbHV0ZUVuZDogbnVtYmVyO1xuICAvKiogQWJzb2x1dGVTdGFydCBmaWVsZCB2YWx1ZS4gKi9cbiAgYWJzb2x1dGVTdGFydDogbnVtYmVyO1xuICAvKiogRXhhbXBsZSBmaWVsZCB2YWx1ZS4gKi9cbiAgZXhhbXBsZTogRXhhbXBsZTtcbiAgLyoqIEhhc090aGVyRXhhbXBsZXMgZmllbGQgdmFsdWUuICovXG4gIGhhc090aGVyRXhhbXBsZXM6IGJvb2xlYW47XG4gIC8qKiBQcm9ibGVtIGZpZWxkIHZhbHVlLiAqL1xuICBwcm9ibGVtOiBQcm9ibGVtO1xuICAvKiogU291cmNlVGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgTm9ybWFsaXplQ29udGVudExpbmVzQ29udGV4dCB7XG4gIC8qKiBDb250ZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBQcmVmaXggZmllbGQgdmFsdWUuICovXG4gIHByZWZpeDogc3RyaW5nO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgU3RyaXBDb250ZW50UHJlZml4Q29udGV4dCB7XG4gIC8qKiBMaW5lIGZpZWxkIHZhbHVlLiAqL1xuICBsaW5lOiBzdHJpbmc7XG4gIC8qKiBQcmVmaXggZmllbGQgdmFsdWUuICovXG4gIHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBsYW5ndWFnZSB0byBhIGZlbmNlIGxpbmUgd2hlbiBuZWVkZWQuXG4gKiBAcGFyYW0gY29udGV4dCBGZW5jZSBzdGF0ZSBhbmQgbGluZSBkYXRhLlxuICogQHJldHVybnMgVXBkYXRlZCBsaW5lIGFuZCBmZW5jZSBzdGF0ZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXN1bHQgPSBhcHBseUZlbmNlTGFuZ3VhZ2UoeyBpbkZlbmNlOiBmYWxzZSwgbGluZTogXCIgKiBgYGBcIiB9KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBhcHBseUZlbmNlTGFuZ3VhZ2UoY29udGV4dDogRmVuY2VMYW5ndWFnZUNvbnRleHQpOiBGZW5jZVJlc3VsdCB7XG4gIGNvbnN0IHsgaW5GZW5jZSwgbGluZSB9ID0gY29udGV4dDtcbiAgY29uc3QgZmVuY2VJbmZvID0gcGFyc2VGZW5jZUxpbmUobGluZSk7XG5cbiAgaWYgKGZlbmNlSW5mbyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHsgaW5GZW5jZSwgbGluZSB9O1xuICB9XG5cbiAgY29uc3Qgc2hvdWxkQWRkTGFuZ3VhZ2UgPSAhaW5GZW5jZSAmJiBmZW5jZUluZm8ubGFuZ3VhZ2UubGVuZ3RoID09PSAwO1xuICBjb25zdCBuZXh0TGluZSA9IHNob3VsZEFkZExhbmd1YWdlXG4gICAgPyBgJHtmZW5jZUluZm8ubGVhZGluZ31cXGBcXGBcXGB0eXBlc2NyaXB0YFxuICAgIDogbGluZTtcblxuICByZXR1cm4geyBpbkZlbmNlOiAhaW5GZW5jZSwgbGluZTogbmV4dExpbmUgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBmdWxsIGV4YW1wbGUgd2l0aCBhIGZlbmNlZCBibG9jayB3aGVuIG1pc3NpbmcgZW50aXJlbHkuXG4gKiBAcGFyYW0gZXhhbXBsZSBFeGFtcGxlIG1ldGFkYXRhLlxuICogQHJldHVybnMgRXhhbXBsZSB0ZXh0IHdpdGggYSBmZW5jZWQgYmxvY2suXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IGJ1aWxkTWlzc2luZ0ZlbmNlRml4KGV4YW1wbGUpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTWlzc2luZ0ZlbmNlRml4KGV4YW1wbGU6IEV4YW1wbGUpOiBzdHJpbmcge1xuICBjb25zdCBjb250ZW50TGluZXMgPSBub3JtYWxpemVDb250ZW50TGluZXMoe1xuICAgIGNvbnRlbnQ6IGV4YW1wbGUuY29udGVudCxcbiAgICBwcmVmaXg6IGV4YW1wbGUucHJlZml4LFxuICB9KTtcblxuICByZXR1cm4gW1xuICAgIGAke2V4YW1wbGUucHJlZml4fUBleGFtcGxlYCxcbiAgICBgJHtleGFtcGxlLnByZWZpeH1cXGBcXGBcXGB0eXBlc2NyaXB0YCxcbiAgICAuLi5jb250ZW50TGluZXMubWFwKChjb250ZW50TGluZSkgPT5cbiAgICAgIGNvbnRlbnRMaW5lLmxlbmd0aCA+IDBcbiAgICAgICAgPyBgJHtleGFtcGxlLnByZWZpeH0gJHtjb250ZW50TGluZX1gXG4gICAgICAgIDogZXhhbXBsZS5wcmVmaXgsXG4gICAgKSxcbiAgICBgJHtleGFtcGxlLnByZWZpeH1cXGBcXGBcXGBgLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG5cbi8qKlxuICogQWRkcyBtaXNzaW5nIGxhbmd1YWdlcyB0byBleGlzdGluZyBmZW5jZWQgYmxvY2tzLlxuICogQHBhcmFtIG9yaWdpbmFsIE9yaWdpbmFsIGNvbW1lbnQgdGV4dC5cbiAqIEByZXR1cm5zIFVwZGF0ZWQgY29tbWVudCB0ZXh0IHdoZW4gY2hhbmdlcyBhcmUgbWFkZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1cGRhdGVkID0gYnVpbGRNaXNzaW5nTGFuZ3VhZ2VGaXgoXCIqIGBgYFxcbiogb2tcXG4qIGBgYFwiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZE1pc3NpbmdMYW5ndWFnZUZpeChvcmlnaW5hbDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbGluZUJyZWFrID0gb3JpZ2luYWwuaW5jbHVkZXMoXCJcXHJcXG5cIikgPyBcIlxcclxcblwiIDogXCJcXG5cIjtcbiAgY29uc3QgbGluZXMgPSBvcmlnaW5hbC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgbGV0IGluRmVuY2UgPSBmYWxzZTtcblxuICBjb25zdCB1cGRhdGVkTGluZXMgPSBsaW5lcy5tYXAoKGxpbmUpID0+IHtcbiAgICBjb25zdCB7IGluRmVuY2U6IG5leHRJbkZlbmNlLCBsaW5lOiBuZXh0TGluZSB9ID0gYXBwbHlGZW5jZUxhbmd1YWdlKHtcbiAgICAgIGluRmVuY2UsXG4gICAgICBsaW5lLFxuICAgIH0pO1xuICAgIGluRmVuY2UgPSBuZXh0SW5GZW5jZTtcbiAgICByZXR1cm4gbmV4dExpbmU7XG4gIH0pO1xuXG4gIGNvbnN0IHVwZGF0ZWQgPSB1cGRhdGVkTGluZXMuam9pbihsaW5lQnJlYWspO1xuXG4gIHJldHVybiB1cGRhdGVkID09PSBvcmlnaW5hbCA/IHZvaWQgMCA6IHVwZGF0ZWQ7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgZml4ZXIgZnVuY3Rpb24gZm9yIHRoZSByZXBvcnQuXG4gKiBAcGFyYW0gY29udGV4dCBGaXhlciBjb250ZXh0IGRldGFpbHMuXG4gKiBAcmV0dXJucyBGaXhlciBmdW5jdGlvbiBmb3IgRVNMaW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeGVyID0gY3JlYXRlRml4ZXIoY29udGV4dCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRml4ZXIoXG4gIGNvbnRleHQ6IEZpeGVyQ29udGV4dCxcbik6IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IFJ1bGUuRml4IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyBhYnNvbHV0ZUVuZCwgYWJzb2x1dGVTdGFydCB9ID0gY29udGV4dDtcblxuICByZXR1cm4gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCB1cGRhdGVkID0gZ2V0VXBkYXRlZEV4YW1wbGVUZXh0KGNvbnRleHQpO1xuXG4gICAgaWYgKHVwZGF0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZml4ZXIucmVwbGFjZVRleHRSYW5nZShbYWJzb2x1dGVTdGFydCwgYWJzb2x1dGVFbmRdLCB1cGRhdGVkKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIG9yaWdpbmFsIGV4YW1wbGUgcmFuZ2UuXG4gKiBAcGFyYW0gb3JpZ2luYWwgT3JpZ2luYWwgZXhhbXBsZSB0ZXh0LlxuICogQHJldHVybnMgVHJhaWxpbmcgd2hpdGVzcGFjZSB0byBwcmVzZXJ2ZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzdWZmaXggPSBnZXRUcmFpbGluZ1doaXRlc3BhY2UoXCIqIEBleGFtcGxlIG9rXFxuIFwiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRUcmFpbGluZ1doaXRlc3BhY2Uob3JpZ2luYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRyYWlsaW5nTWF0Y2ggPSAvKD86XFxyP1xcblsgXFx0XSopJC91LmV4ZWMob3JpZ2luYWwpO1xuXG4gIHJldHVybiB0cmFpbGluZ01hdGNoPy5bMF0gPz8gXCJcIjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgdXBkYXRlZCB0ZXh0IGZvciBhbiBleGFtcGxlLlxuICogQHBhcmFtIGNvbnRleHQgRml4ZXIgY29udGV4dCBkZXRhaWxzLlxuICogQHJldHVybnMgRml4ZWQgZXhhbXBsZSB0ZXh0IHdoZW4gYSBjaGFuZ2UgaXMgcmVxdWlyZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IGdldFVwZGF0ZWRFeGFtcGxlVGV4dChjb250ZXh0KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRVcGRhdGVkRXhhbXBsZVRleHQoY29udGV4dDogRml4ZXJDb250ZXh0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qge1xuICAgIGFic29sdXRlRW5kLFxuICAgIGFic29sdXRlU3RhcnQsXG4gICAgZXhhbXBsZSxcbiAgICBoYXNPdGhlckV4YW1wbGVzLFxuICAgIHByb2JsZW0sXG4gICAgc291cmNlVGV4dCxcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG9yaWdpbmFsID0gc291cmNlVGV4dC5zbGljZShhYnNvbHV0ZVN0YXJ0LCBhYnNvbHV0ZUVuZCk7XG5cbiAgaWYgKHByb2JsZW0gPT09IFwibWlzc2luZ0xhbmd1YWdlXCIpIHtcbiAgICByZXR1cm4gYnVpbGRNaXNzaW5nTGFuZ3VhZ2VGaXgob3JpZ2luYWwpO1xuICB9XG5cbiAgaWYgKHByb2JsZW0gPT09IFwiZW1wdHlFeGFtcGxlXCIpIHtcbiAgICByZXR1cm4gcmVzb2x2ZUVtcHR5RXhhbXBsZUZpeCh7IGV4YW1wbGUsIGhhc090aGVyRXhhbXBsZXMsIG9yaWdpbmFsIH0pO1xuICB9XG5cbiAgY29uc3QgZml4ZWQgPSBidWlsZE1pc3NpbmdGZW5jZUZpeChleGFtcGxlKTtcbiAgY29uc3QgdHJhaWxpbmdXaGl0ZXNwYWNlID0gZ2V0VHJhaWxpbmdXaGl0ZXNwYWNlKG9yaWdpbmFsKTtcblxuICByZXR1cm4gdHJhaWxpbmdXaGl0ZXNwYWNlLmxlbmd0aCA+IDBcbiAgICA/IGAke2ZpeGVkfSR7dHJhaWxpbmdXaGl0ZXNwYWNlfWBcbiAgICA6IGZpeGVkO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgcmF3IGV4YW1wbGUgY29udGVudCBsaW5lcyBiZWZvcmUgZmVuY2Ugd3JhcHBpbmcuXG4gKiBAcGFyYW0gY29udGV4dCBQcmVmaXggYW5kIHJhdyBjb250ZW50LlxuICogQHJldHVybnMgQ29udGVudCBsaW5lcyBzYWZlIHRvIHdyYXAgaW4gYSBmZW5jZWQgYmxvY2suXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGluZXMgPSBub3JtYWxpemVDb250ZW50TGluZXMoeyBjb250ZW50OiBcImFcXG4gKiBiXCIsIHByZWZpeDogXCIgKiBcIiB9KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVDb250ZW50TGluZXMoY29udGV4dDogTm9ybWFsaXplQ29udGVudExpbmVzQ29udGV4dCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgeyBjb250ZW50LCBwcmVmaXggfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5sZW5ndGggPiAwID8gY29udGVudC5zcGxpdCgvXFxyP1xcbi91KSA6IFtdO1xuXG4gIHJldHVybiBsaW5lc1xuICAgIC5tYXAoKGxpbmUpID0+IHN0cmlwQ29udGVudFByZWZpeCh7IGxpbmUsIHByZWZpeCB9KSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnJlcGxhY2UoL1xccypcXCpcXC9bIFxcdF0qJC91LCBcIlwiKSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGFwcHJvcHJpYXRlIGZpeCBmb3IgZW1wdHkgZXhhbXBsZXMuXG4gKiBAcGFyYW0gY29udGV4dCBFbXB0eSBleGFtcGxlIGZpeCBkZXRhaWxzLlxuICogQHJldHVybnMgRml4ZWQgZXhhbXBsZSB0ZXh0IHdoZW4gYSBjaGFuZ2UgaXMgcmVxdWlyZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IHJlc29sdmVFbXB0eUV4YW1wbGVGaXgoY29udGV4dCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUVtcHR5RXhhbXBsZUZpeChcbiAgY29udGV4dDogRW1wdHlFeGFtcGxlRml4Q29udGV4dCxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgZXhhbXBsZSwgaGFzT3RoZXJFeGFtcGxlcywgb3JpZ2luYWwgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGNsZWFuZWQgPSByZW1vdmVFbXB0eUZlbmNlcyhvcmlnaW5hbCk7XG5cbiAgaWYgKGNsZWFuZWQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBjbGVhbmVkO1xuICB9XG5cbiAgaWYgKGhhc090aGVyRXhhbXBsZXMpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChvcmlnaW5hbC5pbmNsdWRlcyhcImBgYFwiKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gYnVpbGRNaXNzaW5nRmVuY2VGaXgoZXhhbXBsZSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBKU0RvYyBsaW5lIHByZWZpeGVzIGZyb20gZXhhbXBsZSBjb250ZW50LlxuICogQHBhcmFtIGNvbnRleHQgUHJlZml4IGFuZCBzb3VyY2UgbGluZS5cbiAqIEByZXR1cm5zIENsZWFuZWQgY29udGVudCBsaW5lLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpbmUgPSBzdHJpcENvbnRlbnRQcmVmaXgoeyBsaW5lOiBcIiAqIHZhbHVlXCIsIHByZWZpeDogXCIgKiBcIiB9KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBzdHJpcENvbnRlbnRQcmVmaXgoY29udGV4dDogU3RyaXBDb250ZW50UHJlZml4Q29udGV4dCk6IHN0cmluZyB7XG4gIGNvbnN0IHsgbGluZSwgcHJlZml4IH0gPSBjb250ZXh0O1xuXG4gIGlmIChsaW5lLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgIHJldHVybiBsaW5lLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIGxpbmUucmVwbGFjZSgvXlxccypcXCpcXHM/L3UsIFwiXCIpO1xufVxuXG5leHBvcnQgeyBidWlsZE1pc3NpbmdGZW5jZUZpeCwgYnVpbGRNaXNzaW5nTGFuZ3VhZ2VGaXgsIGNyZWF0ZUZpeGVyIH07Il19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { requireExampleLanguageRule } from "./rule.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3MvcmVxdWlyZS1leGFtcGxlLWxhbmd1YWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHJlcXVpcmVFeGFtcGxlTGFuZ3VhZ2VSdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuZXhwb3J0IHR5cGUgeyBDb21tZW50LCBFeGFtcGxlLCBQcm9ibGVtIH0gZnJvbSBcIi4vdHlwZXNcIjtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAuBzD,qCAAqC;AACrC,UAAU,uBAAuB;IAC/B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAE1B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,8BAA8B;IAC9B,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,qCAAqC;AACrC,UAAU,oBAAoB;IAC5B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,2BAA2B;IAC3B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;IAE1B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAuBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAS,qBAAqB,CAC5B,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAAC,gBAAgB,CA6BvB;AA0FD;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAiB1D;AAED,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { checkExampleContent } from "./examples.js";
|
|
2
|
+
import { createFixer } from "./fixes.js";
|
|
3
|
+
/**
|
|
4
|
+
* Build a report descriptor for a single example problem.
|
|
5
|
+
* @param context Input context value.
|
|
6
|
+
* @returns Return value output.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const descriptor = buildReportDescriptor({
|
|
10
|
+
* comment: { type: "Block", value: "*" } as Comment,
|
|
11
|
+
* example: {
|
|
12
|
+
* content: "",
|
|
13
|
+
* endIndex: 0,
|
|
14
|
+
* endOffset: 0,
|
|
15
|
+
* lineIndex: 0,
|
|
16
|
+
* prefix: " * ",
|
|
17
|
+
* startOffset: 0,
|
|
18
|
+
* },
|
|
19
|
+
* hasOtherExamples: false,
|
|
20
|
+
* problem: "missingFence",
|
|
21
|
+
* sourceCode: {} as Rule.SourceCode,
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function buildReportDescriptor(context) {
|
|
26
|
+
const { comment, example, hasOtherExamples, problem, sourceCode } = context;
|
|
27
|
+
const fix = getFixerForExample({
|
|
28
|
+
comment,
|
|
29
|
+
example,
|
|
30
|
+
hasOtherExamples,
|
|
31
|
+
problem,
|
|
32
|
+
sourceCode,
|
|
33
|
+
});
|
|
34
|
+
const reportFix = fix === void 0
|
|
35
|
+
? void 0
|
|
36
|
+
: (fixer) => fix(fixer) ?? [];
|
|
37
|
+
const loc = getReportLocation(comment, example);
|
|
38
|
+
if (loc !== void 0) {
|
|
39
|
+
return {
|
|
40
|
+
fix: reportFix,
|
|
41
|
+
loc,
|
|
42
|
+
messageId: problem,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
fix: reportFix,
|
|
47
|
+
messageId: problem,
|
|
48
|
+
node: sourceCode.ast,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolve a fixer for the report when ranges are available.
|
|
53
|
+
* @param context Input context value.
|
|
54
|
+
* @returns Return value output.
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const fixer = getFixerForExample({
|
|
58
|
+
* comment: { type: "Block", value: "*" } as Comment,
|
|
59
|
+
* example: {
|
|
60
|
+
* content: "",
|
|
61
|
+
* endIndex: 0,
|
|
62
|
+
* endOffset: 0,
|
|
63
|
+
* lineIndex: 0,
|
|
64
|
+
* prefix: " * ",
|
|
65
|
+
* startOffset: 0,
|
|
66
|
+
* },
|
|
67
|
+
* hasOtherExamples: false,
|
|
68
|
+
* problem: "missingLanguage",
|
|
69
|
+
* sourceCode: {} as Rule.SourceCode,
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
function getFixerForExample(context) {
|
|
74
|
+
const { comment, example, hasOtherExamples, problem, sourceCode } = context;
|
|
75
|
+
const commentOffset = comment.range?.[0];
|
|
76
|
+
const commentValueOffset = typeof commentOffset === "number" ? commentOffset + 2 : void 0;
|
|
77
|
+
const absoluteStart = typeof commentValueOffset === "number"
|
|
78
|
+
? commentValueOffset + example.startOffset
|
|
79
|
+
: void 0;
|
|
80
|
+
const absoluteEnd = typeof commentValueOffset === "number"
|
|
81
|
+
? commentValueOffset + example.endOffset
|
|
82
|
+
: void 0;
|
|
83
|
+
if (typeof absoluteStart !== "number" || typeof absoluteEnd !== "number") {
|
|
84
|
+
return void 0;
|
|
85
|
+
}
|
|
86
|
+
return createFixer({
|
|
87
|
+
absoluteEnd,
|
|
88
|
+
absoluteStart,
|
|
89
|
+
example,
|
|
90
|
+
hasOtherExamples,
|
|
91
|
+
problem,
|
|
92
|
+
sourceText: sourceCode.text,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Resolve the report location for a matched example.
|
|
97
|
+
* @param comment Comment node containing the example.
|
|
98
|
+
* @param example Example metadata.
|
|
99
|
+
* @returns Report location when available.
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* const loc = getReportLocation({} as Comment, {
|
|
103
|
+
* content: "",
|
|
104
|
+
* endIndex: 0,
|
|
105
|
+
* endOffset: 0,
|
|
106
|
+
* lineIndex: 0,
|
|
107
|
+
* prefix: "",
|
|
108
|
+
* startOffset: 0,
|
|
109
|
+
* });
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
function getReportLocation(comment, example) {
|
|
113
|
+
const line = typeof comment.loc?.start.line === "number"
|
|
114
|
+
? comment.loc.start.line + example.lineIndex
|
|
115
|
+
: void 0;
|
|
116
|
+
if (line === void 0) {
|
|
117
|
+
return void 0;
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
end: { column: 1, line },
|
|
121
|
+
start: { column: 0, line },
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Reports a single example when it violates the rule.
|
|
126
|
+
* @param context Report details for this example.
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* reportExample(context);
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
function reportExample(context) {
|
|
133
|
+
const { comment, context: ruleContext, example, hasOtherExamples } = context;
|
|
134
|
+
const problem = checkExampleContent(example.content);
|
|
135
|
+
if (problem === void 0) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const descriptor = buildReportDescriptor({
|
|
139
|
+
comment,
|
|
140
|
+
example,
|
|
141
|
+
hasOtherExamples,
|
|
142
|
+
problem,
|
|
143
|
+
sourceCode: ruleContext.sourceCode,
|
|
144
|
+
});
|
|
145
|
+
ruleContext.report(descriptor);
|
|
146
|
+
}
|
|
147
|
+
export { buildReportDescriptor, reportExample };
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9kb2NzL3JlcXVpcmUtZXhhbXBsZS1sYW5ndWFnZS9yZXBvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUEwRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixPQUFnQztJQUVoQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzVFLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDO1FBQzdCLE9BQU87UUFDUCxPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLE9BQU87UUFDUCxVQUFVO0tBQ1gsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxTQUFTLEdBQ2IsR0FBRyxLQUFLLEtBQUssQ0FBQztRQUNaLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQyxLQUFxQixFQUFpQyxFQUFFLENBQ3ZELEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWhELElBQUksR0FBRyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkIsT0FBTztZQUNMLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRztZQUNILFNBQVMsRUFBRSxPQUFPO1NBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxTQUFTO1FBQ2QsU0FBUyxFQUFFLE9BQU87UUFDbEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFnQjtLQUNsQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxTQUFTLGtCQUFrQixDQUN6QixPQUEyQjtJQUUzQixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzVFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxNQUFNLGtCQUFrQixHQUN0QixPQUFPLGFBQWEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sYUFBYSxHQUNqQixPQUFPLGtCQUFrQixLQUFLLFFBQVE7UUFDcEMsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxXQUFXO1FBQzFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNiLE1BQU0sV0FBVyxHQUNmLE9BQU8sa0JBQWtCLEtBQUssUUFBUTtRQUNwQyxDQUFDLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLFNBQVM7UUFDeEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWIsSUFBSSxPQUFPLGFBQWEsS0FBSyxRQUFRLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekUsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7UUFDakIsV0FBVztRQUNYLGFBQWE7UUFDYixPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLE9BQU87UUFDUCxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUk7S0FDNUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FDeEIsT0FBZ0IsRUFDaEIsT0FBZ0I7SUFFaEIsTUFBTSxJQUFJLEdBQ1IsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUN6QyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTO1FBQzVDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUViLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO1FBQ3hCLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO0tBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsYUFBYSxDQUFDLE9BQTZCO0lBQ2xELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDN0UsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXJELElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQztRQUN2QyxPQUFPO1FBQ1AsT0FBTztRQUNQLGdCQUFnQjtRQUNoQixPQUFPO1FBQ1AsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVO0tBQ25DLENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tZW50LCBFeGFtcGxlLCBQcm9ibGVtIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgY2hlY2tFeGFtcGxlQ29udGVudCB9IGZyb20gXCIuL2V4YW1wbGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVGaXhlciB9IGZyb20gXCIuL2ZpeGVzXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGaXhlckxvb2t1cENvbnRleHQge1xuICAvKiogQ29tbWVudCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudDogQ29tbWVudDtcblxuICAvKiogRXhhbXBsZSBmaWVsZCB2YWx1ZS4gKi9cbiAgZXhhbXBsZTogRXhhbXBsZTtcblxuICAvKiogSGFzT3RoZXJFeGFtcGxlcyBmaWVsZCB2YWx1ZS4gKi9cbiAgaGFzT3RoZXJFeGFtcGxlczogYm9vbGVhbjtcblxuICAvKiogUHJvYmxlbSBmaWVsZCB2YWx1ZS4gKi9cbiAgcHJvYmxlbTogUHJvYmxlbTtcblxuICAvKiogU291cmNlQ29kZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl07XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXBvcnREZXNjcmlwdG9yQ29udGV4dCB7XG4gIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50OiBDb21tZW50O1xuXG4gIC8qKiBFeGFtcGxlIGZpZWxkIHZhbHVlLiAqL1xuICBleGFtcGxlOiBFeGFtcGxlO1xuXG4gIC8qKiBIYXNPdGhlckV4YW1wbGVzIGZpZWxkIHZhbHVlLiAqL1xuICBoYXNPdGhlckV4YW1wbGVzOiBib29sZWFuO1xuXG4gIC8qKiBQcm9ibGVtIGZpZWxkIHZhbHVlLiAqL1xuICBwcm9ibGVtOiBQcm9ibGVtO1xuXG4gIC8qKiBTb3VyY2VDb2RlIGZpZWxkIHZhbHVlLiAqL1xuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFJlcG9ydEV4YW1wbGVDb250ZXh0IHtcbiAgLyoqIENvbW1lbnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnQ6IENvbW1lbnQ7XG5cbiAgLyoqIENvbnRleHQgZmllbGQgdmFsdWUuICovXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqIEV4YW1wbGUgZmllbGQgdmFsdWUuICovXG4gIGV4YW1wbGU6IEV4YW1wbGU7XG5cbiAgLyoqIEhhc090aGVyRXhhbXBsZXMgZmllbGQgdmFsdWUuICovXG4gIGhhc090aGVyRXhhbXBsZXM6IGJvb2xlYW47XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXBvcnRMb2NhdGlvbiB7XG4gIC8qKiBFbmQgZmllbGQgdmFsdWUuICovXG4gIGVuZDoge1xuICAgIC8qKiBDb2x1bW4gZmllbGQgdmFsdWUuICovXG4gICAgY29sdW1uOiBudW1iZXI7XG5cbiAgICAvKiogTGluZSBmaWVsZCB2YWx1ZS4gKi9cbiAgICBsaW5lOiBudW1iZXI7XG4gIH07XG5cbiAgLyoqIFN0YXJ0IGZpZWxkIHZhbHVlLiAqL1xuICBzdGFydDoge1xuICAgIC8qKiBDb2x1bW4gZmllbGQgdmFsdWUuICovXG4gICAgY29sdW1uOiBudW1iZXI7XG5cbiAgICAvKiogTGluZSBmaWVsZCB2YWx1ZS4gKi9cbiAgICBsaW5lOiBudW1iZXI7XG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSByZXBvcnQgZGVzY3JpcHRvciBmb3IgYSBzaW5nbGUgZXhhbXBsZSBwcm9ibGVtLlxuICogQHBhcmFtIGNvbnRleHQgSW5wdXQgY29udGV4dCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGVzY3JpcHRvciA9IGJ1aWxkUmVwb3J0RGVzY3JpcHRvcih7XG4gKiAgIGNvbW1lbnQ6IHsgdHlwZTogXCJCbG9ja1wiLCB2YWx1ZTogXCIqXCIgfSBhcyBDb21tZW50LFxuICogICBleGFtcGxlOiB7XG4gKiAgICAgY29udGVudDogXCJcIixcbiAqICAgICBlbmRJbmRleDogMCxcbiAqICAgICBlbmRPZmZzZXQ6IDAsXG4gKiAgICAgbGluZUluZGV4OiAwLFxuICogICAgIHByZWZpeDogXCIgKiBcIixcbiAqICAgICBzdGFydE9mZnNldDogMCxcbiAqICAgfSxcbiAqICAgaGFzT3RoZXJFeGFtcGxlczogZmFsc2UsXG4gKiAgIHByb2JsZW06IFwibWlzc2luZ0ZlbmNlXCIsXG4gKiAgIHNvdXJjZUNvZGU6IHt9IGFzIFJ1bGUuU291cmNlQ29kZSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkUmVwb3J0RGVzY3JpcHRvcihcbiAgY29udGV4dDogUmVwb3J0RGVzY3JpcHRvckNvbnRleHQsXG4pOiBSdWxlLlJlcG9ydERlc2NyaXB0b3Ige1xuICBjb25zdCB7IGNvbW1lbnQsIGV4YW1wbGUsIGhhc090aGVyRXhhbXBsZXMsIHByb2JsZW0sIHNvdXJjZUNvZGUgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZpeCA9IGdldEZpeGVyRm9yRXhhbXBsZSh7XG4gICAgY29tbWVudCxcbiAgICBleGFtcGxlLFxuICAgIGhhc090aGVyRXhhbXBsZXMsXG4gICAgcHJvYmxlbSxcbiAgICBzb3VyY2VDb2RlLFxuICB9KTtcbiAgY29uc3QgcmVwb3J0Rml4ID1cbiAgICBmaXggPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IEl0ZXJhYmxlPFJ1bGUuRml4PiB8IFJ1bGUuRml4ID0+XG4gICAgICAgICAgZml4KGZpeGVyKSA/PyBbXTtcbiAgY29uc3QgbG9jID0gZ2V0UmVwb3J0TG9jYXRpb24oY29tbWVudCwgZXhhbXBsZSk7XG5cbiAgaWYgKGxvYyAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpeDogcmVwb3J0Rml4LFxuICAgICAgbG9jLFxuICAgICAgbWVzc2FnZUlkOiBwcm9ibGVtLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpeDogcmVwb3J0Rml4LFxuICAgIG1lc3NhZ2VJZDogcHJvYmxlbSxcbiAgICBub2RlOiBzb3VyY2VDb2RlLmFzdCBhcyBSdWxlLk5vZGUsXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIGZpeGVyIGZvciB0aGUgcmVwb3J0IHdoZW4gcmFuZ2VzIGFyZSBhdmFpbGFibGUuXG4gKiBAcGFyYW0gY29udGV4dCBJbnB1dCBjb250ZXh0IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhlciA9IGdldEZpeGVyRm9yRXhhbXBsZSh7XG4gKiAgIGNvbW1lbnQ6IHsgdHlwZTogXCJCbG9ja1wiLCB2YWx1ZTogXCIqXCIgfSBhcyBDb21tZW50LFxuICogICBleGFtcGxlOiB7XG4gKiAgICAgY29udGVudDogXCJcIixcbiAqICAgICBlbmRJbmRleDogMCxcbiAqICAgICBlbmRPZmZzZXQ6IDAsXG4gKiAgICAgbGluZUluZGV4OiAwLFxuICogICAgIHByZWZpeDogXCIgKiBcIixcbiAqICAgICBzdGFydE9mZnNldDogMCxcbiAqICAgfSxcbiAqICAgaGFzT3RoZXJFeGFtcGxlczogZmFsc2UsXG4gKiAgIHByb2JsZW06IFwibWlzc2luZ0xhbmd1YWdlXCIsXG4gKiAgIHNvdXJjZUNvZGU6IHt9IGFzIFJ1bGUuU291cmNlQ29kZSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldEZpeGVyRm9yRXhhbXBsZShcbiAgY29udGV4dDogRml4ZXJMb29rdXBDb250ZXh0LFxuKTogKChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IFJ1bGUuRml4IHwgdW5kZWZpbmVkKSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgY29tbWVudCwgZXhhbXBsZSwgaGFzT3RoZXJFeGFtcGxlcywgcHJvYmxlbSwgc291cmNlQ29kZSB9ID0gY29udGV4dDtcbiAgY29uc3QgY29tbWVudE9mZnNldCA9IGNvbW1lbnQucmFuZ2U/LlswXTtcbiAgY29uc3QgY29tbWVudFZhbHVlT2Zmc2V0ID1cbiAgICB0eXBlb2YgY29tbWVudE9mZnNldCA9PT0gXCJudW1iZXJcIiA/IGNvbW1lbnRPZmZzZXQgKyAyIDogdm9pZCAwO1xuICBjb25zdCBhYnNvbHV0ZVN0YXJ0ID1cbiAgICB0eXBlb2YgY29tbWVudFZhbHVlT2Zmc2V0ID09PSBcIm51bWJlclwiXG4gICAgICA/IGNvbW1lbnRWYWx1ZU9mZnNldCArIGV4YW1wbGUuc3RhcnRPZmZzZXRcbiAgICAgIDogdm9pZCAwO1xuICBjb25zdCBhYnNvbHV0ZUVuZCA9XG4gICAgdHlwZW9mIGNvbW1lbnRWYWx1ZU9mZnNldCA9PT0gXCJudW1iZXJcIlxuICAgICAgPyBjb21tZW50VmFsdWVPZmZzZXQgKyBleGFtcGxlLmVuZE9mZnNldFxuICAgICAgOiB2b2lkIDA7XG5cbiAgaWYgKHR5cGVvZiBhYnNvbHV0ZVN0YXJ0ICE9PSBcIm51bWJlclwiIHx8IHR5cGVvZiBhYnNvbHV0ZUVuZCAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlRml4ZXIoe1xuICAgIGFic29sdXRlRW5kLFxuICAgIGFic29sdXRlU3RhcnQsXG4gICAgZXhhbXBsZSxcbiAgICBoYXNPdGhlckV4YW1wbGVzLFxuICAgIHByb2JsZW0sXG4gICAgc291cmNlVGV4dDogc291cmNlQ29kZS50ZXh0LFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSByZXBvcnQgbG9jYXRpb24gZm9yIGEgbWF0Y2hlZCBleGFtcGxlLlxuICogQHBhcmFtIGNvbW1lbnQgQ29tbWVudCBub2RlIGNvbnRhaW5pbmcgdGhlIGV4YW1wbGUuXG4gKiBAcGFyYW0gZXhhbXBsZSBFeGFtcGxlIG1ldGFkYXRhLlxuICogQHJldHVybnMgUmVwb3J0IGxvY2F0aW9uIHdoZW4gYXZhaWxhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxvYyA9IGdldFJlcG9ydExvY2F0aW9uKHt9IGFzIENvbW1lbnQsIHtcbiAqICAgIGNvbnRlbnQ6IFwiXCIsXG4gKiAgICBlbmRJbmRleDogMCxcbiAqICAgIGVuZE9mZnNldDogMCxcbiAqICAgIGxpbmVJbmRleDogMCxcbiAqICAgIHByZWZpeDogXCJcIixcbiAqICAgIHN0YXJ0T2Zmc2V0OiAwLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0UmVwb3J0TG9jYXRpb24oXG4gIGNvbW1lbnQ6IENvbW1lbnQsXG4gIGV4YW1wbGU6IEV4YW1wbGUsXG4pOiBSZXBvcnRMb2NhdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGxpbmUgPVxuICAgIHR5cGVvZiBjb21tZW50LmxvYz8uc3RhcnQubGluZSA9PT0gXCJudW1iZXJcIlxuICAgICAgPyBjb21tZW50LmxvYy5zdGFydC5saW5lICsgZXhhbXBsZS5saW5lSW5kZXhcbiAgICAgIDogdm9pZCAwO1xuXG4gIGlmIChsaW5lID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbmQ6IHsgY29sdW1uOiAxLCBsaW5lIH0sXG4gICAgc3RhcnQ6IHsgY29sdW1uOiAwLCBsaW5lIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmVwb3J0cyBhIHNpbmdsZSBleGFtcGxlIHdoZW4gaXQgdmlvbGF0ZXMgdGhlIHJ1bGUuXG4gKiBAcGFyYW0gY29udGV4dCBSZXBvcnQgZGV0YWlscyBmb3IgdGhpcyBleGFtcGxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydEV4YW1wbGUoY29udGV4dCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gcmVwb3J0RXhhbXBsZShjb250ZXh0OiBSZXBvcnRFeGFtcGxlQ29udGV4dCk6IHZvaWQge1xuICBjb25zdCB7IGNvbW1lbnQsIGNvbnRleHQ6IHJ1bGVDb250ZXh0LCBleGFtcGxlLCBoYXNPdGhlckV4YW1wbGVzIH0gPSBjb250ZXh0O1xuICBjb25zdCBwcm9ibGVtID0gY2hlY2tFeGFtcGxlQ29udGVudChleGFtcGxlLmNvbnRlbnQpO1xuXG4gIGlmIChwcm9ibGVtID09PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBkZXNjcmlwdG9yID0gYnVpbGRSZXBvcnREZXNjcmlwdG9yKHtcbiAgICBjb21tZW50LFxuICAgIGV4YW1wbGUsXG4gICAgaGFzT3RoZXJFeGFtcGxlcyxcbiAgICBwcm9ibGVtLFxuICAgIHNvdXJjZUNvZGU6IHJ1bGVDb250ZXh0LnNvdXJjZUNvZGUsXG4gIH0pO1xuXG4gIHJ1bGVDb250ZXh0LnJlcG9ydChkZXNjcmlwdG9yKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRSZXBvcnREZXNjcmlwdG9yLCByZXBvcnRFeGFtcGxlIH07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAMnC;;GAEG;AACH,QAAA,MAAM,0BAA0B,EAAE,IAAI,CAAC,UAkCtC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|