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 @@
1
+ {"version":3,"file":"multi-language-transformer-AlxOM6b3.js","names":["languageDescriptors: LanguageDescriptorAny[]","results: Language.LanguageSummary[]","results: Language.LanguageAndReadingNormalizer[]","results: Language.LanguageAndProcessors[]","textPreprocessorsArray: Language.TextProcessorWithId<unknown>[]","textPostprocessorsArray: Language.TextProcessorWithId<unknown>[]","text: string","language: string","results: Language.LanguageAndTransforms[]","descriptor: LanguageTransformDescriptor","conditionEntries: ConditionMapEntries","transforms2: InternalTransform[]","rules2: InternalRule[]","partsOfSpeech: string[]","conditionTypes: string[]","conditionType: string","sourceText: string","inflectionRules: string[]","text: string","conditions: number","trace: Trace","currentConditions: number","nextConditions: number","conditions: ConditionMapEntries","nextFlagIndex: number","targets: ConditionMapEntries","nextTargets: ConditionMapEntries","conditionFlagsMap: Map<string, number>","newFrame: TraceFrame","language: string","partsOfSpeech: string[]","conditionTypes: string[]","conditionType: string","sourceText: string","inflectionRules: string[]"],"sources":["../src/language/language-descriptors.ts","../src/language/languages.ts","../src/language/language-transformer.ts","../src/language/multi-language-transformer.ts"],"sourcesContent":["import type { LanguageDescriptorAny } from '../types/language';\nimport { normalizeRadicalCharacters } from './cjk-util';\nimport { capitalizeFirstLetter, decapitalize, removeAlphabeticDiacritics } from './text-processors';\n\nconst capitalizationPreprocessors = {\n decapitalize,\n capitalizeFirstLetter,\n};\n\nconst languageDescriptors: LanguageDescriptorAny[] = [\n {\n iso: 'bg',\n iso639_3: 'bul',\n name: 'Bulgarian',\n exampleText: 'чета',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'cs', iso639_3: 'ces', name: 'Czech', exampleText: 'číst', textPreprocessors: capitalizationPreprocessors },\n {\n iso: 'da',\n iso639_3: 'dan',\n name: 'Danish',\n exampleText: 'læse',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'de',\n iso639_3: 'deu',\n name: 'German',\n exampleText: 'lesen',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'el',\n iso639_3: 'ell',\n name: 'Greek',\n exampleText: 'διαβάζω',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'en',\n iso639_3: 'eng',\n name: 'English',\n exampleText: 'read',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'eo',\n iso639_3: 'epo',\n name: 'Esperanto',\n exampleText: 'legi',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'es',\n iso639_3: 'spa',\n name: 'Spanish',\n exampleText: 'leer',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'et',\n iso639_3: 'est',\n name: 'Estonian',\n exampleText: 'lugema',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'fi',\n iso639_3: 'fin',\n name: 'Finnish',\n exampleText: 'lukea',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'fr',\n iso639_3: 'fra',\n name: 'French',\n exampleText: 'lire',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n { iso: 'ga', iso639_3: 'gle', name: 'Irish', exampleText: 'léigh', textPreprocessors: capitalizationPreprocessors },\n {\n iso: 'grc',\n iso639_3: 'grc',\n name: 'Ancient Greek',\n exampleText: 'γράφω',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n { iso: 'he', iso639_3: 'heb', name: 'Hebrew', exampleText: 'קריאה' },\n { iso: 'hi', iso639_3: 'hin', name: 'Hindi', exampleText: 'पढ़ने के लिए' },\n {\n iso: 'hu',\n iso639_3: 'hun',\n name: 'Hungarian',\n exampleText: 'olvasni',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'id',\n iso639_3: 'ind',\n name: 'Indonesian',\n exampleText: 'baca',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'it',\n iso639_3: 'ita',\n name: 'Italian',\n exampleText: 'leggere',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'la',\n iso639_3: 'lat',\n name: 'Latin',\n exampleText: 'legō',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n { iso: 'lo', iso639_3: 'lao', name: 'Lao', exampleText: 'ອ່ານ' },\n {\n iso: 'lv',\n iso639_3: 'lav',\n name: 'Latvian',\n exampleText: 'lasīt',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'ja', iso639_3: 'jpn', name: 'Japanese', exampleText: '読め' },\n { iso: 'ka', iso639_3: 'kat', name: 'Georgian', exampleText: 'კითხვა' },\n { iso: 'kn', iso639_3: 'kan', name: 'Kannada', exampleText: 'ಓದು' },\n { iso: 'km', iso639_3: 'khm', name: 'Khmer', exampleText: 'អាន' },\n { iso: 'ko', iso639_3: 'kor', name: 'Korean', exampleText: '읽어' },\n {\n iso: 'mn',\n iso639_3: 'mon',\n name: 'Mongolian',\n exampleText: 'унших',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'mt',\n iso639_3: 'mlt',\n name: 'Maltese',\n exampleText: 'kiteb',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'nl', iso639_3: 'nld', name: 'Dutch', exampleText: 'lezen', textPreprocessors: capitalizationPreprocessors },\n {\n iso: 'no',\n iso639_3: 'nor',\n name: 'Norwegian',\n exampleText: 'lese',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'pl',\n iso639_3: 'pol',\n name: 'Polish',\n exampleText: 'czytać',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'pt',\n iso639_3: 'por',\n name: 'Portuguese',\n exampleText: 'ler',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'ro',\n iso639_3: 'ron',\n name: 'Romanian',\n exampleText: 'citi',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'ru',\n iso639_3: 'rus',\n name: 'Russian',\n exampleText: 'читать',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'sga',\n iso639_3: 'sga',\n name: 'Old Irish',\n exampleText: 'légaid',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'sh',\n iso639_3: 'hbs',\n name: 'Serbo-Croatian',\n exampleText: 'čìtati',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'sq',\n iso639_3: 'sqi',\n name: 'Albanian',\n exampleText: 'ndihmoj',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'sv',\n iso639_3: 'swe',\n name: 'Swedish',\n exampleText: 'läsa',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'th', iso639_3: 'tha', name: 'Thai', exampleText: 'อ่าน' },\n {\n iso: 'tl',\n iso639_3: 'tgl',\n name: 'Tagalog',\n exampleText: 'basahin',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'tr',\n iso639_3: 'tur',\n name: 'Turkish',\n exampleText: 'okumak',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'tok',\n iso639_3: 'tok',\n name: 'Toki Pona',\n exampleText: 'wile',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'uk',\n iso639_3: 'ukr',\n name: 'Ukrainian',\n exampleText: 'читати',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'vi',\n iso639_3: 'vie',\n name: 'Vietnamese',\n exampleText: 'đọc',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'cy',\n iso639_3: 'cym',\n name: 'Welsh',\n exampleText: 'ddarllen',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'yi', iso639_3: 'yid', name: 'Yiddish', exampleText: 'באַשאַפֿן' },\n {\n iso: 'yue',\n iso639_3: 'yue',\n name: 'Cantonese',\n exampleText: '讀',\n textPreprocessors: { normalizeRadicalCharacters },\n },\n {\n iso: 'zh',\n iso639_3: 'zho',\n name: 'Chinese',\n exampleText: '读',\n textPreprocessors: { normalizeRadicalCharacters },\n },\n];\n\nexport const languageDescriptorMap = new Map<string, LanguageDescriptorAny>();\nfor (const languageDescriptor of languageDescriptors) {\n languageDescriptorMap.set(languageDescriptor.iso, languageDescriptor);\n}\n","import type * as Language from '../types/language';\nimport { languageDescriptorMap } from './language-descriptors';\n\nexport function getLanguageSummaries(): Language.LanguageSummary[] {\n const results: Language.LanguageSummary[] = [];\n for (const { name, iso, iso639_3, exampleText } of languageDescriptorMap.values()) {\n results.push({ name, iso, iso639_3, exampleText });\n }\n return results;\n}\n\nexport function getAllLanguageReadingNormalizers(): Language.LanguageAndReadingNormalizer[] {\n const results: Language.LanguageAndReadingNormalizer[] = [];\n for (const { iso, readingNormalizer } of languageDescriptorMap.values()) {\n if (typeof readingNormalizer === 'undefined') {\n continue;\n }\n results.push({ iso, readingNormalizer });\n }\n return results;\n}\n\nexport function getAllLanguageTextProcessors(): Language.LanguageAndProcessors[] {\n const results: Language.LanguageAndProcessors[] = [];\n for (const { iso, textPreprocessors = {}, textPostprocessors = {} } of languageDescriptorMap.values()) {\n const textPreprocessorsArray: Language.TextProcessorWithId<unknown>[] = [];\n for (const [id, textPreprocessor] of Object.entries(textPreprocessors)) {\n textPreprocessorsArray.push({ id, textProcessor: textPreprocessor as Language.TextProcessor<unknown> });\n }\n const textPostprocessorsArray: Language.TextProcessorWithId<unknown>[] = [];\n for (const [id, textPostprocessor] of Object.entries(textPostprocessors)) {\n textPostprocessorsArray.push({ id, textProcessor: textPostprocessor as Language.TextProcessor<unknown> });\n }\n results.push({ iso, textPreprocessors: textPreprocessorsArray, textPostprocessors: textPostprocessorsArray });\n }\n return results;\n}\n\nexport function isTextLookupWorthy(text: string, language: string): boolean {\n const descriptor = languageDescriptorMap.get(language);\n if (typeof descriptor === 'undefined') {\n return false;\n }\n return typeof descriptor.isTextLookupWorthy === 'undefined' || descriptor.isTextLookupWorthy(text);\n}\n\nexport function getAllLanguageTransformDescriptors(): Language.LanguageAndTransforms[] {\n const results: Language.LanguageAndTransforms[] = [];\n for (const { iso, languageTransforms } of languageDescriptorMap.values()) {\n if (languageTransforms) {\n results.push({ iso, languageTransforms });\n }\n }\n return results;\n}\n","import type * as Dictionary from '../types/dictionary';\nimport type { ConditionMapEntries, LanguageTransformDescriptor } from '../types/language-transformer';\nimport { log } from '../util/log';\n\nexport type TraceFrame = {\n transform: string;\n ruleIndex: number;\n text: string;\n};\n\nexport type Trace = TraceFrame[];\n\nexport type TransformedText = {\n text: string;\n conditions: number;\n trace: Trace;\n};\n\ntype InternalRule = {\n type: string;\n isInflected: RegExp;\n deinflect: (inflectedWord: string) => string;\n conditionsIn: number;\n conditionsOut: number;\n};\n\ntype InternalTransform = {\n id: string;\n name: string;\n description?: string;\n rules: InternalRule[];\n heuristic: RegExp;\n};\n\nexport class LanguageTransformer {\n private _nextFlagIndex: number;\n private _transforms: InternalTransform[];\n private _conditionTypeToConditionFlagsMap: Map<string, number>;\n private _partOfSpeechToConditionFlagsMap: Map<string, number>;\n\n constructor() {\n this._nextFlagIndex = 0;\n this._transforms = [];\n this._conditionTypeToConditionFlagsMap = new Map();\n this._partOfSpeechToConditionFlagsMap = new Map();\n }\n\n clear(): void {\n this._nextFlagIndex = 0;\n this._transforms = [];\n this._conditionTypeToConditionFlagsMap.clear();\n this._partOfSpeechToConditionFlagsMap.clear();\n }\n\n addDescriptor(descriptor: LanguageTransformDescriptor): void {\n const { conditions, transforms } = descriptor;\n const conditionEntries: ConditionMapEntries = Object.entries(conditions);\n const { conditionFlagsMap, nextFlagIndex } = this._getConditionFlagsMap(conditionEntries, this._nextFlagIndex);\n\n const transforms2: InternalTransform[] = [];\n\n for (const [transformId, transform] of Object.entries(transforms)) {\n const { name, description, rules } = transform;\n const rules2: InternalRule[] = [];\n for (let j = 0, jj = rules.length; j < jj; ++j) {\n const { type, isInflected, deinflect, conditionsIn, conditionsOut } = rules[j];\n const conditionFlagsIn = this._getConditionFlagsStrict(conditionFlagsMap, conditionsIn);\n if (conditionFlagsIn === null) {\n throw new Error(`Invalid conditionsIn for transform ${transformId}.rules[${j}]`);\n }\n const conditionFlagsOut = this._getConditionFlagsStrict(conditionFlagsMap, conditionsOut);\n if (conditionFlagsOut === null) {\n throw new Error(`Invalid conditionsOut for transform ${transformId}.rules[${j}]`);\n }\n rules2.push({\n type,\n isInflected,\n deinflect,\n conditionsIn: conditionFlagsIn,\n conditionsOut: conditionFlagsOut,\n });\n }\n const isInflectedTests = rules.map((rule) => rule.isInflected);\n const heuristic = new RegExp(isInflectedTests.map((regExp) => regExp.source).join('|'));\n transforms2.push({ id: transformId, name, description, rules: rules2, heuristic });\n }\n\n this._nextFlagIndex = nextFlagIndex;\n for (const transform of transforms2) {\n this._transforms.push(transform);\n }\n\n for (const [type, { isDictionaryForm }] of conditionEntries) {\n const flags = conditionFlagsMap.get(type);\n if (typeof flags === 'undefined') {\n continue;\n }\n this._conditionTypeToConditionFlagsMap.set(type, flags);\n if (isDictionaryForm) {\n this._partOfSpeechToConditionFlagsMap.set(type, flags);\n }\n }\n }\n\n getConditionFlagsFromPartsOfSpeech(partsOfSpeech: string[]): number {\n return this._getConditionFlags(this._partOfSpeechToConditionFlagsMap, partsOfSpeech);\n }\n\n getConditionFlagsFromConditionTypes(conditionTypes: string[]): number {\n return this._getConditionFlags(this._conditionTypeToConditionFlagsMap, conditionTypes);\n }\n\n getConditionFlagsFromConditionType(conditionType: string): number {\n return this._getConditionFlags(this._conditionTypeToConditionFlagsMap, [conditionType]);\n }\n\n transform(sourceText: string): TransformedText[] {\n const results = [LanguageTransformer.createTransformedText(sourceText, 0, [])];\n for (let i = 0; i < results.length; ++i) {\n const { text, conditions, trace } = results[i];\n for (const transform of this._transforms) {\n if (!transform.heuristic.test(text)) {\n continue;\n }\n\n const { id, rules } = transform;\n for (let j = 0, jj = rules.length; j < jj; ++j) {\n const rule = rules[j];\n if (!LanguageTransformer.conditionsMatch(conditions, rule.conditionsIn)) {\n continue;\n }\n const { isInflected, deinflect } = rule;\n if (!isInflected.test(text)) {\n continue;\n }\n\n const isCycle = trace.some(\n (frame) => frame.transform === id && frame.ruleIndex === j && frame.text === text,\n );\n if (isCycle) {\n log.warn(\n new Error(\n `Cycle detected in transform[${id}] rule[${j}] for text: ${text}\\nTrace: ${JSON.stringify(trace)}`,\n ),\n );\n continue;\n }\n\n results.push(\n LanguageTransformer.createTransformedText(\n deinflect(text),\n rule.conditionsOut,\n this._extendTrace(trace, { transform: id, ruleIndex: j, text }),\n ),\n );\n }\n }\n }\n return results;\n }\n\n getUserFacingInflectionRules(inflectionRules: string[]): Dictionary.InflectionRuleChain {\n return inflectionRules.map((rule) => {\n const fullRule = this._transforms.find((transform) => transform.id === rule);\n if (typeof fullRule === 'undefined') {\n return { name: rule };\n }\n const { name, description } = fullRule;\n return description ? { name, description } : { name };\n });\n }\n\n static createTransformedText(text: string, conditions: number, trace: Trace): TransformedText {\n return { text, conditions, trace };\n }\n\n static conditionsMatch(currentConditions: number, nextConditions: number): boolean {\n return currentConditions === 0 || (currentConditions & nextConditions) !== 0;\n }\n\n private _getConditionFlagsMap(\n conditions: ConditionMapEntries,\n nextFlagIndex: number,\n ): { conditionFlagsMap: Map<string, number>; nextFlagIndex: number } {\n const conditionFlagsMap = new Map<string, number>();\n let targets: ConditionMapEntries = conditions;\n while (targets.length > 0) {\n const nextTargets: ConditionMapEntries = [];\n for (const target of targets) {\n const [type, condition] = target;\n const { subConditions } = condition;\n let flags = 0;\n if (typeof subConditions === 'undefined') {\n if (nextFlagIndex >= 32) {\n throw new Error('Maximum number of conditions was exceeded');\n }\n flags = 1 << nextFlagIndex;\n ++nextFlagIndex;\n } else {\n const multiFlags = this._getConditionFlagsStrict(conditionFlagsMap, subConditions);\n if (multiFlags === null) {\n nextTargets.push(target);\n continue;\n }\n flags = multiFlags;\n }\n conditionFlagsMap.set(type, flags);\n }\n if (nextTargets.length === targets.length) {\n throw new Error('Maximum number of conditions was exceeded');\n }\n targets = nextTargets;\n }\n return { conditionFlagsMap, nextFlagIndex };\n }\n\n private _getConditionFlagsStrict(conditionFlagsMap: Map<string, number>, conditionTypes: string[]): number | null {\n let flags = 0;\n for (const conditionType of conditionTypes) {\n const flags2 = conditionFlagsMap.get(conditionType);\n if (typeof flags2 === 'undefined') {\n return null;\n }\n flags |= flags2;\n }\n return flags;\n }\n\n private _getConditionFlags(conditionFlagsMap: Map<string, number>, conditionTypes: string[]): number {\n let flags = 0;\n for (const conditionType of conditionTypes) {\n let flags2 = conditionFlagsMap.get(conditionType);\n if (typeof flags2 === 'undefined') {\n flags2 = 0;\n }\n flags |= flags2;\n }\n return flags;\n }\n\n private _extendTrace(trace: Trace, newFrame: TraceFrame): Trace {\n const newTrace = [newFrame];\n for (const { transform, ruleIndex, text } of trace) {\n newTrace.push({ transform, ruleIndex, text });\n }\n return newTrace;\n }\n}\n","import type * as Dictionary from '../types/dictionary';\nimport { LanguageTransformer } from './language-transformer';\nimport type { TransformedText } from './language-transformer';\nimport { getAllLanguageTransformDescriptors } from './languages';\n\nexport class MultiLanguageTransformer {\n private _languageTransformers: Map<string, LanguageTransformer>;\n\n constructor() {\n this._languageTransformers = new Map();\n }\n\n prepare(): void {\n const languagesWithTransforms = getAllLanguageTransformDescriptors();\n for (const { languageTransforms: descriptor } of languagesWithTransforms) {\n const languageTransformer = new LanguageTransformer();\n languageTransformer.addDescriptor(descriptor);\n this._languageTransformers.set(descriptor.language, languageTransformer);\n }\n }\n\n getConditionFlagsFromPartsOfSpeech(language: string, partsOfSpeech: string[]): number {\n const languageTransformer = this._languageTransformers.get(language);\n return typeof languageTransformer !== 'undefined'\n ? languageTransformer.getConditionFlagsFromPartsOfSpeech(partsOfSpeech)\n : 0;\n }\n\n getConditionFlagsFromConditionTypes(language: string, conditionTypes: string[]): number {\n const languageTransformer = this._languageTransformers.get(language);\n return typeof languageTransformer !== 'undefined'\n ? languageTransformer.getConditionFlagsFromConditionTypes(conditionTypes)\n : 0;\n }\n\n getConditionFlagsFromConditionType(language: string, conditionType: string): number {\n const languageTransformer = this._languageTransformers.get(language);\n return typeof languageTransformer !== 'undefined'\n ? languageTransformer.getConditionFlagsFromConditionType(conditionType)\n : 0;\n }\n\n transform(language: string, sourceText: string): TransformedText[] {\n const languageTransformer = this._languageTransformers.get(language);\n if (typeof languageTransformer === 'undefined') {\n return [LanguageTransformer.createTransformedText(sourceText, 0, [])];\n }\n return languageTransformer.transform(sourceText);\n }\n\n getUserFacingInflectionRules(language: string, inflectionRules: string[]): Dictionary.InflectionRuleChain {\n const languageTransformer = this._languageTransformers.get(language);\n if (typeof languageTransformer === 'undefined') {\n return inflectionRules.map((rule) => ({ name: rule }));\n }\n return languageTransformer.getUserFacingInflectionRules(inflectionRules);\n }\n}\n"],"mappings":"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"}