@redocly/recheck 0.15.0 → 2.58.1
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 +71 -1886
- package/examples/appendices/google.appendix.yaml +1 -1
- package/examples/appendices/inclusive-language.appendix.yaml +1 -1
- package/examples/appendices/microsoft.appendix.yaml +1 -1
- package/examples/appendices/plain-language.appendix.yaml +1 -1
- package/examples/appendices/technical-english.appendix.yaml +1 -1
- package/examples/google.yaml +7 -7
- package/examples/inclusive-language.yaml +7 -7
- package/examples/microsoft.yaml +7 -7
- package/examples/plain-language.yaml +7 -7
- package/examples/technical-english.yaml +7 -7
- package/lib/actions/baseline.d.ts +15 -0
- package/lib/actions/baseline.d.ts.map +1 -0
- package/lib/actions/baseline.js +51 -0
- package/lib/actions/baseline.js.map +1 -0
- package/lib/actions/lint.d.ts +51 -0
- package/lib/actions/lint.d.ts.map +1 -0
- package/lib/actions/lint.js +123 -0
- package/lib/actions/lint.js.map +1 -0
- package/lib/actions/markdoc-schema.d.ts +34 -0
- package/lib/actions/markdoc-schema.d.ts.map +1 -0
- package/lib/actions/markdoc-schema.js +106 -0
- package/lib/actions/markdoc-schema.js.map +1 -0
- package/lib/actions/readability.d.ts +25 -0
- package/lib/actions/readability.d.ts.map +1 -0
- package/lib/actions/readability.js +47 -0
- package/lib/actions/readability.js.map +1 -0
- package/lib/actions/roots.d.ts +7 -0
- package/lib/actions/roots.d.ts.map +1 -0
- package/lib/actions/roots.js +36 -0
- package/lib/actions/roots.js.map +1 -0
- package/lib/config/presets/api-descriptions.d.ts +8 -0
- package/lib/config/presets/api-descriptions.d.ts.map +1 -0
- package/lib/config/presets/api-descriptions.js +24 -0
- package/lib/config/presets/api-descriptions.js.map +1 -0
- package/lib/config/presets/google.d.ts +3 -0
- package/lib/config/presets/google.d.ts.map +1 -0
- package/lib/config/presets/google.js +1086 -0
- package/lib/config/presets/google.js.map +1 -0
- package/lib/config/presets/inclusive-language.d.ts +3 -0
- package/lib/config/presets/inclusive-language.d.ts.map +1 -0
- package/lib/config/presets/inclusive-language.js +151 -0
- package/lib/config/presets/inclusive-language.js.map +1 -0
- package/lib/config/presets/index.d.ts +16 -0
- package/lib/config/presets/index.d.ts.map +1 -0
- package/lib/config/presets/index.js +38 -0
- package/lib/config/presets/index.js.map +1 -0
- package/lib/config/presets/markdoc.d.ts +3 -0
- package/lib/config/presets/markdoc.d.ts.map +1 -0
- package/lib/config/presets/markdoc.js +45 -0
- package/lib/config/presets/markdoc.js.map +1 -0
- package/lib/config/presets/markdown-relaxed.d.ts +3 -0
- package/lib/config/presets/markdown-relaxed.d.ts.map +1 -0
- package/lib/config/presets/markdown-relaxed.js +34 -0
- package/lib/config/presets/markdown-relaxed.js.map +1 -0
- package/lib/config/presets/markdown.d.ts +11 -0
- package/lib/config/presets/markdown.d.ts.map +1 -0
- package/lib/config/presets/markdown.js +73 -0
- package/lib/config/presets/markdown.js.map +1 -0
- package/lib/config/presets/microsoft.d.ts +3 -0
- package/lib/config/presets/microsoft.d.ts.map +1 -0
- package/lib/config/presets/microsoft.js +1260 -0
- package/lib/config/presets/microsoft.js.map +1 -0
- package/lib/config/presets/minimal.d.ts +3 -0
- package/lib/config/presets/minimal.d.ts.map +1 -0
- package/lib/config/presets/minimal.js +13 -0
- package/lib/config/presets/minimal.js.map +1 -0
- package/lib/config/presets/plain-language.d.ts +3 -0
- package/lib/config/presets/plain-language.d.ts.map +1 -0
- package/lib/config/presets/plain-language.js +175 -0
- package/lib/config/presets/plain-language.js.map +1 -0
- package/lib/config/presets/prose.d.ts +3 -0
- package/lib/config/presets/prose.d.ts.map +1 -0
- package/lib/config/presets/prose.js +60 -0
- package/lib/config/presets/prose.js.map +1 -0
- package/lib/config/presets/technical-english.d.ts +22 -0
- package/lib/config/presets/technical-english.d.ts.map +1 -0
- package/lib/config/presets/technical-english.js +61 -0
- package/lib/config/presets/technical-english.js.map +1 -0
- package/lib/config/resolve.d.ts +36 -0
- package/lib/config/resolve.d.ts.map +1 -0
- package/lib/config/resolve.js +106 -0
- package/lib/config/resolve.js.map +1 -0
- package/lib/config/schema.d.ts +215 -0
- package/lib/config/schema.d.ts.map +1 -0
- package/lib/config/schema.js +152 -0
- package/lib/config/schema.js.map +1 -0
- package/lib/config/validate.d.ts +19 -0
- package/lib/config/validate.d.ts.map +1 -0
- package/lib/config/validate.js +1049 -0
- package/lib/config/validate.js.map +1 -0
- package/lib/core/auto-fix.d.ts.map +1 -0
- package/lib/core/auto-fix.js +94 -0
- package/lib/core/auto-fix.js.map +1 -0
- package/lib/core/baseline.d.ts +43 -0
- package/lib/core/baseline.d.ts.map +1 -0
- package/lib/core/baseline.js +142 -0
- package/lib/core/baseline.js.map +1 -0
- package/lib/core/case-preserve.d.ts +11 -0
- package/lib/core/case-preserve.d.ts.map +1 -0
- package/lib/core/case-preserve.js +22 -0
- package/lib/core/case-preserve.js.map +1 -0
- package/lib/core/directives.d.ts.map +1 -0
- package/lib/core/directives.js +66 -0
- package/lib/core/directives.js.map +1 -0
- package/lib/core/files.d.ts +31 -0
- package/lib/core/files.d.ts.map +1 -0
- package/lib/core/files.js +184 -0
- package/lib/core/files.js.map +1 -0
- package/lib/core/inline-code.d.ts +33 -0
- package/lib/core/inline-code.d.ts.map +1 -0
- package/lib/core/inline-code.js +50 -0
- package/lib/core/inline-code.js.map +1 -0
- package/lib/core/line-endings.d.ts +13 -0
- package/lib/core/line-endings.d.ts.map +1 -0
- package/lib/core/line-endings.js +39 -0
- package/lib/core/line-endings.js.map +1 -0
- package/lib/core/markdoc-tags.d.ts +48 -0
- package/lib/core/markdoc-tags.d.ts.map +1 -0
- package/lib/core/markdoc-tags.js +102 -0
- package/lib/core/markdoc-tags.js.map +1 -0
- package/lib/core/prose-extract.d.ts +6 -0
- package/lib/core/prose-extract.d.ts.map +1 -0
- package/lib/core/prose-extract.js +71 -0
- package/lib/core/prose-extract.js.map +1 -0
- package/lib/core/readability.d.ts +17 -0
- package/lib/core/readability.d.ts.map +1 -0
- package/lib/core/readability.js +34 -0
- package/lib/core/readability.js.map +1 -0
- package/lib/core/rule-filters.d.ts +29 -0
- package/lib/core/rule-filters.d.ts.map +1 -0
- package/lib/core/rule-filters.js +88 -0
- package/lib/core/rule-filters.js.map +1 -0
- package/lib/core/runner.d.ts +60 -0
- package/lib/core/runner.d.ts.map +1 -0
- package/lib/core/runner.js +305 -0
- package/lib/core/runner.js.map +1 -0
- package/lib/core/summary.d.ts +4 -0
- package/lib/core/summary.d.ts.map +1 -0
- package/lib/core/summary.js +37 -0
- package/lib/core/summary.js.map +1 -0
- package/lib/core/timing.d.ts +9 -0
- package/lib/core/timing.d.ts.map +1 -0
- package/lib/core/timing.js +19 -0
- package/lib/core/timing.js.map +1 -0
- package/lib/data/markdoc-realm-schema.d.ts.map +1 -0
- package/lib/data/markdoc-realm-schema.js +782 -0
- package/lib/data/markdoc-realm-schema.js.map +1 -0
- package/lib/data/proper-nouns.d.ts.map +1 -0
- package/lib/data/proper-nouns.js +42 -0
- package/lib/data/proper-nouns.js.map +1 -0
- package/lib/data/realm-front-matter-schema.d.ts +12 -0
- package/lib/data/realm-front-matter-schema.d.ts.map +1 -0
- package/lib/data/realm-front-matter-schema.js +51 -0
- package/lib/data/realm-front-matter-schema.js.map +1 -0
- package/lib/index.d.ts +81 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +114 -0
- package/lib/index.js.map +1 -0
- package/lib/metrics/formulas.d.ts +9 -0
- package/lib/metrics/formulas.d.ts.map +1 -0
- package/lib/metrics/formulas.js +59 -0
- package/lib/metrics/formulas.js.map +1 -0
- package/lib/metrics/statistics.d.ts +14 -0
- package/lib/metrics/statistics.d.ts.map +1 -0
- package/lib/metrics/statistics.js +35 -0
- package/lib/metrics/statistics.js.map +1 -0
- package/lib/parser/index.d.ts +13 -0
- package/lib/parser/index.d.ts.map +1 -0
- package/lib/parser/index.js +123 -0
- package/lib/parser/index.js.map +1 -0
- package/lib/parser/markdoc/extract-statics.d.ts +28 -0
- package/lib/parser/markdoc/extract-statics.d.ts.map +1 -0
- package/lib/parser/markdoc/extract-statics.js +80 -0
- package/lib/parser/markdoc/extract-statics.js.map +1 -0
- package/lib/parser/markdoc/pairing.d.ts +38 -0
- package/lib/parser/markdoc/pairing.d.ts.map +1 -0
- package/lib/parser/markdoc/pairing.js +77 -0
- package/lib/parser/markdoc/pairing.js.map +1 -0
- package/lib/parser/markdoc/schema.d.ts +56 -0
- package/lib/parser/markdoc/schema.d.ts.map +1 -0
- package/lib/parser/markdoc/schema.js +60 -0
- package/lib/parser/markdoc/schema.js.map +1 -0
- package/lib/parser/markdoc/span.d.ts +52 -0
- package/lib/parser/markdoc/span.d.ts.map +1 -0
- package/lib/parser/markdoc/span.js +577 -0
- package/lib/parser/markdoc/span.js.map +1 -0
- package/lib/parser/markdoc/structure.d.ts +17 -0
- package/lib/parser/markdoc/structure.d.ts.map +1 -0
- package/lib/parser/markdoc/structure.js +121 -0
- package/lib/parser/markdoc/structure.js.map +1 -0
- package/lib/parser/markdoc/syntax.d.ts +17 -0
- package/lib/parser/markdoc/syntax.d.ts.map +1 -0
- package/lib/parser/markdoc/syntax.js +262 -0
- package/lib/parser/markdoc/syntax.js.map +1 -0
- package/lib/parser/types.d.ts.map +1 -0
- package/lib/presets.d.ts +6 -0
- package/lib/presets.d.ts.map +1 -0
- package/lib/presets.js +12 -0
- package/lib/presets.js.map +1 -0
- package/lib/rules/registry.d.ts +13 -0
- package/lib/rules/registry.d.ts.map +1 -0
- package/lib/rules/registry.js +54 -0
- package/lib/rules/registry.js.map +1 -0
- package/lib/rules/scope/capitalization.d.ts.map +1 -0
- package/lib/rules/scope/capitalization.js +128 -0
- package/lib/rules/scope/capitalization.js.map +1 -0
- package/lib/rules/scope/conditional.d.ts.map +1 -0
- package/lib/rules/scope/conditional.js +93 -0
- package/lib/rules/scope/conditional.js.map +1 -0
- package/lib/rules/scope/consistency.d.ts.map +1 -0
- package/lib/rules/scope/consistency.js +118 -0
- package/lib/rules/scope/consistency.js.map +1 -0
- package/lib/rules/scope/length.d.ts.map +1 -0
- package/lib/rules/scope/length.js +50 -0
- package/lib/rules/scope/length.js.map +1 -0
- package/lib/rules/scope/max-image-size.d.ts.map +1 -0
- package/lib/rules/scope/max-image-size.js +55 -0
- package/lib/rules/scope/max-image-size.js.map +1 -0
- package/lib/rules/scope/metric.d.ts +3 -0
- package/lib/rules/scope/metric.d.ts.map +1 -0
- package/lib/rules/scope/metric.js +59 -0
- package/lib/rules/scope/metric.js.map +1 -0
- package/lib/rules/scope/occurrence.d.ts.map +1 -0
- package/lib/rules/scope/occurrence.js +41 -0
- package/lib/rules/scope/occurrence.js.map +1 -0
- package/lib/rules/scope/pattern.d.ts.map +1 -0
- package/lib/rules/scope/pattern.js +58 -0
- package/lib/rules/scope/pattern.js.map +1 -0
- package/lib/rules/scope/repetition.d.ts.map +1 -0
- package/lib/rules/scope/repetition.js +134 -0
- package/lib/rules/scope/repetition.js.map +1 -0
- package/lib/rules/scope/semantic-line-breaks.d.ts.map +1 -0
- package/lib/rules/scope/semantic-line-breaks.js +180 -0
- package/lib/rules/scope/semantic-line-breaks.js.map +1 -0
- package/lib/rules/scope/spelling.d.ts +11 -0
- package/lib/rules/scope/spelling.d.ts.map +1 -0
- package/lib/rules/scope/spelling.js +146 -0
- package/lib/rules/scope/spelling.js.map +1 -0
- package/lib/rules/scope/swap.d.ts.map +1 -0
- package/lib/rules/scope/swap.js +111 -0
- package/lib/rules/scope/swap.js.map +1 -0
- package/lib/rules/scope/title-case.d.ts +24 -0
- package/lib/rules/scope/title-case.d.ts.map +1 -0
- package/lib/rules/scope/title-case.js +216 -0
- package/lib/rules/scope/title-case.js.map +1 -0
- package/lib/rules/token/blanks-around-fences.d.ts.map +1 -0
- package/lib/rules/token/blanks-around-fences.js.map +1 -0
- package/lib/rules/token/blanks-around-headings.d.ts.map +1 -0
- package/lib/rules/token/blanks-around-headings.js +96 -0
- package/lib/rules/token/blanks-around-headings.js.map +1 -0
- package/lib/rules/token/blanks-around-lists.d.ts.map +1 -0
- package/lib/rules/token/blanks-around-lists.js +48 -0
- package/lib/rules/token/blanks-around-lists.js.map +1 -0
- package/lib/rules/token/blanks-around-tables.d.ts.map +1 -0
- package/lib/rules/token/blanks-around-tables.js +40 -0
- package/lib/rules/token/blanks-around-tables.js.map +1 -0
- package/lib/rules/token/code-block-style.d.ts.map +1 -0
- package/lib/rules/token/code-block-style.js.map +1 -0
- package/lib/rules/token/code-fence-style.d.ts.map +1 -0
- package/lib/rules/token/code-fence-style.js.map +1 -0
- package/lib/rules/token/commands-show-output.d.ts.map +1 -0
- package/lib/rules/token/commands-show-output.js.map +1 -0
- package/lib/rules/token/descriptive-link-text.d.ts.map +1 -0
- package/lib/rules/token/descriptive-link-text.js +46 -0
- package/lib/rules/token/descriptive-link-text.js.map +1 -0
- package/lib/rules/token/fenced-code-language.d.ts.map +1 -0
- package/lib/rules/token/fenced-code-language.js.map +1 -0
- package/lib/rules/token/first-line-h1.d.ts.map +1 -0
- package/lib/rules/token/first-line-h1.js +83 -0
- package/lib/rules/token/first-line-h1.js.map +1 -0
- package/lib/rules/token/front-matter.d.ts.map +1 -0
- package/lib/rules/token/front-matter.js +169 -0
- package/lib/rules/token/front-matter.js.map +1 -0
- package/lib/rules/token/heading-increment.d.ts.map +1 -0
- package/lib/rules/token/heading-increment.js +26 -0
- package/lib/rules/token/heading-increment.js.map +1 -0
- package/lib/rules/token/heading-start-left.d.ts.map +1 -0
- package/lib/rules/token/heading-start-left.js.map +1 -0
- package/lib/rules/token/heading-style.d.ts.map +1 -0
- package/lib/rules/token/heading-style.js.map +1 -0
- package/lib/rules/token/helpers.d.ts +115 -0
- package/lib/rules/token/helpers.d.ts.map +1 -0
- package/lib/rules/token/helpers.js +502 -0
- package/lib/rules/token/helpers.js.map +1 -0
- package/lib/rules/token/hr-style.d.ts.map +1 -0
- package/lib/rules/token/hr-style.js.map +1 -0
- package/lib/rules/token/index.d.ts +65 -0
- package/lib/rules/token/index.d.ts.map +1 -0
- package/lib/rules/token/index.js +157 -0
- package/lib/rules/token/index.js.map +1 -0
- package/lib/rules/token/line-length.d.ts.map +1 -0
- package/lib/rules/token/line-length.js +96 -0
- package/lib/rules/token/line-length.js.map +1 -0
- package/lib/rules/token/link-fragments.d.ts.map +1 -0
- package/lib/rules/token/link-fragments.js +398 -0
- package/lib/rules/token/link-fragments.js.map +1 -0
- package/lib/rules/token/link-image-reference-definitions.d.ts.map +1 -0
- package/lib/rules/token/link-image-reference-definitions.js.map +1 -0
- package/lib/rules/token/link-image-style.d.ts.map +1 -0
- package/lib/rules/token/link-image-style.js +138 -0
- package/lib/rules/token/link-image-style.js.map +1 -0
- package/lib/rules/token/list-indent.d.ts.map +1 -0
- package/lib/rules/token/list-indent.js.map +1 -0
- package/lib/rules/token/list-length.d.ts.map +1 -0
- package/lib/rules/token/list-length.js +31 -0
- package/lib/rules/token/list-length.js.map +1 -0
- package/lib/rules/token/list-marker-space.d.ts.map +1 -0
- package/lib/rules/token/list-marker-space.js.map +1 -0
- package/lib/rules/token/markdoc-attributes.d.ts.map +1 -0
- package/lib/rules/token/markdoc-attributes.js +198 -0
- package/lib/rules/token/markdoc-attributes.js.map +1 -0
- package/lib/rules/token/markdoc-pairing.d.ts.map +1 -0
- package/lib/rules/token/markdoc-pairing.js +65 -0
- package/lib/rules/token/markdoc-pairing.js.map +1 -0
- package/lib/rules/token/markdoc-syntax.d.ts.map +1 -0
- package/lib/rules/token/markdoc-syntax.js +84 -0
- package/lib/rules/token/markdoc-syntax.js.map +1 -0
- package/lib/rules/token/markdoc-unknown-tag.d.ts.map +1 -0
- package/lib/rules/token/markdoc-unknown-tag.js +44 -0
- package/lib/rules/token/markdoc-unknown-tag.js.map +1 -0
- package/lib/rules/token/no-alt-text.d.ts.map +1 -0
- package/lib/rules/token/no-alt-text.js +43 -0
- package/lib/rules/token/no-alt-text.js.map +1 -0
- package/lib/rules/token/no-bare-urls.d.ts.map +1 -0
- package/lib/rules/token/no-bare-urls.js +74 -0
- package/lib/rules/token/no-bare-urls.js.map +1 -0
- package/lib/rules/token/no-blanks-blockquote.d.ts.map +1 -0
- package/lib/rules/token/no-blanks-blockquote.js.map +1 -0
- package/lib/rules/token/no-duplicate-heading.d.ts.map +1 -0
- package/lib/rules/token/no-duplicate-heading.js +89 -0
- package/lib/rules/token/no-duplicate-heading.js.map +1 -0
- package/lib/rules/token/no-duplicate-link-destinations.d.ts.map +1 -0
- package/lib/rules/token/no-duplicate-link-destinations.js +54 -0
- package/lib/rules/token/no-duplicate-link-destinations.js.map +1 -0
- package/lib/rules/token/no-emphasis-as-heading.d.ts.map +1 -0
- package/lib/rules/token/no-emphasis-as-heading.js +39 -0
- package/lib/rules/token/no-emphasis-as-heading.js.map +1 -0
- package/lib/rules/token/no-empty-headings.d.ts.map +1 -0
- package/lib/rules/token/no-empty-headings.js +21 -0
- package/lib/rules/token/no-empty-headings.js.map +1 -0
- package/lib/rules/token/no-empty-links.d.ts.map +1 -0
- package/lib/rules/token/no-empty-links.js.map +1 -0
- package/lib/rules/token/no-hard-tabs.d.ts.map +1 -0
- package/lib/rules/token/no-hard-tabs.js.map +1 -0
- package/lib/rules/token/no-inline-html.d.ts.map +1 -0
- package/lib/rules/token/no-inline-html.js +41 -0
- package/lib/rules/token/no-inline-html.js.map +1 -0
- package/lib/rules/token/no-multiple-blanks.d.ts.map +1 -0
- package/lib/rules/token/no-multiple-blanks.js.map +1 -0
- package/lib/rules/token/no-multiple-space-atx.d.ts +9 -0
- package/lib/rules/token/no-multiple-space-atx.d.ts.map +1 -0
- package/lib/rules/token/no-multiple-space-atx.js +46 -0
- package/lib/rules/token/no-multiple-space-atx.js.map +1 -0
- package/lib/rules/token/no-multiple-space-closed-atx.d.ts.map +1 -0
- package/lib/rules/token/no-multiple-space-closed-atx.js.map +1 -0
- package/lib/rules/token/no-reversed-links.d.ts.map +1 -0
- package/lib/rules/token/no-reversed-links.js.map +1 -0
- package/lib/rules/token/no-space-in-code.d.ts.map +1 -0
- package/lib/rules/token/no-space-in-code.js.map +1 -0
- package/lib/rules/token/no-space-in-emphasis.d.ts.map +1 -0
- package/lib/rules/token/no-space-in-emphasis.js +72 -0
- package/lib/rules/token/no-space-in-emphasis.js.map +1 -0
- package/lib/rules/token/no-space-in-links.d.ts.map +1 -0
- package/lib/rules/token/no-space-in-links.js.map +1 -0
- package/lib/rules/token/no-trailing-punctuation.d.ts.map +1 -0
- package/lib/rules/token/no-trailing-punctuation.js.map +1 -0
- package/lib/rules/token/no-trailing-spaces.d.ts.map +1 -0
- package/lib/rules/token/no-trailing-spaces.js.map +1 -0
- package/lib/rules/token/ol-prefix.d.ts.map +1 -0
- package/lib/rules/token/ol-prefix.js.map +1 -0
- package/lib/rules/token/proper-names.d.ts.map +1 -0
- package/lib/rules/token/proper-names.js +87 -0
- package/lib/rules/token/proper-names.js.map +1 -0
- package/lib/rules/token/reference-links-images.d.ts.map +1 -0
- package/lib/rules/token/reference-links-images.js.map +1 -0
- package/lib/rules/token/required-headings.d.ts.map +1 -0
- package/lib/rules/token/required-headings.js +73 -0
- package/lib/rules/token/required-headings.js.map +1 -0
- package/lib/rules/token/single-h1.d.ts.map +1 -0
- package/lib/rules/token/single-h1.js +43 -0
- package/lib/rules/token/single-h1.js.map +1 -0
- package/lib/rules/token/table-column-count.d.ts.map +1 -0
- package/lib/rules/token/table-column-count.js.map +1 -0
- package/lib/rules/token/table-column-style.d.ts.map +1 -0
- package/lib/rules/token/table-column-style.js +162 -0
- package/lib/rules/token/table-column-style.js.map +1 -0
- package/lib/rules/token/table-pipe-style.d.ts.map +1 -0
- package/lib/rules/token/table-pipe-style.js.map +1 -0
- package/lib/rules/token/ul-indent.d.ts.map +1 -0
- package/lib/rules/token/ul-indent.js.map +1 -0
- package/lib/rules/token/ul-style.d.ts.map +1 -0
- package/lib/rules/token/ul-style.js +70 -0
- package/lib/rules/token/ul-style.js.map +1 -0
- package/lib/rules/types.d.ts +62 -0
- package/lib/rules/types.d.ts.map +1 -0
- package/lib/rules/utils.d.ts +18 -0
- package/lib/rules/utils.d.ts.map +1 -0
- package/lib/rules/utils.js +75 -0
- package/lib/rules/utils.js.map +1 -0
- package/lib/scopes/extractor.d.ts +6 -0
- package/lib/scopes/extractor.d.ts.map +1 -0
- package/lib/scopes/extractor.js +398 -0
- package/lib/scopes/extractor.js.map +1 -0
- package/lib/scopes/selector.d.ts +26 -0
- package/lib/scopes/selector.d.ts.map +1 -0
- package/lib/scopes/selector.js +78 -0
- package/lib/scopes/selector.js.map +1 -0
- package/lib/scopes/sentences.d.ts +13 -0
- package/lib/scopes/sentences.d.ts.map +1 -0
- package/lib/scopes/sentences.js +237 -0
- package/lib/scopes/sentences.js.map +1 -0
- package/lib/scopes/types.d.ts +35 -0
- package/lib/scopes/types.d.ts.map +1 -0
- package/lib/scopes/vocabulary.d.ts +12 -0
- package/lib/scopes/vocabulary.d.ts.map +1 -0
- package/lib/scopes/vocabulary.js +56 -0
- package/lib/scopes/vocabulary.js.map +1 -0
- package/lib/types/assertions.d.ts +97 -0
- package/lib/types/assertions.d.ts.map +1 -0
- package/lib/types/reporting.d.ts +23 -0
- package/lib/types/reporting.d.ts.map +1 -0
- package/lib/types/rules.d.ts +53 -0
- package/lib/types/rules.d.ts.map +1 -0
- package/lib/types/validation.d.ts +5 -0
- package/lib/types/validation.d.ts.map +1 -0
- package/lib/utils/is-plain-object.d.ts +2 -0
- package/lib/utils/is-plain-object.d.ts.map +1 -0
- package/lib/utils/is-plain-object.js +5 -0
- package/lib/utils/is-plain-object.js.map +1 -0
- package/package.json +58 -61
- package/presets/google/PROVENANCE.md +217 -221
- package/presets/inclusive-language/PROVENANCE.md +20 -19
- package/presets/microsoft/PROVENANCE.md +242 -243
- package/presets/plain-language/PROVENANCE.md +66 -60
- package/presets/technical-english/PROVENANCE.md +5 -5
- package/skills/recheck-config/SKILL.md +70 -20
- package/skills/recheck-lint/SKILL.md +37 -13
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -228
- package/dist/cli.js.map +0 -1
- package/dist/commands/baseline.d.ts +0 -10
- package/dist/commands/baseline.d.ts.map +0 -1
- package/dist/commands/baseline.js +0 -59
- package/dist/commands/baseline.js.map +0 -1
- package/dist/commands/markdoc-schema.d.ts +0 -17
- package/dist/commands/markdoc-schema.d.ts.map +0 -1
- package/dist/commands/markdoc-schema.js +0 -127
- package/dist/commands/markdoc-schema.js.map +0 -1
- package/dist/commands/readability.d.ts +0 -10
- package/dist/commands/readability.d.ts.map +0 -1
- package/dist/commands/readability.js +0 -90
- package/dist/commands/readability.js.map +0 -1
- package/dist/commands/run.d.ts +0 -21
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -236
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -8
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -43
- package/dist/commands/validate.js.map +0 -1
- package/dist/config/load.d.ts +0 -33
- package/dist/config/load.d.ts.map +0 -1
- package/dist/config/load.js +0 -98
- package/dist/config/load.js.map +0 -1
- package/dist/config/presets/api-descriptions.d.ts +0 -8
- package/dist/config/presets/api-descriptions.d.ts.map +0 -1
- package/dist/config/presets/api-descriptions.js +0 -24
- package/dist/config/presets/api-descriptions.js.map +0 -1
- package/dist/config/presets/google.d.ts +0 -3
- package/dist/config/presets/google.d.ts.map +0 -1
- package/dist/config/presets/google.js +0 -1671
- package/dist/config/presets/google.js.map +0 -1
- package/dist/config/presets/inclusive-language.d.ts +0 -3
- package/dist/config/presets/inclusive-language.d.ts.map +0 -1
- package/dist/config/presets/inclusive-language.js +0 -321
- package/dist/config/presets/inclusive-language.js.map +0 -1
- package/dist/config/presets/index.d.ts +0 -67
- package/dist/config/presets/index.d.ts.map +0 -1
- package/dist/config/presets/index.js +0 -141
- package/dist/config/presets/index.js.map +0 -1
- package/dist/config/presets/markdoc.d.ts +0 -21
- package/dist/config/presets/markdoc.d.ts.map +0 -1
- package/dist/config/presets/markdoc.js +0 -101
- package/dist/config/presets/markdoc.js.map +0 -1
- package/dist/config/presets/markdown-relaxed.d.ts +0 -3
- package/dist/config/presets/markdown-relaxed.d.ts.map +0 -1
- package/dist/config/presets/markdown-relaxed.js +0 -98
- package/dist/config/presets/markdown-relaxed.js.map +0 -1
- package/dist/config/presets/markdown.d.ts +0 -43
- package/dist/config/presets/markdown.d.ts.map +0 -1
- package/dist/config/presets/markdown.js +0 -132
- package/dist/config/presets/markdown.js.map +0 -1
- package/dist/config/presets/microsoft.d.ts +0 -3
- package/dist/config/presets/microsoft.d.ts.map +0 -1
- package/dist/config/presets/microsoft.js +0 -2268
- package/dist/config/presets/microsoft.js.map +0 -1
- package/dist/config/presets/minimal.d.ts +0 -3
- package/dist/config/presets/minimal.d.ts.map +0 -1
- package/dist/config/presets/minimal.js +0 -21
- package/dist/config/presets/minimal.js.map +0 -1
- package/dist/config/presets/plain-language.d.ts +0 -3
- package/dist/config/presets/plain-language.d.ts.map +0 -1
- package/dist/config/presets/plain-language.js +0 -351
- package/dist/config/presets/plain-language.js.map +0 -1
- package/dist/config/presets/prose.d.ts +0 -52
- package/dist/config/presets/prose.d.ts.map +0 -1
- package/dist/config/presets/prose.js +0 -138
- package/dist/config/presets/prose.js.map +0 -1
- package/dist/config/presets/technical-english.d.ts +0 -34
- package/dist/config/presets/technical-english.d.ts.map +0 -1
- package/dist/config/presets/technical-english.js +0 -79
- package/dist/config/presets/technical-english.js.map +0 -1
- package/dist/config/schema.d.ts +0 -226
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js +0 -196
- package/dist/config/schema.js.map +0 -1
- package/dist/config/validate.d.ts +0 -22
- package/dist/config/validate.d.ts.map +0 -1
- package/dist/config/validate.js +0 -1315
- package/dist/config/validate.js.map +0 -1
- package/dist/core/auto-fix.d.ts.map +0 -1
- package/dist/core/auto-fix.js +0 -101
- package/dist/core/auto-fix.js.map +0 -1
- package/dist/core/baseline.d.ts +0 -49
- package/dist/core/baseline.d.ts.map +0 -1
- package/dist/core/baseline.js +0 -0
- package/dist/core/baseline.js.map +0 -1
- package/dist/core/case-preserve.d.ts +0 -46
- package/dist/core/case-preserve.d.ts.map +0 -1
- package/dist/core/case-preserve.js +0 -57
- package/dist/core/case-preserve.js.map +0 -1
- package/dist/core/directives.d.ts.map +0 -1
- package/dist/core/directives.js +0 -73
- package/dist/core/directives.js.map +0 -1
- package/dist/core/files.d.ts +0 -69
- package/dist/core/files.d.ts.map +0 -1
- package/dist/core/files.js +0 -260
- package/dist/core/files.js.map +0 -1
- package/dist/core/inline-code.d.ts +0 -87
- package/dist/core/inline-code.d.ts.map +0 -1
- package/dist/core/inline-code.js +0 -104
- package/dist/core/inline-code.js.map +0 -1
- package/dist/core/line-endings.d.ts +0 -32
- package/dist/core/line-endings.d.ts.map +0 -1
- package/dist/core/line-endings.js +0 -65
- package/dist/core/line-endings.js.map +0 -1
- package/dist/core/markdoc-tags.d.ts +0 -79
- package/dist/core/markdoc-tags.d.ts.map +0 -1
- package/dist/core/markdoc-tags.js +0 -131
- package/dist/core/markdoc-tags.js.map +0 -1
- package/dist/core/prose-extract.d.ts +0 -6
- package/dist/core/prose-extract.d.ts.map +0 -1
- package/dist/core/prose-extract.js +0 -79
- package/dist/core/prose-extract.js.map +0 -1
- package/dist/core/readability.d.ts +0 -17
- package/dist/core/readability.d.ts.map +0 -1
- package/dist/core/readability.js +0 -37
- package/dist/core/readability.js.map +0 -1
- package/dist/core/rule-filters.d.ts +0 -45
- package/dist/core/rule-filters.d.ts.map +0 -1
- package/dist/core/rule-filters.js +0 -118
- package/dist/core/rule-filters.js.map +0 -1
- package/dist/core/runner.d.ts +0 -98
- package/dist/core/runner.d.ts.map +0 -1
- package/dist/core/runner.js +0 -401
- package/dist/core/runner.js.map +0 -1
- package/dist/core/timing.d.ts +0 -24
- package/dist/core/timing.d.ts.map +0 -1
- package/dist/core/timing.js +0 -39
- package/dist/core/timing.js.map +0 -1
- package/dist/data/markdoc-realm-schema.d.ts.map +0 -1
- package/dist/data/markdoc-realm-schema.js +0 -798
- package/dist/data/markdoc-realm-schema.js.map +0 -1
- package/dist/data/proper-nouns.d.ts.map +0 -1
- package/dist/data/proper-nouns.js +0 -47
- package/dist/data/proper-nouns.js.map +0 -1
- package/dist/data/realm-front-matter-schema.d.ts +0 -28
- package/dist/data/realm-front-matter-schema.d.ts.map +0 -1
- package/dist/data/realm-front-matter-schema.js +0 -73
- package/dist/data/realm-front-matter-schema.js.map +0 -1
- package/dist/index.d.ts +0 -90
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -152
- package/dist/index.js.map +0 -1
- package/dist/metrics/formulas.d.ts +0 -17
- package/dist/metrics/formulas.d.ts.map +0 -1
- package/dist/metrics/formulas.js +0 -70
- package/dist/metrics/formulas.js.map +0 -1
- package/dist/metrics/statistics.d.ts +0 -27
- package/dist/metrics/statistics.d.ts.map +0 -1
- package/dist/metrics/statistics.js +0 -56
- package/dist/metrics/statistics.js.map +0 -1
- package/dist/parser/index.d.ts +0 -19
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -174
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/markdoc/extract-statics.d.ts +0 -45
- package/dist/parser/markdoc/extract-statics.d.ts.map +0 -1
- package/dist/parser/markdoc/extract-statics.js +0 -139
- package/dist/parser/markdoc/extract-statics.js.map +0 -1
- package/dist/parser/markdoc/pairing.d.ts +0 -63
- package/dist/parser/markdoc/pairing.d.ts.map +0 -1
- package/dist/parser/markdoc/pairing.js +0 -94
- package/dist/parser/markdoc/pairing.js.map +0 -1
- package/dist/parser/markdoc/schema.d.ts +0 -85
- package/dist/parser/markdoc/schema.d.ts.map +0 -1
- package/dist/parser/markdoc/schema.js +0 -86
- package/dist/parser/markdoc/schema.js.map +0 -1
- package/dist/parser/markdoc/span.d.ts +0 -64
- package/dist/parser/markdoc/span.d.ts.map +0 -1
- package/dist/parser/markdoc/span.js +0 -729
- package/dist/parser/markdoc/span.js.map +0 -1
- package/dist/parser/markdoc/structure.d.ts +0 -28
- package/dist/parser/markdoc/structure.d.ts.map +0 -1
- package/dist/parser/markdoc/structure.js +0 -153
- package/dist/parser/markdoc/structure.js.map +0 -1
- package/dist/parser/markdoc/syntax.d.ts +0 -44
- package/dist/parser/markdoc/syntax.d.ts.map +0 -1
- package/dist/parser/markdoc/syntax.js +0 -317
- package/dist/parser/markdoc/syntax.js.map +0 -1
- package/dist/parser/types.d.ts.map +0 -1
- package/dist/reporter/fixes.d.ts +0 -3
- package/dist/reporter/fixes.d.ts.map +0 -1
- package/dist/reporter/fixes.js +0 -41
- package/dist/reporter/fixes.js.map +0 -1
- package/dist/reporter/formats/github-actions.d.ts +0 -6
- package/dist/reporter/formats/github-actions.d.ts.map +0 -1
- package/dist/reporter/formats/github-actions.js +0 -20
- package/dist/reporter/formats/github-actions.js.map +0 -1
- package/dist/reporter/formats/json.d.ts +0 -10
- package/dist/reporter/formats/json.d.ts.map +0 -1
- package/dist/reporter/formats/json.js +0 -25
- package/dist/reporter/formats/json.js.map +0 -1
- package/dist/reporter/formats/sarif.d.ts +0 -10
- package/dist/reporter/formats/sarif.d.ts.map +0 -1
- package/dist/reporter/formats/sarif.js +0 -66
- package/dist/reporter/formats/sarif.js.map +0 -1
- package/dist/reporter/formats/table.d.ts +0 -6
- package/dist/reporter/formats/table.d.ts.map +0 -1
- package/dist/reporter/formats/table.js +0 -43
- package/dist/reporter/formats/table.js.map +0 -1
- package/dist/reporter/index.d.ts +0 -10
- package/dist/reporter/index.d.ts.map +0 -1
- package/dist/reporter/index.js +0 -42
- package/dist/reporter/index.js.map +0 -1
- package/dist/reporter/prioritize-problems.d.ts +0 -7
- package/dist/reporter/prioritize-problems.d.ts.map +0 -1
- package/dist/reporter/prioritize-problems.js +0 -29
- package/dist/reporter/prioritize-problems.js.map +0 -1
- package/dist/reporter/statistics.d.ts +0 -10
- package/dist/reporter/statistics.d.ts.map +0 -1
- package/dist/reporter/statistics.js +0 -52
- package/dist/reporter/statistics.js.map +0 -1
- package/dist/reporter/summary.d.ts +0 -10
- package/dist/reporter/summary.d.ts.map +0 -1
- package/dist/reporter/summary.js +0 -49
- package/dist/reporter/summary.js.map +0 -1
- package/dist/rules/registry.d.ts +0 -15
- package/dist/rules/registry.d.ts.map +0 -1
- package/dist/rules/registry.js +0 -81
- package/dist/rules/registry.js.map +0 -1
- package/dist/rules/scope/capitalization.d.ts.map +0 -1
- package/dist/rules/scope/capitalization.js +0 -164
- package/dist/rules/scope/capitalization.js.map +0 -1
- package/dist/rules/scope/conditional.d.ts.map +0 -1
- package/dist/rules/scope/conditional.js +0 -112
- package/dist/rules/scope/conditional.js.map +0 -1
- package/dist/rules/scope/consistency.d.ts.map +0 -1
- package/dist/rules/scope/consistency.js +0 -179
- package/dist/rules/scope/consistency.js.map +0 -1
- package/dist/rules/scope/length.d.ts.map +0 -1
- package/dist/rules/scope/length.js +0 -73
- package/dist/rules/scope/length.js.map +0 -1
- package/dist/rules/scope/max-image-size.d.ts.map +0 -1
- package/dist/rules/scope/max-image-size.js +0 -65
- package/dist/rules/scope/max-image-size.js.map +0 -1
- package/dist/rules/scope/metric.d.ts +0 -5
- package/dist/rules/scope/metric.d.ts.map +0 -1
- package/dist/rules/scope/metric.js +0 -74
- package/dist/rules/scope/metric.js.map +0 -1
- package/dist/rules/scope/occurrence.d.ts.map +0 -1
- package/dist/rules/scope/occurrence.js +0 -48
- package/dist/rules/scope/occurrence.js.map +0 -1
- package/dist/rules/scope/pattern.d.ts.map +0 -1
- package/dist/rules/scope/pattern.js +0 -75
- package/dist/rules/scope/pattern.js.map +0 -1
- package/dist/rules/scope/repetition.d.ts.map +0 -1
- package/dist/rules/scope/repetition.js +0 -139
- package/dist/rules/scope/repetition.js.map +0 -1
- package/dist/rules/scope/semantic-line-breaks.d.ts.map +0 -1
- package/dist/rules/scope/semantic-line-breaks.js +0 -236
- package/dist/rules/scope/semantic-line-breaks.js.map +0 -1
- package/dist/rules/scope/spelling.d.ts +0 -27
- package/dist/rules/scope/spelling.d.ts.map +0 -1
- package/dist/rules/scope/spelling.js +0 -227
- package/dist/rules/scope/spelling.js.map +0 -1
- package/dist/rules/scope/swap.d.ts.map +0 -1
- package/dist/rules/scope/swap.js +0 -149
- package/dist/rules/scope/swap.js.map +0 -1
- package/dist/rules/scope/title-case.d.ts +0 -46
- package/dist/rules/scope/title-case.d.ts.map +0 -1
- package/dist/rules/scope/title-case.js +0 -301
- package/dist/rules/scope/title-case.js.map +0 -1
- package/dist/rules/token/blanks-around-fences.d.ts.map +0 -1
- package/dist/rules/token/blanks-around-fences.js.map +0 -1
- package/dist/rules/token/blanks-around-headings.d.ts.map +0 -1
- package/dist/rules/token/blanks-around-headings.js +0 -108
- package/dist/rules/token/blanks-around-headings.js.map +0 -1
- package/dist/rules/token/blanks-around-lists.d.ts.map +0 -1
- package/dist/rules/token/blanks-around-lists.js +0 -56
- package/dist/rules/token/blanks-around-lists.js.map +0 -1
- package/dist/rules/token/blanks-around-tables.d.ts.map +0 -1
- package/dist/rules/token/blanks-around-tables.js +0 -42
- package/dist/rules/token/blanks-around-tables.js.map +0 -1
- package/dist/rules/token/code-block-style.d.ts.map +0 -1
- package/dist/rules/token/code-block-style.js.map +0 -1
- package/dist/rules/token/code-fence-style.d.ts.map +0 -1
- package/dist/rules/token/code-fence-style.js.map +0 -1
- package/dist/rules/token/commands-show-output.d.ts.map +0 -1
- package/dist/rules/token/commands-show-output.js.map +0 -1
- package/dist/rules/token/descriptive-link-text.d.ts.map +0 -1
- package/dist/rules/token/descriptive-link-text.js +0 -53
- package/dist/rules/token/descriptive-link-text.js.map +0 -1
- package/dist/rules/token/fenced-code-language.d.ts.map +0 -1
- package/dist/rules/token/fenced-code-language.js.map +0 -1
- package/dist/rules/token/first-line-h1.d.ts.map +0 -1
- package/dist/rules/token/first-line-h1.js +0 -107
- package/dist/rules/token/first-line-h1.js.map +0 -1
- package/dist/rules/token/front-matter.d.ts.map +0 -1
- package/dist/rules/token/front-matter.js +0 -177
- package/dist/rules/token/front-matter.js.map +0 -1
- package/dist/rules/token/heading-increment.d.ts.map +0 -1
- package/dist/rules/token/heading-increment.js +0 -27
- package/dist/rules/token/heading-increment.js.map +0 -1
- package/dist/rules/token/heading-start-left.d.ts.map +0 -1
- package/dist/rules/token/heading-start-left.js.map +0 -1
- package/dist/rules/token/heading-style.d.ts.map +0 -1
- package/dist/rules/token/heading-style.js.map +0 -1
- package/dist/rules/token/helpers.d.ts +0 -313
- package/dist/rules/token/helpers.d.ts.map +0 -1
- package/dist/rules/token/helpers.js +0 -746
- package/dist/rules/token/helpers.js.map +0 -1
- package/dist/rules/token/hr-style.d.ts.map +0 -1
- package/dist/rules/token/hr-style.js.map +0 -1
- package/dist/rules/token/index.d.ts +0 -76
- package/dist/rules/token/index.d.ts.map +0 -1
- package/dist/rules/token/index.js +0 -229
- package/dist/rules/token/index.js.map +0 -1
- package/dist/rules/token/line-length.d.ts.map +0 -1
- package/dist/rules/token/line-length.js +0 -120
- package/dist/rules/token/line-length.js.map +0 -1
- package/dist/rules/token/link-fragments.d.ts.map +0 -1
- package/dist/rules/token/link-fragments.js +0 -393
- package/dist/rules/token/link-fragments.js.map +0 -1
- package/dist/rules/token/link-image-reference-definitions.d.ts.map +0 -1
- package/dist/rules/token/link-image-reference-definitions.js.map +0 -1
- package/dist/rules/token/link-image-style.d.ts.map +0 -1
- package/dist/rules/token/link-image-style.js +0 -131
- package/dist/rules/token/link-image-style.js.map +0 -1
- package/dist/rules/token/list-indent.d.ts.map +0 -1
- package/dist/rules/token/list-indent.js.map +0 -1
- package/dist/rules/token/list-length.d.ts.map +0 -1
- package/dist/rules/token/list-length.js +0 -55
- package/dist/rules/token/list-length.js.map +0 -1
- package/dist/rules/token/list-marker-space.d.ts.map +0 -1
- package/dist/rules/token/list-marker-space.js.map +0 -1
- package/dist/rules/token/markdoc-attributes.d.ts.map +0 -1
- package/dist/rules/token/markdoc-attributes.js +0 -269
- package/dist/rules/token/markdoc-attributes.js.map +0 -1
- package/dist/rules/token/markdoc-pairing.d.ts.map +0 -1
- package/dist/rules/token/markdoc-pairing.js +0 -73
- package/dist/rules/token/markdoc-pairing.js.map +0 -1
- package/dist/rules/token/markdoc-syntax.d.ts.map +0 -1
- package/dist/rules/token/markdoc-syntax.js +0 -119
- package/dist/rules/token/markdoc-syntax.js.map +0 -1
- package/dist/rules/token/markdoc-unknown-tag.d.ts.map +0 -1
- package/dist/rules/token/markdoc-unknown-tag.js +0 -64
- package/dist/rules/token/markdoc-unknown-tag.js.map +0 -1
- package/dist/rules/token/no-alt-text.d.ts.map +0 -1
- package/dist/rules/token/no-alt-text.js +0 -47
- package/dist/rules/token/no-alt-text.js.map +0 -1
- package/dist/rules/token/no-bare-urls.d.ts.map +0 -1
- package/dist/rules/token/no-bare-urls.js +0 -88
- package/dist/rules/token/no-bare-urls.js.map +0 -1
- package/dist/rules/token/no-blanks-blockquote.d.ts.map +0 -1
- package/dist/rules/token/no-blanks-blockquote.js.map +0 -1
- package/dist/rules/token/no-duplicate-heading.d.ts.map +0 -1
- package/dist/rules/token/no-duplicate-heading.js +0 -101
- package/dist/rules/token/no-duplicate-heading.js.map +0 -1
- package/dist/rules/token/no-duplicate-link-destinations.d.ts.map +0 -1
- package/dist/rules/token/no-duplicate-link-destinations.js +0 -65
- package/dist/rules/token/no-duplicate-link-destinations.js.map +0 -1
- package/dist/rules/token/no-emphasis-as-heading.d.ts.map +0 -1
- package/dist/rules/token/no-emphasis-as-heading.js +0 -44
- package/dist/rules/token/no-emphasis-as-heading.js.map +0 -1
- package/dist/rules/token/no-empty-headings.d.ts.map +0 -1
- package/dist/rules/token/no-empty-headings.js +0 -28
- package/dist/rules/token/no-empty-headings.js.map +0 -1
- package/dist/rules/token/no-empty-links.d.ts.map +0 -1
- package/dist/rules/token/no-empty-links.js.map +0 -1
- package/dist/rules/token/no-hard-tabs.d.ts.map +0 -1
- package/dist/rules/token/no-hard-tabs.js.map +0 -1
- package/dist/rules/token/no-inline-html.d.ts.map +0 -1
- package/dist/rules/token/no-inline-html.js +0 -45
- package/dist/rules/token/no-inline-html.js.map +0 -1
- package/dist/rules/token/no-multiple-blanks.d.ts.map +0 -1
- package/dist/rules/token/no-multiple-blanks.js.map +0 -1
- package/dist/rules/token/no-multiple-space-atx.d.ts +0 -13
- package/dist/rules/token/no-multiple-space-atx.d.ts.map +0 -1
- package/dist/rules/token/no-multiple-space-atx.js +0 -50
- package/dist/rules/token/no-multiple-space-atx.js.map +0 -1
- package/dist/rules/token/no-multiple-space-closed-atx.d.ts.map +0 -1
- package/dist/rules/token/no-multiple-space-closed-atx.js.map +0 -1
- package/dist/rules/token/no-reversed-links.d.ts.map +0 -1
- package/dist/rules/token/no-reversed-links.js.map +0 -1
- package/dist/rules/token/no-space-in-code.d.ts.map +0 -1
- package/dist/rules/token/no-space-in-code.js.map +0 -1
- package/dist/rules/token/no-space-in-emphasis.d.ts.map +0 -1
- package/dist/rules/token/no-space-in-emphasis.js +0 -79
- package/dist/rules/token/no-space-in-emphasis.js.map +0 -1
- package/dist/rules/token/no-space-in-links.d.ts.map +0 -1
- package/dist/rules/token/no-space-in-links.js.map +0 -1
- package/dist/rules/token/no-trailing-punctuation.d.ts.map +0 -1
- package/dist/rules/token/no-trailing-punctuation.js.map +0 -1
- package/dist/rules/token/no-trailing-spaces.d.ts.map +0 -1
- package/dist/rules/token/no-trailing-spaces.js.map +0 -1
- package/dist/rules/token/ol-prefix.d.ts.map +0 -1
- package/dist/rules/token/ol-prefix.js.map +0 -1
- package/dist/rules/token/proper-names.d.ts.map +0 -1
- package/dist/rules/token/proper-names.js +0 -93
- package/dist/rules/token/proper-names.js.map +0 -1
- package/dist/rules/token/reference-links-images.d.ts.map +0 -1
- package/dist/rules/token/reference-links-images.js.map +0 -1
- package/dist/rules/token/required-headings.d.ts.map +0 -1
- package/dist/rules/token/required-headings.js +0 -83
- package/dist/rules/token/required-headings.js.map +0 -1
- package/dist/rules/token/single-h1.d.ts.map +0 -1
- package/dist/rules/token/single-h1.js +0 -56
- package/dist/rules/token/single-h1.js.map +0 -1
- package/dist/rules/token/table-column-count.d.ts.map +0 -1
- package/dist/rules/token/table-column-count.js.map +0 -1
- package/dist/rules/token/table-column-style.d.ts.map +0 -1
- package/dist/rules/token/table-column-style.js +0 -179
- package/dist/rules/token/table-column-style.js.map +0 -1
- package/dist/rules/token/table-pipe-style.d.ts.map +0 -1
- package/dist/rules/token/table-pipe-style.js.map +0 -1
- package/dist/rules/token/ul-indent.d.ts.map +0 -1
- package/dist/rules/token/ul-indent.js.map +0 -1
- package/dist/rules/token/ul-style.d.ts.map +0 -1
- package/dist/rules/token/ul-style.js +0 -80
- package/dist/rules/token/ul-style.js.map +0 -1
- package/dist/rules/types.d.ts +0 -83
- package/dist/rules/types.d.ts.map +0 -1
- package/dist/rules/utils.d.ts +0 -31
- package/dist/rules/utils.d.ts.map +0 -1
- package/dist/rules/utils.js +0 -90
- package/dist/rules/utils.js.map +0 -1
- package/dist/scopes/extractor.d.ts +0 -7
- package/dist/scopes/extractor.d.ts.map +0 -1
- package/dist/scopes/extractor.js +0 -536
- package/dist/scopes/extractor.js.map +0 -1
- package/dist/scopes/selector.d.ts +0 -51
- package/dist/scopes/selector.d.ts.map +0 -1
- package/dist/scopes/selector.js +0 -121
- package/dist/scopes/selector.js.map +0 -1
- package/dist/scopes/sentences.d.ts +0 -15
- package/dist/scopes/sentences.d.ts.map +0 -1
- package/dist/scopes/sentences.js +0 -202
- package/dist/scopes/sentences.js.map +0 -1
- package/dist/scopes/types.d.ts +0 -46
- package/dist/scopes/types.d.ts.map +0 -1
- package/dist/scopes/vocabulary.d.ts +0 -16
- package/dist/scopes/vocabulary.d.ts.map +0 -1
- package/dist/scopes/vocabulary.js +0 -70
- package/dist/scopes/vocabulary.js.map +0 -1
- package/dist/types/assertions.d.ts +0 -121
- package/dist/types/assertions.d.ts.map +0 -1
- package/dist/types/reporting.d.ts +0 -32
- package/dist/types/reporting.d.ts.map +0 -1
- package/dist/types/rules.d.ts +0 -41
- package/dist/types/rules.d.ts.map +0 -1
- package/dist/types/validation.d.ts +0 -6
- package/dist/types/validation.d.ts.map +0 -1
- /package/{dist → lib}/core/auto-fix.d.ts +0 -0
- /package/{dist → lib}/core/directives.d.ts +0 -0
- /package/{dist → lib}/data/markdoc-realm-schema.d.ts +0 -0
- /package/{dist → lib}/data/proper-nouns.d.ts +0 -0
- /package/{dist → lib}/metrics/index.d.ts +0 -0
- /package/{dist → lib}/metrics/index.d.ts.map +0 -0
- /package/{dist → lib}/metrics/index.js +0 -0
- /package/{dist → lib}/metrics/index.js.map +0 -0
- /package/{dist → lib}/parser/types.d.ts +0 -0
- /package/{dist → lib}/parser/types.js +0 -0
- /package/{dist → lib}/parser/types.js.map +0 -0
- /package/{dist → lib}/rules/scope/capitalization.d.ts +0 -0
- /package/{dist → lib}/rules/scope/conditional.d.ts +0 -0
- /package/{dist → lib}/rules/scope/consistency.d.ts +0 -0
- /package/{dist → lib}/rules/scope/length.d.ts +0 -0
- /package/{dist → lib}/rules/scope/max-image-size.d.ts +0 -0
- /package/{dist → lib}/rules/scope/occurrence.d.ts +0 -0
- /package/{dist → lib}/rules/scope/pattern.d.ts +0 -0
- /package/{dist → lib}/rules/scope/repetition.d.ts +0 -0
- /package/{dist → lib}/rules/scope/semantic-line-breaks.d.ts +0 -0
- /package/{dist → lib}/rules/scope/swap.d.ts +0 -0
- /package/{dist → lib}/rules/token/blanks-around-fences.d.ts +0 -0
- /package/{dist → lib}/rules/token/blanks-around-fences.js +0 -0
- /package/{dist → lib}/rules/token/blanks-around-headings.d.ts +0 -0
- /package/{dist → lib}/rules/token/blanks-around-lists.d.ts +0 -0
- /package/{dist → lib}/rules/token/blanks-around-tables.d.ts +0 -0
- /package/{dist → lib}/rules/token/code-block-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/code-block-style.js +0 -0
- /package/{dist → lib}/rules/token/code-fence-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/code-fence-style.js +0 -0
- /package/{dist → lib}/rules/token/commands-show-output.d.ts +0 -0
- /package/{dist → lib}/rules/token/commands-show-output.js +0 -0
- /package/{dist → lib}/rules/token/descriptive-link-text.d.ts +0 -0
- /package/{dist → lib}/rules/token/emphasis-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/emphasis-style.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/emphasis-style.js +0 -0
- /package/{dist → lib}/rules/token/emphasis-style.js.map +0 -0
- /package/{dist → lib}/rules/token/fenced-code-language.d.ts +0 -0
- /package/{dist → lib}/rules/token/fenced-code-language.js +0 -0
- /package/{dist → lib}/rules/token/first-line-h1.d.ts +0 -0
- /package/{dist → lib}/rules/token/front-matter.d.ts +0 -0
- /package/{dist → lib}/rules/token/heading-increment.d.ts +0 -0
- /package/{dist → lib}/rules/token/heading-start-left.d.ts +0 -0
- /package/{dist → lib}/rules/token/heading-start-left.js +0 -0
- /package/{dist → lib}/rules/token/heading-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/heading-style.js +0 -0
- /package/{dist → lib}/rules/token/hr-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/hr-style.js +0 -0
- /package/{dist → lib}/rules/token/line-length.d.ts +0 -0
- /package/{dist → lib}/rules/token/link-fragments.d.ts +0 -0
- /package/{dist → lib}/rules/token/link-image-reference-definitions.d.ts +0 -0
- /package/{dist → lib}/rules/token/link-image-reference-definitions.js +0 -0
- /package/{dist → lib}/rules/token/link-image-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/list-indent.d.ts +0 -0
- /package/{dist → lib}/rules/token/list-indent.js +0 -0
- /package/{dist → lib}/rules/token/list-length.d.ts +0 -0
- /package/{dist → lib}/rules/token/list-marker-space.d.ts +0 -0
- /package/{dist → lib}/rules/token/list-marker-space.js +0 -0
- /package/{dist → lib}/rules/token/markdoc-attributes.d.ts +0 -0
- /package/{dist → lib}/rules/token/markdoc-pairing.d.ts +0 -0
- /package/{dist → lib}/rules/token/markdoc-syntax.d.ts +0 -0
- /package/{dist → lib}/rules/token/markdoc-unknown-tag.d.ts +0 -0
- /package/{dist → lib}/rules/token/messages.d.ts +0 -0
- /package/{dist → lib}/rules/token/messages.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/messages.js +0 -0
- /package/{dist → lib}/rules/token/messages.js.map +0 -0
- /package/{dist → lib}/rules/token/no-alt-text.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-bare-urls.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-blanks-blockquote.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-blanks-blockquote.js +0 -0
- /package/{dist → lib}/rules/token/no-duplicate-heading.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-duplicate-link-destinations.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-emphasis-as-heading.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-empty-headings.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-empty-links.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-empty-links.js +0 -0
- /package/{dist → lib}/rules/token/no-hard-tabs.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-hard-tabs.js +0 -0
- /package/{dist → lib}/rules/token/no-inline-html.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-atx.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-atx.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-atx.js +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-atx.js.map +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-closed-atx.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-closed-atx.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-closed-atx.js +0 -0
- /package/{dist → lib}/rules/token/no-missing-space-closed-atx.js.map +0 -0
- /package/{dist → lib}/rules/token/no-multiple-blanks.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-multiple-blanks.js +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-blockquote.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-blockquote.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-blockquote.js +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-blockquote.js.map +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-closed-atx.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-multiple-space-closed-atx.js +0 -0
- /package/{dist → lib}/rules/token/no-reversed-links.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-reversed-links.js +0 -0
- /package/{dist → lib}/rules/token/no-space-in-code.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-space-in-code.js +0 -0
- /package/{dist → lib}/rules/token/no-space-in-emphasis.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-space-in-links.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-space-in-links.js +0 -0
- /package/{dist → lib}/rules/token/no-trailing-punctuation.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-trailing-punctuation.js +0 -0
- /package/{dist → lib}/rules/token/no-trailing-spaces.d.ts +0 -0
- /package/{dist → lib}/rules/token/no-trailing-spaces.js +0 -0
- /package/{dist → lib}/rules/token/ol-prefix.d.ts +0 -0
- /package/{dist → lib}/rules/token/ol-prefix.js +0 -0
- /package/{dist → lib}/rules/token/proper-names.d.ts +0 -0
- /package/{dist → lib}/rules/token/reference-links-images.d.ts +0 -0
- /package/{dist → lib}/rules/token/reference-links-images.js +0 -0
- /package/{dist → lib}/rules/token/required-headings.d.ts +0 -0
- /package/{dist → lib}/rules/token/single-h1.d.ts +0 -0
- /package/{dist → lib}/rules/token/single-trailing-newline.d.ts +0 -0
- /package/{dist → lib}/rules/token/single-trailing-newline.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/single-trailing-newline.js +0 -0
- /package/{dist → lib}/rules/token/single-trailing-newline.js.map +0 -0
- /package/{dist → lib}/rules/token/strong-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/strong-style.d.ts.map +0 -0
- /package/{dist → lib}/rules/token/strong-style.js +0 -0
- /package/{dist → lib}/rules/token/strong-style.js.map +0 -0
- /package/{dist → lib}/rules/token/table-column-count.d.ts +0 -0
- /package/{dist → lib}/rules/token/table-column-count.js +0 -0
- /package/{dist → lib}/rules/token/table-column-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/table-pipe-style.d.ts +0 -0
- /package/{dist → lib}/rules/token/table-pipe-style.js +0 -0
- /package/{dist → lib}/rules/token/ul-indent.d.ts +0 -0
- /package/{dist → lib}/rules/token/ul-indent.js +0 -0
- /package/{dist → lib}/rules/token/ul-style.d.ts +0 -0
- /package/{dist → lib}/rules/types.js +0 -0
- /package/{dist → lib}/rules/types.js.map +0 -0
- /package/{dist → lib}/scopes/types.js +0 -0
- /package/{dist → lib}/scopes/types.js.map +0 -0
- /package/{dist → lib}/types/assertions.js +0 -0
- /package/{dist → lib}/types/assertions.js.map +0 -0
- /package/{dist → lib}/types/index.d.ts +0 -0
- /package/{dist → lib}/types/index.d.ts.map +0 -0
- /package/{dist → lib}/types/index.js +0 -0
- /package/{dist → lib}/types/index.js.map +0 -0
- /package/{dist → lib}/types/problems.d.ts +0 -0
- /package/{dist → lib}/types/problems.d.ts.map +0 -0
- /package/{dist → lib}/types/problems.js +0 -0
- /package/{dist → lib}/types/problems.js.map +0 -0
- /package/{dist → lib}/types/reporting.js +0 -0
- /package/{dist → lib}/types/reporting.js.map +0 -0
- /package/{dist → lib}/types/rules.js +0 -0
- /package/{dist → lib}/types/rules.js.map +0 -0
- /package/{dist → lib}/types/validation.js +0 -0
- /package/{dist → lib}/types/validation.js.map +0 -0
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
// Ported from markdownlint's lib/md051.mjs
|
|
2
|
-
// (https://github.com/DavidAnson/markdownlint, MIT © David Anson).
|
|
3
|
-
// Extends upstream MD051 with the opt-in `crossFile` option: relative link
|
|
4
|
-
// and image targets must exist on disk, and a `file.md#anchor` fragment
|
|
5
|
-
// must exist in the target. Upstream never validates other files.
|
|
6
|
-
import { readFileSync, statSync } from 'node:fs';
|
|
7
|
-
import picomatch from 'picomatch';
|
|
8
|
-
import { dirname, extname, join, resolve, sep } from 'node:path';
|
|
9
|
-
import { filterByTypes, parseMarkdown } from '../../parser/index.js';
|
|
10
|
-
import { clearHtmlCommentText, filterByPredicate, getHtmlAttributeRe, getHtmlTagInfo, isDocfxTab, toWellFormedString, } from './helpers.js';
|
|
11
|
-
/** Recursive-descendant type filter (any depth), matching upstream's `filterByTypes(tokens, types)` semantics -- distinct from `getDescendantsByType`'s single-type-per-depth path walk, which is the wrong shape here since `resourceDestinationString`/`definitionDestinationString` nest under a literal/raw alternation this call site doesn't want to spell out. */
|
|
12
|
-
function descendantsOfType(children, type) {
|
|
13
|
-
return filterByPredicate(children, (token) => token.type === type);
|
|
14
|
-
}
|
|
15
|
-
const idRe = getHtmlAttributeRe('id');
|
|
16
|
-
const nameRe = getHtmlAttributeRe('name');
|
|
17
|
-
const anchorRe = /\{(#[a-z\d]+(?:[-_][a-z\d]+)*)\}/gu;
|
|
18
|
-
const lineFragmentRe = /^#(?:L\d+(?:C\d+)?-L\d+(?:C\d+)?|L\d+)$/;
|
|
19
|
-
const childrenExclude = new Set(['image', 'reference', 'resource', 'markdocTag']);
|
|
20
|
-
const tokensInclude = new Set(['characterEscapeValue', 'codeTextData', 'data', 'mathTextData']);
|
|
21
|
-
/**
|
|
22
|
-
* Converts a Markdown heading into an HTML fragment according to the rules
|
|
23
|
-
* used by GitHub. Ported verbatim (including the exact allowed-character
|
|
24
|
-
* regex source comment) from upstream's `convertHeadingToHTMLFragment`.
|
|
25
|
-
*/
|
|
26
|
-
function convertHeadingToHTMLFragment(headingText) {
|
|
27
|
-
const inlineText = filterByPredicate(headingText.children, (token) => tokensInclude.has(token.type), (token) => (childrenExclude.has(token.type) ? [] : token.children))
|
|
28
|
-
.map((token) => token.text)
|
|
29
|
-
.join('');
|
|
30
|
-
return ('#' +
|
|
31
|
-
encodeURIComponent(toWellFormedString(inlineText
|
|
32
|
-
// Markdoc tag markers never render, so they never slug. With
|
|
33
|
-
// markdoc parsing on, the tag subtree is excluded above; with it
|
|
34
|
-
// off, the raw {% ... %} text is stripped here.
|
|
35
|
-
.replace(/\{%-?[\s\S]*?-?%\}/g, '')
|
|
36
|
-
.trim()
|
|
37
|
-
.toLowerCase()
|
|
38
|
-
// RegExp source with Ruby's \p{Word} expanded into its General Categories
|
|
39
|
-
// https://github.com/gjtorikian/html-pipeline/blob/main/lib/html/pipeline/toc_filter.rb
|
|
40
|
-
// https://ruby-doc.org/core-3.0.2/Regexp.html
|
|
41
|
-
.replace(/[^\p{Letter}\p{Mark}\p{Number}\p{Connector_Punctuation}\- ]/gu, '')
|
|
42
|
-
.replace(/ /gu, '-'))));
|
|
43
|
-
}
|
|
44
|
-
/** Unescapes the text of a String-type token (`characterEscapeValue`/`data` descendants only). */
|
|
45
|
-
function unescapeStringTokenText(token) {
|
|
46
|
-
return filterByPredicate(token.children, (child) => ['characterEscapeValue', 'data'].includes(child.type))
|
|
47
|
-
.map((child) => child.text)
|
|
48
|
-
.join('');
|
|
49
|
-
}
|
|
50
|
-
function collectDetailsAnchors(content, tree, fragments) {
|
|
51
|
-
const codeLines = new Set();
|
|
52
|
-
for (const block of filterByTypes(tree, ['codeFenced', 'codeIndented'])) {
|
|
53
|
-
for (let line = block.startLine; line <= block.endLine; line++)
|
|
54
|
-
codeLines.add(line);
|
|
55
|
-
}
|
|
56
|
-
const lineStarts = [0];
|
|
57
|
-
for (let offset = 0; offset < content.length; offset++) {
|
|
58
|
-
if (content[offset] === '\n')
|
|
59
|
-
lineStarts.push(offset + 1);
|
|
60
|
-
}
|
|
61
|
-
const lineOf = (offset) => {
|
|
62
|
-
let line = 0;
|
|
63
|
-
while (line + 1 < lineStarts.length && lineStarts[line + 1] <= offset)
|
|
64
|
-
line++;
|
|
65
|
-
return line + 1;
|
|
66
|
-
};
|
|
67
|
-
const sources = [];
|
|
68
|
-
const detailsRe = /<details\b([^>]*)>/gi;
|
|
69
|
-
let match;
|
|
70
|
-
while ((match = detailsRe.exec(content)) !== null) {
|
|
71
|
-
const explicitId = /\bid\s*=\s*["']([^"']+)["']/i.exec(match[1])?.[1];
|
|
72
|
-
if (explicitId) {
|
|
73
|
-
sources.push({ offset: match.index, explicitId });
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
const closeIndex = content.indexOf('</details>', match.index);
|
|
77
|
-
const scope = content.slice(match.index, closeIndex === -1 ? undefined : closeIndex);
|
|
78
|
-
const summaryText = /<summary\b[^>]*>([\s\S]*?)<\/summary>/i
|
|
79
|
-
.exec(scope)?.[1]
|
|
80
|
-
?.replace(/<[^>]+>/g, '');
|
|
81
|
-
sources.push({ offset: match.index, summaryText });
|
|
82
|
-
}
|
|
83
|
-
const accordionRe = /\{%\s*accordion(?![\w-])([\s\S]*?)%\}/g;
|
|
84
|
-
while ((match = accordionRe.exec(content)) !== null) {
|
|
85
|
-
const title = /\btitle\s*=\s*"((?:\\.|[^"\\])*)"/.exec(match[1])?.[1];
|
|
86
|
-
sources.push(title === undefined
|
|
87
|
-
? { offset: match.index, unknowable: true }
|
|
88
|
-
: { offset: match.index, summaryText: title.replace(/\\(.)/g, '$1') });
|
|
89
|
-
}
|
|
90
|
-
sources.sort((a, b) => a.offset - b.offset);
|
|
91
|
-
const setAnchor = (id) => fragments.set(`#${encodeURIComponent(id)}`, 0);
|
|
92
|
-
const generatedIds = new Set();
|
|
93
|
-
let index = 0;
|
|
94
|
-
for (const source of sources) {
|
|
95
|
-
if (codeLines.has(lineOf(source.offset)))
|
|
96
|
-
continue;
|
|
97
|
-
if (source.unknowable) {
|
|
98
|
-
index++;
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
if (source.explicitId) {
|
|
102
|
-
setAnchor(source.explicitId);
|
|
103
|
-
index++;
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
const generated = source.summaryText
|
|
107
|
-
? source.summaryText.replace(/\s+/g, '-').toLowerCase()
|
|
108
|
-
: `details-${index}`;
|
|
109
|
-
const id = generatedIds.has(generated) ? `${generated}-${index}` : generated;
|
|
110
|
-
generatedIds.add(id);
|
|
111
|
-
setAnchor(id);
|
|
112
|
-
index++;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
function collectFragments(tree, content) {
|
|
116
|
-
const fragments = new Map([['#top', 0]]);
|
|
117
|
-
for (const headingText of filterByTypes(tree, ['atxHeadingText', 'setextHeadingText'])) {
|
|
118
|
-
const fragment = convertHeadingToHTMLFragment(headingText);
|
|
119
|
-
if (fragment !== '#') {
|
|
120
|
-
const count = fragments.get(fragment) || 0;
|
|
121
|
-
if (count) {
|
|
122
|
-
fragments.set(`${fragment}-${count}`, 0);
|
|
123
|
-
}
|
|
124
|
-
fragments.set(fragment, count + 1);
|
|
125
|
-
anchorRe.lastIndex = 0;
|
|
126
|
-
let match;
|
|
127
|
-
while ((match = anchorRe.exec(headingText.text)) !== null) {
|
|
128
|
-
const anchor = match[1];
|
|
129
|
-
if (!fragments.has(anchor)) {
|
|
130
|
-
fragments.set(anchor, 1);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// includeHtmlFlow: true matches upstream md051.mjs, so anchors inside
|
|
136
|
-
// block-level HTML (`<div id="x">`) count too, not just inline HTML.
|
|
137
|
-
for (const token of filterByTypes(tree, ['htmlText'], true)) {
|
|
138
|
-
const htmlTagInfo = getHtmlTagInfo(token);
|
|
139
|
-
if (htmlTagInfo && !htmlTagInfo.close) {
|
|
140
|
-
const anchorMatch = idRe.exec(token.text) ||
|
|
141
|
-
(htmlTagInfo.name.toLowerCase() === 'a' && nameRe.exec(token.text));
|
|
142
|
-
if (anchorMatch && anchorMatch.length > 0) {
|
|
143
|
-
fragments.set(`#${anchorMatch[1]}`, 0);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
collectDetailsAnchors(content, tree, fragments);
|
|
148
|
-
return fragments;
|
|
149
|
-
}
|
|
150
|
-
const SCHEME_RE = /^[a-z][a-z0-9+.-]*:/i;
|
|
151
|
-
const targetCache = new Map();
|
|
152
|
-
const MISSING = { mtimeMs: -1, exists: false, fragments: null };
|
|
153
|
-
// Anchors and existence of one on-disk file, cached by (path, mtime) so a
|
|
154
|
-
// run reads each target once and edits invalidate naturally.
|
|
155
|
-
function resolveTargetFile(absolutePath, markdoc) {
|
|
156
|
-
let stats;
|
|
157
|
-
try {
|
|
158
|
-
stats = statSync(absolutePath);
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
return MISSING;
|
|
162
|
-
}
|
|
163
|
-
const cached = targetCache.get(absolutePath);
|
|
164
|
-
if (cached && cached.mtimeMs === stats.mtimeMs)
|
|
165
|
-
return cached;
|
|
166
|
-
let fragments = null;
|
|
167
|
-
if (stats.isFile() && ['.md', '.markdown'].includes(extname(absolutePath).toLowerCase())) {
|
|
168
|
-
try {
|
|
169
|
-
const targetContent = readFileSync(absolutePath, 'utf8');
|
|
170
|
-
// Comment-cleared, matching the in-file path: a <details> inside an
|
|
171
|
-
// HTML comment never renders and must not produce an anchor.
|
|
172
|
-
fragments = collectFragments(parseMarkdown(targetContent, { markdoc }), clearHtmlCommentText(targetContent));
|
|
173
|
-
}
|
|
174
|
-
catch {
|
|
175
|
-
fragments = null;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
const entry = { mtimeMs: stats.mtimeMs, exists: true, fragments };
|
|
179
|
-
targetCache.set(absolutePath, entry);
|
|
180
|
-
return entry;
|
|
181
|
-
}
|
|
182
|
-
// Resolves a link target the way the Realm router does: an extensionless
|
|
183
|
-
// path also tries `<path>.md`, and a directory reads its `index.md` for
|
|
184
|
-
// anchors.
|
|
185
|
-
function resolveTarget(absolutePath, markdoc) {
|
|
186
|
-
let stats;
|
|
187
|
-
try {
|
|
188
|
-
stats = statSync(absolutePath);
|
|
189
|
-
}
|
|
190
|
-
catch {
|
|
191
|
-
if (extname(absolutePath) === '') {
|
|
192
|
-
const asMarkdown = resolveTargetFile(`${absolutePath}.md`, markdoc);
|
|
193
|
-
if (asMarkdown.exists)
|
|
194
|
-
return asMarkdown;
|
|
195
|
-
return resolveTargetFile(join(absolutePath, 'index.md'), markdoc);
|
|
196
|
-
}
|
|
197
|
-
return MISSING;
|
|
198
|
-
}
|
|
199
|
-
if (stats.isDirectory()) {
|
|
200
|
-
const viaIndex = resolveTargetFile(join(absolutePath, 'index.md'), markdoc);
|
|
201
|
-
if (viaIndex.exists)
|
|
202
|
-
return viaIndex;
|
|
203
|
-
const asSibling = resolveTargetFile(`${absolutePath}.md`, markdoc);
|
|
204
|
-
if (asSibling.exists)
|
|
205
|
-
return asSibling;
|
|
206
|
-
return { mtimeMs: stats.mtimeMs, exists: true, fragments: null };
|
|
207
|
-
}
|
|
208
|
-
return resolveTargetFile(absolutePath, markdoc);
|
|
209
|
-
}
|
|
210
|
-
// Site root for `/x/y` links: one root, or a map from source-directory
|
|
211
|
-
// prefix to that directory's root, for a monorepo with several docs
|
|
212
|
-
// projects. Paths resolve against the working directory. The longest
|
|
213
|
-
// matching prefix wins, and files under no prefix keep the skip.
|
|
214
|
-
function rootDirFor(option, filePath) {
|
|
215
|
-
if (typeof option === 'string')
|
|
216
|
-
return option;
|
|
217
|
-
if (option === null || typeof option !== 'object')
|
|
218
|
-
return '';
|
|
219
|
-
const file = resolve(filePath);
|
|
220
|
-
let best = '';
|
|
221
|
-
let bestLength = -1;
|
|
222
|
-
for (const [prefix, root] of Object.entries(option)) {
|
|
223
|
-
if (typeof root !== 'string')
|
|
224
|
-
continue;
|
|
225
|
-
const resolvedPrefix = resolve(prefix);
|
|
226
|
-
if ((file === resolvedPrefix || file.startsWith(resolvedPrefix + sep)) &&
|
|
227
|
-
resolvedPrefix.length > bestLength) {
|
|
228
|
-
best = root;
|
|
229
|
-
bestLength = resolvedPrefix.length;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
return best;
|
|
233
|
-
}
|
|
234
|
-
function checkLinkFragments(ctx) {
|
|
235
|
-
const ignoreCase = !!ctx.config.ignoreCase;
|
|
236
|
-
const crossFile = !!ctx.config.crossFile;
|
|
237
|
-
const ignoredPattern = String(ctx.config.ignoredPattern ?? '');
|
|
238
|
-
const ignoredPatternRe = new RegExp(ignoredPattern || '^$');
|
|
239
|
-
const rootDir = rootDirFor(ctx.config.rootDir, ctx.filePath);
|
|
240
|
-
// Destinations to skip entirely -- routes a renderer generates from data,
|
|
241
|
-
// with no file on disk to validate against.
|
|
242
|
-
const ignoredTargets = Array.isArray(ctx.config.ignoredTargets)
|
|
243
|
-
? ctx.config.ignoredTargets
|
|
244
|
-
: [];
|
|
245
|
-
const fragments = collectFragments(ctx.tree, ctx.lines.join('\n'));
|
|
246
|
-
const baseDir = dirname(ctx.filePath);
|
|
247
|
-
const checkCrossFileDestination = (rawDestination, link, allowFragmentCheck) => {
|
|
248
|
-
if (rawDestination === '' ||
|
|
249
|
-
rawDestination.startsWith('#') ||
|
|
250
|
-
rawDestination.startsWith('//') ||
|
|
251
|
-
SCHEME_RE.test(rawDestination)) {
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
const isAbsolute = rawDestination.startsWith('/');
|
|
255
|
-
if (isAbsolute && rootDir === '')
|
|
256
|
-
return;
|
|
257
|
-
const destinationPath = rawDestination.split('#')[0].split('?')[0];
|
|
258
|
-
// Leading ./ and ../ segments never match a glob's `**`, so patterns
|
|
259
|
-
// also test against the destination with those segments removed.
|
|
260
|
-
const dotless = destinationPath.replace(/^(\.\.\/|\.\/)+/, '');
|
|
261
|
-
if (ignoredTargets.length > 0 &&
|
|
262
|
-
ignoredTargets.some((pattern) => picomatch.isMatch(destinationPath, pattern) || picomatch.isMatch(dotless, pattern))) {
|
|
263
|
-
return;
|
|
264
|
-
}
|
|
265
|
-
const hashIndex = rawDestination.indexOf('#');
|
|
266
|
-
const fragment = hashIndex === -1 ? '' : rawDestination.slice(hashIndex);
|
|
267
|
-
let targetPath = hashIndex === -1 ? rawDestination : rawDestination.slice(0, hashIndex);
|
|
268
|
-
targetPath = targetPath.split('?')[0];
|
|
269
|
-
if (isAbsolute)
|
|
270
|
-
targetPath = targetPath.slice(1);
|
|
271
|
-
if (targetPath === '')
|
|
272
|
-
return;
|
|
273
|
-
try {
|
|
274
|
-
targetPath = decodeURIComponent(targetPath);
|
|
275
|
-
}
|
|
276
|
-
catch {
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
const target = resolveTarget(resolve(isAbsolute ? resolve(rootDir) : baseDir, targetPath), ctx.markdoc !== undefined);
|
|
280
|
-
const hasRange = link.startLine === link.endLine;
|
|
281
|
-
const context = hasRange ? link.text : undefined;
|
|
282
|
-
const column = hasRange ? link.startColumn : undefined;
|
|
283
|
-
if (!target.exists) {
|
|
284
|
-
ctx.onError({
|
|
285
|
-
line: link.startLine,
|
|
286
|
-
column,
|
|
287
|
-
detail: `Link target not found: ${targetPath}`,
|
|
288
|
-
context,
|
|
289
|
-
});
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
if (!allowFragmentCheck || fragment.length <= 1 || target.fragments === null)
|
|
293
|
-
return;
|
|
294
|
-
const encoded = `#${encodeURIComponent(toWellFormedString(fragment.slice(1)))}`;
|
|
295
|
-
if (lineFragmentRe.test(encoded) || ignoredPatternRe.test(fragment.slice(1)))
|
|
296
|
-
return;
|
|
297
|
-
const found = ignoreCase
|
|
298
|
-
? [...target.fragments.keys()].some((key) => key.toLowerCase() === encoded.toLowerCase())
|
|
299
|
-
: target.fragments.has(encoded);
|
|
300
|
-
if (!found) {
|
|
301
|
-
ctx.onError({
|
|
302
|
-
line: link.startLine,
|
|
303
|
-
column,
|
|
304
|
-
detail: `Fragment ${fragment} not found in ${targetPath}`,
|
|
305
|
-
context,
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
};
|
|
309
|
-
// Process link and definition fragments
|
|
310
|
-
const parentChilds = [
|
|
311
|
-
['link', 'resourceDestinationString'],
|
|
312
|
-
['definition', 'definitionDestinationString'],
|
|
313
|
-
];
|
|
314
|
-
for (const [parentType, definitionType] of parentChilds) {
|
|
315
|
-
const links = filterByTypes(ctx.tree, [parentType]).filter((link) => !(link.parent?.type === 'atxHeadingText' && isDocfxTab(link.parent.parent)));
|
|
316
|
-
for (const link of links) {
|
|
317
|
-
const definitions = descendantsOfType(link.children, definitionType);
|
|
318
|
-
for (const definition of definitions) {
|
|
319
|
-
const { endColumn, startColumn } = definition;
|
|
320
|
-
const text = unescapeStringTokenText(definition);
|
|
321
|
-
if (crossFile && !text.startsWith('#')) {
|
|
322
|
-
checkCrossFileDestination(text, link, true);
|
|
323
|
-
continue;
|
|
324
|
-
}
|
|
325
|
-
const textSliceOne = text.slice(1);
|
|
326
|
-
const encodedText = `#${encodeURIComponent(toWellFormedString(textSliceOne))}`;
|
|
327
|
-
if (text.length > 1 &&
|
|
328
|
-
text.startsWith('#') &&
|
|
329
|
-
!fragments.has(encodedText) &&
|
|
330
|
-
!lineFragmentRe.test(encodedText) &&
|
|
331
|
-
!ignoredPatternRe.test(textSliceOne)) {
|
|
332
|
-
const hasRange = link.startLine === link.endLine;
|
|
333
|
-
const context = hasRange ? link.text : undefined;
|
|
334
|
-
const column = hasRange ? link.startColumn : undefined;
|
|
335
|
-
const fixInfo = hasRange
|
|
336
|
-
? {
|
|
337
|
-
lineNumber: link.startLine,
|
|
338
|
-
editColumn: startColumn,
|
|
339
|
-
deleteCount: endColumn - startColumn,
|
|
340
|
-
}
|
|
341
|
-
: undefined;
|
|
342
|
-
const textLower = text.toLowerCase();
|
|
343
|
-
const mixedCaseKey = [...fragments.keys()].find((key) => textLower === key.toLowerCase());
|
|
344
|
-
if (mixedCaseKey) {
|
|
345
|
-
const finalFixInfo = fixInfo ? { ...fixInfo, insertText: mixedCaseKey } : undefined;
|
|
346
|
-
if (!ignoreCase && mixedCaseKey !== text) {
|
|
347
|
-
ctx.onError({
|
|
348
|
-
line: link.startLine,
|
|
349
|
-
column,
|
|
350
|
-
detail: `Expected: ${mixedCaseKey}; Actual: ${text}`,
|
|
351
|
-
context,
|
|
352
|
-
fixInfo: finalFixInfo,
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
else {
|
|
357
|
-
ctx.onError({
|
|
358
|
-
line: link.startLine,
|
|
359
|
-
column,
|
|
360
|
-
context,
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
if (crossFile) {
|
|
368
|
-
for (const image of filterByTypes(ctx.tree, ['image'])) {
|
|
369
|
-
for (const definition of descendantsOfType(image.children, 'resourceDestinationString')) {
|
|
370
|
-
const text = unescapeStringTokenText(definition);
|
|
371
|
-
if (!text.startsWith('#'))
|
|
372
|
-
checkCrossFileDestination(text, image, false);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
export const linkFragments = {
|
|
378
|
-
name: 'link-fragments',
|
|
379
|
-
tags: ['links'],
|
|
380
|
-
fixable: true,
|
|
381
|
-
defaults: {
|
|
382
|
-
message: 'Link fragments should be valid',
|
|
383
|
-
ignoreCase: false,
|
|
384
|
-
ignoredPattern: '',
|
|
385
|
-
crossFile: false,
|
|
386
|
-
rootDir: '',
|
|
387
|
-
ignoredTargets: [],
|
|
388
|
-
},
|
|
389
|
-
check(ctx) {
|
|
390
|
-
checkLinkFragments(ctx);
|
|
391
|
-
},
|
|
392
|
-
};
|
|
393
|
-
//# sourceMappingURL=link-fragments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link-fragments.js","sourceRoot":"","sources":["../../../src/rules/token/link-fragments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link-image-reference-definitions.d.ts","sourceRoot":"","sources":["../../../src/rules/token/link-image-reference-definitions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,eAAO,MAAM,6BAA6B,EAAE,SA+C3C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link-image-reference-definitions.js","sourceRoot":"","sources":["../../../src/rules/token/link-image-reference-definitions.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AAE9D,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAc;IACtD,IAAI,EAAE,kCAAkC;IACxC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE;QACR,OAAO,EAAE,uDAAuD;QAChE,kBAAkB,EAAE,CAAC,IAAI,CAAC;KAC3B;IACD,KAAK,CAAC,GAAG;QACP,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAC1E,CAAC;QACF,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,yBAAyB,CAC5F,GAAG,CAAC,IAAI,CACT,CAAC;QAEF,mEAAmE;QACnE,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAClF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACxC,GAAG,CAAC,OAAO,CAAC;gBACV,IAAI,EAAE,SAAS,GAAG,CAAC;gBACnB,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,+CAA+C,KAAK,GAAG;gBAC/D,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC;gBACxB,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC;oBACnC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE;oBAChD,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;QACL,CAAC;QAED,8DAA8D;QAC9D,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,oBAAoB,EAAE,CAAC;YACtD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACxC,GAAG,CAAC,OAAO,CAAC;gBACV,IAAI,EAAE,SAAS,GAAG,CAAC;gBACnB,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,kDAAkD,KAAK,GAAG;gBAClE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC;gBACxB,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC;oBACnC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE;oBAChD,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link-image-style.d.ts","sourceRoot":"","sources":["../../../src/rules/token/link-image-style.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAuB7C,eAAO,MAAM,cAAc,EAAE,SAoH5B,CAAC"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { filterByTypes } from '../../parser/index.js';
|
|
2
|
-
import { getDescendantsByType, getReferenceLinkImageData } from './helpers.js';
|
|
3
|
-
const nextLinesRe = /[\r\n][\s\S]*$/;
|
|
4
|
-
const backslashEscapeRe = /\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g;
|
|
5
|
-
function removeBackslashEscapes(text) {
|
|
6
|
-
return text.replace(backslashEscapeRe, '$1');
|
|
7
|
-
}
|
|
8
|
-
const autolinkDisallowedRe = /[ <>]/;
|
|
9
|
-
function autolinkAble(destination) {
|
|
10
|
-
try {
|
|
11
|
-
new URL(destination);
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
// Not an absolute URL
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
return !autolinkDisallowedRe.test(destination);
|
|
18
|
-
}
|
|
19
|
-
export const linkImageStyle = {
|
|
20
|
-
name: 'link-image-style',
|
|
21
|
-
tags: ['images', 'links'],
|
|
22
|
-
fixable: true,
|
|
23
|
-
defaults: {
|
|
24
|
-
message: 'Link and image style',
|
|
25
|
-
autolink: true,
|
|
26
|
-
inline: true,
|
|
27
|
-
full: true,
|
|
28
|
-
collapsed: true,
|
|
29
|
-
shortcut: true,
|
|
30
|
-
urlInline: true,
|
|
31
|
-
},
|
|
32
|
-
check(ctx) {
|
|
33
|
-
const config = ctx.config;
|
|
34
|
-
const autolink = config.autolink === undefined || !!config.autolink;
|
|
35
|
-
const inline = config.inline === undefined || !!config.inline;
|
|
36
|
-
const full = config.full === undefined || !!config.full;
|
|
37
|
-
const collapsed = config.collapsed === undefined || !!config.collapsed;
|
|
38
|
-
const shortcut = config.shortcut === undefined || !!config.shortcut;
|
|
39
|
-
const urlInline = config.urlInline === undefined || !!config.urlInline;
|
|
40
|
-
if (autolink && inline && full && collapsed && shortcut && urlInline) {
|
|
41
|
-
// Everything allowed, nothing to check
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const { definitions } = getReferenceLinkImageData(ctx.tree);
|
|
45
|
-
const links = filterByTypes(ctx.tree, ['autolink', 'image', 'link']);
|
|
46
|
-
for (const link of links) {
|
|
47
|
-
const { endColumn, endLine, startColumn, startLine, text, type } = link;
|
|
48
|
-
const image = type === 'image';
|
|
49
|
-
let label = null;
|
|
50
|
-
let destination = null;
|
|
51
|
-
let isError = false;
|
|
52
|
-
if (type === 'autolink') {
|
|
53
|
-
destination =
|
|
54
|
-
getDescendantsByType(link, [['autolinkEmail', 'autolinkProtocol']])[0]?.text ?? null;
|
|
55
|
-
label = destination;
|
|
56
|
-
isError = !autolink && Boolean(destination);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
label = getDescendantsByType(link, ['label', 'labelText'])[0]?.text ?? null;
|
|
60
|
-
destination =
|
|
61
|
-
getDescendantsByType(link, [
|
|
62
|
-
'resource',
|
|
63
|
-
'resourceDestination',
|
|
64
|
-
['resourceDestinationLiteral', 'resourceDestinationRaw'],
|
|
65
|
-
'resourceDestinationString',
|
|
66
|
-
])[0]?.text ?? null;
|
|
67
|
-
if (destination) {
|
|
68
|
-
// link kind is an inline link
|
|
69
|
-
const title = getDescendantsByType(link, [
|
|
70
|
-
'resource',
|
|
71
|
-
'resourceTitle',
|
|
72
|
-
'resourceTitleString',
|
|
73
|
-
])[0]?.text;
|
|
74
|
-
isError =
|
|
75
|
-
!inline ||
|
|
76
|
-
(!urlInline &&
|
|
77
|
-
autolink &&
|
|
78
|
-
!image &&
|
|
79
|
-
!title &&
|
|
80
|
-
label === destination &&
|
|
81
|
-
autolinkAble(destination));
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
// link kind is a full/collapsed/shortcut reference link
|
|
85
|
-
const isShortcut = getDescendantsByType(link, ['reference']).length === 0;
|
|
86
|
-
const referenceString = getDescendantsByType(link, ['reference', 'referenceString'])[0]
|
|
87
|
-
?.text;
|
|
88
|
-
const isCollapsed = referenceString === undefined;
|
|
89
|
-
const definition = definitions.get(referenceString || (label ?? ''));
|
|
90
|
-
destination = definition?.[1] || '';
|
|
91
|
-
isError = Boolean(destination && (isShortcut ? !shortcut : isCollapsed ? !collapsed : !full));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (isError) {
|
|
95
|
-
let fixInfo;
|
|
96
|
-
if (startLine === endLine) {
|
|
97
|
-
const range = [startColumn, endColumn - startColumn];
|
|
98
|
-
let insertText = null;
|
|
99
|
-
const canInline = inline && label;
|
|
100
|
-
const canAutolink = autolink && !image && destination !== null && autolinkAble(destination);
|
|
101
|
-
if (canInline && (urlInline || !canAutolink)) {
|
|
102
|
-
// Most useful form
|
|
103
|
-
const prefix = image ? '!' : '';
|
|
104
|
-
const escapedLabel = (label ?? '').replace(/[[\]]/g, '\\$&');
|
|
105
|
-
const escapedDestination = (destination ?? '').replace(/[()]/g, '\\$&');
|
|
106
|
-
insertText = `${prefix}[${escapedLabel}](${escapedDestination})`;
|
|
107
|
-
}
|
|
108
|
-
else if (canAutolink) {
|
|
109
|
-
// Simplest form
|
|
110
|
-
insertText = `<${removeBackslashEscapes(destination ?? '')}>`;
|
|
111
|
-
}
|
|
112
|
-
if (insertText) {
|
|
113
|
-
fixInfo = {
|
|
114
|
-
lineNumber: startLine,
|
|
115
|
-
editColumn: range[0],
|
|
116
|
-
deleteCount: range[1],
|
|
117
|
-
insertText,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
ctx.onError({
|
|
122
|
-
line: startLine,
|
|
123
|
-
column: startLine === endLine ? startColumn : undefined,
|
|
124
|
-
context: text.replace(nextLinesRe, ''),
|
|
125
|
-
fixInfo,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
//# sourceMappingURL=link-image-style.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link-image-style.js","sourceRoot":"","sources":["../../../src/rules/token/link-image-style.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,iBAAiB,GAAG,4CAA4C,CAAC;AAEvE,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAErC,SAAS,YAAY,CAAC,WAAmB;IACvC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE;QACR,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;KAChB;IACD,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACxD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACpE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QACvE,IAAI,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;YACrE,uCAAuC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YACxE,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC;YAC/B,IAAI,KAAK,GAAkB,IAAI,CAAC;YAChC,IAAI,WAAW,GAAkB,IAAI,CAAC;YACtC,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,WAAW;oBACT,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;gBACvF,KAAK,GAAG,WAAW,CAAC;gBACpB,OAAO,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;gBAC5E,WAAW;oBACT,oBAAoB,CAAC,IAAI,EAAE;wBACzB,UAAU;wBACV,qBAAqB;wBACrB,CAAC,4BAA4B,EAAE,wBAAwB,CAAC;wBACxD,2BAA2B;qBAC5B,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;gBACtB,IAAI,WAAW,EAAE,CAAC;oBAChB,8BAA8B;oBAC9B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,EAAE;wBACvC,UAAU;wBACV,eAAe;wBACf,qBAAqB;qBACtB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBACZ,OAAO;wBACL,CAAC,MAAM;4BACP,CAAC,CAAC,SAAS;gCACT,QAAQ;gCACR,CAAC,KAAK;gCACN,CAAC,KAAK;gCACN,KAAK,KAAK,WAAW;gCACrB,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,wDAAwD;oBACxD,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;oBAC1E,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;wBACrF,EAAE,IAAI,CAAC;oBACT,MAAM,WAAW,GAAG,eAAe,KAAK,SAAS,CAAC;oBAClD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;oBACrE,WAAW,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpC,OAAO,GAAG,OAAO,CACf,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3E,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,OAES,CAAC;gBACd,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;oBAC1B,MAAM,KAAK,GAAqB,CAAC,WAAW,EAAE,SAAS,GAAG,WAAW,CAAC,CAAC;oBACvE,IAAI,UAAU,GAAkB,IAAI,CAAC;oBACrC,MAAM,SAAS,GAAG,MAAM,IAAI,KAAK,CAAC;oBAClC,MAAM,WAAW,GACf,QAAQ,IAAI,CAAC,KAAK,IAAI,WAAW,KAAK,IAAI,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;oBAC1E,IAAI,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC7C,mBAAmB;wBACnB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChC,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;wBAC7D,MAAM,kBAAkB,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBACxE,UAAU,GAAG,GAAG,MAAM,IAAI,YAAY,KAAK,kBAAkB,GAAG,CAAC;oBACnE,CAAC;yBAAM,IAAI,WAAW,EAAE,CAAC;wBACvB,gBAAgB;wBAChB,UAAU,GAAG,IAAI,sBAAsB,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC;oBAChE,CAAC;oBACD,IAAI,UAAU,EAAE,CAAC;wBACf,OAAO,GAAG;4BACR,UAAU,EAAE,SAAS;4BACrB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;4BACpB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;4BACrB,UAAU;yBACX,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,GAAG,CAAC,OAAO,CAAC;oBACV,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;oBACvD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;oBACtC,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-indent.d.ts","sourceRoot":"","sources":["../../../src/rules/token/list-indent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,eAAO,MAAM,UAAU,EAAE,SAyDxB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-indent.js","sourceRoot":"","sources":["../../../src/rules/token/list-indent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAc;IACnC,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC;IACrC,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE;QACR,OAAO,EAAE,2DAA2D;KACrE;IACD,KAAK,CAAC,GAAG;QACP,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;YAC7E,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YAC5C,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;YAE1F,KAAK,MAAM,cAAc,IAAI,gBAAgB,EAAE,CAAC;gBAC9C,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC;gBAC5C,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC;gBAEpD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAClC,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;wBACpC,8DAA8D;wBAC9D,GAAG,CAAC,OAAO,CAAC;4BACV,IAAI,EAAE,UAAU;4BAChB,MAAM,EAAE,CAAC;4BACT,MAAM,EAAE,aAAa,cAAc,aAAa,YAAY,EAAE;yBAC/D,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;oBACvD,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;oBAChE,WAAW,GAAG,WAAW,IAAI,SAAS,CAAC;oBACvC,IAAI,cAAc,KAAK,YAAY,IAAI,WAAW,EAAE,CAAC;wBACnD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;4BAC9B,WAAW,GAAG,IAAI,CAAC;wBACrB,CAAC;6BAAM,CAAC;4BACN,MAAM,MAAM,GAAG,WAAW;gCACxB,CAAC,CAAC,cAAc,WAAW,eAAe,SAAS,GAAG;gCACtD,CAAC,CAAC,aAAa,cAAc,aAAa,YAAY,EAAE,CAAC;4BAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;4BAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;4BACrE,GAAG,CAAC,OAAO,CAAC;gCACV,IAAI,EAAE,UAAU;gCAChB,MAAM,EAAE,CAAC;gCACT,MAAM;gCACN,OAAO,EAAE;oCACP,UAAU;oCACV,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;oCAC1C,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC;oCAC3C,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;iCACtD;6BACF,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-length.d.ts","sourceRoot":"","sources":["../../../src/rules/token/list-length.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAwB7C,eAAO,MAAM,UAAU,EAAE,SAkCxB,CAAC"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { filterByPredicate } from './helpers.js';
|
|
2
|
-
const isList = (token) => token.type === 'listOrdered' || token.type === 'listUnordered';
|
|
3
|
-
// Recheck-original rule (no markdownlint equivalent, so it sits outside the
|
|
4
|
-
// parity comparison). A list that never grew past a single bullet usually
|
|
5
|
-
// reads better as a plain sentence, and a list that grows very long asks a
|
|
6
|
-
// reader to hold too many parallel items in mind at once -- both are
|
|
7
|
-
// style-guide judgment calls rather than markdown syntax errors, which is
|
|
8
|
-
// why this rule ships a modest default `min` of 2 but no default `max` at
|
|
9
|
-
// all (an unbounded list is not, by itself, wrong).
|
|
10
|
-
//
|
|
11
|
-
// Every list is its own subject and is evaluated independently, INCLUDING
|
|
12
|
-
// nested sublists: a two-item parent list with a one-item child list flags
|
|
13
|
-
// only the child, at the child's own `startLine`. This deliberately does
|
|
14
|
-
// NOT reuse blanks-around-lists' (MD032) top-level-only traversal --that
|
|
15
|
-
// rule stops descending at the first list boundary because surrounding-
|
|
16
|
-
// blank-line placement is the OUTER list's concern and a nested list's
|
|
17
|
-
// blank lines are its parent's problem, not its own. Item *count* has no
|
|
18
|
-
// such parent/child relationship: a short sublist is exactly as much a
|
|
19
|
-
// "too-short list" as a short top-level one, so this rule descends into
|
|
20
|
-
// every list's children rather than stopping at the first match.
|
|
21
|
-
export const listLength = {
|
|
22
|
-
name: 'list-length',
|
|
23
|
-
tags: ['bullet', 'ul', 'ol'],
|
|
24
|
-
fixable: false,
|
|
25
|
-
defaults: {
|
|
26
|
-
message: 'List has %s item(s)',
|
|
27
|
-
min: 2,
|
|
28
|
-
// `max` is declared here with an `undefined` value (rather than
|
|
29
|
-
// omitted) purely so validate()'s accepted-option allowlist -- built
|
|
30
|
-
// from `Object.keys(tokenRule.defaults)` -- knows it's a real, accepted
|
|
31
|
-
// option (Object.keys includes keys whose value is `undefined`; see
|
|
32
|
-
// line-length/required-headings' identical precedent, fd197bb4ad7).
|
|
33
|
-
// It has NO literal default VALUE: `undefined` means "no upper bound",
|
|
34
|
-
// which is not the same as some literal number.
|
|
35
|
-
max: undefined,
|
|
36
|
-
},
|
|
37
|
-
check(ctx) {
|
|
38
|
-
const min = Number(ctx.config.min ?? 2);
|
|
39
|
-
const max = ctx.config.max === undefined ? undefined : Number(ctx.config.max);
|
|
40
|
-
for (const list of filterByPredicate(ctx.tree, isList, (token) => token.children)) {
|
|
41
|
-
const count = list.children.filter((token) => token.type === 'listItemPrefix').length;
|
|
42
|
-
// A list can violate at most one bound at a time (a valid config
|
|
43
|
-
// never has min > max, and validate() rejects one that does), so
|
|
44
|
-
// these are mutually exclusive branches rather than two independent
|
|
45
|
-
// checks.
|
|
46
|
-
if (count < min) {
|
|
47
|
-
ctx.onError({ line: list.startLine, context: String(count), detail: `minimum ${min}` });
|
|
48
|
-
}
|
|
49
|
-
else if (max !== undefined && count > max) {
|
|
50
|
-
ctx.onError({ line: list.startLine, context: String(count), detail: `maximum ${max}` });
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=list-length.js.map
|