chaffjs 0.18.0 → 0.20.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 +127 -53
- package/bin/chaff.js +17 -2
- package/dist/acronym-expansions.d.ts +26 -0
- package/dist/acronym-expansions.d.ts.map +1 -0
- package/dist/acronym-expansions.js +88 -0
- package/dist/acronym-expansions.js.map +1 -0
- package/dist/announced-count.d.ts.map +1 -1
- package/dist/announced-count.js +44 -10
- package/dist/announced-count.js.map +1 -1
- package/dist/announced-list.d.ts +30 -0
- package/dist/announced-list.d.ts.map +1 -0
- package/dist/announced-list.js +95 -0
- package/dist/announced-list.js.map +1 -0
- package/dist/api.d.ts +168 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +10 -0
- package/dist/api.js.map +1 -0
- package/dist/baseline.d.ts +11 -2
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +13 -4
- package/dist/baseline.js.map +1 -1
- package/dist/check-source.d.ts +32 -0
- package/dist/check-source.d.ts.map +1 -0
- package/dist/check-source.js +50 -0
- package/dist/check-source.js.map +1 -0
- package/dist/checks.js +3 -3
- package/dist/checks.js.map +1 -1
- package/dist/cli-args.d.ts +4 -0
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +6 -1
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-text.d.ts +3 -3
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +27 -18
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +86 -93
- package/dist/cli.js.map +1 -1
- package/dist/closing-paragraph.d.ts +7 -0
- package/dist/closing-paragraph.d.ts.map +1 -0
- package/dist/closing-paragraph.js +22 -0
- package/dist/closing-paragraph.js.map +1 -0
- package/dist/commands/compare.d.ts +11 -1
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +12 -18
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/document-commands.d.ts +9 -0
- package/dist/commands/document-commands.d.ts.map +1 -0
- package/dist/commands/document-commands.js +17 -0
- package/dist/commands/document-commands.js.map +1 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +5 -4
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/facts.d.ts +8 -0
- package/dist/commands/facts.d.ts.map +1 -0
- package/dist/commands/facts.js +30 -0
- package/dist/commands/facts.js.map +1 -0
- package/dist/commands/feedback.d.ts +10 -0
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +25 -1
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/fix-plan.d.ts +13 -0
- package/dist/commands/fix-plan.d.ts.map +1 -0
- package/dist/commands/fix-plan.js +46 -0
- package/dist/commands/fix-plan.js.map +1 -0
- package/dist/commands/grade-baseline.d.ts +15 -0
- package/dist/commands/grade-baseline.d.ts.map +1 -0
- package/dist/commands/grade-baseline.js +38 -0
- package/dist/commands/grade-baseline.js.map +1 -0
- package/dist/commands/grade.d.ts +19 -0
- package/dist/commands/grade.d.ts.map +1 -0
- package/dist/commands/grade.js +160 -0
- package/dist/commands/grade.js.map +1 -0
- package/dist/commands/outline.d.ts +8 -0
- package/dist/commands/outline.d.ts.map +1 -0
- package/dist/commands/outline.js +44 -0
- package/dist/commands/outline.js.map +1 -0
- package/dist/commands/read-document.d.ts +17 -0
- package/dist/commands/read-document.d.ts.map +1 -0
- package/dist/commands/read-document.js +22 -0
- package/dist/commands/read-document.js.map +1 -0
- package/dist/commands/suppressions.d.ts +7 -0
- package/dist/commands/suppressions.d.ts.map +1 -0
- package/dist/commands/suppressions.js +9 -0
- package/dist/commands/suppressions.js.map +1 -0
- package/dist/commands/test.js +3 -3
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/tree.d.ts +2 -0
- package/dist/commands/tree.d.ts.map +1 -1
- package/dist/commands/tree.js +19 -12
- package/dist/commands/tree.js.map +1 -1
- package/dist/compare/clock-time.d.ts.map +1 -1
- package/dist/compare/clock-time.js +5 -2
- package/dist/compare/clock-time.js.map +1 -1
- package/dist/compare/distinct.d.ts +9 -0
- package/dist/compare/distinct.d.ts.map +1 -0
- package/dist/compare/distinct.js +18 -0
- package/dist/compare/distinct.js.map +1 -0
- package/dist/compare/extract.d.ts.map +1 -1
- package/dist/compare/extract.js +7 -5
- package/dist/compare/extract.js.map +1 -1
- package/dist/compare/fact-key.d.ts +17 -0
- package/dist/compare/fact-key.d.ts.map +1 -0
- package/dist/compare/fact-key.js +25 -0
- package/dist/compare/fact-key.js.map +1 -0
- package/dist/compare/fact-text.d.ts +5 -0
- package/dist/compare/fact-text.d.ts.map +1 -1
- package/dist/compare/fact-text.js +16 -2
- package/dist/compare/fact-text.js.map +1 -1
- package/dist/compare/facts-render.d.ts +17 -0
- package/dist/compare/facts-render.d.ts.map +1 -0
- package/dist/compare/facts-render.js +43 -0
- package/dist/compare/facts-render.js.map +1 -0
- package/dist/compare/facts-text.d.ts +15 -0
- package/dist/compare/facts-text.d.ts.map +1 -0
- package/dist/compare/facts-text.js +27 -0
- package/dist/compare/facts-text.js.map +1 -0
- package/dist/compare/match.d.ts +1 -0
- package/dist/compare/match.d.ts.map +1 -1
- package/dist/compare/match.js +1 -1
- package/dist/compare/match.js.map +1 -1
- package/dist/compare/outcome.d.ts +4 -1
- package/dist/compare/outcome.d.ts.map +1 -1
- package/dist/compare/outcome.js +10 -4
- package/dist/compare/outcome.js.map +1 -1
- package/dist/compare/proper-nouns.d.ts +5 -3
- package/dist/compare/proper-nouns.d.ts.map +1 -1
- package/dist/compare/proper-nouns.js +10 -8
- package/dist/compare/proper-nouns.js.map +1 -1
- package/dist/compare/render.d.ts +4 -0
- package/dist/compare/render.d.ts.map +1 -1
- package/dist/compare/render.js +2 -2
- package/dist/compare/render.js.map +1 -1
- package/dist/compare/text-atoms.d.ts +5 -2
- package/dist/compare/text-atoms.d.ts.map +1 -1
- package/dist/compare/text-atoms.js +7 -5
- package/dist/compare/text-atoms.js.map +1 -1
- package/dist/compare/text.d.ts.map +1 -1
- package/dist/compare/text.js +2 -2
- package/dist/compare/text.js.map +1 -1
- package/dist/config/load.d.ts +12 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +5 -3
- package/dist/config/load.js.map +1 -1
- package/dist/config/option-problems.d.ts +3 -2
- package/dist/config/option-problems.d.ts.map +1 -1
- package/dist/config/option-problems.js +4 -3
- package/dist/config/option-problems.js.map +1 -1
- package/dist/config/style.d.ts +5 -0
- package/dist/config/style.d.ts.map +1 -1
- package/dist/config/style.js +13 -1
- package/dist/config/style.js.map +1 -1
- package/dist/config/yaml-file.d.ts +22 -0
- package/dist/config/yaml-file.d.ts.map +1 -0
- package/dist/config/yaml-file.js +59 -0
- package/dist/config/yaml-file.js.map +1 -0
- package/dist/correction-edit.d.ts +20 -0
- package/dist/correction-edit.d.ts.map +1 -0
- package/dist/correction-edit.js +34 -0
- package/dist/correction-edit.js.map +1 -0
- package/dist/cross-run.d.ts +15 -0
- package/dist/cross-run.d.ts.map +1 -0
- package/dist/cross-run.js +73 -0
- package/dist/cross-run.js.map +1 -0
- package/dist/cross-variants.d.ts +26 -0
- package/dist/cross-variants.d.ts.map +1 -0
- package/dist/cross-variants.js +40 -0
- package/dist/cross-variants.js.map +1 -0
- package/dist/cross-votes.d.ts +17 -0
- package/dist/cross-votes.d.ts.map +1 -0
- package/dist/cross-votes.js +24 -0
- package/dist/cross-votes.js.map +1 -0
- package/dist/custom/load.d.ts +6 -3
- package/dist/custom/load.d.ts.map +1 -1
- package/dist/custom/load.js +10 -2
- package/dist/custom/load.js.map +1 -1
- package/dist/custom/module-path.d.ts +11 -0
- package/dist/custom/module-path.d.ts.map +1 -0
- package/dist/custom/module-path.js +15 -0
- package/dist/custom/module-path.js.map +1 -0
- package/dist/custom/parse.d.ts +17 -3
- package/dist/custom/parse.d.ts.map +1 -1
- package/dist/custom/parse.js +57 -14
- package/dist/custom/parse.js.map +1 -1
- package/dist/custom/problems.d.ts +4 -1
- package/dist/custom/problems.d.ts.map +1 -1
- package/dist/custom/problems.js +56 -39
- package/dist/custom/problems.js.map +1 -1
- package/dist/date-format.d.ts +33 -0
- package/dist/date-format.d.ts.map +1 -0
- package/dist/date-format.js +87 -0
- package/dist/date-format.js.map +1 -0
- package/dist/derived/date-arithmetic.d.ts +22 -0
- package/dist/derived/date-arithmetic.d.ts.map +1 -0
- package/dist/derived/date-arithmetic.js +48 -0
- package/dist/derived/date-arithmetic.js.map +1 -0
- package/dist/derived/durations.d.ts +25 -0
- package/dist/derived/durations.d.ts.map +1 -0
- package/dist/derived/durations.js +38 -0
- package/dist/derived/durations.js.map +1 -0
- package/dist/derived/elapsed.d.ts +41 -0
- package/dist/derived/elapsed.d.ts.map +1 -0
- package/dist/derived/elapsed.js +66 -0
- package/dist/derived/elapsed.js.map +1 -0
- package/dist/derived/relative-dates.d.ts +35 -0
- package/dist/derived/relative-dates.d.ts.map +1 -0
- package/dist/derived/relative-dates.js +65 -0
- package/dist/derived/relative-dates.js.map +1 -0
- package/dist/derived/sentence-buckets.d.ts +4 -0
- package/dist/derived/sentence-buckets.d.ts.map +1 -0
- package/dist/derived/sentence-buckets.js +34 -0
- package/dist/derived/sentence-buckets.js.map +1 -0
- package/dist/detect-language.js +1 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +9 -3
- package/dist/detect.js.map +1 -1
- package/dist/detectors/absolute-exception.d.ts +4 -0
- package/dist/detectors/absolute-exception.d.ts.map +1 -0
- package/dist/detectors/absolute-exception.js +86 -0
- package/dist/detectors/absolute-exception.js.map +1 -0
- package/dist/detectors/abstract-length.d.ts +24 -0
- package/dist/detectors/abstract-length.d.ts.map +1 -0
- package/dist/detectors/abstract-length.js +108 -0
- package/dist/detectors/abstract-length.js.map +1 -0
- package/dist/detectors/ai-phrasing.d.ts +15 -3
- package/dist/detectors/ai-phrasing.d.ts.map +1 -1
- package/dist/detectors/ai-phrasing.js +15 -15
- package/dist/detectors/ai-phrasing.js.map +1 -1
- package/dist/detectors/ai-structure.d.ts +7 -0
- package/dist/detectors/ai-structure.d.ts.map +1 -0
- package/dist/detectors/ai-structure.js +26 -0
- package/dist/detectors/ai-structure.js.map +1 -0
- package/dist/detectors/blank-structure.d.ts +13 -0
- package/dist/detectors/blank-structure.d.ts.map +1 -0
- package/dist/detectors/blank-structure.js +124 -0
- package/dist/detectors/blank-structure.js.map +1 -0
- package/dist/detectors/bold-label.d.ts +10 -0
- package/dist/detectors/bold-label.d.ts.map +1 -0
- package/dist/detectors/bold-label.js +44 -0
- package/dist/detectors/bold-label.js.map +1 -0
- package/dist/detectors/chat-citation.d.ts +18 -0
- package/dist/detectors/chat-citation.d.ts.map +1 -0
- package/dist/detectors/chat-citation.js +41 -0
- package/dist/detectors/chat-citation.js.map +1 -0
- package/dist/detectors/citation-entry.d.ts +32 -0
- package/dist/detectors/citation-entry.d.ts.map +1 -0
- package/dist/detectors/citation-entry.js +62 -0
- package/dist/detectors/citation-entry.js.map +1 -0
- package/dist/detectors/citation-marks.d.ts +43 -0
- package/dist/detectors/citation-marks.d.ts.map +1 -0
- package/dist/detectors/citation-marks.js +151 -0
- package/dist/detectors/citation-marks.js.map +1 -0
- package/dist/detectors/citation-style.d.ts +16 -0
- package/dist/detectors/citation-style.d.ts.map +1 -0
- package/dist/detectors/citation-style.js +39 -0
- package/dist/detectors/citation-style.js.map +1 -0
- package/dist/detectors/cross-link.d.ts +15 -0
- package/dist/detectors/cross-link.d.ts.map +1 -0
- package/dist/detectors/cross-link.js +74 -0
- package/dist/detectors/cross-link.js.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.d.ts +3 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.d.ts.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.js +3 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.js.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.d.ts +3 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.d.ts.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.js +3 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.js.map +1 -0
- package/dist/detectors/cross-variant.d.ts +4 -0
- package/dist/detectors/cross-variant.d.ts.map +1 -0
- package/dist/detectors/cross-variant.js +62 -0
- package/dist/detectors/cross-variant.js.map +1 -0
- package/dist/detectors/dangling-figure.d.ts +5 -2
- package/dist/detectors/dangling-figure.d.ts.map +1 -1
- package/dist/detectors/dangling-figure.js +5 -3
- package/dist/detectors/dangling-figure.js.map +1 -1
- package/dist/detectors/date-format.d.ts +3 -0
- package/dist/detectors/date-format.d.ts.map +1 -0
- package/dist/detectors/date-format.js +26 -0
- package/dist/detectors/date-format.js.map +1 -0
- package/dist/detectors/date-year.d.ts +23 -0
- package/dist/detectors/date-year.d.ts.map +1 -0
- package/dist/detectors/date-year.js +71 -0
- package/dist/detectors/date-year.js.map +1 -0
- package/dist/detectors/definition-use.d.ts +8 -0
- package/dist/detectors/definition-use.d.ts.map +1 -0
- package/dist/detectors/definition-use.js +32 -0
- package/dist/detectors/definition-use.js.map +1 -0
- package/dist/detectors/derived-numbers.d.ts +6 -0
- package/dist/detectors/derived-numbers.d.ts.map +1 -0
- package/dist/detectors/derived-numbers.js +155 -0
- package/dist/detectors/derived-numbers.js.map +1 -0
- package/dist/detectors/document-shape.d.ts +18 -0
- package/dist/detectors/document-shape.d.ts.map +1 -0
- package/dist/detectors/document-shape.js +94 -0
- package/dist/detectors/document-shape.js.map +1 -0
- package/dist/detectors/doubled-punctuation.d.ts.map +1 -1
- package/dist/detectors/doubled-punctuation.js +4 -2
- package/dist/detectors/doubled-punctuation.js.map +1 -1
- package/dist/detectors/duplicate-heading.d.ts +14 -0
- package/dist/detectors/duplicate-heading.d.ts.map +1 -0
- package/dist/detectors/duplicate-heading.js +39 -0
- package/dist/detectors/duplicate-heading.js.map +1 -0
- package/dist/detectors/emoji-heading.d.ts +7 -0
- package/dist/detectors/emoji-heading.d.ts.map +1 -0
- package/dist/detectors/emoji-heading.js +14 -0
- package/dist/detectors/emoji-heading.js.map +1 -0
- package/dist/detectors/empty-section.d.ts +8 -0
- package/dist/detectors/empty-section.d.ts.map +1 -0
- package/dist/detectors/empty-section.js +16 -0
- package/dist/detectors/empty-section.js.map +1 -0
- package/dist/detectors/fact-consistency.d.ts +8 -0
- package/dist/detectors/fact-consistency.d.ts.map +1 -0
- package/dist/detectors/fact-consistency.js +44 -0
- package/dist/detectors/fact-consistency.js.map +1 -0
- package/dist/detectors/figure-order.d.ts +28 -0
- package/dist/detectors/figure-order.d.ts.map +1 -0
- package/dist/detectors/figure-order.js +65 -0
- package/dist/detectors/figure-order.js.map +1 -0
- package/dist/detectors/fullwidth-alnum.d.ts +24 -0
- package/dist/detectors/fullwidth-alnum.d.ts.map +1 -0
- package/dist/detectors/fullwidth-alnum.js +88 -0
- package/dist/detectors/fullwidth-alnum.js.map +1 -0
- package/dist/detectors/hankaku-kana.d.ts +9 -0
- package/dist/detectors/hankaku-kana.d.ts.map +1 -0
- package/dist/detectors/hankaku-kana.js +27 -0
- package/dist/detectors/hankaku-kana.js.map +1 -0
- package/dist/detectors/heading-code-words.js +2 -2
- package/dist/detectors/heading-code-words.js.map +1 -1
- package/dist/detectors/heading-numbering.d.ts +7 -0
- package/dist/detectors/heading-numbering.d.ts.map +1 -0
- package/dist/detectors/heading-numbering.js +34 -0
- package/dist/detectors/heading-numbering.js.map +1 -0
- package/dist/detectors/index.d.ts +3 -1
- package/dist/detectors/index.d.ts.map +1 -1
- package/dist/detectors/index.js +9 -104
- package/dist/detectors/index.js.map +1 -1
- package/dist/detectors/invisible-character.d.ts +20 -0
- package/dist/detectors/invisible-character.d.ts.map +1 -0
- package/dist/detectors/invisible-character.js +143 -0
- package/dist/detectors/invisible-character.js.map +1 -0
- package/dist/detectors/katakana-density.d.ts +11 -0
- package/dist/detectors/katakana-density.d.ts.map +1 -0
- package/dist/detectors/katakana-density.js +47 -0
- package/dist/detectors/katakana-density.js.map +1 -0
- package/dist/detectors/known-correction.d.ts +7 -0
- package/dist/detectors/known-correction.d.ts.map +1 -0
- package/dist/detectors/known-correction.js +63 -0
- package/dist/detectors/known-correction.js.map +1 -0
- package/dist/detectors/kutoten-consistency.js +2 -2
- package/dist/detectors/kutoten-consistency.js.map +1 -1
- package/dist/detectors/lexicon-match.d.ts +10 -1
- package/dist/detectors/lexicon-match.d.ts.map +1 -1
- package/dist/detectors/lexicon-match.js +26 -1
- package/dist/detectors/lexicon-match.js.map +1 -1
- package/dist/detectors/lexicon.d.ts +9 -1
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +34 -13
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/list-parallel.d.ts +12 -0
- package/dist/detectors/list-parallel.d.ts.map +1 -0
- package/dist/detectors/list-parallel.js +135 -0
- package/dist/detectors/list-parallel.js.map +1 -0
- package/dist/detectors/list-sentence.d.ts +3 -1
- package/dist/detectors/list-sentence.d.ts.map +1 -1
- package/dist/detectors/list-sentence.js +26 -1
- package/dist/detectors/list-sentence.js.map +1 -1
- package/dist/detectors/long-vowel.d.ts +17 -1
- package/dist/detectors/long-vowel.d.ts.map +1 -1
- package/dist/detectors/long-vowel.js +20 -6
- package/dist/detectors/long-vowel.js.map +1 -1
- package/dist/detectors/markup-finding.d.ts +3 -1
- package/dist/detectors/markup-finding.d.ts.map +1 -1
- package/dist/detectors/markup-finding.js +10 -0
- package/dist/detectors/markup-finding.js.map +1 -1
- package/dist/detectors/misuse-match.d.ts +7 -0
- package/dist/detectors/misuse-match.d.ts.map +1 -0
- package/dist/detectors/misuse-match.js +23 -0
- package/dist/detectors/misuse-match.js.map +1 -0
- package/dist/detectors/modal-conflict.d.ts +6 -0
- package/dist/detectors/modal-conflict.d.ts.map +1 -0
- package/dist/detectors/modal-conflict.js +22 -0
- package/dist/detectors/modal-conflict.js.map +1 -0
- package/dist/detectors/name-variant.d.ts +4 -0
- package/dist/detectors/name-variant.d.ts.map +1 -0
- package/dist/detectors/name-variant.js +13 -0
- package/dist/detectors/name-variant.js.map +1 -0
- package/dist/detectors/next-word.d.ts +22 -0
- package/dist/detectors/next-word.d.ts.map +1 -0
- package/dist/detectors/next-word.js +125 -0
- package/dist/detectors/next-word.js.map +1 -0
- package/dist/detectors/nominalization.d.ts +11 -0
- package/dist/detectors/nominalization.d.ts.map +1 -0
- package/dist/detectors/nominalization.js +56 -0
- package/dist/detectors/nominalization.js.map +1 -0
- package/dist/detectors/number-style.d.ts +31 -0
- package/dist/detectors/number-style.d.ts.map +1 -0
- package/dist/detectors/number-style.js +182 -0
- package/dist/detectors/number-style.js.map +1 -0
- package/dist/detectors/number-unit.d.ts +35 -0
- package/dist/detectors/number-unit.d.ts.map +1 -0
- package/dist/detectors/number-unit.js +121 -0
- package/dist/detectors/number-unit.js.map +1 -0
- package/dist/detectors/orthographic-variant.d.ts +8 -0
- package/dist/detectors/orthographic-variant.d.ts.map +1 -0
- package/dist/detectors/orthographic-variant.js +130 -0
- package/dist/detectors/orthographic-variant.js.map +1 -0
- package/dist/detectors/orthography.d.ts.map +1 -1
- package/dist/detectors/orthography.js +59 -28
- package/dist/detectors/orthography.js.map +1 -1
- package/dist/detectors/outside-announced-list.d.ts +4 -0
- package/dist/detectors/outside-announced-list.d.ts.map +1 -0
- package/dist/detectors/outside-announced-list.js +24 -0
- package/dist/detectors/outside-announced-list.js.map +1 -0
- package/dist/detectors/oxford-comma.d.ts.map +1 -1
- package/dist/detectors/oxford-comma.js +1 -0
- package/dist/detectors/oxford-comma.js.map +1 -1
- package/dist/detectors/paragraph-restatement.d.ts +11 -0
- package/dist/detectors/paragraph-restatement.d.ts.map +1 -0
- package/dist/detectors/paragraph-restatement.js +61 -0
- package/dist/detectors/paragraph-restatement.js.map +1 -0
- package/dist/detectors/paragraph-run.d.ts +7 -0
- package/dist/detectors/paragraph-run.d.ts.map +1 -0
- package/dist/detectors/paragraph-run.js +25 -0
- package/dist/detectors/paragraph-run.js.map +1 -0
- package/dist/detectors/person-consistency.d.ts +7 -0
- package/dist/detectors/person-consistency.d.ts.map +1 -0
- package/dist/detectors/person-consistency.js +25 -0
- package/dist/detectors/person-consistency.js.map +1 -0
- package/dist/detectors/phrase-match.d.ts +4 -1
- package/dist/detectors/phrase-match.d.ts.map +1 -1
- package/dist/detectors/phrase-match.js +26 -7
- package/dist/detectors/phrase-match.js.map +1 -1
- package/dist/detectors/placeholder-text.d.ts +1 -1
- package/dist/detectors/placeholder-text.d.ts.map +1 -1
- package/dist/detectors/placeholder-text.js +54 -4
- package/dist/detectors/placeholder-text.js.map +1 -1
- package/dist/detectors/ra-nuki.d.ts +9 -0
- package/dist/detectors/ra-nuki.d.ts.map +1 -0
- package/dist/detectors/ra-nuki.js +30 -0
- package/dist/detectors/ra-nuki.js.map +1 -0
- package/dist/detectors/reference-text.d.ts +6 -0
- package/dist/detectors/reference-text.d.ts.map +1 -0
- package/dist/detectors/reference-text.js +38 -0
- package/dist/detectors/reference-text.js.map +1 -0
- package/dist/detectors/registry/absolute-exception.d.ts +3 -0
- package/dist/detectors/registry/absolute-exception.d.ts.map +1 -0
- package/dist/detectors/registry/absolute-exception.js +3 -0
- package/dist/detectors/registry/absolute-exception.js.map +1 -0
- package/dist/detectors/registry/abstract-length.d.ts +3 -0
- package/dist/detectors/registry/abstract-length.d.ts.map +1 -0
- package/dist/detectors/registry/abstract-length.js +3 -0
- package/dist/detectors/registry/abstract-length.js.map +1 -0
- package/dist/detectors/registry/acronym-expansion-conflict.d.ts +3 -0
- package/dist/detectors/registry/acronym-expansion-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/acronym-expansion-conflict.js +3 -0
- package/dist/detectors/registry/acronym-expansion-conflict.js.map +1 -0
- package/dist/detectors/registry/adverb-density.d.ts +3 -0
- package/dist/detectors/registry/adverb-density.d.ts.map +1 -0
- package/dist/detectors/registry/adverb-density.js +3 -0
- package/dist/detectors/registry/adverb-density.js.map +1 -0
- package/dist/detectors/registry/agentless-passive.d.ts +3 -0
- package/dist/detectors/registry/agentless-passive.d.ts.map +1 -0
- package/dist/detectors/registry/agentless-passive.js +3 -0
- package/dist/detectors/registry/agentless-passive.js.map +1 -0
- package/dist/detectors/registry/agreement-slip.d.ts +3 -0
- package/dist/detectors/registry/agreement-slip.d.ts.map +1 -0
- package/dist/detectors/registry/agreement-slip.js +3 -0
- package/dist/detectors/registry/agreement-slip.js.map +1 -0
- package/dist/detectors/registry/ai-structure.d.ts +3 -0
- package/dist/detectors/registry/ai-structure.d.ts.map +1 -0
- package/dist/detectors/registry/ai-structure.js +3 -0
- package/dist/detectors/registry/ai-structure.js.map +1 -0
- package/dist/detectors/registry/ai-tell.d.ts +3 -0
- package/dist/detectors/registry/ai-tell.d.ts.map +1 -0
- package/dist/detectors/registry/ai-tell.js +3 -0
- package/dist/detectors/registry/ai-tell.js.map +1 -0
- package/dist/detectors/registry/announced-count.d.ts +3 -0
- package/dist/detectors/registry/announced-count.d.ts.map +1 -0
- package/dist/detectors/registry/announced-count.js +3 -0
- package/dist/detectors/registry/announced-count.js.map +1 -0
- package/dist/detectors/registry/article-sound.d.ts +3 -0
- package/dist/detectors/registry/article-sound.d.ts.map +1 -0
- package/dist/detectors/registry/article-sound.js +3 -0
- package/dist/detectors/registry/article-sound.js.map +1 -0
- package/dist/detectors/registry/assistant-residue.d.ts +3 -0
- package/dist/detectors/registry/assistant-residue.d.ts.map +1 -0
- package/dist/detectors/registry/assistant-residue.js +3 -0
- package/dist/detectors/registry/assistant-residue.js.map +1 -0
- package/dist/detectors/registry/bold-label-list.d.ts +3 -0
- package/dist/detectors/registry/bold-label-list.d.ts.map +1 -0
- package/dist/detectors/registry/bold-label-list.js +3 -0
- package/dist/detectors/registry/bold-label-list.js.map +1 -0
- package/dist/detectors/registry/bracket-nesting.d.ts +3 -0
- package/dist/detectors/registry/bracket-nesting.d.ts.map +1 -0
- package/dist/detectors/registry/bracket-nesting.js +3 -0
- package/dist/detectors/registry/bracket-nesting.js.map +1 -0
- package/dist/detectors/registry/broken-link.d.ts +3 -0
- package/dist/detectors/registry/broken-link.d.ts.map +1 -0
- package/dist/detectors/registry/broken-link.js +3 -0
- package/dist/detectors/registry/broken-link.js.map +1 -0
- package/dist/detectors/registry/chat-citation-residue.d.ts +3 -0
- package/dist/detectors/registry/chat-citation-residue.d.ts.map +1 -0
- package/dist/detectors/registry/chat-citation-residue.js +3 -0
- package/dist/detectors/registry/chat-citation-residue.js.map +1 -0
- package/dist/detectors/registry/citation-entry.d.ts +3 -0
- package/dist/detectors/registry/citation-entry.d.ts.map +1 -0
- package/dist/detectors/registry/citation-entry.js +3 -0
- package/dist/detectors/registry/citation-entry.js.map +1 -0
- package/dist/detectors/registry/citation-style.d.ts +3 -0
- package/dist/detectors/registry/citation-style.d.ts.map +1 -0
- package/dist/detectors/registry/citation-style.js +3 -0
- package/dist/detectors/registry/citation-style.js.map +1 -0
- package/dist/detectors/registry/clause-chain.d.ts +3 -0
- package/dist/detectors/registry/clause-chain.d.ts.map +1 -0
- package/dist/detectors/registry/clause-chain.js +3 -0
- package/dist/detectors/registry/clause-chain.js.map +1 -0
- package/dist/detectors/registry/colon-lead-in.d.ts +3 -0
- package/dist/detectors/registry/colon-lead-in.d.ts.map +1 -0
- package/dist/detectors/registry/colon-lead-in.js +3 -0
- package/dist/detectors/registry/colon-lead-in.js.map +1 -0
- package/dist/detectors/registry/concrete-evidence.d.ts +3 -0
- package/dist/detectors/registry/concrete-evidence.d.ts.map +1 -0
- package/dist/detectors/registry/concrete-evidence.js +3 -0
- package/dist/detectors/registry/concrete-evidence.js.map +1 -0
- package/dist/detectors/registry/conjunction-run.d.ts +3 -0
- package/dist/detectors/registry/conjunction-run.d.ts.map +1 -0
- package/dist/detectors/registry/conjunction-run.js +3 -0
- package/dist/detectors/registry/conjunction-run.js.map +1 -0
- package/dist/detectors/registry/contraction-mix.d.ts +3 -0
- package/dist/detectors/registry/contraction-mix.d.ts.map +1 -0
- package/dist/detectors/registry/contraction-mix.js +3 -0
- package/dist/detectors/registry/contraction-mix.js.map +1 -0
- package/dist/detectors/registry/contrast-framing.d.ts +3 -0
- package/dist/detectors/registry/contrast-framing.d.ts.map +1 -0
- package/dist/detectors/registry/contrast-framing.js +3 -0
- package/dist/detectors/registry/contrast-framing.js.map +1 -0
- package/dist/detectors/registry/count-per-section.d.ts +3 -0
- package/dist/detectors/registry/count-per-section.d.ts.map +1 -0
- package/dist/detectors/registry/count-per-section.js +3 -0
- package/dist/detectors/registry/count-per-section.js.map +1 -0
- package/dist/detectors/registry/cushion-density.d.ts +3 -0
- package/dist/detectors/registry/cushion-density.d.ts.map +1 -0
- package/dist/detectors/registry/cushion-density.js +3 -0
- package/dist/detectors/registry/cushion-density.js.map +1 -0
- package/dist/detectors/registry/custom-pattern.d.ts +3 -0
- package/dist/detectors/registry/custom-pattern.d.ts.map +1 -0
- package/dist/detectors/registry/custom-pattern.js +3 -0
- package/dist/detectors/registry/custom-pattern.js.map +1 -0
- package/dist/detectors/registry/custom-tokens.d.ts +3 -0
- package/dist/detectors/registry/custom-tokens.d.ts.map +1 -0
- package/dist/detectors/registry/custom-tokens.js +3 -0
- package/dist/detectors/registry/custom-tokens.js.map +1 -0
- package/dist/detectors/registry/custom-words.d.ts +3 -0
- package/dist/detectors/registry/custom-words.d.ts.map +1 -0
- package/dist/detectors/registry/custom-words.js +3 -0
- package/dist/detectors/registry/custom-words.js.map +1 -0
- package/dist/detectors/registry/dangling-figure.d.ts +3 -0
- package/dist/detectors/registry/dangling-figure.d.ts.map +1 -0
- package/dist/detectors/registry/dangling-figure.js +3 -0
- package/dist/detectors/registry/dangling-figure.js.map +1 -0
- package/dist/detectors/registry/dangling-reference.d.ts +3 -0
- package/dist/detectors/registry/dangling-reference.d.ts.map +1 -0
- package/dist/detectors/registry/dangling-reference.js +3 -0
- package/dist/detectors/registry/dangling-reference.js.map +1 -0
- package/dist/detectors/registry/dash-density.d.ts +3 -0
- package/dist/detectors/registry/dash-density.d.ts.map +1 -0
- package/dist/detectors/registry/dash-density.js +3 -0
- package/dist/detectors/registry/dash-density.js.map +1 -0
- package/dist/detectors/registry/date-format.d.ts +3 -0
- package/dist/detectors/registry/date-format.d.ts.map +1 -0
- package/dist/detectors/registry/date-format.js +3 -0
- package/dist/detectors/registry/date-format.js.map +1 -0
- package/dist/detectors/registry/date-order.d.ts +3 -0
- package/dist/detectors/registry/date-order.d.ts.map +1 -0
- package/dist/detectors/registry/date-order.js +3 -0
- package/dist/detectors/registry/date-order.js.map +1 -0
- package/dist/detectors/registry/date-range-reversed.d.ts +3 -0
- package/dist/detectors/registry/date-range-reversed.d.ts.map +1 -0
- package/dist/detectors/registry/date-range-reversed.js +3 -0
- package/dist/detectors/registry/date-range-reversed.js.map +1 -0
- package/dist/detectors/registry/date-weekday-mismatch.d.ts +3 -0
- package/dist/detectors/registry/date-weekday-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/date-weekday-mismatch.js +3 -0
- package/dist/detectors/registry/date-weekday-mismatch.js.map +1 -0
- package/dist/detectors/registry/date-without-year.d.ts +3 -0
- package/dist/detectors/registry/date-without-year.d.ts.map +1 -0
- package/dist/detectors/registry/date-without-year.js +3 -0
- package/dist/detectors/registry/date-without-year.js.map +1 -0
- package/dist/detectors/registry/doubled-particle.d.ts +3 -0
- package/dist/detectors/registry/doubled-particle.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-particle.js +3 -0
- package/dist/detectors/registry/doubled-particle.js.map +1 -0
- package/dist/detectors/registry/doubled-punctuation.d.ts +3 -0
- package/dist/detectors/registry/doubled-punctuation.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-punctuation.js +3 -0
- package/dist/detectors/registry/doubled-punctuation.js.map +1 -0
- package/dist/detectors/registry/doubled-word.d.ts +3 -0
- package/dist/detectors/registry/doubled-word.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-word.js +3 -0
- package/dist/detectors/registry/doubled-word.js.map +1 -0
- package/dist/detectors/registry/duplicate-definition.d.ts +3 -0
- package/dist/detectors/registry/duplicate-definition.d.ts.map +1 -0
- package/dist/detectors/registry/duplicate-definition.js +3 -0
- package/dist/detectors/registry/duplicate-definition.js.map +1 -0
- package/dist/detectors/registry/duplicate-heading.d.ts +3 -0
- package/dist/detectors/registry/duplicate-heading.d.ts.map +1 -0
- package/dist/detectors/registry/duplicate-heading.js +3 -0
- package/dist/detectors/registry/duplicate-heading.js.map +1 -0
- package/dist/detectors/registry/duration-mismatch.d.ts +3 -0
- package/dist/detectors/registry/duration-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/duration-mismatch.js +3 -0
- package/dist/detectors/registry/duration-mismatch.js.map +1 -0
- package/dist/detectors/registry/elapsed-years-mismatch.d.ts +3 -0
- package/dist/detectors/registry/elapsed-years-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/elapsed-years-mismatch.js +3 -0
- package/dist/detectors/registry/elapsed-years-mismatch.js.map +1 -0
- package/dist/detectors/registry/emoji-density.d.ts +3 -0
- package/dist/detectors/registry/emoji-density.d.ts.map +1 -0
- package/dist/detectors/registry/emoji-density.js +3 -0
- package/dist/detectors/registry/emoji-density.js.map +1 -0
- package/dist/detectors/registry/emoji-heading.d.ts +3 -0
- package/dist/detectors/registry/emoji-heading.d.ts.map +1 -0
- package/dist/detectors/registry/emoji-heading.js +3 -0
- package/dist/detectors/registry/emoji-heading.js.map +1 -0
- package/dist/detectors/registry/empty-list-item.d.ts +3 -0
- package/dist/detectors/registry/empty-list-item.d.ts.map +1 -0
- package/dist/detectors/registry/empty-list-item.js +3 -0
- package/dist/detectors/registry/empty-list-item.js.map +1 -0
- package/dist/detectors/registry/empty-section.d.ts +3 -0
- package/dist/detectors/registry/empty-section.d.ts.map +1 -0
- package/dist/detectors/registry/empty-section.js +3 -0
- package/dist/detectors/registry/empty-section.js.map +1 -0
- package/dist/detectors/registry/empty-table-cell.d.ts +3 -0
- package/dist/detectors/registry/empty-table-cell.d.ts.map +1 -0
- package/dist/detectors/registry/empty-table-cell.js +3 -0
- package/dist/detectors/registry/empty-table-cell.js.map +1 -0
- package/dist/detectors/registry/expletive.d.ts +3 -0
- package/dist/detectors/registry/expletive.d.ts.map +1 -0
- package/dist/detectors/registry/expletive.js +3 -0
- package/dist/detectors/registry/expletive.js.map +1 -0
- package/dist/detectors/registry/fact-conflict.d.ts +3 -0
- package/dist/detectors/registry/fact-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/fact-conflict.js +3 -0
- package/dist/detectors/registry/fact-conflict.js.map +1 -0
- package/dist/detectors/registry/figure-order.d.ts +3 -0
- package/dist/detectors/registry/figure-order.d.ts.map +1 -0
- package/dist/detectors/registry/figure-order.js +3 -0
- package/dist/detectors/registry/figure-order.js.map +1 -0
- package/dist/detectors/registry/fullwidth-alnum.d.ts +3 -0
- package/dist/detectors/registry/fullwidth-alnum.d.ts.map +1 -0
- package/dist/detectors/registry/fullwidth-alnum.js +3 -0
- package/dist/detectors/registry/fullwidth-alnum.js.map +1 -0
- package/dist/detectors/registry/hankaku-kana.d.ts +3 -0
- package/dist/detectors/registry/hankaku-kana.d.ts.map +1 -0
- package/dist/detectors/registry/hankaku-kana.js +3 -0
- package/dist/detectors/registry/hankaku-kana.js.map +1 -0
- package/dist/detectors/registry/heading-echo.d.ts +3 -0
- package/dist/detectors/registry/heading-echo.d.ts.map +1 -0
- package/dist/detectors/registry/heading-echo.js +3 -0
- package/dist/detectors/registry/heading-echo.js.map +1 -0
- package/dist/detectors/registry/heading-level-skip.d.ts +3 -0
- package/dist/detectors/registry/heading-level-skip.d.ts.map +1 -0
- package/dist/detectors/registry/heading-level-skip.js +3 -0
- package/dist/detectors/registry/heading-level-skip.js.map +1 -0
- package/dist/detectors/registry/heading-numbering.d.ts +3 -0
- package/dist/detectors/registry/heading-numbering.d.ts.map +1 -0
- package/dist/detectors/registry/heading-numbering.js +3 -0
- package/dist/detectors/registry/heading-numbering.js.map +1 -0
- package/dist/detectors/registry/hedging.d.ts +3 -0
- package/dist/detectors/registry/hedging.d.ts.map +1 -0
- package/dist/detectors/registry/hedging.js +3 -0
- package/dist/detectors/registry/hedging.js.map +1 -0
- package/dist/detectors/registry/image-alt-text.d.ts +3 -0
- package/dist/detectors/registry/image-alt-text.d.ts.map +1 -0
- package/dist/detectors/registry/image-alt-text.js +3 -0
- package/dist/detectors/registry/image-alt-text.js.map +1 -0
- package/dist/detectors/registry/intensified-adjective.d.ts +3 -0
- package/dist/detectors/registry/intensified-adjective.d.ts.map +1 -0
- package/dist/detectors/registry/intensified-adjective.js +3 -0
- package/dist/detectors/registry/intensified-adjective.js.map +1 -0
- package/dist/detectors/registry/internal-jargon.d.ts +3 -0
- package/dist/detectors/registry/internal-jargon.d.ts.map +1 -0
- package/dist/detectors/registry/internal-jargon.js +3 -0
- package/dist/detectors/registry/internal-jargon.js.map +1 -0
- package/dist/detectors/registry/invisible-character.d.ts +3 -0
- package/dist/detectors/registry/invisible-character.d.ts.map +1 -0
- package/dist/detectors/registry/invisible-character.js +3 -0
- package/dist/detectors/registry/invisible-character.js.map +1 -0
- package/dist/detectors/registry/kanji-run.d.ts +3 -0
- package/dist/detectors/registry/kanji-run.d.ts.map +1 -0
- package/dist/detectors/registry/kanji-run.js +3 -0
- package/dist/detectors/registry/kanji-run.js.map +1 -0
- package/dist/detectors/registry/katakana-density.d.ts +3 -0
- package/dist/detectors/registry/katakana-density.d.ts.map +1 -0
- package/dist/detectors/registry/katakana-density.js +3 -0
- package/dist/detectors/registry/katakana-density.js.map +1 -0
- package/dist/detectors/registry/katakana-long-vowel.d.ts +3 -0
- package/dist/detectors/registry/katakana-long-vowel.d.ts.map +1 -0
- package/dist/detectors/registry/katakana-long-vowel.js +3 -0
- package/dist/detectors/registry/katakana-long-vowel.js.map +1 -0
- package/dist/detectors/registry/known-correction.d.ts +3 -0
- package/dist/detectors/registry/known-correction.d.ts.map +1 -0
- package/dist/detectors/registry/known-correction.js +3 -0
- package/dist/detectors/registry/known-correction.js.map +1 -0
- package/dist/detectors/registry/kutoten-consistency.d.ts +3 -0
- package/dist/detectors/registry/kutoten-consistency.d.ts.map +1 -0
- package/dist/detectors/registry/kutoten-consistency.js +3 -0
- package/dist/detectors/registry/kutoten-consistency.js.map +1 -0
- package/dist/detectors/registry/latin-spacing.d.ts +3 -0
- package/dist/detectors/registry/latin-spacing.d.ts.map +1 -0
- package/dist/detectors/registry/latin-spacing.js +3 -0
- package/dist/detectors/registry/latin-spacing.js.map +1 -0
- package/dist/detectors/registry/list-item-form-mix.d.ts +3 -0
- package/dist/detectors/registry/list-item-form-mix.d.ts.map +1 -0
- package/dist/detectors/registry/list-item-form-mix.js +3 -0
- package/dist/detectors/registry/list-item-form-mix.js.map +1 -0
- package/dist/detectors/registry/middle-dot.d.ts +3 -0
- package/dist/detectors/registry/middle-dot.d.ts.map +1 -0
- package/dist/detectors/registry/middle-dot.js +3 -0
- package/dist/detectors/registry/middle-dot.js.map +1 -0
- package/dist/detectors/registry/misuse-match.d.ts +3 -0
- package/dist/detectors/registry/misuse-match.d.ts.map +1 -0
- package/dist/detectors/registry/misuse-match.js +3 -0
- package/dist/detectors/registry/misuse-match.js.map +1 -0
- package/dist/detectors/registry/modal-conflict.d.ts +3 -0
- package/dist/detectors/registry/modal-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/modal-conflict.js +3 -0
- package/dist/detectors/registry/modal-conflict.js.map +1 -0
- package/dist/detectors/registry/name-variant.d.ts +3 -0
- package/dist/detectors/registry/name-variant.d.ts.map +1 -0
- package/dist/detectors/registry/name-variant.js +3 -0
- package/dist/detectors/registry/name-variant.js.map +1 -0
- package/dist/detectors/registry/ngram-repetition.d.ts +3 -0
- package/dist/detectors/registry/ngram-repetition.d.ts.map +1 -0
- package/dist/detectors/registry/ngram-repetition.js +3 -0
- package/dist/detectors/registry/ngram-repetition.js.map +1 -0
- package/dist/detectors/registry/no-lead.d.ts +3 -0
- package/dist/detectors/registry/no-lead.d.ts.map +1 -0
- package/dist/detectors/registry/no-lead.js +3 -0
- package/dist/detectors/registry/no-lead.js.map +1 -0
- package/dist/detectors/registry/nominalization.d.ts +3 -0
- package/dist/detectors/registry/nominalization.d.ts.map +1 -0
- package/dist/detectors/registry/nominalization.js +3 -0
- package/dist/detectors/registry/nominalization.js.map +1 -0
- package/dist/detectors/registry/noun-ending.d.ts +3 -0
- package/dist/detectors/registry/noun-ending.d.ts.map +1 -0
- package/dist/detectors/registry/noun-ending.js +3 -0
- package/dist/detectors/registry/noun-ending.js.map +1 -0
- package/dist/detectors/registry/number-style-consistency.d.ts +3 -0
- package/dist/detectors/registry/number-style-consistency.d.ts.map +1 -0
- package/dist/detectors/registry/number-style-consistency.js +3 -0
- package/dist/detectors/registry/number-style-consistency.js.map +1 -0
- package/dist/detectors/registry/number-without-unit.d.ts +3 -0
- package/dist/detectors/registry/number-without-unit.d.ts.map +1 -0
- package/dist/detectors/registry/number-without-unit.js +3 -0
- package/dist/detectors/registry/number-without-unit.js.map +1 -0
- package/dist/detectors/registry/numbering-gap.d.ts +3 -0
- package/dist/detectors/registry/numbering-gap.d.ts.map +1 -0
- package/dist/detectors/registry/numbering-gap.js +3 -0
- package/dist/detectors/registry/numbering-gap.js.map +1 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.d.ts +3 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.d.ts.map +1 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.js +3 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.js.map +1 -0
- package/dist/detectors/registry/opener-pile.d.ts +3 -0
- package/dist/detectors/registry/opener-pile.d.ts.map +1 -0
- package/dist/detectors/registry/opener-pile.js +3 -0
- package/dist/detectors/registry/opener-pile.js.map +1 -0
- package/dist/detectors/registry/opener-run.d.ts +3 -0
- package/dist/detectors/registry/opener-run.d.ts.map +1 -0
- package/dist/detectors/registry/opener-run.js +3 -0
- package/dist/detectors/registry/opener-run.js.map +1 -0
- package/dist/detectors/registry/orthographic-variant.d.ts +3 -0
- package/dist/detectors/registry/orthographic-variant.d.ts.map +1 -0
- package/dist/detectors/registry/orthographic-variant.js +3 -0
- package/dist/detectors/registry/orthographic-variant.js.map +1 -0
- package/dist/detectors/registry/outside-announced-list.d.ts +3 -0
- package/dist/detectors/registry/outside-announced-list.d.ts.map +1 -0
- package/dist/detectors/registry/outside-announced-list.js +3 -0
- package/dist/detectors/registry/outside-announced-list.js.map +1 -0
- package/dist/detectors/registry/oxford-comma.d.ts +3 -0
- package/dist/detectors/registry/oxford-comma.d.ts.map +1 -0
- package/dist/detectors/registry/oxford-comma.js +3 -0
- package/dist/detectors/registry/oxford-comma.js.map +1 -0
- package/dist/detectors/registry/paragraph-length.d.ts +3 -0
- package/dist/detectors/registry/paragraph-length.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-length.js +3 -0
- package/dist/detectors/registry/paragraph-length.js.map +1 -0
- package/dist/detectors/registry/paragraph-restatement.d.ts +3 -0
- package/dist/detectors/registry/paragraph-restatement.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-restatement.js +3 -0
- package/dist/detectors/registry/paragraph-restatement.js.map +1 -0
- package/dist/detectors/registry/paragraph-variance.d.ts +3 -0
- package/dist/detectors/registry/paragraph-variance.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-variance.js +3 -0
- package/dist/detectors/registry/paragraph-variance.js.map +1 -0
- package/dist/detectors/registry/percent-sum-mismatch.d.ts +3 -0
- package/dist/detectors/registry/percent-sum-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/percent-sum-mismatch.js +3 -0
- package/dist/detectors/registry/percent-sum-mismatch.js.map +1 -0
- package/dist/detectors/registry/person-mix.d.ts +3 -0
- package/dist/detectors/registry/person-mix.d.ts.map +1 -0
- package/dist/detectors/registry/person-mix.js +3 -0
- package/dist/detectors/registry/person-mix.js.map +1 -0
- package/dist/detectors/registry/phrase-count.d.ts +3 -0
- package/dist/detectors/registry/phrase-count.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-count.js +3 -0
- package/dist/detectors/registry/phrase-count.js.map +1 -0
- package/dist/detectors/registry/phrase-density.d.ts +3 -0
- package/dist/detectors/registry/phrase-density.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-density.js +3 -0
- package/dist/detectors/registry/phrase-density.js.map +1 -0
- package/dist/detectors/registry/phrase-match.d.ts +3 -0
- package/dist/detectors/registry/phrase-match.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-match.js +3 -0
- package/dist/detectors/registry/phrase-match.js.map +1 -0
- package/dist/detectors/registry/preamble-length.d.ts +3 -0
- package/dist/detectors/registry/preamble-length.d.ts.map +1 -0
- package/dist/detectors/registry/preamble-length.js +3 -0
- package/dist/detectors/registry/preamble-length.js.map +1 -0
- package/dist/detectors/registry/preferred-term.d.ts +3 -0
- package/dist/detectors/registry/preferred-term.d.ts.map +1 -0
- package/dist/detectors/registry/preferred-term.js +3 -0
- package/dist/detectors/registry/preferred-term.js.map +1 -0
- package/dist/detectors/registry/proper-noun-density.d.ts +3 -0
- package/dist/detectors/registry/proper-noun-density.d.ts.map +1 -0
- package/dist/detectors/registry/proper-noun-density.js +3 -0
- package/dist/detectors/registry/proper-noun-density.js.map +1 -0
- package/dist/detectors/registry/ra-nuki.d.ts +3 -0
- package/dist/detectors/registry/ra-nuki.d.ts.map +1 -0
- package/dist/detectors/registry/ra-nuki.js +3 -0
- package/dist/detectors/registry/ra-nuki.js.map +1 -0
- package/dist/detectors/registry/reference-title-mismatch.d.ts +3 -0
- package/dist/detectors/registry/reference-title-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/reference-title-mismatch.js +3 -0
- package/dist/detectors/registry/reference-title-mismatch.js.map +1 -0
- package/dist/detectors/registry/reference-topic-missing.d.ts +3 -0
- package/dist/detectors/registry/reference-topic-missing.d.ts.map +1 -0
- package/dist/detectors/registry/reference-topic-missing.js +3 -0
- package/dist/detectors/registry/reference-topic-missing.js.map +1 -0
- package/dist/detectors/registry/relative-date-mismatch.d.ts +3 -0
- package/dist/detectors/registry/relative-date-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/relative-date-mismatch.js +3 -0
- package/dist/detectors/registry/relative-date-mismatch.js.map +1 -0
- package/dist/detectors/registry/repeated-conjunction.d.ts +3 -0
- package/dist/detectors/registry/repeated-conjunction.d.ts.map +1 -0
- package/dist/detectors/registry/repeated-conjunction.js +3 -0
- package/dist/detectors/registry/repeated-conjunction.js.map +1 -0
- package/dist/detectors/registry/repeated-head.d.ts +3 -0
- package/dist/detectors/registry/repeated-head.d.ts.map +1 -0
- package/dist/detectors/registry/repeated-head.js +3 -0
- package/dist/detectors/registry/repeated-head.js.map +1 -0
- package/dist/detectors/registry/required-sections.d.ts +3 -0
- package/dist/detectors/registry/required-sections.d.ts.map +1 -0
- package/dist/detectors/registry/required-sections.js +3 -0
- package/dist/detectors/registry/required-sections.js.map +1 -0
- package/dist/detectors/registry/requirement-modal.d.ts +3 -0
- package/dist/detectors/registry/requirement-modal.d.ts.map +1 -0
- package/dist/detectors/registry/requirement-modal.js +3 -0
- package/dist/detectors/registry/requirement-modal.js.map +1 -0
- package/dist/detectors/registry/requirement-smell.d.ts +3 -0
- package/dist/detectors/registry/requirement-smell.d.ts.map +1 -0
- package/dist/detectors/registry/requirement-smell.js +3 -0
- package/dist/detectors/registry/requirement-smell.js.map +1 -0
- package/dist/detectors/registry/rule-of-three.d.ts +3 -0
- package/dist/detectors/registry/rule-of-three.d.ts.map +1 -0
- package/dist/detectors/registry/rule-of-three.js +3 -0
- package/dist/detectors/registry/rule-of-three.js.map +1 -0
- package/dist/detectors/registry/section-uniformity.d.ts +3 -0
- package/dist/detectors/registry/section-uniformity.d.ts.map +1 -0
- package/dist/detectors/registry/section-uniformity.js +3 -0
- package/dist/detectors/registry/section-uniformity.js.map +1 -0
- package/dist/detectors/registry/sentence-comma-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-comma-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-comma-count.js +3 -0
- package/dist/detectors/registry/sentence-comma-count.js.map +1 -0
- package/dist/detectors/registry/sentence-conjunctive-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-conjunctive-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-conjunctive-count.js +3 -0
- package/dist/detectors/registry/sentence-conjunctive-count.js.map +1 -0
- package/dist/detectors/registry/sentence-ending.d.ts +3 -0
- package/dist/detectors/registry/sentence-ending.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-ending.js +3 -0
- package/dist/detectors/registry/sentence-ending.js.map +1 -0
- package/dist/detectors/registry/sentence-length.d.ts +3 -0
- package/dist/detectors/registry/sentence-length.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-length.js +3 -0
- package/dist/detectors/registry/sentence-length.js.map +1 -0
- package/dist/detectors/registry/sentence-rhythm.d.ts +3 -0
- package/dist/detectors/registry/sentence-rhythm.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-rhythm.js +3 -0
- package/dist/detectors/registry/sentence-rhythm.js.map +1 -0
- package/dist/detectors/registry/sentence-word-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-word-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-word-count.js +3 -0
- package/dist/detectors/registry/sentence-word-count.js.map +1 -0
- package/dist/detectors/registry/space-before-punctuation.d.ts +3 -0
- package/dist/detectors/registry/space-before-punctuation.d.ts.map +1 -0
- package/dist/detectors/registry/space-before-punctuation.js +3 -0
- package/dist/detectors/registry/space-before-punctuation.js.map +1 -0
- package/dist/detectors/registry/spelling-variety.d.ts +3 -0
- package/dist/detectors/registry/spelling-variety.d.ts.map +1 -0
- package/dist/detectors/registry/spelling-variety.js +3 -0
- package/dist/detectors/registry/spelling-variety.js.map +1 -0
- package/dist/detectors/registry/stock-transition.d.ts +3 -0
- package/dist/detectors/registry/stock-transition.d.ts.map +1 -0
- package/dist/detectors/registry/stock-transition.js +3 -0
- package/dist/detectors/registry/stock-transition.js.map +1 -0
- package/dist/detectors/registry/stray-space.d.ts +3 -0
- package/dist/detectors/registry/stray-space.d.ts.map +1 -0
- package/dist/detectors/registry/stray-space.js +3 -0
- package/dist/detectors/registry/stray-space.js.map +1 -0
- package/dist/detectors/registry/summary-fact-mismatch.d.ts +3 -0
- package/dist/detectors/registry/summary-fact-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/summary-fact-mismatch.js +3 -0
- package/dist/detectors/registry/summary-fact-mismatch.js.map +1 -0
- package/dist/detectors/registry/table-header-variant.d.ts +3 -0
- package/dist/detectors/registry/table-header-variant.d.ts.map +1 -0
- package/dist/detectors/registry/table-header-variant.js +3 -0
- package/dist/detectors/registry/table-header-variant.js.map +1 -0
- package/dist/detectors/registry/title-case-mix.d.ts +3 -0
- package/dist/detectors/registry/title-case-mix.d.ts.map +1 -0
- package/dist/detectors/registry/title-case-mix.js +3 -0
- package/dist/detectors/registry/title-case-mix.js.map +1 -0
- package/dist/detectors/registry/title-length.d.ts +3 -0
- package/dist/detectors/registry/title-length.d.ts.map +1 -0
- package/dist/detectors/registry/title-length.js +3 -0
- package/dist/detectors/registry/title-length.js.map +1 -0
- package/dist/detectors/registry/topic-predicate-distance.d.ts +3 -0
- package/dist/detectors/registry/topic-predicate-distance.d.ts.map +1 -0
- package/dist/detectors/registry/topic-predicate-distance.js +3 -0
- package/dist/detectors/registry/topic-predicate-distance.js.map +1 -0
- package/dist/detectors/registry/total-mismatch.d.ts +3 -0
- package/dist/detectors/registry/total-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/total-mismatch.js +3 -0
- package/dist/detectors/registry/total-mismatch.js.map +1 -0
- package/dist/detectors/registry/unbalanced-bracket.d.ts +3 -0
- package/dist/detectors/registry/unbalanced-bracket.d.ts.map +1 -0
- package/dist/detectors/registry/unbalanced-bracket.js +3 -0
- package/dist/detectors/registry/unbalanced-bracket.js.map +1 -0
- package/dist/detectors/registry/undefined-acronym.d.ts +3 -0
- package/dist/detectors/registry/undefined-acronym.d.ts.map +1 -0
- package/dist/detectors/registry/undefined-acronym.js +3 -0
- package/dist/detectors/registry/undefined-acronym.js.map +1 -0
- package/dist/detectors/registry/unfilled-placeholder.d.ts +3 -0
- package/dist/detectors/registry/unfilled-placeholder.d.ts.map +1 -0
- package/dist/detectors/registry/unfilled-placeholder.js +3 -0
- package/dist/detectors/registry/unfilled-placeholder.js.map +1 -0
- package/dist/detectors/registry/unit-mismatch.d.ts +3 -0
- package/dist/detectors/registry/unit-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/unit-mismatch.js +3 -0
- package/dist/detectors/registry/unit-mismatch.js.map +1 -0
- package/dist/detectors/registry/unknown-word.d.ts +3 -0
- package/dist/detectors/registry/unknown-word.d.ts.map +1 -0
- package/dist/detectors/registry/unknown-word.js +3 -0
- package/dist/detectors/registry/unknown-word.js.map +1 -0
- package/dist/detectors/registry/unqualified-superlative.d.ts +3 -0
- package/dist/detectors/registry/unqualified-superlative.d.ts.map +1 -0
- package/dist/detectors/registry/unqualified-superlative.js +3 -0
- package/dist/detectors/registry/unqualified-superlative.js.map +1 -0
- package/dist/detectors/registry/unused-definition.d.ts +3 -0
- package/dist/detectors/registry/unused-definition.d.ts.map +1 -0
- package/dist/detectors/registry/unused-definition.js +3 -0
- package/dist/detectors/registry/unused-definition.js.map +1 -0
- package/dist/detectors/registry/url-run-on.d.ts +3 -0
- package/dist/detectors/registry/url-run-on.d.ts.map +1 -0
- package/dist/detectors/registry/url-run-on.js +3 -0
- package/dist/detectors/registry/url-run-on.js.map +1 -0
- package/dist/detectors/registry/use-before-definition.d.ts +3 -0
- package/dist/detectors/registry/use-before-definition.d.ts.map +1 -0
- package/dist/detectors/registry/use-before-definition.js +3 -0
- package/dist/detectors/registry/use-before-definition.js.map +1 -0
- package/dist/detectors/registry/vague-density.d.ts +3 -0
- package/dist/detectors/registry/vague-density.d.ts.map +1 -0
- package/dist/detectors/registry/vague-density.js +3 -0
- package/dist/detectors/registry/vague-density.js.map +1 -0
- package/dist/detectors/registry/vague-figure-pointer.d.ts +3 -0
- package/dist/detectors/registry/vague-figure-pointer.d.ts.map +1 -0
- package/dist/detectors/registry/vague-figure-pointer.js +3 -0
- package/dist/detectors/registry/vague-figure-pointer.js.map +1 -0
- package/dist/detectors/registry/vague-link-text.d.ts +3 -0
- package/dist/detectors/registry/vague-link-text.d.ts.map +1 -0
- package/dist/detectors/registry/vague-link-text.js +3 -0
- package/dist/detectors/registry/vague-link-text.js.map +1 -0
- package/dist/detectors/registry-files.d.ts +11 -0
- package/dist/detectors/registry-files.d.ts.map +1 -0
- package/dist/detectors/registry-files.js +9 -0
- package/dist/detectors/registry-files.js.map +1 -0
- package/dist/detectors/registry-load.d.ts +6 -0
- package/dist/detectors/registry-load.d.ts.map +1 -0
- package/dist/detectors/registry-load.js +19 -0
- package/dist/detectors/registry-load.js.map +1 -0
- package/dist/detectors/relative-dates.d.ts +4 -0
- package/dist/detectors/relative-dates.d.ts.map +1 -0
- package/dist/detectors/relative-dates.js +100 -0
- package/dist/detectors/relative-dates.js.map +1 -0
- package/dist/detectors/requirement-modal.d.ts +5 -0
- package/dist/detectors/requirement-modal.d.ts.map +1 -0
- package/dist/detectors/requirement-modal.js +54 -0
- package/dist/detectors/requirement-modal.js.map +1 -0
- package/dist/detectors/requirement-smell.d.ts +4 -0
- package/dist/detectors/requirement-smell.d.ts.map +1 -0
- package/dist/detectors/requirement-smell.js +41 -0
- package/dist/detectors/requirement-smell.js.map +1 -0
- package/dist/detectors/sentence-counts.d.ts +19 -0
- package/dist/detectors/sentence-counts.d.ts.map +1 -0
- package/dist/detectors/sentence-counts.js +83 -0
- package/dist/detectors/sentence-counts.js.map +1 -0
- package/dist/detectors/sentence-load.d.ts +8 -0
- package/dist/detectors/sentence-load.d.ts.map +1 -0
- package/dist/detectors/sentence-load.js +35 -0
- package/dist/detectors/sentence-load.js.map +1 -0
- package/dist/detectors/space-before-punctuation.d.ts +8 -0
- package/dist/detectors/space-before-punctuation.d.ts.map +1 -0
- package/dist/detectors/space-before-punctuation.js +24 -0
- package/dist/detectors/space-before-punctuation.js.map +1 -0
- package/dist/detectors/spelling-variety.d.ts +24 -0
- package/dist/detectors/spelling-variety.d.ts.map +1 -0
- package/dist/detectors/spelling-variety.js +59 -0
- package/dist/detectors/spelling-variety.js.map +1 -0
- package/dist/detectors/structure-tree.d.ts.map +1 -1
- package/dist/detectors/structure-tree.js +3 -1
- package/dist/detectors/structure-tree.js.map +1 -1
- package/dist/detectors/structure.d.ts.map +1 -1
- package/dist/detectors/structure.js +16 -2
- package/dist/detectors/structure.js.map +1 -1
- package/dist/detectors/superlative-comparison.d.ts +20 -0
- package/dist/detectors/superlative-comparison.d.ts.map +1 -0
- package/dist/detectors/superlative-comparison.js +32 -0
- package/dist/detectors/superlative-comparison.js.map +1 -0
- package/dist/detectors/table-header.d.ts +28 -0
- package/dist/detectors/table-header.d.ts.map +1 -0
- package/dist/detectors/table-header.js +148 -0
- package/dist/detectors/table-header.js.map +1 -0
- package/dist/detectors/team.d.ts +3 -1
- package/dist/detectors/team.d.ts.map +1 -1
- package/dist/detectors/team.js +10 -3
- package/dist/detectors/team.js.map +1 -1
- package/dist/detectors/unit-consistency.d.ts +4 -0
- package/dist/detectors/unit-consistency.d.ts.map +1 -0
- package/dist/detectors/unit-consistency.js +53 -0
- package/dist/detectors/unit-consistency.js.map +1 -0
- package/dist/detectors/unknown-word.d.ts +7 -0
- package/dist/detectors/unknown-word.d.ts.map +1 -0
- package/dist/detectors/unknown-word.js +40 -0
- package/dist/detectors/unknown-word.js.map +1 -0
- package/dist/detectors/url-run-on.d.ts.map +1 -1
- package/dist/detectors/url-run-on.js +6 -1
- package/dist/detectors/url-run-on.js.map +1 -1
- package/dist/detectors/vague-figure-pointer.d.ts +10 -0
- package/dist/detectors/vague-figure-pointer.d.ts.map +1 -0
- package/dist/detectors/vague-figure-pointer.js +46 -0
- package/dist/detectors/vague-figure-pointer.js.map +1 -0
- package/dist/detectors/vague-link-text.d.ts +4 -0
- package/dist/detectors/vague-link-text.d.ts.map +1 -0
- package/dist/detectors/vague-link-text.js +11 -0
- package/dist/detectors/vague-link-text.js.map +1 -0
- package/dist/detectors/word-list.d.ts +2 -0
- package/dist/detectors/word-list.d.ts.map +1 -1
- package/dist/detectors/word-list.js +4 -1
- package/dist/detectors/word-list.js.map +1 -1
- package/dist/document-reading.d.ts +15 -0
- package/dist/document-reading.d.ts.map +1 -0
- package/dist/document-reading.js +23 -0
- package/dist/document-reading.js.map +1 -0
- package/dist/document.d.ts +9 -3
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +61 -36
- package/dist/document.js.map +1 -1
- package/dist/experimental-alone.d.ts +13 -0
- package/dist/experimental-alone.d.ts.map +1 -0
- package/dist/experimental-alone.js +11 -0
- package/dist/experimental-alone.js.map +1 -0
- package/dist/extension/document-view.d.ts +7 -0
- package/dist/extension/document-view.d.ts.map +1 -0
- package/dist/extension/document-view.js +91 -0
- package/dist/extension/document-view.js.map +1 -0
- package/dist/extension/failure-text.d.ts +5 -0
- package/dist/extension/failure-text.d.ts.map +1 -0
- package/dist/extension/failure-text.js +33 -0
- package/dist/extension/failure-text.js.map +1 -0
- package/dist/extension/import-default.d.ts +7 -0
- package/dist/extension/import-default.d.ts.map +1 -0
- package/dist/extension/import-default.js +21 -0
- package/dist/extension/import-default.js.map +1 -0
- package/dist/extension/load.d.ts +28 -0
- package/dist/extension/load.d.ts.map +1 -0
- package/dist/extension/load.js +51 -0
- package/dist/extension/load.js.map +1 -0
- package/dist/extension/module-detector.d.ts +21 -0
- package/dist/extension/module-detector.d.ts.map +1 -0
- package/dist/extension/module-detector.js +49 -0
- package/dist/extension/module-detector.js.map +1 -0
- package/dist/extension/plugin-load.d.ts +9 -0
- package/dist/extension/plugin-load.d.ts.map +1 -0
- package/dist/extension/plugin-load.js +68 -0
- package/dist/extension/plugin-load.js.map +1 -0
- package/dist/extension/plugin-name.d.ts +8 -0
- package/dist/extension/plugin-name.d.ts.map +1 -0
- package/dist/extension/plugin-name.js +22 -0
- package/dist/extension/plugin-name.js.map +1 -0
- package/dist/extension/plugin-parse.d.ts +41 -0
- package/dist/extension/plugin-parse.d.ts.map +1 -0
- package/dist/extension/plugin-parse.js +156 -0
- package/dist/extension/plugin-parse.js.map +1 -0
- package/dist/extension/problem-text.d.ts +5 -0
- package/dist/extension/problem-text.d.ts.map +1 -0
- package/dist/extension/problem-text.js +74 -0
- package/dist/extension/problem-text.js.map +1 -0
- package/dist/extension/real-path.d.ts +3 -0
- package/dist/extension/real-path.d.ts.map +1 -0
- package/dist/extension/real-path.js +8 -0
- package/dist/extension/real-path.js.map +1 -0
- package/dist/extension/returned-findings.d.ts +17 -0
- package/dist/extension/returned-findings.d.ts.map +1 -0
- package/dist/extension/returned-findings.js +48 -0
- package/dist/extension/returned-findings.js.map +1 -0
- package/dist/extension/rule-export.d.ts +13 -0
- package/dist/extension/rule-export.d.ts.map +1 -0
- package/dist/extension/rule-export.js +16 -0
- package/dist/extension/rule-export.js.map +1 -0
- package/dist/facts/fact-conflicts.d.ts +15 -0
- package/dist/facts/fact-conflicts.d.ts.map +1 -0
- package/dist/facts/fact-conflicts.js +50 -0
- package/dist/facts/fact-conflicts.js.map +1 -0
- package/dist/facts/fact-scope.d.ts +17 -0
- package/dist/facts/fact-scope.d.ts.map +1 -0
- package/dist/facts/fact-scope.js +112 -0
- package/dist/facts/fact-scope.js.map +1 -0
- package/dist/facts/fact-values.d.ts +18 -0
- package/dist/facts/fact-values.d.ts.map +1 -0
- package/dist/facts/fact-values.js +98 -0
- package/dist/facts/fact-values.js.map +1 -0
- package/dist/facts/labelled-facts.d.ts +31 -0
- package/dist/facts/labelled-facts.d.ts.map +1 -0
- package/dist/facts/labelled-facts.js +94 -0
- package/dist/facts/labelled-facts.js.map +1 -0
- package/dist/facts/measures.d.ts +20 -0
- package/dist/facts/measures.d.ts.map +1 -0
- package/dist/facts/measures.js +40 -0
- package/dist/facts/measures.js.map +1 -0
- package/dist/facts/table-facts.d.ts +5 -0
- package/dist/facts/table-facts.d.ts.map +1 -0
- package/dist/facts/table-facts.js +55 -0
- package/dist/facts/table-facts.js.map +1 -0
- package/dist/facts/trim-marks.d.ts +7 -0
- package/dist/facts/trim-marks.d.ts.map +1 -0
- package/dist/facts/trim-marks.js +18 -0
- package/dist/facts/trim-marks.js.map +1 -0
- package/dist/facts/unit-conflicts.d.ts +14 -0
- package/dist/facts/unit-conflicts.d.ts.map +1 -0
- package/dist/facts/unit-conflicts.js +36 -0
- package/dist/facts/unit-conflicts.js.map +1 -0
- package/dist/feedback/draft.d.ts +2 -0
- package/dist/feedback/draft.d.ts.map +1 -1
- package/dist/feedback/draft.js +3 -0
- package/dist/feedback/draft.js.map +1 -1
- package/dist/figure-references.d.ts +26 -2
- package/dist/figure-references.d.ts.map +1 -1
- package/dist/figure-references.js +64 -13
- package/dist/figure-references.js.map +1 -1
- package/dist/files.d.ts +3 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +10 -7
- package/dist/files.js.map +1 -1
- package/dist/finding-order.d.ts +9 -0
- package/dist/finding-order.d.ts.map +1 -0
- package/dist/finding-order.js +3 -0
- package/dist/finding-order.js.map +1 -0
- package/dist/fix-plan/mode.d.ts +26 -0
- package/dist/fix-plan/mode.d.ts.map +1 -0
- package/dist/fix-plan/mode.js +20 -0
- package/dist/fix-plan/mode.js.map +1 -0
- package/dist/fix-plan/plan.d.ts +89 -0
- package/dist/fix-plan/plan.d.ts.map +1 -0
- package/dist/fix-plan/plan.js +111 -0
- package/dist/fix-plan/plan.js.map +1 -0
- package/dist/fix-plan/render.d.ts +6 -0
- package/dist/fix-plan/render.d.ts.map +1 -0
- package/dist/fix-plan/render.js +118 -0
- package/dist/fix-plan/render.js.map +1 -0
- package/dist/fix-plan/structure-target-text.d.ts +15 -0
- package/dist/fix-plan/structure-target-text.d.ts.map +1 -0
- package/dist/fix-plan/structure-target-text.js +57 -0
- package/dist/fix-plan/structure-target-text.js.map +1 -0
- package/dist/fix-plan/structure-targets.d.ts +24 -0
- package/dist/fix-plan/structure-targets.d.ts.map +1 -0
- package/dist/fix-plan/structure-targets.js +27 -0
- package/dist/fix-plan/structure-targets.js.map +1 -0
- package/dist/fix-plan/text.d.ts +35 -0
- package/dist/fix-plan/text.d.ts.map +1 -0
- package/dist/fix-plan/text.js +97 -0
- package/dist/fix-plan/text.js.map +1 -0
- package/dist/grade/baseline-text.d.ts +27 -0
- package/dist/grade/baseline-text.d.ts.map +1 -0
- package/dist/grade/baseline-text.js +49 -0
- package/dist/grade/baseline-text.js.map +1 -0
- package/dist/grade/baseline.d.ts +51 -0
- package/dist/grade/baseline.d.ts.map +1 -0
- package/dist/grade/baseline.js +84 -0
- package/dist/grade/baseline.js.map +1 -0
- package/dist/grade/checks.d.ts +28 -0
- package/dist/grade/checks.d.ts.map +1 -0
- package/dist/grade/checks.js +50 -0
- package/dist/grade/checks.js.map +1 -0
- package/dist/grade/context-support.d.ts +23 -0
- package/dist/grade/context-support.d.ts.map +1 -0
- package/dist/grade/context-support.js +33 -0
- package/dist/grade/context-support.js.map +1 -0
- package/dist/grade/contexts.d.ts +16 -0
- package/dist/grade/contexts.d.ts.map +1 -0
- package/dist/grade/contexts.js +34 -0
- package/dist/grade/contexts.js.map +1 -0
- package/dist/grade/grade-item.d.ts +12 -0
- package/dist/grade/grade-item.d.ts.map +1 -0
- package/dist/grade/grade-item.js +103 -0
- package/dist/grade/grade-item.js.map +1 -0
- package/dist/grade/item.d.ts +54 -0
- package/dist/grade/item.d.ts.map +1 -0
- package/dist/grade/item.js +155 -0
- package/dist/grade/item.js.map +1 -0
- package/dist/grade/order.d.ts +7 -0
- package/dist/grade/order.d.ts.map +1 -0
- package/dist/grade/order.js +7 -0
- package/dist/grade/order.js.map +1 -0
- package/dist/grade/pairing.d.ts +13 -0
- package/dist/grade/pairing.d.ts.map +1 -0
- package/dist/grade/pairing.js +14 -0
- package/dist/grade/pairing.js.map +1 -0
- package/dist/grade/rates.d.ts +14 -0
- package/dist/grade/rates.d.ts.map +1 -0
- package/dist/grade/rates.js +26 -0
- package/dist/grade/rates.js.map +1 -0
- package/dist/grade/render-baseline.d.ts +7 -0
- package/dist/grade/render-baseline.d.ts.map +1 -0
- package/dist/grade/render-baseline.js +44 -0
- package/dist/grade/render-baseline.js.map +1 -0
- package/dist/grade/render-markdown.d.ts +15 -0
- package/dist/grade/render-markdown.d.ts.map +1 -0
- package/dist/grade/render-markdown.js +41 -0
- package/dist/grade/render-markdown.js.map +1 -0
- package/dist/grade/render-variants.d.ts +12 -0
- package/dist/grade/render-variants.d.ts.map +1 -0
- package/dist/grade/render-variants.js +80 -0
- package/dist/grade/render-variants.js.map +1 -0
- package/dist/grade/render.d.ts +14 -0
- package/dist/grade/render.d.ts.map +1 -0
- package/dist/grade/render.js +52 -0
- package/dist/grade/render.js.map +1 -0
- package/dist/grade/result-name.d.ts +7 -0
- package/dist/grade/result-name.d.ts.map +1 -0
- package/dist/grade/result-name.js +6 -0
- package/dist/grade/result-name.js.map +1 -0
- package/dist/grade/result.d.ts +101 -0
- package/dist/grade/result.d.ts.map +1 -0
- package/dist/grade/result.js +2 -0
- package/dist/grade/result.js.map +1 -0
- package/dist/grade/results-read.d.ts +10 -0
- package/dist/grade/results-read.d.ts.map +1 -0
- package/dist/grade/results-read.js +82 -0
- package/dist/grade/results-read.js.map +1 -0
- package/dist/grade/rubric-verdict.d.ts +19 -0
- package/dist/grade/rubric-verdict.d.ts.map +1 -0
- package/dist/grade/rubric-verdict.js +65 -0
- package/dist/grade/rubric-verdict.js.map +1 -0
- package/dist/grade/rubric.d.ts +52 -0
- package/dist/grade/rubric.d.ts.map +1 -0
- package/dist/grade/rubric.js +149 -0
- package/dist/grade/rubric.js.map +1 -0
- package/dist/grade/scorer.d.ts +13 -0
- package/dist/grade/scorer.d.ts.map +1 -0
- package/dist/grade/scorer.js +15 -0
- package/dist/grade/scorer.js.map +1 -0
- package/dist/grade/setup.d.ts +9 -0
- package/dist/grade/setup.d.ts.map +1 -0
- package/dist/grade/setup.js +31 -0
- package/dist/grade/setup.js.map +1 -0
- package/dist/grade/stamp.d.ts +23 -0
- package/dist/grade/stamp.d.ts.map +1 -0
- package/dist/grade/stamp.js +36 -0
- package/dist/grade/stamp.js.map +1 -0
- package/dist/grade/summary.d.ts +43 -0
- package/dist/grade/summary.d.ts.map +1 -0
- package/dist/grade/summary.js +72 -0
- package/dist/grade/summary.js.map +1 -0
- package/dist/grade/text.d.ts +32 -0
- package/dist/grade/text.d.ts.map +1 -0
- package/dist/grade/text.js +117 -0
- package/dist/grade/text.js.map +1 -0
- package/dist/grade/variants-input.d.ts +12 -0
- package/dist/grade/variants-input.d.ts.map +1 -0
- package/dist/grade/variants-input.js +42 -0
- package/dist/grade/variants-input.js.map +1 -0
- package/dist/grade/variants-text.d.ts +31 -0
- package/dist/grade/variants-text.d.ts.map +1 -0
- package/dist/grade/variants-text.js +57 -0
- package/dist/grade/variants-text.js.map +1 -0
- package/dist/grade/variants.d.ts +63 -0
- package/dist/grade/variants.d.ts.map +1 -0
- package/dist/grade/variants.js +66 -0
- package/dist/grade/variants.js.map +1 -0
- package/dist/grade/verdict.d.ts +18 -0
- package/dist/grade/verdict.d.ts.map +1 -0
- package/dist/grade/verdict.js +17 -0
- package/dist/grade/verdict.js.map +1 -0
- package/dist/grade-api.d.ts +53 -0
- package/dist/grade-api.d.ts.map +1 -0
- package/dist/grade-api.js +140 -0
- package/dist/grade-api.js.map +1 -0
- package/dist/heading-numbering.d.ts +32 -0
- package/dist/heading-numbering.d.ts.map +1 -0
- package/dist/heading-numbering.js +72 -0
- package/dist/heading-numbering.js.map +1 -0
- package/dist/kana-spelling.d.ts +14 -0
- package/dist/kana-spelling.d.ts.map +1 -0
- package/dist/kana-spelling.js +43 -0
- package/dist/kana-spelling.js.map +1 -0
- package/dist/language-sample.d.ts +2 -0
- package/dist/language-sample.d.ts.map +1 -0
- package/dist/language-sample.js +41 -0
- package/dist/language-sample.js.map +1 -0
- package/dist/link-line.d.ts +8 -0
- package/dist/link-line.d.ts.map +1 -0
- package/dist/link-line.js +12 -0
- package/dist/link-line.js.map +1 -0
- package/dist/link-text.d.ts +12 -0
- package/dist/link-text.d.ts.map +1 -0
- package/dist/link-text.js +45 -0
- package/dist/link-text.js.map +1 -0
- package/dist/long-vowel.d.ts +9 -6
- package/dist/long-vowel.d.ts.map +1 -1
- package/dist/long-vowel.js +15 -8
- package/dist/long-vowel.js.map +1 -1
- package/dist/markup.d.ts.map +1 -1
- package/dist/markup.js +4 -2
- package/dist/markup.js.map +1 -1
- package/dist/name-variants.d.ts +25 -0
- package/dist/name-variants.d.ts.map +1 -0
- package/dist/name-variants.js +181 -0
- package/dist/name-variants.js.map +1 -0
- package/dist/node-version.d.ts +7 -0
- package/dist/node-version.d.ts.map +1 -0
- package/dist/node-version.js +19 -0
- package/dist/node-version.js.map +1 -0
- package/dist/not-run.d.ts +14 -0
- package/dist/not-run.d.ts.map +1 -0
- package/dist/not-run.js +12 -0
- package/dist/not-run.js.map +1 -0
- package/dist/orthography.d.ts +8 -1
- package/dist/orthography.d.ts.map +1 -1
- package/dist/orthography.js +33 -12
- package/dist/orthography.js.map +1 -1
- package/dist/outline/render.d.ts +20 -0
- package/dist/outline/render.d.ts.map +1 -0
- package/dist/outline/render.js +66 -0
- package/dist/outline/render.js.map +1 -0
- package/dist/outline/shape.d.ts +26 -0
- package/dist/outline/shape.d.ts.map +1 -0
- package/dist/outline/shape.js +37 -0
- package/dist/outline/shape.js.map +1 -0
- package/dist/outline/structure-render.d.ts +15 -0
- package/dist/outline/structure-render.d.ts.map +1 -0
- package/dist/outline/structure-render.js +80 -0
- package/dist/outline/structure-render.js.map +1 -0
- package/dist/outline/structure-text.d.ts +30 -0
- package/dist/outline/structure-text.d.ts.map +1 -0
- package/dist/outline/structure-text.js +87 -0
- package/dist/outline/structure-text.js.map +1 -0
- package/dist/outline/text.d.ts +24 -0
- package/dist/outline/text.d.ts.map +1 -0
- package/dist/outline/text.js +33 -0
- package/dist/outline/text.js.map +1 -0
- package/dist/paragraph-runs.d.ts +7 -0
- package/dist/paragraph-runs.d.ts.map +1 -0
- package/dist/paragraph-runs.js +27 -0
- package/dist/paragraph-runs.js.map +1 -0
- package/dist/person-forms.d.ts +30 -0
- package/dist/person-forms.d.ts.map +1 -0
- package/dist/person-forms.js +96 -0
- package/dist/person-forms.js.map +1 -0
- package/dist/plugin.d.ts +38 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/reasons.d.ts +3 -0
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +4 -0
- package/dist/reasons.js.map +1 -1
- package/dist/render/compact.d.ts +3 -1
- package/dist/render/compact.d.ts.map +1 -1
- package/dist/render/compact.js +8 -2
- package/dist/render/compact.js.map +1 -1
- package/dist/render/explain.d.ts +5 -1
- package/dist/render/explain.d.ts.map +1 -1
- package/dist/render/explain.js +35 -16
- package/dist/render/explain.js.map +1 -1
- package/dist/render/friendly.d.ts.map +1 -1
- package/dist/render/friendly.js +13 -1
- package/dist/render/friendly.js.map +1 -1
- package/dist/render/rules-json.d.ts.map +1 -1
- package/dist/render/rules-json.js +21 -13
- package/dist/render/rules-json.js.map +1 -1
- package/dist/render/rules-table.d.ts +2 -0
- package/dist/render/rules-table.d.ts.map +1 -1
- package/dist/render/rules-table.js +1 -1
- package/dist/render/rules-table.js.map +1 -1
- package/dist/render/sarif.d.ts +7 -1
- package/dist/render/sarif.d.ts.map +1 -1
- package/dist/render/sarif.js +20 -1
- package/dist/render/sarif.js.map +1 -1
- package/dist/render/suppressions.d.ts +3 -0
- package/dist/render/suppressions.d.ts.map +1 -1
- package/dist/render/suppressions.js +20 -1
- package/dist/render/suppressions.js.map +1 -1
- package/dist/resolve-genre.d.ts +1 -2
- package/dist/resolve-genre.d.ts.map +1 -1
- package/dist/rule-guide.d.ts +21 -0
- package/dist/rule-guide.d.ts.map +1 -1
- package/dist/rule-guide.js +15 -0
- package/dist/rule-guide.js.map +1 -1
- package/dist/run-semantic.d.ts.map +1 -1
- package/dist/run-semantic.js +2 -1
- package/dist/run-semantic.js.map +1 -1
- package/dist/run.d.ts +8 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +64 -24
- package/dist/run.js.map +1 -1
- package/dist/sentence-load.d.ts +19 -0
- package/dist/sentence-load.d.ts.map +1 -0
- package/dist/sentence-load.js +70 -0
- package/dist/sentence-load.js.map +1 -0
- package/dist/setting-problems.d.ts.map +1 -1
- package/dist/setting-problems.js +3 -1
- package/dist/setting-problems.js.map +1 -1
- package/dist/spacing-minority.d.ts +16 -0
- package/dist/spacing-minority.d.ts.map +1 -0
- package/dist/spacing-minority.js +23 -0
- package/dist/spacing-minority.js.map +1 -0
- package/dist/spelling-variants.d.ts +17 -0
- package/dist/spelling-variants.d.ts.map +1 -0
- package/dist/spelling-variants.js +32 -0
- package/dist/spelling-variants.js.map +1 -0
- package/dist/spelling.d.ts +32 -0
- package/dist/spelling.d.ts.map +1 -0
- package/dist/spelling.js +54 -0
- package/dist/spelling.js.map +1 -0
- package/dist/stet-block.d.ts +5 -0
- package/dist/stet-block.d.ts.map +1 -0
- package/dist/stet-block.js +59 -0
- package/dist/stet-block.js.map +1 -0
- package/dist/stet.d.ts +4 -0
- package/dist/stet.d.ts.map +1 -1
- package/dist/stet.js +31 -11
- package/dist/stet.js.map +1 -1
- package/dist/structure/absolute-exception.d.ts +35 -0
- package/dist/structure/absolute-exception.d.ts.map +1 -0
- package/dist/structure/absolute-exception.js +70 -0
- package/dist/structure/absolute-exception.js.map +1 -0
- package/dist/structure/date-range.d.ts +10 -0
- package/dist/structure/date-range.d.ts.map +1 -1
- package/dist/structure/date-range.js +33 -1
- package/dist/structure/date-range.js.map +1 -1
- package/dist/structure/definition-use.d.ts +32 -0
- package/dist/structure/definition-use.d.ts.map +1 -0
- package/dist/structure/definition-use.js +102 -0
- package/dist/structure/definition-use.js.map +1 -0
- package/dist/structure/issues.d.ts +5 -0
- package/dist/structure/issues.d.ts.map +1 -1
- package/dist/structure/issues.js +22 -0
- package/dist/structure/issues.js.map +1 -1
- package/dist/structure/lazy-tree.d.ts +8 -0
- package/dist/structure/lazy-tree.d.ts.map +1 -0
- package/dist/structure/lazy-tree.js +14 -0
- package/dist/structure/lazy-tree.js.map +1 -0
- package/dist/structure/modal-conflict.d.ts +29 -0
- package/dist/structure/modal-conflict.d.ts.map +1 -0
- package/dist/structure/modal-conflict.js +74 -0
- package/dist/structure/modal-conflict.js.map +1 -0
- package/dist/structure/numbered-clauses.d.ts +4 -0
- package/dist/structure/numbered-clauses.d.ts.map +1 -0
- package/dist/structure/numbered-clauses.js +9 -0
- package/dist/structure/numbered-clauses.js.map +1 -0
- package/dist/structure/reference-text.d.ts +29 -0
- package/dist/structure/reference-text.d.ts.map +1 -0
- package/dist/structure/reference-text.js +79 -0
- package/dist/structure/reference-text.js.map +1 -0
- package/dist/structure/universal.d.ts.map +1 -1
- package/dist/structure/universal.js +8 -2
- package/dist/structure/universal.js.map +1 -1
- package/dist/structure-shape/baseline-load.d.ts +4 -0
- package/dist/structure-shape/baseline-load.d.ts.map +1 -0
- package/dist/structure-shape/baseline-load.js +17 -0
- package/dist/structure-shape/baseline-load.js.map +1 -0
- package/dist/structure-shape/baseline.d.ts +19 -0
- package/dist/structure-shape/baseline.d.ts.map +1 -0
- package/dist/structure-shape/baseline.js +44 -0
- package/dist/structure-shape/baseline.js.map +1 -0
- package/dist/structure-shape/features.d.ts +25 -0
- package/dist/structure-shape/features.d.ts.map +1 -0
- package/dist/structure-shape/features.js +149 -0
- package/dist/structure-shape/features.js.map +1 -0
- package/dist/structure-shape/heading-words.d.ts +14 -0
- package/dist/structure-shape/heading-words.d.ts.map +1 -0
- package/dist/structure-shape/heading-words.js +54 -0
- package/dist/structure-shape/heading-words.js.map +1 -0
- package/dist/structure-shape/of-document.d.ts +5 -0
- package/dist/structure-shape/of-document.d.ts.map +1 -0
- package/dist/structure-shape/of-document.js +6 -0
- package/dist/structure-shape/of-document.js.map +1 -0
- package/dist/structure-shape/restatement.d.ts +11 -0
- package/dist/structure-shape/restatement.d.ts.map +1 -0
- package/dist/structure-shape/restatement.js +32 -0
- package/dist/structure-shape/restatement.js.map +1 -0
- package/dist/structure-shape/score.d.ts +30 -0
- package/dist/structure-shape/score.d.ts.map +1 -0
- package/dist/structure-shape/score.js +37 -0
- package/dist/structure-shape/score.js.map +1 -0
- package/dist/style-parse.d.ts +6 -0
- package/dist/style-parse.d.ts.map +1 -1
- package/dist/style-parse.js +32 -4
- package/dist/style-parse.js.map +1 -1
- package/dist/subheading-line.d.ts +19 -2
- package/dist/subheading-line.d.ts.map +1 -1
- package/dist/subheading-line.js +39 -11
- package/dist/subheading-line.js.map +1 -1
- package/dist/tag-coverage.d.ts +8 -0
- package/dist/tag-coverage.d.ts.map +1 -0
- package/dist/tag-coverage.js +7 -0
- package/dist/tag-coverage.js.map +1 -0
- package/dist/yaml-values.d.ts +13 -0
- package/dist/yaml-values.d.ts.map +1 -0
- package/dist/yaml-values.js +58 -0
- package/dist/yaml-values.js.map +1 -0
- package/genres.yaml +145 -1
- package/package.json +12 -3
- package/rules/absolute-exception.yaml +83 -0
- package/rules/abstract-length.yaml +130 -0
- package/rules/acronym-expansion-conflict.yaml +82 -0
- package/rules/adverb-overuse.yaml +2 -2
- package/rules/adversative-ga-repeat.yaml +58 -0
- package/rules/agentless-passive.yaml +28 -0
- package/rules/ai-generated-composite.yaml +2 -1
- package/rules/ai-structure.yaml +202 -0
- package/rules/ai-tell.yaml +35 -1
- package/rules/announced-count-mismatch.yaml +2 -2
- package/rules/announcing-opener.yaml +32 -1
- package/rules/article-sound.yaml +58 -0
- package/rules/assistant-residue.yaml +30 -0
- package/rules/bold-density.yaml +28 -0
- package/rules/bold-label-list.yaml +81 -0
- package/rules/bracket-nesting.yaml +74 -0
- package/rules/chat-citation-residue.yaml +77 -0
- package/rules/citation-reference-mismatch.yaml +110 -0
- package/rules/citation-style-mix.yaml +109 -0
- package/rules/clause-chain.yaml +59 -0
- package/rules/closing-cliche.yaml +27 -2
- package/rules/colon-lead-in.yaml +29 -5
- package/rules/contrast-framing.yaml +34 -3
- package/rules/cross-doc-broken-link.yaml +83 -0
- package/rules/cross-doc-term-variant.yaml +73 -0
- package/rules/cushion-phrase-density.yaml +32 -5
- package/rules/dangling-reference.yaml +1 -0
- package/rules/date-format-consistency.yaml +85 -0
- package/rules/date-order.yaml +1 -0
- package/rules/date-range-reversed.yaml +2 -2
- package/rules/date-without-year.yaml +70 -0
- package/rules/demonstrative-opener-run.yaml +59 -0
- package/rules/double-negative.yaml +51 -0
- package/rules/doubled-nado.yaml +57 -0
- package/rules/doubled-punctuation.yaml +2 -2
- package/rules/doubled-word.yaml +2 -2
- package/rules/duplicate-heading.yaml +78 -0
- package/rules/duration-mismatch.yaml +73 -0
- package/rules/elapsed-years-mismatch.yaml +79 -0
- package/rules/emoji-density.yaml +5 -4
- package/rules/emoji-heading.yaml +128 -0
- package/rules/empty-intensifier.yaml +25 -0
- package/rules/empty-list-item.yaml +85 -0
- package/rules/empty-section.yaml +74 -0
- package/rules/empty-table-cell.yaml +89 -0
- package/rules/excessive-hedging.yaml +32 -4
- package/rules/fact-conflict.yaml +110 -0
- package/rules/figure-reference-order.yaml +109 -0
- package/rules/fullwidth-alnum-consistency.yaml +53 -0
- package/rules/hankaku-kana.yaml +41 -0
- package/rules/heading-numbering-mix.yaml +140 -0
- package/rules/homophone-slip.yaml +58 -0
- package/rules/idiom-misuse.yaml +60 -0
- package/rules/image-alt-text.yaml +1 -1
- package/rules/invisible-character.yaml +63 -0
- package/rules/katakana-density.yaml +93 -0
- package/rules/katakana-long-vowel.yaml +10 -9
- package/rules/known-misspelling.yaml +76 -0
- package/rules/latin-spacing.yaml +12 -5
- package/rules/list-item-form-mix.yaml +134 -0
- package/rules/max-kanji-continuous.yaml +1 -0
- package/rules/max-paragraph-length.yaml +1 -0
- package/rules/max-sentence-length.yaml +26 -0
- package/rules/max-ten.yaml +59 -0
- package/rules/misconversion.yaml +61 -0
- package/rules/modal-conflict.yaml +106 -0
- package/rules/name-variant.yaml +88 -0
- package/rules/no-doubled-joshi.yaml +1 -0
- package/rules/no-em-dash.yaml +26 -2
- package/rules/no-lead.yaml +95 -0
- package/rules/no-mixed-desumasu.yaml +1 -0
- package/rules/nominalization.yaml +89 -0
- package/rules/number-style-consistency.yaml +105 -0
- package/rules/number-without-unit.yaml +96 -0
- package/rules/one-sentence-paragraph-run.yaml +95 -0
- package/rules/orthographic-variant.yaml +87 -0
- package/rules/outside-announced-list.yaml +80 -0
- package/rules/padded-intro.yaml +25 -0
- package/rules/paragraph-length-variance.yaml +26 -2
- package/rules/paragraph-restatement.yaml +96 -0
- package/rules/person-consistency.yaml +59 -0
- package/rules/preferred-term.yaml +1 -0
- package/rules/proper-noun-density.yaml +14 -5
- package/rules/ra-nuki.yaml +43 -0
- package/rules/redundant-expression.yaml +76 -0
- package/rules/reference-title-mismatch.yaml +101 -0
- package/rules/reference-topic-missing.yaml +101 -0
- package/rules/relative-date-mismatch.yaml +71 -0
- package/rules/requirement-modal.yaml +94 -0
- package/rules/requirement-smell.yaml +70 -0
- package/rules/rule-of-three.yaml +49 -3
- package/rules/section-length-uniformity.yaml +27 -3
- package/rules/sentence-initial-so.yaml +58 -0
- package/rules/sentence-rhythm.yaml +27 -1
- package/rules/space-before-punctuation.yaml +41 -0
- package/rules/spelling-consistency.yaml +47 -0
- package/rules/stock-transition.yaml +34 -3
- package/rules/summary-fact-mismatch.yaml +122 -0
- package/rules/table-header-variant.yaml +112 -0
- package/rules/taigen-dome-in-prose.yaml +14 -0
- package/rules/teki-overuse.yaml +59 -0
- package/rules/title-length.yaml +120 -0
- package/rules/topic-predicate-distance.yaml +59 -0
- package/rules/total-mismatch.yaml +1 -0
- package/rules/translationese-density.yaml +62 -0
- package/rules/undefined-acronym.yaml +1 -0
- package/rules/unfilled-placeholder.yaml +8 -11
- package/rules/unit-mismatch.yaml +110 -0
- package/rules/unknown-word.yaml +62 -0
- package/rules/unqualified-superlative.yaml +5 -4
- package/rules/unused-definition.yaml +75 -0
- package/rules/use-before-definition.yaml +77 -0
- package/rules/vague-figure-reference.yaml +66 -0
- package/rules/vague-link-text.yaml +77 -0
- package/rules/vague-word-density.yaml +89 -0
- package/rules/very-adjective.yaml +61 -0
- package/rules/weasel-word.yaml +60 -0
- package/rules/wordy-phrase.yaml +61 -0
- package/skills/chaff/SKILL.md +116 -8
- package/src/acronym-expansions.ts +106 -0
- package/src/announced-count.ts +53 -11
- package/src/announced-list.ts +120 -0
- package/src/api.ts +154 -0
- package/src/baseline.ts +17 -4
- package/src/check-source.ts +75 -0
- package/src/checks.ts +3 -3
- package/src/cli-args.ts +7 -1
- package/src/cli-text.ts +32 -17
- package/src/cli.ts +105 -98
- package/src/closing-paragraph.ts +24 -0
- package/src/commands/compare.ts +15 -18
- package/src/commands/document-commands.ts +19 -0
- package/src/commands/eval.ts +5 -4
- package/src/commands/facts.ts +33 -0
- package/src/commands/feedback.ts +33 -1
- package/src/commands/fix-plan.ts +55 -0
- package/src/commands/grade-baseline.ts +44 -0
- package/src/commands/grade.ts +191 -0
- package/src/commands/outline.ts +50 -0
- package/src/commands/read-document.ts +33 -0
- package/src/commands/suppressions.ts +20 -0
- package/src/commands/test.ts +3 -3
- package/src/commands/tree.ts +19 -12
- package/src/compare/clock-time.ts +5 -2
- package/src/compare/distinct.ts +20 -0
- package/src/compare/extract.ts +7 -5
- package/src/compare/fact-key.ts +31 -0
- package/src/compare/fact-text.ts +21 -2
- package/src/compare/facts-render.ts +63 -0
- package/src/compare/facts-text.ts +41 -0
- package/src/compare/match.ts +1 -1
- package/src/compare/outcome.ts +14 -4
- package/src/compare/proper-nouns.ts +14 -10
- package/src/compare/render.ts +2 -2
- package/src/compare/text-atoms.ts +7 -6
- package/src/compare/text.ts +3 -2
- package/src/config/load.ts +17 -3
- package/src/config/option-problems.ts +6 -4
- package/src/config/style.ts +14 -1
- package/src/config/yaml-file.ts +65 -0
- package/src/correction-edit.ts +43 -0
- package/src/cross-run.ts +107 -0
- package/src/cross-variants.ts +55 -0
- package/src/cross-votes.ts +29 -0
- package/src/custom/load.ts +11 -3
- package/src/custom/module-path.ts +23 -0
- package/src/custom/parse.ts +67 -18
- package/src/custom/problems.ts +63 -41
- package/src/date-format.ts +123 -0
- package/src/derived/date-arithmetic.ts +63 -0
- package/src/derived/durations.ts +52 -0
- package/src/derived/elapsed.ts +125 -0
- package/src/derived/relative-dates.ts +96 -0
- package/src/derived/sentence-buckets.ts +29 -0
- package/src/detect-language.ts +1 -1
- package/src/detect.ts +10 -3
- package/src/detectors/absolute-exception.ts +102 -0
- package/src/detectors/abstract-length.ts +126 -0
- package/src/detectors/ai-phrasing.ts +18 -16
- package/src/detectors/ai-structure.ts +26 -0
- package/src/detectors/blank-structure.ts +147 -0
- package/src/detectors/bold-label.ts +55 -0
- package/src/detectors/chat-citation.ts +50 -0
- package/src/detectors/citation-entry.ts +94 -0
- package/src/detectors/citation-marks.ts +205 -0
- package/src/detectors/citation-style.ts +46 -0
- package/src/detectors/cross-link.ts +82 -0
- package/src/detectors/cross-registry/cross-doc-broken-link.ts +4 -0
- package/src/detectors/cross-registry/cross-doc-term-variant.ts +4 -0
- package/src/detectors/cross-variant.ts +77 -0
- package/src/detectors/dangling-figure.ts +8 -4
- package/src/detectors/date-format.ts +29 -0
- package/src/detectors/date-year.ts +91 -0
- package/src/detectors/definition-use.ts +41 -0
- package/src/detectors/derived-numbers.ts +191 -0
- package/src/detectors/document-shape.ts +107 -0
- package/src/detectors/doubled-punctuation.ts +5 -2
- package/src/detectors/duplicate-heading.ts +47 -0
- package/src/detectors/emoji-heading.ts +17 -0
- package/src/detectors/empty-section.ts +21 -0
- package/src/detectors/fact-consistency.ts +54 -0
- package/src/detectors/figure-order.ts +81 -0
- package/src/detectors/fullwidth-alnum.ts +118 -0
- package/src/detectors/hankaku-kana.ts +38 -0
- package/src/detectors/heading-code-words.ts +2 -2
- package/src/detectors/heading-numbering.ts +38 -0
- package/src/detectors/index.ts +18 -114
- package/src/detectors/invisible-character.ts +190 -0
- package/src/detectors/katakana-density.ts +62 -0
- package/src/detectors/known-correction.ts +89 -0
- package/src/detectors/kutoten-consistency.ts +2 -2
- package/src/detectors/lexicon-match.ts +33 -1
- package/src/detectors/lexicon.ts +43 -13
- package/src/detectors/list-parallel.ts +155 -0
- package/src/detectors/list-sentence.ts +45 -4
- package/src/detectors/long-vowel.ts +22 -6
- package/src/detectors/markup-finding.ts +16 -1
- package/src/detectors/misuse-match.ts +28 -0
- package/src/detectors/modal-conflict.ts +26 -0
- package/src/detectors/name-variant.ts +15 -0
- package/src/detectors/next-word.ts +156 -0
- package/src/detectors/nominalization.ts +73 -0
- package/src/detectors/number-style.ts +230 -0
- package/src/detectors/number-unit.ts +146 -0
- package/src/detectors/orthographic-variant.ts +152 -0
- package/src/detectors/orthography.ts +77 -27
- package/src/detectors/outside-announced-list.ts +25 -0
- package/src/detectors/oxford-comma.ts +1 -0
- package/src/detectors/paragraph-restatement.ts +68 -0
- package/src/detectors/paragraph-run.ts +27 -0
- package/src/detectors/person-consistency.ts +29 -0
- package/src/detectors/phrase-match.ts +27 -7
- package/src/detectors/placeholder-text.ts +62 -5
- package/src/detectors/ra-nuki.ts +38 -0
- package/src/detectors/reference-text.ts +44 -0
- package/src/detectors/registry/absolute-exception.ts +4 -0
- package/src/detectors/registry/abstract-length.ts +4 -0
- package/src/detectors/registry/acronym-expansion-conflict.ts +4 -0
- package/src/detectors/registry/adverb-density.ts +4 -0
- package/src/detectors/registry/agentless-passive.ts +4 -0
- package/src/detectors/registry/agreement-slip.ts +4 -0
- package/src/detectors/registry/ai-structure.ts +4 -0
- package/src/detectors/registry/ai-tell.ts +4 -0
- package/src/detectors/registry/announced-count.ts +4 -0
- package/src/detectors/registry/article-sound.ts +4 -0
- package/src/detectors/registry/assistant-residue.ts +4 -0
- package/src/detectors/registry/bold-label-list.ts +4 -0
- package/src/detectors/registry/bracket-nesting.ts +4 -0
- package/src/detectors/registry/broken-link.ts +4 -0
- package/src/detectors/registry/chat-citation-residue.ts +4 -0
- package/src/detectors/registry/citation-entry.ts +4 -0
- package/src/detectors/registry/citation-style.ts +4 -0
- package/src/detectors/registry/clause-chain.ts +4 -0
- package/src/detectors/registry/colon-lead-in.ts +4 -0
- package/src/detectors/registry/concrete-evidence.ts +4 -0
- package/src/detectors/registry/conjunction-run.ts +4 -0
- package/src/detectors/registry/contraction-mix.ts +4 -0
- package/src/detectors/registry/contrast-framing.ts +4 -0
- package/src/detectors/registry/count-per-section.ts +4 -0
- package/src/detectors/registry/cushion-density.ts +4 -0
- package/src/detectors/registry/custom-pattern.ts +4 -0
- package/src/detectors/registry/custom-tokens.ts +4 -0
- package/src/detectors/registry/custom-words.ts +4 -0
- package/src/detectors/registry/dangling-figure.ts +4 -0
- package/src/detectors/registry/dangling-reference.ts +4 -0
- package/src/detectors/registry/dash-density.ts +4 -0
- package/src/detectors/registry/date-format.ts +4 -0
- package/src/detectors/registry/date-order.ts +4 -0
- package/src/detectors/registry/date-range-reversed.ts +4 -0
- package/src/detectors/registry/date-weekday-mismatch.ts +4 -0
- package/src/detectors/registry/date-without-year.ts +4 -0
- package/src/detectors/registry/doubled-particle.ts +4 -0
- package/src/detectors/registry/doubled-punctuation.ts +4 -0
- package/src/detectors/registry/doubled-word.ts +4 -0
- package/src/detectors/registry/duplicate-definition.ts +4 -0
- package/src/detectors/registry/duplicate-heading.ts +4 -0
- package/src/detectors/registry/duration-mismatch.ts +4 -0
- package/src/detectors/registry/elapsed-years-mismatch.ts +4 -0
- package/src/detectors/registry/emoji-density.ts +4 -0
- package/src/detectors/registry/emoji-heading.ts +4 -0
- package/src/detectors/registry/empty-list-item.ts +4 -0
- package/src/detectors/registry/empty-section.ts +4 -0
- package/src/detectors/registry/empty-table-cell.ts +4 -0
- package/src/detectors/registry/expletive.ts +4 -0
- package/src/detectors/registry/fact-conflict.ts +4 -0
- package/src/detectors/registry/figure-order.ts +4 -0
- package/src/detectors/registry/fullwidth-alnum.ts +4 -0
- package/src/detectors/registry/hankaku-kana.ts +4 -0
- package/src/detectors/registry/heading-echo.ts +4 -0
- package/src/detectors/registry/heading-level-skip.ts +4 -0
- package/src/detectors/registry/heading-numbering.ts +4 -0
- package/src/detectors/registry/hedging.ts +4 -0
- package/src/detectors/registry/image-alt-text.ts +4 -0
- package/src/detectors/registry/intensified-adjective.ts +4 -0
- package/src/detectors/registry/internal-jargon.ts +4 -0
- package/src/detectors/registry/invisible-character.ts +4 -0
- package/src/detectors/registry/kanji-run.ts +4 -0
- package/src/detectors/registry/katakana-density.ts +4 -0
- package/src/detectors/registry/katakana-long-vowel.ts +4 -0
- package/src/detectors/registry/known-correction.ts +4 -0
- package/src/detectors/registry/kutoten-consistency.ts +4 -0
- package/src/detectors/registry/latin-spacing.ts +4 -0
- package/src/detectors/registry/list-item-form-mix.ts +4 -0
- package/src/detectors/registry/middle-dot.ts +4 -0
- package/src/detectors/registry/misuse-match.ts +4 -0
- package/src/detectors/registry/modal-conflict.ts +4 -0
- package/src/detectors/registry/name-variant.ts +4 -0
- package/src/detectors/registry/ngram-repetition.ts +4 -0
- package/src/detectors/registry/no-lead.ts +4 -0
- package/src/detectors/registry/nominalization.ts +4 -0
- package/src/detectors/registry/noun-ending.ts +4 -0
- package/src/detectors/registry/number-style-consistency.ts +4 -0
- package/src/detectors/registry/number-without-unit.ts +4 -0
- package/src/detectors/registry/numbering-gap.ts +4 -0
- package/src/detectors/registry/one-sentence-paragraph-run.ts +4 -0
- package/src/detectors/registry/opener-pile.ts +4 -0
- package/src/detectors/registry/opener-run.ts +4 -0
- package/src/detectors/registry/orthographic-variant.ts +4 -0
- package/src/detectors/registry/outside-announced-list.ts +4 -0
- package/src/detectors/registry/oxford-comma.ts +4 -0
- package/src/detectors/registry/paragraph-length.ts +4 -0
- package/src/detectors/registry/paragraph-restatement.ts +4 -0
- package/src/detectors/registry/paragraph-variance.ts +4 -0
- package/src/detectors/registry/percent-sum-mismatch.ts +4 -0
- package/src/detectors/registry/person-mix.ts +4 -0
- package/src/detectors/registry/phrase-count.ts +4 -0
- package/src/detectors/registry/phrase-density.ts +4 -0
- package/src/detectors/registry/phrase-match.ts +4 -0
- package/src/detectors/registry/preamble-length.ts +4 -0
- package/src/detectors/registry/preferred-term.ts +4 -0
- package/src/detectors/registry/proper-noun-density.ts +4 -0
- package/src/detectors/registry/ra-nuki.ts +4 -0
- package/src/detectors/registry/reference-title-mismatch.ts +4 -0
- package/src/detectors/registry/reference-topic-missing.ts +4 -0
- package/src/detectors/registry/relative-date-mismatch.ts +4 -0
- package/src/detectors/registry/repeated-conjunction.ts +4 -0
- package/src/detectors/registry/repeated-head.ts +4 -0
- package/src/detectors/registry/required-sections.ts +4 -0
- package/src/detectors/registry/requirement-modal.ts +4 -0
- package/src/detectors/registry/requirement-smell.ts +4 -0
- package/src/detectors/registry/rule-of-three.ts +4 -0
- package/src/detectors/registry/section-uniformity.ts +4 -0
- package/src/detectors/registry/sentence-comma-count.ts +4 -0
- package/src/detectors/registry/sentence-conjunctive-count.ts +4 -0
- package/src/detectors/registry/sentence-ending.ts +4 -0
- package/src/detectors/registry/sentence-length.ts +4 -0
- package/src/detectors/registry/sentence-rhythm.ts +4 -0
- package/src/detectors/registry/sentence-word-count.ts +4 -0
- package/src/detectors/registry/space-before-punctuation.ts +4 -0
- package/src/detectors/registry/spelling-variety.ts +4 -0
- package/src/detectors/registry/stock-transition.ts +4 -0
- package/src/detectors/registry/stray-space.ts +4 -0
- package/src/detectors/registry/summary-fact-mismatch.ts +4 -0
- package/src/detectors/registry/table-header-variant.ts +4 -0
- package/src/detectors/registry/title-case-mix.ts +4 -0
- package/src/detectors/registry/title-length.ts +4 -0
- package/src/detectors/registry/topic-predicate-distance.ts +4 -0
- package/src/detectors/registry/total-mismatch.ts +4 -0
- package/src/detectors/registry/unbalanced-bracket.ts +4 -0
- package/src/detectors/registry/undefined-acronym.ts +4 -0
- package/src/detectors/registry/unfilled-placeholder.ts +4 -0
- package/src/detectors/registry/unit-mismatch.ts +4 -0
- package/src/detectors/registry/unknown-word.ts +4 -0
- package/src/detectors/registry/unqualified-superlative.ts +4 -0
- package/src/detectors/registry/unused-definition.ts +4 -0
- package/src/detectors/registry/url-run-on.ts +4 -0
- package/src/detectors/registry/use-before-definition.ts +4 -0
- package/src/detectors/registry/vague-density.ts +4 -0
- package/src/detectors/registry/vague-figure-pointer.ts +4 -0
- package/src/detectors/registry/vague-link-text.ts +4 -0
- package/src/detectors/registry-files.ts +12 -0
- package/src/detectors/registry-load.ts +23 -0
- package/src/detectors/relative-dates.ts +113 -0
- package/src/detectors/requirement-modal.ts +67 -0
- package/src/detectors/requirement-smell.ts +52 -0
- package/src/detectors/sentence-counts.ts +112 -0
- package/src/detectors/sentence-load.ts +45 -0
- package/src/detectors/space-before-punctuation.ts +32 -0
- package/src/detectors/spelling-variety.ts +81 -0
- package/src/detectors/structure-tree.ts +3 -1
- package/src/detectors/structure.ts +17 -3
- package/src/detectors/superlative-comparison.ts +47 -0
- package/src/detectors/table-header.ts +174 -0
- package/src/detectors/team.ts +12 -4
- package/src/detectors/unit-consistency.ts +55 -0
- package/src/detectors/unknown-word.ts +43 -0
- package/src/detectors/url-run-on.ts +7 -1
- package/src/detectors/vague-figure-pointer.ts +58 -0
- package/src/detectors/vague-link-text.ts +12 -0
- package/src/detectors/word-list.ts +6 -1
- package/src/document-reading.ts +25 -0
- package/src/document.ts +94 -45
- package/src/experimental-alone.ts +21 -0
- package/src/extension/document-view.ts +109 -0
- package/src/extension/failure-text.ts +46 -0
- package/src/extension/import-default.ts +13 -0
- package/src/extension/load.ts +97 -0
- package/src/extension/module-detector.ts +61 -0
- package/src/extension/plugin-load.ts +82 -0
- package/src/extension/plugin-name.ts +26 -0
- package/src/extension/plugin-parse.ts +229 -0
- package/src/extension/problem-text.ts +103 -0
- package/src/extension/real-path.ts +10 -0
- package/src/extension/returned-findings.ts +62 -0
- package/src/extension/rule-export.ts +23 -0
- package/src/facts/fact-conflicts.ts +64 -0
- package/src/facts/fact-scope.ts +141 -0
- package/src/facts/fact-values.ts +110 -0
- package/src/facts/labelled-facts.ts +131 -0
- package/src/facts/measures.ts +54 -0
- package/src/facts/table-facts.ts +71 -0
- package/src/facts/trim-marks.ts +18 -0
- package/src/facts/unit-conflicts.ts +45 -0
- package/src/feedback/draft.ts +6 -0
- package/src/figure-references.ts +93 -13
- package/src/files.ts +16 -10
- package/src/finding-order.ts +3 -0
- package/src/fix-plan/mode.ts +40 -0
- package/src/fix-plan/plan.ts +202 -0
- package/src/fix-plan/render.ts +146 -0
- package/src/fix-plan/structure-target-text.ts +90 -0
- package/src/fix-plan/structure-targets.ts +46 -0
- package/src/fix-plan/text.ts +136 -0
- package/src/grade/baseline-text.ts +80 -0
- package/src/grade/baseline.ts +140 -0
- package/src/grade/checks.ts +73 -0
- package/src/grade/context-support.ts +60 -0
- package/src/grade/contexts.ts +53 -0
- package/src/grade/grade-item.ts +133 -0
- package/src/grade/item.ts +208 -0
- package/src/grade/order.ts +10 -0
- package/src/grade/pairing.ts +22 -0
- package/src/grade/rates.ts +39 -0
- package/src/grade/render-baseline.ts +74 -0
- package/src/grade/render-markdown.ts +62 -0
- package/src/grade/render-variants.ts +115 -0
- package/src/grade/render.ts +84 -0
- package/src/grade/result-name.ts +9 -0
- package/src/grade/result.ts +82 -0
- package/src/grade/results-read.ts +111 -0
- package/src/grade/rubric-verdict.ts +86 -0
- package/src/grade/rubric.ts +192 -0
- package/src/grade/scorer.ts +33 -0
- package/src/grade/setup.ts +43 -0
- package/src/grade/stamp.ts +60 -0
- package/src/grade/summary.ts +112 -0
- package/src/grade/text.ts +164 -0
- package/src/grade/variants-input.ts +54 -0
- package/src/grade/variants-text.ts +88 -0
- package/src/grade/variants.ts +118 -0
- package/src/grade/verdict.ts +27 -0
- package/src/grade-api.ts +184 -0
- package/src/heading-numbering.ts +106 -0
- package/src/kana-spelling.ts +49 -0
- package/src/language-sample.ts +48 -0
- package/src/link-line.ts +13 -0
- package/src/link-text.ts +46 -0
- package/src/long-vowel.ts +18 -8
- package/src/markup.ts +4 -2
- package/src/name-variants.ts +217 -0
- package/src/node-version.ts +22 -0
- package/src/not-run.ts +16 -0
- package/src/orthography.ts +40 -11
- package/src/outline/render.ts +92 -0
- package/src/outline/shape.ts +72 -0
- package/src/outline/structure-render.ts +101 -0
- package/src/outline/structure-text.ts +124 -0
- package/src/outline/text.ts +55 -0
- package/src/paragraph-runs.ts +30 -0
- package/src/person-forms.ts +119 -0
- package/src/plugin.ts +34 -4
- package/src/reasons.ts +7 -0
- package/src/render/compact.ts +13 -3
- package/src/render/explain.ts +54 -21
- package/src/render/friendly.ts +17 -1
- package/src/render/rules-json.ts +23 -13
- package/src/render/rules-table.ts +1 -1
- package/src/render/sarif.ts +31 -1
- package/src/render/suppressions.ts +30 -2
- package/src/resolve-genre.ts +1 -1
- package/src/rule-guide.ts +41 -0
- package/src/run-semantic.ts +2 -1
- package/src/run.ts +108 -63
- package/src/sentence-load.ts +77 -0
- package/src/setting-problems.ts +3 -1
- package/src/spacing-minority.ts +27 -0
- package/src/spelling-variants.ts +42 -0
- package/src/spelling.ts +81 -0
- package/src/stet-block.ts +60 -0
- package/src/stet.ts +41 -15
- package/src/structure/absolute-exception.ts +104 -0
- package/src/structure/date-range.ts +49 -1
- package/src/structure/definition-use.ts +130 -0
- package/src/structure/issues.ts +22 -0
- package/src/structure/lazy-tree.ts +15 -0
- package/src/structure/modal-conflict.ts +86 -0
- package/src/structure/numbered-clauses.ts +11 -0
- package/src/structure/reference-text.ts +114 -0
- package/src/structure/universal.ts +10 -2
- package/src/structure-shape/baseline-load.ts +18 -0
- package/src/structure-shape/baseline.ts +62 -0
- package/src/structure-shape/features.ts +189 -0
- package/src/structure-shape/heading-words.ts +71 -0
- package/src/structure-shape/of-document.ts +7 -0
- package/src/structure-shape/restatement.ts +41 -0
- package/src/structure-shape/score.ts +65 -0
- package/src/style-parse.ts +38 -3
- package/src/subheading-line.ts +51 -13
- package/src/tag-coverage.ts +13 -0
- package/src/yaml-values.ts +61 -0
- package/structure-baseline.yaml +289 -0
- package/styles/ieice.yaml +5 -4
- package/styles/jis-z8301-2011.yaml +5 -2
- package/styles/jis-z8301-2019.yaml +31 -0
- package/styles/koyobun.yaml +35 -0
- package/dist/legal-address.d.ts +0 -2
- package/dist/legal-address.d.ts.map +0 -1
- package/dist/legal-address.js +0 -16
- package/dist/legal-address.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Detector, Finding } from "../plugin.ts";
|
|
2
|
+
import { mentionsIn, nameVariants } from "../name-variants.ts";
|
|
3
|
+
import { quoteAt } from "./structure-tree.ts";
|
|
4
|
+
|
|
5
|
+
/** 同じ名前を、文書の中で少しだけ違う形に書いた所(GitHub と Github、山田太郎 と 山田太朗)。少ないほうを指す。 */
|
|
6
|
+
export const nameVariant: Detector = (doc): Finding[] =>
|
|
7
|
+
nameVariants(doc.sentences.flatMap((sentence) => mentionsIn(sentence.tokens ?? [], doc.source))).map(({ mention, usual, kind }) => ({
|
|
8
|
+
rule: "",
|
|
9
|
+
severity: "warning",
|
|
10
|
+
line: 0,
|
|
11
|
+
column: 0,
|
|
12
|
+
quote: quoteAt(doc.source, mention.offset),
|
|
13
|
+
values: { name: mention.surface, usual, offset: mention.offset },
|
|
14
|
+
variant: kind,
|
|
15
|
+
}));
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { Detector, Finding, Lexicon, Sentence, Token } from "../plugin.ts";
|
|
2
|
+
import { densityFindings } from "./ai-phrasing.ts";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The word kinds an article can stand before. A conjunction, a preposition or a verb after "a" is the letter a ("option A
|
|
6
|
+
* or B", "a is the length").
|
|
7
|
+
*/
|
|
8
|
+
const CONTENT = new Set(["NOUN", "PROPN", "ADJ", "ADV", "NUM"]);
|
|
9
|
+
|
|
10
|
+
const LETTER_START = /^\p{L}/u;
|
|
11
|
+
const HAS_LOWER = /\p{Ll}/u;
|
|
12
|
+
/** A lower-case letter before capitals (mRNA, pH is not): the first letter is said by its name. */
|
|
13
|
+
const LETTER_BEFORE_CAPITALS = /^\p{Ll}\p{Lu}{2}/u;
|
|
14
|
+
|
|
15
|
+
/** Two tokens with nothing but whitespace between them in the source. Code and markup are hidden from the tokens. */
|
|
16
|
+
const adjacent = (source: string, left: Token, right: Token): boolean => source.slice(left.span.end, right.span.start).trim() === "";
|
|
17
|
+
|
|
18
|
+
/** The sound knowledge of lexicon article-sound, by group. */
|
|
19
|
+
export type ArticleSounds = {
|
|
20
|
+
readonly vowelLetters: ReadonlySet<string>;
|
|
21
|
+
readonly vowelLetterNames: ReadonlySet<string>;
|
|
22
|
+
readonly eitherLetterNames: ReadonlySet<string>;
|
|
23
|
+
readonly consonant: readonly string[];
|
|
24
|
+
readonly vowel: readonly string[];
|
|
25
|
+
readonly word: ReadonlySet<string>;
|
|
26
|
+
readonly either: readonly string[];
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const ofGroup = (lexicon: Lexicon, group: string): string[] => lexicon.filter((entry) => entry.group === group).map((entry) => entry.pattern);
|
|
30
|
+
|
|
31
|
+
export const articleSoundsOf = (lexicon: Lexicon): ArticleSounds => ({
|
|
32
|
+
vowelLetters: new Set(ofGroup(lexicon, "vowel-letter")),
|
|
33
|
+
vowelLetterNames: new Set(ofGroup(lexicon, "letter-name-vowel")),
|
|
34
|
+
eitherLetterNames: new Set(ofGroup(lexicon, "letter-name-either")),
|
|
35
|
+
consonant: ofGroup(lexicon, "consonant"),
|
|
36
|
+
vowel: ofGroup(lexicon, "vowel"),
|
|
37
|
+
word: new Set(ofGroup(lexicon, "word")),
|
|
38
|
+
either: ofGroup(lexicon, "either"),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const startsWithAny = (word: string, starts: readonly string[]): boolean => starts.some((start) => word.startsWith(start));
|
|
42
|
+
|
|
43
|
+
/** Whether a word in lower or mixed case starts with a vowel sound; undefined when it is said both ways. */
|
|
44
|
+
const wordSound = (word: string, sounds: ArticleSounds): boolean | undefined => {
|
|
45
|
+
const lower = word.toLowerCase();
|
|
46
|
+
if (startsWithAny(lower, sounds.either)) return undefined;
|
|
47
|
+
if (startsWithAny(lower, sounds.vowel)) return true;
|
|
48
|
+
if (startsWithAny(lower, sounds.consonant)) return false;
|
|
49
|
+
return sounds.vowelLetters.has(lower.charAt(0));
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/** Capitals longer than this that hold a vowel may be said as a word (SALT, GIF), so only the lexicon decides them. */
|
|
53
|
+
const SPELLED_OUT_LENGTH = 3;
|
|
54
|
+
|
|
55
|
+
/** Whether capitals not in the lexicon are surely said letter by letter: short (MBA), or with no vowel to say (HTTP). */
|
|
56
|
+
const isSpelledOut = (word: string, sounds: ArticleSounds): boolean =>
|
|
57
|
+
word.length <= SPELLED_OUT_LENGTH || ![...word.toLowerCase()].some((letter) => sounds.vowelLetters.has(letter));
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Whether a word starts with a vowel sound. Capitals are read as the lexicon says (a NASA probe), else letter by letter when
|
|
61
|
+
* surely spelled out (an MBA). undefined when the word may be said both ways (a SQL, an SQL; a or an HTTP) or nothing says how.
|
|
62
|
+
*/
|
|
63
|
+
export const startsWithVowelSound = (word: string, sounds: ArticleSounds): boolean | undefined => {
|
|
64
|
+
if (LETTER_BEFORE_CAPITALS.test(word)) return sounds.vowelLetterNames.has(word.charAt(0).toUpperCase());
|
|
65
|
+
if (HAS_LOWER.test(word)) return wordSound(word, sounds);
|
|
66
|
+
if (sounds.either.includes(word) || sounds.eitherLetterNames.has(word.charAt(0))) return undefined;
|
|
67
|
+
if (sounds.word.has(word)) return wordSound(word, sounds);
|
|
68
|
+
return isSpelledOut(word, sounds) ? sounds.vowelLetterNames.has(word.charAt(0)) : undefined;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const ARTICLES: Readonly<Record<string, boolean>> = { a: false, an: true };
|
|
72
|
+
|
|
73
|
+
/** The article the next word takes, written in the case of the one written ("A apple" → "An"). */
|
|
74
|
+
const fitting = (written: string, vowel: boolean): string => {
|
|
75
|
+
const article = vowel ? "an" : "a";
|
|
76
|
+
return written.charAt(0) === written.charAt(0).toUpperCase() ? `${article.charAt(0).toUpperCase()}${article.slice(1)}` : article;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
type Slip = { readonly article: Token; readonly next: Token; readonly fits: string };
|
|
80
|
+
|
|
81
|
+
/** An article that does not fit the sound of the word after it. */
|
|
82
|
+
const WORD = /\p{L}/u;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Whether a token is the article "a" or "an": lower case, or capitalised as the first word of the sentence. A capital A
|
|
86
|
+
* inside a sentence is a letter ("grade A eggs", "vitamin A intake").
|
|
87
|
+
*/
|
|
88
|
+
const isArticle = (token: Token, at: number, tokens: readonly Token[]): boolean => {
|
|
89
|
+
const first = tokens.findIndex((candidate) => WORD.test(candidate.surface));
|
|
90
|
+
return token.surface === token.surface.toLowerCase() || at === first;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const slipAt = (source: string, tokens: readonly Token[], at: number, sounds: ArticleSounds): Slip | undefined => {
|
|
94
|
+
const article = tokens[at];
|
|
95
|
+
const next = tokens[at + 1];
|
|
96
|
+
const takesAn = ARTICLES[article?.surface.toLowerCase() ?? ""];
|
|
97
|
+
if (article === undefined || next === undefined || takesAn === undefined || !isArticle(article, at, tokens)) return undefined;
|
|
98
|
+
if (!CONTENT.has(next.pos) || !LETTER_START.test(next.surface)) return undefined;
|
|
99
|
+
if (!adjacent(source, article, next)) return undefined;
|
|
100
|
+
const vowel = startsWithVowelSound(next.surface, sounds);
|
|
101
|
+
return vowel === undefined || vowel === takesAn ? undefined : { article, next, fits: fitting(article.surface, vowel) };
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const slipFinding = (sentence: Sentence, slip: Slip): Finding => ({
|
|
105
|
+
rule: "",
|
|
106
|
+
severity: "warning",
|
|
107
|
+
line: 0,
|
|
108
|
+
column: 0,
|
|
109
|
+
quote: sentence.text.trim(),
|
|
110
|
+
values: { matched: `${slip.article.surface} ${slip.next.surface}`, article: slip.fits, offset: slip.article.span.start },
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
/** "a" before a vowel sound or "an" before a consonant sound (a apple, an user), by the sound knowledge in the lexicon. */
|
|
114
|
+
export const articleSound: Detector = (doc, options): Finding[] => {
|
|
115
|
+
const sounds = articleSoundsOf(options.lexicon ?? []);
|
|
116
|
+
const findings = doc.sentences.flatMap((sentence) => {
|
|
117
|
+
const tokens = sentence.tokens ?? [];
|
|
118
|
+
return tokens.flatMap((_token, at) => {
|
|
119
|
+
const slip = slipAt(doc.source, tokens, at, sounds);
|
|
120
|
+
return slip === undefined ? [] : [slipFinding(sentence, slip)];
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
return findings.length < options.limit ? [] : findings;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const ADJECTIVE = "ADJ";
|
|
127
|
+
|
|
128
|
+
type Intensified = { readonly sentence: Sentence; readonly matched: string; readonly offset: number };
|
|
129
|
+
|
|
130
|
+
type IntensifierWords = { readonly intensifiers: ReadonlySet<string>; readonly exceptions: ReadonlySet<string> };
|
|
131
|
+
|
|
132
|
+
/** The lexicon's intensifier right before an adjective ("very important"), not before an excepted word ("the very first"). */
|
|
133
|
+
const intensifiedIn = (source: string, sentence: Sentence, words: IntensifierWords): Intensified[] => {
|
|
134
|
+
const tokens = sentence.tokens ?? [];
|
|
135
|
+
return tokens.flatMap((token, at) => {
|
|
136
|
+
const next = tokens[at + 1];
|
|
137
|
+
if (next === undefined || !words.intensifiers.has(token.surface.toLowerCase()) || next.pos !== ADJECTIVE) return [];
|
|
138
|
+
if (!adjacent(source, token, next)) return [];
|
|
139
|
+
return words.exceptions.has(next.surface.toLowerCase()) ? [] : [{ sentence, matched: `${token.surface} ${next.surface}`, offset: token.span.start }];
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
const EXCEPTIONS = "very-exception";
|
|
144
|
+
|
|
145
|
+
/** "very" + adjective, dense for the document's length: each one leans on "very" instead of a stronger word. */
|
|
146
|
+
export const intensifiedAdjective: Detector = (doc, options): Finding[] => {
|
|
147
|
+
const words = {
|
|
148
|
+
intensifiers: new Set((options.lexicon ?? []).map((entry) => entry.pattern)),
|
|
149
|
+
exceptions: new Set((doc.lexicons[EXCEPTIONS] ?? []).map((entry) => entry.pattern)),
|
|
150
|
+
};
|
|
151
|
+
return densityFindings(
|
|
152
|
+
doc,
|
|
153
|
+
doc.sentences.flatMap((sentence) => intensifiedIn(doc.source, sentence, words)),
|
|
154
|
+
options.limit,
|
|
155
|
+
);
|
|
156
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Detector, Finding, Lexicon, ProseDocument, Sentence, Token } from "../plugin.ts";
|
|
2
|
+
import { entryRanges, type TokenRange } from "./lexicon-match.ts";
|
|
3
|
+
import { rateOver } from "./lexicon.ts";
|
|
4
|
+
|
|
5
|
+
// A verb written as a noun and carried by another verb: 調査を実施した for 調査した, "make a decision" for "decide"
|
|
6
|
+
// (the やさしい日本語 guideline; the Federal Plain Language Guidelines' hidden verbs; GOV.UK). Two shapes, each from a
|
|
7
|
+
// lexicon the language may or may not have: a whole phrase with its verb (nominalization-phrase), or a verbal noun
|
|
8
|
+
// (the adapter's VerbForm=Vnoun) followed by a carrying verb (nominalization-light-verb). Counted as a density.
|
|
9
|
+
|
|
10
|
+
export type Hidden = { readonly sentence: Sentence; readonly offset: number; readonly matched: string; readonly preferred: string };
|
|
11
|
+
|
|
12
|
+
const PHRASES = "nominalization-phrase";
|
|
13
|
+
const LIGHT_VERBS = "nominalization-light-verb";
|
|
14
|
+
/** Verbal nouns whose carrying verb means "hold" (研修を実施する is not 研修する): not hidden verbs. */
|
|
15
|
+
const EVENT_NOUNS = "nominalization-event-noun";
|
|
16
|
+
|
|
17
|
+
const isVerbalNoun = (token: Token | undefined): token is Token => token?.features?.["VerbForm"] === "Vnoun";
|
|
18
|
+
|
|
19
|
+
const writtenBetween = (source: string, tokens: readonly Token[], range: TokenRange): string => {
|
|
20
|
+
const [first, last] = [tokens[range.start], tokens[range.end - 1]];
|
|
21
|
+
return first === undefined || last === undefined ? "" : source.slice(first.span.start, last.span.end);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/** A phrase of the lexicon, with the verb it hides (instead_of). */
|
|
25
|
+
const phrasesIn = (sentence: Sentence, source: string, phrases: Lexicon): Hidden[] =>
|
|
26
|
+
phrases.flatMap((entry) =>
|
|
27
|
+
entryRanges(sentence, entry).map((range) => ({
|
|
28
|
+
sentence,
|
|
29
|
+
offset: sentence.tokens?.[range.start]?.span.start ?? sentence.span.start,
|
|
30
|
+
matched: writtenBetween(source, sentence.tokens ?? [], range),
|
|
31
|
+
preferred: entry.instead_of ?? "",
|
|
32
|
+
})),
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* A carrying verb right after a verbal noun: 調査 + を実施した. Both sides are named in the dictionary form, the noun and the
|
|
37
|
+
* entry (調査を実施する), and the verb to write is the noun and the entry's instead_of (調査 + する).
|
|
38
|
+
*/
|
|
39
|
+
const lightVerbsIn = (sentence: Sentence, lightVerbs: Lexicon, eventNouns: ReadonlySet<string>): Hidden[] => {
|
|
40
|
+
const tokens = sentence.tokens ?? [];
|
|
41
|
+
return lightVerbs.flatMap((entry) =>
|
|
42
|
+
entryRanges(sentence, entry).flatMap((range): Hidden[] => {
|
|
43
|
+
const noun = tokens[range.start - 1];
|
|
44
|
+
if (!isVerbalNoun(noun) || eventNouns.has(noun.surface)) return [];
|
|
45
|
+
return [{ sentence, offset: noun.span.start, matched: `${noun.surface}${entry.pattern}`, preferred: `${noun.surface}${entry.instead_of ?? ""}` }];
|
|
46
|
+
}),
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/** Pure: every hidden verb in the document, in the order they are written. */
|
|
51
|
+
export const hiddenVerbs = (doc: Pick<ProseDocument, "sentences" | "source" | "lexicons">): Hidden[] => {
|
|
52
|
+
const eventNouns = new Set((doc.lexicons[EVENT_NOUNS] ?? []).map((entry) => entry.pattern));
|
|
53
|
+
return doc.sentences
|
|
54
|
+
.flatMap((sentence) => [
|
|
55
|
+
...phrasesIn(sentence, doc.source, doc.lexicons[PHRASES] ?? []),
|
|
56
|
+
...lightVerbsIn(sentence, doc.lexicons[LIGHT_VERBS] ?? [], eventNouns),
|
|
57
|
+
])
|
|
58
|
+
.toSorted((left, right) => left.offset - right.offset);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export const nominalization: Detector = (doc, options): Finding[] => {
|
|
62
|
+
const hidden = hiddenVerbs(doc);
|
|
63
|
+
const rate = rateOver(doc, hidden.length, options.limit);
|
|
64
|
+
if (rate === undefined) return [];
|
|
65
|
+
return hidden.map((found) => ({
|
|
66
|
+
rule: "",
|
|
67
|
+
severity: "info",
|
|
68
|
+
line: 0,
|
|
69
|
+
column: 0,
|
|
70
|
+
quote: found.sentence.text.trim(),
|
|
71
|
+
values: { matched: found.matched, preferred: found.preferred, count: hidden.length, density: rate, limit: options.limit, offset: found.offset },
|
|
72
|
+
}));
|
|
73
|
+
};
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
// How a document writes its numbers: 3件 or 三件, 1,000 or 1000, 10% or 10% or 10パーセント, three files or 3 files.
|
|
2
|
+
// Each kind is compared within the document and the less common style is reported; neither is called right. Pure; the
|
|
3
|
+
// words (counters, kanji numerals, percent units, number words) come from the language's lexicons.
|
|
4
|
+
import { escapeRegExp } from "../orthography.ts";
|
|
5
|
+
import { QUOTATION_MARKS, isWithinAny, quotedSpans } from "../quoted-span.ts";
|
|
6
|
+
import { isCitation } from "./kutoten-consistency.ts";
|
|
7
|
+
import type { Detector, Finding, ProseDocument, Sentence, Span, Token } from "../plugin.ts";
|
|
8
|
+
|
|
9
|
+
export type NumberKind = "count" | "grouping" | "percent" | "count-small" | "count-large";
|
|
10
|
+
|
|
11
|
+
/** One number as written: its kind, the style it is written in, the text, and where it starts in the document. */
|
|
12
|
+
export type NumberMark = { readonly kind: NumberKind; readonly style: string; readonly written: string; readonly offset: number };
|
|
13
|
+
|
|
14
|
+
/** The language's words for numbers. countWords is in order from one (the position is the value). */
|
|
15
|
+
export type NumberWords = {
|
|
16
|
+
readonly counters: readonly string[];
|
|
17
|
+
readonly kanji: readonly string[];
|
|
18
|
+
readonly percentUnits: readonly string[];
|
|
19
|
+
readonly countWords: readonly string[];
|
|
20
|
+
/** Plural nouns of measure (days, miles) that take figures in every style: a number before one is not a count. */
|
|
21
|
+
readonly figureNouns: readonly string[];
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const alternation = (words: readonly string[]): string =>
|
|
25
|
+
words
|
|
26
|
+
.toSorted((left, right) => right.length - left.length)
|
|
27
|
+
.map(escapeRegExp)
|
|
28
|
+
.join("|");
|
|
29
|
+
|
|
30
|
+
const DIGIT_RUN = "[0-90-9]+(?:[,,..][0-90-9]+)*";
|
|
31
|
+
|
|
32
|
+
// ───────── counts in Japanese: 3件 or 三件 ─────────
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* A number right before a counter. Not after a kanji, a kana prolonged mark or 第 (統一, 唯一, 第三回 are words or ordinals),
|
|
36
|
+
* nor after a letter or digit (part of a code).
|
|
37
|
+
*/
|
|
38
|
+
const countPattern = (words: NumberWords): RegExp | undefined => {
|
|
39
|
+
if (words.counters.length === 0 || words.kanji.length === 0) return undefined;
|
|
40
|
+
const kanji = `[${words.kanji.map(escapeRegExp).join("")}]+`;
|
|
41
|
+
return new RegExp(`(?<![\\p{Script=Han}A-Za-z0-90-9..])(?:(${DIGIT_RUN}[万億]?)|(${kanji}))\\s?(?:${alternation(words.counters)})`, "gu");
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 一 alone is the idiom (一つ, 一人, 一回) a document writes in kanji whatever its style for counts. A run of magnitudes only
|
|
46
|
+
* (万人, 百人一首, 千人) is as often a word as a number.
|
|
47
|
+
*/
|
|
48
|
+
const MAGNITUDES = /^[一百千万億]+$/u;
|
|
49
|
+
|
|
50
|
+
const isIdiomNumeral = (numeral: string): boolean => MAGNITUDES.test(numeral);
|
|
51
|
+
|
|
52
|
+
const countMarks = (text: string, base: number, words: NumberWords): NumberMark[] => {
|
|
53
|
+
const pattern = countPattern(words);
|
|
54
|
+
if (pattern === undefined) return [];
|
|
55
|
+
return [...text.matchAll(pattern)].flatMap((match): NumberMark[] => {
|
|
56
|
+
const [written, digits, kanji] = match;
|
|
57
|
+
if (kanji !== undefined && isIdiomNumeral(kanji)) return [];
|
|
58
|
+
return [{ kind: "count", style: digits === undefined ? "kanji" : "digits", written, offset: base + match.index }];
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// ───────── digit grouping: 1,000 or 1000 ─────────
|
|
63
|
+
|
|
64
|
+
const GROUPED = /^[0-90-9]{1,3}(?:[,,][0-90-9]{3})+$/u;
|
|
65
|
+
|
|
66
|
+
const DIGITS_AND_COMMAS = /[0-90-9]+(?:[,,][0-90-9]+)*/gu;
|
|
67
|
+
const PLAIN_BIG = /^[1-91-9][0-90-9]{3,}$/u;
|
|
68
|
+
|
|
69
|
+
/** Next to one of these, a run of digits is part of a code, a version, a date, a time, a phone number or a decimal. */
|
|
70
|
+
const NOT_BEFORE = /[\p{L}\p{N}.,,.##/::\--_]/u;
|
|
71
|
+
const NOT_AFTER = /[\p{N}.,,.::\--/]/u;
|
|
72
|
+
|
|
73
|
+
type DigitRun = { readonly written: string; readonly index: number };
|
|
74
|
+
|
|
75
|
+
/** Each number of four digits or more standing alone, grouped (1,000) or not (1000). */
|
|
76
|
+
const bigNumbers = (text: string): DigitRun[] =>
|
|
77
|
+
[...text.matchAll(DIGITS_AND_COMMAS)].flatMap((match): DigitRun[] => {
|
|
78
|
+
const written = match[0];
|
|
79
|
+
const standsAlone = !NOT_BEFORE.test(text.charAt(match.index - 1)) && !NOT_AFTER.test(text.charAt(match.index + written.length));
|
|
80
|
+
return standsAlone && (GROUPED.test(written) || PLAIN_BIG.test(written)) ? [{ written, index: match.index }] : [];
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const CURRENCY_BEFORE = /[$¥¥€£]\s?$/u;
|
|
84
|
+
|
|
85
|
+
/** A capitalised word or abbreviation right before (H.R. 5376, Form 1040, No. 12345): the number is a label, never grouped. */
|
|
86
|
+
const isLabelBefore = (before: string): boolean => /\s$/u.test(before) && /^\p{Lu}/u.test(before.trimEnd().split(/\s/u).at(-1) ?? "");
|
|
87
|
+
|
|
88
|
+
/** A four-digit number in this range is most often a year (2019 annual report), which is never grouped. */
|
|
89
|
+
const YEAR_LIKE = { from: 1000, to: 2199 };
|
|
90
|
+
|
|
91
|
+
const FOUR_DIGITS = 4;
|
|
92
|
+
|
|
93
|
+
const isYearLike = (digits: string): boolean => {
|
|
94
|
+
const value = Number(digits.normalize("NFKC"));
|
|
95
|
+
return digits.length === FOUR_DIGITS && value >= YEAR_LIKE.from && value <= YEAR_LIKE.to;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/** What follows a quantity: a counter or 円 / 万 (Japanese), or a word in lower case (10000 users). */
|
|
99
|
+
/** A counter or 円 / 万 / 億 right after (with at most one space): the number counts something in Japanese. */
|
|
100
|
+
const countedAfter = (after: string, words: NumberWords): boolean => {
|
|
101
|
+
const next = after.replace(/^\s/u, "");
|
|
102
|
+
return /^[万億円]/u.test(next) || words.counters.some((counter) => next.startsWith(counter));
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/** What follows a quantity: a Japanese counter, or a word in lower case (10000 users). */
|
|
106
|
+
const quantityAfter = (after: string, words: NumberWords): boolean => /^\s?[a-z]/u.test(after) || countedAfter(after, words);
|
|
107
|
+
|
|
108
|
+
/** How far back to look for a currency sign or a label word. The sentence may start right after one (H.R. ends a sentence). */
|
|
109
|
+
const BEFORE_REACH = 16;
|
|
110
|
+
|
|
111
|
+
const groupingMarks = (text: string, base: number, words: NumberWords, source: string): NumberMark[] =>
|
|
112
|
+
bigNumbers(text).flatMap(({ written, index }): NumberMark[] => {
|
|
113
|
+
const grouped = GROUPED.test(written);
|
|
114
|
+
const before = source.slice(Math.max(0, base + index - BEFORE_REACH), base + index);
|
|
115
|
+
const after = text.slice(index + written.length);
|
|
116
|
+
const currency = CURRENCY_BEFORE.test(before);
|
|
117
|
+
if (!currency && !quantityAfter(after, words)) return [];
|
|
118
|
+
if (!grouped && isLabelBefore(before)) return [];
|
|
119
|
+
if (!grouped && !currency && isYearLike(written) && !countedAfter(after, words)) return [];
|
|
120
|
+
return [{ kind: "grouping", style: grouped ? "grouped" : "plain", written, offset: base + index }];
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// ───────── percent: 10% or 10% or 10パーセント, 10% or 10 percent ─────────
|
|
124
|
+
|
|
125
|
+
const percentMarks = (text: string, base: number, words: NumberWords): NumberMark[] => {
|
|
126
|
+
if (words.percentUnits.length === 0) return [];
|
|
127
|
+
const pattern = new RegExp(`(?<![\\p{L}\\p{N}..,,])(${DIGIT_RUN})\\s?(${alternation(words.percentUnits)})(?![A-Za-z])`, "gu");
|
|
128
|
+
return [...text.matchAll(pattern)].map((match) => ({
|
|
129
|
+
kind: "percent",
|
|
130
|
+
style: (match[2] ?? "").toLowerCase(),
|
|
131
|
+
written: match[0],
|
|
132
|
+
offset: base + match.index,
|
|
133
|
+
}));
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
// ───────── counts in English: three files or 3 files ─────────
|
|
137
|
+
|
|
138
|
+
const SMALL_FROM = 2;
|
|
139
|
+
const LARGE_FROM = 10;
|
|
140
|
+
|
|
141
|
+
const valueOf = (surface: string, words: readonly string[]): number | undefined => {
|
|
142
|
+
if (/^\d+$/u.test(surface)) return Number(surface);
|
|
143
|
+
const at = words.indexOf(surface.toLowerCase());
|
|
144
|
+
return at === -1 ? undefined : at + 1;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const isCountedNoun = (token: Token | undefined, figureNouns: readonly string[]): boolean =>
|
|
148
|
+
token?.pos === "NOUN" && token.features?.["Number"] === "Plur" && !figureNouns.includes(token.surface.toLowerCase());
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* A number before a plural noun (three files, 3 files), from two to the last number word the language lists. One is a
|
|
152
|
+
* pronoun as often as a count. A number word that opens the sentence is spelt out by every style, so it is not counted.
|
|
153
|
+
*/
|
|
154
|
+
const englishCountMarks = (sentence: Sentence, words: NumberWords): NumberMark[] => {
|
|
155
|
+
const tokens = sentence.tokens ?? [];
|
|
156
|
+
return tokens.flatMap((token, index): NumberMark[] => {
|
|
157
|
+
const value = valueOf(token.surface, words.countWords);
|
|
158
|
+
if (value === undefined || value < SMALL_FROM || value > words.countWords.length || index === 0 || !isCountedNoun(tokens[index + 1], words.figureNouns))
|
|
159
|
+
return [];
|
|
160
|
+
const style = /^\d+$/u.test(token.surface) ? "digits" : "words";
|
|
161
|
+
return [{ kind: value < LARGE_FROM ? "count-small" : "count-large", style, written: token.surface, offset: sentence.span.start + token.span.start }];
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// ───────── the document ─────────
|
|
166
|
+
|
|
167
|
+
/** Every number mark in a sentence, less those inside a quotation. */
|
|
168
|
+
export const numberMarksIn = (sentence: Sentence, words: NumberWords, language: string, source: string): NumberMark[] => {
|
|
169
|
+
const base = sentence.span.start;
|
|
170
|
+
const marks = [
|
|
171
|
+
...countMarks(sentence.text, base, words),
|
|
172
|
+
...groupingMarks(sentence.text, base, words, source),
|
|
173
|
+
...percentMarks(sentence.text, base, words),
|
|
174
|
+
...(language === "ja" ? [] : englishCountMarks(sentence, words)),
|
|
175
|
+
];
|
|
176
|
+
const quoted: readonly Span[] = quotedSpans(sentence.text, QUOTATION_MARKS);
|
|
177
|
+
return marks.filter((mark) => !isWithinAny(quoted, { start: mark.offset - base, end: mark.offset - base + mark.written.length }));
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
const PERCENT = 100;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* The marks not in the document's usual style, when they are few enough to be slips: at most limitPercent of the kind.
|
|
184
|
+
* The usual style is the most common one; on a tie, the one the document used first.
|
|
185
|
+
*/
|
|
186
|
+
export const minorityStyles = (marks: readonly NumberMark[], limitPercent: number): { readonly odd: NumberMark[]; readonly usual: NumberMark | undefined } => {
|
|
187
|
+
const counts = new Map<string, number>();
|
|
188
|
+
marks.forEach((mark) => counts.set(mark.style, (counts.get(mark.style) ?? 0) + 1));
|
|
189
|
+
if (counts.size < 2) return { odd: [], usual: undefined };
|
|
190
|
+
const most = Math.max(...counts.values());
|
|
191
|
+
const usual = marks.find((mark) => counts.get(mark.style) === most);
|
|
192
|
+
const odd = marks.filter((mark) => mark.style !== usual?.style);
|
|
193
|
+
return odd.length * PERCENT > limitPercent * marks.length ? { odd: [], usual } : { odd, usual };
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
const wordsOf = (doc: ProseDocument): NumberWords => {
|
|
197
|
+
const patterns = (id: string): string[] => (doc.lexicons[id] ?? []).map((entry) => entry.pattern);
|
|
198
|
+
return {
|
|
199
|
+
counters: patterns("numeral-counter"),
|
|
200
|
+
kanji: patterns("numeral-kanji"),
|
|
201
|
+
percentUnits: patterns("percent-unit"),
|
|
202
|
+
countWords: patterns("count-number"),
|
|
203
|
+
figureNouns: patterns("figure-noun"),
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const KINDS: readonly NumberKind[] = ["count", "grouping", "percent", "count-small", "count-large"];
|
|
208
|
+
|
|
209
|
+
const findingOf = (mark: NumberMark, usual: NumberMark, count: number, of: number, limit: number): Finding => ({
|
|
210
|
+
rule: "number-style-consistency",
|
|
211
|
+
severity: "info",
|
|
212
|
+
line: 0,
|
|
213
|
+
column: 0,
|
|
214
|
+
quote: mark.written,
|
|
215
|
+
values: { written: mark.written, usual: usual.written, count, of, limit, offset: mark.offset },
|
|
216
|
+
variant: mark.kind,
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
/** For each kind of number, the marks written in the document's less common style. */
|
|
220
|
+
export const numberStyleConsistency: Detector = (doc, options): Finding[] => {
|
|
221
|
+
const words = wordsOf(doc);
|
|
222
|
+
const marks = doc.sentences
|
|
223
|
+
.filter((sentence) => sentence.embeddedLanguage === undefined && !isCitation(sentence, doc.source))
|
|
224
|
+
.flatMap((sentence) => numberMarksIn(sentence, words, doc.language, doc.source));
|
|
225
|
+
return KINDS.flatMap((kind) => {
|
|
226
|
+
const ofKind = marks.filter((mark) => mark.kind === kind);
|
|
227
|
+
const { odd, usual } = minorityStyles(ofKind, options.limit);
|
|
228
|
+
return usual === undefined ? [] : odd.map((mark) => findingOf(mark, usual, odd.length, ofKind.length, options.limit));
|
|
229
|
+
});
|
|
230
|
+
};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// A number written bare where the same document gives that kind of value a unit: one cell of a table column, or one
|
|
2
|
+
// "label: value" line, where the column's or label's other values all carry the same unit (300円, 200円, 150).
|
|
3
|
+
// Pure; reads the Markdown tables and the label lines of the prose. Which words are units comes from the language's lexicons.
|
|
4
|
+
import type { Detector, Finding, ProseDocument } from "../plugin.ts";
|
|
5
|
+
import { readMarkdown } from "../markdown-read.ts";
|
|
6
|
+
import { spanOf, type MarkdownNode } from "../markdown-node.ts";
|
|
7
|
+
import { eachPreOrder } from "../tree-walk.ts";
|
|
8
|
+
import { quoteAt } from "./structure-tree.ts";
|
|
9
|
+
|
|
10
|
+
/** One value of a kind: where its number starts, as written, and its unit ("" when bare). */
|
|
11
|
+
export type Measured = { readonly kind: string; readonly name: string; readonly offset: number; readonly written: string; readonly unit: string };
|
|
12
|
+
|
|
13
|
+
export type UnitGap = { readonly value: Measured; readonly unit: string };
|
|
14
|
+
|
|
15
|
+
/** The lexicons that name units. */
|
|
16
|
+
export const UNIT_LEXICONS = ["value-unit", "measure-unit", "percent-unit", "currency-code"] as const;
|
|
17
|
+
|
|
18
|
+
const CURRENCY = new Set(["$", "¥", "€", "£"]);
|
|
19
|
+
const SIGN = new Set(["-", "−"]);
|
|
20
|
+
const MULTIPLIER = new Set(["万", "億", "千"]);
|
|
21
|
+
const NUMBER = /^\d[\d,]*(?:\.\d+)?/u;
|
|
22
|
+
/** What may follow a number as its unit: a short run with no digit, space or separator ("1.2.3" and "2026-10-14" are not values). */
|
|
23
|
+
const UNIT_SHAPE = /^[^\d\s.,:|()[\]-]{1,8}$/u;
|
|
24
|
+
|
|
25
|
+
/** A label names something in words: 10:30 is a time, not the label "10". */
|
|
26
|
+
const HAS_LETTER = /\p{L}/u;
|
|
27
|
+
const LIST_MARKER = /^\s*(?:[-*+]|\d+[.)])\s+/u;
|
|
28
|
+
const COLON = /[::]/u;
|
|
29
|
+
const MAX_LABEL = 20;
|
|
30
|
+
|
|
31
|
+
const isUnit = (word: string, units: ReadonlySet<string>): boolean => units.has(word) || units.has(word.toLowerCase());
|
|
32
|
+
|
|
33
|
+
const withoutFirst = (text: string, marks: ReadonlySet<string>): string => (marks.has(text.charAt(0)) ? text.slice(1).trimStart() : text);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The unit of a lone number, signed or not, with a currency mark before it or a unit after it (¥300, 1,200円, -3kg, 45%,
|
|
37
|
+
* 3 kg): the mark or the unit, "" when the number is bare, undefined when the text is not one number. Read after NFKC, so
|
|
38
|
+
* full-width digits count. A word after the number is a unit only if a unit lexicon lists it: "3 fixed" is not a value.
|
|
39
|
+
*/
|
|
40
|
+
export const unitOf = (text: string, units: ReadonlySet<string>): string | undefined => {
|
|
41
|
+
const value = text.normalize("NFKC").trim();
|
|
42
|
+
const currency = CURRENCY.has(value.charAt(0)) ? value.charAt(0) : "";
|
|
43
|
+
const unsigned = withoutFirst(value.slice(currency.length).trimStart(), SIGN);
|
|
44
|
+
const number = NUMBER.exec(unsigned)?.[0];
|
|
45
|
+
if (number === undefined) return undefined;
|
|
46
|
+
const suffix = withoutFirst(unsigned.slice(number.length).trimStart(), MULTIPLIER);
|
|
47
|
+
if (suffix === "") return currency;
|
|
48
|
+
return currency === "" && UNIT_SHAPE.test(suffix) && isUnit(suffix, units) ? suffix : undefined;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const measured = (kind: string, name: string, text: string, offset: number, units: ReadonlySet<string>): Measured[] => {
|
|
52
|
+
const written = text.trim();
|
|
53
|
+
const unit = unitOf(written, units);
|
|
54
|
+
return unit === undefined ? [] : [{ kind, name, offset: offset + Math.max(0, text.indexOf(written)), written, unit }];
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
type LabelLine = { readonly label: string; readonly value: string; readonly at: number };
|
|
58
|
+
|
|
59
|
+
/** A line that names a field and gives its value (「予算:300万円」 "**Budget:** $300"), list marker and bold allowed. */
|
|
60
|
+
export const labelLine = (line: string, start: number): LabelLine | undefined => {
|
|
61
|
+
const marker = LIST_MARKER.exec(line)?.[0].length ?? 0;
|
|
62
|
+
const body = line.slice(marker);
|
|
63
|
+
const colon = body.search(COLON);
|
|
64
|
+
if (colon <= 0) return undefined;
|
|
65
|
+
const label = body.slice(0, colon).replaceAll("**", "").trim();
|
|
66
|
+
const rest = body.slice(colon + 1).replace(/^\*\*/u, "");
|
|
67
|
+
const value = rest.trim();
|
|
68
|
+
if (label.length > MAX_LABEL || label.includes("|") || !HAS_LETTER.test(label) || value === "") return undefined;
|
|
69
|
+
return { label, value, at: start + marker + (body.length - rest.length) + rest.indexOf(value) };
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const cellText = (source: string, cell: MarkdownNode | undefined): { readonly text: string; readonly start: number } | undefined => {
|
|
73
|
+
const span = cell === undefined ? undefined : spanOf(cell);
|
|
74
|
+
if (span === undefined) return undefined;
|
|
75
|
+
const raw = source.slice(span.start, span.end);
|
|
76
|
+
const lead = raw.search(/[^|\s]/u);
|
|
77
|
+
return lead === -1 ? undefined : { text: raw.slice(lead).replace(/\|\s*$/u, ""), start: span.start + lead };
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const tableValues = (source: string, table: MarkdownNode, index: number, units: ReadonlySet<string>): Measured[] => {
|
|
81
|
+
const [header, ...body] = table.children ?? [];
|
|
82
|
+
return (header?.children ?? []).flatMap((headCell, column) => {
|
|
83
|
+
const name = cellText(source, headCell)?.text.trim() ?? "";
|
|
84
|
+
return body.flatMap((row) => {
|
|
85
|
+
const cell = cellText(source, row.children?.[column]);
|
|
86
|
+
return cell === undefined || name === "" ? [] : measured(`table ${String(index)}: ${name}`, name, cell.text, cell.start, units);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const tablesOf = (source: string): MarkdownNode[] => {
|
|
92
|
+
const found: MarkdownNode[] = [];
|
|
93
|
+
eachPreOrder(readMarkdown(source).root, (node) => {
|
|
94
|
+
if (node.type === "table") found.push(node);
|
|
95
|
+
});
|
|
96
|
+
return found;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/** The lines of a text with where each starts. */
|
|
100
|
+
const linesWithStarts = (text: string): { readonly line: string; readonly start: number }[] =>
|
|
101
|
+
text.split("\n").reduce<{ readonly line: string; readonly start: number }[]>((lines, line) => {
|
|
102
|
+
const last = lines.at(-1);
|
|
103
|
+
return [...lines, { line, start: last === undefined ? 0 : last.start + last.line.length + 1 }];
|
|
104
|
+
}, []);
|
|
105
|
+
|
|
106
|
+
/** The label lines of the prose (code masked), keyed by the label as written, so one label is one kind across the document. */
|
|
107
|
+
const labelValues = (prose: string, units: ReadonlySet<string>): Measured[] =>
|
|
108
|
+
linesWithStarts(prose).flatMap(({ line, start }) => {
|
|
109
|
+
const found = labelLine(line, start);
|
|
110
|
+
return found === undefined ? [] : measured(`label: ${found.label}`, found.label, found.value, found.at, units);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
/** Every number a table cell or label line gives, by kind. */
|
|
114
|
+
export const measuredValues = (source: string, prose: string, units: ReadonlySet<string>): Measured[] => [
|
|
115
|
+
...tablesOf(source).flatMap((table, index) => tableValues(source, table, index, units)),
|
|
116
|
+
...labelValues(prose, units),
|
|
117
|
+
];
|
|
118
|
+
|
|
119
|
+
/** Bare values must be fewer than those with the unit, so at least two carry it before a bare one reads as missing it. */
|
|
120
|
+
const gapsOfKind = (values: readonly Measured[]): UnitGap[] => {
|
|
121
|
+
const withUnit = values.filter((value) => value.unit !== "");
|
|
122
|
+
const bare = values.filter((value) => value.unit === "");
|
|
123
|
+
const units = new Set(withUnit.map((value) => value.unit));
|
|
124
|
+
const unit = [...units][0];
|
|
125
|
+
if (unit === undefined || units.size !== 1 || bare.length >= withUnit.length) return [];
|
|
126
|
+
return bare.map((value) => ({ value, unit }));
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
/** Bare numbers among values of one kind that otherwise all carry one unit, in document order. */
|
|
130
|
+
export const unitGaps = (values: readonly Measured[]): UnitGap[] => {
|
|
131
|
+
const kinds = values.reduce((groups, value) => groups.set(value.kind, [...(groups.get(value.kind) ?? []), value]), new Map<string, Measured[]>());
|
|
132
|
+
return [...kinds.values()].flatMap(gapsOfKind).toSorted((left, right) => left.value.offset - right.value.offset);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
const unitsOf = (doc: ProseDocument): Set<string> =>
|
|
136
|
+
new Set(UNIT_LEXICONS.flatMap((name) => (doc.lexicons[name] ?? []).flatMap((entry) => [entry.pattern, entry.pattern.toLowerCase()])));
|
|
137
|
+
|
|
138
|
+
export const numberWithoutUnit: Detector = (doc: ProseDocument): Finding[] =>
|
|
139
|
+
unitGaps(measuredValues(doc.source, doc.prose ?? doc.source, unitsOf(doc))).map((gap) => ({
|
|
140
|
+
rule: "number-without-unit",
|
|
141
|
+
severity: "warning",
|
|
142
|
+
line: 0,
|
|
143
|
+
column: 0,
|
|
144
|
+
quote: quoteAt(doc.source, gap.value.offset),
|
|
145
|
+
values: { value: gap.value.written, name: gap.value.name, unit: gap.unit, offset: gap.value.offset },
|
|
146
|
+
}));
|