slopless 0.2.8 → 0.2.10

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.
Files changed (126) hide show
  1. package/dist/adapters/textlint/report.js +1 -4
  2. package/dist/adapters/textlint/report.js.map +1 -1
  3. package/dist/adapters/textlint/rule.js +1 -1
  4. package/dist/adapters/textlint/rule.js.map +1 -1
  5. package/dist/adapters/textlint/units.js +16 -0
  6. package/dist/adapters/textlint/units.js.map +1 -1
  7. package/dist/cli.js +25 -8
  8. package/dist/cli.js.map +1 -1
  9. package/dist/presets/everything.js +6 -0
  10. package/dist/presets/everything.js.map +1 -1
  11. package/dist/registries/narrative-slop.js +2 -0
  12. package/dist/registries/narrative-slop.js.map +1 -1
  13. package/dist/registries/syntactic-patterns/authority.js +3 -1
  14. package/dist/registries/syntactic-patterns/authority.js.map +1 -1
  15. package/dist/registries/syntactic-patterns/lead-ins.js +2 -0
  16. package/dist/registries/syntactic-patterns/lead-ins.js.map +1 -1
  17. package/dist/registries/syntactic-patterns/repetition.js +4 -0
  18. package/dist/registries/syntactic-patterns/repetition.js.map +1 -1
  19. package/dist/registries/words.js +2 -0
  20. package/dist/registries/words.js.map +1 -1
  21. package/dist/rules/metrics/avg-sentence-length.js +6 -0
  22. package/dist/rules/metrics/avg-sentence-length.js.map +1 -1
  23. package/dist/rules/narrative-slop/body-action-density.js +44 -1
  24. package/dist/rules/narrative-slop/body-action-density.js.map +1 -1
  25. package/dist/rules/narrative-slop/data/narrative-cliches.json +49 -0
  26. package/dist/rules/narrative-slop/flat-action-cadence.js +97 -149
  27. package/dist/rules/narrative-slop/flat-action-cadence.js.map +1 -1
  28. package/dist/rules/narrative-slop/low-information-beat-density.js +79 -0
  29. package/dist/rules/narrative-slop/low-information-beat-density.js.map +1 -0
  30. package/dist/rules/narrative-slop/perception-verb-density.js +25 -1
  31. package/dist/rules/narrative-slop/perception-verb-density.js.map +1 -1
  32. package/dist/rules/orthography/em-dashes.js.map +1 -1
  33. package/dist/rules/orthography/hidden-unicode-controls.js.map +1 -1
  34. package/dist/rules/orthography/sentence-case.js +4 -2
  35. package/dist/rules/orthography/sentence-case.js.map +1 -1
  36. package/dist/rules/private/textlint-rule-builders.js +3 -1
  37. package/dist/rules/private/textlint-rule-builders.js.map +1 -1
  38. package/dist/rules/semantic-thinness/patterns/abstract-metaphor-claim.json +91 -2
  39. package/dist/rules/semantic-thinness/patterns/abstract-personification-line.json +34 -3
  40. package/dist/rules/semantic-thinness/patterns/body-emotion-shorthand.json +23 -0
  41. package/dist/rules/semantic-thinness/patterns/deictic-summary.json +118 -6
  42. package/dist/rules/semantic-thinness/patterns/different-job-summary.json +30 -0
  43. package/dist/rules/semantic-thinness/patterns/emotion-as-substance.json +14 -4
  44. package/dist/rules/semantic-thinness/patterns/empty-atmosphere-shift.json +2 -0
  45. package/dist/rules/semantic-thinness/patterns/empty-scene-state.json +1 -0
  46. package/dist/rules/semantic-thinness/patterns/empty-scene-transition.json +1 -0
  47. package/dist/rules/semantic-thinness/patterns/gaze-choreography.json +2 -0
  48. package/dist/rules/semantic-thinness/patterns/generic-pressure-or-stakes.json +1 -0
  49. package/dist/rules/semantic-thinness/patterns/generic-realization.json +1 -0
  50. package/dist/rules/semantic-thinness/patterns/hollow-significance.json +94 -2
  51. package/dist/rules/semantic-thinness/patterns/missing-conversation-plan.json +44 -0
  52. package/dist/rules/semantic-thinness/patterns/puffery-evaluative-claim.json +70 -4
  53. package/dist/rules/semantic-thinness/patterns/real-work-begins.json +3 -1
  54. package/dist/rules/semantic-thinness/patterns/silence-as-actor.json +4 -0
  55. package/dist/rules/semantic-thinness/patterns/solution-boring-frame.json +72 -0
  56. package/dist/rules/semantic-thinness/patterns/truth-answer-moves.json +2 -0
  57. package/dist/rules/semantic-thinness/patterns/vague-connective-payoff.json +31 -4
  58. package/dist/rules/semantic-thinness/patterns/vague-summary-cost.json +34 -0
  59. package/dist/rules/semantic-thinness/patterns/vague-threshold-change.json +40 -4
  60. package/dist/rules/semantic-thinness/private/concrete-guards.js +119 -0
  61. package/dist/rules/semantic-thinness/private/concrete-guards.js.map +1 -0
  62. package/dist/rules/semantic-thinness/private/pattern-data-b.js +6 -0
  63. package/dist/rules/semantic-thinness/private/pattern-data-b.js.map +1 -1
  64. package/dist/rules/semantic-thinness/private/pattern-data-d.js +2 -0
  65. package/dist/rules/semantic-thinness/private/pattern-data-d.js.map +1 -1
  66. package/dist/rules/semantic-thinness/private/pattern-matcher.js +26 -14
  67. package/dist/rules/semantic-thinness/private/pattern-matcher.js.map +1 -1
  68. package/dist/rules/syntactic-patterns/authority/authority-padding.js +75 -7
  69. package/dist/rules/syntactic-patterns/authority/authority-padding.js.map +1 -1
  70. package/dist/rules/syntactic-patterns/authority/uncited-authority.js +124 -0
  71. package/dist/rules/syntactic-patterns/authority/uncited-authority.js.map +1 -0
  72. package/dist/rules/syntactic-patterns/closers/affirmation-closers.js +11 -1
  73. package/dist/rules/syntactic-patterns/closers/affirmation-closers.js.map +1 -1
  74. package/dist/rules/syntactic-patterns/closers/boilerplate-conclusion.js +51 -4
  75. package/dist/rules/syntactic-patterns/closers/boilerplate-conclusion.js.map +1 -1
  76. package/dist/rules/syntactic-patterns/closers/summative-closer.js +52 -4
  77. package/dist/rules/syntactic-patterns/closers/summative-closer.js.map +1 -1
  78. package/dist/rules/syntactic-patterns/contrast/contrastive-aphorism.js +68 -5
  79. package/dist/rules/syntactic-patterns/contrast/contrastive-aphorism.js.map +1 -1
  80. package/dist/rules/syntactic-patterns/contrast/negation-reframe.js +26 -9
  81. package/dist/rules/syntactic-patterns/contrast/negation-reframe.js.map +1 -1
  82. package/dist/rules/syntactic-patterns/contrast/private/abstract-pair-gates.js +63 -0
  83. package/dist/rules/syntactic-patterns/contrast/private/abstract-pair-gates.js.map +1 -0
  84. package/dist/rules/syntactic-patterns/contrast/private/block-negation-reframe.js +194 -0
  85. package/dist/rules/syntactic-patterns/contrast/private/block-negation-reframe.js.map +1 -0
  86. package/dist/rules/syntactic-patterns/contrast/private/meaning-reframe.js +42 -0
  87. package/dist/rules/syntactic-patterns/contrast/private/meaning-reframe.js.map +1 -0
  88. package/dist/rules/syntactic-patterns/contrast/private/negation-reframe-matcher.js +34 -41
  89. package/dist/rules/syntactic-patterns/contrast/private/negation-reframe-matcher.js.map +1 -1
  90. package/dist/rules/syntactic-patterns/contrast/private/negative-slop-frames.js +6 -0
  91. package/dist/rules/syntactic-patterns/contrast/private/negative-slop-frames.js.map +1 -1
  92. package/dist/rules/syntactic-patterns/contrast/private/same-sentence-contrast.js +47 -0
  93. package/dist/rules/syntactic-patterns/contrast/private/same-sentence-contrast.js.map +1 -0
  94. package/dist/rules/syntactic-patterns/generalization/universalizing-claims.js +84 -1
  95. package/dist/rules/syntactic-patterns/generalization/universalizing-claims.js.map +1 -1
  96. package/dist/rules/syntactic-patterns/lead-ins/formal-transition-density.js +92 -0
  97. package/dist/rules/syntactic-patterns/lead-ins/formal-transition-density.js.map +1 -0
  98. package/dist/rules/syntactic-patterns/lead-ins/generic-signposting.js +53 -3
  99. package/dist/rules/syntactic-patterns/lead-ins/generic-signposting.js.map +1 -1
  100. package/dist/rules/syntactic-patterns/lead-ins/lesson-framing.js +9 -0
  101. package/dist/rules/syntactic-patterns/lead-ins/lesson-framing.js.map +1 -1
  102. package/dist/rules/syntactic-patterns/lead-ins/llm-openers.js +38 -3
  103. package/dist/rules/syntactic-patterns/lead-ins/llm-openers.js.map +1 -1
  104. package/dist/rules/syntactic-patterns/lead-ins/observer-guidance.js +17 -0
  105. package/dist/rules/syntactic-patterns/lead-ins/observer-guidance.js.map +1 -1
  106. package/dist/rules/syntactic-patterns/lead-ins/private/discourse-evaluation.js +91 -0
  107. package/dist/rules/syntactic-patterns/lead-ins/private/discourse-evaluation.js.map +1 -0
  108. package/dist/rules/syntactic-patterns/repetition/demonstrative-emphasis.js +4 -0
  109. package/dist/rules/syntactic-patterns/repetition/demonstrative-emphasis.js.map +1 -1
  110. package/dist/rules/syntactic-patterns/repetition/fragment-stacking.js +4 -1
  111. package/dist/rules/syntactic-patterns/repetition/fragment-stacking.js.map +1 -1
  112. package/dist/rules/syntactic-patterns/repetition/repeated-predicate-end.js +110 -0
  113. package/dist/rules/syntactic-patterns/repetition/repeated-predicate-end.js.map +1 -0
  114. package/dist/rules/syntactic-patterns/repetition/repeated-sentence-starts.js +91 -0
  115. package/dist/rules/syntactic-patterns/repetition/repeated-sentence-starts.js.map +1 -0
  116. package/dist/rules/syntactic-patterns/repetition/triple-repeat.js +6 -1
  117. package/dist/rules/syntactic-patterns/repetition/triple-repeat.js.map +1 -1
  118. package/dist/rules/term-policy/recommended-terms.js +3 -3
  119. package/dist/rules/term-policy/recommended-terms.js.map +1 -1
  120. package/dist/rules/term-policy/required-terms.js +1 -1
  121. package/dist/rules/term-policy/required-terms.js.map +1 -1
  122. package/dist/rules/words/llm-vocabulary-density.js +78 -0
  123. package/dist/rules/words/llm-vocabulary-density.js.map +1 -0
  124. package/dist/shared/matchers/concrete-evidence.js +161 -0
  125. package/dist/shared/matchers/concrete-evidence.js.map +1 -0
  126. package/package.json +10 -4
@@ -3,153 +3,17 @@ import { wordTokens } from "../../shared/text/tokens.js";
3
3
  import { oneToOneRule } from "../private/textlint-rule-builders.js";
4
4
  const MAX_SIMPLE_SENTENCE_TOKENS = 14;
5
5
  const MIN_RUN_LENGTH = 3;
6
- const SUBORDINATING_MARKERS = new Set([
7
- "after",
8
- "although",
9
- "as",
10
- "because",
11
- "before",
12
- "if",
13
- "once",
14
- "since",
15
- "though",
16
- "unless",
17
- "until",
18
- "when",
19
- "whenever",
20
- "where",
21
- "whereas",
22
- "while"
23
- ]);
24
- const PRONOUN_SUBJECTS = new Set(["he", "it", "she", "they", "we", "you"]);
25
- const POSSESSIVE_SUBJECT_OPENERS = new Set([
26
- "her",
27
- "his",
28
- "its",
29
- "my",
30
- "our",
31
- "their",
32
- "your"
33
- ]);
34
- const BODY_AND_CAMERA_NOUNS = new Set([
35
- "arm",
36
- "arms",
37
- "body",
38
- "breath",
39
- "chest",
40
- "ear",
41
- "ears",
42
- "eye",
43
- "eyes",
44
- "face",
45
- "finger",
46
- "fingers",
47
- "foot",
48
- "feet",
49
- "hand",
50
- "hands",
51
- "head",
52
- "heart",
53
- "leg",
54
- "legs",
55
- "mouth",
56
- "paw",
57
- "paws",
58
- "posture",
59
- "shoulder",
60
- "shoulders",
61
- "stomach",
62
- "tail",
63
- "voice"
64
- ]);
65
- const WEAK_ACTION_VERBS = new Set([
66
- "angled",
67
- "angle",
68
- "blink",
69
- "blinked",
70
- "climb",
71
- "climbed",
72
- "cross",
73
- "crossed",
74
- "crouch",
75
- "crouched",
76
- "flatten",
77
- "flattened",
78
- "hear",
79
- "heard",
80
- "gaze",
81
- "gazed",
82
- "glance",
83
- "glanced",
84
- "hang",
85
- "hung",
86
- "listen",
87
- "listened",
88
- "look",
89
- "looked",
90
- "nod",
91
- "nodded",
92
- "observe",
93
- "observed",
94
- "pick",
95
- "picked",
96
- "pull",
97
- "pulled",
98
- "rested",
99
- "run",
100
- "ran",
101
- "shift",
102
- "shifted",
103
- "sit",
104
- "sat",
105
- "stand",
106
- "stood",
107
- "stare",
108
- "stared",
109
- "step",
110
- "stepped",
111
- "stop",
112
- "stopped",
113
- "turn",
114
- "turned",
115
- "twitch",
116
- "twitched",
117
- "tie",
118
- "tied",
119
- "wait",
120
- "waited",
121
- "walk",
122
- "walked",
123
- "watch",
124
- "watched"
125
- ]);
126
- const LINKING_VERBS = new Set([
127
- "am",
128
- "are",
129
- "be",
130
- "been",
131
- "being",
132
- "felt",
133
- "is",
134
- "looked",
135
- "seemed",
136
- "was",
137
- "were"
138
- ]);
139
- const SENSORIAL_COMPLEMENTS = new Set([
140
- "cold",
141
- "dark",
142
- "heavy",
143
- "haze",
144
- "blur",
145
- "fog",
146
- "low",
147
- "quiet",
148
- "sharp",
149
- "still",
150
- "tight",
151
- "tired"
152
- ]);
6
+ const CLAUSE_CONNECTORS = new Set(["and", "then"]);
7
+ function wordSet(words) {
8
+ return new Set(words.split(" "));
9
+ }
10
+ const SUBORDINATING_MARKERS = wordSet("after although as because before if once since though unless until when whenever where whereas while");
11
+ const PRONOUN_SUBJECTS = wordSet("he it she they we you");
12
+ const POSSESSIVE_SUBJECT_OPENERS = wordSet("her his its my our their your");
13
+ const BODY_AND_CAMERA_NOUNS = wordSet("arm arms body breath chest ear ears eye eyes face finger fingers foot feet hand hands head heart leg legs mouth paw paws posture shoulder shoulders stomach tail voice");
14
+ const WEAK_ACTION_VERBS = wordSet("angled angle blink blinked climb climbed cross crossed crouch crouched flatten flattened hear heard gaze gazed glance glanced hang hung listen listened look looked lean leaned nod nodded observe observed pick picked pull pulled rested reach reached run ran shift shifted sit sat stand stood stare stared step stepped stop stopped turn turned twitch twitched tie tied wait waited walk walked watch watched");
15
+ const LINKING_VERBS = wordSet("am are be been being felt is looked seemed was were");
16
+ const SENSORIAL_COMPLEMENTS = wordSet("cold dark heavy haze blur fog low quiet sharp still tight tired");
153
17
  function tokenAt(tokens, index) {
154
18
  return tokens[index];
155
19
  }
@@ -212,6 +76,14 @@ function firstWeakActionVerb(tokens) {
212
76
  function hasSensorialComplement(tokens) {
213
77
  return tokens.some((token) => SENSORIAL_COMPLEMENTS.has(token.normalized));
214
78
  }
79
+ function trimLeadingConnectors(tokens) {
80
+ let index = 0;
81
+ while (index < tokens.length &&
82
+ CLAUSE_CONNECTORS.has(tokens[index]?.normalized ?? "")) {
83
+ index += 1;
84
+ }
85
+ return tokens.slice(index);
86
+ }
215
87
  function firstLinkingVerb(tokens) {
216
88
  for (const token of tokens.slice(1, 8)) {
217
89
  if (LINKING_VERBS.has(token.normalized)) {
@@ -221,7 +93,7 @@ function firstLinkingVerb(tokens) {
221
93
  return undefined;
222
94
  }
223
95
  function classifySentence(sentence) {
224
- const tokens = wordTokens(sentence.text);
96
+ const tokens = trimLeadingConnectors(wordTokens(sentence.text));
225
97
  if (tokens.length < 3 || tokens.length > MAX_SIMPLE_SENTENCE_TOKENS) {
226
98
  return undefined;
227
99
  }
@@ -252,6 +124,43 @@ function classifySentence(sentence) {
252
124
  }
253
125
  return undefined;
254
126
  }
127
+ function splitCommaClauses(sentence) {
128
+ const clauses = [];
129
+ let start = 0;
130
+ for (let index = 0; index < sentence.text.length; index += 1) {
131
+ if (sentence.text[index] !== ",") {
132
+ continue;
133
+ }
134
+ const text = sentence.text.slice(start, index).trim();
135
+ if (text.length > 0) {
136
+ const leading = firstNonWhitespaceIndex(sentence.text, start, index);
137
+ clauses.push({
138
+ end: sentence.start + index,
139
+ start: sentence.start + leading,
140
+ text
141
+ });
142
+ }
143
+ start = index + 1;
144
+ }
145
+ const text = sentence.text.slice(start).trim();
146
+ if (text.length > 0) {
147
+ const leading = firstNonWhitespaceIndex(sentence.text, start, sentence.text.length);
148
+ clauses.push({
149
+ end: sentence.end,
150
+ start: sentence.start + leading,
151
+ text
152
+ });
153
+ }
154
+ return clauses;
155
+ }
156
+ function firstNonWhitespaceIndex(text, start, end) {
157
+ for (let index = start; index < end; index += 1) {
158
+ if (text[index]?.trim() !== "") {
159
+ return index;
160
+ }
161
+ }
162
+ return start;
163
+ }
255
164
  function isCadenceRun(sentences) {
256
165
  const weakActionCount = sentences.filter((sentence) => sentence.actionKind === "weak-action").length;
257
166
  return weakActionCount >= 2;
@@ -292,9 +201,48 @@ function findFlatActionRuns(text) {
292
201
  }
293
202
  return runs;
294
203
  }
204
+ function findFlatActionClauseRuns(text) {
205
+ return splitSentences(text).flatMap((sentence) => findFlatActionRunsFromSentences(splitCommaClauses(sentence)));
206
+ }
207
+ function findFlatActionRunsFromSentences(sentences) {
208
+ const runs = [];
209
+ let current = [];
210
+ for (const sentence of sentences) {
211
+ const cadenceSentence = classifySentence(sentence);
212
+ if (cadenceSentence === undefined) {
213
+ if (current.length >= MIN_RUN_LENGTH && isCadenceRun(current)) {
214
+ const first = current[0];
215
+ const last = current.at(-1);
216
+ if (first !== undefined && last !== undefined) {
217
+ runs.push({
218
+ end: last.sentence.end,
219
+ sentences: current,
220
+ start: first.sentence.start
221
+ });
222
+ }
223
+ }
224
+ current = [];
225
+ continue;
226
+ }
227
+ current.push(cadenceSentence);
228
+ }
229
+ if (current.length >= MIN_RUN_LENGTH && isCadenceRun(current)) {
230
+ const first = current[0];
231
+ const last = current.at(-1);
232
+ if (first !== undefined && last !== undefined) {
233
+ runs.push({
234
+ end: last.sentence.end,
235
+ sentences: current,
236
+ start: first.sentence.start
237
+ });
238
+ }
239
+ }
240
+ return runs;
241
+ }
295
242
  const rule = oneToOneRule({
296
243
  detect: (unit) => {
297
- const match = findFlatActionRuns(unit.text)[0];
244
+ const match = findFlatActionRuns(unit.text)[0] ??
245
+ findFlatActionClauseRuns(unit.text)[0];
298
246
  if (match === undefined) {
299
247
  return [];
300
248
  }
@@ -1 +1 @@
1
- {"version":3,"file":"flat-action-cadence.js","sourceRoot":"","sources":["../../../src/rules/narrative-slop/flat-action-cadence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flat-action-cadence.js","sourceRoot":"","sources":["../../../src/rules/narrative-slop/flat-action-cadence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { defineTextlintRule } from "../../adapters/textlint/rule.js";
2
+ import { paragraphUnits } from "../../adapters/textlint/units.js";
3
+ import { wordTokens } from "../../shared/text/tokens.js";
4
+ const RULE_ID = "narrative-slop:low-information-beat-density";
5
+ const GROUP = "low-information beat";
6
+ const MAX_PARAGRAPH_TOKENS = 95;
7
+ const MAX_WINDOW_TOKENS = 65;
8
+ const MIN_HITS = 5;
9
+ const WINDOW_SENTENCES = 5;
10
+ const LOW_INFORMATION_WORDS = new Set([
11
+ "blinked",
12
+ "breath",
13
+ "chest",
14
+ "eyes",
15
+ "face",
16
+ "felt",
17
+ "found",
18
+ "glanced",
19
+ "heart",
20
+ "looked",
21
+ "shoulders",
22
+ "stepped",
23
+ "stomach",
24
+ "throat",
25
+ "tightened",
26
+ "turned",
27
+ "waited"
28
+ ]);
29
+ const CONCRETE_ACTION_WORDS = new Set([
30
+ "arrow",
31
+ "copied",
32
+ "count",
33
+ "counted",
34
+ "gate",
35
+ "guards",
36
+ "symbol"
37
+ ]);
38
+ function hasConcreteAction(tokens) {
39
+ return tokens.some((token) => CONCRETE_ACTION_WORDS.has(token.normalized));
40
+ }
41
+ function beatDetections(unit) {
42
+ const tokens = wordTokens(unit.text);
43
+ if (hasConcreteAction(tokens)) {
44
+ return [];
45
+ }
46
+ return tokens
47
+ .filter((token) => LOW_INFORMATION_WORDS.has(token.normalized))
48
+ .map((token) => ({
49
+ evidence: unit.text.slice(token.start, token.end),
50
+ group: GROUP,
51
+ label: token.normalized,
52
+ range: { end: token.end, start: token.start },
53
+ ruleId: RULE_ID,
54
+ unitId: unit.id
55
+ }));
56
+ }
57
+ const rule = defineTextlintRule({
58
+ detector: {
59
+ detect: ({ units }) => units.flatMap((unit) => beatDetections(unit)),
60
+ family: "narrative-slop",
61
+ id: RULE_ID
62
+ },
63
+ formatMessage: (report) => {
64
+ const labels = [...new Set(report.detections.map((hit) => hit.label))];
65
+ return `Low-information beat density: ${report.detections.length} weak body/action beats in a short span (${labels.join(", ")}).`;
66
+ },
67
+ reportPolicy: {
68
+ groups: [GROUP],
69
+ kind: "density",
70
+ maxParagraphTokens: MAX_PARAGRAPH_TOKENS,
71
+ maxWindowTokens: MAX_WINDOW_TOKENS,
72
+ paragraphMinimumHits: MIN_HITS,
73
+ windowMinimumHits: MIN_HITS,
74
+ windowSentences: WINDOW_SENTENCES
75
+ },
76
+ units: (document) => paragraphUnits(document)
77
+ });
78
+ export default rule;
79
+ //# sourceMappingURL=low-information-beat-density.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"low-information-beat-density.js","sourceRoot":"","sources":["../../../src/rules/narrative-slop/low-information-beat-density.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,31 @@ const PERCEPTION_VERBS = new Set([
25
25
  "observe",
26
26
  "observes",
27
27
  "observed",
28
- "observing"
28
+ "observing",
29
+ "scan",
30
+ "scans",
31
+ "scanned",
32
+ "scanning",
33
+ "peer",
34
+ "peers",
35
+ "peered",
36
+ "peering",
37
+ "squint",
38
+ "squints",
39
+ "squinted",
40
+ "squinting",
41
+ "study",
42
+ "studies",
43
+ "studied",
44
+ "studying",
45
+ "notice",
46
+ "notices",
47
+ "noticed",
48
+ "noticing",
49
+ "see",
50
+ "sees",
51
+ "saw",
52
+ "seeing"
29
53
  ]);
30
54
  const PURPOSE_LOOK_PARTICLES = new Set(["for", "up", "under", "into"]);
31
55
  const MAX_PARAGRAPH_TOKENS = 80;
@@ -1 +1 @@
1
- {"version":3,"file":"perception-verb-density.js","sourceRoot":"","sources":["../../../src/rules/narrative-slop/perception-verb-density.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"perception-verb-density.js","sourceRoot":"","sources":["../../../src/rules/narrative-slop/perception-verb-density.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"em-dashes.js","sourceRoot":"","sources":["../../../src/rules/orthography/em-dashes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEhC,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IACjD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,cAAc,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,IAAI,GAAG,YAAY,CAAC;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,UAAU,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,cAAc;gBACxB,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE;aAC5D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,EAAE,aAAa;IACrB,aAAa,EAAE,GAAG,EAAE,CAClB,oFAAoF;IACtF,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,WAAW;CACtB,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"em-dashes.js","sourceRoot":"","sources":["../../../src/rules/orthography/em-dashes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEhC,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IACjD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,cAAc,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,IAAI,GAAG,YAAY,CAAC;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,UAAU,GAAqB,EAAE,CAAC;QACxC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,UAAU,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,cAAc;gBACxB,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE;aAC5D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,EAAE,aAAa;IACrB,aAAa,EAAE,GAAG,EAAE,CAClB,oFAAoF;IACtF,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,WAAW;CACtB,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hidden-unicode-controls.js","sourceRoot":"","sources":["../../../src/rules/orthography/hidden-unicode-controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAC5B,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACjC,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC7B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,yBAAyB,CAAC;IACnC,CAAC,MAAM,EAAE,yBAAyB,CAAC;IACnC,CAAC,MAAM,EAAE,4BAA4B,CAAC;IACtC,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAClC,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAClC,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACjC,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACjC,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAChC,CAAC,MAAM,EAAE,yBAAyB,CAAC;IACnC,CAAC,MAAM,EAAE,iCAAiC,CAAC;CAC5C,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,SAAiB;IACvC,OAAO,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,IAAI,GAAG,YAAY,CAAC;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,GACR,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE7C,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,EAAE,IAAI,EAAE;oBACd,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC;oBACnC,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE;iBAChD,CAAC,CAAC;YACL,CAAC;YAED,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,EAAE,aAAa;IACrB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACxB,iCAAiC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,mCAAmC;IAC7H,MAAM,EAAE,qCAAqC;IAC7C,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"hidden-unicode-controls.js","sourceRoot":"","sources":["../../../src/rules/orthography/hidden-unicode-controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAC5B,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACjC,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC7B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,yBAAyB,CAAC;IACnC,CAAC,MAAM,EAAE,yBAAyB,CAAC;IACnC,CAAC,MAAM,EAAE,4BAA4B,CAAC;IACtC,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAClC,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAClC,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACjC,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACjC,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAChC,CAAC,MAAM,EAAE,yBAAyB,CAAC;IACnC,CAAC,MAAM,EAAE,iCAAiC,CAAC;CAC5C,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,SAAiB;IACvC,OAAO,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,IAAI,GAAG,YAAY,CAAC;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,UAAU,GAAqB,EAAE,CAAC;QACxC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,GACR,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE7C,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,EAAE,IAAI,EAAE;oBACd,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC;oBACnC,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE;iBAChD,CAAC,CAAC;YACL,CAAC;YAED,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,EAAE,aAAa;IACrB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACxB,iCAAiC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,mCAAmC;IAC7H,MAAM,EAAE,qCAAqC;IAC7C,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
@@ -35,10 +35,12 @@ function countCapitalizedNonFirstWords(text) {
35
35
  }
36
36
  return count;
37
37
  }
38
+ function isHeaderNode(node) {
39
+ return node.type === "Header" && "depth" in node;
40
+ }
38
41
  const rule = oneToOneRule({
39
42
  detect: (unit) => {
40
- const node = unit.node;
41
- if (node.depth > MAX_RUST_HEADING_DEPTH) {
43
+ if (!isHeaderNode(unit.node) || unit.node.depth > MAX_RUST_HEADING_DEPTH) {
42
44
  return [];
43
45
  }
44
46
  const count = countCapitalizedNonFirstWords(unit.text);
@@ -1 +1 @@
1
- {"version":3,"file":"sentence-case.js","sourceRoot":"","sources":["../../../src/rules/orthography/sentence-case.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAC1C,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAE5C,OAAO,KAAK,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAE5C,IAAI,KAAK,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAY;IACjD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,IAAI,GAAG,YAAY,CAAC;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAqB,CAAC;QACxC,IAAI,IAAI,CAAC,KAAK,GAAG,sBAAsB,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,KAAK,IAAI,+BAA+B,EAAE,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO;YACL;gBACE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;gBACvB,KAAK,EAAE,oBAAoB;gBAC3B,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;aAC3C;SACF,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,aAAa;IACrB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACxB,2DAA2D,MAAM,CAAC,QAAQ,+BAA+B;IAC3G,oBAAoB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;IAChE,MAAM,EAAE,2BAA2B;IACnC,QAAQ,EAAE,SAAS;CACpB,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"sentence-case.js","sourceRoot":"","sources":["../../../src/rules/orthography/sentence-case.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { defineTextlintRule } from "../../adapters/textlint/rule.js";
2
- import { documentUnit, allParagraphUnits, headingUnits, paragraphUnits, linkUnits, sectionFirstSentenceUnits, sectionLastSentenceUnits, sentenceUnits, strUnits } from "../../adapters/textlint/units.js";
2
+ import { documentUnit, allParagraphUnits, headingUnits, paragraphUnits, paragraphSequenceUnit, linkUnits, sectionFirstSentenceUnits, sectionLastSentenceUnits, sentenceUnits, strUnits } from "../../adapters/textlint/units.js";
3
3
  function detector(input) {
4
4
  return {
5
5
  detect: ({ options, units }) => units.flatMap((unit) => input.detect(unit, options).map((detection) => ({
@@ -29,6 +29,8 @@ export function oneToOneRule(input) {
29
29
  return headingUnits(document, input.ignoredAncestorTypes);
30
30
  case "paragraph":
31
31
  return paragraphUnits(document);
32
+ case "paragraph-sequence":
33
+ return [paragraphSequenceUnit(document)];
32
34
  case "link":
33
35
  return linkUnits(document, input.ignoredAncestorTypes);
34
36
  case "section-first-sentence":
@@ -1 +1 @@
1
- {"version":3,"file":"textlint-rule-builders.js","sourceRoot":"","sources":["../../../src/rules/private/textlint-rule-builders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAwC1C,SAAS,QAAQ,CACf,KAAwE;IAExE,OAAO;QACL,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC9C,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,IAAI,CAAC,EAAE;SAChB,CAAC,CAAC,CACJ;QACH,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,EAAE,EAAE,KAAK,CAAC,MAAM;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,KAAkC;IAElC,OAAO,kBAAkB,CAAC;QACxB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;QACzB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QACpC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;YAClB,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACvB,KAAK,UAAU;oBACb,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClC,KAAK,eAAe;oBAClB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACjE,KAAK,SAAS;oBACZ,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBAC5D,KAAK,WAAW;oBACd,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAClC,KAAK,MAAM;oBACT,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACzD,KAAK,wBAAwB;oBAC3B,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBAC7C,KAAK,uBAAuB;oBAC1B,OAAO,wBAAwB,CAAC,QAAQ,CAAC,CAAC;gBAC5C,KAAK,UAAU;oBACb,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACjC,KAAK,KAAK;oBACR,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"textlint-rule-builders.js","sourceRoot":"","sources":["../../../src/rules/private/textlint-rule-builders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAyC1C,SAAS,QAAQ,CACf,KAAwE;IAExE,OAAO;QACL,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC9C,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,IAAI,CAAC,EAAE;SAChB,CAAC,CAAC,CACJ;QACH,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,EAAE,EAAE,KAAK,CAAC,MAAM;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,KAAkC;IAElC,OAAO,kBAAkB,CAAC;QACxB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;QACzB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QACpC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;YAClB,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACvB,KAAK,UAAU;oBACb,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClC,KAAK,eAAe;oBAClB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACjE,KAAK,SAAS;oBACZ,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBAC5D,KAAK,WAAW;oBACd,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAClC,KAAK,oBAAoB;oBACvB,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3C,KAAK,MAAM;oBACT,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACzD,KAAK,wBAAwB;oBAC3B,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBAC7C,KAAK,uBAAuB;oBAC1B,OAAO,wBAAwB,CAAC,QAAQ,CAAC,CAAC;gBAC5C,KAAK,UAAU;oBACb,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACjC,KAAK,KAAK;oBACR,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}