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,4 @@
1
+ require('./cjk-util-Dp0ZU0sh.cjs');
2
+ const require_furigana = require('./furigana-DpZLcues.cjs');
3
+
4
+ exports.generateFurigana = require_furigana.generateFurigana
@@ -0,0 +1,12 @@
1
+ require('./utilities-C-lbZaJE.cjs');
2
+ require('./errors-BSezaJwm.cjs');
3
+ require('./dictionary-data-util-CHnRdYZ9.cjs');
4
+ require('./json-DKWp-B7Y.cjs');
5
+ const require_dictionary_importer = require('./dictionary-importer-Dhn75iZ4.cjs');
6
+ const require_media_loader = require('./media-loader-Ce9cuANS.cjs');
7
+ const require_dictionary_update_checker = require('./dictionary-update-checker-Byjvifd2.cjs');
8
+
9
+ exports.DictionaryImporterClass = require_dictionary_importer.DictionaryImporterClass
10
+ exports.DictionaryUpdateChecker = require_dictionary_update_checker.DictionaryUpdateChecker
11
+ exports.NoOpMediaLoader = require_media_loader.NoOpMediaLoader
12
+ exports.getSchemaValidators = require_dictionary_importer.getSchemaValidators
@@ -0,0 +1,107 @@
1
+ import "./dictionary-D7l-qFt1.cjs";
2
+ import { CompiledSchemaValidators, ImportDetails, ImportResult, OnProgressCallback } from "./dictionary-importer-Da3AuTZw.cjs";
3
+ import { DictionaryDB } from "./dictionary-database-DsOi04Sg.cjs";
4
+
5
+ //#region src/import/media-loader.d.ts
6
+ interface MediaLoader {
7
+ getImageDetails(content: ArrayBuffer, mediaType: string): Promise<{
8
+ content: ArrayBuffer;
9
+ width: number;
10
+ height: number;
11
+ }>;
12
+ }
13
+ declare class NoOpMediaLoader implements MediaLoader {
14
+ getImageDetails(content: ArrayBuffer, _mediaType: string): Promise<{
15
+ content: ArrayBuffer;
16
+ width: number;
17
+ height: number;
18
+ }>;
19
+ }
20
+
21
+ //#endregion
22
+ //#region src/import/dictionary-importer.d.ts
23
+ //# sourceMappingURL=media-loader.d.ts.map
24
+ declare class DictionaryImporterClass {
25
+ private _mediaLoader;
26
+ private _onProgress;
27
+ private _progressData;
28
+ constructor(mediaLoader?: MediaLoader, onProgress?: OnProgressCallback);
29
+ importDictionary(dictionaryDatabase: DictionaryDB, archiveContent: ArrayBuffer, details: ImportDetails): Promise<ImportResult>;
30
+ private _getFilesFromArchive;
31
+ private _findRedundantDirectories;
32
+ private _readAndValidateIndex;
33
+ private _createProgressData;
34
+ private _progressReset;
35
+ private _progressNextStep;
36
+ private _progress;
37
+ private _createSummary;
38
+ private _validateUrl;
39
+ private _formatAjvSchemaError;
40
+ private _getDataBankSchemas;
41
+ private _validateCss;
42
+ private _formatDictionaryTermGlossaryObject;
43
+ private _formatDictionaryTermGlossaryImage;
44
+ private _formatStructuredContent;
45
+ private _prepareStructuredContent;
46
+ private _prepareStructuredContentImage;
47
+ private _resolveAsyncRequirements;
48
+ private _resolveAsyncRequirement;
49
+ private _resolveDictionaryTermGlossaryImage;
50
+ private _resolveStructuredContentImage;
51
+ private _createImageData;
52
+ private _getImageMedia;
53
+ private _convertTermBankEntryV1;
54
+ private _convertTermBankEntryV3;
55
+ private _convertTermMetaBankEntry;
56
+ private _convertKanjiBankEntryV1;
57
+ private _convertKanjiBankEntryV3;
58
+ private _convertKanjiMetaBankEntry;
59
+ private _convertTagBankEntry;
60
+ private _addOldIndexTags;
61
+ private _getArchiveFiles;
62
+ private _readFileSequence;
63
+ private _validateFile;
64
+ private _getMetaCounts;
65
+ private _getData;
66
+ } //#endregion
67
+ //#region src/import/dictionary-update-checker.d.ts
68
+
69
+ //# sourceMappingURL=dictionary-importer.d.ts.map
70
+ interface DictionaryUpdateInfo {
71
+ dictionaryName: string;
72
+ currentRevision: string;
73
+ latestRevision: string;
74
+ hasUpdate: boolean;
75
+ downloadUrl?: string;
76
+ }
77
+ declare class DictionaryUpdateChecker {
78
+ private _db;
79
+ constructor(db: DictionaryDB);
80
+ /**
81
+ * Checks for available updates for installed dictionaries.
82
+ * For each dictionary with an indexUrl, fetches the remote index
83
+ * and compares the revision to the locally installed revision.
84
+ *
85
+ * @param names Optional list of dictionary names to check.
86
+ * If not provided, checks all updatable dictionaries.
87
+ * @returns An array of update info objects for each checked dictionary.
88
+ */
89
+ checkForUpdates(names?: string[]): Promise<DictionaryUpdateInfo[]>;
90
+ private _filterDictionaries;
91
+ private _checkSingleDictionary;
92
+ }
93
+
94
+ //#endregion
95
+ //#region src/import/schema-validators.d.ts
96
+ //# sourceMappingURL=dictionary-update-checker.d.ts.map
97
+ /**
98
+ * Returns compiled AJV schema validators for all dictionary data bank types.
99
+ * Validators are compiled once on first call and cached for subsequent calls.
100
+ */
101
+ declare function getSchemaValidators(): CompiledSchemaValidators;
102
+
103
+ //#endregion
104
+ //# sourceMappingURL=schema-validators.d.ts.map
105
+
106
+ export { DictionaryImporterClass, DictionaryUpdateChecker, DictionaryUpdateInfo, MediaLoader, NoOpMediaLoader, getSchemaValidators };
107
+ //# sourceMappingURL=import.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.cts","names":[],"sources":["../src/import/media-loader.ts","../src/import/dictionary-importer.ts","../src/import/dictionary-update-checker.ts","../src/import/schema-validators.ts"],"sourcesContent":null,"mappings":";;;;;UAAiB,WAAA;2BAEA,iCAEV;aACU;;;EALA,CAAA,CAAA;;AAEA,cASJ,eAAA,YAA2B,WATvB,CAAA;EAAW,eAGX,CAAA,OAAA,EAQA,WARA,EAAA,UAAA,EAAA,MAAA,CAAA,EAUV,OAVU,CAAA;IADV,OAAA,EAYU,WAZV;IAAO,KAAA,EAAA,MAAA;IAOD,MAAA,EAAA,MAAgB;EAAA,CAAA,CAAA;;;;;;cCOhB,uBAAA;;EDlBI,QAAA,WAAW;EAAA,QAAA,aAAA;EAAA,WAEX,CAAA,WAAA,CAAA,ECqBa,WDrBb,EAAA,UAAA,CAAA,ECqBwB,kBDrBxB;EAAW,gBAGX,CAAA,kBAAA,ECyBW,YDzBX,EAAA,cAAA,EC0BO,WD1BP,EAAA,OAAA,EC0BkB,aD1BlB,CAAA,EC4BV,OD5BU,CC2BgC,YD3BhC,CAAA;EAAW,QADrB,oBAAA;EAAO,QAAA,yBAAA;EAOD,QAAA,qBAAgB;EAAA,QAAA,mBAAA;EAAA,QAEZ,cAAA;EAAW,QAGX,iBAAA;EAAW,QADrB,SAAA;EAAO,QAJ0B,cAAA;EAAW,QAAA,YAAA;;;;ECOtC,QAAA,mCAAuB;EAAA,QAAA,kCAAA;EAAA,QAKN,wBAAA;EAAW,QAAA,yBAAA;EAAoD,QAOjE,8BAAA;EAAY,QAChB,yBAAA;EAAW,QAAA,wBAAA;EACc,QAAA,mCAAA;EACH,QAAvC,8BAAA;EAAO,QAAA,gBAAA;;;;EC7BG,QAAA,yBAAoB;EAQxB,QAAA,wBAAuB;EAAA,QAAA,wBAAA;EAAA,QAGhB,0BAAA;EAAY,QAaqB,oBAAA;EAAoB,QAA5B,gBAAA;EAAO,QAAA,gBAAA;;;;;;;;;UAxBnC,oBAAA;;;;EFJA,SAAA,EAAA,OAAW;EAAA,WAAA,CAAA,EAAA,MAAA;;AAKX,cEOJ,uBAAA,CFPI;EAAW,QADrB,GAAA;EAAO,WAAA,CAAA,EAAA,EEWM,YFXN;EAOD;;;;;;AAAsC;;;qCEiBN,QAAQ;EDVxC,QAAA,mBAAuB;EAAA,QAAA,sBAAA;;;;;;;;;;ADlBnB,iBGkBD,mBAAA,CAAA,CHlBY,EGkBW,wBHlBX"}
@@ -0,0 +1,107 @@
1
+ import "./dictionary-_vzfBLWi.js";
2
+ import { CompiledSchemaValidators, ImportDetails, ImportResult, OnProgressCallback } from "./dictionary-importer-BkQQSBhm.js";
3
+ import { DictionaryDB$1 as DictionaryDB } from "./dictionary-database-BDC2f9zc.js";
4
+
5
+ //#region src/import/media-loader.d.ts
6
+ interface MediaLoader {
7
+ getImageDetails(content: ArrayBuffer, mediaType: string): Promise<{
8
+ content: ArrayBuffer;
9
+ width: number;
10
+ height: number;
11
+ }>;
12
+ }
13
+ declare class NoOpMediaLoader implements MediaLoader {
14
+ getImageDetails(content: ArrayBuffer, _mediaType: string): Promise<{
15
+ content: ArrayBuffer;
16
+ width: number;
17
+ height: number;
18
+ }>;
19
+ }
20
+
21
+ //#endregion
22
+ //#region src/import/dictionary-importer.d.ts
23
+ //# sourceMappingURL=media-loader.d.ts.map
24
+ declare class DictionaryImporterClass {
25
+ private _mediaLoader;
26
+ private _onProgress;
27
+ private _progressData;
28
+ constructor(mediaLoader?: MediaLoader, onProgress?: OnProgressCallback);
29
+ importDictionary(dictionaryDatabase: DictionaryDB, archiveContent: ArrayBuffer, details: ImportDetails): Promise<ImportResult>;
30
+ private _getFilesFromArchive;
31
+ private _findRedundantDirectories;
32
+ private _readAndValidateIndex;
33
+ private _createProgressData;
34
+ private _progressReset;
35
+ private _progressNextStep;
36
+ private _progress;
37
+ private _createSummary;
38
+ private _validateUrl;
39
+ private _formatAjvSchemaError;
40
+ private _getDataBankSchemas;
41
+ private _validateCss;
42
+ private _formatDictionaryTermGlossaryObject;
43
+ private _formatDictionaryTermGlossaryImage;
44
+ private _formatStructuredContent;
45
+ private _prepareStructuredContent;
46
+ private _prepareStructuredContentImage;
47
+ private _resolveAsyncRequirements;
48
+ private _resolveAsyncRequirement;
49
+ private _resolveDictionaryTermGlossaryImage;
50
+ private _resolveStructuredContentImage;
51
+ private _createImageData;
52
+ private _getImageMedia;
53
+ private _convertTermBankEntryV1;
54
+ private _convertTermBankEntryV3;
55
+ private _convertTermMetaBankEntry;
56
+ private _convertKanjiBankEntryV1;
57
+ private _convertKanjiBankEntryV3;
58
+ private _convertKanjiMetaBankEntry;
59
+ private _convertTagBankEntry;
60
+ private _addOldIndexTags;
61
+ private _getArchiveFiles;
62
+ private _readFileSequence;
63
+ private _validateFile;
64
+ private _getMetaCounts;
65
+ private _getData;
66
+ } //#endregion
67
+ //#region src/import/dictionary-update-checker.d.ts
68
+
69
+ //# sourceMappingURL=dictionary-importer.d.ts.map
70
+ interface DictionaryUpdateInfo {
71
+ dictionaryName: string;
72
+ currentRevision: string;
73
+ latestRevision: string;
74
+ hasUpdate: boolean;
75
+ downloadUrl?: string;
76
+ }
77
+ declare class DictionaryUpdateChecker {
78
+ private _db;
79
+ constructor(db: DictionaryDB);
80
+ /**
81
+ * Checks for available updates for installed dictionaries.
82
+ * For each dictionary with an indexUrl, fetches the remote index
83
+ * and compares the revision to the locally installed revision.
84
+ *
85
+ * @param names Optional list of dictionary names to check.
86
+ * If not provided, checks all updatable dictionaries.
87
+ * @returns An array of update info objects for each checked dictionary.
88
+ */
89
+ checkForUpdates(names?: string[]): Promise<DictionaryUpdateInfo[]>;
90
+ private _filterDictionaries;
91
+ private _checkSingleDictionary;
92
+ }
93
+
94
+ //#endregion
95
+ //#region src/import/schema-validators.d.ts
96
+ //# sourceMappingURL=dictionary-update-checker.d.ts.map
97
+ /**
98
+ * Returns compiled AJV schema validators for all dictionary data bank types.
99
+ * Validators are compiled once on first call and cached for subsequent calls.
100
+ */
101
+ declare function getSchemaValidators(): CompiledSchemaValidators;
102
+
103
+ //#endregion
104
+ //# sourceMappingURL=schema-validators.d.ts.map
105
+
106
+ export { DictionaryImporterClass, DictionaryUpdateChecker, DictionaryUpdateInfo, MediaLoader, NoOpMediaLoader, getSchemaValidators };
107
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","names":[],"sources":["../src/import/media-loader.ts","../src/import/dictionary-importer.ts","../src/import/dictionary-update-checker.ts","../src/import/schema-validators.ts"],"sourcesContent":null,"mappings":";;;;;UAAiB,WAAA;2BAEA,iCAEV;aACU;;;EALA,CAAA,CAAA;;AAEA,cASJ,eAAA,YAA2B,WATvB,CAAA;EAAW,eAGX,CAAA,OAAA,EAQA,WARA,EAAA,UAAA,EAAA,MAAA,CAAA,EAUV,OAVU,CAAA;IADV,OAAA,EAYU,WAZV;IAAO,KAAA,EAAA,MAAA;IAOD,MAAA,EAAA,MAAgB;EAAA,CAAA,CAAA;;;;;;cCOhB,uBAAA;;EDlBI,QAAA,WAAW;EAAA,QAAA,aAAA;EAAA,WAEX,CAAA,WAAA,CAAA,ECqBa,WDrBb,EAAA,UAAA,CAAA,ECqBwB,kBDrBxB;EAAW,gBAGX,CAAA,kBAAA,ECyBW,YDzBX,EAAA,cAAA,EC0BO,WD1BP,EAAA,OAAA,EC0BkB,aD1BlB,CAAA,EC4BV,OD5BU,CC2BgC,YD3BhC,CAAA;EAAW,QADrB,oBAAA;EAAO,QAAA,yBAAA;EAOD,QAAA,qBAAgB;EAAA,QAAA,mBAAA;EAAA,QAEZ,cAAA;EAAW,QAGX,iBAAA;EAAW,QADrB,SAAA;EAAO,QAJ0B,cAAA;EAAW,QAAA,YAAA;;;;ECOtC,QAAA,mCAAuB;EAAA,QAAA,kCAAA;EAAA,QAKN,wBAAA;EAAW,QAAA,yBAAA;EAAoD,QAOjE,8BAAA;EAAY,QAChB,yBAAA;EAAW,QAAA,wBAAA;EACc,QAAA,mCAAA;EACH,QAAvC,8BAAA;EAAO,QAAA,gBAAA;;;;EC7BG,QAAA,yBAAoB;EAQxB,QAAA,wBAAuB;EAAA,QAAA,wBAAA;EAAA,QAGhB,0BAAA;EAAY,QAaqB,oBAAA;EAAoB,QAA5B,gBAAA;EAAO,QAAA,gBAAA;;;;;;;;;UAxBnC,oBAAA;;;;EFJA,SAAA,EAAA,OAAW;EAAA,WAAA,CAAA,EAAA,MAAA;;AAKX,cEOJ,uBAAA,CFPI;EAAW,QADrB,GAAA;EAAO,WAAA,CAAA,EAAA,EEWM,YFXN;EAOD;;;;;;AAAsC;;;qCEiBN,QAAQ;EDVxC,QAAA,mBAAuB;EAAA,QAAA,sBAAA;;;;;;;;;;ADlBnB,iBGkBD,mBAAA,CAAA,CHlBY,EGkBW,wBHlBX"}
package/dist/import.js ADDED
@@ -0,0 +1,9 @@
1
+ import "./utilities-bi3EF-q5.js";
2
+ import "./errors-DuuDSO5N.js";
3
+ import "./dictionary-data-util-CfOLfEDE.js";
4
+ import "./json-DGd-cunA.js";
5
+ import { DictionaryImporterClass, getSchemaValidators } from "./dictionary-importer-Cen1z6co.js";
6
+ import { NoOpMediaLoader } from "./media-loader-qRti-Q6h.js";
7
+ import { DictionaryUpdateChecker } from "./dictionary-update-checker-kKukiovj.js";
8
+
9
+ export { DictionaryImporterClass, DictionaryUpdateChecker, NoOpMediaLoader, getSchemaValidators };
package/dist/index.cjs ADDED
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ const require_log = require('./log-D8KtR3aP.cjs');
4
+ require('./utilities-C-lbZaJE.cjs');
5
+ const require_dictionary_database = require('./dictionary-database-lvFvftnO.cjs');
6
+ require('./cjk-util-Dp0ZU0sh.cjs');
7
+ const require_multi_language_transformer = require('./multi-language-transformer-MdbQBBOt.cjs');
8
+ const require_errors = require('./errors-BSezaJwm.cjs');
9
+
10
+ //#region src/util/event-dispatcher.ts
11
+ /**
12
+ * Base class that controls basic event dispatching.
13
+ */
14
+ var EventDispatcher = class {
15
+ _eventMap;
16
+ constructor() {
17
+ this._eventMap = new Map();
18
+ }
19
+ trigger(eventName, details) {
20
+ const callbacks = this._eventMap.get(eventName);
21
+ if (typeof callbacks === "undefined") return false;
22
+ for (const callback of callbacks) callback(details);
23
+ return true;
24
+ }
25
+ on(eventName, callback) {
26
+ let callbacks = this._eventMap.get(eventName);
27
+ if (typeof callbacks === "undefined") {
28
+ callbacks = [];
29
+ this._eventMap.set(eventName, callbacks);
30
+ }
31
+ callbacks.push(callback);
32
+ }
33
+ off(eventName, callback) {
34
+ const callbacks = this._eventMap.get(eventName);
35
+ if (typeof callbacks === "undefined") return false;
36
+ const ii = callbacks.length;
37
+ for (let i = 0; i < ii; ++i) if (callbacks[i] === callback) {
38
+ callbacks.splice(i, 1);
39
+ if (callbacks.length === 0) this._eventMap.delete(eventName);
40
+ return true;
41
+ }
42
+ return false;
43
+ }
44
+ hasListeners(eventName) {
45
+ const callbacks = this._eventMap.get(eventName);
46
+ return typeof callbacks !== "undefined" && callbacks.length > 0;
47
+ }
48
+ };
49
+
50
+ //#endregion
51
+ //#region src/index.ts
52
+ var YomitanCore = class {
53
+ _db;
54
+ _multiLanguageTransformer;
55
+ _translator = null;
56
+ _sentenceParser = null;
57
+ _batchProcessor = null;
58
+ _frequencyRanker = null;
59
+ _initialized = false;
60
+ _config;
61
+ constructor(config) {
62
+ this._config = {
63
+ databaseName: config?.databaseName ?? "dict",
64
+ initLanguage: config?.initLanguage ?? true
65
+ };
66
+ this._db = new require_dictionary_database.DictionaryDB(this._config.databaseName);
67
+ this._multiLanguageTransformer = new require_multi_language_transformer.MultiLanguageTransformer();
68
+ }
69
+ async initialize() {
70
+ if (this._initialized) return;
71
+ await this._db.open();
72
+ if (this._config.initLanguage) this._multiLanguageTransformer.prepare();
73
+ this._initialized = true;
74
+ }
75
+ async dispose() {
76
+ if (!this._initialized) return;
77
+ this._db.close();
78
+ this._translator = null;
79
+ this._sentenceParser = null;
80
+ this._batchProcessor = null;
81
+ this._frequencyRanker = null;
82
+ this._initialized = false;
83
+ }
84
+ get isReady() {
85
+ return this._initialized;
86
+ }
87
+ get database() {
88
+ this._ensureInitialized();
89
+ return this._db;
90
+ }
91
+ async getTranslator() {
92
+ this._ensureInitialized();
93
+ if (!this._translator) {
94
+ const { Translator } = await Promise.resolve().then(function() {
95
+ return require("./translator-CaGtJvnQ.cjs");
96
+ });
97
+ this._translator = new Translator(this._db);
98
+ this._translator.prepare();
99
+ }
100
+ return this._translator;
101
+ }
102
+ get language() {
103
+ return {
104
+ summaries: require_multi_language_transformer.getLanguageSummaries(),
105
+ textProcessors: require_multi_language_transformer.getAllLanguageTextProcessors(),
106
+ transformer: this._multiLanguageTransformer,
107
+ isTextLookupWorthy: require_multi_language_transformer.isTextLookupWorthy
108
+ };
109
+ }
110
+ async importDictionary(archive, options) {
111
+ this._ensureInitialized();
112
+ const { DictionaryImporterClass: DictionaryImporter } = await Promise.resolve().then(function() {
113
+ return require("./dictionary-importer-DYmmWmcX.cjs");
114
+ });
115
+ const { NoOpMediaLoader } = await Promise.resolve().then(function() {
116
+ return require("./media-loader-xlUGaJrx.cjs");
117
+ });
118
+ const importer = new DictionaryImporter(new NoOpMediaLoader(), options?.onProgress);
119
+ const details = {
120
+ prefixWildcardsSupported: options?.prefixWildcardsSupported ?? false,
121
+ yomitanVersion: options?.yomitanVersion ?? "0.0.0"
122
+ };
123
+ return await importer.importDictionary(this._db, archive, details);
124
+ }
125
+ async deleteDictionary(name, onProgress) {
126
+ this._ensureInitialized();
127
+ await this._db.deleteDictionary(name, onProgress);
128
+ }
129
+ async getDictionaryInfo() {
130
+ this._ensureInitialized();
131
+ return await this._db.getDictionaryInfo();
132
+ }
133
+ async findTerms(text, config) {
134
+ this._ensureInitialized();
135
+ const translator = await this.getTranslator();
136
+ const mode = config.mode ?? "group";
137
+ const findOptions = {
138
+ matchType: config.options?.matchType ?? "exact",
139
+ deinflect: config.options?.deinflect ?? true,
140
+ primaryReading: config.options?.primaryReading ?? "",
141
+ mainDictionary: config.options?.mainDictionary ?? "",
142
+ sortFrequencyDictionary: config.options?.sortFrequencyDictionary ?? null,
143
+ sortFrequencyDictionaryOrder: config.options?.sortFrequencyDictionaryOrder ?? "descending",
144
+ removeNonJapaneseCharacters: config.options?.removeNonJapaneseCharacters ?? false,
145
+ textReplacements: config.options?.textReplacements ?? [null],
146
+ enabledDictionaryMap: config.enabledDictionaryMap,
147
+ excludeDictionaryDefinitions: config.options?.excludeDictionaryDefinitions ?? null,
148
+ searchResolution: config.options?.searchResolution ?? "letter",
149
+ language: config.language ?? "ja"
150
+ };
151
+ const { dictionaryEntries, originalTextLength } = await translator.findTerms(mode, text, findOptions);
152
+ return {
153
+ entries: dictionaryEntries,
154
+ originalTextLength
155
+ };
156
+ }
157
+ async findKanji(text, config) {
158
+ this._ensureInitialized();
159
+ const translator = await this.getTranslator();
160
+ const findOptions = {
161
+ enabledDictionaryMap: config.enabledDictionaryMap,
162
+ removeNonJapaneseCharacters: config.removeNonJapaneseCharacters ?? true
163
+ };
164
+ return await translator.findKanji(text, findOptions);
165
+ }
166
+ async parseText(text, options) {
167
+ this._ensureInitialized();
168
+ if (!this._sentenceParser) {
169
+ const translator = await this.getTranslator();
170
+ const { SentenceParser } = await Promise.resolve().then(function() {
171
+ return require("./sentence-parser-DQVLSW0z.cjs");
172
+ });
173
+ this._sentenceParser = new SentenceParser(translator);
174
+ }
175
+ return await this._sentenceParser.parseText(text, options.language ?? "ja", {
176
+ enabledDictionaryMap: options.enabledDictionaryMap,
177
+ maxLength: options.maxLength
178
+ });
179
+ }
180
+ async generateFurigana(text, reading) {
181
+ const { generateFurigana } = await Promise.resolve().then(function() {
182
+ return require("./furigana-h3v2ub4-.cjs");
183
+ });
184
+ return generateFurigana(text, reading);
185
+ }
186
+ async batchLookup(texts, config) {
187
+ this._ensureInitialized();
188
+ if (!this._batchProcessor) {
189
+ const translator = await this.getTranslator();
190
+ const { BatchProcessor } = await Promise.resolve().then(function() {
191
+ return require("./batch-processor-CSF1acTw.cjs");
192
+ });
193
+ this._batchProcessor = new BatchProcessor(translator);
194
+ }
195
+ const results = await this._batchProcessor.batchLookup(texts, {
196
+ language: config.language,
197
+ enabledDictionaryMap: config.enabledDictionaryMap,
198
+ concurrency: config.concurrency
199
+ });
200
+ const mapped = new Map();
201
+ for (const [key, value] of results) mapped.set(key, {
202
+ entries: value.entries,
203
+ originalTextLength: value.originalTextLength
204
+ });
205
+ return mapped;
206
+ }
207
+ async getFrequencyRanking(term, dictionaries, reading) {
208
+ this._ensureInitialized();
209
+ if (!this._frequencyRanker) {
210
+ const { FrequencyRanker } = await Promise.resolve().then(function() {
211
+ return require("./frequency-ranking-Cx1kkIrw.cjs");
212
+ });
213
+ this._frequencyRanker = new FrequencyRanker(this._db);
214
+ }
215
+ return await this._frequencyRanker.getFrequencyRanking(term, dictionaries, reading);
216
+ }
217
+ async checkForUpdates(names) {
218
+ this._ensureInitialized();
219
+ const { DictionaryUpdateChecker } = await Promise.resolve().then(function() {
220
+ return require("./dictionary-update-checker-YdpalZ41.cjs");
221
+ });
222
+ const checker = new DictionaryUpdateChecker(this._db);
223
+ return await checker.checkForUpdates(names);
224
+ }
225
+ async getAudioUrls(term, reading, sources, languageSummary) {
226
+ const { AudioUrlGenerator } = await Promise.resolve().then(function() {
227
+ return require("./audio-url-generator-BXvQaqUi.cjs");
228
+ });
229
+ const generator = new AudioUrlGenerator();
230
+ return await generator.getUrls(term, reading, sources, languageSummary);
231
+ }
232
+ async createAnkiClient(config) {
233
+ const { AnkiConnect } = await Promise.resolve().then(function() {
234
+ return require("./anki-connect-DcheJrp-.cjs");
235
+ });
236
+ return new AnkiConnect(config);
237
+ }
238
+ async createRenderer() {
239
+ const displayGen = await Promise.resolve().then(function() {
240
+ return require("./display-generator-BMQmG5Ov.cjs");
241
+ });
242
+ const structuredGen = await Promise.resolve().then(function() {
243
+ return require("./structured-content-generator-BtOApkTW.cjs");
244
+ });
245
+ const pronunciationGen = await Promise.resolve().then(function() {
246
+ return require("./pronunciation-generator-DOz9hEuk.cjs");
247
+ });
248
+ return {
249
+ DisplayGenerator: displayGen.DisplayGenerator,
250
+ StructuredContentGenerator: structuredGen.StructuredContentGenerator,
251
+ PronunciationGenerator: pronunciationGen.PronunciationGenerator
252
+ };
253
+ }
254
+ async createAudioUrlGenerator() {
255
+ const { AudioUrlGenerator } = await Promise.resolve().then(function() {
256
+ return require("./audio-url-generator-BXvQaqUi.cjs");
257
+ });
258
+ return new AudioUrlGenerator();
259
+ }
260
+ _ensureInitialized() {
261
+ if (!this._initialized) throw new Error("YomitanCore is not initialized. Call initialize() first.");
262
+ }
263
+ };
264
+ var src_default = YomitanCore;
265
+
266
+ //#endregion
267
+ exports.DictionaryDB = require_dictionary_database.DictionaryDB
268
+ exports.EventDispatcher = EventDispatcher
269
+ exports.YomitanCore = YomitanCore
270
+ exports.YomitanDatabase = require_dictionary_database.YomitanDatabase
271
+ exports.YomitanError = require_errors.YomitanError
272
+ exports.default = src_default
273
+ exports.log = require_log.log
274
+ exports.toError = require_errors.toError
275
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["eventName: TName","details: EventArgument<TSurface, TName>","callback: EventHandler<TSurface, TName>","config?: YomitanCoreConfig","DictionaryDB","MultiLanguageTransformer","archive: ArrayBuffer","options?: {\n onProgress?: DictionaryImporterTypes.OnProgressCallback;\n prefixWildcardsSupported?: boolean;\n yomitanVersion?: string;\n }","details: DictionaryImporterTypes.ImportDetails","name: string","onProgress?: DictionaryDatabase.DeleteDictionaryProgressCallback","text: string","config: {\n mode?: FindTermsMode;\n language?: string;\n enabledDictionaryMap: Translation.TermEnabledDictionaryMap;\n options?: Partial<Translation.FindTermsOptions>;\n }","mode: FindTermsMode","findOptions: Translation.FindTermsOptions","config: {\n enabledDictionaryMap: Translation.KanjiEnabledDictionaryMap;\n removeNonJapaneseCharacters?: boolean;\n }","findOptions: Translation.FindKanjiOptions","options: {\n language?: string;\n enabledDictionaryMap: Map<string, { index: number; priority: number }>;\n maxLength?: number;\n }","reading: string","texts: string[]","config: {\n language?: string;\n enabledDictionaryMap: Map<string, { index: number; priority: number }>;\n concurrency?: number;\n }","term: string","dictionaries: string[]","reading?: string","names?: string[]","sources: { type: string; url: string; voice: string }[]","languageSummary: { name: string; iso: string; exampleText: string }","config?: { server?: string; apiKey?: string }"],"sources":["../src/util/event-dispatcher.ts","../src/index.ts"],"sourcesContent":["import type { EventArgument, EventHandler, EventHandlerAny, EventNames, EventSurface } from '../types/core';\n\n/**\n * Base class that controls basic event dispatching.\n */\nexport class EventDispatcher<TSurface extends EventSurface> {\n private _eventMap: Map<EventNames<TSurface>, EventHandlerAny[]>;\n\n constructor() {\n this._eventMap = new Map();\n }\n\n trigger<TName extends EventNames<TSurface>>(eventName: TName, details: EventArgument<TSurface, TName>): boolean {\n const callbacks = this._eventMap.get(eventName);\n if (typeof callbacks === 'undefined') {\n return false;\n }\n for (const callback of callbacks) {\n callback(details);\n }\n return true;\n }\n\n on<TName extends EventNames<TSurface>>(eventName: TName, callback: EventHandler<TSurface, TName>): void {\n let callbacks = this._eventMap.get(eventName);\n if (typeof callbacks === 'undefined') {\n callbacks = [];\n this._eventMap.set(eventName, callbacks);\n }\n callbacks.push(callback as EventHandlerAny);\n }\n\n off<TName extends EventNames<TSurface>>(eventName: TName, callback: EventHandler<TSurface, TName>): boolean {\n const callbacks = this._eventMap.get(eventName);\n if (typeof callbacks === 'undefined') {\n return false;\n }\n const ii = callbacks.length;\n for (let i = 0; i < ii; ++i) {\n if (callbacks[i] === callback) {\n callbacks.splice(i, 1);\n if (callbacks.length === 0) {\n this._eventMap.delete(eventName);\n }\n return true;\n }\n }\n return false;\n }\n\n hasListeners<TName extends EventNames<TSurface>>(eventName: TName): boolean {\n const callbacks = this._eventMap.get(eventName);\n return typeof callbacks !== 'undefined' && callbacks.length > 0;\n }\n}\n","// Main entry point for yomitan-core\nimport { DictionaryDB } from './database/dictionary-database';\nimport type { DictionaryImporterClass } from './import/dictionary-importer';\nimport { getAllLanguageTextProcessors, getLanguageSummaries, isTextLookupWorthy } from './language/languages';\nimport { MultiLanguageTransformer } from './language/multi-language-transformer';\nimport type { BatchProcessor as BatchProcessorClass } from './lookup/batch-processor';\nimport type { FrequencyRanker as FrequencyRankerClass } from './lookup/frequency-ranking';\nimport type { SentenceParser as SentenceParserClass } from './lookup/sentence-parser';\nimport type { FindTermsMode, Translator as TranslatorClass } from './lookup/translator';\nimport type * as Dictionary from './types/dictionary';\nimport type * as DictionaryDatabase from './types/dictionary-database';\nimport type * as DictionaryImporterTypes from './types/dictionary-importer';\nimport type * as Translation from './types/translation';\n\n// Re-export all types\nexport * from './types/index';\n\n// Re-export utilities\nexport { YomitanError, toError } from './util/errors';\nexport { EventDispatcher } from './util/event-dispatcher';\nexport { log } from './util/log';\n\n// Re-export key classes from submodules\nexport { DictionaryDB } from './database/dictionary-database';\nexport { YomitanDatabase } from './database/schema';\n\nexport interface YomitanCoreConfig {\n /** Database name (default: 'dict') */\n databaseName?: string;\n /** Whether to automatically initialize language transformers (default: true) */\n initLanguage?: boolean;\n}\n\nexport interface TermLookupResult {\n entries: Dictionary.TermDictionaryEntry[];\n originalTextLength: number;\n}\n\nexport interface FuriganaSegment {\n text: string;\n reading: string;\n}\n\nexport interface FrequencyRankingResult {\n frequencies: { dictionary: string; frequency: number; displayValue: string | null }[];\n harmonicMean: number;\n}\n\nexport interface DictionaryUpdateInfo {\n dictionaryName: string;\n currentRevision: string;\n latestRevision: string;\n hasUpdate: boolean;\n downloadUrl?: string;\n}\n\nexport class YomitanCore {\n private _db: DictionaryDB;\n private _multiLanguageTransformer: MultiLanguageTransformer;\n private _translator: TranslatorClass | null = null;\n private _sentenceParser: SentenceParserClass | null = null;\n private _batchProcessor: BatchProcessorClass | null = null;\n private _frequencyRanker: FrequencyRankerClass | null = null;\n private _initialized = false;\n private _config: Required<YomitanCoreConfig>;\n\n constructor(config?: YomitanCoreConfig) {\n this._config = {\n databaseName: config?.databaseName ?? 'dict',\n initLanguage: config?.initLanguage ?? true,\n };\n this._db = new DictionaryDB(this._config.databaseName);\n this._multiLanguageTransformer = new MultiLanguageTransformer();\n }\n\n async initialize(): Promise<void> {\n if (this._initialized) {\n return;\n }\n\n await this._db.open();\n\n if (this._config.initLanguage) {\n this._multiLanguageTransformer.prepare();\n }\n\n this._initialized = true;\n }\n\n async dispose(): Promise<void> {\n if (!this._initialized) {\n return;\n }\n this._db.close();\n this._translator = null;\n this._sentenceParser = null;\n this._batchProcessor = null;\n this._frequencyRanker = null;\n this._initialized = false;\n }\n\n get isReady(): boolean {\n return this._initialized;\n }\n\n get database(): DictionaryDB {\n this._ensureInitialized();\n return this._db;\n }\n\n async getTranslator(): Promise<TranslatorClass> {\n this._ensureInitialized();\n if (!this._translator) {\n const { Translator } = await import('./lookup/translator');\n this._translator = new Translator(this._db);\n this._translator.prepare();\n }\n return this._translator;\n }\n\n get language(): {\n summaries: ReturnType<typeof getLanguageSummaries>;\n textProcessors: ReturnType<typeof getAllLanguageTextProcessors>;\n transformer: MultiLanguageTransformer;\n isTextLookupWorthy: typeof isTextLookupWorthy;\n } {\n return {\n summaries: getLanguageSummaries(),\n textProcessors: getAllLanguageTextProcessors(),\n transformer: this._multiLanguageTransformer,\n isTextLookupWorthy,\n };\n }\n\n // ---- Dictionary Management ----\n\n async importDictionary(\n archive: ArrayBuffer,\n options?: {\n onProgress?: DictionaryImporterTypes.OnProgressCallback;\n prefixWildcardsSupported?: boolean;\n yomitanVersion?: string;\n },\n ): Promise<DictionaryImporterTypes.ImportResult> {\n this._ensureInitialized();\n const { DictionaryImporterClass: DictionaryImporter } = await import('./import/dictionary-importer');\n const { NoOpMediaLoader } = await import('./import/media-loader');\n\n const importer = new DictionaryImporter(new NoOpMediaLoader(), options?.onProgress);\n const details: DictionaryImporterTypes.ImportDetails = {\n prefixWildcardsSupported: options?.prefixWildcardsSupported ?? false,\n yomitanVersion: options?.yomitanVersion ?? '0.0.0',\n };\n return await importer.importDictionary(this._db, archive, details);\n }\n\n async deleteDictionary(\n name: string,\n onProgress?: DictionaryDatabase.DeleteDictionaryProgressCallback,\n ): Promise<void> {\n this._ensureInitialized();\n await this._db.deleteDictionary(name, onProgress);\n }\n\n async getDictionaryInfo(): Promise<DictionaryImporterTypes.Summary[]> {\n this._ensureInitialized();\n return await this._db.getDictionaryInfo();\n }\n\n // ---- Core Lookup ----\n\n async findTerms(\n text: string,\n config: {\n mode?: FindTermsMode;\n language?: string;\n enabledDictionaryMap: Translation.TermEnabledDictionaryMap;\n options?: Partial<Translation.FindTermsOptions>;\n },\n ): Promise<TermLookupResult> {\n this._ensureInitialized();\n const translator = await this.getTranslator();\n const mode: FindTermsMode = config.mode ?? 'group';\n\n const findOptions: Translation.FindTermsOptions = {\n matchType: config.options?.matchType ?? 'exact',\n deinflect: config.options?.deinflect ?? true,\n primaryReading: config.options?.primaryReading ?? '',\n mainDictionary: config.options?.mainDictionary ?? '',\n sortFrequencyDictionary: config.options?.sortFrequencyDictionary ?? null,\n sortFrequencyDictionaryOrder: config.options?.sortFrequencyDictionaryOrder ?? 'descending',\n removeNonJapaneseCharacters: config.options?.removeNonJapaneseCharacters ?? false,\n textReplacements: config.options?.textReplacements ?? [null],\n enabledDictionaryMap: config.enabledDictionaryMap,\n excludeDictionaryDefinitions: config.options?.excludeDictionaryDefinitions ?? null,\n searchResolution: config.options?.searchResolution ?? 'letter',\n language: config.language ?? 'ja',\n };\n\n const { dictionaryEntries, originalTextLength } = await translator.findTerms(mode, text, findOptions);\n\n return { entries: dictionaryEntries, originalTextLength };\n }\n\n async findKanji(\n text: string,\n config: {\n enabledDictionaryMap: Translation.KanjiEnabledDictionaryMap;\n removeNonJapaneseCharacters?: boolean;\n },\n ): Promise<Dictionary.KanjiDictionaryEntry[]> {\n this._ensureInitialized();\n const translator = await this.getTranslator();\n\n const findOptions: Translation.FindKanjiOptions = {\n enabledDictionaryMap: config.enabledDictionaryMap,\n removeNonJapaneseCharacters: config.removeNonJapaneseCharacters ?? true,\n };\n\n return await translator.findKanji(text, findOptions);\n }\n\n // ---- Additional Features ----\n\n async parseText(\n text: string,\n options: {\n language?: string;\n enabledDictionaryMap: Map<string, { index: number; priority: number }>;\n maxLength?: number;\n },\n ): Promise<unknown[]> {\n this._ensureInitialized();\n if (!this._sentenceParser) {\n const translator = await this.getTranslator();\n const { SentenceParser } = await import('./lookup/sentence-parser');\n this._sentenceParser = new SentenceParser(translator);\n }\n return await this._sentenceParser.parseText(text, options.language ?? 'ja', {\n enabledDictionaryMap: options.enabledDictionaryMap,\n maxLength: options.maxLength,\n });\n }\n\n async generateFurigana(text: string, reading: string): Promise<FuriganaSegment[]> {\n const { generateFurigana } = await import('./language/ja/furigana');\n return generateFurigana(text, reading);\n }\n\n async batchLookup(\n texts: string[],\n config: {\n language?: string;\n enabledDictionaryMap: Map<string, { index: number; priority: number }>;\n concurrency?: number;\n },\n ): Promise<Map<string, TermLookupResult>> {\n this._ensureInitialized();\n if (!this._batchProcessor) {\n const translator = await this.getTranslator();\n const { BatchProcessor } = await import('./lookup/batch-processor');\n this._batchProcessor = new BatchProcessor(translator);\n }\n const results = await this._batchProcessor.batchLookup(texts, {\n language: config.language,\n enabledDictionaryMap: config.enabledDictionaryMap,\n concurrency: config.concurrency,\n });\n const mapped = new Map<string, TermLookupResult>();\n for (const [key, value] of results) {\n mapped.set(key, { entries: value.entries, originalTextLength: value.originalTextLength });\n }\n return mapped;\n }\n\n async getFrequencyRanking(term: string, dictionaries: string[], reading?: string): Promise<FrequencyRankingResult> {\n this._ensureInitialized();\n if (!this._frequencyRanker) {\n const { FrequencyRanker } = await import('./lookup/frequency-ranking');\n this._frequencyRanker = new FrequencyRanker(this._db);\n }\n return await this._frequencyRanker.getFrequencyRanking(term, dictionaries, reading);\n }\n\n async checkForUpdates(names?: string[]): Promise<DictionaryUpdateInfo[]> {\n this._ensureInitialized();\n const { DictionaryUpdateChecker } = await import('./import/dictionary-update-checker');\n const checker = new DictionaryUpdateChecker(this._db);\n return await checker.checkForUpdates(names);\n }\n\n async getAudioUrls(\n term: string,\n reading: string,\n sources: { type: string; url: string; voice: string }[],\n languageSummary: { name: string; iso: string; exampleText: string },\n ): Promise<unknown[]> {\n const { AudioUrlGenerator } = await import('./audio/audio-url-generator');\n const generator = new AudioUrlGenerator();\n return (await generator.getUrls(term, reading, sources as any[], languageSummary as any)) as unknown[];\n }\n\n // ---- Factory Methods ----\n\n async createAnkiClient(config?: { server?: string; apiKey?: string }): Promise<unknown> {\n const { AnkiConnect } = await import('./anki/anki-connect');\n return new AnkiConnect(config);\n }\n\n async createRenderer(): Promise<{\n DisplayGenerator: unknown;\n StructuredContentGenerator: unknown;\n PronunciationGenerator: unknown;\n }> {\n const displayGen = await import('./render/display-generator');\n const structuredGen = await import('./render/structured-content-generator');\n const pronunciationGen = await import('./render/pronunciation-generator');\n return {\n DisplayGenerator: displayGen.DisplayGenerator,\n StructuredContentGenerator: structuredGen.StructuredContentGenerator,\n PronunciationGenerator: pronunciationGen.PronunciationGenerator,\n };\n }\n\n async createAudioUrlGenerator(): Promise<unknown> {\n const { AudioUrlGenerator } = await import('./audio/audio-url-generator');\n return new AudioUrlGenerator();\n }\n\n // ---- Private ----\n\n private _ensureInitialized(): void {\n if (!this._initialized) {\n throw new Error('YomitanCore is not initialized. Call initialize() first.');\n }\n }\n}\n\n// Default export\nexport default YomitanCore;\n"],"mappings":"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"}