chaffjs 0.18.0 → 0.19.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 +52 -56
- 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/cli-text.d.ts +0 -1
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +6 -14
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +58 -62
- 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 +8 -1
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +9 -17
- 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 +3 -2
- 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 +44 -0
- package/dist/commands/fix-plan.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 +43 -0
- package/dist/commands/outline.js.map +1 -0
- package/dist/commands/read-document.d.ts +14 -0
- package/dist/commands/read-document.d.ts.map +1 -0
- package/dist/commands/read-document.js +21 -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 +1 -1
- package/dist/commands/test.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 +12 -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 +3 -3
- package/dist/compare/proper-nouns.d.ts.map +1 -1
- package/dist/compare/proper-nouns.js +2 -3
- 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 +8 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +1 -0
- 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/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/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/ai-phrasing.d.ts +4 -1
- package/dist/detectors/ai-phrasing.d.ts.map +1 -1
- package/dist/detectors/ai-phrasing.js +6 -2
- package/dist/detectors/ai-phrasing.js.map +1 -1
- 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/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/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/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/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/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/index.d.ts.map +1 -1
- package/dist/detectors/index.js +36 -0
- 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/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 +6 -1
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +31 -13
- package/dist/detectors/lexicon.js.map +1 -1
- 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.map +1 -1
- package/dist/detectors/long-vowel.js +18 -4
- 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/modal-conflict.d.ts +4 -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/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/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/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/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/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/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 +23 -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/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/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.d.ts +9 -3
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +55 -32
- package/dist/document.js.map +1 -1
- 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/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 +11 -2
- package/dist/figure-references.d.ts.map +1 -1
- package/dist/figure-references.js +50 -13
- package/dist/figure-references.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 +21 -0
- package/dist/fix-plan/mode.d.ts.map +1 -0
- package/dist/fix-plan/mode.js +16 -0
- package/dist/fix-plan/mode.js.map +1 -0
- package/dist/fix-plan/plan.d.ts +77 -0
- package/dist/fix-plan/plan.d.ts.map +1 -0
- package/dist/fix-plan/plan.js +100 -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 +101 -0
- package/dist/fix-plan/render.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 +95 -0
- package/dist/fix-plan/text.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/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 +18 -0
- package/dist/outline/render.d.ts.map +1 -0
- package/dist/outline/render.js +60 -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/text.d.ts +21 -0
- package/dist/outline/text.d.ts.map +1 -0
- package/dist/outline/text.js +30 -0
- package/dist/outline/text.js.map +1 -0
- package/dist/plugin.d.ts +24 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/reasons.d.ts +1 -0
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +2 -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 +3 -1
- package/dist/render/explain.d.ts.map +1 -1
- package/dist/render/explain.js +32 -15
- package/dist/render/explain.js.map +1 -1
- package/dist/render/rules-json.d.ts.map +1 -1
- package/dist/render/rules-json.js +16 -12
- package/dist/render/rules-json.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/rule-guide.d.ts +19 -0
- package/dist/rule-guide.d.ts.map +1 -1
- package/dist/rule-guide.js +14 -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 +5 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +31 -14
- package/dist/run.js.map +1 -1
- 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/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/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/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 +28 -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/universal.d.ts.map +1 -1
- package/dist/structure/universal.js +8 -2
- package/dist/structure/universal.js.map +1 -1
- 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/genres.yaml +42 -0
- package/package.json +7 -3
- package/rules/acronym-expansion-conflict.yaml +82 -0
- package/rules/adverb-overuse.yaml +2 -2
- package/rules/agentless-passive.yaml +28 -0
- package/rules/ai-tell.yaml +34 -0
- package/rules/announced-count-mismatch.yaml +2 -2
- package/rules/announcing-opener.yaml +31 -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/closing-cliche.yaml +27 -2
- package/rules/colon-lead-in.yaml +28 -4
- package/rules/contrast-framing.yaml +33 -2
- package/rules/cushion-phrase-density.yaml +32 -5
- package/rules/dangling-reference.yaml +1 -0
- package/rules/date-order.yaml +1 -0
- package/rules/date-range-reversed.yaml +2 -2
- package/rules/double-negative.yaml +51 -0
- package/rules/doubled-punctuation.yaml +2 -2
- package/rules/doubled-word.yaml +2 -2
- package/rules/duplicate-heading.yaml +78 -0
- package/rules/emoji-density.yaml +5 -4
- package/rules/empty-intensifier.yaml +25 -0
- package/rules/empty-section.yaml +74 -0
- package/rules/excessive-hedging.yaml +32 -4
- package/rules/fullwidth-alnum-consistency.yaml +53 -0
- package/rules/hankaku-kana.yaml +41 -0
- package/rules/image-alt-text.yaml +1 -1
- package/rules/invisible-character.yaml +63 -0
- package/rules/katakana-long-vowel.yaml +10 -9
- package/rules/latin-spacing.yaml +12 -5
- 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/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-mixed-desumasu.yaml +1 -0
- package/rules/nominalization.yaml +89 -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/preferred-term.yaml +1 -0
- package/rules/proper-noun-density.yaml +14 -5
- package/rules/ra-nuki.yaml +43 -0
- package/rules/requirement-modal.yaml +94 -0
- package/rules/requirement-smell.yaml +70 -0
- package/rules/rule-of-three.yaml +46 -0
- package/rules/section-length-uniformity.yaml +26 -2
- package/rules/sentence-rhythm.yaml +26 -0
- package/rules/space-before-punctuation.yaml +41 -0
- package/rules/spelling-consistency.yaml +47 -0
- package/rules/stock-transition.yaml +33 -2
- package/rules/taigen-dome-in-prose.yaml +14 -0
- package/rules/total-mismatch.yaml +1 -0
- package/rules/undefined-acronym.yaml +1 -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/skills/chaff/SKILL.md +108 -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/cli-text.ts +6 -11
- package/src/cli.ts +64 -63
- package/src/closing-paragraph.ts +24 -0
- package/src/commands/compare.ts +11 -18
- package/src/commands/document-commands.ts +19 -0
- package/src/commands/eval.ts +3 -2
- package/src/commands/facts.ts +33 -0
- package/src/commands/feedback.ts +33 -1
- package/src/commands/fix-plan.ts +53 -0
- package/src/commands/outline.ts +49 -0
- package/src/commands/read-document.ts +24 -0
- package/src/commands/suppressions.ts +19 -0
- package/src/commands/test.ts +1 -1
- package/src/compare/clock-time.ts +5 -2
- package/src/compare/distinct.ts +13 -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 +4 -4
- 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 +9 -0
- package/src/config/option-problems.ts +6 -4
- package/src/config/style.ts +14 -1
- 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/detect-language.ts +1 -1
- package/src/detect.ts +10 -3
- package/src/detectors/ai-phrasing.ts +6 -2
- package/src/detectors/bold-label.ts +55 -0
- package/src/detectors/dangling-figure.ts +8 -4
- package/src/detectors/definition-use.ts +41 -0
- package/src/detectors/doubled-punctuation.ts +5 -2
- package/src/detectors/duplicate-heading.ts +47 -0
- package/src/detectors/empty-section.ts +21 -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/index.ts +36 -0
- package/src/detectors/invisible-character.ts +190 -0
- package/src/detectors/kutoten-consistency.ts +2 -2
- package/src/detectors/lexicon-match.ts +33 -1
- package/src/detectors/lexicon.ts +40 -13
- package/src/detectors/list-sentence.ts +45 -4
- package/src/detectors/long-vowel.ts +20 -4
- package/src/detectors/markup-finding.ts +16 -1
- package/src/detectors/modal-conflict.ts +26 -0
- package/src/detectors/name-variant.ts +15 -0
- package/src/detectors/nominalization.ts +73 -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/phrase-match.ts +27 -7
- package/src/detectors/ra-nuki.ts +38 -0
- package/src/detectors/requirement-modal.ts +67 -0
- package/src/detectors/requirement-smell.ts +52 -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/url-run-on.ts +7 -1
- package/src/detectors/vague-figure-pointer.ts +58 -0
- package/src/detectors/word-list.ts +6 -1
- package/src/document.ts +88 -41
- 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/feedback/draft.ts +6 -0
- package/src/figure-references.ts +73 -12
- package/src/finding-order.ts +3 -0
- package/src/fix-plan/mode.ts +34 -0
- package/src/fix-plan/plan.ts +181 -0
- package/src/fix-plan/render.ts +128 -0
- package/src/fix-plan/text.ts +133 -0
- package/src/language-sample.ts +48 -0
- package/src/link-line.ts +13 -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 +85 -0
- package/src/outline/shape.ts +72 -0
- package/src/outline/text.ts +50 -0
- package/src/plugin.ts +21 -4
- package/src/reasons.ts +3 -0
- package/src/render/compact.ts +13 -3
- package/src/render/explain.ts +47 -20
- package/src/render/rules-json.ts +18 -12
- package/src/render/suppressions.ts +30 -2
- package/src/rule-guide.ts +38 -0
- package/src/run-semantic.ts +2 -1
- package/src/run.ts +37 -17
- package/src/setting-problems.ts +3 -1
- package/src/spacing-minority.ts +27 -0
- package/src/stet-block.ts +60 -0
- package/src/stet.ts +41 -15
- package/src/structure/date-range.ts +49 -1
- package/src/structure/definition-use.ts +130 -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/universal.ts +10 -2
- package/src/style-parse.ts +38 -3
- package/src/subheading-line.ts +51 -13
- package/src/tag-coverage.ts +13 -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
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/** The plugin API this chaff implements. A plugin says which one it was written for; chaff refuses any other. */
|
|
2
|
+
export declare const API_VERSION = 1;
|
|
3
|
+
/** A place in doc.source: UTF-16 offsets, end exclusive. */
|
|
4
|
+
export type Span = {
|
|
5
|
+
readonly start: number;
|
|
6
|
+
readonly end: number;
|
|
7
|
+
};
|
|
8
|
+
/** One word as the language adapter read it. pos is a Universal Dependencies UPOS tag (NOUN, VERB, ADP…). */
|
|
9
|
+
export type Token = {
|
|
10
|
+
readonly span: Span;
|
|
11
|
+
readonly surface: string;
|
|
12
|
+
readonly pos: string;
|
|
13
|
+
readonly lemma?: string;
|
|
14
|
+
/** How the word is read (katakana for Japanese). Only adapters that can read it give it. */
|
|
15
|
+
readonly reading?: string;
|
|
16
|
+
/** Universal Dependencies FEATS the adapter folded in (Voice=Pass). */
|
|
17
|
+
readonly features?: Readonly<Record<string, string>>;
|
|
18
|
+
};
|
|
19
|
+
/** tokens is there only when the rule asked for parts of speech (requires: [pos]) and the adapter could give them. */
|
|
20
|
+
export type Sentence = {
|
|
21
|
+
readonly span: Span;
|
|
22
|
+
readonly text: string;
|
|
23
|
+
readonly tokens?: readonly Token[];
|
|
24
|
+
};
|
|
25
|
+
export type Paragraph = {
|
|
26
|
+
readonly span: Span;
|
|
27
|
+
readonly sentences: readonly Sentence[];
|
|
28
|
+
};
|
|
29
|
+
/** A heading and what follows it, up to the next heading. The text before the first heading is a section of depth 0. */
|
|
30
|
+
export type Section = {
|
|
31
|
+
readonly depth: number;
|
|
32
|
+
readonly heading: string;
|
|
33
|
+
readonly span: Span;
|
|
34
|
+
readonly sentences: readonly Sentence[];
|
|
35
|
+
};
|
|
36
|
+
/** One bulleted or numbered list, with the length of each item in characters. */
|
|
37
|
+
export type List = {
|
|
38
|
+
readonly span: Span;
|
|
39
|
+
readonly itemLengths: readonly number[];
|
|
40
|
+
};
|
|
41
|
+
/** One entry of a word list. instead_of is another way to write the same thing, for rules that check a document is consistent. */
|
|
42
|
+
export type LexiconEntry = {
|
|
43
|
+
readonly pattern: string;
|
|
44
|
+
readonly instead_of?: string;
|
|
45
|
+
};
|
|
46
|
+
export type Lexicon = readonly LexiconEntry[];
|
|
47
|
+
export type MarkupHeading = {
|
|
48
|
+
readonly depth: number;
|
|
49
|
+
readonly text: string;
|
|
50
|
+
readonly span: Span;
|
|
51
|
+
};
|
|
52
|
+
/** alt is undefined for an HTML <img> with no alt attribute. */
|
|
53
|
+
export type MarkupImage = {
|
|
54
|
+
readonly alt: string | undefined;
|
|
55
|
+
readonly span: Span;
|
|
56
|
+
};
|
|
57
|
+
export type MarkupLink = {
|
|
58
|
+
readonly destination: string;
|
|
59
|
+
readonly span: Span;
|
|
60
|
+
};
|
|
61
|
+
/** The document's markup. A plain-text document has markdown: false and no headings, images or links. */
|
|
62
|
+
export type Markup = {
|
|
63
|
+
readonly markdown: boolean;
|
|
64
|
+
readonly headings: readonly MarkupHeading[];
|
|
65
|
+
readonly images: readonly MarkupImage[];
|
|
66
|
+
readonly links: readonly MarkupLink[];
|
|
67
|
+
/** The in-page names the writer gave ({#id} on a heading, HTML id and name), sorted. */
|
|
68
|
+
readonly ids: readonly string[];
|
|
69
|
+
/** What the reader sees as text: everything outside links. */
|
|
70
|
+
readonly texts: readonly Span[];
|
|
71
|
+
};
|
|
72
|
+
/** What a detector reads. Every span is a place in source. It is frozen: a detector cannot change what other rules see. */
|
|
73
|
+
export type RuleDocument = {
|
|
74
|
+
readonly path: string;
|
|
75
|
+
readonly source: string;
|
|
76
|
+
/** The language the document is checked as: "ja", "en". */
|
|
77
|
+
readonly language: string;
|
|
78
|
+
/** What a length counts: characters (ja) or words (en). */
|
|
79
|
+
readonly lengthUnit: "char" | "word";
|
|
80
|
+
readonly sentences: readonly Sentence[];
|
|
81
|
+
readonly paragraphs: readonly Paragraph[];
|
|
82
|
+
readonly sections: readonly Section[];
|
|
83
|
+
readonly lists: readonly List[];
|
|
84
|
+
/** Each list item, wherever it is. */
|
|
85
|
+
readonly listItems: readonly Span[];
|
|
86
|
+
/** Each link, as written (`[text](url)`, `<https://…>`). */
|
|
87
|
+
readonly links: readonly Span[];
|
|
88
|
+
/** The word lists for the document's language: the adapter's, the team's and the plugins'. */
|
|
89
|
+
readonly lexicons: Readonly<Record<string, Lexicon>>;
|
|
90
|
+
readonly markup: Markup;
|
|
91
|
+
};
|
|
92
|
+
/** What a detector is given besides the document. lexicon is the rule's word_list for the document's language. */
|
|
93
|
+
export type DetectorOptions = {
|
|
94
|
+
readonly lexicon: Lexicon | undefined;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* One place a rule found. start (and end) are offsets in doc.source. values fill the rule's message: {matched} is
|
|
98
|
+
* source from start to end unless values gives it.
|
|
99
|
+
*/
|
|
100
|
+
export type Finding = {
|
|
101
|
+
readonly start: number;
|
|
102
|
+
readonly end?: number;
|
|
103
|
+
readonly values?: Readonly<Record<string, string | number>>;
|
|
104
|
+
};
|
|
105
|
+
/** A rule's check. It must be pure and deterministic: no files, network, clock or randomness, the same findings every time. */
|
|
106
|
+
export type Detector = (doc: RuleDocument, options: DetectorOptions) => readonly Finding[];
|
|
107
|
+
/** Words a reader sees: one string for every language, or one per language ({ ja, en }). */
|
|
108
|
+
export type Text = string | Readonly<Record<string, string>>;
|
|
109
|
+
export type Severity = "error" | "warning" | "info";
|
|
110
|
+
/**
|
|
111
|
+
* A rule. In a type: module file only detect is read, and chaff.yaml gives the rest. In a plugin, id, name, why,
|
|
112
|
+
* how_to_fix and example are required, as they are for a rule in custom_rules.
|
|
113
|
+
*/
|
|
114
|
+
export type RuleSpec = {
|
|
115
|
+
readonly detect: Detector;
|
|
116
|
+
readonly id?: string;
|
|
117
|
+
readonly name?: Text;
|
|
118
|
+
readonly why?: Text;
|
|
119
|
+
readonly how_to_fix?: Text;
|
|
120
|
+
readonly example?: {
|
|
121
|
+
readonly before: Text;
|
|
122
|
+
readonly after: Text;
|
|
123
|
+
};
|
|
124
|
+
readonly message?: Text;
|
|
125
|
+
readonly level?: Severity;
|
|
126
|
+
/** The languages the rule checks. Without it, every language. */
|
|
127
|
+
readonly languages?: readonly string[];
|
|
128
|
+
/** A word list by name; the detector gets it as options.lexicon. A plugin's own lists are named without the plugin's prefix. */
|
|
129
|
+
readonly word_list?: string;
|
|
130
|
+
/** "pos" when the detector reads tokens. Without it, sentences have no tokens. */
|
|
131
|
+
readonly requires?: readonly "pos"[];
|
|
132
|
+
};
|
|
133
|
+
export type Rule = RuleSpec & {
|
|
134
|
+
readonly apiVersion: number;
|
|
135
|
+
};
|
|
136
|
+
/** A rule, stamped with the API version it was written for. */
|
|
137
|
+
export declare const defineRule: (spec: RuleSpec) => Rule;
|
|
138
|
+
/** A word list in each language it has words for: { ja: [...], en: [...] }. A string is an entry with only a pattern. */
|
|
139
|
+
export type LexiconSpec = Readonly<Record<string, readonly (string | LexiconEntry)[]>>;
|
|
140
|
+
/** A house style a plugin ships: rule levels and options, and the guideline it follows. */
|
|
141
|
+
export type StyleSpec = {
|
|
142
|
+
readonly id: string;
|
|
143
|
+
readonly name: Text;
|
|
144
|
+
readonly summary: Text;
|
|
145
|
+
readonly source: {
|
|
146
|
+
readonly title: Text;
|
|
147
|
+
readonly url: string;
|
|
148
|
+
};
|
|
149
|
+
readonly rules?: Readonly<Record<string, "strict" | "normal" | "relaxed" | "off">>;
|
|
150
|
+
readonly options?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* A plugin package. name is the prefix of every id it ships (name/rule-id); for chaff-plugin-foo it is foo, for
|
|
154
|
+
* @scope/chaff-plugin-foo it is @scope/foo. A rule is a RuleSpec, or a custom_rules entry without code (type: words,
|
|
155
|
+
* pattern or tokens).
|
|
156
|
+
*/
|
|
157
|
+
export type PluginSpec = {
|
|
158
|
+
readonly name: string;
|
|
159
|
+
readonly rules?: readonly (Rule | RuleSpec | Readonly<Record<string, unknown>>)[];
|
|
160
|
+
readonly lexicons?: Readonly<Record<string, LexiconSpec>>;
|
|
161
|
+
readonly styles?: readonly StyleSpec[];
|
|
162
|
+
};
|
|
163
|
+
export type Plugin = PluginSpec & {
|
|
164
|
+
readonly apiVersion: number;
|
|
165
|
+
};
|
|
166
|
+
/** A plugin, stamped with the API version it was written for. */
|
|
167
|
+
export declare const definePlugin: (spec: PluginSpec) => Plugin;
|
|
168
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// The plugin API: everything a team's rule or a plugin package may rely on, and nothing else. A detector sees the
|
|
2
|
+
// document only through these shapes, so chaff can change how it reads a document without breaking a plugin. Raise
|
|
3
|
+
// API_VERSION when a change here would break a plugin written against the current one.
|
|
4
|
+
/** The plugin API this chaff implements. A plugin says which one it was written for; chaff refuses any other. */
|
|
5
|
+
export const API_VERSION = 1;
|
|
6
|
+
/** A rule, stamped with the API version it was written for. */
|
|
7
|
+
export const defineRule = (spec) => ({ ...spec, apiVersion: API_VERSION });
|
|
8
|
+
/** A plugin, stamped with the API version it was written for. */
|
|
9
|
+
export const definePlugin = (spec) => ({ ...spec, apiVersion: API_VERSION });
|
|
10
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,mHAAmH;AACnH,uFAAuF;AAEvF,iHAAiH;AACjH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAqH7B,+DAA+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAc,EAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;AA6B3F,iEAAiE;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC"}
|
package/dist/cli-text.d.ts
CHANGED
|
@@ -27,7 +27,6 @@ export type CliText = {
|
|
|
27
27
|
readonly watching: (files: number, findings: number) => string;
|
|
28
28
|
readonly watchHint: string;
|
|
29
29
|
readonly baselineDone: (files: number, entries: number, file: string) => readonly string[];
|
|
30
|
-
readonly unit: (ruleId: string, language: string) => string;
|
|
31
30
|
};
|
|
32
31
|
export declare const CLI_TEXT: Texts<CliText>;
|
|
33
32
|
//# sourceMappingURL=cli-text.d.ts.map
|
package/dist/cli-text.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-text.d.ts","sourceRoot":"","sources":["../src/cli-text.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-text.d.ts","sourceRoot":"","sources":["../src/cli-text.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAgF7G,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1H,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9E,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;IAC1F,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;IAC/E,QAAQ,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;IACnG,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;IAC9F,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;IACnF,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,QAAQ,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;CAC5F,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,OAAO,CAsGnC,CAAC"}
|
package/dist/cli-text.js
CHANGED
|
@@ -13,6 +13,9 @@ const USAGE_JA = `chaff — 文章の読みにくいところを見つけます
|
|
|
13
13
|
chaff tree <file> [--format sexp|json] 文書を番地の付いた木にする(条・項・定義・参照)
|
|
14
14
|
chaff cite <原文> <引用.json> 回答の引用(番地と引用文)が原文にあるかを確かめる
|
|
15
15
|
chaff compare <前> <後> 書き換えで事実(数・日付・URL・コード・名前・引用…)が落ちても足されてもいないかを確かめる
|
|
16
|
+
chaff facts <file> compare が照合する事実を、書き直す前の控えとして一覧にする
|
|
17
|
+
chaff outline <file> [<後>] 見出しの構成と形(見出しの数・節の平均の長さ・箇条書きの割合・太字)を測る。2 つなら前と後を並べる
|
|
18
|
+
chaff fix-plan <file> [--json] 指摘をルールごとにまとめ、直す方向と確かめのコマンドを、書き直す人や AI 向けの計画にする(何も送らない)
|
|
16
19
|
chaff rules ルールの一覧を、グループごとに表で出す(いまの段階つき)
|
|
17
20
|
chaff rules --json いまの設定とルールの説明を JSON で出す(AI に渡す用)
|
|
18
21
|
chaff baseline <dir> いまある指摘を棚上げする(既存の repo に入れるとき)
|
|
@@ -48,6 +51,9 @@ const USAGE_EN = `chaff — finds what makes writing hard to read. It never rewr
|
|
|
48
51
|
chaff tree <file> [--format sexp|json] the document as a tree of addresses (sections, clauses, definitions, references)
|
|
49
52
|
chaff cite <source> <quotes.json> check that quoted passages (address and text) are in the source
|
|
50
53
|
chaff compare <before> <after> check that a rewrite dropped no fact and added none (numbers, dates, URLs, code, names, quotations…)
|
|
54
|
+
chaff facts <file> list the facts compare checks, as an inventory to keep before a rewrite
|
|
55
|
+
chaff outline <file> [<after>] measure the outline and its shape (headings, average section length, text in lists, bold); two files side by side
|
|
56
|
+
chaff fix-plan <file> [--json] a plan for whoever rewrites the file, a person or an AI: findings by rule, how to rewrite each, the checks to run after (sends nothing)
|
|
51
57
|
chaff rules the rules as a table, by group, with the level each runs at now
|
|
52
58
|
chaff rules --json the current settings and what each rule is, as JSON (to give to an AI)
|
|
53
59
|
chaff baseline <dir> shelve today's findings (when adding chaff to an existing repository)
|
|
@@ -115,13 +121,6 @@ export const CLI_TEXT = {
|
|
|
115
121
|
` ${file} を commit してください。`,
|
|
116
122
|
"",
|
|
117
123
|
],
|
|
118
|
-
unit: (ruleId, language) => {
|
|
119
|
-
if (ruleId === "bold-density")
|
|
120
|
-
return "1000 字あたりの箇所数";
|
|
121
|
-
if (ruleId !== "max-sentence-length")
|
|
122
|
-
return "回";
|
|
123
|
-
return language === "ja" ? "文字" : "語";
|
|
124
|
-
},
|
|
125
124
|
},
|
|
126
125
|
en: {
|
|
127
126
|
usage: USAGE_EN,
|
|
@@ -168,13 +167,6 @@ export const CLI_TEXT = {
|
|
|
168
167
|
` Commit ${file}.`,
|
|
169
168
|
"",
|
|
170
169
|
],
|
|
171
|
-
unit: (ruleId, language) => {
|
|
172
|
-
if (ruleId === "bold-density")
|
|
173
|
-
return "places per 1000 characters";
|
|
174
|
-
if (ruleId !== "max-sentence-length")
|
|
175
|
-
return "times";
|
|
176
|
-
return language === "ja" ? "characters" : "words";
|
|
177
|
-
},
|
|
178
170
|
},
|
|
179
171
|
};
|
|
180
172
|
//# sourceMappingURL=cli-text.js.map
|
package/dist/cli-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-text.js","sourceRoot":"","sources":["../src/cli-text.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAOtD,MAAM,QAAQ,GAAG
|
|
1
|
+
{"version":3,"file":"cli-text.js","sourceRoot":"","sources":["../src/cli-text.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAsUA,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAA0B,CAAC;AAEjE,eAAO,MAAM,IAAI,GAAU,MAAM,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,MAAM,CAmBlE,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -3,13 +3,14 @@ import { dirname, join } from "node:path";
|
|
|
3
3
|
import { loadAdapter, packageFor } from "./adapter-load.js";
|
|
4
4
|
import { CONFIG_FILE } from "./config/load.js";
|
|
5
5
|
import { applyByPath } from "./config/by-path.js";
|
|
6
|
+
import { limitsFor } from "./config/style.js";
|
|
6
7
|
import { applyLevel } from "./config/write.js";
|
|
7
8
|
import { buildDocument, teamRules } from "./document.js";
|
|
8
9
|
import { guessLanguage } from "./detect.js";
|
|
9
10
|
import { collectTargets, readDocumentFile } from "./files.js";
|
|
10
11
|
import { BASELINE_FILE, fingerprints, readBaseline, splitByBaseline, writeBaseline } from "./baseline.js";
|
|
11
12
|
import { applySuppressions } from "./stet.js";
|
|
12
|
-
import {
|
|
13
|
+
import { runSuppressions } from "./commands/suppressions.js";
|
|
13
14
|
import { clock, describeChange, snapshotOf, watchPaths } from "./watch.js";
|
|
14
15
|
import { runEval } from "./commands/eval.js";
|
|
15
16
|
import { runTest } from "./commands/test.js";
|
|
@@ -29,11 +30,10 @@ import { rulesJson } from "./render/rules-json.js";
|
|
|
29
30
|
import { rulesTable } from "./render/rules-table.js";
|
|
30
31
|
import { renderSarif } from "./render/sarif.js";
|
|
31
32
|
import { VERSION, VERSION_LINES } from "./version.js";
|
|
32
|
-
import {
|
|
33
|
-
import { citeTargets, runCite } from "./commands/cite.js";
|
|
34
|
-
import { compareTargets, runCompare } from "./commands/compare.js";
|
|
33
|
+
import { DOCUMENT_COMMANDS } from "./commands/document-commands.js";
|
|
35
34
|
import { runSkill } from "./commands/skill.js";
|
|
36
|
-
import {
|
|
35
|
+
import { fixPlanTargets, runFixPlan } from "./commands/fix-plan.js";
|
|
36
|
+
import { runConditions, runFeedback, settingsOf } from "./commands/feedback.js";
|
|
37
37
|
import { homedir } from "node:os";
|
|
38
38
|
import { settingWarnings } from "./config/warnings.js";
|
|
39
39
|
import { readConfigIn } from "./config/read.js";
|
|
@@ -43,15 +43,16 @@ import { neededBy, runRulesWith } from "./run.js";
|
|
|
43
43
|
import { CLI_TEXT } from "./cli-text.js";
|
|
44
44
|
import { hostLanguage, sharedLanguage, uiLanguageOf } from "./ui.js";
|
|
45
45
|
import { profileFor } from "./profile/for-file.js";
|
|
46
|
+
import { notRunAmong } from "./not-run.js";
|
|
46
47
|
import { settingProblems } from "./setting-problems.js";
|
|
48
|
+
import { withExtensions } from "./extension/load.js";
|
|
47
49
|
/** Text for output that is not about one document. */
|
|
48
50
|
const hostText = (config) => CLI_TEXT[hostLanguage(config.language, process.env)];
|
|
49
51
|
const readConfig = () => readConfigIn(process.cwd());
|
|
50
52
|
/** resolveGenre with this run's --genre, for the commands that take it as a dependency. */
|
|
51
53
|
const genreFrom = (argv) => (path, source, config) => resolveGenre(path, source, config, flag(argv, "--genre"));
|
|
52
54
|
const findRule = (rules, id) => rules.find((rule) => rule.id === id);
|
|
53
|
-
const changeSetting = (command, ruleId, why) => {
|
|
54
|
-
const config = readConfig();
|
|
55
|
+
const changeSetting = (config, command, ruleId, why) => {
|
|
55
56
|
const language = config.language ?? hostLanguage(undefined, process.env);
|
|
56
57
|
const rule = findRule(rulesOf(language, config), ruleId);
|
|
57
58
|
if (rule === undefined) {
|
|
@@ -76,14 +77,22 @@ const inspect = async (path, config, argv) => {
|
|
|
76
77
|
const rules = rulesOf(language, config);
|
|
77
78
|
const experimental = config.experimental || argv.includes("--experimental");
|
|
78
79
|
await adapter.prepare?.(neededBy(rules, config.rules, experimental, genre, language));
|
|
79
|
-
const doc = buildDocument(path, source, adapter, teamRules(config), profileFor(config, path, source, language, genre));
|
|
80
|
-
const raw = runRulesWith(doc, rules, {
|
|
80
|
+
const doc = buildDocument(path, source, adapter, teamRules(config, language), profileFor(config, path, source, language, genre));
|
|
81
|
+
const raw = runRulesWith(doc, rules, {
|
|
82
|
+
settings: config.rules,
|
|
83
|
+
experimental,
|
|
84
|
+
genre,
|
|
85
|
+
limits: limitsFor(config, language),
|
|
86
|
+
optionLayers: optionLayersOf(config),
|
|
87
|
+
detectors: config.extensions?.detectors ?? {},
|
|
88
|
+
});
|
|
81
89
|
// 応答は 3 つ。stet で黙らせたものは、ここで落とす。
|
|
82
90
|
const applied = applySuppressions(source, raw.findings, doc.sections.map((section) => section.span));
|
|
83
91
|
const baseline = argv.includes("--show-baseline") ? undefined : readBaseline(join(process.cwd(), BASELINE_FILE));
|
|
84
92
|
const split = splitByBaseline(path, applied.kept, baseline);
|
|
85
93
|
const result = { ...raw, findings: split.fresh };
|
|
86
94
|
const { header, notes } = fileHeader(path, source, language, { genre, from, unread }, { shelved: split.shelved, hushed: applied.suppressed.length });
|
|
95
|
+
const notRun = notRunAmong(applied.named, raw.skipped);
|
|
87
96
|
const text = argv.includes("--compact") ? renderCompact(header, result, rules, language) : renderFriendly(header, result, rules, language, notes);
|
|
88
97
|
return {
|
|
89
98
|
text,
|
|
@@ -91,7 +100,8 @@ const inspect = async (path, config, argv) => {
|
|
|
91
100
|
language,
|
|
92
101
|
genre,
|
|
93
102
|
outcome: { path, findings: split.fresh, notRun: raw.skipped.length },
|
|
94
|
-
perFile: { path, suppressed: applied.suppressed, reasonless: applied.unusedReasonless },
|
|
103
|
+
perFile: { path, suppressed: applied.suppressed, reasonless: applied.unusedReasonless, notRun },
|
|
104
|
+
checked: { findings: split.fresh, rules, language, genre, skipped: raw.skipped },
|
|
95
105
|
kept: applied.kept,
|
|
96
106
|
};
|
|
97
107
|
};
|
|
@@ -99,7 +109,7 @@ const inspect = async (path, config, argv) => {
|
|
|
99
109
|
* 指摘を PR の変更行に出すための出口。--sarif <path> を書いたときだけ作る。
|
|
100
110
|
* 端末の出力は変えない。CI で上げるためのファイルが増えるだけ。
|
|
101
111
|
*/
|
|
102
|
-
const writeSarif = (results, argv) => {
|
|
112
|
+
const writeSarif = (results, argv, config) => {
|
|
103
113
|
const path = flag(argv, "--sarif");
|
|
104
114
|
if (path === undefined)
|
|
105
115
|
return;
|
|
@@ -107,7 +117,7 @@ const writeSarif = (results, argv) => {
|
|
|
107
117
|
const located = results.flatMap((result) => result.outcome.findings.map((finding) => ({ path: result.outcome.path, finding, language: result.language, rules: result.rules })));
|
|
108
118
|
mkdirSync(dirname(path), { recursive: true });
|
|
109
119
|
writeFileSync(path, renderSarif(located, VERSION), "utf8");
|
|
110
|
-
console.log(hostText(
|
|
120
|
+
console.log(hostText(config).sarifWritten(path, located.length));
|
|
111
121
|
};
|
|
112
122
|
/** 効いていない設定は、結果の前に一度だけ言う。標準エラーに出すので、JSON や SARIF の出力は汚さない。 */
|
|
113
123
|
const warnRuleProblems = (config, language) => settingWarnings(config, rulesOf(language, config), hostLanguage(config.language, process.env)).forEach((problem) => console.error(`chaff: ${problem}`));
|
|
@@ -116,9 +126,8 @@ const summaryLanguage = (results, config) => {
|
|
|
116
126
|
const languages = results.map((result) => result.language);
|
|
117
127
|
return sharedLanguage(languages, hostLanguage(config.language, process.env));
|
|
118
128
|
};
|
|
119
|
-
const lint = async (targets, argv) => {
|
|
129
|
+
const lint = async (targets, argv, config) => {
|
|
120
130
|
const paths = collectTargets(targets);
|
|
121
|
-
const config = readConfig();
|
|
122
131
|
if (paths.length === 0) {
|
|
123
132
|
// 0 件を成功にすると「CI は通っているが何も検証していない」状態が続く。§14。
|
|
124
133
|
console.error(hostText(config).noMarkdown(targets.join(", ")));
|
|
@@ -131,7 +140,7 @@ const lint = async (targets, argv) => {
|
|
|
131
140
|
}
|
|
132
141
|
warnRuleProblems(config, language);
|
|
133
142
|
const results = await Promise.all(paths.map((path) => inspect(path, config, argv)));
|
|
134
|
-
writeSarif(results, argv);
|
|
143
|
+
writeSarif(results, argv, config);
|
|
135
144
|
results.filter((result) => result.outcome.findings.length > 0 || paths.length === 1).forEach((result) => console.log(result.text));
|
|
136
145
|
renderSummary(results.map((result) => result.outcome), summaryLanguage(results, config)).forEach((line) => console.log(line));
|
|
137
146
|
return results.some((result) => result.outcome.findings.some((finding) => finding.severity === "error")) ? 1 : 0;
|
|
@@ -140,9 +149,8 @@ const lint = async (targets, argv) => {
|
|
|
140
149
|
* 書いている最中は、全件を出し直されても何が変わったのか分からない。
|
|
141
150
|
* 差分だけを出す。workflow spec §11。
|
|
142
151
|
*/
|
|
143
|
-
const runWatch = async (targets, argv) => {
|
|
152
|
+
const runWatch = async (targets, argv, config) => {
|
|
144
153
|
const paths = collectTargets(targets);
|
|
145
|
-
const config = readConfig();
|
|
146
154
|
const text = hostText(config);
|
|
147
155
|
if (paths.length === 0) {
|
|
148
156
|
console.error(text.noMarkdown(targets.join(", ")));
|
|
@@ -172,8 +180,7 @@ const runWatch = async (targets, argv) => {
|
|
|
172
180
|
return new Promise(() => undefined);
|
|
173
181
|
};
|
|
174
182
|
/** genreFlag: --genre, which wins over chaff.yaml's genre here as it does in a run. */
|
|
175
|
-
const explain = (ruleId, genreFlag) => {
|
|
176
|
-
const config = readConfig();
|
|
183
|
+
const explain = (config, ruleId, genreFlag) => {
|
|
177
184
|
const genre = genreFlag ?? config.genre;
|
|
178
185
|
// The rule's limits differ by language (characters for Japanese, words for English): explain in the one being written.
|
|
179
186
|
const language = config.language ?? hostLanguage(undefined, process.env);
|
|
@@ -187,12 +194,11 @@ const explain = (ruleId, genreFlag) => {
|
|
|
187
194
|
}
|
|
188
195
|
const preset = genre === undefined ? {} : presetLevels(genre);
|
|
189
196
|
const current = config.rules[rule.id] ?? preset[rule.id] ?? (rule.status === "experimental" && !config.experimental ? "off" : "normal");
|
|
190
|
-
console.log(renderExplain(rule, current, language,
|
|
197
|
+
console.log(renderExplain(rule, current, language, genre, settingSourcesOf(config, rule.id, language)));
|
|
191
198
|
return 0;
|
|
192
199
|
};
|
|
193
|
-
const runBaseline = async (targets, argv) => {
|
|
200
|
+
const runBaseline = async (targets, argv, config) => {
|
|
194
201
|
const paths = collectTargets(targets.length > 0 ? targets : ["."]);
|
|
195
|
-
const config = readConfig();
|
|
196
202
|
if (paths.length === 0) {
|
|
197
203
|
console.error(hostText(config).noMarkdownHere);
|
|
198
204
|
return 1;
|
|
@@ -204,19 +210,13 @@ const runBaseline = async (targets, argv) => {
|
|
|
204
210
|
console.log(hostText(config).baselineDone(paths.length, entries.length, BASELINE_FILE).join("\n"));
|
|
205
211
|
return 0;
|
|
206
212
|
};
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const config = readConfig();
|
|
210
|
-
const results = await Promise.all(paths.map((path) => inspect(path, config, [...argv, "--show-baseline"])));
|
|
211
|
-
const perFile = results.map((result) => result.perFile);
|
|
212
|
-
console.log(renderSuppressions(perFile, hostLanguage(config.language, process.env)));
|
|
213
|
-
return 0;
|
|
214
|
-
};
|
|
213
|
+
/** A file's findings, shelved ones included: commands that look findings up are not asking what is new. */
|
|
214
|
+
const inspectAll = (config, argv) => (path) => inspect(path, config, [...argv, "--show-baseline"]);
|
|
215
215
|
/** `--` で始まらない引数。対象のパス。 */
|
|
216
216
|
const positional = (argv) => targetsOf(argv.slice(1));
|
|
217
217
|
/** `rules --json` for an AI to read; `rules` alone, a table for a person. */
|
|
218
|
-
const showRules = (argv) => {
|
|
219
|
-
const config = withExperimental(
|
|
218
|
+
const showRules = (argv, written) => {
|
|
219
|
+
const config = withExperimental(written, argv);
|
|
220
220
|
const language = config.language ?? hostLanguage(undefined, process.env);
|
|
221
221
|
warnRuleProblems(config, language);
|
|
222
222
|
const genre = flag(argv, "--genre") ?? config.genre ?? "blog/tech";
|
|
@@ -224,23 +224,21 @@ const showRules = (argv) => {
|
|
|
224
224
|
console.log(argv.includes("--json") ? rulesJson(rules, config, language, genre, optionLayersOf(config)) : rulesTable(rules, config, language, genre));
|
|
225
225
|
return 0;
|
|
226
226
|
};
|
|
227
|
-
const showGenres = () => {
|
|
228
|
-
console.log(renderGenres(loadGenres(), hostLanguage(
|
|
227
|
+
const showGenres = (config) => {
|
|
228
|
+
console.log(renderGenres(loadGenres(), hostLanguage(config.language, process.env)));
|
|
229
229
|
return 0;
|
|
230
230
|
};
|
|
231
|
-
const treeContext = () => {
|
|
232
|
-
const config = readConfig();
|
|
231
|
+
const treeContext = (config) => {
|
|
233
232
|
return { config, flag, ui: hostLanguage(config.language, process.env) };
|
|
234
233
|
};
|
|
235
234
|
/** What eval and test share: the settings, this run's genre, and the language for what is not about one document. */
|
|
236
|
-
const measureContext = (argv) => {
|
|
237
|
-
const config = readConfig();
|
|
235
|
+
const measureContext = (argv, config) => {
|
|
238
236
|
return { config, resolveGenre: genreFrom(argv), ui: hostLanguage(config.language, process.env) };
|
|
239
237
|
};
|
|
240
238
|
/** 分岐を数珠つなぎにせず表にする。足すときに main を太らせない。 */
|
|
241
239
|
const HANDLERS = {
|
|
242
|
-
init: async (argv) => {
|
|
243
|
-
const ui = hostLanguage(
|
|
240
|
+
init: async (argv, config) => {
|
|
241
|
+
const ui = hostLanguage(config.language, process.env);
|
|
244
242
|
const chosen = await initGenre(flag(argv, "--genre"), ui, process.cwd());
|
|
245
243
|
if ("error" in chosen)
|
|
246
244
|
console.error(chosen.error);
|
|
@@ -248,21 +246,19 @@ const HANDLERS = {
|
|
|
248
246
|
runInit(process.cwd(), chosen.genre, ui).forEach((line) => console.log(line));
|
|
249
247
|
return "error" in chosen ? 1 : 0;
|
|
250
248
|
},
|
|
251
|
-
genres: showGenres,
|
|
249
|
+
genres: (_argv, config) => showGenres(config),
|
|
252
250
|
rules: showRules,
|
|
253
|
-
explain: (argv) => explain(argv[1], flag(argv, "--genre")),
|
|
254
|
-
eval: (argv) => runEval(positional(argv), argv, { ...measureContext(argv), flag }),
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
feedback: (argv) => {
|
|
265
|
-
const config = readConfig();
|
|
251
|
+
explain: (argv, config) => explain(config, argv[1], flag(argv, "--genre")),
|
|
252
|
+
eval: (argv, config) => runEval(positional(argv), argv, { ...measureContext(argv, config), flag }),
|
|
253
|
+
...Object.fromEntries(Object.entries(DOCUMENT_COMMANDS).map(([name, run]) => [name, (argv, config) => run(argv, treeContext(config))])),
|
|
254
|
+
test: (argv, config) => runTest(positional(argv), argv, { ...measureContext(argv, config), inspect }),
|
|
255
|
+
"fix-plan": (argv, config) => runFixPlan(fixPlanTargets(argv), argv, { ...treeContext(config), check: async (path) => (await inspectAll(config, argv)(path)).checked }),
|
|
256
|
+
baseline: (argv, config) => runBaseline(positional(argv), argv, config),
|
|
257
|
+
suppressions: (argv, config) => runSuppressions(positional(argv), inspectAll(config, argv), hostLanguage(config.language, process.env)),
|
|
258
|
+
relax: (argv, config) => changeSetting(config, "relaxed", argv[1], flag(argv, "--why")),
|
|
259
|
+
strict: (argv, config) => changeSetting(config, "strict", argv[1], flag(argv, "--why")),
|
|
260
|
+
off: (argv, config) => changeSetting(config, "off", argv[1], flag(argv, "--why")),
|
|
261
|
+
feedback: (argv, config) => {
|
|
266
262
|
return runFeedback(positional(argv), argv, {
|
|
267
263
|
cwd: process.cwd(),
|
|
268
264
|
ui: hostLanguage(config.language, process.env),
|
|
@@ -270,13 +266,13 @@ const HANDLERS = {
|
|
|
270
266
|
runtime: `Node ${process.version} · ${process.platform} ${process.arch}`,
|
|
271
267
|
flag,
|
|
272
268
|
settingsOf: (ruleIds) => settingsOf(config, ruleIds),
|
|
273
|
-
check: async (path) => {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
},
|
|
269
|
+
check: async (path) => ({
|
|
270
|
+
...(await inspectAll(config, argv)(path)).checked,
|
|
271
|
+
conditions: runConditions(argv, flag(argv, "--genre"), config.experimental),
|
|
272
|
+
}),
|
|
277
273
|
});
|
|
278
274
|
},
|
|
279
|
-
skill: (argv) => runSkill(argv, { cwd: process.cwd(), home: homedir(), ui: hostLanguage(
|
|
275
|
+
skill: (argv, config) => runSkill(argv, { cwd: process.cwd(), home: homedir(), ui: hostLanguage(config.language, process.env) }),
|
|
280
276
|
};
|
|
281
277
|
/** Every subcommand. Anything else on the command line is a file to check. */
|
|
282
278
|
export const COMMANDS = Object.keys(HANDLERS);
|
|
@@ -291,15 +287,15 @@ export const main = async (argv) => {
|
|
|
291
287
|
return 0;
|
|
292
288
|
}
|
|
293
289
|
// 知らないジャンルではどの rule も当たらず、知らない文書の種類では種類の知識が外れる。どちらも素通りに見えるので、何かする前に止める。
|
|
294
|
-
const config = readConfig();
|
|
290
|
+
const config = await withExtensions(readConfig());
|
|
295
291
|
const problems = settingProblems(first, flag(argv, "--genre"), config, hostText(config), hostLanguage(config.language, process.env));
|
|
296
292
|
problems.forEach((problem) => console.error(problem));
|
|
297
293
|
if (problems.length > 0)
|
|
298
294
|
return 1;
|
|
299
295
|
const handler = HANDLERS[first];
|
|
300
296
|
if (handler !== undefined)
|
|
301
|
-
return handler(argv);
|
|
297
|
+
return handler(argv, config);
|
|
302
298
|
const targets = targetsOf(first === "lint" ? argv.slice(1) : argv);
|
|
303
|
-
return argv.includes("--watch") ? runWatch(targets, argv) : lint(targets, argv);
|
|
299
|
+
return argv.includes("--watch") ? runWatch(targets, argv, config) : lint(targets, argv, config);
|
|
304
300
|
};
|
|
305
301
|
//# sourceMappingURL=cli.js.map
|