@kensio/pinyinjs 1.7.4 → 1.7.5

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 (695) hide show
  1. package/dist/accuracy/score-case.d.ts +23 -0
  2. package/dist/accuracy/score-case.d.ts.map +1 -0
  3. package/dist/accuracy/score-case.js +63 -0
  4. package/dist/accuracy/score-case.js.map +1 -0
  5. package/dist/accuracy/score.d.ts +1 -8
  6. package/dist/accuracy/score.d.ts.map +1 -1
  7. package/dist/accuracy/score.js +1 -55
  8. package/dist/accuracy/score.js.map +1 -1
  9. package/dist/cli/arguments.d.ts +4 -290
  10. package/dist/cli/arguments.d.ts.map +1 -1
  11. package/dist/cli/arguments.js +5 -357
  12. package/dist/cli/arguments.js.map +1 -1
  13. package/dist/cli/check-command.d.ts +9 -0
  14. package/dist/cli/check-command.d.ts.map +1 -0
  15. package/dist/cli/check-command.js +95 -0
  16. package/dist/cli/check-command.js.map +1 -0
  17. package/dist/cli/cli-input.d.ts +49 -0
  18. package/dist/cli/cli-input.d.ts.map +1 -0
  19. package/dist/cli/cli-input.js +31 -0
  20. package/dist/cli/cli-input.js.map +1 -0
  21. package/dist/cli/command.d.ts +97 -0
  22. package/dist/cli/command.d.ts.map +1 -0
  23. package/dist/cli/command.js +40 -0
  24. package/dist/cli/command.js.map +1 -0
  25. package/dist/cli/commands.d.ts +7 -110
  26. package/dist/cli/commands.d.ts.map +1 -1
  27. package/dist/cli/commands.js +14 -991
  28. package/dist/cli/commands.js.map +1 -1
  29. package/dist/cli/convert-command.d.ts +6 -0
  30. package/dist/cli/convert-command.d.ts.map +1 -0
  31. package/dist/cli/convert-command.js +52 -0
  32. package/dist/cli/convert-command.js.map +1 -0
  33. package/dist/cli/environment.d.ts +1 -1
  34. package/dist/cli/environment.d.ts.map +1 -1
  35. package/dist/cli/explain-command.d.ts +6 -0
  36. package/dist/cli/explain-command.d.ts.map +1 -0
  37. package/dist/cli/explain-command.js +40 -0
  38. package/dist/cli/explain-command.js.map +1 -0
  39. package/dist/cli/explain-syllable.d.ts +10 -0
  40. package/dist/cli/explain-syllable.d.ts.map +1 -0
  41. package/dist/cli/explain-syllable.js +70 -0
  42. package/dist/cli/explain-syllable.js.map +1 -0
  43. package/dist/cli/flag-help.d.ts +18 -0
  44. package/dist/cli/flag-help.d.ts.map +1 -0
  45. package/dist/cli/flag-help.js +78 -0
  46. package/dist/cli/flag-help.js.map +1 -0
  47. package/dist/cli/flag-lists.d.ts +49 -0
  48. package/dist/cli/flag-lists.d.ts.map +1 -0
  49. package/dist/cli/flag-lists.js +58 -0
  50. package/dist/cli/flag-lists.js.map +1 -0
  51. package/dist/cli/flag-values.d.ts +44 -0
  52. package/dist/cli/flag-values.d.ts.map +1 -0
  53. package/dist/cli/flag-values.js +56 -0
  54. package/dist/cli/flag-values.js.map +1 -0
  55. package/dist/cli/flags.d.ts +193 -0
  56. package/dist/cli/flags.d.ts.map +1 -0
  57. package/dist/cli/flags.js +133 -0
  58. package/dist/cli/flags.js.map +1 -0
  59. package/dist/cli/format-options.d.ts +29 -0
  60. package/dist/cli/format-options.d.ts.map +1 -0
  61. package/dist/cli/format-options.js +72 -0
  62. package/dist/cli/format-options.js.map +1 -0
  63. package/dist/cli/global-help.d.ts +23 -0
  64. package/dist/cli/global-help.d.ts.map +1 -0
  65. package/dist/cli/global-help.js +40 -0
  66. package/dist/cli/global-help.js.map +1 -0
  67. package/dist/cli/help.d.ts +1 -1
  68. package/dist/cli/help.d.ts.map +1 -1
  69. package/dist/cli/help.js +5 -99
  70. package/dist/cli/help.js.map +1 -1
  71. package/dist/cli/html-commands.d.ts +13 -0
  72. package/dist/cli/html-commands.d.ts.map +1 -0
  73. package/dist/cli/html-commands.js +49 -0
  74. package/dist/cli/html-commands.js.map +1 -0
  75. package/dist/cli/info-command.d.ts +7 -0
  76. package/dist/cli/info-command.d.ts.map +1 -0
  77. package/dist/cli/info-command.js +39 -0
  78. package/dist/cli/info-command.js.map +1 -0
  79. package/dist/cli/lookup-commands.d.ts +10 -0
  80. package/dist/cli/lookup-commands.d.ts.map +1 -0
  81. package/dist/cli/lookup-commands.js +101 -0
  82. package/dist/cli/lookup-commands.js.map +1 -0
  83. package/dist/cli/match-command.d.ts +11 -0
  84. package/dist/cli/match-command.d.ts.map +1 -0
  85. package/dist/cli/match-command.js +76 -0
  86. package/dist/cli/match-command.js.map +1 -0
  87. package/dist/cli/number-command.d.ts +12 -0
  88. package/dist/cli/number-command.d.ts.map +1 -0
  89. package/dist/cli/number-command.js +89 -0
  90. package/dist/cli/number-command.js.map +1 -0
  91. package/dist/cli/options.d.ts +30 -0
  92. package/dist/cli/options.d.ts.map +1 -0
  93. package/dist/cli/options.js +54 -0
  94. package/dist/cli/options.js.map +1 -0
  95. package/dist/cli/run-command.d.ts +24 -0
  96. package/dist/cli/run-command.d.ts.map +1 -0
  97. package/dist/cli/run-command.js +40 -0
  98. package/dist/cli/run-command.js.map +1 -0
  99. package/dist/cli/run.d.ts +4 -42
  100. package/dist/cli/run.d.ts.map +1 -1
  101. package/dist/cli/run.js +6 -61
  102. package/dist/cli/run.js.map +1 -1
  103. package/dist/cli/script-command.d.ts +10 -0
  104. package/dist/cli/script-command.d.ts.map +1 -0
  105. package/dist/cli/script-command.js +58 -0
  106. package/dist/cli/script-command.js.map +1 -0
  107. package/dist/cli/segment-command.d.ts +11 -0
  108. package/dist/cli/segment-command.d.ts.map +1 -0
  109. package/dist/cli/segment-command.js +53 -0
  110. package/dist/cli/segment-command.js.map +1 -0
  111. package/dist/cli/slug-command.d.ts +10 -0
  112. package/dist/cli/slug-command.d.ts.map +1 -0
  113. package/dist/cli/slug-command.js +28 -0
  114. package/dist/cli/slug-command.js.map +1 -0
  115. package/dist/cli/syllable-command.d.ts +14 -0
  116. package/dist/cli/syllable-command.d.ts.map +1 -0
  117. package/dist/cli/syllable-command.js +82 -0
  118. package/dist/cli/syllable-command.js.map +1 -0
  119. package/dist/cli/system-table.d.ts +12 -0
  120. package/dist/cli/system-table.d.ts.map +1 -0
  121. package/dist/cli/system-table.js +48 -0
  122. package/dist/cli/system-table.js.map +1 -0
  123. package/dist/cli/systems.d.ts +57 -0
  124. package/dist/cli/systems.d.ts.map +1 -0
  125. package/dist/cli/systems.js +27 -0
  126. package/dist/cli/systems.js.map +1 -0
  127. package/dist/cli/transcribe-command.d.ts +18 -0
  128. package/dist/cli/transcribe-command.d.ts.map +1 -0
  129. package/dist/cli/transcribe-command.js +86 -0
  130. package/dist/cli/transcribe-command.js.map +1 -0
  131. package/dist/cli/transcribe-reading.d.ts +15 -0
  132. package/dist/cli/transcribe-reading.d.ts.map +1 -0
  133. package/dist/cli/transcribe-reading.js +90 -0
  134. package/dist/cli/transcribe-reading.js.map +1 -0
  135. package/dist/cli/transcribe-rows.d.ts +26 -0
  136. package/dist/cli/transcribe-rows.d.ts.map +1 -0
  137. package/dist/cli/transcribe-rows.js +30 -0
  138. package/dist/cli/transcribe-rows.js.map +1 -0
  139. package/dist/cli/usage-error.d.ts +9 -0
  140. package/dist/cli/usage-error.d.ts.map +1 -0
  141. package/dist/cli/usage-error.js +9 -0
  142. package/dist/cli/usage-error.js.map +1 -0
  143. package/dist/decode/alternatives.d.ts +16 -0
  144. package/dist/decode/alternatives.d.ts.map +1 -0
  145. package/dist/decode/alternatives.js +31 -0
  146. package/dist/decode/alternatives.js.map +1 -0
  147. package/dist/decode/confidence.d.ts.map +1 -1
  148. package/dist/decode/confidence.js +3 -118
  149. package/dist/decode/confidence.js.map +1 -1
  150. package/dist/decode/convert-options.d.ts +116 -0
  151. package/dist/decode/convert-options.d.ts.map +1 -0
  152. package/dist/decode/convert-options.js +2 -0
  153. package/dist/decode/convert-options.js.map +1 -0
  154. package/dist/decode/convert-pipeline.d.ts +18 -0
  155. package/dist/decode/convert-pipeline.d.ts.map +1 -0
  156. package/dist/decode/convert-pipeline.js +66 -0
  157. package/dist/decode/convert-pipeline.js.map +1 -0
  158. package/dist/decode/convert.d.ts +9 -118
  159. package/dist/decode/convert.d.ts.map +1 -1
  160. package/dist/decode/convert.js +5 -453
  161. package/dist/decode/convert.js.map +1 -1
  162. package/dist/decode/decode.d.ts +2 -15
  163. package/dist/decode/decode.d.ts.map +1 -1
  164. package/dist/decode/decode.js +2 -121
  165. package/dist/decode/decode.js.map +1 -1
  166. package/dist/decode/decoders.d.ts +32 -0
  167. package/dist/decode/decoders.d.ts.map +1 -0
  168. package/dist/decode/decoders.js +29 -0
  169. package/dist/decode/decoders.js.map +1 -0
  170. package/dist/decode/edge-context.d.ts +38 -0
  171. package/dist/decode/edge-context.d.ts.map +1 -0
  172. package/dist/decode/edge-context.js +57 -0
  173. package/dist/decode/edge-context.js.map +1 -0
  174. package/dist/decode/hint-lattice.d.ts +45 -0
  175. package/dist/decode/hint-lattice.d.ts.map +1 -0
  176. package/dist/decode/hint-lattice.js +140 -0
  177. package/dist/decode/hint-lattice.js.map +1 -0
  178. package/dist/decode/hints.d.ts +2 -45
  179. package/dist/decode/hints.d.ts.map +1 -1
  180. package/dist/decode/hints.js +1 -139
  181. package/dist/decode/hints.js.map +1 -1
  182. package/dist/decode/jiao-rule.d.ts +58 -0
  183. package/dist/decode/jiao-rule.d.ts.map +1 -0
  184. package/dist/decode/jiao-rule.js +76 -0
  185. package/dist/decode/jiao-rule.js.map +1 -0
  186. package/dist/decode/lattice-costs.d.ts +55 -0
  187. package/dist/decode/lattice-costs.d.ts.map +1 -0
  188. package/dist/decode/lattice-costs.js +90 -0
  189. package/dist/decode/lattice-costs.js.map +1 -0
  190. package/dist/decode/lattice-edges.d.ts +29 -0
  191. package/dist/decode/lattice-edges.d.ts.map +1 -0
  192. package/dist/decode/lattice-edges.js +78 -0
  193. package/dist/decode/lattice-edges.js.map +1 -0
  194. package/dist/decode/lattice-slice.d.ts +37 -0
  195. package/dist/decode/lattice-slice.d.ts.map +1 -0
  196. package/dist/decode/lattice-slice.js +43 -0
  197. package/dist/decode/lattice-slice.js.map +1 -0
  198. package/dist/decode/lattice-types.d.ts +82 -0
  199. package/dist/decode/lattice-types.d.ts.map +1 -0
  200. package/dist/decode/lattice-types.js +44 -0
  201. package/dist/decode/lattice-types.js.map +1 -0
  202. package/dist/decode/lattice.d.ts +2 -59
  203. package/dist/decode/lattice.d.ts.map +1 -1
  204. package/dist/decode/lattice.js +2 -118
  205. package/dist/decode/lattice.js.map +1 -1
  206. package/dist/decode/number-pieces.d.ts +62 -0
  207. package/dist/decode/number-pieces.d.ts.map +1 -0
  208. package/dist/decode/number-pieces.js +106 -0
  209. package/dist/decode/number-pieces.js.map +1 -0
  210. package/dist/decode/numbers.d.ts +53 -0
  211. package/dist/decode/numbers.d.ts.map +1 -0
  212. package/dist/decode/numbers.js +69 -0
  213. package/dist/decode/numbers.js.map +1 -0
  214. package/dist/decode/pieces.d.ts +78 -0
  215. package/dist/decode/pieces.d.ts.map +1 -0
  216. package/dist/decode/pieces.js +136 -0
  217. package/dist/decode/pieces.js.map +1 -0
  218. package/dist/decode/polyphone-rules.d.ts +31 -0
  219. package/dist/decode/polyphone-rules.d.ts.map +1 -0
  220. package/dist/decode/polyphone-rules.js +159 -0
  221. package/dist/decode/polyphone-rules.js.map +1 -0
  222. package/dist/decode/reading-rules.d.ts +2 -97
  223. package/dist/decode/reading-rules.d.ts.map +1 -1
  224. package/dist/decode/reading-rules.js +4 -365
  225. package/dist/decode/reading-rules.js.map +1 -1
  226. package/dist/decode/rules.d.ts +1 -17
  227. package/dist/decode/rules.d.ts.map +1 -1
  228. package/dist/decode/rules.js +1 -43
  229. package/dist/decode/rules.js.map +1 -1
  230. package/dist/decode/run-lattice.d.ts +52 -0
  231. package/dist/decode/run-lattice.d.ts.map +1 -0
  232. package/dist/decode/run-lattice.js +91 -0
  233. package/dist/decode/run-lattice.js.map +1 -0
  234. package/dist/decode/sandhi-tones.d.ts +69 -0
  235. package/dist/decode/sandhi-tones.d.ts.map +1 -0
  236. package/dist/decode/sandhi-tones.js +88 -0
  237. package/dist/decode/sandhi-tones.js.map +1 -0
  238. package/dist/decode/sandhi.d.ts +1 -1
  239. package/dist/decode/sandhi.d.ts.map +1 -1
  240. package/dist/decode/sandhi.js +1 -81
  241. package/dist/decode/sandhi.js.map +1 -1
  242. package/dist/decode/script-types.d.ts +76 -0
  243. package/dist/decode/script-types.d.ts.map +1 -0
  244. package/dist/decode/script-types.js +35 -0
  245. package/dist/decode/script-types.js.map +1 -0
  246. package/dist/decode/script-words.d.ts +32 -0
  247. package/dist/decode/script-words.d.ts.map +1 -0
  248. package/dist/decode/script-words.js +77 -0
  249. package/dist/decode/script-words.js.map +1 -0
  250. package/dist/decode/script.d.ts +3 -73
  251. package/dist/decode/script.d.ts.map +1 -1
  252. package/dist/decode/script.js +3 -109
  253. package/dist/decode/script.js.map +1 -1
  254. package/dist/decode/tan-rule.d.ts +68 -0
  255. package/dist/decode/tan-rule.d.ts.map +1 -0
  256. package/dist/decode/tan-rule.js +131 -0
  257. package/dist/decode/tan-rule.js.map +1 -0
  258. package/dist/decode/write-run.d.ts +28 -0
  259. package/dist/decode/write-run.d.ts.map +1 -0
  260. package/dist/decode/write-run.js +77 -0
  261. package/dist/decode/write-run.js.map +1 -0
  262. package/dist/dictionary/artifact-claims.d.ts +25 -0
  263. package/dist/dictionary/artifact-claims.d.ts.map +1 -0
  264. package/dist/dictionary/artifact-claims.js +47 -0
  265. package/dist/dictionary/artifact-claims.js.map +1 -0
  266. package/dist/dictionary/artifact-format.d.ts +86 -0
  267. package/dist/dictionary/artifact-format.d.ts.map +1 -0
  268. package/dist/dictionary/artifact-format.js +91 -0
  269. package/dist/dictionary/artifact-format.js.map +1 -0
  270. package/dist/dictionary/artifact-read.d.ts +34 -0
  271. package/dist/dictionary/artifact-read.d.ts.map +1 -0
  272. package/dist/dictionary/artifact-read.js +114 -0
  273. package/dist/dictionary/artifact-read.js.map +1 -0
  274. package/dist/dictionary/artifact.d.ts +4 -63
  275. package/dist/dictionary/artifact.d.ts.map +1 -1
  276. package/dist/dictionary/artifact.js +12 -229
  277. package/dist/dictionary/artifact.js.map +1 -1
  278. package/dist/dictionary/assertions.d.ts +5 -57
  279. package/dist/dictionary/assertions.d.ts.map +1 -1
  280. package/dist/dictionary/assertions.js +4 -317
  281. package/dist/dictionary/assertions.js.map +1 -1
  282. package/dist/dictionary/build-assertions.d.ts +12 -0
  283. package/dist/dictionary/build-assertions.d.ts.map +1 -0
  284. package/dist/dictionary/build-assertions.js +13 -0
  285. package/dist/dictionary/build-assertions.js.map +1 -0
  286. package/dist/dictionary/built-dictionary.d.ts +46 -0
  287. package/dist/dictionary/built-dictionary.d.ts.map +1 -0
  288. package/dist/dictionary/built-dictionary.js +97 -0
  289. package/dist/dictionary/built-dictionary.js.map +1 -0
  290. package/dist/dictionary/cedict-senses.d.ts +80 -0
  291. package/dist/dictionary/cedict-senses.d.ts.map +1 -0
  292. package/dist/dictionary/cedict-senses.js +114 -0
  293. package/dist/dictionary/cedict-senses.js.map +1 -0
  294. package/dist/dictionary/character-defaults.d.ts +26 -0
  295. package/dist/dictionary/character-defaults.d.ts.map +1 -0
  296. package/dist/dictionary/character-defaults.js +67 -0
  297. package/dist/dictionary/character-defaults.js.map +1 -0
  298. package/dist/dictionary/character-readings.d.ts +10 -0
  299. package/dist/dictionary/character-readings.d.ts.map +1 -0
  300. package/dist/dictionary/character-readings.js +25 -0
  301. package/dist/dictionary/character-readings.js.map +1 -0
  302. package/dist/dictionary/dictionary-entry.d.ts +37 -0
  303. package/dist/dictionary/dictionary-entry.d.ts.map +1 -0
  304. package/dist/dictionary/dictionary-entry.js +41 -0
  305. package/dist/dictionary/dictionary-entry.js.map +1 -0
  306. package/dist/dictionary/dictionary-readings.d.ts +56 -0
  307. package/dist/dictionary/dictionary-readings.d.ts.map +1 -0
  308. package/dist/dictionary/dictionary-readings.js +93 -0
  309. package/dist/dictionary/dictionary-readings.js.map +1 -0
  310. package/dist/dictionary/dictionary.d.ts +6 -60
  311. package/dist/dictionary/dictionary.d.ts.map +1 -1
  312. package/dist/dictionary/dictionary.js +9 -169
  313. package/dist/dictionary/dictionary.js.map +1 -1
  314. package/dist/dictionary/entry-invariants.d.ts +3 -0
  315. package/dist/dictionary/entry-invariants.d.ts.map +1 -0
  316. package/dist/dictionary/entry-invariants.js +67 -0
  317. package/dist/dictionary/entry-invariants.js.map +1 -0
  318. package/dist/dictionary/entry-lines.d.ts +35 -0
  319. package/dist/dictionary/entry-lines.d.ts.map +1 -0
  320. package/dist/dictionary/entry-lines.js +70 -0
  321. package/dist/dictionary/entry-lines.js.map +1 -0
  322. package/dist/dictionary/erhua-repair.d.ts +26 -0
  323. package/dist/dictionary/erhua-repair.d.ts.map +1 -0
  324. package/dist/dictionary/erhua-repair.js +49 -0
  325. package/dist/dictionary/erhua-repair.js.map +1 -0
  326. package/dist/dictionary/frequency-tones.d.ts +74 -0
  327. package/dist/dictionary/frequency-tones.d.ts.map +1 -0
  328. package/dist/dictionary/frequency-tones.js +128 -0
  329. package/dist/dictionary/frequency-tones.js.map +1 -0
  330. package/dist/dictionary/inventory-invariants.d.ts +3 -0
  331. package/dist/dictionary/inventory-invariants.d.ts.map +1 -0
  332. package/dist/dictionary/inventory-invariants.js +54 -0
  333. package/dist/dictionary/inventory-invariants.js.map +1 -0
  334. package/dist/dictionary/locale-candidates.d.ts +40 -0
  335. package/dist/dictionary/locale-candidates.d.ts.map +1 -0
  336. package/dist/dictionary/locale-candidates.js +77 -0
  337. package/dist/dictionary/locale-candidates.js.map +1 -0
  338. package/dist/dictionary/locale-segments.d.ts +47 -0
  339. package/dist/dictionary/locale-segments.d.ts.map +1 -0
  340. package/dist/dictionary/locale-segments.js +141 -0
  341. package/dist/dictionary/locale-segments.js.map +1 -0
  342. package/dist/dictionary/locale.d.ts +1 -21
  343. package/dist/dictionary/locale.d.ts.map +1 -1
  344. package/dist/dictionary/locale.js +9 -198
  345. package/dist/dictionary/locale.js.map +1 -1
  346. package/dist/dictionary/merge-types.d.ts +121 -0
  347. package/dist/dictionary/merge-types.d.ts.map +1 -0
  348. package/dist/dictionary/merge-types.js +35 -0
  349. package/dist/dictionary/merge-types.js.map +1 -0
  350. package/dist/dictionary/merge-word.d.ts +7 -0
  351. package/dist/dictionary/merge-word.d.ts.map +1 -0
  352. package/dist/dictionary/merge-word.js +91 -0
  353. package/dist/dictionary/merge-word.js.map +1 -0
  354. package/dist/dictionary/merge.d.ts +5 -62
  355. package/dist/dictionary/merge.d.ts.map +1 -1
  356. package/dist/dictionary/merge.js +30 -713
  357. package/dist/dictionary/merge.js.map +1 -1
  358. package/dist/dictionary/proper-noun.d.ts +28 -0
  359. package/dist/dictionary/proper-noun.d.ts.map +1 -0
  360. package/dist/dictionary/proper-noun.js +43 -0
  361. package/dist/dictionary/proper-noun.js.map +1 -0
  362. package/dist/dictionary/reading-agreement.d.ts +71 -0
  363. package/dist/dictionary/reading-agreement.d.ts.map +1 -0
  364. package/dist/dictionary/reading-agreement.js +156 -0
  365. package/dist/dictionary/reading-agreement.js.map +1 -0
  366. package/dist/dictionary/script-conversion.d.ts +28 -0
  367. package/dist/dictionary/script-conversion.d.ts.map +1 -0
  368. package/dist/dictionary/script-conversion.js +58 -0
  369. package/dist/dictionary/script-conversion.js.map +1 -0
  370. package/dist/dictionary/script-pairings.d.ts +74 -0
  371. package/dist/dictionary/script-pairings.d.ts.map +1 -0
  372. package/dist/dictionary/script-pairings.js +120 -0
  373. package/dist/dictionary/script-pairings.js.map +1 -0
  374. package/dist/dictionary/script-tables.d.ts.map +1 -1
  375. package/dist/dictionary/script-tables.js +2 -165
  376. package/dist/dictionary/script-tables.js.map +1 -1
  377. package/dist/dictionary/taiwan-reading.d.ts +8 -0
  378. package/dist/dictionary/taiwan-reading.d.ts.map +1 -0
  379. package/dist/dictionary/taiwan-reading.js +38 -0
  380. package/dist/dictionary/taiwan-reading.js.map +1 -0
  381. package/dist/dictionary/tone-invariants.d.ts +3 -0
  382. package/dist/dictionary/tone-invariants.d.ts.map +1 -0
  383. package/dist/dictionary/tone-invariants.js +64 -0
  384. package/dist/dictionary/tone-invariants.js.map +1 -0
  385. package/dist/dictionary/traditional-form.d.ts +21 -0
  386. package/dist/dictionary/traditional-form.d.ts.map +1 -0
  387. package/dist/dictionary/traditional-form.js +59 -0
  388. package/dist/dictionary/traditional-form.js.map +1 -0
  389. package/dist/dictionary/traditional-ranking.d.ts +22 -0
  390. package/dist/dictionary/traditional-ranking.d.ts.map +1 -0
  391. package/dist/dictionary/traditional-ranking.js +74 -0
  392. package/dist/dictionary/traditional-ranking.js.map +1 -0
  393. package/dist/dictionary/traditional-table.d.ts +51 -0
  394. package/dist/dictionary/traditional-table.d.ts.map +1 -0
  395. package/dist/dictionary/traditional-table.js +98 -0
  396. package/dist/dictionary/traditional-table.js.map +1 -0
  397. package/dist/dictionary/traditional.d.ts +3 -56
  398. package/dist/dictionary/traditional.d.ts.map +1 -1
  399. package/dist/dictionary/traditional.js +3 -186
  400. package/dist/dictionary/traditional.js.map +1 -1
  401. package/dist/dictionary/variant-counts.d.ts +39 -0
  402. package/dist/dictionary/variant-counts.d.ts.map +1 -0
  403. package/dist/dictionary/variant-counts.js +38 -0
  404. package/dist/dictionary/variant-counts.js.map +1 -0
  405. package/dist/dictionary/word-reading.d.ts +26 -0
  406. package/dist/dictionary/word-reading.d.ts.map +1 -0
  407. package/dist/dictionary/word-reading.js +76 -0
  408. package/dist/dictionary/word-reading.js.map +1 -0
  409. package/dist/dictionary/word-readings.d.ts +15 -0
  410. package/dist/dictionary/word-readings.d.ts.map +1 -0
  411. package/dist/dictionary/word-readings.js +38 -0
  412. package/dist/dictionary/word-readings.js.map +1 -0
  413. package/dist/format/annotate.d.ts +90 -0
  414. package/dist/format/annotate.d.ts.map +1 -0
  415. package/dist/format/annotate.js +168 -0
  416. package/dist/format/annotate.js.map +1 -0
  417. package/dist/format/html.d.ts +15 -46
  418. package/dist/format/html.d.ts.map +1 -1
  419. package/dist/format/html.js +3 -162
  420. package/dist/format/html.js.map +1 -1
  421. package/dist/format/slug-hash.d.ts +51 -0
  422. package/dist/format/slug-hash.d.ts.map +1 -0
  423. package/dist/format/slug-hash.js +74 -0
  424. package/dist/format/slug-hash.js.map +1 -0
  425. package/dist/format/slug-options.d.ts +98 -0
  426. package/dist/format/slug-options.d.ts.map +1 -0
  427. package/dist/format/slug-options.js +2 -0
  428. package/dist/format/slug-options.js.map +1 -0
  429. package/dist/format/slug-words.d.ts +27 -0
  430. package/dist/format/slug-words.d.ts.map +1 -0
  431. package/dist/format/slug-words.js +0 -0
  432. package/dist/format/slug-words.js.map +1 -0
  433. package/dist/format/slug.d.ts +3 -128
  434. package/dist/format/slug.d.ts.map +1 -1
  435. package/dist/format/slug.js +0 -0
  436. package/dist/format/slug.js.map +1 -1
  437. package/dist/grade/check-readings.d.ts +41 -0
  438. package/dist/grade/check-readings.d.ts.map +1 -0
  439. package/dist/grade/check-readings.js +36 -0
  440. package/dist/grade/check-readings.js.map +1 -0
  441. package/dist/grade/check.d.ts +4 -4
  442. package/dist/grade/check.d.ts.map +1 -1
  443. package/dist/grade/check.js +5 -270
  444. package/dist/grade/check.js.map +1 -1
  445. package/dist/grade/pair-syllables.d.ts +48 -0
  446. package/dist/grade/pair-syllables.d.ts.map +1 -0
  447. package/dist/grade/pair-syllables.js +71 -0
  448. package/dist/grade/pair-syllables.js.map +1 -0
  449. package/dist/grade/reading-syllables.d.ts +62 -0
  450. package/dist/grade/reading-syllables.d.ts.map +1 -0
  451. package/dist/grade/reading-syllables.js +58 -0
  452. package/dist/grade/reading-syllables.js.map +1 -0
  453. package/dist/grade/reading-tolerance.d.ts +72 -0
  454. package/dist/grade/reading-tolerance.d.ts.map +1 -0
  455. package/dist/grade/reading-tolerance.js +107 -0
  456. package/dist/grade/reading-tolerance.js.map +1 -0
  457. package/dist/grade/typed-reading.d.ts +28 -0
  458. package/dist/grade/typed-reading.d.ts.map +1 -0
  459. package/dist/grade/typed-reading.js +36 -0
  460. package/dist/grade/typed-reading.js.map +1 -0
  461. package/dist/numerals/numeral-parse.d.ts +32 -0
  462. package/dist/numerals/numeral-parse.d.ts.map +1 -0
  463. package/dist/numerals/numeral-parse.js +44 -0
  464. package/dist/numerals/numeral-parse.js.map +1 -0
  465. package/dist/numerals/numeral-shapes.d.ts +89 -0
  466. package/dist/numerals/numeral-shapes.d.ts.map +1 -0
  467. package/dist/numerals/numeral-shapes.js +99 -0
  468. package/dist/numerals/numeral-shapes.js.map +1 -0
  469. package/dist/numerals/numerals.d.ts.map +1 -1
  470. package/dist/numerals/numerals.js +2 -36
  471. package/dist/numerals/numerals.js.map +1 -1
  472. package/dist/numerals/read-numeral.d.ts +76 -0
  473. package/dist/numerals/read-numeral.d.ts.map +1 -0
  474. package/dist/numerals/read-numeral.js +88 -0
  475. package/dist/numerals/read-numeral.js.map +1 -0
  476. package/dist/numerals/text.d.ts +3 -37
  477. package/dist/numerals/text.d.ts.map +1 -1
  478. package/dist/numerals/text.js +3 -254
  479. package/dist/numerals/text.js.map +1 -1
  480. package/dist/numerals/time.d.ts +34 -0
  481. package/dist/numerals/time.d.ts.map +1 -0
  482. package/dist/numerals/time.js +93 -0
  483. package/dist/numerals/time.js.map +1 -0
  484. package/dist/orthography/address-grouping.d.ts +34 -0
  485. package/dist/orthography/address-grouping.d.ts.map +1 -0
  486. package/dist/orthography/address-grouping.js +52 -0
  487. package/dist/orthography/address-grouping.js.map +1 -0
  488. package/dist/orthography/grouping.d.ts +3 -87
  489. package/dist/orthography/grouping.d.ts.map +1 -1
  490. package/dist/orthography/grouping.js +4 -270
  491. package/dist/orthography/grouping.js.map +1 -1
  492. package/dist/orthography/place-grouping.d.ts +39 -0
  493. package/dist/orthography/place-grouping.d.ts.map +1 -0
  494. package/dist/orthography/place-grouping.js +83 -0
  495. package/dist/orthography/place-grouping.js.map +1 -0
  496. package/dist/orthography/word-grouping.d.ts +48 -0
  497. package/dist/orthography/word-grouping.d.ts.map +1 -0
  498. package/dist/orthography/word-grouping.js +147 -0
  499. package/dist/orthography/word-grouping.js.map +1 -0
  500. package/dist/script/conversion-format.d.ts +22 -0
  501. package/dist/script/conversion-format.d.ts.map +1 -0
  502. package/dist/script/conversion-format.js +22 -0
  503. package/dist/script/conversion-format.js.map +1 -0
  504. package/dist/script/conversion-read.d.ts +9 -0
  505. package/dist/script/conversion-read.d.ts.map +1 -0
  506. package/dist/script/conversion-read.js +69 -0
  507. package/dist/script/conversion-read.js.map +1 -0
  508. package/dist/script/conversion-write.d.ts +14 -0
  509. package/dist/script/conversion-write.d.ts.map +1 -0
  510. package/dist/script/conversion-write.js +34 -0
  511. package/dist/script/conversion-write.js.map +1 -0
  512. package/dist/script/conversion.d.ts +10 -16
  513. package/dist/script/conversion.d.ts.map +1 -1
  514. package/dist/script/conversion.js +2 -115
  515. package/dist/script/conversion.js.map +1 -1
  516. package/dist/search/candidate-narrowing.d.ts +56 -0
  517. package/dist/search/candidate-narrowing.d.ts.map +1 -0
  518. package/dist/search/candidate-narrowing.js +55 -0
  519. package/dist/search/candidate-narrowing.js.map +1 -0
  520. package/dist/search/candidate-query.d.ts +25 -0
  521. package/dist/search/candidate-query.d.ts.map +1 -0
  522. package/dist/search/candidate-query.js +28 -0
  523. package/dist/search/candidate-query.js.map +1 -0
  524. package/dist/search/candidate-writings.d.ts +24 -0
  525. package/dist/search/candidate-writings.d.ts.map +1 -0
  526. package/dist/search/candidate-writings.js +114 -0
  527. package/dist/search/candidate-writings.js.map +1 -0
  528. package/dist/search/candidates.d.ts +7 -41
  529. package/dist/search/candidates.d.ts.map +1 -1
  530. package/dist/search/candidates.js +10 -164
  531. package/dist/search/candidates.js.map +1 -1
  532. package/dist/search/match-chunks.d.ts +19 -0
  533. package/dist/search/match-chunks.d.ts.map +1 -0
  534. package/dist/search/match-chunks.js +30 -0
  535. package/dist/search/match-chunks.js.map +1 -0
  536. package/dist/search/match-ranking.d.ts +39 -0
  537. package/dist/search/match-ranking.d.ts.map +1 -0
  538. package/dist/search/match-ranking.js +51 -0
  539. package/dist/search/match-ranking.js.map +1 -0
  540. package/dist/search/match-readings.d.ts +43 -0
  541. package/dist/search/match-readings.d.ts.map +1 -0
  542. package/dist/search/match-readings.js +83 -0
  543. package/dist/search/match-readings.js.map +1 -0
  544. package/dist/search/match-scoring.d.ts +146 -0
  545. package/dist/search/match-scoring.d.ts.map +1 -0
  546. package/dist/search/match-scoring.js +114 -0
  547. package/dist/search/match-scoring.js.map +1 -0
  548. package/dist/search/match-search.d.ts +28 -0
  549. package/dist/search/match-search.d.ts.map +1 -0
  550. package/dist/search/match-search.js +128 -0
  551. package/dist/search/match-search.js.map +1 -0
  552. package/dist/search/match.d.ts +5 -36
  553. package/dist/search/match.d.ts.map +1 -1
  554. package/dist/search/match.js +2 -379
  555. package/dist/search/match.js.map +1 -1
  556. package/dist/search/reverse-index-build.d.ts +30 -0
  557. package/dist/search/reverse-index-build.d.ts.map +1 -0
  558. package/dist/search/reverse-index-build.js +72 -0
  559. package/dist/search/reverse-index-build.js.map +1 -0
  560. package/dist/search/reverse-index-format.d.ts +60 -0
  561. package/dist/search/reverse-index-format.d.ts.map +1 -0
  562. package/dist/search/reverse-index-format.js +54 -0
  563. package/dist/search/reverse-index-format.js.map +1 -0
  564. package/dist/search/reverse-index-groups.d.ts +37 -0
  565. package/dist/search/reverse-index-groups.d.ts.map +1 -0
  566. package/dist/search/reverse-index-groups.js +71 -0
  567. package/dist/search/reverse-index-groups.js.map +1 -0
  568. package/dist/search/reverse-index-passes.d.ts +78 -0
  569. package/dist/search/reverse-index-passes.d.ts.map +1 -0
  570. package/dist/search/reverse-index-passes.js +59 -0
  571. package/dist/search/reverse-index-passes.js.map +1 -0
  572. package/dist/search/reverse-index-state.d.ts +36 -0
  573. package/dist/search/reverse-index-state.d.ts.map +1 -0
  574. package/dist/search/reverse-index-state.js +95 -0
  575. package/dist/search/reverse-index-state.js.map +1 -0
  576. package/dist/search/reverse-index.d.ts +8 -67
  577. package/dist/search/reverse-index.d.ts.map +1 -1
  578. package/dist/search/reverse-index.js +4 -255
  579. package/dist/search/reverse-index.js.map +1 -1
  580. package/dist/sources/unihan-readings.d.ts +58 -0
  581. package/dist/sources/unihan-readings.d.ts.map +1 -0
  582. package/dist/sources/unihan-readings.js +95 -0
  583. package/dist/sources/unihan-readings.js.map +1 -0
  584. package/dist/sources/unihan.d.ts +6 -9
  585. package/dist/sources/unihan.d.ts.map +1 -1
  586. package/dist/sources/unihan.js +2 -85
  587. package/dist/sources/unihan.js.map +1 -1
  588. package/dist/syllable/final-tables.d.ts +23 -0
  589. package/dist/syllable/final-tables.d.ts.map +1 -0
  590. package/dist/syllable/final-tables.js +50 -0
  591. package/dist/syllable/final-tables.js.map +1 -0
  592. package/dist/syllable/inventory.d.ts +8 -42
  593. package/dist/syllable/inventory.d.ts.map +1 -1
  594. package/dist/syllable/inventory.js +9 -918
  595. package/dist/syllable/inventory.js.map +1 -1
  596. package/dist/syllable/spellings.d.ts +40 -0
  597. package/dist/syllable/spellings.d.ts.map +1 -0
  598. package/dist/syllable/spellings.js +469 -0
  599. package/dist/syllable/spellings.js.map +1 -0
  600. package/dist/syllable/syllable-parts.d.ts +31 -0
  601. package/dist/syllable/syllable-parts.d.ts.map +1 -0
  602. package/dist/syllable/syllable-parts.js +105 -0
  603. package/dist/syllable/syllable-parts.js.map +1 -0
  604. package/dist/syllable/syllable.d.ts +1 -14
  605. package/dist/syllable/syllable.d.ts.map +1 -1
  606. package/dist/syllable/syllable.js +3 -144
  607. package/dist/syllable/syllable.js.map +1 -1
  608. package/dist/syllable/written-tones.d.ts +6 -0
  609. package/dist/syllable/written-tones.d.ts.map +1 -0
  610. package/dist/syllable/written-tones.js +453 -0
  611. package/dist/syllable/written-tones.js.map +1 -0
  612. package/dist/transcription/bopomofo-parse.d.ts +42 -0
  613. package/dist/transcription/bopomofo-parse.d.ts.map +1 -0
  614. package/dist/transcription/bopomofo-parse.js +92 -0
  615. package/dist/transcription/bopomofo-parse.js.map +1 -0
  616. package/dist/transcription/bopomofo-reverse.d.ts +31 -0
  617. package/dist/transcription/bopomofo-reverse.d.ts.map +1 -0
  618. package/dist/transcription/bopomofo-reverse.js +48 -0
  619. package/dist/transcription/bopomofo-reverse.js.map +1 -0
  620. package/dist/transcription/bopomofo-symbols.d.ts +36 -0
  621. package/dist/transcription/bopomofo-symbols.d.ts.map +1 -0
  622. package/dist/transcription/bopomofo-symbols.js +41 -0
  623. package/dist/transcription/bopomofo-symbols.js.map +1 -0
  624. package/dist/transcription/bopomofo-tables.d.ts +87 -0
  625. package/dist/transcription/bopomofo-tables.d.ts.map +1 -0
  626. package/dist/transcription/bopomofo-tables.js +180 -0
  627. package/dist/transcription/bopomofo-tables.js.map +1 -0
  628. package/dist/transcription/bopomofo.d.ts +14 -32
  629. package/dist/transcription/bopomofo.d.ts.map +1 -1
  630. package/dist/transcription/bopomofo.js +5 -343
  631. package/dist/transcription/bopomofo.js.map +1 -1
  632. package/dist/transcription/gwoyeu-first-second.d.ts +36 -0
  633. package/dist/transcription/gwoyeu-first-second.d.ts.map +1 -0
  634. package/dist/transcription/gwoyeu-first-second.js +75 -0
  635. package/dist/transcription/gwoyeu-first-second.js.map +1 -0
  636. package/dist/transcription/gwoyeu-spelling.d.ts +38 -0
  637. package/dist/transcription/gwoyeu-spelling.d.ts.map +1 -0
  638. package/dist/transcription/gwoyeu-spelling.js +124 -0
  639. package/dist/transcription/gwoyeu-spelling.js.map +1 -0
  640. package/dist/transcription/gwoyeu-tables.d.ts +93 -0
  641. package/dist/transcription/gwoyeu-tables.d.ts.map +1 -0
  642. package/dist/transcription/gwoyeu-tables.js +205 -0
  643. package/dist/transcription/gwoyeu-tables.js.map +1 -0
  644. package/dist/transcription/gwoyeu-tonal-forms.d.ts +49 -0
  645. package/dist/transcription/gwoyeu-tonal-forms.d.ts.map +1 -0
  646. package/dist/transcription/gwoyeu-tonal-forms.js +89 -0
  647. package/dist/transcription/gwoyeu-tonal-forms.js.map +1 -0
  648. package/dist/transcription/gwoyeu-vowels.d.ts +51 -0
  649. package/dist/transcription/gwoyeu-vowels.d.ts.map +1 -0
  650. package/dist/transcription/gwoyeu-vowels.js +58 -0
  651. package/dist/transcription/gwoyeu-vowels.js.map +1 -0
  652. package/dist/transcription/gwoyeu.d.ts +1 -26
  653. package/dist/transcription/gwoyeu.d.ts.map +1 -1
  654. package/dist/transcription/gwoyeu.js +2 -540
  655. package/dist/transcription/gwoyeu.js.map +1 -1
  656. package/dist/transcription/ipa-symbols.d.ts +67 -0
  657. package/dist/transcription/ipa-symbols.d.ts.map +1 -0
  658. package/dist/transcription/ipa-symbols.js +135 -0
  659. package/dist/transcription/ipa-symbols.js.map +1 -0
  660. package/dist/transcription/ipa.d.ts +2 -10
  661. package/dist/transcription/ipa.d.ts.map +1 -1
  662. package/dist/transcription/ipa.js +2 -134
  663. package/dist/transcription/ipa.js.map +1 -1
  664. package/dist/transcription/wade-giles-index.d.ts +35 -0
  665. package/dist/transcription/wade-giles-index.d.ts.map +1 -0
  666. package/dist/transcription/wade-giles-index.js +110 -0
  667. package/dist/transcription/wade-giles-index.js.map +1 -0
  668. package/dist/transcription/wade-giles-parse.d.ts +36 -0
  669. package/dist/transcription/wade-giles-parse.d.ts.map +1 -0
  670. package/dist/transcription/wade-giles-parse.js +84 -0
  671. package/dist/transcription/wade-giles-parse.js.map +1 -0
  672. package/dist/transcription/wade-giles-spelling.d.ts +61 -0
  673. package/dist/transcription/wade-giles-spelling.d.ts.map +1 -0
  674. package/dist/transcription/wade-giles-spelling.js +107 -0
  675. package/dist/transcription/wade-giles-spelling.js.map +1 -0
  676. package/dist/transcription/wade-giles-syllable.d.ts +29 -0
  677. package/dist/transcription/wade-giles-syllable.d.ts.map +1 -0
  678. package/dist/transcription/wade-giles-syllable.js +90 -0
  679. package/dist/transcription/wade-giles-syllable.js.map +1 -0
  680. package/dist/transcription/wade-giles-tables.d.ts +80 -0
  681. package/dist/transcription/wade-giles-tables.d.ts.map +1 -0
  682. package/dist/transcription/wade-giles-tables.js +178 -0
  683. package/dist/transcription/wade-giles-tables.js.map +1 -0
  684. package/dist/transcription/wade-giles.d.ts +9 -60
  685. package/dist/transcription/wade-giles.d.ts.map +1 -1
  686. package/dist/transcription/wade-giles.js +6 -543
  687. package/dist/transcription/wade-giles.js.map +1 -1
  688. package/dist/transcription/yale-tables.d.ts +54 -0
  689. package/dist/transcription/yale-tables.d.ts.map +1 -0
  690. package/dist/transcription/yale-tables.js +125 -0
  691. package/dist/transcription/yale-tables.js.map +1 -0
  692. package/dist/transcription/yale.d.ts.map +1 -1
  693. package/dist/transcription/yale.js +1 -124
  694. package/dist/transcription/yale.js.map +1 -1
  695. package/package.json +1 -1
@@ -1,130 +1,9 @@
1
1
  import { parseArgs } from "node:util";
2
- import { SCRIPT_TARGETS } from "../decode/script.js";
3
- import { SCRIPTS } from "../script/script.js";
4
- /**
5
- * Every flag the CLI accepts.
6
- *
7
- * One table rather than one per command, because the parser needs the whole set
8
- * up front; a command's own list is what rejects a flag it has no use for.
9
- * Negated forms are spelled out, since `parseArgs` has no `--no-` convention of
10
- * its own.
11
- */
12
- const FLAGS = {
13
- data: { type: "string" },
14
- tier: { type: "string" },
15
- notation: { type: "string", short: "n" },
16
- locale: { type: "string", short: "l" },
17
- apostrophe: { type: "string" },
18
- capitals: { type: "string" },
19
- punctuation: { type: "string" },
20
- "no-grouping": { type: "boolean" },
21
- "keep-numbers": { type: "boolean" },
22
- "read-numbers": { type: "boolean" },
23
- "third-tone": { type: "boolean" },
24
- "no-sandhi": { type: "boolean" },
25
- tones: { type: "string" },
26
- "require-tones": { type: "boolean" },
27
- "require-spacing": { type: "boolean" },
28
- separator: { type: "string" },
29
- syllables: { type: "string" },
30
- umlaut: { type: "string" },
31
- query: { type: "string" },
32
- hash: { type: "boolean" },
33
- "hash-length": { type: "string" },
34
- "max-length": { type: "string" },
35
- fallback: { type: "string" },
36
- greedy: { type: "boolean" },
37
- digits: { type: "boolean" },
38
- yao: { type: "boolean" },
39
- "no-liang": { type: "boolean" },
40
- percent: { type: "boolean" },
41
- from: { type: "string" },
42
- to: { type: "string" },
43
- "from-script": { type: "string" },
44
- system: { type: "string" },
45
- "no-tone-classes": { type: "boolean" },
46
- "no-uncertain": { type: "boolean" },
47
- "no-lang": { type: "boolean" },
48
- colour: { type: "boolean" },
49
- color: { type: "boolean" },
50
- "no-colour": { type: "boolean" },
51
- "no-color": { type: "boolean" },
52
- json: { type: "boolean" },
53
- help: { type: "boolean", short: "h" },
54
- version: { type: "boolean", short: "v" },
55
- };
56
- /**
57
- * Flags every command takes, whatever else it takes.
58
- */
59
- export const GLOBAL_FLAGS = [
60
- "data",
61
- "tier",
62
- "colour",
63
- "color",
64
- "no-colour",
65
- "no-color",
66
- "json",
67
- "help",
68
- "version",
69
- ];
70
- /**
71
- * The flags that map onto `ConvertOptions`, and so belong to every command that
72
- * converts anything.
73
- */
74
- export const CONVERT_FLAGS = [
75
- "notation",
76
- "locale",
77
- "apostrophe",
78
- "capitals",
79
- "punctuation",
80
- "no-grouping",
81
- "keep-numbers",
82
- "third-tone",
83
- "no-sandhi",
84
- ];
85
- /**
86
- * The flags `check` takes, beyond the conversion ones.
87
- *
88
- * Positive rather than negated — `--require-tones` rather than `--no-tones` —
89
- * because both dimensions default to lenient, and a flag naming what it turns
90
- * on is the one that reads the way the library's own option does.
91
- */
92
- export const CHECK_FLAGS = [
93
- "require-tones",
94
- "require-spacing",
95
- ];
96
- /**
97
- * The flags `slug` takes, beyond the global ones.
98
- *
99
- * It shares the reading flags with the conversion commands and none of the
100
- * writing ones: a slug settles its own notation, capitals, apostrophes and
101
- * spacing, and a `--capitals` that changed nothing would be worse than an
102
- * error. `--read-numbers` rather than `--keep-numbers` because a slug keeps
103
- * digits by default, which is the one place it departs from `convert`.
104
- */
105
- export const SLUG_FLAGS = [
106
- "tones",
107
- "separator",
108
- "syllables",
109
- "umlaut",
110
- "hash",
111
- "hash-length",
112
- "max-length",
113
- "fallback",
114
- "read-numbers",
115
- "locale",
116
- "third-tone",
117
- "no-sandhi",
118
- ];
119
- /**
120
- * The flags `match` takes, beyond the global ones.
121
- *
122
- * The query is a flag rather than the first argument, so that the texts stay
123
- * where every other command has them: `match` reads a list to filter from
124
- * standard input, and a command line whose first positional meant something
125
- * else could not be piped into.
126
- */
127
- export const MATCH_FLAGS = ["query"];
2
+ import { FLAGS } from "./flags.js";
3
+ import { UsageError } from "./usage-error.js";
4
+ export { UsageError } from "./usage-error.js";
5
+ export { checkOptions, colourDepth, convertOptions, dictionaryChoice, htmlOptions, scriptFrom, scriptTarget, slugOptions, transcriptionSource, transcriptionSystem, } from "./options.js";
6
+ export { CHECK_FLAGS, CONVERT_FLAGS, GLOBAL_FLAGS, MATCH_FLAGS, SCRIPT_FLAGS, SLUG_FLAGS, } from "./flags.js";
128
7
  /**
129
8
  * Read the `--query` flag, which `match` cannot do without.
130
9
  */
@@ -135,22 +14,6 @@ export function matchQuery(flags) {
135
14
  }
136
15
  return String(given);
137
16
  }
138
- /**
139
- * The flags `script` takes, beyond the global ones.
140
- *
141
- * `--from-script` rather than `--from` because `--from` already means the
142
- * transcription a text is written in, and one flag name cannot carry two
143
- * meanings in one help table.
144
- */
145
- export const SCRIPT_FLAGS = ["to", "from-script"];
146
- /**
147
- * Something the command line asked for that cannot be done.
148
- *
149
- * Thrown rather than exited on, so that the caller decides what a mistake at
150
- * the command line is worth.
151
- */
152
- export class UsageError extends Error {
153
- }
154
17
  /**
155
18
  * Split a command line into its command, its arguments and its flags.
156
19
  */
@@ -183,219 +46,4 @@ export function checkFlags(flags, allowed, command) {
183
46
  }
184
47
  }
185
48
  }
186
- /**
187
- * Read a flag that takes a value, checking it against what the library accepts.
188
- */
189
- function chosen(flags, name, allowed) {
190
- const given = flags[name];
191
- if (given === undefined) {
192
- return undefined;
193
- }
194
- const value = String(given);
195
- const found = allowed.find((candidate) => candidate === value);
196
- if (found === undefined) {
197
- throw new UsageError(`--${name} must be one of ${allowed.join(", ")}, not ${value}`);
198
- }
199
- return found;
200
- }
201
- const NOTATIONS = [
202
- "marks",
203
- "numbers",
204
- "superscript",
205
- "none",
206
- ];
207
- /**
208
- * Read a flag that takes a whole number, which every one of them is a count of.
209
- */
210
- function counted(flags, name) {
211
- const given = flags[name];
212
- if (given === undefined) {
213
- return undefined;
214
- }
215
- const value = Number(String(given));
216
- if (!Number.isSafeInteger(value) || value < 0) {
217
- throw new UsageError(`--${name} must be a whole number, not ${String(given)}`);
218
- }
219
- return value;
220
- }
221
- const LOCALES = ["zh-CN", "zh-TW"];
222
- const APOSTROPHES = ["always", "standard", "never"];
223
- const CAPITALS = ["auto", "proper", "none"];
224
- const PUNCTUATION = ["latin", "keep"];
225
- const SLUG_TONES = ["numbers", "none"];
226
- const SLUG_SYLLABLES = ["join", "separate"];
227
- const SLUG_UMLAUTS = ["v", "u"];
228
- const TIERS = ["core", "standard", "full"];
229
- const SOURCES = [
230
- "auto",
231
- "pinyin",
232
- "wade-giles",
233
- "bopomofo",
234
- "yale",
235
- "gwoyeu",
236
- "ipa",
237
- ];
238
- /**
239
- * Read the `--from` flag.
240
- */
241
- export function transcriptionSource(flags) {
242
- return chosen(flags, "from", SOURCES) ?? "auto";
243
- }
244
- /**
245
- * Which system a conversion should be written in.
246
- *
247
- * `pinyin` is not a value: writing pinyin is what `convert` does with no flag
248
- * at all, and offering a name for the default would suggest the others are
249
- * alternatives to it rather than things it is put through afterwards.
250
- */
251
- const SYSTEMS_WRITTEN = [
252
- "bopomofo",
253
- "wade-giles",
254
- "yale",
255
- "gwoyeu",
256
- "ipa",
257
- ];
258
- /**
259
- * Read the `--system` flag.
260
- */
261
- export function transcriptionSystem(flags) {
262
- return chosen(flags, "system", SYSTEMS_WRITTEN);
263
- }
264
- /**
265
- * How much colour a run should write, given what the terminal offered.
266
- *
267
- * `--colour` and `--no-colour` force it either way, and `--color` is accepted
268
- * as a spelling because every other tool spells it that way and nobody should
269
- * have to discover which this one chose.
270
- *
271
- * **`--json` is never coloured**, whatever the flags say: the option is about
272
- * the plain output, and the JSON already carries the tone as a number for a
273
- * caller that will do its own rendering.
274
- *
275
- * Forcing colour where the environment offered none — into a pipe, or past
276
- * `NO_COLOR` — gets the sixteen every terminal has, because nothing is known
277
- * about where that output is going.
278
- */
279
- export function colourDepth(flags, offered) {
280
- if (flags.json === true) {
281
- return 0;
282
- }
283
- if (flags["no-colour"] === true || flags["no-color"] === true) {
284
- return 0;
285
- }
286
- if (flags.colour === true || flags.color === true) {
287
- return offered === 0 ? 16 : offered;
288
- }
289
- return offered;
290
- }
291
- /**
292
- * Read the dictionary flags.
293
- */
294
- export function dictionaryChoice(flags) {
295
- const directory = flags.data;
296
- return {
297
- tier: chosen(flags, "tier", TIERS) ?? "full",
298
- directory: directory === undefined ? undefined : String(directory),
299
- };
300
- }
301
- /**
302
- * Turn the conversion flags into the options the library takes.
303
- *
304
- * Only the flags actually given are passed on, so that the library's defaults
305
- * stay the CLI's defaults and there is one place they are written down.
306
- */
307
- export function convertOptions(flags) {
308
- const sandhi = {
309
- ...(flags["no-sandhi"] === true && { yiBu: false }),
310
- ...(flags["third-tone"] === true && { thirdTone: true }),
311
- };
312
- const notation = chosen(flags, "notation", NOTATIONS);
313
- const locale = chosen(flags, "locale", LOCALES);
314
- const apostrophe = chosen(flags, "apostrophe", APOSTROPHES);
315
- const capitals = chosen(flags, "capitals", CAPITALS);
316
- const punctuation = chosen(flags, "punctuation", PUNCTUATION);
317
- return {
318
- ...(flags["keep-numbers"] === true && { numbers: "keep" }),
319
- ...(notation !== undefined && { notation }),
320
- ...(locale !== undefined && { locale }),
321
- ...(apostrophe !== undefined && { apostrophe }),
322
- ...(capitals !== undefined && { capitals }),
323
- ...(punctuation !== undefined && { punctuation }),
324
- ...(flags["no-grouping"] === true && { grouping: false }),
325
- ...(Object.keys(sandhi).length > 0 && { sandhi }),
326
- };
327
- }
328
- /**
329
- * Turn the checking flags into the options the library takes.
330
- *
331
- * Every conversion flag goes through too, since a check grades against a
332
- * conversion and `--locale` or `--third-tone` changes what the answer is.
333
- */
334
- export function checkOptions(flags) {
335
- return {
336
- ...convertOptions(flags),
337
- ...(flags["require-tones"] === true && { tones: "required" }),
338
- ...(flags["require-spacing"] === true && { spacing: "required" }),
339
- };
340
- }
341
- /**
342
- * Turn the slug flags into the options the library takes.
343
- *
344
- * `--hash-length` implies `--hash`, because asking how long the hash should be
345
- * and not getting one is not a reading anybody intends.
346
- */
347
- export function slugOptions(flags) {
348
- const sandhi = {
349
- ...(flags["no-sandhi"] === true && { yiBu: false }),
350
- ...(flags["third-tone"] === true && { thirdTone: true }),
351
- };
352
- const tones = chosen(flags, "tones", SLUG_TONES);
353
- const syllables = chosen(flags, "syllables", SLUG_SYLLABLES);
354
- const umlaut = chosen(flags, "umlaut", SLUG_UMLAUTS);
355
- const locale = chosen(flags, "locale", LOCALES);
356
- const separator = flags.separator;
357
- const fallback = flags.fallback;
358
- const hashLength = counted(flags, "hash-length");
359
- const maxLength = counted(flags, "max-length");
360
- return {
361
- ...(flags["read-numbers"] === true && { numbers: "read" }),
362
- ...(tones !== undefined && { tones }),
363
- ...(syllables !== undefined && { syllables }),
364
- ...(umlaut !== undefined && { umlaut }),
365
- ...(locale !== undefined && { locale }),
366
- ...(separator !== undefined && { separator: String(separator) }),
367
- ...(fallback !== undefined && { fallback: String(fallback) }),
368
- ...(hashLength === undefined
369
- ? flags.hash === true && { hash: true }
370
- : { hash: hashLength }),
371
- ...(maxLength !== undefined && { maxLength }),
372
- ...(Object.keys(sandhi).length > 0 && { sandhi }),
373
- };
374
- }
375
- /**
376
- * The same, plus the three flags that only mean anything in HTML.
377
- */
378
- export function htmlOptions(flags) {
379
- return {
380
- ...convertOptions(flags),
381
- ...(flags["no-tone-classes"] === true && { toneClasses: false }),
382
- ...(flags["no-uncertain"] === true && { markUncertain: false }),
383
- ...(flags["no-lang"] === true && { lang: false }),
384
- };
385
- }
386
- /**
387
- * Which orthography `script` was asked to write. `zh-Hans` by default.
388
- */
389
- export function scriptTarget(flags) {
390
- return chosen(flags, "to", SCRIPT_TARGETS) ?? "zh-Hans";
391
- }
392
- /**
393
- * The script the text was declared to be in, where the caller named one.
394
- *
395
- * Detection settles it otherwise, and gets it right for anything longer than a
396
- * word or two. Naming it matters for text short enough to be script-neutral.
397
- */
398
- export function scriptFrom(flags) {
399
- return chosen(flags, "from-script", SCRIPTS);
400
- }
401
49
  //# sourceMappingURL=arguments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/cli/arguments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/cli/arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,KAAK,EAA6B,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EAEd,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EAEX,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,WAAW,EACX,aAAa,EAGb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAaD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC;YACjB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,KAAK;YACd,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAClB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;IACpD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAAY,EACZ,OAA4B,EAC5B,OAAe;IAEf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAgB,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,UAAU,CAAC,GAAG,OAAO,oBAAoB,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type Command } from "./command.js";
2
+ /**
3
+ * Mark typed pinyin against the text it was written for.
4
+ *
5
+ * The heading carries the answer the text converts to, because a check that
6
+ * says only what is wrong leaves a reader hunting for what was right.
7
+ */
8
+ export declare const CHECK: Command;
9
+ //# sourceMappingURL=check-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-command.d.ts","sourceRoot":"","sources":["../../src/cli/check-command.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,cAAc,CAAC;AAyDtB;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,OAwCnB,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Marking typed pinyin against the text it was written for.
3
+ */
4
+ import { convertPieces } from "../decode/convert.js";
5
+ import { check } from "../grade/check.js";
6
+ import { writeSyllable } from "../syllable/syllable.js";
7
+ import { CHECK_FLAGS, checkOptions, CONVERT_FLAGS, UsageError, } from "./arguments.js";
8
+ import { column, dictionaryOf, paintedPieces, } from "./command.js";
9
+ /**
10
+ * The hanzi and the pinyin typed for it, as `check` is given them.
11
+ *
12
+ * Two arguments at a terminal — `pinyinjs check 银行 yínxíng` — with everything
13
+ * after the first joined back up, so that unquoted pinyin with spaces in it
14
+ * works the way anybody would expect it to. A piped file is one pair per line,
15
+ * separated by a tab, since pinyin has spaces in it and the hanzi may too.
16
+ */
17
+ function checkPairs(texts) {
18
+ if (texts.some((text) => text.includes("\t"))) {
19
+ return texts.map((text) => {
20
+ const [hanzi = "", ...rest] = text.split("\t");
21
+ return [hanzi, rest.join("\t")];
22
+ });
23
+ }
24
+ const [hanzi = "", ...rest] = texts;
25
+ return [[hanzi, rest.join(" ")]];
26
+ }
27
+ /**
28
+ * One checked syllable, as a line and as data.
29
+ *
30
+ * The characters, then what was expected, then what was typed, then the two
31
+ * verdicts. Spacing is written only where it went wrong, since `correct` on
32
+ * every line would bury the one that did not.
33
+ */
34
+ function checkedSyllable(one, input) {
35
+ const expected = one.expected === undefined ? "" : writeSyllable(one.expected);
36
+ // Written only where it went wrong: `correct` on every line would bury the
37
+ // one that did not.
38
+ const spacing = one.spacing === "correct" ? undefined : one.spacing;
39
+ return {
40
+ line: ` ${column(one.source ?? "", 6)}${column(input.paint(expected, one.expected?.tone), 8)}${column(one.text, 8)}${column(one.verdict, 10)}${spacing ?? ""}`.trimEnd(),
41
+ data: {
42
+ verdict: one.verdict,
43
+ isCorrect: one.isCorrect,
44
+ ...(one.spacing !== undefined && { spacing: one.spacing }),
45
+ ...(expected !== "" && { expected }),
46
+ ...(one.text !== "" && { typed: one.text }),
47
+ ...(one.source !== undefined && { source: one.source }),
48
+ ...(one.at !== undefined && { at: one.at }),
49
+ },
50
+ };
51
+ }
52
+ /**
53
+ * Mark typed pinyin against the text it was written for.
54
+ *
55
+ * The heading carries the answer the text converts to, because a check that
56
+ * says only what is wrong leaves a reader hunting for what was right.
57
+ */
58
+ export const CHECK = {
59
+ name: "check",
60
+ summary: "mark typed pinyin against the text",
61
+ argument: "<text> <pinyin>",
62
+ flags: [...CONVERT_FLAGS, ...CHECK_FLAGS],
63
+ needsDictionary: true,
64
+ run: (input) => {
65
+ const dictionary = dictionaryOf(input);
66
+ const options = checkOptions(input.flags);
67
+ return checkPairs(input.texts).map(([text, typed]) => {
68
+ if (typed === "") {
69
+ throw new UsageError("check needs a text and the pinyin typed for it");
70
+ }
71
+ const marked = check(dictionary, text, typed, options);
72
+ const score = Math.round(marked.score * 100);
73
+ const syllables = marked.syllables.map((one) => checkedSyllable(one, input));
74
+ // The answer as the conversion writes it, spacing and all, since the
75
+ // spacing is one of the things being marked and a reading joined by
76
+ // spaces would show every word broken apart.
77
+ const pieces = convertPieces(dictionary, text, options);
78
+ return {
79
+ lines: [
80
+ `${text} ${paintedPieces(pieces, input)} ${String(score)}%`,
81
+ ...syllables.map((one) => one.line),
82
+ ],
83
+ data: {
84
+ text,
85
+ typed,
86
+ isCorrect: marked.isCorrect,
87
+ score: marked.score,
88
+ pinyin: pieces.map((piece) => piece.text).join(""),
89
+ syllables: syllables.map((one) => one.data),
90
+ },
91
+ };
92
+ });
93
+ },
94
+ };
95
+ //# sourceMappingURL=check-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-command.js","sourceRoot":"","sources":["../../src/cli/check-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * What the CLI needs from the world outside it, and what it reads through it.
3
+ *
4
+ * Everything Node-only lives behind {@link CliEnvironment}, so that a run can
5
+ * be tested by handing it strings. The two functions here are the only part of
6
+ * a run that touches the outside at all before a command starts.
7
+ */
8
+ import type { Dictionary } from "../dictionary/dictionary.js";
9
+ import type { ScriptTables } from "../script/conversion.js";
10
+ import { type DictionaryChoice } from "./arguments.js";
11
+ import type { ColourDepth } from "./colour.js";
12
+ import type { Command } from "./commands.js";
13
+ /**
14
+ * What the CLI needs from the world outside it.
15
+ *
16
+ * Everything Node-only lives behind this, so that a run can be tested by
17
+ * handing it strings.
18
+ */
19
+ export interface CliEnvironment {
20
+ readonly version: string;
21
+ /** Standard input, or the empty string where there is none to read. */
22
+ readonly readInput: () => Promise<string>;
23
+ readonly loadDictionary: (choice: DictionaryChoice) => Promise<Dictionary>;
24
+ /**
25
+ * The script conversion tables, for the one command that converts scripts.
26
+ *
27
+ * Separate from the dictionary because the file is: nothing that converts
28
+ * hanzi to pinyin should wait on 96 KB it will not read.
29
+ */
30
+ readonly loadScriptTables: (choice: DictionaryChoice) => Promise<ScriptTables>;
31
+ /**
32
+ * How much colour the output can carry, before any flag has its say.
33
+ *
34
+ * Here rather than sniffed inside a command, because a command reaching for
35
+ * `process.stdout.isTTY` would put a decision in the one place the coverage
36
+ * gate cannot see. An environment states the answer and a test can ask for
37
+ * either one. `depthFrom` in `colour.ts` is how the Node adapter arrives at
38
+ * it, and is a pure function for the same reason.
39
+ */
40
+ readonly colours: ColourDepth;
41
+ }
42
+ /**
43
+ * What a command was asked to act on, or a usage error saying it was nothing.
44
+ *
45
+ * A command that silently prints nothing because standard input was a terminal
46
+ * looks broken rather than misused.
47
+ */
48
+ export declare function inputFor(command: Command, given: readonly string[], environment: CliEnvironment): Promise<readonly string[]>;
49
+ //# sourceMappingURL=cli-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-input.d.ts","sourceRoot":"","sources":["../../src/cli/cli-input.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,KAAK,gBAAgB,EAAc,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3E;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,EAAE,CACzB,MAAM,EAAE,gBAAgB,KACrB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B;AAuBD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,WAAW,EAAE,cAAc,GAC1B,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAQ5B"}
@@ -0,0 +1,31 @@
1
+ import { UsageError } from "./arguments.js";
2
+ /**
3
+ * The lines a command should act on: its arguments, or standard input.
4
+ *
5
+ * Input is split into lines so that every command works the same way whether it
6
+ * was given arguments or piped a file, and so that `convert` writes one line
7
+ * out for each line in rather than running a whole document together.
8
+ */
9
+ async function textsFor(command, given, environment) {
10
+ if (given.length > 0 || command.argument === "") {
11
+ return given;
12
+ }
13
+ const piped = await environment.readInput();
14
+ const lines = piped.split("\n");
15
+ // A file ends with a newline, and that last empty line is not a text.
16
+ return lines.at(-1) === "" ? lines.slice(0, -1) : lines;
17
+ }
18
+ /**
19
+ * What a command was asked to act on, or a usage error saying it was nothing.
20
+ *
21
+ * A command that silently prints nothing because standard input was a terminal
22
+ * looks broken rather than misused.
23
+ */
24
+ export async function inputFor(command, given, environment) {
25
+ const texts = await textsFor(command, given, environment);
26
+ if (texts.length === 0 && command.argument !== "") {
27
+ throw new UsageError(`${command.name} needs ${command.argument}, or text on standard input`);
28
+ }
29
+ return texts;
30
+ }
31
+ //# sourceMappingURL=cli-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-input.js","sourceRoot":"","sources":["../../src/cli/cli-input.ts"],"names":[],"mappings":"AASA,OAAO,EAAyB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAoCnE;;;;;;GAMG;AACH,KAAK,UAAU,QAAQ,CACrB,OAAgB,EAChB,KAAwB,EACxB,WAA2B;IAE3B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,sEAAsE;IACtE,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAgB,EAChB,KAAwB,EACxB,WAA2B;IAE3B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,UAAU,CAClB,GAAG,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,QAAQ,6BAA6B,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}