yomitan-core 0.1.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 (207) hide show
  1. package/README.md +485 -0
  2. package/dist/anki-connect-BQyCGW3O.cjs +513 -0
  3. package/dist/anki-connect-BQyCGW3O.cjs.map +1 -0
  4. package/dist/anki-connect-CPPuhyiQ.js +6 -0
  5. package/dist/anki-connect-DbrQHphS.js +495 -0
  6. package/dist/anki-connect-DbrQHphS.js.map +1 -0
  7. package/dist/anki-connect-DcheJrp-.cjs +6 -0
  8. package/dist/anki.cjs +1758 -0
  9. package/dist/anki.cjs.map +1 -0
  10. package/dist/anki.d.cts +751 -0
  11. package/dist/anki.d.cts.map +1 -0
  12. package/dist/anki.d.ts +751 -0
  13. package/dist/anki.d.ts.map +1 -0
  14. package/dist/anki.js +1751 -0
  15. package/dist/anki.js.map +1 -0
  16. package/dist/audio-D9DvYyB7.d.cts +48 -0
  17. package/dist/audio-D9DvYyB7.d.cts.map +1 -0
  18. package/dist/audio-DQulUkDM.d.ts +48 -0
  19. package/dist/audio-DQulUkDM.d.ts.map +1 -0
  20. package/dist/audio-url-generator-BXvQaqUi.cjs +4 -0
  21. package/dist/audio-url-generator-Dy2hb2Mm.cjs +414 -0
  22. package/dist/audio-url-generator-Dy2hb2Mm.cjs.map +1 -0
  23. package/dist/audio-url-generator-Qi0rfzHz.js +4 -0
  24. package/dist/audio-url-generator-pFQAB5Nb.js +390 -0
  25. package/dist/audio-url-generator-pFQAB5Nb.js.map +1 -0
  26. package/dist/audio.cjs +7 -0
  27. package/dist/audio.d.cts +86 -0
  28. package/dist/audio.d.cts.map +1 -0
  29. package/dist/audio.d.ts +86 -0
  30. package/dist/audio.d.ts.map +1 -0
  31. package/dist/audio.js +4 -0
  32. package/dist/batch-processor-BR-gB3H3.js +84 -0
  33. package/dist/batch-processor-BR-gB3H3.js.map +1 -0
  34. package/dist/batch-processor-CSF1acTw.cjs +3 -0
  35. package/dist/batch-processor-DFqM_L-_.cjs +91 -0
  36. package/dist/batch-processor-DFqM_L-_.cjs.map +1 -0
  37. package/dist/batch-processor-Quo9jUyf.js +3 -0
  38. package/dist/chunk-BCwAaXi7.cjs +31 -0
  39. package/dist/cjk-util-Dp0ZU0sh.cjs +167 -0
  40. package/dist/cjk-util-Dp0ZU0sh.cjs.map +1 -0
  41. package/dist/cjk-util-DubXBGDG.js +94 -0
  42. package/dist/cjk-util-DubXBGDG.js.map +1 -0
  43. package/dist/core-BUpclilG.d.cts +102 -0
  44. package/dist/core-BUpclilG.d.cts.map +1 -0
  45. package/dist/core-DFUj5GtA.d.ts +102 -0
  46. package/dist/core-DFUj5GtA.d.ts.map +1 -0
  47. package/dist/database.cjs +7 -0
  48. package/dist/database.d.cts +4 -0
  49. package/dist/database.d.ts +4 -0
  50. package/dist/database.js +5 -0
  51. package/dist/dictionary-D7l-qFt1.d.cts +316 -0
  52. package/dist/dictionary-D7l-qFt1.d.cts.map +1 -0
  53. package/dist/dictionary-_vzfBLWi.d.ts +316 -0
  54. package/dist/dictionary-_vzfBLWi.d.ts.map +1 -0
  55. package/dist/dictionary-data-util-CHnRdYZ9.cjs +378 -0
  56. package/dist/dictionary-data-util-CHnRdYZ9.cjs.map +1 -0
  57. package/dist/dictionary-data-util-CfOLfEDE.js +323 -0
  58. package/dist/dictionary-data-util-CfOLfEDE.js.map +1 -0
  59. package/dist/dictionary-database-BDC2f9zc.d.ts +58 -0
  60. package/dist/dictionary-database-BDC2f9zc.d.ts.map +1 -0
  61. package/dist/dictionary-database-CU4TsvCC.js +393 -0
  62. package/dist/dictionary-database-CU4TsvCC.js.map +1 -0
  63. package/dist/dictionary-database-DsOi04Sg.d.cts +58 -0
  64. package/dist/dictionary-database-DsOi04Sg.d.cts.map +1 -0
  65. package/dist/dictionary-database-lvFvftnO.cjs +412 -0
  66. package/dist/dictionary-database-lvFvftnO.cjs.map +1 -0
  67. package/dist/dictionary-importer-BkQQSBhm.d.ts +237 -0
  68. package/dist/dictionary-importer-BkQQSBhm.d.ts.map +1 -0
  69. package/dist/dictionary-importer-Cen1z6co.js +1821 -0
  70. package/dist/dictionary-importer-Cen1z6co.js.map +1 -0
  71. package/dist/dictionary-importer-DYmmWmcX.cjs +8 -0
  72. package/dist/dictionary-importer-Da3AuTZw.d.cts +237 -0
  73. package/dist/dictionary-importer-Da3AuTZw.d.cts.map +1 -0
  74. package/dist/dictionary-importer-Dhn75iZ4.cjs +1834 -0
  75. package/dist/dictionary-importer-Dhn75iZ4.cjs.map +1 -0
  76. package/dist/dictionary-importer-xWkel0h-.js +8 -0
  77. package/dist/dictionary-update-checker-BNE4pGTx.js +4 -0
  78. package/dist/dictionary-update-checker-Byjvifd2.cjs +75 -0
  79. package/dist/dictionary-update-checker-Byjvifd2.cjs.map +1 -0
  80. package/dist/dictionary-update-checker-YdpalZ41.cjs +4 -0
  81. package/dist/dictionary-update-checker-kKukiovj.js +69 -0
  82. package/dist/dictionary-update-checker-kKukiovj.js.map +1 -0
  83. package/dist/display-generator-BGVWiI0t.js +746 -0
  84. package/dist/display-generator-BGVWiI0t.js.map +1 -0
  85. package/dist/display-generator-BMQmG5Ov.cjs +9 -0
  86. package/dist/display-generator-BxZ7mBjP.js +9 -0
  87. package/dist/display-generator-DyP-HNzP.cjs +758 -0
  88. package/dist/display-generator-DyP-HNzP.cjs.map +1 -0
  89. package/dist/errors-BSezaJwm.cjs +35 -0
  90. package/dist/errors-BSezaJwm.cjs.map +1 -0
  91. package/dist/errors-DuuDSO5N.js +22 -0
  92. package/dist/errors-DuuDSO5N.js.map +1 -0
  93. package/dist/frequency-ranking-BXjfhhUQ.js +3 -0
  94. package/dist/frequency-ranking-Cx1kkIrw.cjs +3 -0
  95. package/dist/frequency-ranking-DEJMTMdg.js +159 -0
  96. package/dist/frequency-ranking-DEJMTMdg.js.map +1 -0
  97. package/dist/frequency-ranking-DVYxTXN-.cjs +166 -0
  98. package/dist/frequency-ranking-DVYxTXN-.cjs.map +1 -0
  99. package/dist/furigana-5HK97CY8.js +4 -0
  100. package/dist/furigana-9bBI9-qe.d.ts +47 -0
  101. package/dist/furigana-9bBI9-qe.d.ts.map +1 -0
  102. package/dist/furigana-B3-0y231.js +471 -0
  103. package/dist/furigana-B3-0y231.js.map +1 -0
  104. package/dist/furigana-CjOhzvZt.d.cts +47 -0
  105. package/dist/furigana-CjOhzvZt.d.cts.map +1 -0
  106. package/dist/furigana-DpZLcues.cjs +609 -0
  107. package/dist/furigana-DpZLcues.cjs.map +1 -0
  108. package/dist/furigana-h3v2ub4-.cjs +4 -0
  109. package/dist/import.cjs +12 -0
  110. package/dist/import.d.cts +107 -0
  111. package/dist/import.d.cts.map +1 -0
  112. package/dist/import.d.ts +107 -0
  113. package/dist/import.d.ts.map +1 -0
  114. package/dist/import.js +9 -0
  115. package/dist/index.cjs +275 -0
  116. package/dist/index.cjs.map +1 -0
  117. package/dist/index.d.cts +211 -0
  118. package/dist/index.d.cts.map +1 -0
  119. package/dist/index.d.ts +211 -0
  120. package/dist/index.d.ts.map +1 -0
  121. package/dist/index.js +238 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/json-DGd-cunA.js +17 -0
  124. package/dist/json-DGd-cunA.js.map +1 -0
  125. package/dist/json-DKWp-B7Y.cjs +30 -0
  126. package/dist/json-DKWp-B7Y.cjs.map +1 -0
  127. package/dist/language-KN_u-nTR.d.ts +104 -0
  128. package/dist/language-KN_u-nTR.d.ts.map +1 -0
  129. package/dist/language-xAbQxgXc.d.cts +104 -0
  130. package/dist/language-xAbQxgXc.d.cts.map +1 -0
  131. package/dist/language.cjs +15626 -0
  132. package/dist/language.cjs.map +1 -0
  133. package/dist/language.d.cts +959 -0
  134. package/dist/language.d.cts.map +1 -0
  135. package/dist/language.d.ts +959 -0
  136. package/dist/language.d.ts.map +1 -0
  137. package/dist/language.js +15522 -0
  138. package/dist/language.js.map +1 -0
  139. package/dist/log-D8KtR3aP.cjs +67 -0
  140. package/dist/log-D8KtR3aP.cjs.map +1 -0
  141. package/dist/log-hgSll-dS.js +60 -0
  142. package/dist/log-hgSll-dS.js.map +1 -0
  143. package/dist/lookup.cjs +13 -0
  144. package/dist/lookup.d.cts +161 -0
  145. package/dist/lookup.d.cts.map +1 -0
  146. package/dist/lookup.d.ts +161 -0
  147. package/dist/lookup.d.ts.map +1 -0
  148. package/dist/lookup.js +10 -0
  149. package/dist/media-loader-BABA_E4W.js +3 -0
  150. package/dist/media-loader-Ce9cuANS.cjs +21 -0
  151. package/dist/media-loader-Ce9cuANS.cjs.map +1 -0
  152. package/dist/media-loader-qRti-Q6h.js +14 -0
  153. package/dist/media-loader-qRti-Q6h.js.map +1 -0
  154. package/dist/media-loader-xlUGaJrx.cjs +3 -0
  155. package/dist/multi-language-transformer-AlxOM6b3.js +637 -0
  156. package/dist/multi-language-transformer-AlxOM6b3.js.map +1 -0
  157. package/dist/multi-language-transformer-MdbQBBOt.cjs +685 -0
  158. package/dist/multi-language-transformer-MdbQBBOt.cjs.map +1 -0
  159. package/dist/multi-language-transformer-SEhcJXEB.d.ts +63 -0
  160. package/dist/multi-language-transformer-SEhcJXEB.d.ts.map +1 -0
  161. package/dist/multi-language-transformer-Ul9mbRce.d.cts +63 -0
  162. package/dist/multi-language-transformer-Ul9mbRce.d.cts.map +1 -0
  163. package/dist/pronunciation-generator-BtBc4q_V.js +397 -0
  164. package/dist/pronunciation-generator-BtBc4q_V.js.map +1 -0
  165. package/dist/pronunciation-generator-CBYdXYou.js +4 -0
  166. package/dist/pronunciation-generator-CFbZlf5J.cjs +445 -0
  167. package/dist/pronunciation-generator-CFbZlf5J.cjs.map +1 -0
  168. package/dist/pronunciation-generator-DOz9hEuk.cjs +4 -0
  169. package/dist/render.cjs +2796 -0
  170. package/dist/render.cjs.map +1 -0
  171. package/dist/render.d.cts +424 -0
  172. package/dist/render.d.cts.map +1 -0
  173. package/dist/render.d.ts +424 -0
  174. package/dist/render.d.ts.map +1 -0
  175. package/dist/render.js +2777 -0
  176. package/dist/render.js.map +1 -0
  177. package/dist/sentence-parser-BPAJNzqW.js +126 -0
  178. package/dist/sentence-parser-BPAJNzqW.js.map +1 -0
  179. package/dist/sentence-parser-BVIOI64h.cjs +132 -0
  180. package/dist/sentence-parser-BVIOI64h.cjs.map +1 -0
  181. package/dist/sentence-parser-BoHO3cHn.js +5 -0
  182. package/dist/sentence-parser-DQVLSW0z.cjs +5 -0
  183. package/dist/structured-content-generator-BtOApkTW.cjs +4 -0
  184. package/dist/structured-content-generator-Bx62RYa8.js +4 -0
  185. package/dist/structured-content-generator-CLnybumI.js +276 -0
  186. package/dist/structured-content-generator-CLnybumI.js.map +1 -0
  187. package/dist/structured-content-generator-DrwkB0-k.cjs +282 -0
  188. package/dist/structured-content-generator-DrwkB0-k.cjs.map +1 -0
  189. package/dist/text-utilities-B7PIythe.js +8 -0
  190. package/dist/text-utilities-B7PIythe.js.map +1 -0
  191. package/dist/text-utilities-Del2Ivkg.cjs +15 -0
  192. package/dist/text-utilities-Del2Ivkg.cjs.map +1 -0
  193. package/dist/translator-CRPlPzqi.cjs +1545 -0
  194. package/dist/translator-CRPlPzqi.cjs.map +1 -0
  195. package/dist/translator-CWgG5drA.js +1539 -0
  196. package/dist/translator-CWgG5drA.js.map +1 -0
  197. package/dist/translator-CaGtJvnQ.cjs +6 -0
  198. package/dist/translator-Cc6OGxrW.d.ts +180 -0
  199. package/dist/translator-Cc6OGxrW.d.ts.map +1 -0
  200. package/dist/translator-CcA-s-W4.d.cts +180 -0
  201. package/dist/translator-CcA-s-W4.d.cts.map +1 -0
  202. package/dist/translator-CuJOTK6l.js +6 -0
  203. package/dist/utilities-C-lbZaJE.cjs +52 -0
  204. package/dist/utilities-C-lbZaJE.cjs.map +1 -0
  205. package/dist/utilities-bi3EF-q5.js +33 -0
  206. package/dist/utilities-bi3EF-q5.js.map +1 -0
  207. package/package.json +102 -0
@@ -0,0 +1,84 @@
1
+ //#region src/lookup/batch-processor.ts
2
+ /**
3
+ * Processes multiple text lookups in batch with optional concurrency limiting.
4
+ * Shares the translator's tag cache across lookups for improved performance.
5
+ */
6
+ var BatchProcessor = class {
7
+ _translator;
8
+ constructor(translator) {
9
+ this._translator = translator;
10
+ }
11
+ /**
12
+ * Looks up multiple texts and returns a map of text to results.
13
+ * Texts are deduplicated before lookup. Concurrency is limited by the
14
+ * `concurrency` config option.
15
+ */
16
+ async batchLookup(texts, config) {
17
+ const language = config.language ?? "ja";
18
+ const concurrency = config.concurrency ?? 5;
19
+ const mode = config.mode ?? "group";
20
+ const enabledDictionaryMap = this._buildFindTermDictionaryMap(config.enabledDictionaryMap);
21
+ const uniqueTexts = [...new Set(texts)];
22
+ const results = new Map();
23
+ for (let i = 0; i < uniqueTexts.length; i += concurrency) {
24
+ const batch = uniqueTexts.slice(i, i + concurrency);
25
+ const promises = batch.map(async (text) => {
26
+ const result = await this._lookupSingle(text, language, mode, enabledDictionaryMap);
27
+ results.set(text, result);
28
+ });
29
+ await Promise.all(promises);
30
+ }
31
+ return results;
32
+ }
33
+ /**
34
+ * Performs a single text lookup.
35
+ */
36
+ async _lookupSingle(text, language, mode, enabledDictionaryMap) {
37
+ const options = {
38
+ matchType: "exact",
39
+ deinflect: true,
40
+ primaryReading: "",
41
+ mainDictionary: "",
42
+ sortFrequencyDictionary: null,
43
+ sortFrequencyDictionaryOrder: "descending",
44
+ removeNonJapaneseCharacters: language === "ja" || language === "zh" || language === "yue" || language === "ko",
45
+ textReplacements: [null],
46
+ enabledDictionaryMap,
47
+ excludeDictionaryDefinitions: null,
48
+ searchResolution: "letter",
49
+ language
50
+ };
51
+ try {
52
+ const { dictionaryEntries, originalTextLength } = await this._translator.findTerms(mode, text, options);
53
+ return {
54
+ text,
55
+ entries: dictionaryEntries,
56
+ originalTextLength
57
+ };
58
+ } catch {
59
+ return {
60
+ text,
61
+ entries: [],
62
+ originalTextLength: 0
63
+ };
64
+ }
65
+ }
66
+ /**
67
+ * Builds a FindTermDictionary map from the simplified input format.
68
+ */
69
+ _buildFindTermDictionaryMap(inputMap) {
70
+ const result = new Map();
71
+ for (const [name, { index }] of inputMap.entries()) result.set(name, {
72
+ index,
73
+ alias: name,
74
+ allowSecondarySearches: false,
75
+ partsOfSpeechFilter: true,
76
+ useDeinflections: true
77
+ });
78
+ return result;
79
+ }
80
+ };
81
+
82
+ //#endregion
83
+ export { BatchProcessor };
84
+ //# sourceMappingURL=batch-processor-BR-gB3H3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-processor-BR-gB3H3.js","names":["translator: Translator","texts: string[]","config: BatchLookupConfig","text: string","language: string","mode: FindTermsMode","enabledDictionaryMap: Map<string, FindTermDictionary>","inputMap: Map<string, { index: number; priority: number }>"],"sources":["../src/lookup/batch-processor.ts"],"sourcesContent":["/*\n * Copyright (C) 2023-2025 Yomitan Authors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <https://www.gnu.org/licenses/>.\n */\n\nimport type { TermDictionaryEntry } from '../types/dictionary';\nimport type { FindTermDictionary } from '../types/translation';\nimport type { FindTermsMode, Translator } from './translator';\n\nexport interface BatchLookupConfig {\n /** The language code for the lookup. Defaults to 'ja'. */\n language?: string;\n /** The enabled dictionary map for lookups. */\n enabledDictionaryMap: Map<string, { index: number; priority: number }>;\n /** Maximum number of concurrent lookups. Defaults to 5. */\n concurrency?: number;\n /** The find terms mode. Defaults to 'group'. */\n mode?: FindTermsMode;\n}\n\nexport interface BatchResult {\n /** The original input text. */\n text: string;\n /** The dictionary entries found for this text. */\n entries: TermDictionaryEntry[];\n /** The length of the original text that was matched. */\n originalTextLength: number;\n}\n\n/**\n * Processes multiple text lookups in batch with optional concurrency limiting.\n * Shares the translator's tag cache across lookups for improved performance.\n */\nexport class BatchProcessor {\n private _translator: Translator;\n\n constructor(translator: Translator) {\n this._translator = translator;\n }\n\n /**\n * Looks up multiple texts and returns a map of text to results.\n * Texts are deduplicated before lookup. Concurrency is limited by the\n * `concurrency` config option.\n */\n async batchLookup(texts: string[], config: BatchLookupConfig): Promise<Map<string, BatchResult>> {\n const language = config.language ?? 'ja';\n const concurrency = config.concurrency ?? 5;\n const mode = config.mode ?? 'group';\n const enabledDictionaryMap = this._buildFindTermDictionaryMap(config.enabledDictionaryMap);\n\n // Deduplicate texts\n const uniqueTexts = [...new Set(texts)];\n const results = new Map<string, BatchResult>();\n\n // Process in batches with concurrency limiting\n for (let i = 0; i < uniqueTexts.length; i += concurrency) {\n const batch = uniqueTexts.slice(i, i + concurrency);\n const promises = batch.map(async (text) => {\n const result = await this._lookupSingle(text, language, mode, enabledDictionaryMap);\n results.set(text, result);\n });\n await Promise.all(promises);\n }\n\n return results;\n }\n\n /**\n * Performs a single text lookup.\n */\n private async _lookupSingle(\n text: string,\n language: string,\n mode: FindTermsMode,\n enabledDictionaryMap: Map<string, FindTermDictionary>,\n ): Promise<BatchResult> {\n const options = {\n matchType: 'exact' as const,\n deinflect: true,\n primaryReading: '',\n mainDictionary: '',\n sortFrequencyDictionary: null,\n sortFrequencyDictionaryOrder: 'descending' as const,\n removeNonJapaneseCharacters:\n language === 'ja' || language === 'zh' || language === 'yue' || language === 'ko',\n textReplacements: [null] as null[],\n enabledDictionaryMap,\n excludeDictionaryDefinitions: null,\n searchResolution: 'letter' as const,\n language,\n };\n\n try {\n const { dictionaryEntries, originalTextLength } = await this._translator.findTerms(mode, text, options);\n return {\n text,\n entries: dictionaryEntries,\n originalTextLength,\n };\n } catch {\n return {\n text,\n entries: [],\n originalTextLength: 0,\n };\n }\n }\n\n /**\n * Builds a FindTermDictionary map from the simplified input format.\n */\n private _buildFindTermDictionaryMap(\n inputMap: Map<string, { index: number; priority: number }>,\n ): Map<string, FindTermDictionary> {\n const result = new Map<string, FindTermDictionary>();\n for (const [name, { index }] of inputMap.entries()) {\n result.set(name, {\n index,\n alias: name,\n allowSecondarySearches: false,\n partsOfSpeechFilter: true,\n useDeinflections: true,\n });\n }\n return result;\n }\n}\n"],"mappings":";;;;;AA6CA,IAAa,iBAAb,MAA4B;CACxB,AAAQ;CAER,YAAYA,YAAwB;AAChC,OAAK,cAAc;CACtB;;;;;;CAOD,MAAM,YAAYC,OAAiBC,QAA8D;EAC7F,MAAM,WAAW,OAAO,YAAY;EACpC,MAAM,cAAc,OAAO,eAAe;EAC1C,MAAM,OAAO,OAAO,QAAQ;EAC5B,MAAM,uBAAuB,KAAK,4BAA4B,OAAO,qBAAqB;EAG1F,MAAM,cAAc,CAAC,GAAG,IAAI,IAAI,MAAO;EACvC,MAAM,UAAU,IAAI;AAGpB,OAAK,IAAI,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK,aAAa;GACtD,MAAM,QAAQ,YAAY,MAAM,GAAG,IAAI,YAAY;GACnD,MAAM,WAAW,MAAM,IAAI,OAAO,SAAS;IACvC,MAAM,SAAS,MAAM,KAAK,cAAc,MAAM,UAAU,MAAM,qBAAqB;AACnF,YAAQ,IAAI,MAAM,OAAO;GAC5B,EAAC;AACF,SAAM,QAAQ,IAAI,SAAS;EAC9B;AAED,SAAO;CACV;;;;CAKD,MAAc,cACVC,MACAC,UACAC,MACAC,sBACoB;EACpB,MAAM,UAAU;GACZ,WAAW;GACX,WAAW;GACX,gBAAgB;GAChB,gBAAgB;GAChB,yBAAyB;GACzB,8BAA8B;GAC9B,6BACI,aAAa,QAAQ,aAAa,QAAQ,aAAa,SAAS,aAAa;GACjF,kBAAkB,CAAC,IAAK;GACxB;GACA,8BAA8B;GAC9B,kBAAkB;GAClB;EACH;AAED,MAAI;GACA,MAAM,EAAE,mBAAmB,oBAAoB,GAAG,MAAM,KAAK,YAAY,UAAU,MAAM,MAAM,QAAQ;AACvG,UAAO;IACH;IACA,SAAS;IACT;GACH;EACJ,QAAO;AACJ,UAAO;IACH;IACA,SAAS,CAAE;IACX,oBAAoB;GACvB;EACJ;CACJ;;;;CAKD,AAAQ,4BACJC,UAC+B;EAC/B,MAAM,SAAS,IAAI;AACnB,OAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,SAAS,SAAS,CAC9C,QAAO,IAAI,MAAM;GACb;GACA,OAAO;GACP,wBAAwB;GACxB,qBAAqB;GACrB,kBAAkB;EACrB,EAAC;AAEN,SAAO;CACV;AACJ"}
@@ -0,0 +1,3 @@
1
+ const require_batch_processor = require('./batch-processor-DFqM_L-_.cjs');
2
+
3
+ exports.BatchProcessor = require_batch_processor.BatchProcessor
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ //#region src/lookup/batch-processor.ts
4
+ /**
5
+ * Processes multiple text lookups in batch with optional concurrency limiting.
6
+ * Shares the translator's tag cache across lookups for improved performance.
7
+ */
8
+ var BatchProcessor = class {
9
+ _translator;
10
+ constructor(translator) {
11
+ this._translator = translator;
12
+ }
13
+ /**
14
+ * Looks up multiple texts and returns a map of text to results.
15
+ * Texts are deduplicated before lookup. Concurrency is limited by the
16
+ * `concurrency` config option.
17
+ */
18
+ async batchLookup(texts, config) {
19
+ const language = config.language ?? "ja";
20
+ const concurrency = config.concurrency ?? 5;
21
+ const mode = config.mode ?? "group";
22
+ const enabledDictionaryMap = this._buildFindTermDictionaryMap(config.enabledDictionaryMap);
23
+ const uniqueTexts = [...new Set(texts)];
24
+ const results = new Map();
25
+ for (let i = 0; i < uniqueTexts.length; i += concurrency) {
26
+ const batch = uniqueTexts.slice(i, i + concurrency);
27
+ const promises = batch.map(async (text) => {
28
+ const result = await this._lookupSingle(text, language, mode, enabledDictionaryMap);
29
+ results.set(text, result);
30
+ });
31
+ await Promise.all(promises);
32
+ }
33
+ return results;
34
+ }
35
+ /**
36
+ * Performs a single text lookup.
37
+ */
38
+ async _lookupSingle(text, language, mode, enabledDictionaryMap) {
39
+ const options = {
40
+ matchType: "exact",
41
+ deinflect: true,
42
+ primaryReading: "",
43
+ mainDictionary: "",
44
+ sortFrequencyDictionary: null,
45
+ sortFrequencyDictionaryOrder: "descending",
46
+ removeNonJapaneseCharacters: language === "ja" || language === "zh" || language === "yue" || language === "ko",
47
+ textReplacements: [null],
48
+ enabledDictionaryMap,
49
+ excludeDictionaryDefinitions: null,
50
+ searchResolution: "letter",
51
+ language
52
+ };
53
+ try {
54
+ const { dictionaryEntries, originalTextLength } = await this._translator.findTerms(mode, text, options);
55
+ return {
56
+ text,
57
+ entries: dictionaryEntries,
58
+ originalTextLength
59
+ };
60
+ } catch {
61
+ return {
62
+ text,
63
+ entries: [],
64
+ originalTextLength: 0
65
+ };
66
+ }
67
+ }
68
+ /**
69
+ * Builds a FindTermDictionary map from the simplified input format.
70
+ */
71
+ _buildFindTermDictionaryMap(inputMap) {
72
+ const result = new Map();
73
+ for (const [name, { index }] of inputMap.entries()) result.set(name, {
74
+ index,
75
+ alias: name,
76
+ allowSecondarySearches: false,
77
+ partsOfSpeechFilter: true,
78
+ useDeinflections: true
79
+ });
80
+ return result;
81
+ }
82
+ };
83
+
84
+ //#endregion
85
+ Object.defineProperty(exports, 'BatchProcessor', {
86
+ enumerable: true,
87
+ get: function () {
88
+ return BatchProcessor;
89
+ }
90
+ });
91
+ //# sourceMappingURL=batch-processor-DFqM_L-_.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-processor-DFqM_L-_.cjs","names":["translator: Translator","texts: string[]","config: BatchLookupConfig","text: string","language: string","mode: FindTermsMode","enabledDictionaryMap: Map<string, FindTermDictionary>","inputMap: Map<string, { index: number; priority: number }>"],"sources":["../src/lookup/batch-processor.ts"],"sourcesContent":["/*\n * Copyright (C) 2023-2025 Yomitan Authors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <https://www.gnu.org/licenses/>.\n */\n\nimport type { TermDictionaryEntry } from '../types/dictionary';\nimport type { FindTermDictionary } from '../types/translation';\nimport type { FindTermsMode, Translator } from './translator';\n\nexport interface BatchLookupConfig {\n /** The language code for the lookup. Defaults to 'ja'. */\n language?: string;\n /** The enabled dictionary map for lookups. */\n enabledDictionaryMap: Map<string, { index: number; priority: number }>;\n /** Maximum number of concurrent lookups. Defaults to 5. */\n concurrency?: number;\n /** The find terms mode. Defaults to 'group'. */\n mode?: FindTermsMode;\n}\n\nexport interface BatchResult {\n /** The original input text. */\n text: string;\n /** The dictionary entries found for this text. */\n entries: TermDictionaryEntry[];\n /** The length of the original text that was matched. */\n originalTextLength: number;\n}\n\n/**\n * Processes multiple text lookups in batch with optional concurrency limiting.\n * Shares the translator's tag cache across lookups for improved performance.\n */\nexport class BatchProcessor {\n private _translator: Translator;\n\n constructor(translator: Translator) {\n this._translator = translator;\n }\n\n /**\n * Looks up multiple texts and returns a map of text to results.\n * Texts are deduplicated before lookup. Concurrency is limited by the\n * `concurrency` config option.\n */\n async batchLookup(texts: string[], config: BatchLookupConfig): Promise<Map<string, BatchResult>> {\n const language = config.language ?? 'ja';\n const concurrency = config.concurrency ?? 5;\n const mode = config.mode ?? 'group';\n const enabledDictionaryMap = this._buildFindTermDictionaryMap(config.enabledDictionaryMap);\n\n // Deduplicate texts\n const uniqueTexts = [...new Set(texts)];\n const results = new Map<string, BatchResult>();\n\n // Process in batches with concurrency limiting\n for (let i = 0; i < uniqueTexts.length; i += concurrency) {\n const batch = uniqueTexts.slice(i, i + concurrency);\n const promises = batch.map(async (text) => {\n const result = await this._lookupSingle(text, language, mode, enabledDictionaryMap);\n results.set(text, result);\n });\n await Promise.all(promises);\n }\n\n return results;\n }\n\n /**\n * Performs a single text lookup.\n */\n private async _lookupSingle(\n text: string,\n language: string,\n mode: FindTermsMode,\n enabledDictionaryMap: Map<string, FindTermDictionary>,\n ): Promise<BatchResult> {\n const options = {\n matchType: 'exact' as const,\n deinflect: true,\n primaryReading: '',\n mainDictionary: '',\n sortFrequencyDictionary: null,\n sortFrequencyDictionaryOrder: 'descending' as const,\n removeNonJapaneseCharacters:\n language === 'ja' || language === 'zh' || language === 'yue' || language === 'ko',\n textReplacements: [null] as null[],\n enabledDictionaryMap,\n excludeDictionaryDefinitions: null,\n searchResolution: 'letter' as const,\n language,\n };\n\n try {\n const { dictionaryEntries, originalTextLength } = await this._translator.findTerms(mode, text, options);\n return {\n text,\n entries: dictionaryEntries,\n originalTextLength,\n };\n } catch {\n return {\n text,\n entries: [],\n originalTextLength: 0,\n };\n }\n }\n\n /**\n * Builds a FindTermDictionary map from the simplified input format.\n */\n private _buildFindTermDictionaryMap(\n inputMap: Map<string, { index: number; priority: number }>,\n ): Map<string, FindTermDictionary> {\n const result = new Map<string, FindTermDictionary>();\n for (const [name, { index }] of inputMap.entries()) {\n result.set(name, {\n index,\n alias: name,\n allowSecondarySearches: false,\n partsOfSpeechFilter: true,\n useDeinflections: true,\n });\n }\n return result;\n }\n}\n"],"mappings":";;;;;;;AA6CA,IAAa,iBAAb,MAA4B;CACxB,AAAQ;CAER,YAAYA,YAAwB;AAChC,OAAK,cAAc;CACtB;;;;;;CAOD,MAAM,YAAYC,OAAiBC,QAA8D;EAC7F,MAAM,WAAW,OAAO,YAAY;EACpC,MAAM,cAAc,OAAO,eAAe;EAC1C,MAAM,OAAO,OAAO,QAAQ;EAC5B,MAAM,uBAAuB,KAAK,4BAA4B,OAAO,qBAAqB;EAG1F,MAAM,cAAc,CAAC,GAAG,IAAI,IAAI,MAAO;EACvC,MAAM,UAAU,IAAI;AAGpB,OAAK,IAAI,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK,aAAa;GACtD,MAAM,QAAQ,YAAY,MAAM,GAAG,IAAI,YAAY;GACnD,MAAM,WAAW,MAAM,IAAI,OAAO,SAAS;IACvC,MAAM,SAAS,MAAM,KAAK,cAAc,MAAM,UAAU,MAAM,qBAAqB;AACnF,YAAQ,IAAI,MAAM,OAAO;GAC5B,EAAC;AACF,SAAM,QAAQ,IAAI,SAAS;EAC9B;AAED,SAAO;CACV;;;;CAKD,MAAc,cACVC,MACAC,UACAC,MACAC,sBACoB;EACpB,MAAM,UAAU;GACZ,WAAW;GACX,WAAW;GACX,gBAAgB;GAChB,gBAAgB;GAChB,yBAAyB;GACzB,8BAA8B;GAC9B,6BACI,aAAa,QAAQ,aAAa,QAAQ,aAAa,SAAS,aAAa;GACjF,kBAAkB,CAAC,IAAK;GACxB;GACA,8BAA8B;GAC9B,kBAAkB;GAClB;EACH;AAED,MAAI;GACA,MAAM,EAAE,mBAAmB,oBAAoB,GAAG,MAAM,KAAK,YAAY,UAAU,MAAM,MAAM,QAAQ;AACvG,UAAO;IACH;IACA,SAAS;IACT;GACH;EACJ,QAAO;AACJ,UAAO;IACH;IACA,SAAS,CAAE;IACX,oBAAoB;GACvB;EACJ;CACJ;;;;CAKD,AAAQ,4BACJC,UAC+B;EAC/B,MAAM,SAAS,IAAI;AACnB,OAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,SAAS,SAAS,CAC9C,QAAO,IAAI,MAAM;GACb;GACA,OAAO;GACP,wBAAwB;GACxB,qBAAqB;GACrB,kBAAkB;EACrB,EAAC;AAEN,SAAO;CACV;AACJ"}
@@ -0,0 +1,3 @@
1
+ import { BatchProcessor } from "./batch-processor-BR-gB3H3.js";
2
+
3
+ export { BatchProcessor };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ //#region rolldown:runtime
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
13
+ get: ((k) => from[k]).bind(null, key),
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
20
+ value: mod,
21
+ enumerable: true
22
+ }) : target, mod));
23
+
24
+ //#endregion
25
+
26
+ Object.defineProperty(exports, '__toESM', {
27
+ enumerable: true,
28
+ get: function () {
29
+ return __toESM;
30
+ }
31
+ });
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+
3
+ //#region src/language/text-processors.ts
4
+ const basicTextProcessorOptions = [false, true];
5
+ const decapitalize = {
6
+ name: "Decapitalize text",
7
+ description: "CAPITALIZED TEXT → capitalized text",
8
+ options: basicTextProcessorOptions,
9
+ process: (str, setting) => setting ? str.toLowerCase() : str
10
+ };
11
+ const capitalizeFirstLetter = {
12
+ name: "Capitalize first letter",
13
+ description: "lowercase text → Lowercase text",
14
+ options: basicTextProcessorOptions,
15
+ process: (str, setting) => setting ? str.charAt(0).toUpperCase() + str.slice(1) : str
16
+ };
17
+ const removeAlphabeticDiacritics = {
18
+ name: "Remove Alphabetic Diacritics",
19
+ description: "ἄήé -> αηe",
20
+ options: basicTextProcessorOptions,
21
+ process: (str, setting) => setting ? str.normalize("NFD").replace(/[\u0300-\u036f]/g, "") : str
22
+ };
23
+
24
+ //#endregion
25
+ //#region src/language/cjk-util.ts
26
+ const CJK_UNIFIED_IDEOGRAPHS_RANGE = [19968, 40959];
27
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE = [13312, 19903];
28
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE = [131072, 173791];
29
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE = [173824, 177983];
30
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE = [177984, 178207];
31
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE = [178208, 183983];
32
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE = [183984, 191471];
33
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE = [196608, 201551];
34
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE = [201552, 205743];
35
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE = [191472, 192095];
36
+ const CJK_COMPATIBILITY_IDEOGRAPHS_RANGE = [63744, 64255];
37
+ const CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE = [194560, 195103];
38
+ const CJK_IDEOGRAPH_RANGES = [
39
+ CJK_UNIFIED_IDEOGRAPHS_RANGE,
40
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE,
41
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE,
42
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE,
43
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE,
44
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE,
45
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE,
46
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE,
47
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE,
48
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE,
49
+ CJK_COMPATIBILITY_IDEOGRAPHS_RANGE,
50
+ CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE
51
+ ];
52
+ const FULLWIDTH_CHARACTER_RANGES = [
53
+ [65296, 65305],
54
+ [65313, 65338],
55
+ [65345, 65370],
56
+ [65281, 65295],
57
+ [65306, 65311],
58
+ [65339, 65343],
59
+ [65371, 65376],
60
+ [65504, 65518]
61
+ ];
62
+ const CJK_PUNCTUATION_RANGE = [12288, 12351];
63
+ const CJK_COMPATIBILITY = [13056, 13311];
64
+ function isCodePointInRange(codePoint, [min, max]) {
65
+ return codePoint >= min && codePoint <= max;
66
+ }
67
+ function isCodePointInRanges(codePoint, ranges) {
68
+ for (const [min, max] of ranges) if (codePoint >= min && codePoint <= max) return true;
69
+ return false;
70
+ }
71
+ const KANGXI_RADICALS_RANGE = [12032, 12255];
72
+ const CJK_RADICALS_SUPPLEMENT_RANGE = [11904, 12031];
73
+ const CJK_STROKES_RANGE = [12736, 12783];
74
+ const CJK_RADICALS_RANGES = [
75
+ KANGXI_RADICALS_RANGE,
76
+ CJK_RADICALS_SUPPLEMENT_RANGE,
77
+ CJK_STROKES_RANGE
78
+ ];
79
+ function normalizeRadicals(text) {
80
+ let result = "";
81
+ for (let i = 0; i < text.length; i++) {
82
+ const codePoint = text[i].codePointAt(0);
83
+ result += codePoint && isCodePointInRanges(codePoint, CJK_RADICALS_RANGES) ? text[i].normalize("NFKD") : text[i];
84
+ }
85
+ return result;
86
+ }
87
+ const normalizeRadicalCharacters = {
88
+ name: "Normalize radical characters",
89
+ description: "⼀ → 一 (U+2F00 → U+4E00)",
90
+ options: basicTextProcessorOptions,
91
+ process: (str, setting) => setting ? normalizeRadicals(str) : str
92
+ };
93
+
94
+ //#endregion
95
+ Object.defineProperty(exports, 'CJK_COMPATIBILITY', {
96
+ enumerable: true,
97
+ get: function () {
98
+ return CJK_COMPATIBILITY;
99
+ }
100
+ });
101
+ Object.defineProperty(exports, 'CJK_IDEOGRAPH_RANGES', {
102
+ enumerable: true,
103
+ get: function () {
104
+ return CJK_IDEOGRAPH_RANGES;
105
+ }
106
+ });
107
+ Object.defineProperty(exports, 'CJK_PUNCTUATION_RANGE', {
108
+ enumerable: true,
109
+ get: function () {
110
+ return CJK_PUNCTUATION_RANGE;
111
+ }
112
+ });
113
+ Object.defineProperty(exports, 'FULLWIDTH_CHARACTER_RANGES', {
114
+ enumerable: true,
115
+ get: function () {
116
+ return FULLWIDTH_CHARACTER_RANGES;
117
+ }
118
+ });
119
+ Object.defineProperty(exports, 'basicTextProcessorOptions', {
120
+ enumerable: true,
121
+ get: function () {
122
+ return basicTextProcessorOptions;
123
+ }
124
+ });
125
+ Object.defineProperty(exports, 'capitalizeFirstLetter', {
126
+ enumerable: true,
127
+ get: function () {
128
+ return capitalizeFirstLetter;
129
+ }
130
+ });
131
+ Object.defineProperty(exports, 'decapitalize', {
132
+ enumerable: true,
133
+ get: function () {
134
+ return decapitalize;
135
+ }
136
+ });
137
+ Object.defineProperty(exports, 'isCodePointInRange', {
138
+ enumerable: true,
139
+ get: function () {
140
+ return isCodePointInRange;
141
+ }
142
+ });
143
+ Object.defineProperty(exports, 'isCodePointInRanges', {
144
+ enumerable: true,
145
+ get: function () {
146
+ return isCodePointInRanges;
147
+ }
148
+ });
149
+ Object.defineProperty(exports, 'normalizeRadicalCharacters', {
150
+ enumerable: true,
151
+ get: function () {
152
+ return normalizeRadicalCharacters;
153
+ }
154
+ });
155
+ Object.defineProperty(exports, 'normalizeRadicals', {
156
+ enumerable: true,
157
+ get: function () {
158
+ return normalizeRadicals;
159
+ }
160
+ });
161
+ Object.defineProperty(exports, 'removeAlphabeticDiacritics', {
162
+ enumerable: true,
163
+ get: function () {
164
+ return removeAlphabeticDiacritics;
165
+ }
166
+ });
167
+ //# sourceMappingURL=cjk-util-Dp0ZU0sh.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cjk-util-Dp0ZU0sh.cjs","names":["basicTextProcessorOptions: TextProcessorOptions<boolean>","decapitalize: TextProcessor<boolean>","capitalizeFirstLetter: TextProcessor<boolean>","removeAlphabeticDiacritics: TextProcessor<boolean>","CJK_UNIFIED_IDEOGRAPHS_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE: CodepointRange","CJK_COMPATIBILITY_IDEOGRAPHS_RANGE: CodepointRange","CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE: CodepointRange","CJK_IDEOGRAPH_RANGES: CodepointRange[]","FULLWIDTH_CHARACTER_RANGES: CodepointRange[]","CJK_PUNCTUATION_RANGE: CodepointRange","CJK_COMPATIBILITY: CodepointRange","codePoint: number","ranges: CodepointRange[]","KANGXI_RADICALS_RANGE: CodepointRange","CJK_RADICALS_SUPPLEMENT_RANGE: CodepointRange","CJK_STROKES_RANGE: CodepointRange","CJK_RADICALS_RANGES: CodepointRange[]","text: string","normalizeRadicalCharacters: TextProcessor<boolean>"],"sources":["../src/language/text-processors.ts","../src/language/cjk-util.ts"],"sourcesContent":["import type { TextProcessor, TextProcessorOptions } from '../types/language';\n\nexport const basicTextProcessorOptions: TextProcessorOptions<boolean> = [false, true];\n\nexport const decapitalize: TextProcessor<boolean> = {\n name: 'Decapitalize text',\n description: 'CAPITALIZED TEXT → capitalized text',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? str.toLowerCase() : str),\n};\n\nexport const capitalizeFirstLetter: TextProcessor<boolean> = {\n name: 'Capitalize first letter',\n description: 'lowercase text → Lowercase text',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? str.charAt(0).toUpperCase() + str.slice(1) : str),\n};\n\nexport const removeAlphabeticDiacritics: TextProcessor<boolean> = {\n name: 'Remove Alphabetic Diacritics',\n description: 'ἄήé -> αηe',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : str),\n};\n","import type { TextProcessor } from '../types/language';\nimport { basicTextProcessorOptions } from './text-processors';\n\nexport type CodepointRange = [number, number];\n\nconst CJK_UNIFIED_IDEOGRAPHS_RANGE: CodepointRange = [0x4e00, 0x9fff];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE: CodepointRange = [0x3400, 0x4dbf];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE: CodepointRange = [0x20000, 0x2a6df];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE: CodepointRange = [0x2a700, 0x2b73f];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE: CodepointRange = [0x2b740, 0x2b81f];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE: CodepointRange = [0x2b820, 0x2ceaf];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE: CodepointRange = [0x2ceb0, 0x2ebef];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE: CodepointRange = [0x30000, 0x3134f];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE: CodepointRange = [0x31350, 0x323af];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE: CodepointRange = [0x2ebf0, 0x2ee5f];\nconst CJK_COMPATIBILITY_IDEOGRAPHS_RANGE: CodepointRange = [0xf900, 0xfaff];\nconst CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE: CodepointRange = [0x2f800, 0x2fa1f];\n\nexport const CJK_IDEOGRAPH_RANGES: CodepointRange[] = [\n CJK_UNIFIED_IDEOGRAPHS_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE,\n CJK_COMPATIBILITY_IDEOGRAPHS_RANGE,\n CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE,\n];\n\nexport const FULLWIDTH_CHARACTER_RANGES: CodepointRange[] = [\n [0xff10, 0xff19],\n [0xff21, 0xff3a],\n [0xff41, 0xff5a],\n [0xff01, 0xff0f],\n [0xff1a, 0xff1f],\n [0xff3b, 0xff3f],\n [0xff5b, 0xff60],\n [0xffe0, 0xffee],\n];\n\nexport const CJK_PUNCTUATION_RANGE: CodepointRange = [0x3000, 0x303f];\n\nexport const CJK_COMPATIBILITY: CodepointRange = [0x3300, 0x33ff];\n\nexport function isCodePointInRange(codePoint: number, [min, max]: CodepointRange): boolean {\n return codePoint >= min && codePoint <= max;\n}\n\nexport function isCodePointInRanges(codePoint: number, ranges: CodepointRange[]): boolean {\n for (const [min, max] of ranges) {\n if (codePoint >= min && codePoint <= max) {\n return true;\n }\n }\n return false;\n}\n\nexport const KANGXI_RADICALS_RANGE: CodepointRange = [0x2f00, 0x2fdf];\nexport const CJK_RADICALS_SUPPLEMENT_RANGE: CodepointRange = [0x2e80, 0x2eff];\nexport const CJK_STROKES_RANGE: CodepointRange = [0x31c0, 0x31ef];\n\nexport const CJK_RADICALS_RANGES: CodepointRange[] = [\n KANGXI_RADICALS_RANGE,\n CJK_RADICALS_SUPPLEMENT_RANGE,\n CJK_STROKES_RANGE,\n];\n\nexport function normalizeRadicals(text: string): string {\n let result = '';\n for (let i = 0; i < text.length; i++) {\n const codePoint = text[i].codePointAt(0);\n result +=\n codePoint && isCodePointInRanges(codePoint, CJK_RADICALS_RANGES) ? text[i].normalize('NFKD') : text[i];\n }\n return result;\n}\n\nexport const normalizeRadicalCharacters: TextProcessor<boolean> = {\n name: 'Normalize radical characters',\n description: '⼀ → 一 (U+2F00 → U+4E00)',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? normalizeRadicals(str) : str),\n};\n"],"mappings":";;;AAEA,MAAaA,4BAA2D,CAAC,OAAO,IAAK;AAErF,MAAaC,eAAuC;CAChD,MAAM;CACN,aAAa;CACb,SAAS;CACT,SAAS,CAAC,KAAK,YAAa,UAAU,IAAI,aAAa,GAAG;AAC7D;AAED,MAAaC,wBAAgD;CACzD,MAAM;CACN,aAAa;CACb,SAAS;CACT,SAAS,CAAC,KAAK,YAAa,UAAU,IAAI,OAAO,EAAE,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE,GAAG;AACtF;AAED,MAAaC,6BAAqD;CAC9D,MAAM;CACN,aAAa;CACb,SAAS;CACT,SAAS,CAAC,KAAK,YAAa,UAAU,IAAI,UAAU,MAAM,CAAC,QAAQ,oBAAoB,GAAG,GAAG;AAChG;;;;AClBD,MAAMC,+BAA+C,CAAC,OAAQ,KAAO;AACrE,MAAMC,2CAA2D,CAAC,OAAQ,KAAO;AACjF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,qCAAqD,CAAC,OAAQ,KAAO;AAC3E,MAAMC,gDAAgE,CAAC,QAAS,MAAQ;AAExF,MAAaC,uBAAyC;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AAED,MAAaC,6BAA+C;CACxD,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;AACnB;AAED,MAAaC,wBAAwC,CAAC,OAAQ,KAAO;AAErE,MAAaC,oBAAoC,CAAC,OAAQ,KAAO;AAEjE,SAAgB,mBAAmBC,WAAmB,CAAC,KAAK,IAAoB,EAAW;AACvF,QAAO,aAAa,OAAO,aAAa;AAC3C;AAED,SAAgB,oBAAoBA,WAAmBC,QAAmC;AACtF,MAAK,MAAM,CAAC,KAAK,IAAI,IAAI,OACrB,KAAI,aAAa,OAAO,aAAa,IACjC,QAAO;AAGf,QAAO;AACV;AAED,MAAaC,wBAAwC,CAAC,OAAQ,KAAO;AACrE,MAAaC,gCAAgD,CAAC,OAAQ,KAAO;AAC7E,MAAaC,oBAAoC,CAAC,OAAQ,KAAO;AAEjE,MAAaC,sBAAwC;CACjD;CACA;CACA;AACH;AAED,SAAgB,kBAAkBC,MAAsB;CACpD,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EAClC,MAAM,YAAY,KAAK,GAAG,YAAY,EAAE;AACxC,YACI,aAAa,oBAAoB,WAAW,oBAAoB,GAAG,KAAK,GAAG,UAAU,OAAO,GAAG,KAAK;CAC3G;AACD,QAAO;AACV;AAED,MAAaC,6BAAqD;CAC9D,MAAM;CACN,aAAa;CACb,SAAS;CACT,SAAS,CAAC,KAAK,YAAa,UAAU,kBAAkB,IAAI,GAAG;AAClE"}
@@ -0,0 +1,94 @@
1
+ //#region src/language/text-processors.ts
2
+ const basicTextProcessorOptions = [false, true];
3
+ const decapitalize = {
4
+ name: "Decapitalize text",
5
+ description: "CAPITALIZED TEXT → capitalized text",
6
+ options: basicTextProcessorOptions,
7
+ process: (str, setting) => setting ? str.toLowerCase() : str
8
+ };
9
+ const capitalizeFirstLetter = {
10
+ name: "Capitalize first letter",
11
+ description: "lowercase text → Lowercase text",
12
+ options: basicTextProcessorOptions,
13
+ process: (str, setting) => setting ? str.charAt(0).toUpperCase() + str.slice(1) : str
14
+ };
15
+ const removeAlphabeticDiacritics = {
16
+ name: "Remove Alphabetic Diacritics",
17
+ description: "ἄήé -> αηe",
18
+ options: basicTextProcessorOptions,
19
+ process: (str, setting) => setting ? str.normalize("NFD").replace(/[\u0300-\u036f]/g, "") : str
20
+ };
21
+
22
+ //#endregion
23
+ //#region src/language/cjk-util.ts
24
+ const CJK_UNIFIED_IDEOGRAPHS_RANGE = [19968, 40959];
25
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE = [13312, 19903];
26
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE = [131072, 173791];
27
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE = [173824, 177983];
28
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE = [177984, 178207];
29
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE = [178208, 183983];
30
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE = [183984, 191471];
31
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE = [196608, 201551];
32
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE = [201552, 205743];
33
+ const CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE = [191472, 192095];
34
+ const CJK_COMPATIBILITY_IDEOGRAPHS_RANGE = [63744, 64255];
35
+ const CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE = [194560, 195103];
36
+ const CJK_IDEOGRAPH_RANGES = [
37
+ CJK_UNIFIED_IDEOGRAPHS_RANGE,
38
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE,
39
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE,
40
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE,
41
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE,
42
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE,
43
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE,
44
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE,
45
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE,
46
+ CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE,
47
+ CJK_COMPATIBILITY_IDEOGRAPHS_RANGE,
48
+ CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE
49
+ ];
50
+ const FULLWIDTH_CHARACTER_RANGES = [
51
+ [65296, 65305],
52
+ [65313, 65338],
53
+ [65345, 65370],
54
+ [65281, 65295],
55
+ [65306, 65311],
56
+ [65339, 65343],
57
+ [65371, 65376],
58
+ [65504, 65518]
59
+ ];
60
+ const CJK_PUNCTUATION_RANGE = [12288, 12351];
61
+ const CJK_COMPATIBILITY = [13056, 13311];
62
+ function isCodePointInRange(codePoint, [min, max]) {
63
+ return codePoint >= min && codePoint <= max;
64
+ }
65
+ function isCodePointInRanges(codePoint, ranges) {
66
+ for (const [min, max] of ranges) if (codePoint >= min && codePoint <= max) return true;
67
+ return false;
68
+ }
69
+ const KANGXI_RADICALS_RANGE = [12032, 12255];
70
+ const CJK_RADICALS_SUPPLEMENT_RANGE = [11904, 12031];
71
+ const CJK_STROKES_RANGE = [12736, 12783];
72
+ const CJK_RADICALS_RANGES = [
73
+ KANGXI_RADICALS_RANGE,
74
+ CJK_RADICALS_SUPPLEMENT_RANGE,
75
+ CJK_STROKES_RANGE
76
+ ];
77
+ function normalizeRadicals(text) {
78
+ let result = "";
79
+ for (let i = 0; i < text.length; i++) {
80
+ const codePoint = text[i].codePointAt(0);
81
+ result += codePoint && isCodePointInRanges(codePoint, CJK_RADICALS_RANGES) ? text[i].normalize("NFKD") : text[i];
82
+ }
83
+ return result;
84
+ }
85
+ const normalizeRadicalCharacters = {
86
+ name: "Normalize radical characters",
87
+ description: "⼀ → 一 (U+2F00 → U+4E00)",
88
+ options: basicTextProcessorOptions,
89
+ process: (str, setting) => setting ? normalizeRadicals(str) : str
90
+ };
91
+
92
+ //#endregion
93
+ export { CJK_COMPATIBILITY, CJK_IDEOGRAPH_RANGES, CJK_PUNCTUATION_RANGE, FULLWIDTH_CHARACTER_RANGES, basicTextProcessorOptions, capitalizeFirstLetter, decapitalize, isCodePointInRange, isCodePointInRanges, normalizeRadicalCharacters, normalizeRadicals, removeAlphabeticDiacritics };
94
+ //# sourceMappingURL=cjk-util-DubXBGDG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cjk-util-DubXBGDG.js","names":["basicTextProcessorOptions: TextProcessorOptions<boolean>","decapitalize: TextProcessor<boolean>","capitalizeFirstLetter: TextProcessor<boolean>","removeAlphabeticDiacritics: TextProcessor<boolean>","CJK_UNIFIED_IDEOGRAPHS_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE: CodepointRange","CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE: CodepointRange","CJK_COMPATIBILITY_IDEOGRAPHS_RANGE: CodepointRange","CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE: CodepointRange","CJK_IDEOGRAPH_RANGES: CodepointRange[]","FULLWIDTH_CHARACTER_RANGES: CodepointRange[]","CJK_PUNCTUATION_RANGE: CodepointRange","CJK_COMPATIBILITY: CodepointRange","codePoint: number","ranges: CodepointRange[]","KANGXI_RADICALS_RANGE: CodepointRange","CJK_RADICALS_SUPPLEMENT_RANGE: CodepointRange","CJK_STROKES_RANGE: CodepointRange","CJK_RADICALS_RANGES: CodepointRange[]","text: string","normalizeRadicalCharacters: TextProcessor<boolean>"],"sources":["../src/language/text-processors.ts","../src/language/cjk-util.ts"],"sourcesContent":["import type { TextProcessor, TextProcessorOptions } from '../types/language';\n\nexport const basicTextProcessorOptions: TextProcessorOptions<boolean> = [false, true];\n\nexport const decapitalize: TextProcessor<boolean> = {\n name: 'Decapitalize text',\n description: 'CAPITALIZED TEXT → capitalized text',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? str.toLowerCase() : str),\n};\n\nexport const capitalizeFirstLetter: TextProcessor<boolean> = {\n name: 'Capitalize first letter',\n description: 'lowercase text → Lowercase text',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? str.charAt(0).toUpperCase() + str.slice(1) : str),\n};\n\nexport const removeAlphabeticDiacritics: TextProcessor<boolean> = {\n name: 'Remove Alphabetic Diacritics',\n description: 'ἄήé -> αηe',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : str),\n};\n","import type { TextProcessor } from '../types/language';\nimport { basicTextProcessorOptions } from './text-processors';\n\nexport type CodepointRange = [number, number];\n\nconst CJK_UNIFIED_IDEOGRAPHS_RANGE: CodepointRange = [0x4e00, 0x9fff];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE: CodepointRange = [0x3400, 0x4dbf];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE: CodepointRange = [0x20000, 0x2a6df];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE: CodepointRange = [0x2a700, 0x2b73f];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE: CodepointRange = [0x2b740, 0x2b81f];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE: CodepointRange = [0x2b820, 0x2ceaf];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE: CodepointRange = [0x2ceb0, 0x2ebef];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE: CodepointRange = [0x30000, 0x3134f];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE: CodepointRange = [0x31350, 0x323af];\nconst CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE: CodepointRange = [0x2ebf0, 0x2ee5f];\nconst CJK_COMPATIBILITY_IDEOGRAPHS_RANGE: CodepointRange = [0xf900, 0xfaff];\nconst CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE: CodepointRange = [0x2f800, 0x2fa1f];\n\nexport const CJK_IDEOGRAPH_RANGES: CodepointRange[] = [\n CJK_UNIFIED_IDEOGRAPHS_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_RANGE,\n CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_RANGE,\n CJK_COMPATIBILITY_IDEOGRAPHS_RANGE,\n CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_RANGE,\n];\n\nexport const FULLWIDTH_CHARACTER_RANGES: CodepointRange[] = [\n [0xff10, 0xff19],\n [0xff21, 0xff3a],\n [0xff41, 0xff5a],\n [0xff01, 0xff0f],\n [0xff1a, 0xff1f],\n [0xff3b, 0xff3f],\n [0xff5b, 0xff60],\n [0xffe0, 0xffee],\n];\n\nexport const CJK_PUNCTUATION_RANGE: CodepointRange = [0x3000, 0x303f];\n\nexport const CJK_COMPATIBILITY: CodepointRange = [0x3300, 0x33ff];\n\nexport function isCodePointInRange(codePoint: number, [min, max]: CodepointRange): boolean {\n return codePoint >= min && codePoint <= max;\n}\n\nexport function isCodePointInRanges(codePoint: number, ranges: CodepointRange[]): boolean {\n for (const [min, max] of ranges) {\n if (codePoint >= min && codePoint <= max) {\n return true;\n }\n }\n return false;\n}\n\nexport const KANGXI_RADICALS_RANGE: CodepointRange = [0x2f00, 0x2fdf];\nexport const CJK_RADICALS_SUPPLEMENT_RANGE: CodepointRange = [0x2e80, 0x2eff];\nexport const CJK_STROKES_RANGE: CodepointRange = [0x31c0, 0x31ef];\n\nexport const CJK_RADICALS_RANGES: CodepointRange[] = [\n KANGXI_RADICALS_RANGE,\n CJK_RADICALS_SUPPLEMENT_RANGE,\n CJK_STROKES_RANGE,\n];\n\nexport function normalizeRadicals(text: string): string {\n let result = '';\n for (let i = 0; i < text.length; i++) {\n const codePoint = text[i].codePointAt(0);\n result +=\n codePoint && isCodePointInRanges(codePoint, CJK_RADICALS_RANGES) ? text[i].normalize('NFKD') : text[i];\n }\n return result;\n}\n\nexport const normalizeRadicalCharacters: TextProcessor<boolean> = {\n name: 'Normalize radical characters',\n description: '⼀ → 一 (U+2F00 → U+4E00)',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? normalizeRadicals(str) : str),\n};\n"],"mappings":";AAEA,MAAaA,4BAA2D,CAAC,OAAO,IAAK;AAErF,MAAaC,eAAuC;CAChD,MAAM;CACN,aAAa;CACb,SAAS;CACT,SAAS,CAAC,KAAK,YAAa,UAAU,IAAI,aAAa,GAAG;AAC7D;AAED,MAAaC,wBAAgD;CACzD,MAAM;CACN,aAAa;CACb,SAAS;CACT,SAAS,CAAC,KAAK,YAAa,UAAU,IAAI,OAAO,EAAE,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE,GAAG;AACtF;AAED,MAAaC,6BAAqD;CAC9D,MAAM;CACN,aAAa;CACb,SAAS;CACT,SAAS,CAAC,KAAK,YAAa,UAAU,IAAI,UAAU,MAAM,CAAC,QAAQ,oBAAoB,GAAG,GAAG;AAChG;;;;AClBD,MAAMC,+BAA+C,CAAC,OAAQ,KAAO;AACrE,MAAMC,2CAA2D,CAAC,OAAQ,KAAO;AACjF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,2CAA2D,CAAC,QAAS,MAAQ;AACnF,MAAMC,qCAAqD,CAAC,OAAQ,KAAO;AAC3E,MAAMC,gDAAgE,CAAC,QAAS,MAAQ;AAExF,MAAaC,uBAAyC;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACH;AAED,MAAaC,6BAA+C;CACxD,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;CAChB,CAAC,OAAQ,KAAO;AACnB;AAED,MAAaC,wBAAwC,CAAC,OAAQ,KAAO;AAErE,MAAaC,oBAAoC,CAAC,OAAQ,KAAO;AAEjE,SAAgB,mBAAmBC,WAAmB,CAAC,KAAK,IAAoB,EAAW;AACvF,QAAO,aAAa,OAAO,aAAa;AAC3C;AAED,SAAgB,oBAAoBA,WAAmBC,QAAmC;AACtF,MAAK,MAAM,CAAC,KAAK,IAAI,IAAI,OACrB,KAAI,aAAa,OAAO,aAAa,IACjC,QAAO;AAGf,QAAO;AACV;AAED,MAAaC,wBAAwC,CAAC,OAAQ,KAAO;AACrE,MAAaC,gCAAgD,CAAC,OAAQ,KAAO;AAC7E,MAAaC,oBAAoC,CAAC,OAAQ,KAAO;AAEjE,MAAaC,sBAAwC;CACjD;CACA;CACA;AACH;AAED,SAAgB,kBAAkBC,MAAsB;CACpD,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EAClC,MAAM,YAAY,KAAK,GAAG,YAAY,EAAE;AACxC,YACI,aAAa,oBAAoB,WAAW,oBAAoB,GAAG,KAAK,GAAG,UAAU,OAAO,GAAG,KAAK;CAC3G;AACD,QAAO;AACV;AAED,MAAaC,6BAAqD;CAC9D,MAAM;CACN,aAAa;CACb,SAAS;CACT,SAAS,CAAC,KAAK,YAAa,UAAU,kBAAkB,IAAI,GAAG;AAClE"}
@@ -0,0 +1,102 @@
1
+ //#region src/types/anki.d.ts
2
+ type NoteId = number;
3
+ type CardId = number;
4
+ type NoteWithId = Note & {
5
+ id: NoteId;
6
+ };
7
+ type Note = {
8
+ fields: NoteFields;
9
+ tags: string[];
10
+ deckName: string;
11
+ modelName: string;
12
+ options: {
13
+ allowDuplicate: boolean;
14
+ duplicateScope: string;
15
+ duplicateScopeOptions: {
16
+ deckName: string | null;
17
+ checkChildren: boolean;
18
+ checkAllModels: boolean;
19
+ };
20
+ };
21
+ };
22
+ type NoteFields = {
23
+ [field: string]: string;
24
+ };
25
+ type NoteInfoWrapper = {
26
+ canAdd: boolean;
27
+ valid: boolean;
28
+ noteIds: NoteId[] | null;
29
+ noteInfos?: (NoteInfo | null)[];
30
+ };
31
+ type NoteInfo = {
32
+ noteId: NoteId;
33
+ tags: string[];
34
+ fields: {
35
+ [key: string]: NoteFieldInfo;
36
+ };
37
+ modelName: string;
38
+ cards: CardId[];
39
+ cardsInfo: CardInfo[];
40
+ };
41
+ type NoteFieldInfo = {
42
+ value: string;
43
+ order: number;
44
+ };
45
+ type CardInfo = {
46
+ noteId: NoteId;
47
+ cardId: CardId;
48
+ flags: number;
49
+ cardState: number;
50
+ };
51
+ type ApiReflectResult = {
52
+ scopes: string[];
53
+ actions: string[];
54
+ };
55
+ type MessageBody = {
56
+ action: string;
57
+ params: {
58
+ [key: string]: unknown;
59
+ };
60
+ version: number;
61
+ key?: string;
62
+ };
63
+ type CanAddNotesDetail = {
64
+ canAdd: boolean;
65
+ error: string | null;
66
+ }; //#endregion
67
+ //#region src/types/core.d.ts
68
+
69
+ //# sourceMappingURL=anki.d.ts.map
70
+ type TypeofResult = 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function';
71
+ type SafeAny = any;
72
+ type RejectionReason = SafeAny;
73
+ type SerializableObject = {
74
+ [key: string]: unknown;
75
+ };
76
+ type UnknownObject = {
77
+ [key: string | symbol]: unknown;
78
+ };
79
+ type TokenString = string;
80
+ type TokenObject = Record<string, never>;
81
+ type DeferredPromiseDetails<T = unknown> = {
82
+ promise: Promise<T>;
83
+ resolve: (value: T) => void;
84
+ reject: (reason?: RejectionReason) => void;
85
+ };
86
+ type EventSurface = {
87
+ [name: string]: unknown;
88
+ };
89
+ type EventNames<TSurface extends EventSurface> = keyof TSurface & string;
90
+ type EventArgument<TSurface extends EventSurface, TName extends EventNames<TSurface>> = TSurface[TName];
91
+ type EventHandler<TSurface extends EventSurface, TName extends EventNames<TSurface>> = (details: EventArgument<TSurface, TName>) => void;
92
+ type EventHandlerAny = (details: SafeAny) => void;
93
+ type EventDispatcherOffGeneric = {
94
+ off(eventName: string, callback: (...args: SafeAny) => void): boolean;
95
+ };
96
+ type Timeout = number | ReturnType<typeof setTimeout>;
97
+
98
+ //#endregion
99
+ //# sourceMappingURL=core.d.ts.map
100
+
101
+ export { ApiReflectResult, CanAddNotesDetail, CardId, CardInfo, DeferredPromiseDetails, EventArgument, EventDispatcherOffGeneric, EventHandler, EventHandlerAny, EventNames, EventSurface, MessageBody, Note, NoteFieldInfo, NoteFields, NoteId, NoteInfo, NoteInfoWrapper, NoteWithId, RejectionReason, SafeAny, SerializableObject, Timeout, TokenObject, TokenString, TypeofResult, UnknownObject };
102
+ //# sourceMappingURL=core-BUpclilG.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-BUpclilG.d.cts","names":[],"sources":["../src/types/anki.ts","../src/types/core.ts"],"sourcesContent":null,"mappings":";KAAY,MAAA;AAAA,KAEA,MAAA,GAFM,MAAA;AAEN,KAEA,UAAA,GAAa,IAFP,GAAA;EAEN,EAAA,EAA0B,MAA1B;CAAU;AAAG,KAEb,IAAA,GAFa;EAAI,MAAS,EAG1B,UAH0B;EAAM,IAAA,EAAA,MAAA,EAAA;EAEhC,QAAI,EAAA,MAAA;EAgBJ,SAAA,EAAA,MAAU;EAIV,OAAA,EAAA;IAAe,cAAA,EAAA,OAAA;IAGd,cAAA,EAAA,MAAA;IACI,qBAAA,EAAA;MAAQ,QAAA,EAAA,MAAA,GAAA,IAAA;MAGb,aAAQ,EAAA,OAAA;MAAA,cAAA,EAAA,OAAA;IACR,CAAA;EAAM,CAAA;CAEwB;AAG3B,KAjBH,UAAA,GAiBG;EAAQ,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAGvB,CAAA;AAKY,KArBA,eAAA,GAqBQ;EAAA,MAAA,EAAA,OAAA;EAAA,KACR,EAAA,OAAA;EAAM,OACN,EApBC,MAoBD,EAAA,GAAA,IAAA;EAAM,SAAA,CAAA,EAAA,CAnBD,QAmBC,GAAA,IAAA,CAAA,EAAA;AAKlB,CAAA;AAKY,KA1BA,QAAA,GA0BW;EAOX,MAAA,EAhCA,MAgCA;;;mBA9BiB;ECpCjB,CAAA;EAGA,SAAA,EAAO,MAAA;EAEP,KAAA,EDiCD,MCjCC,EAAA;EAEA,SAAA,EDgCG,QChCH,EAAkB;AAE9B,CAAA;AAEY,KD+BA,aAAA,GC/BW;EAEX,KAAA,EAAA,MAAA;EAEA,KAAA,EAAA,MAAA;CAAsB;AACb,KD+BT,QAAA,GC/BS;EAAC,MAAT,EDgCD,MChCC;EAAO,MACC,EDgCT,MChCS;EAAC,KACA,EAAA,MAAA;EAAe,SAAA,EAAA,MAAA;AAGrC,CAAA;AAEY,KD+BA,gBAAA,GC/BU;EAAA,MAAA,EAAA,MAAA,EAAA;EAAA,OAAkB,EAAA,MAAA,EAAA;CAAY;AAAkB,KDoC1D,WAAA,GCpC0D;EAE1D,MAAA,EAAA,MAAA;EAAa,MAAA,EAAA;IAAkB,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAAY,CAAA;EAAmC,OAAnB,EAAA,MAAA;EAAU,GAAc,CAAA,EAAA,MAAA;CAAQ;AAAM,KDyCjG,iBAAA,GCzCiG;EAEjG,MAAA,EAAA,OAAY;EAAA,KAAA,EAAA,MAAA,GAAA,IAAA;CAAA,CAAA;;;;KA3BZ,YAAA;ADAA,KCGA,OAAA,GDHM,GAAA;AAEN,KCGA,eAAA,GAAkB,ODHZ;AAEN,KCGA,kBAAA,GDHU;EAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;CAAA;AAAgB,KCK1B,aAAA,GDL0B;EAAM,CAAA,GAAA,EAAA,MAAA,GAAA,MAAA,CAAA,EAAA,OAAA;AAE5C,CAAA;AAgBY,KCXA,WAAA,GDWU,MAAA;AAIV,KCbA,WAAA,GAAc,MDaC,CAAA,MAAA,EAAA,KAAA,CAAA;AAAA,KCXf,sBDWe,CAAA,IAAA,OAAA,CAAA,GAAA;EAAA,OAGd,ECbA,ODaA,CCbQ,CDaR,CAAA;EAAM,OACF,EAAA,CAAA,KAAA,ECbI,CDaJ,EAAA,GAAA,IAAA;EAAQ,MAAA,EAAA,CAAA,MAAA,CAAA,ECZH,eDYG,EAAA,GAAA,IAAA;AAGzB,CAAA;AAAoB,KCZR,YAAA,GDYQ;EAAA,CAAA,IACR,EAAA,MAAA,CAAA,EAAA,OAAA;CAAM;AAIP,KCfC,UDeD,CAAA,iBCf6B,YDe7B,CAAA,GAAA,MCfmD,QDenD,GAAA,MAAA;AACI,KCdH,aDcG,CAAA,iBCd4B,YDc5B,EAAA,cCdwD,UDcxD,CCdmE,QDcnE,CAAA,CAAA,GCdgF,QDchF,CCdyF,KDczF,CAAA;AAAQ,KCZX,YDYW,CAAA,iBCZmB,YDYnB,EAAA,cCZ+C,UDY/C,CCZ0D,QDY1D,CAAA,CAAA,GAAA,CAAA,OAAA,ECXV,aDWU,CCXI,QDWJ,ECXc,KDWd,CAAA,EAAA,GAAA,IAAA;AAGX,KCXA,eAAA,GDWa,CAAA,OAAA,ECXe,ODWf,EAAA,GAAA,IAAA;AAKb,KCdA,yBAAA,GDcQ;EAAA,GAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,GAAA,IAAA,ECb2B,ODa3B,EAAA,GAAA,IAAA,CAAA,EAAA,OAAA;CAAA;AAER,KCZA,OAAA,GDYA,MAAA,GCZmB,UDYnB,CAAA,OCZqC,UDYrC,CAAA;;;AAAM"}