chaffjs 0.25.0 → 0.26.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 (385) hide show
  1. package/README.md +179 -42
  2. package/dist/adapter-import.d.ts +2 -0
  3. package/dist/adapter-import.d.ts.map +1 -0
  4. package/dist/adapter-import.js +11 -0
  5. package/dist/adapter-import.js.map +1 -0
  6. package/dist/adapter-load.d.ts.map +1 -1
  7. package/dist/adapter-load.js +2 -9
  8. package/dist/adapter-load.js.map +1 -1
  9. package/dist/ai-score/human-shares.d.ts +4 -0
  10. package/dist/ai-score/human-shares.d.ts.map +1 -0
  11. package/dist/ai-score/human-shares.js +205 -0
  12. package/dist/ai-score/human-shares.js.map +1 -0
  13. package/dist/ai-score/lint-line.d.ts +4 -0
  14. package/dist/ai-score/lint-line.d.ts.map +1 -0
  15. package/dist/ai-score/lint-line.js +9 -0
  16. package/dist/ai-score/lint-line.js.map +1 -0
  17. package/dist/ai-score/of-document.d.ts +7 -0
  18. package/dist/ai-score/of-document.d.ts.map +1 -0
  19. package/dist/ai-score/of-document.js +40 -0
  20. package/dist/ai-score/of-document.js.map +1 -0
  21. package/dist/ai-score/render.d.ts +24 -0
  22. package/dist/ai-score/render.d.ts.map +1 -0
  23. package/dist/ai-score/render.js +100 -0
  24. package/dist/ai-score/render.js.map +1 -0
  25. package/dist/ai-score/score.d.ts +77 -0
  26. package/dist/ai-score/score.d.ts.map +1 -0
  27. package/dist/ai-score/score.js +52 -0
  28. package/dist/ai-score/score.js.map +1 -0
  29. package/dist/ai-score/signals.d.ts +19 -0
  30. package/dist/ai-score/signals.d.ts.map +1 -0
  31. package/dist/ai-score/signals.js +30 -0
  32. package/dist/ai-score/signals.js.map +1 -0
  33. package/dist/ai-score/text.d.ts +37 -0
  34. package/dist/ai-score/text.d.ts.map +1 -0
  35. package/dist/ai-score/text.js +59 -0
  36. package/dist/ai-score/text.js.map +1 -0
  37. package/dist/ai-score/view.d.ts +5 -0
  38. package/dist/ai-score/view.d.ts.map +1 -0
  39. package/dist/ai-score/view.js +19 -0
  40. package/dist/ai-score/view.js.map +1 -0
  41. package/dist/backends/anthropic.d.ts +0 -1
  42. package/dist/backends/anthropic.d.ts.map +1 -1
  43. package/dist/backends/anthropic.js +0 -1
  44. package/dist/backends/anthropic.js.map +1 -1
  45. package/dist/backends/default-model.d.ts +3 -0
  46. package/dist/backends/default-model.d.ts.map +1 -0
  47. package/dist/backends/default-model.js +5 -0
  48. package/dist/backends/default-model.js.map +1 -0
  49. package/dist/backends/openai.d.ts +0 -1
  50. package/dist/backends/openai.d.ts.map +1 -1
  51. package/dist/backends/openai.js +0 -1
  52. package/dist/backends/openai.js.map +1 -1
  53. package/dist/browser/adapter-import.d.ts +2 -0
  54. package/dist/browser/adapter-import.d.ts.map +1 -0
  55. package/dist/browser/adapter-import.js +17 -0
  56. package/dist/browser/adapter-import.js.map +1 -0
  57. package/dist/browser/bounded-match.d.ts +3 -0
  58. package/dist/browser/bounded-match.d.ts.map +1 -0
  59. package/dist/browser/bounded-match.js +4 -0
  60. package/dist/browser/bounded-match.js.map +1 -0
  61. package/dist/browser/check-text.d.ts +43 -0
  62. package/dist/browser/check-text.d.ts.map +1 -0
  63. package/dist/browser/check-text.js +50 -0
  64. package/dist/browser/check-text.js.map +1 -0
  65. package/dist/browser/detectors.d.ts +4 -0
  66. package/dist/browser/detectors.d.ts.map +1 -0
  67. package/dist/browser/detectors.js +22 -0
  68. package/dist/browser/detectors.js.map +1 -0
  69. package/dist/browser/package-files.d.ts +5 -0
  70. package/dist/browser/package-files.d.ts.map +1 -0
  71. package/dist/browser/package-files.js +8 -0
  72. package/dist/browser/package-files.js.map +1 -0
  73. package/dist/browser/path.d.ts +9 -0
  74. package/dist/browser/path.d.ts.map +1 -0
  75. package/dist/browser/path.js +70 -0
  76. package/dist/browser/path.js.map +1 -0
  77. package/dist/browser/working-dir.d.ts +2 -0
  78. package/dist/browser/working-dir.d.ts.map +1 -0
  79. package/dist/browser/working-dir.js +3 -0
  80. package/dist/browser/working-dir.js.map +1 -0
  81. package/dist/browser-files.d.ts +21 -0
  82. package/dist/browser-files.d.ts.map +1 -0
  83. package/dist/browser-files.js +65 -0
  84. package/dist/browser-files.js.map +1 -0
  85. package/dist/browser.d.ts +9 -0
  86. package/dist/browser.d.ts.map +1 -0
  87. package/dist/browser.js +13 -0
  88. package/dist/browser.js.map +1 -0
  89. package/dist/cli-text.d.ts.map +1 -1
  90. package/dist/cli-text.js +2 -0
  91. package/dist/cli-text.js.map +1 -1
  92. package/dist/cli.d.ts.map +1 -1
  93. package/dist/cli.js +4 -1
  94. package/dist/cli.js.map +1 -1
  95. package/dist/commands/ai-score.d.ts +8 -0
  96. package/dist/commands/ai-score.d.ts.map +1 -0
  97. package/dist/commands/ai-score.js +59 -0
  98. package/dist/commands/ai-score.js.map +1 -0
  99. package/dist/commands/document-commands.d.ts.map +1 -1
  100. package/dist/commands/document-commands.js +2 -0
  101. package/dist/commands/document-commands.js.map +1 -1
  102. package/dist/config/by-path-problems.d.ts +5 -0
  103. package/dist/config/by-path-problems.d.ts.map +1 -0
  104. package/dist/config/by-path-problems.js +11 -0
  105. package/dist/config/by-path-problems.js.map +1 -0
  106. package/dist/config/load.d.ts +9 -2
  107. package/dist/config/load.d.ts.map +1 -1
  108. package/dist/config/load.js +21 -8
  109. package/dist/config/load.js.map +1 -1
  110. package/dist/config/read.d.ts +2 -0
  111. package/dist/config/read.d.ts.map +1 -1
  112. package/dist/config/read.js +4 -1
  113. package/dist/config/read.js.map +1 -1
  114. package/dist/config/warnings.d.ts +1 -1
  115. package/dist/config/warnings.d.ts.map +1 -1
  116. package/dist/config/warnings.js +3 -1
  117. package/dist/config/warnings.js.map +1 -1
  118. package/dist/config/working-dir.d.ts +2 -0
  119. package/dist/config/working-dir.d.ts.map +1 -0
  120. package/dist/config/working-dir.js +3 -0
  121. package/dist/config/working-dir.js.map +1 -0
  122. package/dist/custom/bounded-match.d.ts +1 -12
  123. package/dist/custom/bounded-match.d.ts.map +1 -1
  124. package/dist/custom/bounded-match.js +1 -11
  125. package/dist/custom/bounded-match.js.map +1 -1
  126. package/dist/custom/pattern-timeout.d.ts +13 -0
  127. package/dist/custom/pattern-timeout.d.ts.map +1 -0
  128. package/dist/custom/pattern-timeout.js +13 -0
  129. package/dist/custom/pattern-timeout.js.map +1 -0
  130. package/dist/detect.d.ts.map +1 -1
  131. package/dist/detect.js +4 -5
  132. package/dist/detect.js.map +1 -1
  133. package/dist/detectors/date-year.d.ts +10 -2
  134. package/dist/detectors/date-year.d.ts.map +1 -1
  135. package/dist/detectors/date-year.js +44 -8
  136. package/dist/detectors/date-year.js.map +1 -1
  137. package/dist/detectors/defined-term-form.d.ts +5 -0
  138. package/dist/detectors/defined-term-form.d.ts.map +1 -1
  139. package/dist/detectors/defined-term-form.js +22 -5
  140. package/dist/detectors/defined-term-form.js.map +1 -1
  141. package/dist/detectors/orthographic-variant.d.ts.map +1 -1
  142. package/dist/detectors/orthographic-variant.js +44 -17
  143. package/dist/detectors/orthographic-variant.js.map +1 -1
  144. package/dist/detectors/party-role-name.d.ts +3 -0
  145. package/dist/detectors/party-role-name.d.ts.map +1 -0
  146. package/dist/detectors/party-role-name.js +35 -0
  147. package/dist/detectors/party-role-name.js.map +1 -0
  148. package/dist/detectors/quote-without-source.d.ts +17 -0
  149. package/dist/detectors/quote-without-source.d.ts.map +1 -0
  150. package/dist/detectors/quote-without-source.js +64 -0
  151. package/dist/detectors/quote-without-source.js.map +1 -0
  152. package/dist/detectors/reference-text.js +1 -1
  153. package/dist/detectors/reference-text.js.map +1 -1
  154. package/dist/detectors/registry/party-role-name.d.ts +3 -0
  155. package/dist/detectors/registry/party-role-name.d.ts.map +1 -0
  156. package/dist/detectors/registry/party-role-name.js +3 -0
  157. package/dist/detectors/registry/party-role-name.js.map +1 -0
  158. package/dist/detectors/registry/quote-without-source.d.ts +3 -0
  159. package/dist/detectors/registry/quote-without-source.d.ts.map +1 -0
  160. package/dist/detectors/registry/quote-without-source.js +3 -0
  161. package/dist/detectors/registry/quote-without-source.js.map +1 -0
  162. package/dist/detectors/registry/vague-deadline.d.ts +3 -0
  163. package/dist/detectors/registry/vague-deadline.d.ts.map +1 -0
  164. package/dist/detectors/registry/vague-deadline.js +3 -0
  165. package/dist/detectors/registry/vague-deadline.js.map +1 -0
  166. package/dist/detectors/run-in-label.d.ts +7 -0
  167. package/dist/detectors/run-in-label.d.ts.map +1 -0
  168. package/dist/detectors/run-in-label.js +53 -0
  169. package/dist/detectors/run-in-label.js.map +1 -0
  170. package/dist/detectors/sentence-counts.d.ts +3 -1
  171. package/dist/detectors/sentence-counts.d.ts.map +1 -1
  172. package/dist/detectors/sentence-counts.js +11 -4
  173. package/dist/detectors/sentence-counts.js.map +1 -1
  174. package/dist/detectors/sentence-ending.d.ts +1 -1
  175. package/dist/detectors/sentence-ending.d.ts.map +1 -1
  176. package/dist/detectors/sentence-ending.js +2 -1
  177. package/dist/detectors/sentence-ending.js.map +1 -1
  178. package/dist/detectors/structure-tree.d.ts +4 -1
  179. package/dist/detectors/structure-tree.d.ts.map +1 -1
  180. package/dist/detectors/structure-tree.js +21 -2
  181. package/dist/detectors/structure-tree.js.map +1 -1
  182. package/dist/detectors/unbalanced-bracket.d.ts +1 -1
  183. package/dist/detectors/unbalanced-bracket.d.ts.map +1 -1
  184. package/dist/detectors/unbalanced-bracket.js +23 -11
  185. package/dist/detectors/unbalanced-bracket.js.map +1 -1
  186. package/dist/detectors/vague-deadline.d.ts +25 -0
  187. package/dist/detectors/vague-deadline.d.ts.map +1 -0
  188. package/dist/detectors/vague-deadline.js +97 -0
  189. package/dist/detectors/vague-deadline.js.map +1 -0
  190. package/dist/furigana.d.ts +7 -0
  191. package/dist/furigana.d.ts.map +1 -0
  192. package/dist/furigana.js +16 -0
  193. package/dist/furigana.js.map +1 -0
  194. package/dist/genre-load.d.ts.map +1 -1
  195. package/dist/genre-load.js +5 -7
  196. package/dist/genre-load.js.map +1 -1
  197. package/dist/grade/ai-score.d.ts +16 -0
  198. package/dist/grade/ai-score.d.ts.map +1 -0
  199. package/dist/grade/ai-score.js +17 -0
  200. package/dist/grade/ai-score.js.map +1 -0
  201. package/dist/grade/finding.d.ts +6 -0
  202. package/dist/grade/finding.d.ts.map +1 -0
  203. package/dist/grade/finding.js +13 -0
  204. package/dist/grade/finding.js.map +1 -0
  205. package/dist/grade/grade-item.d.ts.map +1 -1
  206. package/dist/grade/grade-item.js +4 -11
  207. package/dist/grade/grade-item.js.map +1 -1
  208. package/dist/grade/render-variants.d.ts.map +1 -1
  209. package/dist/grade/render-variants.js +3 -0
  210. package/dist/grade/render-variants.js.map +1 -1
  211. package/dist/grade/render.d.ts.map +1 -1
  212. package/dist/grade/render.js +1 -0
  213. package/dist/grade/render.js.map +1 -1
  214. package/dist/grade/result.d.ts +3 -0
  215. package/dist/grade/result.d.ts.map +1 -1
  216. package/dist/grade/results-read.d.ts.map +1 -1
  217. package/dist/grade/results-read.js +13 -2
  218. package/dist/grade/results-read.js.map +1 -1
  219. package/dist/grade/summary.d.ts +3 -0
  220. package/dist/grade/summary.d.ts.map +1 -1
  221. package/dist/grade/summary.js +6 -0
  222. package/dist/grade/summary.js.map +1 -1
  223. package/dist/grade/text.d.ts +2 -0
  224. package/dist/grade/text.d.ts.map +1 -1
  225. package/dist/grade/text.js +2 -0
  226. package/dist/grade/text.js.map +1 -1
  227. package/dist/grade/variants-text.d.ts +3 -0
  228. package/dist/grade/variants-text.d.ts.map +1 -1
  229. package/dist/grade/variants-text.js +4 -0
  230. package/dist/grade/variants-text.js.map +1 -1
  231. package/dist/grade/variants.d.ts +3 -0
  232. package/dist/grade/variants.d.ts.map +1 -1
  233. package/dist/grade/variants.js +1 -0
  234. package/dist/grade/variants.js.map +1 -1
  235. package/dist/grade-api.d.ts +1 -0
  236. package/dist/grade-api.d.ts.map +1 -1
  237. package/dist/grade-api.js +2 -1
  238. package/dist/grade-api.js.map +1 -1
  239. package/dist/judge.d.ts +0 -1
  240. package/dist/judge.d.ts.map +1 -1
  241. package/dist/judge.js +0 -1
  242. package/dist/judge.js.map +1 -1
  243. package/dist/known-genres.js +2 -2
  244. package/dist/known-genres.js.map +1 -1
  245. package/dist/package-files.d.ts +6 -0
  246. package/dist/package-files.d.ts.map +1 -0
  247. package/dist/package-files.js +11 -0
  248. package/dist/package-files.js.map +1 -0
  249. package/dist/profile/load.d.ts.map +1 -1
  250. package/dist/profile/load.js +5 -6
  251. package/dist/profile/load.js.map +1 -1
  252. package/dist/rule-load.d.ts.map +1 -1
  253. package/dist/rule-load.js +5 -6
  254. package/dist/rule-load.js.map +1 -1
  255. package/dist/rule-offs.js +3 -3
  256. package/dist/rule-offs.js.map +1 -1
  257. package/dist/run.js +1 -1
  258. package/dist/run.js.map +1 -1
  259. package/dist/structure/date-range.d.ts +4 -0
  260. package/dist/structure/date-range.d.ts.map +1 -1
  261. package/dist/structure/date-range.js +23 -3
  262. package/dist/structure/date-range.js.map +1 -1
  263. package/dist/structure/issues.d.ts +17 -1
  264. package/dist/structure/issues.d.ts.map +1 -1
  265. package/dist/structure/issues.js +54 -5
  266. package/dist/structure/issues.js.map +1 -1
  267. package/dist/structure/party-role.d.ts +30 -0
  268. package/dist/structure/party-role.d.ts.map +1 -0
  269. package/dist/structure/party-role.js +58 -0
  270. package/dist/structure/party-role.js.map +1 -0
  271. package/dist/structure/prose-total.d.ts +28 -0
  272. package/dist/structure/prose-total.d.ts.map +1 -0
  273. package/dist/structure/prose-total.js +99 -0
  274. package/dist/structure/prose-total.js.map +1 -0
  275. package/dist/structure/reference-text.d.ts +5 -0
  276. package/dist/structure/reference-text.d.ts.map +1 -1
  277. package/dist/structure/reference-text.js +17 -4
  278. package/dist/structure/reference-text.js.map +1 -1
  279. package/dist/structure/term-prefix.d.ts +18 -0
  280. package/dist/structure/term-prefix.d.ts.map +1 -0
  281. package/dist/structure/term-prefix.js +40 -0
  282. package/dist/structure/term-prefix.js.map +1 -0
  283. package/dist/structure/total.d.ts +2 -0
  284. package/dist/structure/total.d.ts.map +1 -1
  285. package/dist/structure/total.js +2 -0
  286. package/dist/structure/total.js.map +1 -1
  287. package/dist/structure-shape/baseline-load.d.ts.map +1 -1
  288. package/dist/structure-shape/baseline-load.js +4 -5
  289. package/dist/structure-shape/baseline-load.js.map +1 -1
  290. package/dist/style-load.d.ts.map +1 -1
  291. package/dist/style-load.js +5 -6
  292. package/dist/style-load.js.map +1 -1
  293. package/package.json +24 -3
  294. package/rules/cliche.yaml +28 -8
  295. package/rules/date-without-year.yaml +28 -3
  296. package/rules/defined-term-form.yaml +9 -6
  297. package/rules/demonstrative-opener-run.yaml +24 -7
  298. package/rules/no-mixed-desumasu.yaml +2 -2
  299. package/rules/orthographic-variant.yaml +2 -2
  300. package/rules/party-role-name.yaml +94 -0
  301. package/rules/quote-without-source.yaml +61 -0
  302. package/rules/total-mismatch.yaml +8 -8
  303. package/rules/vague-deadline.yaml +95 -0
  304. package/rules/weasel-word.yaml +25 -7
  305. package/skills/chaff/SKILL.md +12 -2
  306. package/src/adapter-import.ts +3 -0
  307. package/src/adapter-load.ts +2 -1
  308. package/src/ai-score/human-shares.ts +207 -0
  309. package/src/ai-score/lint-line.ts +10 -0
  310. package/src/ai-score/of-document.ts +46 -0
  311. package/src/ai-score/render.ts +124 -0
  312. package/src/ai-score/score.ts +121 -0
  313. package/src/ai-score/signals.ts +39 -0
  314. package/src/ai-score/text.ts +103 -0
  315. package/src/ai-score/view.ts +21 -0
  316. package/src/backends/anthropic.ts +0 -2
  317. package/src/backends/default-model.ts +9 -0
  318. package/src/backends/openai.ts +0 -2
  319. package/src/browser/adapter-import.ts +19 -0
  320. package/src/browser/bounded-match.ts +9 -0
  321. package/src/browser/check-text.ts +106 -0
  322. package/src/browser/detectors.ts +40 -0
  323. package/src/browser/import-meta-glob.d.ts +5 -0
  324. package/src/browser/package-files.ts +13 -0
  325. package/src/browser/path.ts +73 -0
  326. package/src/browser/working-dir.ts +3 -0
  327. package/src/browser-files.ts +87 -0
  328. package/src/browser.ts +19 -0
  329. package/src/cli-text.ts +2 -0
  330. package/src/cli.ts +4 -1
  331. package/src/commands/ai-score.ts +77 -0
  332. package/src/commands/document-commands.ts +2 -0
  333. package/src/config/by-path-problems.ts +17 -0
  334. package/src/config/load.ts +21 -8
  335. package/src/config/read.ts +5 -1
  336. package/src/config/warnings.ts +3 -1
  337. package/src/config/working-dir.ts +3 -0
  338. package/src/custom/bounded-match.ts +1 -16
  339. package/src/custom/pattern-timeout.ts +17 -0
  340. package/src/detect.ts +4 -5
  341. package/src/detectors/date-year.ts +51 -12
  342. package/src/detectors/defined-term-form.ts +28 -6
  343. package/src/detectors/orthographic-variant.ts +59 -18
  344. package/src/detectors/party-role-name.ts +44 -0
  345. package/src/detectors/quote-without-source.ts +90 -0
  346. package/src/detectors/reference-text.ts +1 -1
  347. package/src/detectors/registry/party-role-name.ts +4 -0
  348. package/src/detectors/registry/quote-without-source.ts +4 -0
  349. package/src/detectors/registry/vague-deadline.ts +4 -0
  350. package/src/detectors/run-in-label.ts +60 -0
  351. package/src/detectors/sentence-counts.ts +13 -4
  352. package/src/detectors/sentence-ending.ts +3 -2
  353. package/src/detectors/structure-tree.ts +28 -6
  354. package/src/detectors/unbalanced-bracket.ts +25 -10
  355. package/src/detectors/vague-deadline.ts +132 -0
  356. package/src/furigana.ts +20 -0
  357. package/src/genre-load.ts +5 -7
  358. package/src/grade/ai-score.ts +32 -0
  359. package/src/grade/finding.ts +16 -0
  360. package/src/grade/grade-item.ts +4 -13
  361. package/src/grade/render-variants.ts +5 -0
  362. package/src/grade/render.ts +1 -0
  363. package/src/grade/result.ts +3 -0
  364. package/src/grade/results-read.ts +17 -2
  365. package/src/grade/summary.ts +9 -0
  366. package/src/grade/text.ts +6 -0
  367. package/src/grade/variants-text.ts +7 -0
  368. package/src/grade/variants.ts +4 -0
  369. package/src/grade-api.ts +3 -1
  370. package/src/judge.ts +0 -2
  371. package/src/known-genres.ts +2 -2
  372. package/src/package-files.ts +15 -0
  373. package/src/profile/load.ts +5 -6
  374. package/src/rule-load.ts +5 -6
  375. package/src/rule-offs.ts +3 -3
  376. package/src/run.ts +1 -1
  377. package/src/structure/date-range.ts +28 -3
  378. package/src/structure/issues.ts +61 -6
  379. package/src/structure/party-role.ts +94 -0
  380. package/src/structure/prose-total.ts +135 -0
  381. package/src/structure/reference-text.ts +17 -4
  382. package/src/structure/term-prefix.ts +54 -0
  383. package/src/structure/total.ts +4 -0
  384. package/src/structure-shape/baseline-load.ts +4 -5
  385. package/src/style-load.ts +5 -6
@@ -4,7 +4,6 @@ import { join } from "node:path";
4
4
  import Anthropic from "@anthropic-ai/sdk";
5
5
  import { toFailure } from "./types.js";
6
6
  const isTextBlock = (block) => typeof block === "object" && block !== null && "text" in block && typeof block.text === "string";
7
- export const DEFAULT_MODEL = "claude-opus-5";
8
7
  /**
9
8
  * 認証情報があるか。
10
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/backends/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/backends/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BackendName } from "./types.ts";
2
+ export declare const defaultModel: (backend: BackendName) => string;
3
+ //# sourceMappingURL=default-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-model.d.ts","sourceRoot":"","sources":["../../src/backends/default-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,eAAO,MAAM,YAAY,GAAI,SAAS,WAAW,KAAG,MAAiF,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Apart from the backends, so reading settings does not load the providers' SDKs.
2
+ const ANTHROPIC_DEFAULT_MODEL = "claude-opus-5";
3
+ const OPENAI_DEFAULT_MODEL = "gpt-5";
4
+ export const defaultModel = (backend) => (backend === "openai" ? OPENAI_DEFAULT_MODEL : ANTHROPIC_DEFAULT_MODEL);
5
+ //# sourceMappingURL=default-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-model.js","sourceRoot":"","sources":["../../src/backends/default-model.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAElF,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEhD,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAU,EAAE,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC"}
@@ -16,7 +16,6 @@ export type OpenAIClient = {
16
16
  };
17
17
  };
18
18
  };
19
- export declare const DEFAULT_MODEL = "gpt-5";
20
19
  export declare const hasCredentials: () => boolean;
21
20
  export declare const isAuthFailure: (error: unknown) => boolean;
22
21
  /** API が返した失敗だけを拾う。ネットワーク断やコードの誤りは、握りつぶさずそのまま投げる。 */
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/backends/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAU,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,KAAK,cAAc,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE;YAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC;AAEjH,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,sCAAsC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;CAClJ,CAAC;AAEF,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC,eAAO,MAAM,cAAc,QAAO,OAA2D,CAAC;AAE9F,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,OAAmE,CAAC;AAEnH,qDAAqD;AACrD,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,OAAO,GAAG,SAI1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,GACf,SAAS,YAAY,KAAG,KAcxB,CAAC;AAEJ,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,MAAM,CAAkE,CAAC"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/backends/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAU,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,KAAK,cAAc,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE;YAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC;AAEjH,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,sCAAsC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;CAClJ,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,OAA2D,CAAC;AAE9F,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,OAAmE,CAAC;AAEnH,qDAAqD;AACrD,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,OAAO,GAAG,SAI1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,GACf,SAAS,YAAY,KAAG,KAcxB,CAAC;AAEJ,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,MAAM,CAAkE,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import OpenAI from "openai";
2
2
  import { toFailure } from "./types.js";
3
- export const DEFAULT_MODEL = "gpt-5";
4
3
  export const hasCredentials = () => (process.env["OPENAI_API_KEY"] ?? "").length > 0;
5
4
  export const isAuthFailure = (error) => error instanceof OpenAI.APIError && error.status === 401;
6
5
  /** API が返した失敗だけを拾う。ネットワーク断やコードの誤りは、握りつぶさずそのまま投げる。 */
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/backends/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,YAAY,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC;AAEnH,qDAAqD;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAuB,EAAE;IACrE,IAAI,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,GAAG,GAA0C,KAAK,CAAC;IACzD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAChB,CAAC,MAAqB,EAAS,EAAE,CACjC,KAAK,EAAE,MAAc,EAAmB,EAAE;IACxC,MAAM,MAAM,GAAiB,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;YAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;SACvC;QACD,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;KAChH,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAClD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,UAAU,GAAkB,EAAE,EAAE,EAAE,2BAA2B,EAAE,EAAE,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/backends/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,YAAY,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC;AAEnH,qDAAqD;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAuB,EAAE;IACrE,IAAI,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,GAAG,GAA0C,KAAK,CAAC;IACzD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAChB,CAAC,MAAqB,EAAS,EAAE,CACjC,KAAK,EAAE,MAAc,EAAmB,EAAE;IACxC,MAAM,MAAM,GAAiB,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;YAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;SACvC;QACD,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;KAChH,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAClD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,UAAU,GAAkB,EAAE,EAAE,EAAE,2BAA2B,EAAE,EAAE,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const importPackage: (specifier: string) => Promise<unknown>;
2
+ //# sourceMappingURL=adapter-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-import.d.ts","sourceRoot":"","sources":["../../src/browser/adapter-import.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,aAAa,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,OAAO,CAKtE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { ensurePackageFiles } from "chaffjs/browser-files";
2
+ // adapter-import.ts in a bundle: a bundler cannot follow an import by a name known only at run time, so the bundled
3
+ // languages are named here, each loaded only when a document in it is checked, after its files.
4
+ const ADAPTERS = {
5
+ "@chaffjs/lang-ja": () => import("@chaffjs/lang-ja"),
6
+ "@chaffjs/lang-en": () => import("@chaffjs/lang-en"),
7
+ };
8
+ /** The error Node gives for a package that is not installed, which adapter-load.ts reads as "not installed". */
9
+ const notInstalled = (specifier) => Object.assign(new Error(`Cannot find package '${specifier}'`), { code: "ERR_MODULE_NOT_FOUND" });
10
+ export const importPackage = async (specifier) => {
11
+ const load = Object.hasOwn(ADAPTERS, specifier) ? ADAPTERS[specifier] : undefined;
12
+ if (load === undefined)
13
+ throw notInstalled(specifier);
14
+ await ensurePackageFiles(specifier);
15
+ return load();
16
+ };
17
+ //# sourceMappingURL=adapter-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-import.js","sourceRoot":"","sources":["../../src/browser/adapter-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,oHAAoH;AACpH,gGAAgG;AAEhG,MAAM,QAAQ,GAAqD;IACjE,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;IACpD,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC;CACrD,CAAC;AAEF,gHAAgH;AAChH,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAS,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,SAAS,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAEpJ,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAoB,EAAE;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TextMatches } from "../custom/pattern-timeout.ts";
2
+ export declare const boundedMatches: (source: string, flags: string, texts: readonly string[]) => TextMatches;
3
+ //# sourceMappingURL=bounded-match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-match.d.ts","sourceRoot":"","sources":["../../src/browser/bounded-match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAKhE,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,OAAO,SAAS,MAAM,EAAE,KAAG,WAGtF,CAAC"}
@@ -0,0 +1,4 @@
1
+ // custom/bounded-match.ts in a browser, which has no vm to stop a pattern: the same matches, without the time limit.
2
+ // regex-safety.ts still refuses the shapes known to run away before a pattern is used.
3
+ export const boundedMatches = (source, flags, texts) => texts.map((text) => [...text.matchAll(new RegExp(source, `g${flags}`))].filter((match) => match[0] !== "").map((match) => ({ index: match.index, text: match[0] })));
4
+ //# sourceMappingURL=bounded-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-match.js","sourceRoot":"","sources":["../../src/browser/bounded-match.ts"],"names":[],"mappings":"AAEA,qHAAqH;AACrH,uFAAuF;AAEvF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,KAAwB,EAAe,EAAE,CACrG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAChJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { type GradeAiScore } from "../grade/ai-score.ts";
2
+ import type { GradeFinding, NotRunEntry } from "../grade/result.ts";
3
+ export type BrowserCheckOptions = {
4
+ /** ja or en. Guessed from the text when left out, as the command line guesses. */
5
+ readonly language?: string | undefined;
6
+ /** A genre (business/report…), as --genre. */
7
+ readonly genre?: string | undefined;
8
+ /** chaff.yaml's contents, already parsed. Without it chaff's defaults apply, as with no chaff.yaml. */
9
+ readonly config?: unknown;
10
+ /** The document's name: rules for Markdown run only on a .md name. document.md when left out. */
11
+ readonly path?: string | undefined;
12
+ /** Run the experimental rules too, as --experimental. */
13
+ readonly experimental?: boolean | undefined;
14
+ };
15
+ /** A finding as `chaff grade` gives it, with the rule's name and its explanation, filled as the command line fills them. */
16
+ export type BrowserFinding = GradeFinding & {
17
+ readonly name: string;
18
+ readonly why: string;
19
+ readonly howToFix: string;
20
+ /** The passage the finding is about. */
21
+ readonly quote: string;
22
+ };
23
+ /**
24
+ * The AI-likeness quick score as chaff grade gives it, with the lint report's words in the document's language: the
25
+ * level or why it was not scored, the signs, and the note that it is not a verdict on who wrote the text.
26
+ */
27
+ export type BrowserAiScore = GradeAiScore & {
28
+ readonly headline: string;
29
+ /** The signs and the thresholds, when the text was scored. */
30
+ readonly signsLine: string | undefined;
31
+ readonly disclaimer: string;
32
+ };
33
+ export type BrowserCheck = {
34
+ readonly language: string;
35
+ readonly genre: string;
36
+ readonly findings: readonly BrowserFinding[];
37
+ readonly aiScore: BrowserAiScore;
38
+ /** Each rule that did not run, and why: so no finding is never read as "checked and fine". */
39
+ readonly notRun: readonly NotRunEntry[];
40
+ };
41
+ export declare const DEFAULT_PATH = "document.md";
42
+ export declare const checkText: (text: string, options: BrowserCheckOptions) => Promise<BrowserCheck>;
43
+ //# sourceMappingURL=check-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-text.d.ts","sourceRoot":"","sources":["../../src/browser/check-text.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASpE,MAAM,MAAM,mBAAmB,GAAG;IAChC,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,uGAAuG;IACvG,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,iGAAiG;IACjG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,yDAAyD;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,4HAA4H;AAC5H,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,8FAA8F;IAC9F,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAmC1C,eAAO,MAAM,SAAS,GAAU,MAAM,MAAM,EAAE,SAAS,mBAAmB,KAAG,OAAO,CAAC,YAAY,CAUhG,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { aiScoreOfDocument } from "../ai-score/of-document.js";
2
+ import { aiScoreHeadline } from "../ai-score/render.js";
3
+ import { HIGH_SIGNS, MEDIUM_SIGNS } from "../ai-score/score.js";
4
+ import { scoreViewOf } from "../ai-score/view.js";
5
+ import { checkSource } from "../check-source.js";
6
+ import { configOf, CONFIG_FILE, EMPTY } from "../config/load.js";
7
+ import { withStyle } from "../config/style.js";
8
+ import { gradeAiScoreOf } from "../grade/ai-score.js";
9
+ import { findingOf } from "../grade/finding.js";
10
+ import { filledText } from "../render/text.js";
11
+ import { loadStyles } from "../style-load.js";
12
+ import { uiLanguageOf } from "../ui.js";
13
+ export const DEFAULT_PATH = "document.md";
14
+ /** The settings chaff.yaml can hold that name files or code: a browser has neither, so they are reported, not applied. */
15
+ const NEEDS_FILES = ["plugins", "include", "by_path"];
16
+ const REASON = {
17
+ ja: "ファイルを読む設定で、ブラウザでは使えないため",
18
+ en: "it reads files, which a browser does not have",
19
+ };
20
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
21
+ /** by_path is dropped: it matches file paths, and a text checked here has none. plugins and include act only on files. */
22
+ const configFrom = (raw) => (raw === undefined ? EMPTY : withStyle({ ...configOf(raw, `/${CONFIG_FILE}`), byPath: [] }, loadStyles()));
23
+ const unappliedSettings = (raw, language) => isRecord(raw) ? NEEDS_FILES.filter((key) => raw[key] !== undefined).map((key) => ({ rule: key, reason: REASON[uiLanguageOf(language)] })) : [];
24
+ const browserFindingOf = (finding, check) => {
25
+ const rule = check.rules.find((entry) => entry.id === finding.rule);
26
+ const fill = (field) => (field === undefined ? "" : filledText(field, finding, check.language));
27
+ return { ...findingOf(finding, check), name: fill(rule?.name), why: fill(rule?.why), howToFix: fill(rule?.how_to_fix), quote: finding.quote };
28
+ };
29
+ const aiScoreFor = (check) => {
30
+ const score = aiScoreOfDocument(check.doc, check.rules, check.genre.genre);
31
+ const view = scoreViewOf(check.language, check.doc.lengthUnit, score.group, check.rules);
32
+ return {
33
+ ...gradeAiScoreOf(score),
34
+ headline: aiScoreHeadline(score, view),
35
+ signsLine: score.level === undefined ? undefined : view.text.signs(score.signs, score.compared, MEDIUM_SIGNS, HIGH_SIGNS),
36
+ disclaimer: view.text.disclaimer,
37
+ };
38
+ };
39
+ export const checkText = async (text, options) => {
40
+ const choice = { language: options.language, genre: options.genre, experimental: options.experimental ?? false };
41
+ const check = await checkSource(options.path ?? DEFAULT_PATH, text, configFrom(options.config), choice);
42
+ return {
43
+ language: check.language,
44
+ genre: check.genre.genre,
45
+ findings: check.applied.kept.map((finding) => browserFindingOf(finding, check)),
46
+ aiScore: aiScoreFor(check),
47
+ notRun: [...check.raw.skipped.map((skipped) => ({ rule: skipped.rule, reason: skipped.why })), ...unappliedSettings(options.config, check.language)],
48
+ };
49
+ };
50
+ //# sourceMappingURL=check-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-text.js","sourceRoot":"","sources":["../../src/browser/check-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAoB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAe,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAc,MAAM,UAAU,CAAC;AA+CpD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C,0HAA0H;AAC1H,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAE/D,MAAM,MAAM,GAAkB;IAC5B,EAAE,EAAE,yBAAyB;IAC7B,EAAE,EAAE,+CAA+C;CACpD,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE5I,0HAA0H;AAC1H,MAAM,UAAU,GAAG,CAAC,GAAY,EAAU,EAAE,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAExJ,MAAM,iBAAiB,GAAG,CAAC,GAAY,EAAE,QAAgB,EAAiB,EAAE,CAC1E,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAEjJ,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,KAAkB,EAAkB,EAAE;IAChF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,CAAC,KAAmD,EAAU,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtJ,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAChJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAkB,EAAkB,EAAE;IACxD,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACzF,OAAO;QACL,GAAG,cAAc,CAAC,KAAK,CAAC;QACxB,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;QACtC,SAAS,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC;QACzH,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,OAA4B,EAAyB,EAAE;IACnG,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC;IACjH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACxG,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;QACxB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/E,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC;QAC1B,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KACrJ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CrossDetector, Detector } from "../plugin.ts";
2
+ export declare const DETECTORS: Readonly<Record<string, Detector>>;
3
+ export declare const CROSS_DETECTORS: Readonly<Record<string, CrossDetector>>;
4
+ //# sourceMappingURL=detectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectors.d.ts","sourceRoot":"","sources":["../../src/browser/detectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA4B5D,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAGxD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAMnE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { registryEntries } from "../detectors/registry-files.js";
2
+ const isDetector = (value) => typeof value === "function";
3
+ const isCrossDetector = (value) => typeof value === "function";
4
+ const fileName = (path) => path.slice(path.lastIndexOf("/") + 1);
5
+ /** From src the files end in .ts, from dist in .js (with .d.ts beside them, which registryEntries leaves out). */
6
+ const registryOf = (loaded, isWanted) => {
7
+ const byName = new Map(Object.entries(loaded).map(([path, detector]) => [fileName(path), detector]));
8
+ const names = [...byName.keys()];
9
+ const extension = names.some((name) => name.endsWith(".js")) ? ".js" : ".ts";
10
+ return Object.fromEntries(registryEntries(names, extension).map(({ file, howToFind }) => {
11
+ const detector = byName.get(file);
12
+ if (!isWanted(detector))
13
+ throw new Error(`chaff: ${file} must export a function named detector`);
14
+ return [howToFind, detector];
15
+ }));
16
+ };
17
+ export const DETECTORS = registryOf(import.meta.glob(["../detectors/registry/*.ts", "../detectors/registry/*.js", "!../detectors/registry/*.d.ts"], { eager: true, import: "detector" }), isDetector);
18
+ export const CROSS_DETECTORS = registryOf(import.meta.glob(["../detectors/cross-registry/*.ts", "../detectors/cross-registry/*.js", "!../detectors/cross-registry/*.d.ts"], {
19
+ eager: true,
20
+ import: "detector",
21
+ }), isCrossDetector);
22
+ //# sourceMappingURL=detectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../src/browser/detectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAOjE,MAAM,UAAU,GAAG,CAAC,KAAc,EAAqB,EAAE,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC;AAEtF,MAAM,eAAe,GAAG,CAAC,KAAc,EAA0B,EAAE,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC;AAEhG,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjF,kHAAkH;AAClH,MAAM,UAAU,GAAG,CAAI,MAAc,EAAE,QAAwC,EAA+B,EAAE;IAC9G,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7E,OAAO,MAAM,CAAC,WAAW,CACvB,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,wCAAwC,CAAC,CAAC;QACjG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAuC,UAAU,CACrE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,4BAA4B,EAAE,4BAA4B,EAAE,+BAA+B,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EACpJ,UAAU,CACX,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA4C,UAAU,CAChF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kCAAkC,EAAE,kCAAkC,EAAE,qCAAqC,CAAC,EAAE;IAChI,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,UAAU;CACnB,CAAC,EACF,eAAe,CAChB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const PACKAGE_DIR: string;
2
+ export declare const readText: (path: string) => string;
3
+ export declare const readDir: (path: string) => string[];
4
+ export declare const exists: (path: string) => boolean;
5
+ //# sourceMappingURL=package-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-files.d.ts","sourceRoot":"","sources":["../../src/browser/package-files.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,QAAa,CAAC;AAEtC,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,MAA8B,CAAC;AAEvE,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,MAAM,EAAyB,CAAC;AAEvE,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,OAA6B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { packageFiles } from "chaffjs/browser-files";
2
+ // package-files.ts in a build without a file system: chaff's files from memory, rooted at /chaffjs.
3
+ const files = packageFiles("chaffjs");
4
+ export const PACKAGE_DIR = files.root;
5
+ export const readText = (path) => files.readText(path);
6
+ export const readDir = (path) => files.readDir(path);
7
+ export const exists = (path) => files.exists(path);
8
+ //# sourceMappingURL=package-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-files.js","sourceRoot":"","sources":["../../src/browser/package-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,oGAAoG;AAEpG,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;AAEtC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const sep = "/";
2
+ export declare const normalize: (path: string) => string;
3
+ export declare const join: (...parts: readonly string[]) => string;
4
+ export declare const isAbsolute: (path: string) => boolean;
5
+ export declare const resolve: (...parts: readonly string[]) => string;
6
+ export declare const relative: (from: string, to: string) => string;
7
+ export declare const dirname: (path: string) => string;
8
+ export declare const extname: (path: string) => string;
9
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/browser/path.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,GAAG,MAAM,CAAC;AAWvB,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAOxC,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,GAAG,OAAO,SAAS,MAAM,EAAE,KAAG,MAGlD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,OAA+B,CAAC;AAE1E,eAAO,MAAM,OAAO,GAAI,GAAG,OAAO,SAAS,MAAM,EAAE,KAAG,MAOrD,CAAC;AAOF,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,IAAI,MAAM,KAAG,MAMnD,CAAC;AASF,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,MAMtC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,MAKtC,CAAC"}
@@ -0,0 +1,70 @@
1
+ // node:path for a build without Node: the POSIX functions chaff imports, over the in-memory files of chaffjs/browser-files.
2
+ // The working folder is "/". test/test_browser_path.ts holds each function to node:path's posix one on generated paths.
3
+ export const sep = "/";
4
+ const normalizedParts = (parts, absolute) => parts.reduce((kept, part) => {
5
+ if (part === "" || part === ".")
6
+ return kept;
7
+ if (part !== "..")
8
+ return [...kept, part];
9
+ const last = kept.at(-1);
10
+ if (last !== undefined && last !== "..")
11
+ return kept.slice(0, -1);
12
+ return absolute ? kept : [...kept, ".."];
13
+ }, []);
14
+ export const normalize = (path) => {
15
+ if (path === "")
16
+ return ".";
17
+ const absolute = path.startsWith("/");
18
+ const body = normalizedParts(path.split("/"), absolute).join("/");
19
+ const trailing = path.endsWith("/") ? "/" : "";
20
+ if (absolute)
21
+ return body === "" ? "/" : `/${body}${trailing}`;
22
+ return `${body === "" ? "." : body}${trailing}`;
23
+ };
24
+ export const join = (...parts) => {
25
+ const joined = parts.filter((part) => part !== "").join("/");
26
+ return joined === "" ? "." : normalize(joined);
27
+ };
28
+ export const isAbsolute = (path) => path.startsWith("/");
29
+ export const resolve = (...parts) => {
30
+ const from = parts.reduceRight((acc, part) => {
31
+ if (acc.startsWith("/") || part === "")
32
+ return acc;
33
+ return acc === "" ? part : `${part}/${acc}`;
34
+ }, "");
35
+ const resolved = normalize(from.startsWith("/") ? from : `/${from}`);
36
+ return resolved.length > 1 && resolved.endsWith("/") ? resolved.slice(0, -1) : resolved;
37
+ };
38
+ const segmentsOf = (path) => resolve(path)
39
+ .split("/")
40
+ .filter((part) => part !== "");
41
+ export const relative = (from, to) => {
42
+ const fromParts = segmentsOf(from);
43
+ const toParts = segmentsOf(to);
44
+ const differs = fromParts.findIndex((part, index) => toParts[index] !== part);
45
+ const shared = differs === -1 ? Math.min(fromParts.length, toParts.length) : differs;
46
+ return [...fromParts.slice(shared).map(() => ".."), ...toParts.slice(shared)].join("/");
47
+ };
48
+ /** The index of the last character that is not a slash, or -1. */
49
+ const lastNonSlash = (path) => {
50
+ let at = path.length - 1;
51
+ while (at >= 0 && path[at] === "/")
52
+ at -= 1;
53
+ return at;
54
+ };
55
+ export const dirname = (path) => {
56
+ if (path === "")
57
+ return ".";
58
+ const last = lastNonSlash(path);
59
+ const end = last <= 0 ? -1 : path.lastIndexOf("/", last);
60
+ if (end < 1)
61
+ return path.startsWith("/") ? "/" : ".";
62
+ return end === 1 && path.startsWith("/") ? "//" : path.slice(0, end);
63
+ };
64
+ export const extname = (path) => {
65
+ const end = lastNonSlash(path) + 1;
66
+ const name = path.slice(path.lastIndexOf("/", end - 1) + 1, end);
67
+ const dot = name.lastIndexOf(".");
68
+ return dot <= 0 || name === ".." ? "" : name.slice(dot);
69
+ };
70
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/browser/path.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const workingDir: () => string;
2
+ //# sourceMappingURL=working-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"working-dir.d.ts","sourceRoot":"","sources":["../../src/browser/working-dir.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,QAAO,MAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ // config/working-dir.ts in a build without a process: the root of the in-memory files.
2
+ export const workingDir = () => "/";
3
+ //# sourceMappingURL=working-dir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"working-dir.js","sourceRoot":"","sources":["../../src/browser/working-dir.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,GAAG,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** One package's files: path in the package (rules/max-sentence-length.yaml) → text. */
2
+ export type PackageFiles = Readonly<Record<string, string>>;
3
+ /** Where the files come from, and where kuromoji's dictionary is served (a URL ending in /). */
4
+ export type BrowserSetup = {
5
+ readonly files: (packageName: string) => Promise<PackageFiles>;
6
+ readonly kuromojiDictionaryUrl: string;
7
+ };
8
+ /** Each dictionary file is fetched at new URL(file name, kuromojiDictionaryUrl), so that URL must be absolute and end in /. */
9
+ export declare const setupBrowserFiles: (setup: BrowserSetup) => void;
10
+ /** Asks for a package's files the first time they are needed, and keeps them. */
11
+ export declare const ensurePackageFiles: (packageName: string) => Promise<void>;
12
+ export declare const kuromojiDictionaryUrl: () => string;
13
+ /** A package's files as a read-only file system rooted at /<package name>. */
14
+ export type PackageFileReader = {
15
+ readonly root: string;
16
+ readonly readText: (path: string) => string;
17
+ readonly readDir: (path: string) => string[];
18
+ readonly exists: (path: string) => boolean;
19
+ };
20
+ export declare const packageFiles: (packageName: string) => PackageFileReader;
21
+ //# sourceMappingURL=browser-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-files.d.ts","sourceRoot":"","sources":["../src/browser-files.ts"],"names":[],"mappings":"AAIA,wFAAwF;AACxF,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5D,gGAAgG;AAChG,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/D,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC,CAAC;AAMF,+HAA+H;AAC/H,eAAO,MAAM,iBAAiB,GAAI,OAAO,YAAY,KAAG,IAIvD,CAAC;AAOF,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAI1E,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,MAAyC,CAAC;AAEnF,8EAA8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C,CAAC;AAmBF,eAAO,MAAM,YAAY,GAAI,aAAa,MAAM,KAAG,iBAuBlD,CAAC"}
@@ -0,0 +1,65 @@
1
+ // The files chaff and its language packages ship (rules, genres, lexicons), held in memory for a build without a file
2
+ // system. Every package reads its own through `packageFiles`, with the same paths the file system would give: one store,
3
+ // imported by name (chaffjs/browser-files) so the browser entry and each package's reads meet in the same module.
4
+ const store = { setup: undefined, installed: new Map() };
5
+ /** Each dictionary file is fetched at new URL(file name, kuromojiDictionaryUrl), so that URL must be absolute and end in /. */
6
+ export const setupBrowserFiles = (setup) => {
7
+ if (!URL.canParse(setup.kuromojiDictionaryUrl) || !setup.kuromojiDictionaryUrl.endsWith("/"))
8
+ throw new Error(`chaff: kuromojiDictionaryUrl must be an absolute URL ending in /: ${setup.kuromojiDictionaryUrl}`);
9
+ store.setup = setup;
10
+ };
11
+ const setupOf = () => {
12
+ if (store.setup === undefined)
13
+ throw new Error("chaff: call setupBrowser() before check()");
14
+ return store.setup;
15
+ };
16
+ /** Asks for a package's files the first time they are needed, and keeps them. */
17
+ export const ensurePackageFiles = async (packageName) => {
18
+ if (store.installed.has(packageName))
19
+ return;
20
+ const files = await setupOf().files(packageName);
21
+ store.installed.set(packageName, files);
22
+ };
23
+ export const kuromojiDictionaryUrl = () => setupOf().kuromojiDictionaryUrl;
24
+ const filesOf = (packageName) => {
25
+ const files = store.installed.get(packageName);
26
+ if (files === undefined)
27
+ throw new Error(`chaff: the files of ${packageName} are not loaded`);
28
+ return files;
29
+ };
30
+ const inPackage = (root, path) => (path.startsWith(`${root}/`) ? path.slice(root.length + 1) : undefined);
31
+ const childrenOf = (files, dir) => Object.keys(files).flatMap((key) => {
32
+ if (!key.startsWith(`${dir}/`))
33
+ return [];
34
+ const name = key.slice(dir.length + 1);
35
+ return name.includes("/") ? [] : [name];
36
+ });
37
+ const noSuchFile = (path) => Object.assign(new Error(`ENOENT: no such file or directory, '${path}'`), { code: "ENOENT" });
38
+ export const packageFiles = (packageName) => {
39
+ const root = `/${packageName}`;
40
+ return {
41
+ root,
42
+ readText: (path) => {
43
+ const key = inPackage(root, path);
44
+ const text = key === undefined ? undefined : filesOf(packageName)[key];
45
+ if (text === undefined)
46
+ throw noSuchFile(path);
47
+ return text;
48
+ },
49
+ readDir: (path) => {
50
+ const key = inPackage(root, path);
51
+ const names = key === undefined ? [] : childrenOf(filesOf(packageName), key);
52
+ if (names.length === 0)
53
+ throw noSuchFile(path);
54
+ return names;
55
+ },
56
+ exists: (path) => {
57
+ const key = inPackage(root, path);
58
+ if (key === undefined)
59
+ return false;
60
+ const files = filesOf(packageName);
61
+ return Object.hasOwn(files, key) || childrenOf(files, key).length > 0;
62
+ },
63
+ };
64
+ };
65
+ //# sourceMappingURL=browser-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-files.js","sourceRoot":"","sources":["../src/browser-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type BrowserSetup } from "chaffjs/browser-files";
2
+ import type { BrowserCheck, BrowserCheckOptions } from "./browser/check-text.ts";
3
+ export type { BrowserSetup, PackageFiles } from "chaffjs/browser-files";
4
+ export type { BrowserAiScore, BrowserCheck, BrowserCheckOptions, BrowserFinding } from "./browser/check-text.ts";
5
+ export type { NotRunEntry } from "./grade/result.ts";
6
+ export declare const setupBrowser: (setup: BrowserSetup) => void;
7
+ /** Checks one text as `chaff <file>` does, and returns its findings and the rules that did not run, with why. */
8
+ export declare const check: (text: string, options?: BrowserCheckOptions) => Promise<BrowserCheck>;
9
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACjH,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,YAAY,GAAI,OAAO,YAAY,KAAG,IAAgC,CAAC;AAEpF,iHAAiH;AACjH,eAAO,MAAM,KAAK,GAAU,MAAM,MAAM,EAAE,UAAS,mBAAwB,KAAG,OAAO,CAAC,YAAY,CAIjG,CAAC"}
@@ -0,0 +1,13 @@
1
+ // `chaffjs/browser`: chaff in a web page, with no file system and no server. Each package's files (rules, lexicons)
2
+ // come from setupBrowser's `files`, asked for only when needed: chaff's own at the first check, a language's at the
3
+ // first text in it. Nothing the page checks is sent anywhere. Built for a bundler that reads package.json's "browser"
4
+ // field and import.meta.glob (Vite).
5
+ import { ensurePackageFiles, setupBrowserFiles } from "chaffjs/browser-files";
6
+ export const setupBrowser = (setup) => setupBrowserFiles(setup);
7
+ /** Checks one text as `chaff <file>` does, and returns its findings and the rules that did not run, with why. */
8
+ export const check = async (text, options = {}) => {
9
+ await ensurePackageFiles("chaffjs");
10
+ const { checkText } = await import("./browser/check-text.js");
11
+ return checkText(text, options);
12
+ };
13
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,oHAAoH;AACpH,oHAAoH;AACpH,sHAAsH;AACtH,qCAAqC;AACrC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAqB,MAAM,uBAAuB,CAAC;AAOjG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAmB,EAAQ,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAEpF,iHAAiH;AACjH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,IAAY,EAAE,UAA+B,EAAE,EAAyB,EAAE;IACpG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-text.d.ts","sourceRoot":"","sources":["../src/cli-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-text.d.ts","sourceRoot":"","sources":["../src/cli-text.ts"],"names":[],"mappings":"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"}
package/dist/cli-text.js CHANGED
@@ -29,6 +29,7 @@ const USAGE_JA = `chaff — 文章の読みにくいところを見つけます
29
29
  chaff compare <前> <後> 書き換えで事実(数・日付・URL・コード・名前・引用…)が落ちても足されてもいないかを確かめる
30
30
  chaff facts <file> compare が照合する事実を、書き直す前の控えとして一覧にする
31
31
  chaff outline <file> [<後>] 見出しの構成と形(見出しの数・節の平均の長さ・箇条書きの割合・太字)を測る。2 つなら前と後を並べる
32
+ chaff ai-score <file>... [--format json] AI らしさの簡易判定(低・中・高)。生成文に多い目印を、同じジャンルの人の文書と比べる(書いたのが AI かは判定しない)
32
33
  chaff grade <items.jsonl> [--out <results.jsonl>] [--json]
33
34
  AI の出力を JSONL でまとめて採点する(指摘の率・事実・引用・合否。何も送らない)
34
35
  chaff fix-plan <file> [--json] 指摘をルールごとにまとめ、直す方向と確かめのコマンドを、書き直す人や AI 向けの計画にする(何も送らない)
@@ -74,6 +75,7 @@ const USAGE_EN = `chaff — finds what makes writing hard to read. It never rewr
74
75
  chaff compare <before> <after> check that a rewrite dropped no fact and added none (numbers, dates, URLs, code, names, quotations…)
75
76
  chaff facts <file> list the facts compare checks, as an inventory to keep before a rewrite
76
77
  chaff outline <file> [<after>] measure the outline and its shape (headings, average section length, text in lists, bold); two files side by side
78
+ chaff ai-score <file>... [--format json] quick AI-likeness score (low, medium, high): signs common in generated text against human documents of the genre (not a verdict on who wrote it)
77
79
  chaff grade <items.jsonl> [--out <results.jsonl>] [--json]
78
80
  grade a JSONL file of model outputs (finding rates, facts, quotations, pass or fail; sends nothing)
79
81
  chaff fix-plan <file> [--json] a plan for whoever rewrites the file, a person or an AI: findings by rule, how to rewrite each, the checks to run after (sends nothing)