chaffjs 0.15.0 → 0.17.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.
Files changed (528) hide show
  1. package/README.md +27 -2
  2. package/dist/address-chain.js +1 -1
  3. package/dist/address-chain.js.map +1 -1
  4. package/dist/backends/anthropic.d.ts +2 -1
  5. package/dist/backends/anthropic.d.ts.map +1 -1
  6. package/dist/backends/anthropic.js +4 -1
  7. package/dist/backends/anthropic.js.map +1 -1
  8. package/dist/backends/openai.d.ts +2 -1
  9. package/dist/backends/openai.d.ts.map +1 -1
  10. package/dist/backends/openai.js +1 -1
  11. package/dist/backends/openai.js.map +1 -1
  12. package/dist/backends/types.d.ts +2 -1
  13. package/dist/backends/types.d.ts.map +1 -1
  14. package/dist/backends/types.js +1 -1
  15. package/dist/backends/types.js.map +1 -1
  16. package/dist/baseline.js +1 -1
  17. package/dist/baseline.js.map +1 -1
  18. package/dist/calendar-number.d.ts +31 -0
  19. package/dist/calendar-number.d.ts.map +1 -0
  20. package/dist/calendar-number.js +58 -0
  21. package/dist/calendar-number.js.map +1 -0
  22. package/dist/cli-args.d.ts +0 -5
  23. package/dist/cli-args.d.ts.map +1 -1
  24. package/dist/cli-args.js +2 -2
  25. package/dist/cli-args.js.map +1 -1
  26. package/dist/cli-text.d.ts +6 -2
  27. package/dist/cli-text.d.ts.map +1 -1
  28. package/dist/cli-text.js +19 -12
  29. package/dist/cli-text.js.map +1 -1
  30. package/dist/cli.d.ts.map +1 -1
  31. package/dist/cli.js +43 -37
  32. package/dist/cli.js.map +1 -1
  33. package/dist/closing-numbers.d.ts +20 -0
  34. package/dist/closing-numbers.d.ts.map +1 -0
  35. package/dist/closing-numbers.js +56 -0
  36. package/dist/closing-numbers.js.map +1 -0
  37. package/dist/commands/cite.d.ts.map +1 -1
  38. package/dist/commands/cite.js +4 -4
  39. package/dist/commands/cite.js.map +1 -1
  40. package/dist/commands/eval.js +1 -1
  41. package/dist/commands/eval.js.map +1 -1
  42. package/dist/commands/init-ask.d.ts +19 -0
  43. package/dist/commands/init-ask.d.ts.map +1 -0
  44. package/dist/commands/init-ask.js +43 -0
  45. package/dist/commands/init-ask.js.map +1 -0
  46. package/dist/commands/test.d.ts +8 -0
  47. package/dist/commands/test.d.ts.map +1 -1
  48. package/dist/commands/test.js +78 -44
  49. package/dist/commands/test.js.map +1 -1
  50. package/dist/commands/tree.d.ts +1 -8
  51. package/dist/commands/tree.d.ts.map +1 -1
  52. package/dist/commands/tree.js +7 -6
  53. package/dist/commands/tree.js.map +1 -1
  54. package/dist/config/by-path.d.ts.map +1 -1
  55. package/dist/config/by-path.js +10 -9
  56. package/dist/config/by-path.js.map +1 -1
  57. package/dist/config/load.d.ts +4 -0
  58. package/dist/config/load.d.ts.map +1 -1
  59. package/dist/config/load.js +19 -0
  60. package/dist/config/load.js.map +1 -1
  61. package/dist/config/name-problems.d.ts +5 -0
  62. package/dist/config/name-problems.d.ts.map +1 -0
  63. package/dist/config/name-problems.js +11 -0
  64. package/dist/config/name-problems.js.map +1 -0
  65. package/dist/date-stamp.js +1 -1
  66. package/dist/date-stamp.js.map +1 -1
  67. package/dist/detectors/acronym-context.d.ts +2 -0
  68. package/dist/detectors/acronym-context.d.ts.map +1 -1
  69. package/dist/detectors/acronym-context.js +13 -0
  70. package/dist/detectors/acronym-context.js.map +1 -1
  71. package/dist/detectors/acronym-expansion.d.ts +2 -0
  72. package/dist/detectors/acronym-expansion.d.ts.map +1 -1
  73. package/dist/detectors/acronym-expansion.js +104 -1
  74. package/dist/detectors/acronym-expansion.js.map +1 -1
  75. package/dist/detectors/agreement-slip.d.ts +32 -0
  76. package/dist/detectors/agreement-slip.d.ts.map +1 -0
  77. package/dist/detectors/agreement-slip.js +137 -0
  78. package/dist/detectors/agreement-slip.js.map +1 -0
  79. package/dist/detectors/char-shape.d.ts.map +1 -1
  80. package/dist/detectors/char-shape.js +16 -6
  81. package/dist/detectors/char-shape.js.map +1 -1
  82. package/dist/detectors/content-morphemes.d.ts +4 -0
  83. package/dist/detectors/content-morphemes.d.ts.map +1 -0
  84. package/dist/detectors/content-morphemes.js +12 -0
  85. package/dist/detectors/content-morphemes.js.map +1 -0
  86. package/dist/detectors/en-shape.d.ts +0 -1
  87. package/dist/detectors/en-shape.d.ts.map +1 -1
  88. package/dist/detectors/en-shape.js +2 -143
  89. package/dist/detectors/en-shape.js.map +1 -1
  90. package/dist/detectors/enumerated-runs.d.ts.map +1 -1
  91. package/dist/detectors/enumerated-runs.js +4 -2
  92. package/dist/detectors/enumerated-runs.js.map +1 -1
  93. package/dist/detectors/gram-place.js +1 -1
  94. package/dist/detectors/gram-place.js.map +1 -1
  95. package/dist/detectors/heading-case.d.ts.map +1 -1
  96. package/dist/detectors/heading-case.js +3 -1
  97. package/dist/detectors/heading-case.js.map +1 -1
  98. package/dist/detectors/heading-echo.d.ts.map +1 -1
  99. package/dist/detectors/heading-echo.js +12 -18
  100. package/dist/detectors/heading-echo.js.map +1 -1
  101. package/dist/detectors/heading-overlap.d.ts +13 -0
  102. package/dist/detectors/heading-overlap.d.ts.map +1 -0
  103. package/dist/detectors/heading-overlap.js +52 -0
  104. package/dist/detectors/heading-overlap.js.map +1 -0
  105. package/dist/detectors/index.d.ts.map +1 -1
  106. package/dist/detectors/index.js +10 -4
  107. package/dist/detectors/index.js.map +1 -1
  108. package/dist/detectors/letter-joined-name.d.ts +13 -0
  109. package/dist/detectors/letter-joined-name.d.ts.map +1 -0
  110. package/dist/detectors/letter-joined-name.js +11 -0
  111. package/dist/detectors/letter-joined-name.js.map +1 -0
  112. package/dist/detectors/lettered-index.d.ts +9 -0
  113. package/dist/detectors/lettered-index.d.ts.map +1 -0
  114. package/dist/detectors/lettered-index.js +54 -0
  115. package/dist/detectors/lettered-index.js.map +1 -0
  116. package/dist/detectors/lexicon.d.ts +5 -1
  117. package/dist/detectors/lexicon.d.ts.map +1 -1
  118. package/dist/detectors/lexicon.js +51 -5
  119. package/dist/detectors/lexicon.js.map +1 -1
  120. package/dist/detectors/orthography.d.ts.map +1 -1
  121. package/dist/detectors/orthography.js +24 -6
  122. package/dist/detectors/orthography.js.map +1 -1
  123. package/dist/detectors/oxford-comma.d.ts +3 -0
  124. package/dist/detectors/oxford-comma.d.ts.map +1 -0
  125. package/dist/detectors/oxford-comma.js +340 -0
  126. package/dist/detectors/oxford-comma.js.map +1 -0
  127. package/dist/detectors/phrase-match.d.ts +3 -1
  128. package/dist/detectors/phrase-match.d.ts.map +1 -1
  129. package/dist/detectors/phrase-match.js +20 -15
  130. package/dist/detectors/phrase-match.js.map +1 -1
  131. package/dist/detectors/repeated-head.d.ts.map +1 -1
  132. package/dist/detectors/repeated-head.js +5 -4
  133. package/dist/detectors/repeated-head.js.map +1 -1
  134. package/dist/detectors/signals.d.ts.map +1 -1
  135. package/dist/detectors/signals.js +45 -16
  136. package/dist/detectors/signals.js.map +1 -1
  137. package/dist/detectors/stacked-hedge.d.ts +16 -0
  138. package/dist/detectors/stacked-hedge.d.ts.map +1 -0
  139. package/dist/detectors/stacked-hedge.js +67 -0
  140. package/dist/detectors/stacked-hedge.js.map +1 -0
  141. package/dist/detectors/stray-space.d.ts +7 -0
  142. package/dist/detectors/stray-space.d.ts.map +1 -0
  143. package/dist/detectors/stray-space.js +34 -0
  144. package/dist/detectors/stray-space.js.map +1 -0
  145. package/dist/detectors/structure.d.ts +3 -1
  146. package/dist/detectors/structure.d.ts.map +1 -1
  147. package/dist/detectors/structure.js +4 -2
  148. package/dist/detectors/structure.js.map +1 -1
  149. package/dist/detectors/superlative-amount.d.ts +9 -0
  150. package/dist/detectors/superlative-amount.d.ts.map +1 -0
  151. package/dist/detectors/superlative-amount.js +20 -0
  152. package/dist/detectors/superlative-amount.js.map +1 -0
  153. package/dist/detectors/superlative-clause.d.ts +18 -0
  154. package/dist/detectors/superlative-clause.d.ts.map +1 -0
  155. package/dist/detectors/superlative-clause.js +61 -0
  156. package/dist/detectors/superlative-clause.js.map +1 -0
  157. package/dist/detectors/superlative-scope.d.ts +6 -0
  158. package/dist/detectors/superlative-scope.d.ts.map +1 -1
  159. package/dist/detectors/superlative-scope.js +3 -3
  160. package/dist/detectors/superlative-scope.js.map +1 -1
  161. package/dist/detectors/team.d.ts +0 -6
  162. package/dist/detectors/team.d.ts.map +1 -1
  163. package/dist/detectors/team.js +17 -1
  164. package/dist/detectors/team.js.map +1 -1
  165. package/dist/detectors/token-shape.d.ts.map +1 -1
  166. package/dist/detectors/token-shape.js +8 -6
  167. package/dist/detectors/token-shape.js.map +1 -1
  168. package/dist/document.d.ts +3 -0
  169. package/dist/document.d.ts.map +1 -1
  170. package/dist/document.js +33 -6
  171. package/dist/document.js.map +1 -1
  172. package/dist/eval.js +1 -1
  173. package/dist/eval.js.map +1 -1
  174. package/dist/feedback/draft.js +1 -1
  175. package/dist/feedback/draft.js.map +1 -1
  176. package/dist/feedback/excerpt.d.ts +0 -1
  177. package/dist/feedback/excerpt.d.ts.map +1 -1
  178. package/dist/feedback/excerpt.js +2 -2
  179. package/dist/feedback/excerpt.js.map +1 -1
  180. package/dist/file-header.d.ts +20 -0
  181. package/dist/file-header.d.ts.map +1 -0
  182. package/dist/file-header.js +21 -0
  183. package/dist/file-header.js.map +1 -0
  184. package/dist/files.js +3 -3
  185. package/dist/files.js.map +1 -1
  186. package/dist/genre-check.js +1 -1
  187. package/dist/genre-check.js.map +1 -1
  188. package/dist/genre-load.d.ts +6 -0
  189. package/dist/genre-load.d.ts.map +1 -0
  190. package/dist/genre-load.js +22 -0
  191. package/dist/genre-load.js.map +1 -0
  192. package/dist/genre-parse.d.ts +44 -0
  193. package/dist/genre-parse.d.ts.map +1 -0
  194. package/dist/genre-parse.js +117 -0
  195. package/dist/genre-parse.js.map +1 -0
  196. package/dist/genre-suggest.d.ts +15 -0
  197. package/dist/genre-suggest.d.ts.map +1 -0
  198. package/dist/genre-suggest.js +40 -0
  199. package/dist/genre-suggest.js.map +1 -0
  200. package/dist/genre.d.ts +1 -1
  201. package/dist/genre.d.ts.map +1 -1
  202. package/dist/genre.js +3 -13
  203. package/dist/genre.js.map +1 -1
  204. package/dist/init-choice.d.ts +12 -0
  205. package/dist/init-choice.d.ts.map +1 -0
  206. package/dist/init-choice.js +41 -0
  207. package/dist/init-choice.js.map +1 -0
  208. package/dist/init.d.ts.map +1 -1
  209. package/dist/init.js +16 -5
  210. package/dist/init.js.map +1 -1
  211. package/dist/judge.d.ts +2 -1
  212. package/dist/judge.d.ts.map +1 -1
  213. package/dist/judge.js +1 -1
  214. package/dist/judge.js.map +1 -1
  215. package/dist/line-paragraphs.d.ts +4 -0
  216. package/dist/line-paragraphs.d.ts.map +1 -0
  217. package/dist/line-paragraphs.js +71 -0
  218. package/dist/line-paragraphs.js.map +1 -0
  219. package/dist/mask.d.ts.map +1 -1
  220. package/dist/mask.js +2 -10
  221. package/dist/mask.js.map +1 -1
  222. package/dist/number-name.js +1 -1
  223. package/dist/number-name.js.map +1 -1
  224. package/dist/opening-line.d.ts +3 -0
  225. package/dist/opening-line.d.ts.map +1 -0
  226. package/dist/opening-line.js +14 -0
  227. package/dist/opening-line.js.map +1 -0
  228. package/dist/orthography.d.ts +5 -1
  229. package/dist/orthography.d.ts.map +1 -1
  230. package/dist/orthography.js +7 -1
  231. package/dist/orthography.js.map +1 -1
  232. package/dist/paragraph-length.d.ts +7 -0
  233. package/dist/paragraph-length.d.ts.map +1 -0
  234. package/dist/paragraph-length.js +10 -0
  235. package/dist/paragraph-length.js.map +1 -0
  236. package/dist/plugin.d.ts +12 -0
  237. package/dist/plugin.d.ts.map +1 -1
  238. package/dist/profile/check.d.ts +28 -0
  239. package/dist/profile/check.d.ts.map +1 -0
  240. package/dist/profile/check.js +12 -0
  241. package/dist/profile/check.js.map +1 -0
  242. package/dist/profile/for-file.d.ts +2 -2
  243. package/dist/profile/for-file.d.ts.map +1 -1
  244. package/dist/profile/for-file.js +9 -2
  245. package/dist/profile/for-file.js.map +1 -1
  246. package/dist/profile/load.js +1 -1
  247. package/dist/profile/load.js.map +1 -1
  248. package/dist/profile/select.d.ts +4 -2
  249. package/dist/profile/select.d.ts.map +1 -1
  250. package/dist/profile/select.js +8 -3
  251. package/dist/profile/select.js.map +1 -1
  252. package/dist/quoted-span.d.ts +13 -3
  253. package/dist/quoted-span.d.ts.map +1 -1
  254. package/dist/quoted-span.js +16 -11
  255. package/dist/quoted-span.js.map +1 -1
  256. package/dist/reasons.d.ts +1 -0
  257. package/dist/reasons.d.ts.map +1 -1
  258. package/dist/reasons.js +4 -1
  259. package/dist/reasons.js.map +1 -1
  260. package/dist/render/compact.d.ts.map +1 -1
  261. package/dist/render/compact.js +1 -2
  262. package/dist/render/compact.js.map +1 -1
  263. package/dist/render/eval.d.ts.map +1 -1
  264. package/dist/render/eval.js +4 -3
  265. package/dist/render/eval.js.map +1 -1
  266. package/dist/render/friendly.d.ts +2 -1
  267. package/dist/render/friendly.d.ts.map +1 -1
  268. package/dist/render/friendly.js +14 -6
  269. package/dist/render/friendly.js.map +1 -1
  270. package/dist/render/genres.d.ts +5 -0
  271. package/dist/render/genres.d.ts.map +1 -0
  272. package/dist/render/genres.js +28 -0
  273. package/dist/render/genres.js.map +1 -0
  274. package/dist/render/plural.d.ts +3 -0
  275. package/dist/render/plural.d.ts.map +1 -0
  276. package/dist/render/plural.js +5 -0
  277. package/dist/render/plural.js.map +1 -0
  278. package/dist/render/rules-json.d.ts.map +1 -1
  279. package/dist/render/rules-json.js +9 -3
  280. package/dist/render/rules-json.js.map +1 -1
  281. package/dist/render/semantic.d.ts +3 -2
  282. package/dist/render/semantic.d.ts.map +1 -1
  283. package/dist/render/semantic.js +94 -34
  284. package/dist/render/semantic.js.map +1 -1
  285. package/dist/render/summary.d.ts.map +1 -1
  286. package/dist/render/summary.js +4 -3
  287. package/dist/render/summary.js.map +1 -1
  288. package/dist/render/suppressions.d.ts.map +1 -1
  289. package/dist/render/suppressions.js +3 -2
  290. package/dist/render/suppressions.js.map +1 -1
  291. package/dist/render/text.d.ts +2 -0
  292. package/dist/render/text.d.ts.map +1 -1
  293. package/dist/render/text.js +11 -3
  294. package/dist/render/text.js.map +1 -1
  295. package/dist/rule-load.d.ts.map +1 -1
  296. package/dist/rule-load.js +12 -1
  297. package/dist/rule-load.js.map +1 -1
  298. package/dist/run-semantic.d.ts +3 -1
  299. package/dist/run-semantic.d.ts.map +1 -1
  300. package/dist/run-semantic.js +9 -4
  301. package/dist/run-semantic.js.map +1 -1
  302. package/dist/run.d.ts +4 -0
  303. package/dist/run.d.ts.map +1 -1
  304. package/dist/run.js +29 -16
  305. package/dist/run.js.map +1 -1
  306. package/dist/semantic.d.ts +1 -1
  307. package/dist/semantic.d.ts.map +1 -1
  308. package/dist/semantic.js +10 -3
  309. package/dist/semantic.js.map +1 -1
  310. package/dist/sentence-shape.d.ts +0 -1
  311. package/dist/sentence-shape.d.ts.map +1 -1
  312. package/dist/sentence-shape.js +3 -5
  313. package/dist/sentence-shape.js.map +1 -1
  314. package/dist/setting-problems.d.ts +5 -0
  315. package/dist/setting-problems.d.ts.map +1 -0
  316. package/dist/setting-problems.js +15 -0
  317. package/dist/setting-problems.js.map +1 -0
  318. package/dist/span-merge.d.ts +4 -0
  319. package/dist/span-merge.d.ts.map +1 -0
  320. package/dist/span-merge.js +12 -0
  321. package/dist/span-merge.js.map +1 -0
  322. package/dist/speaker-labels.d.ts +4 -0
  323. package/dist/speaker-labels.d.ts.map +1 -0
  324. package/dist/speaker-labels.js +106 -0
  325. package/dist/speaker-labels.js.map +1 -0
  326. package/dist/stray-space.d.ts +17 -0
  327. package/dist/stray-space.d.ts.map +1 -0
  328. package/dist/stray-space.js +66 -0
  329. package/dist/stray-space.js.map +1 -0
  330. package/dist/structure/build.js +5 -5
  331. package/dist/structure/build.js.map +1 -1
  332. package/dist/structure/cite.js +1 -1
  333. package/dist/structure/cite.js.map +1 -1
  334. package/dist/structure/issues.d.ts.map +1 -1
  335. package/dist/structure/issues.js +5 -5
  336. package/dist/structure/issues.js.map +1 -1
  337. package/dist/structure/markdown-path.d.ts.map +1 -1
  338. package/dist/structure/markdown-path.js +2 -2
  339. package/dist/structure/markdown-path.js.map +1 -1
  340. package/dist/structure/numbering.d.ts.map +1 -1
  341. package/dist/structure/numbering.js +1 -1
  342. package/dist/structure/numbering.js.map +1 -1
  343. package/dist/structure/relative-find.js +1 -1
  344. package/dist/structure/relative-find.js.map +1 -1
  345. package/dist/structure/relative-resolve.d.ts.map +1 -1
  346. package/dist/structure/relative-resolve.js +26 -20
  347. package/dist/structure/relative-resolve.js.map +1 -1
  348. package/dist/structure/sexp.js +1 -1
  349. package/dist/structure/sexp.js.map +1 -1
  350. package/dist/structure/unnumbered.js +2 -2
  351. package/dist/structure/unnumbered.js.map +1 -1
  352. package/dist/team-names.d.ts +9 -0
  353. package/dist/team-names.d.ts.map +1 -0
  354. package/dist/team-names.js +31 -0
  355. package/dist/team-names.js.map +1 -0
  356. package/dist/ui.d.ts +2 -0
  357. package/dist/ui.d.ts.map +1 -1
  358. package/dist/ui.js +6 -0
  359. package/dist/ui.js.map +1 -1
  360. package/dist/version.js +1 -1
  361. package/dist/version.js.map +1 -1
  362. package/dist/watch.d.ts +2 -2
  363. package/dist/watch.d.ts.map +1 -1
  364. package/dist/watch.js +5 -5
  365. package/dist/watch.js.map +1 -1
  366. package/genres.yaml +395 -0
  367. package/package.json +4 -3
  368. package/rules/adverb-overuse.yaml +2 -2
  369. package/rules/agentless-passive.yaml +1 -1
  370. package/rules/agreement-slip.yaml +36 -0
  371. package/rules/ai-generated-composite.yaml +2 -2
  372. package/rules/ai-tell.yaml +2 -2
  373. package/rules/bold-density.yaml +2 -2
  374. package/rules/closing-cliche.yaml +1 -1
  375. package/rules/concrete-evidence-density.yaml +2 -2
  376. package/rules/contraction-consistency.yaml +1 -1
  377. package/rules/cushion-phrase-density.yaml +1 -1
  378. package/rules/dangling-reference.yaml +1 -1
  379. package/rules/date-order.yaml +1 -1
  380. package/rules/date-weekday-mismatch.yaml +1 -1
  381. package/rules/double-keigo.yaml +1 -1
  382. package/rules/doubled-word.yaml +1 -1
  383. package/rules/duplicate-definition.yaml +1 -1
  384. package/rules/emoji-density.yaml +1 -1
  385. package/rules/empty-conclusion.yaml +3 -1
  386. package/rules/empty-intensifier.yaml +1 -1
  387. package/rules/excessive-hedging.yaml +16 -6
  388. package/rules/expletive-construction.yaml +2 -2
  389. package/rules/heading-echo.yaml +2 -1
  390. package/rules/hiragana-fukushi.yaml +1 -1
  391. package/rules/internal-jargon.yaml +2 -2
  392. package/rules/latin-spacing.yaml +5 -4
  393. package/rules/max-kanji-continuous.yaml +4 -3
  394. package/rules/max-paragraph-length.yaml +18 -4
  395. package/rules/max-sentence-length.yaml +18 -2
  396. package/rules/ngram-repetition.yaml +4 -4
  397. package/rules/no-doubled-joshi.yaml +2 -2
  398. package/rules/no-em-dash.yaml +2 -2
  399. package/rules/no-mixed-desumasu.yaml +1 -1
  400. package/rules/no-nakaguro-parallel.yaml +2 -2
  401. package/rules/numbering-gap.yaml +1 -1
  402. package/rules/oxford-comma-consistency.yaml +2 -1
  403. package/rules/padded-intro.yaml +2 -1
  404. package/rules/paragraph-length-variance.yaml +1 -1
  405. package/rules/preamble-length.yaml +2 -2
  406. package/rules/preferred-term.yaml +1 -1
  407. package/rules/proper-noun-density.yaml +3 -2
  408. package/rules/repeated-conjunction.yaml +2 -2
  409. package/rules/repeated-sentence-head.yaml +2 -2
  410. package/rules/required-sections.yaml +1 -1
  411. package/rules/rule-of-three.yaml +2 -2
  412. package/rules/sasete-itadaku.yaml +3 -3
  413. package/rules/section-length-uniformity.yaml +1 -1
  414. package/rules/sentence-initial-conjunction-run.yaml +2 -2
  415. package/rules/sentence-rhythm.yaml +1 -1
  416. package/rules/stray-space.yaml +38 -0
  417. package/rules/taigen-dome-in-prose.yaml +2 -2
  418. package/rules/title-case-consistency.yaml +1 -1
  419. package/rules/total-mismatch.yaml +1 -1
  420. package/rules/undefined-acronym.yaml +5 -4
  421. package/rules/unqualified-superlative.yaml +2 -2
  422. package/skills/chaff/SKILL.md +28 -9
  423. package/src/address-chain.ts +1 -1
  424. package/src/backends/anthropic.ts +5 -1
  425. package/src/backends/openai.ts +2 -1
  426. package/src/backends/types.ts +3 -2
  427. package/src/baseline.ts +1 -1
  428. package/src/calendar-number.ts +84 -0
  429. package/src/cli-args.ts +2 -2
  430. package/src/cli-text.ts +29 -15
  431. package/src/cli.ts +42 -41
  432. package/src/closing-numbers.ts +72 -0
  433. package/src/commands/cite.ts +4 -4
  434. package/src/commands/eval.ts +1 -1
  435. package/src/commands/init-ask.ts +53 -0
  436. package/src/commands/test.ts +118 -56
  437. package/src/commands/tree.ts +7 -6
  438. package/src/config/by-path.ts +8 -9
  439. package/src/config/load.ts +24 -0
  440. package/src/config/name-problems.ts +15 -0
  441. package/src/date-stamp.ts +1 -1
  442. package/src/detectors/acronym-context.ts +16 -0
  443. package/src/detectors/acronym-expansion.ts +132 -1
  444. package/src/detectors/agreement-slip.ts +191 -0
  445. package/src/detectors/char-shape.ts +21 -9
  446. package/src/detectors/content-morphemes.ts +19 -0
  447. package/src/detectors/en-shape.ts +2 -173
  448. package/src/detectors/enumerated-runs.ts +3 -2
  449. package/src/detectors/gram-place.ts +1 -1
  450. package/src/detectors/heading-case.ts +4 -1
  451. package/src/detectors/heading-echo.ts +12 -20
  452. package/src/detectors/heading-overlap.ts +65 -0
  453. package/src/detectors/index.ts +10 -4
  454. package/src/detectors/letter-joined-name.ts +15 -0
  455. package/src/detectors/lettered-index.ts +78 -0
  456. package/src/detectors/lexicon.ts +69 -8
  457. package/src/detectors/orthography.ts +31 -7
  458. package/src/detectors/oxford-comma.ts +402 -0
  459. package/src/detectors/phrase-match.ts +23 -12
  460. package/src/detectors/repeated-head.ts +3 -4
  461. package/src/detectors/signals.ts +47 -15
  462. package/src/detectors/stacked-hedge.ts +96 -0
  463. package/src/detectors/stray-space.ts +40 -0
  464. package/src/detectors/structure.ts +10 -2
  465. package/src/detectors/superlative-amount.ts +24 -0
  466. package/src/detectors/superlative-clause.ts +82 -0
  467. package/src/detectors/superlative-scope.ts +3 -3
  468. package/src/detectors/team.ts +18 -2
  469. package/src/detectors/token-shape.ts +8 -10
  470. package/src/document.ts +54 -7
  471. package/src/eval.ts +1 -1
  472. package/src/feedback/draft.ts +1 -1
  473. package/src/feedback/excerpt.ts +2 -2
  474. package/src/file-header.ts +31 -0
  475. package/src/files.ts +3 -3
  476. package/src/genre-check.ts +1 -1
  477. package/src/genre-load.ts +24 -0
  478. package/src/genre-parse.ts +151 -0
  479. package/src/genre-suggest.ts +50 -0
  480. package/src/genre.ts +4 -13
  481. package/src/init-choice.ts +47 -0
  482. package/src/init.ts +20 -6
  483. package/src/judge.ts +3 -1
  484. package/src/line-paragraphs.ts +86 -0
  485. package/src/mask.ts +2 -12
  486. package/src/number-name.ts +1 -1
  487. package/src/opening-line.ts +17 -0
  488. package/src/orthography.ts +10 -2
  489. package/src/paragraph-length.ts +9 -0
  490. package/src/plugin.ts +12 -0
  491. package/src/profile/check.ts +34 -0
  492. package/src/profile/for-file.ts +10 -3
  493. package/src/profile/load.ts +1 -1
  494. package/src/profile/select.ts +11 -4
  495. package/src/quoted-span.ts +26 -12
  496. package/src/reasons.ts +5 -1
  497. package/src/render/compact.ts +1 -3
  498. package/src/render/eval.ts +4 -3
  499. package/src/render/friendly.ts +21 -6
  500. package/src/render/genres.ts +31 -0
  501. package/src/render/plural.ts +6 -0
  502. package/src/render/rules-json.ts +10 -3
  503. package/src/render/semantic.ts +117 -34
  504. package/src/render/summary.ts +4 -3
  505. package/src/render/suppressions.ts +3 -2
  506. package/src/render/text.ts +18 -3
  507. package/src/rule-load.ts +14 -1
  508. package/src/run-semantic.ts +29 -21
  509. package/src/run.ts +33 -16
  510. package/src/semantic.ts +11 -3
  511. package/src/sentence-shape.ts +3 -7
  512. package/src/setting-problems.ts +24 -0
  513. package/src/span-merge.ts +13 -0
  514. package/src/speaker-labels.ts +129 -0
  515. package/src/stray-space.ts +81 -0
  516. package/src/structure/build.ts +5 -5
  517. package/src/structure/cite.ts +1 -1
  518. package/src/structure/issues.ts +6 -5
  519. package/src/structure/markdown-path.ts +2 -2
  520. package/src/structure/numbering.ts +1 -1
  521. package/src/structure/relative-find.ts +1 -1
  522. package/src/structure/relative-resolve.ts +34 -19
  523. package/src/structure/sexp.ts +1 -1
  524. package/src/structure/unnumbered.ts +2 -2
  525. package/src/team-names.ts +39 -0
  526. package/src/ui.ts +7 -0
  527. package/src/version.ts +1 -1
  528. package/src/watch.ts +5 -5
@@ -1,12 +1,14 @@
1
1
  import { proseText } from "../measure.js";
2
- import { wordsOf } from "./structure.js";
2
+ import { dateSpans, wordsOf } from "./structure.js";
3
3
  import { compacted, placeOf } from "./gram-place.js";
4
4
  import { notAcronymSpansOf } from "./acronym-context.js";
5
- import { expansionAt } from "./acronym-expansion.js";
5
+ import { expansionAt, termEntryAcronyms } from "./acronym-expansion.js";
6
6
  import { isExplained } from "./acronym-compound.js";
7
7
  import { conjugatedForms } from "./conjugated-form.js";
8
8
  import { evidenceSpans, hasNumeral, startsWithin } from "./concrete-evidence.js";
9
+ import { letteredIndexEntries } from "./lettered-index.js";
9
10
  import { hasPredicateIn } from "./gram-predicate.js";
11
+ import { nameSpans, touchesAny } from "../team-names.js";
10
12
  const PER = 1000;
11
13
  /**
12
14
  * これより短い文書では密度が暴れる。1 個で「1000 あたり 100」になる。
@@ -50,9 +52,13 @@ export const emojiDensity = (doc, options) => {
50
52
  * 実文書(英語 11 本)で 8 文字にしたら、上位は " generat"(generate)のような**語の断片**だった。
51
53
  */
52
54
  const GRAM = { char: 8, word: 20 };
53
- const countGrams = (text, width) => {
55
+ /** 並べた名前にかかる語句は数えない。名前が繰り返されれば、その前後(「the …」)も一緒に繰り返されるのは当たり前。 */
56
+ const countGrams = (text, width, names) => {
54
57
  const counts = new Map();
58
+ const named = nameSpans(text, names);
55
59
  Array.from({ length: Math.max(0, text.length - width + 1) }).forEach((_, index) => {
60
+ if (touchesAny(named, index, index + width))
61
+ return;
56
62
  const gram = text.slice(index, index + width);
57
63
  counts.set(gram, (counts.get(gram) ?? 0) + 1);
58
64
  });
@@ -78,7 +84,8 @@ const gramsOf = (doc) => {
78
84
  const counts = new Map();
79
85
  doc.sentences.forEach((sentence) => {
80
86
  const text = doc.lengthUnit === "char" ? proseText(sentence).replace(/\s+/gu, "") : proseText(sentence);
81
- countGrams(text, GRAM[doc.lengthUnit]).forEach((count, gram) => counts.set(gram, (counts.get(gram) ?? 0) + count));
87
+ const names = doc.lengthUnit === "char" ? (doc.names ?? []).map((name) => name.replace(/\s+/gu, "")) : (doc.names ?? []);
88
+ countGrams(text, GRAM[doc.lengthUnit], names).forEach((count, gram) => counts.set(gram, (counts.get(gram) ?? 0) + count));
82
89
  });
83
90
  return counts;
84
91
  };
@@ -102,7 +109,7 @@ export const ngramRepetition = (doc, options) => {
102
109
  const sentenceWith = (gram) => doc.sentences.find((sentence) => gramText(sentence, doc.lengthUnit).includes(gram));
103
110
  const worst = [...gramsOf(doc).entries()]
104
111
  .filter(([gram, count]) => count > options.limit && isPhrasing(gram, doc.lengthUnit))
105
- .sort(([, left], [, right]) => right - left)
112
+ .toSorted(([, left], [, right]) => right - left)
106
113
  .map(([gram, count]) => ({ gram, count, at: sentenceWith(gram) }))
107
114
  .find(({ gram, at }) => at === undefined || hasPredicate(gram, at, doc.lengthUnit));
108
115
  if (worst === undefined)
@@ -162,12 +169,30 @@ const spansOf = (text, notation) => [
162
169
  ...[SHOUTED_PAIR, QUOTED_CAPS, REQUIREMENT_WORD, LICENCE].flatMap((pattern) => [...text.matchAll(pattern)].map(spanOf)),
163
170
  ...notation(text),
164
171
  ];
172
+ /**
173
+ * 言語パッケージが、大文字で書いて強調した普通の語(will NEVER call)と読んだ語。辞書がその語を名前になり得ない品詞でしか
174
+ * 知らないときだけ、そう読む。品詞を持たない言語パッケージでは何も外れない。
175
+ */
176
+ const isEmphasised = (sentence, offset) => (sentence.tokens ?? []).some((token) => token.span.start === offset && token.features?.["Emph"] === "Yes");
177
+ /** チームが並べた名前の中の略語(NTT Docomo の NTT)は、名前の一部であって説明を待つ略語ではない。 */
165
178
  const acronymsOf = (doc, notation) => doc.sentences.flatMap((sentence) => {
166
- const excluded = spansOf(sentence.text, notation);
179
+ const excluded = [...spansOf(sentence.text, notation), ...nameSpans(sentence.text, doc.names ?? [])];
167
180
  return [...sentence.text.matchAll(ACRONYM)]
168
181
  .filter((match) => !excluded.some((span) => span.start <= match.index && match.index + match[0].length <= span.end))
169
- .map((match) => ({ word: match[0], hit: { sentence, offset: sentence.span.start + match.index } }));
182
+ .map((match) => ({ word: match[0], hit: { sentence, offset: sentence.span.start + match.index } }))
183
+ .filter(({ hit }) => !isEmphasised(hit.sentence, hit.offset));
170
184
  });
185
+ /** 略語ごとの、最初に現れた所。 */
186
+ const firstHits = (hits) => {
187
+ const seen = new Map();
188
+ hits.forEach(({ word, hit }) => {
189
+ if (!seen.has(word))
190
+ seen.set(word, hit);
191
+ });
192
+ return seen;
193
+ };
194
+ /** 日付の中の月(SEP 01, 2022)は略語ではない。 */
195
+ const outsideDates = (hits, dates) => hits.filter(({ hit }) => !dates.some((span) => span.start <= hit.offset && hit.offset < span.end));
171
196
  /**
172
197
  * どこか 1 か所で展開してあればよい。初出が節の見出し代わりの語(「5.3. DPA.」)で、
173
198
  * 展開がその直後の文にあることが契約書では普通にある。見るのは語として現れた所だけ(CISA の中の CI は見ない)。
@@ -182,6 +207,7 @@ const notationOf = (doc) => notAcronymSpansOf({
182
207
  emphasis: patternsOf(doc, "emphasis-word"),
183
208
  divisions: patternsOf(doc, "numbered-division"),
184
209
  honorifics: patternsOf(doc, "honorific"),
210
+ titles: patternsOf(doc, "name-title"),
185
211
  dateTimeUnits: patternsOf(doc, "date-time-unit"),
186
212
  });
187
213
  /** 定義の語は、語彙表の形(という)と、この文書で活用して書かれた形(といいます)の両方で照らす。 */
@@ -192,15 +218,17 @@ const definitionVerbsOf = (doc) => {
192
218
  export const undefinedAcronym = (doc, options) => {
193
219
  const body = bodyOf(doc);
194
220
  // HTTP のメソッド名(GET)は略語ではないので、通じる略語と同じく展開を求めない。
195
- const common = new Set([...(options.lexicon ?? []).map((entry) => entry.pattern), ...patternsOf(doc, "http-method")]);
196
- const seen = new Map();
197
- acronymsOf(doc, notationOf(doc)).forEach(({ word, hit }) => {
198
- if (!seen.has(word))
199
- seen.set(word, hit);
200
- });
221
+ // 並べた名前(JAXA)も、繋いだ略語(JAXA-ISAS)の片割れとして説明済みに数える。
222
+ const common = new Set([...(options.lexicon ?? []).map((entry) => entry.pattern), ...patternsOf(doc, "http-method"), ...(doc.names ?? [])]);
201
223
  const expandedAt = expansionAt({ markers: patternsOf(doc, "definition-marker"), verbs: definitionVerbsOf(doc) });
202
- const explainedAlone = (word) => common.has(word) || isExpanded(body, word, expandedAt);
203
- const bare = [...seen.entries()].filter(([acronym]) => !isExplained(acronym, explainedAlone));
224
+ const entries = termEntryAcronyms(doc.source);
225
+ const explainedAlone = (word) => common.has(word) || entries.has(word) || isExpanded(body, word, expandedAt);
226
+ const hits = acronymsOf(doc, notationOf(doc));
227
+ const unexplained = new Set([...firstHits(hits).keys()].filter((acronym) => !isExplained(acronym, explainedAlone)));
228
+ // 日付を読むには文書の木を作る。上限に届かない文書では作らない。
229
+ if (unexplained.size < options.limit)
230
+ return [];
231
+ const bare = [...firstHits(outsideDates(hits, dateSpans(doc)))].filter(([acronym]) => unexplained.has(acronym));
204
232
  if (bare.length < options.limit)
205
233
  return [];
206
234
  return bare.map(([acronym, hit]) => ({
@@ -230,7 +258,8 @@ const openingOf = (sentence, unit) => {
230
258
  };
231
259
  const hasNumeralIn = (section) => section.sentences.some((sentence) => hasNumeral(sentence.tokens ?? []));
232
260
  export const concreteEvidence = (doc, options) => {
233
- const sections = doc.sections.filter((section) => section.sentences.length >= 3);
261
+ const entries = letteredIndexEntries(doc.sections);
262
+ const sections = doc.sections.filter((section) => section.sentences.length >= 3 && !entries.has(section));
234
263
  const bare = sections.filter((section) => !CONCRETE.test(doc.source.slice(section.span.start, section.span.end)) && !hasNumeralIn(section) && !startsWithin(section.span, doc.links));
235
264
  // 構造の木は作るのに手間がかかる。指摘に届かない文書では作らない。
236
265
  const nodes = bare.length < options.limit ? [] : evidenceSpans(doc.structure);
@@ -1 +1 @@
1
- {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/detectors/signals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/detectors/signals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAmB,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,GAAG,GAAG,IAAI,CAAC;AAEjB;;;GAGG;AACH,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAEvC,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAU,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAItF,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAE,OAAe,EAAS,EAAE,CAC5D,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE7J,MAAM,OAAO,GAAG,CAAC,GAAkB,EAAE,KAAa,EAAU,EAAE;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,KAAK,GAAG,sCAAsC,CAAC;AAErD,MAAM,CAAC,MAAM,YAAY,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACpG,OAAO;QACL;YACE,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;SAC1F;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH;;;GAGG;AACH,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAEnC,iEAAiE;AACjE,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,KAAwB,EAAuB,EAAE;IAChG,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAChF,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;YAAE,OAAO;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH;;;;GAIG;AACH,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AAE3E,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,IAAiC,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE7G,mDAAmD;AACnD,MAAM,OAAO,GAAG,CAAC,GAAkB,EAAuB,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxG,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACzH,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5H,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,0CAA0C;AAC1C,MAAM,QAAQ,GAAG,CAAC,QAAkB,EAAE,IAAiC,EAAU,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;AAExH;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,QAAkB,EAAE,IAAiC,EAAW,EAAE;IACpG,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACnI,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IACnE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IACpD,MAAM,YAAY,GAAG,CAAC,IAAY,EAAwB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACjJ,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;SACpF,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;SAC/C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACjE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACtF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,OAAO;QACL;YACE,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI;YACpC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;SACpG;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA,oBAAoB,CAAC;AACnD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA,mBAAmB,CAAC;AACjD,6DAA6D;AAC7D,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA,iCAAiC,WAAW,IAAI,CAAC;AAChF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,GAAG,WAAW,GAAG,YAAY,OAAO,YAAY,KAAK,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;AAE9G;;;;;;;;GAQG;AACH,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA,oBAAoB,CAAC;AACjD,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA,SAAS,WAAW,GAAG,CAAC,IAAI,CAAC;AAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA,aAAa,CAAC;AACzC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,GAAG,WAAW,GAAG,SAAS,MAAM,QAAQ,GAAG,SAAS,QAAQ,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;AACxH,uEAAuE;AACvE,MAAM,YAAY,GAAG,IAAI,MAAM,CAC7B,MAAM,CAAC,GAAG,CAAA,GAAG,WAAW,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,IAAI,SAAS,GAAG,QAAQ,GAAG,cAAc,IAAI,UAAU,EAAE,EAC5H,IAAI,CACL,CAAC;AACF,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,SAAS,SAAS,SAAS,SAAS,UAAU,EAAE,IAAI,CAAC,CAAC;AAE/F,6CAA6C;AAC7C,MAAM,gBAAgB,GAAG,IAAI,MAAM,CACjC,MAAM,CAAC,GAAG,CAAA,GAAG,WAAW,2FAA2F,UAAU,EAAE,EAC/H,IAAI,CACL,CAAC;AAEF,8DAA8D;AAC9D,MAAM,UAAU,GAAG,yEAAyE,CAAC;AAE7F,oDAAoD;AACpD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,GAAG,WAAW,0BAA0B,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;AAIjG,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE9G,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,QAAyB,EAAU,EAAE,CAAC;IACnE,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IAChG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IACrF,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvH,GAAG,QAAQ,CAAC,IAAI,CAAC;CAClB,CAAC;AAIF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,QAAkB,EAAE,MAAc,EAAW,EAAE,CACnE,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;AAE7G,8DAA8D;AAC9D,MAAM,UAAU,GAAG,CAAC,GAAkB,EAAE,QAAyB,EAAgB,EAAE,CACjF,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;IACjC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACxC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;SACnH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAClG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEL,qBAAqB;AACrB,MAAM,SAAS,GAAG,CAAC,IAA2B,EAAoB,EAAE;IAClE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;QAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,mCAAmC;AACnC,MAAM,YAAY,GAAG,CAAC,IAA2B,EAAE,KAAsB,EAAgB,EAAE,CACzF,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErG;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,UAAsB,EAAW,EAAE,CACpF,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAExI,MAAM,UAAU,GAAG,CAAC,GAAkB,EAAE,EAAU,EAAY,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAExH,MAAM,UAAU,GAAG,CAAC,GAAkB,EAAmB,EAAE,CACzD,iBAAiB,CAAC;IAChB,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC;IACrC,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC;IACvC,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC;IAC5C,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC;IAC1C,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC;IAC1C,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAC/C,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;IACrC,aAAa,EAAE,UAAU,CAAC,GAAG,EAAE,gBAAgB,CAAC;CACjD,CAAC,CAAC;AAEL,sDAAsD;AACtD,MAAM,iBAAiB,GAAG,CAAC,GAAkB,EAAY,EAAE;IACzD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IACpE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,8CAA8C;IAC9C,gDAAgD;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5I,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,mBAAmB,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjH,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9H,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACpH,kCAAkC;IAClC,IAAI,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAChH,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;QAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;KACxF,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AAErC;;;GAGG;AACH,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAEtC,MAAM,SAAS,GAAG,CAAC,QAA8B,EAAE,IAAiC,EAAU,EAAE;IAC9F,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,OAAO,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAClH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;AAE5H,MAAM,CAAC,MAAM,gBAAgB,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IACpE,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1G,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CACxJ,CAAC;IACF,mCAAmC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3E,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7B,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/F,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;YACpG,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;SAC3B;KACF,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,IAAI,GAAG,wBAAwB,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACpG,OAAO;QACL;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;SAC1F;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Lexicon, Sentence, Span } from "../plugin.ts";
2
+ /**
3
+ * 語彙表 3 つ。hedges は逃げの表現そのもの、frames はそれだけでは逃げていない包む言い方(「という状況です」、may)、
4
+ * scope は hedges のうち、どれだけ確かかではなくどこで成り立つかを言うもの(「場合がある」、in some cases)。
5
+ */
6
+ export type HedgeWords = {
7
+ readonly hedges: Lexicon;
8
+ readonly frames: Lexicon;
9
+ readonly scope: Lexicon;
10
+ };
11
+ export type StackedHedge = {
12
+ readonly sentence: Sentence;
13
+ readonly spans: readonly Span[];
14
+ };
15
+ export declare const stackedHedges: (sentences: readonly Sentence[], words: HedgeWords) => StackedHedge[];
16
+ //# sourceMappingURL=stacked-hedge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stacked-hedge.d.ts","sourceRoot":"","sources":["../../src/detectors/stacked-hedge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAS,MAAM,cAAc,CAAC;AAOnE;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAIzG,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,CAAC;AA4E5F,eAAO,MAAM,aAAa,GAAI,WAAW,SAAS,QAAQ,EAAE,EAAE,OAAO,UAAU,KAAG,YAAY,EAI1F,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { entryRanges } from "./lexicon-match.js";
2
+ import { isWithinAny, quotedIn, QUOTATION_MARKS } from "../quoted-span.js";
3
+ /** 重ねたと言うのに要る数。1 つなら慎重さで、2 つ目からは読み手が何を言い切ったのか分からなくなる。 */
4
+ const STACKED_AT = 2;
5
+ const rangesOf = (sentence, lexicon) => lexicon.flatMap((entry) => entryRanges(sentence, entry));
6
+ const contains = (outer, inner) => outer.start <= inner.start && inner.end <= outer.end;
7
+ const sameRange = (left, right) => left.start === right.start && left.end === right.end;
8
+ /**
9
+ * 同じ語に当たった見出しは 1 つに数える。「could」は「it could be」の一部。
10
+ * 同じ範囲に hedge と frame が両方当たったら hedge として残す(devices は hedge が先に並んでいる)。
11
+ */
12
+ const outermost = (devices) => devices.filter((device, index) => !devices.some((other, at) => at !== index && contains(other.range, device.range) && (!sameRange(other.range, device.range) || at < index)));
13
+ /** 語の並びの、文書全体の座標での範囲。 */
14
+ const spanOf = (tokens, range) => {
15
+ const first = tokens[range.start];
16
+ const last = tokens[range.end - 1];
17
+ return first === undefined || last === undefined ? undefined : { start: first.span.start, end: last.span.end };
18
+ };
19
+ /** 句読点と等位接続詞(and、but、及び)は節を切る。別の節の逃げは、同じ主張を二重にぼかしていない。 */
20
+ const CLAUSE_BREAK = new Set(["PUNCT", "CCONJ"]);
21
+ /** 語ごとの、文の頭から数えた節の番号。 */
22
+ const clauseOf = (tokens) => tokens.reduce((clauses, token) => {
23
+ clauses.push((clauses.at(-1) ?? 0) + (CLAUSE_BREAK.has(token.pos) ? 1 : 0));
24
+ return clauses;
25
+ }, []);
26
+ const PREDICATE = new Set(["VERB", "AUX"]);
27
+ /** 見せる範囲。活用する語で終わる見出し(と考えられる)は、後ろの助動詞(ます)まで含めて書いたとおりに見せる。 */
28
+ const shownEnd = (tokens, range) => {
29
+ const last = tokens[range.end - 1];
30
+ if (last === undefined || !PREDICATE.has(last.pos))
31
+ return range.end;
32
+ const stop = tokens.findIndex((token, at) => at >= range.end && token.pos !== "AUX");
33
+ return stop === -1 ? tokens.length : stop;
34
+ };
35
+ /** 書き手の言葉で、どこで成り立つかを言う語ではない見出し。引用(「」『』“” ")の中は話し手の言葉。 */
36
+ const devicesIn = (sentence, words) => {
37
+ const tokens = sentence.tokens ?? [];
38
+ const quoted = quotedIn(sentence, QUOTATION_MARKS);
39
+ const scope = rangesOf(sentence, words.scope);
40
+ const hedges = rangesOf(sentence, words.hedges).filter((range) => !scope.some((outer) => contains(outer, range)));
41
+ const devices = [...hedges.map((range) => ({ range, hedge: true })), ...rangesOf(sentence, words.frames).map((range) => ({ range, hedge: false }))];
42
+ return outermost(devices).filter((device) => {
43
+ const span = spanOf(tokens, device.range);
44
+ return span !== undefined && !isWithinAny(quoted, span);
45
+ });
46
+ };
47
+ /** 1 つの節に 2 つ以上あり、そのうち 1 つ以上が逃げの表現そのもの。包む言い方だけ(「という状況です」)は逃げていない。 */
48
+ const stackedClause = (devices, clauses) => {
49
+ const clauseAt = (device) => clauses[device.range.start] ?? 0;
50
+ const groups = [...new Set(devices.map(clauseAt))].map((clause) => devices.filter((device) => clauseAt(device) === clause));
51
+ return groups.find((group) => group.length >= STACKED_AT && group.some((device) => device.hedge)) ?? [];
52
+ };
53
+ /**
54
+ * 1 つの文の 1 つの節に、逃げの表現を重ねているか。business-blog-harness-spec §7.2。見せる範囲を文の中の順で返す。重ねていなければ空。
55
+ * 品詞が無ければ語の位置が分からないので何も言わない。
56
+ */
57
+ const stackedHedgeIn = (sentence, words) => {
58
+ const tokens = sentence.tokens ?? [];
59
+ return stackedClause(devicesIn(sentence, words), clauseOf(tokens))
60
+ .toSorted((left, right) => left.range.start - right.range.start)
61
+ .flatMap((device) => spanOf(tokens, { start: device.range.start, end: shownEnd(tokens, device.range) }) ?? []);
62
+ };
63
+ export const stackedHedges = (sentences, words) => sentences.flatMap((sentence) => {
64
+ const spans = stackedHedgeIn(sentence, words);
65
+ return spans.length === 0 ? [] : [{ sentence, spans }];
66
+ });
67
+ //# sourceMappingURL=stacked-hedge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stacked-hedge.js","sourceRoot":"","sources":["../../src/detectors/stacked-hedge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Detector } from "../plugin.ts";
2
+ /**
3
+ * 日本語の語句の途中の空白(「こころさんが 払った」「確認 しました」)。句点で終わる文だけを見る。
4
+ * 句点の無い行(歌、名札と値、表のような行)の空白は区切りとして書かれている。
5
+ */
6
+ export declare const straySpace: Detector;
7
+ //# sourceMappingURL=stray-space.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stray-space.d.ts","sourceRoot":"","sources":["../../src/detectors/stray-space.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,MAAM,cAAc,CAAC;AAetD;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,QAoBxB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { minorityStyle } from "../orthography.js";
2
+ import { isClosed } from "../sentence-shape.js";
3
+ import { phraseJoints } from "../stray-space.js";
4
+ const KINDS = ["between-phrases", "inside-phrase"];
5
+ /**
6
+ * 空けたほうが少ないときだけ、その空白を指摘する。空けたほうが多い文書(文節ごとに空ける分かち書き)は、
7
+ * その書き方を選んでいるので何も言わない。詰めた境目を「空け忘れ」とは言わない。どこで空けるかは書き手が決める。
8
+ */
9
+ const strays = (joints) => (minorityStyle(joints) === true ? joints.filter((joint) => joint.spaced) : []);
10
+ /**
11
+ * 日本語の語句の途中の空白(「こころさんが 払った」「確認 しました」)。句点で終わる文だけを見る。
12
+ * 句点の無い行(歌、名札と値、表のような行)の空白は区切りとして書かれている。
13
+ */
14
+ export const straySpace = (doc, options) => {
15
+ const joints = doc.sentences
16
+ .filter(isClosed)
17
+ .flatMap((sentence) => phraseJoints(sentence, doc.source.slice(sentence.span.start, sentence.span.end)).map((joint) => ({ ...joint, quote: sentence.text.trim() })));
18
+ return KINDS.flatMap((kind) => {
19
+ const ofKind = joints.filter((joint) => joint.kind === kind);
20
+ const odd = strays(ofKind);
21
+ if (odd.length < options.limit)
22
+ return [];
23
+ return odd.map((joint) => ({
24
+ rule: "",
25
+ severity: "warning",
26
+ line: 0,
27
+ column: 0,
28
+ quote: joint.quote,
29
+ variant: kind,
30
+ values: { before: joint.before, after: joint.after, count: odd.length, of: ofKind.length, limit: options.limit, offset: joint.offset },
31
+ }));
32
+ });
33
+ };
34
+ //# sourceMappingURL=stray-space.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stray-space.js","sourceRoot":"","sources":["../../src/detectors/stray-space.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAE7E,MAAM,KAAK,GAAyB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAIzE;;;GAGG;AACH,MAAM,MAAM,GAAG,CAAC,MAAyB,EAAqB,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEhJ;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IAC9D,MAAM,MAAM,GAAa,GAAG,CAAC,SAAS;SACnC,MAAM,CAAC,QAAQ,CAAC;SAChB,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpB,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAC7I,CAAC;IACJ,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;SACvI,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Detector, ProseDocument } from "../plugin.ts";
1
+ import type { Detector, ProseDocument, Span } from "../plugin.ts";
2
2
  /**
3
3
  * ばらつきは変動係数(標準偏差 ÷ 平均)で測る。
4
4
  *
@@ -13,6 +13,8 @@ export declare const paragraphVariance: Detector;
13
13
  /** 節の長さが揃いすぎている。見出しごとに機械的に埋めた文書で起きる。 */
14
14
  export declare const sectionUniformity: Detector;
15
15
  export declare const ruleOfThree: Detector;
16
+ /** 言語パッケージが日付と読んだ範囲(April 1, 2024、SEP 01, 2022)。木を作るので、要るときだけ呼ぶ。 */
17
+ export declare const dateSpans: (doc: ProseDocument) => Span[];
16
18
  /**
17
19
  * 本題に入るまでが長い。業務文書では、読み手は結論を探しに来ている。
18
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/detectors/structure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,QAAQ,EAAsB,aAAa,EAAiB,MAAM,cAAc,CAAC;AAK3G;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,SAAS,MAAM,EAAE,KAAG,MAAM,GAAG,SAM3E,CAAC;AAsBF,4CAA4C;AAC5C,eAAO,MAAM,eAAe,EAAE,QAUvB,CAAC;AAIR,+CAA+C;AAC/C,eAAO,MAAM,iBAAiB,EAAE,QAI/B,CAAC;AAIF,wCAAwC;AACxC,eAAO,MAAM,iBAAiB,EAAE,QAI/B,CAAC;AAQF,eAAO,MAAM,WAAW,EAAE,QAgBzB,CAAC;AAiBF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,QAoB5B,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,aAAa,KAAG,MAA8F,CAAC"}
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/detectors/structure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,QAAQ,EAAsB,aAAa,EAAW,IAAI,EAAE,MAAM,cAAc,CAAC;AAM3G;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,SAAS,MAAM,EAAE,KAAG,MAAM,GAAG,SAM3E,CAAC;AAsBF,4CAA4C;AAC5C,eAAO,MAAM,eAAe,EAAE,QAgBvB,CAAC;AAIR,+CAA+C;AAC/C,eAAO,MAAM,iBAAiB,EAAE,QAI/B,CAAC;AAIF,wCAAwC;AACxC,eAAO,MAAM,iBAAiB,EAAE,QAI/B,CAAC;AAQF,eAAO,MAAM,WAAW,EAAE,QAgBzB,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,SAAS,GAAI,KAAK,aAAa,KAAG,IAAI,EAC6E,CAAC;AAcjI;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,QAoB5B,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,aAAa,KAAG,MAA8F,CAAC"}
@@ -2,6 +2,7 @@ import { charLength, lengthOf } from "../measure.js";
2
2
  import { dateStampIndexes, stampCandidates } from "../date-stamp.js";
3
3
  import { inDocumentOrder } from "../structure/issues.js";
4
4
  import { preambleParagraphs } from "../preamble-paragraphs.js";
5
+ import { isTooLongParagraph } from "../paragraph-length.js";
5
6
  /**
6
7
  * ばらつきは変動係数(標準偏差 ÷ 平均)で測る。
7
8
  *
@@ -37,7 +38,7 @@ const uniformity = (doc, values, span, limit, rule) => {
37
38
  };
38
39
  /** 1 段落に文を詰めすぎると、読み手はどこで息継ぎしていいか分からなくなる。 */
39
40
  export const paragraphLength = (doc, options) => doc.paragraphs
40
- .filter((paragraph) => paragraph.sentences.length > options.limit)
41
+ .filter((paragraph) => isTooLongParagraph(paragraph.sentences.map((sentence) => lengthOf(sentence, doc.lengthUnit)), options.limit, options.fullSentence))
41
42
  .map((paragraph) => ({
42
43
  rule: "max-paragraph-length",
43
44
  severity: "warning",
@@ -83,7 +84,8 @@ export const ruleOfThree = (doc, options) => {
83
84
  },
84
85
  ];
85
86
  };
86
- const dateSpans = (doc) => doc.structure === undefined ? [] : inDocumentOrder(doc.structure).flatMap((node) => (node.kind === "date" ? [node.span] : []));
87
+ /** 言語パッケージが日付と読んだ範囲(April 1, 2024、SEP 01, 2022)。木を作るので、要るときだけ呼ぶ。 */
88
+ export const dateSpans = (doc) => doc.structure === undefined ? [] : inDocumentOrder(doc.structure).flatMap((node) => (node.kind === "date" ? [node.span] : []));
87
89
  /** 更新日の刻印(「最終更新日:」「2025年6月20日」)は前置きに数えない。木を作るのは、数えて上限を超えたときだけ。 */
88
90
  const withoutDateStamps = (doc, paragraphs) => {
89
91
  const labels = (doc.lexicons["date-stamp-label"] ?? []).map((entry) => entry.pattern);
@@ -1 +1 @@
1
- {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/detectors/structure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/detectors/structure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Lexicon, Token } from "../plugin.ts";
2
+ import type { TokenRange } from "./lexicon-match.ts";
3
+ /**
4
+ * 量も言う最上級に、句の頭になる名詞がそのまま続くか(the most work・the most students・for the most part)。
5
+ * それは一番多いものを言っていて、何かが一番良いという主張ではない。形容詞を挟めば(the most powerful tool)主張のまま。
6
+ * どの最上級が量を言うかは言語パッケージの語彙表 superlative-amount が持つ。
7
+ */
8
+ export declare const namesAmount: (tokens: readonly Token[], range: TokenRange, amounts: Lexicon) => boolean;
9
+ //# sourceMappingURL=superlative-amount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superlative-amount.d.ts","sourceRoot":"","sources":["../../src/detectors/superlative-amount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAarD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,SAAS,KAAK,EAAE,EAAE,OAAO,UAAU,EAAE,SAAS,OAAO,KAAG,OAI3F,CAAC"}
@@ -0,0 +1,20 @@
1
+ /** 名詞の後ろにこれが続けば、その名詞は句の頭ではない。解析器は形容詞を名詞と読むことがある(the most frigid weather・the most cost-effective)。 */
2
+ const JOINED = new Set(["NOUN", "PROPN", "ADJ", "X"]);
3
+ const listed = (tokens, range, amounts) => {
4
+ const words = tokens
5
+ .slice(range.start, range.end)
6
+ .map((token) => token.surface.toLowerCase())
7
+ .join(" ");
8
+ return amounts.some((entry) => entry.pattern.toLowerCase() === words);
9
+ };
10
+ /**
11
+ * 量も言う最上級に、句の頭になる名詞がそのまま続くか(the most work・the most students・for the most part)。
12
+ * それは一番多いものを言っていて、何かが一番良いという主張ではない。形容詞を挟めば(the most powerful tool)主張のまま。
13
+ * どの最上級が量を言うかは言語パッケージの語彙表 superlative-amount が持つ。
14
+ */
15
+ export const namesAmount = (tokens, range, amounts) => {
16
+ const noun = tokens[range.end];
17
+ const after = tokens[range.end + 1];
18
+ return listed(tokens, range, amounts) && noun?.pos === "NOUN" && (after === undefined || !JOINED.has(after.pos));
19
+ };
20
+ //# sourceMappingURL=superlative-amount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superlative-amount.js","sourceRoot":"","sources":["../../src/detectors/superlative-amount.ts"],"names":[],"mappings":"AAGA,qGAAqG;AACrG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAEtD,MAAM,MAAM,GAAG,CAAC,MAAwB,EAAE,KAAiB,EAAE,OAAgB,EAAW,EAAE;IACxF,MAAM,KAAK,GAAG,MAAM;SACjB,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;SAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAE,KAAiB,EAAE,OAAgB,EAAW,EAAE;IACpG,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,GAAG,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnH,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Lexicon, Token } from "../plugin.ts";
2
+ import type { TokenRange } from "./lexicon-match.ts";
3
+ /** 最上級の名詞句を後ろから限る語。どちらも言語パッケージの語彙表が持つ。 */
4
+ export type Restrictors = {
5
+ /** 名詞の後ろで関係節を始める語(that・which)。空の言語は、名詞の後ろに節を置かない。 */
6
+ readonly relatives: Lexicon;
7
+ /** 最上級を手に入る範囲に限る形容詞(possible・available)。 */
8
+ readonly bounds: Lexicon;
9
+ /** 節の主語になる代名詞(we・they)。themselves のような再帰の代名詞は主語にならない。 */
10
+ readonly subjects: Lexicon;
11
+ };
12
+ /**
13
+ * 最上級の名詞句を後ろの節か分詞か形容詞が限っているか(the best we have measured・the most scalable option discussed・
14
+ * the best education possible)。何の中で最もなのかを言っているので、限定の無い最上級ではない。
15
+ * 名詞の後ろに節を置かない言語は関係詞の語彙表が空で、節も分詞も読まない。
16
+ */
17
+ export declare const restricted: (tokens: readonly Token[], range: TokenRange, restrictors: Restrictors) => boolean;
18
+ //# sourceMappingURL=superlative-clause.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superlative-clause.d.ts","sourceRoot":"","sources":["../../src/detectors/superlative-clause.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GAAG;IACxB,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AA6DF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,SAAS,KAAK,EAAE,EAAE,OAAO,UAAU,EAAE,aAAa,WAAW,KAAG,OAGlG,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { PHRASE_END, PHRASE_START, phraseEnd } from "./superlative-scope.js";
2
+ const VERBAL = new Set(["VERB", "AUX"]);
3
+ const isWord = (token, words) => token !== undefined && words.some((entry) => entry.pattern.toLowerCase() === token.surface.toLowerCase());
4
+ const isVerbal = (token) => token !== undefined && VERBAL.has(token.pos);
5
+ /** 節の主語(we・managers・the team・this)を読み飛ばした先に動詞があるか。主語の無い節(that has defined)は動詞で始まる。 */
6
+ const verbAfterSubject = (tokens, at, subjects) => {
7
+ if (isVerbal(tokens[at]))
8
+ return true;
9
+ if (isWord(tokens[at], subjects))
10
+ return isVerbal(tokens[at + 1]);
11
+ if (tokens[at]?.pos === "DET")
12
+ return isVerbal(tokens[at + 1]) || isVerbal(tokens[phraseEnd(tokens, at + 1)]);
13
+ return isVerbal(tokens[phraseEnd(tokens, at)]);
14
+ };
15
+ const isArticle = (token) => token?.features?.["PronType"] === "Art";
16
+ /**
17
+ * 関係詞を省いた節の主語は、代名詞(the best we have measured)か冠詞で始まる名詞句(the best option the team selected)。
18
+ * each・all のような限定詞(The best teams all adapt)や、冠詞の無い名詞(The best teams adapt)は節の始まりと読まない。
19
+ */
20
+ const contactClause = (tokens, at, subjects) => {
21
+ if (isWord(tokens[at], subjects))
22
+ return isVerbal(tokens[at + 1]);
23
+ return isArticle(tokens[at]) && isVerbal(tokens[phraseEnd(tokens, at + 1)]);
24
+ };
25
+ /** 関係節(the threats that we have seen・the option which we chose)と、関係詞を省いた節。 */
26
+ const clause = (tokens, at, restrictors) => isWord(tokens[at], restrictors.relatives) ? verbAfterSubject(tokens, at + 1, restrictors.subjects) : contactClause(tokens, at, restrictors.subjects);
27
+ /** 分詞の後ろに文の動詞があるか。and を挟んだ動詞(The best option changed quickly and won)は分詞と並ぶ述語。 */
28
+ const mainVerbFollows = (tokens, at) => {
29
+ const rest = tokens.slice(at + 1);
30
+ const verb = rest.findIndex(isVerbal);
31
+ return verb !== -1 && !rest.slice(0, verb).some((token) => token.pos === "CCONJ");
32
+ };
33
+ /**
34
+ * 名詞の後ろの過去分詞(the most scalable option discussed)。名詞句が動詞の目的語か補語で(We chose the best option discussed)、
35
+ * または分詞の後ろに文の動詞がある(The best results obtained were poor)ときだけ。目的語を取る分詞(The best solution
36
+ * proposed a fix)と、ほかに述語の無い分詞(The best option changed.)は文の動詞。
37
+ */
38
+ const participle = (tokens, range, at) => {
39
+ const next = tokens[at + 1];
40
+ if (tokens[at]?.features?.["VerbForm"] !== "Part" || (next !== undefined && PHRASE_START.has(next.pos)))
41
+ return false;
42
+ return isVerbal(tokens[range.start - 1]) || mainVerbFollows(tokens, at);
43
+ };
44
+ /** 最上級のすぐ後ろ(the best possible outcome)か、名詞句の後ろ(the best education possible)。 */
45
+ const bounded = (tokens, range, at, bounds) => isWord(tokens[range.end], bounds) || isWord(tokens[at], bounds);
46
+ /** 修飾の語は名詞の前に来るので、句の後ろで止まった分詞は名詞の後ろにある。 */
47
+ const clauseOrParticiple = (tokens, range, at, restrictors) => {
48
+ const last = tokens[at - 1];
49
+ const endsPhrase = at === range.end || (last !== undefined && PHRASE_END.has(last.pos));
50
+ return (endsPhrase && clause(tokens, at, restrictors)) || participle(tokens, range, at);
51
+ };
52
+ /**
53
+ * 最上級の名詞句を後ろの節か分詞か形容詞が限っているか(the best we have measured・the most scalable option discussed・
54
+ * the best education possible)。何の中で最もなのかを言っているので、限定の無い最上級ではない。
55
+ * 名詞の後ろに節を置かない言語は関係詞の語彙表が空で、節も分詞も読まない。
56
+ */
57
+ export const restricted = (tokens, range, restrictors) => {
58
+ const at = phraseEnd(tokens, range.end);
59
+ return bounded(tokens, range, at, restrictors.bounds) || (restrictors.relatives.length > 0 && clauseOrParticiple(tokens, range, at, restrictors));
60
+ };
61
+ //# sourceMappingURL=superlative-clause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superlative-clause.js","sourceRoot":"","sources":["../../src/detectors/superlative-clause.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,11 @@ export type ScopeMarkers = {
12
12
  };
13
13
  /** 語彙表の position で分ける。position の無い語は、どちら側の語か分からないので使わない。 */
14
14
  export declare const scopeMarkersOf: (lexicon: Lexicon) => ScopeMarkers;
15
+ /** 名詞句の始まり。the world・Chicago・our products・the three・all。 */
16
+ export declare const PHRASE_START: Set<string>;
17
+ /** 範囲の前に置ける語。修飾だけで終わった句(the best is in …)は範囲ではなく述語。 */
18
+ export declare const PHRASE_END: Set<string>;
19
+ /** 最上級に続く名詞句の終わり。名詞が出るまでは修飾を、出た後は名詞の連なりを読む。 */
20
+ export declare const phraseEnd: (tokens: readonly Token[], at: number, nounSeen?: boolean) => number;
15
21
  export declare const scoped: (tokens: readonly Token[], range: TokenRange, markers: ScopeMarkers) => boolean;
16
22
  //# sourceMappingURL=superlative-scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"superlative-scope.d.ts","sourceRoot":"","sources":["../../src/detectors/superlative-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,YAGhD,CAAC;AA8CH,eAAO,MAAM,MAAM,GAAI,QAAQ,SAAS,KAAK,EAAE,EAAE,OAAO,UAAU,EAAE,SAAS,YAAY,KAAG,OACwB,CAAC"}
1
+ {"version":3,"file":"superlative-scope.d.ts","sourceRoot":"","sources":["../../src/detectors/superlative-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,YAGhD,CAAC;AAIH,4DAA4D;AAC5D,eAAO,MAAM,YAAY,aAA0D,CAAC;AAMpF,uDAAuD;AACvD,eAAO,MAAM,UAAU,aAA2C,CAAC;AAkBnE,+CAA+C;AAC/C,eAAO,MAAM,SAAS,GAAI,QAAQ,SAAS,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,kBAAgB,KAAG,MAIlF,CAAC;AAWF,eAAO,MAAM,MAAM,GAAI,QAAQ,SAAS,KAAK,EAAE,EAAE,OAAO,UAAU,EAAE,SAAS,YAAY,KAAG,OACwB,CAAC"}