@lokascript/semantic 1.0.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 (435) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +686 -0
  3. package/dist/browser-ar.ar.global.js +2 -0
  4. package/dist/browser-core.core.global.js +2 -0
  5. package/dist/browser-de.de.global.js +2 -0
  6. package/dist/browser-east-asian.east-asian.global.js +2 -0
  7. package/dist/browser-en-tr.en-tr.global.js +2 -0
  8. package/dist/browser-en.en.global.js +2 -0
  9. package/dist/browser-es-en.es-en.global.js +2 -0
  10. package/dist/browser-es.es.global.js +2 -0
  11. package/dist/browser-fr.fr.global.js +2 -0
  12. package/dist/browser-id.id.global.js +2 -0
  13. package/dist/browser-ja.ja.global.js +2 -0
  14. package/dist/browser-ko.ko.global.js +2 -0
  15. package/dist/browser-lazy.lazy.global.js +2 -0
  16. package/dist/browser-priority.priority.global.js +2 -0
  17. package/dist/browser-pt.pt.global.js +2 -0
  18. package/dist/browser-qu.qu.global.js +2 -0
  19. package/dist/browser-sw.sw.global.js +2 -0
  20. package/dist/browser-tr.tr.global.js +2 -0
  21. package/dist/browser-western.western.global.js +2 -0
  22. package/dist/browser-zh.zh.global.js +2 -0
  23. package/dist/browser.global.js +3 -0
  24. package/dist/browser.global.js.map +1 -0
  25. package/dist/index.cjs +35051 -0
  26. package/dist/index.cjs.map +1 -0
  27. package/dist/index.d.cts +3426 -0
  28. package/dist/index.d.ts +3426 -0
  29. package/dist/index.js +34890 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/languages/ar.d.ts +78 -0
  32. package/dist/languages/ar.js +1622 -0
  33. package/dist/languages/ar.js.map +1 -0
  34. package/dist/languages/de.d.ts +38 -0
  35. package/dist/languages/de.js +1168 -0
  36. package/dist/languages/de.js.map +1 -0
  37. package/dist/languages/en.d.ts +44 -0
  38. package/dist/languages/en.js +3491 -0
  39. package/dist/languages/en.js.map +1 -0
  40. package/dist/languages/es.d.ts +52 -0
  41. package/dist/languages/es.js +1493 -0
  42. package/dist/languages/es.js.map +1 -0
  43. package/dist/languages/fr.d.ts +37 -0
  44. package/dist/languages/fr.js +1159 -0
  45. package/dist/languages/fr.js.map +1 -0
  46. package/dist/languages/id.d.ts +35 -0
  47. package/dist/languages/id.js +1152 -0
  48. package/dist/languages/id.js.map +1 -0
  49. package/dist/languages/ja.d.ts +53 -0
  50. package/dist/languages/ja.js +1430 -0
  51. package/dist/languages/ja.js.map +1 -0
  52. package/dist/languages/ko.d.ts +51 -0
  53. package/dist/languages/ko.js +1729 -0
  54. package/dist/languages/ko.js.map +1 -0
  55. package/dist/languages/pt.d.ts +37 -0
  56. package/dist/languages/pt.js +1127 -0
  57. package/dist/languages/pt.js.map +1 -0
  58. package/dist/languages/qu.d.ts +36 -0
  59. package/dist/languages/qu.js +1143 -0
  60. package/dist/languages/qu.js.map +1 -0
  61. package/dist/languages/sw.d.ts +35 -0
  62. package/dist/languages/sw.js +1147 -0
  63. package/dist/languages/sw.js.map +1 -0
  64. package/dist/languages/tr.d.ts +45 -0
  65. package/dist/languages/tr.js +1529 -0
  66. package/dist/languages/tr.js.map +1 -0
  67. package/dist/languages/zh.d.ts +58 -0
  68. package/dist/languages/zh.js +1257 -0
  69. package/dist/languages/zh.js.map +1 -0
  70. package/dist/types-C4dcj53L.d.ts +600 -0
  71. package/package.json +202 -0
  72. package/src/__test-utils__/index.ts +7 -0
  73. package/src/__test-utils__/test-helpers.ts +8 -0
  74. package/src/__types__/test-helpers.ts +122 -0
  75. package/src/analysis/index.ts +479 -0
  76. package/src/ast-builder/command-mappers.ts +1133 -0
  77. package/src/ast-builder/expression-parser/index.ts +41 -0
  78. package/src/ast-builder/expression-parser/parser.ts +563 -0
  79. package/src/ast-builder/expression-parser/tokenizer.ts +394 -0
  80. package/src/ast-builder/expression-parser/types.ts +208 -0
  81. package/src/ast-builder/index.ts +536 -0
  82. package/src/ast-builder/value-converters.ts +172 -0
  83. package/src/bridge.ts +275 -0
  84. package/src/browser-ar.ts +162 -0
  85. package/src/browser-core.ts +231 -0
  86. package/src/browser-de.ts +162 -0
  87. package/src/browser-east-asian.ts +173 -0
  88. package/src/browser-en-tr.ts +165 -0
  89. package/src/browser-en.ts +157 -0
  90. package/src/browser-es-en.ts +200 -0
  91. package/src/browser-es.ts +170 -0
  92. package/src/browser-fr.ts +162 -0
  93. package/src/browser-id.ts +162 -0
  94. package/src/browser-ja.ts +162 -0
  95. package/src/browser-ko.ts +162 -0
  96. package/src/browser-lazy.ts +189 -0
  97. package/src/browser-priority.ts +214 -0
  98. package/src/browser-pt.ts +162 -0
  99. package/src/browser-qu.ts +162 -0
  100. package/src/browser-sw.ts +162 -0
  101. package/src/browser-tr.ts +162 -0
  102. package/src/browser-western.ts +181 -0
  103. package/src/browser-zh.ts +162 -0
  104. package/src/browser.ts +268 -0
  105. package/src/cache/index.ts +14 -0
  106. package/src/cache/semantic-cache.ts +344 -0
  107. package/src/core-bridge.ts +372 -0
  108. package/src/explicit/converter.ts +258 -0
  109. package/src/explicit/index.ts +18 -0
  110. package/src/explicit/parser.ts +236 -0
  111. package/src/explicit/renderer.ts +424 -0
  112. package/src/generators/command-schemas.ts +1636 -0
  113. package/src/generators/event-handler-generator.ts +109 -0
  114. package/src/generators/index.ts +117 -0
  115. package/src/generators/language-profiles.ts +139 -0
  116. package/src/generators/pattern-generator.ts +537 -0
  117. package/src/generators/profiles/arabic.ts +131 -0
  118. package/src/generators/profiles/bengali.ts +132 -0
  119. package/src/generators/profiles/chinese.ts +124 -0
  120. package/src/generators/profiles/english.ts +113 -0
  121. package/src/generators/profiles/french.ts +125 -0
  122. package/src/generators/profiles/german.ts +126 -0
  123. package/src/generators/profiles/hindi.ts +146 -0
  124. package/src/generators/profiles/index.ts +46 -0
  125. package/src/generators/profiles/indonesian.ts +125 -0
  126. package/src/generators/profiles/italian.ts +139 -0
  127. package/src/generators/profiles/japanese.ts +149 -0
  128. package/src/generators/profiles/korean.ts +127 -0
  129. package/src/generators/profiles/marker-templates.ts +288 -0
  130. package/src/generators/profiles/ms.ts +130 -0
  131. package/src/generators/profiles/polish.ts +249 -0
  132. package/src/generators/profiles/portuguese.ts +115 -0
  133. package/src/generators/profiles/quechua.ts +113 -0
  134. package/src/generators/profiles/russian.ts +260 -0
  135. package/src/generators/profiles/spanish.ts +130 -0
  136. package/src/generators/profiles/swahili.ts +129 -0
  137. package/src/generators/profiles/thai.ts +132 -0
  138. package/src/generators/profiles/tl.ts +128 -0
  139. package/src/generators/profiles/turkish.ts +124 -0
  140. package/src/generators/profiles/types.ts +165 -0
  141. package/src/generators/profiles/ukrainian.ts +270 -0
  142. package/src/generators/profiles/vietnamese.ts +133 -0
  143. package/src/generators/schema-error-codes.ts +160 -0
  144. package/src/generators/schema-validator.ts +391 -0
  145. package/src/index.ts +429 -0
  146. package/src/language-building-schema.ts +3170 -0
  147. package/src/language-loader.ts +394 -0
  148. package/src/languages/_all.ts +65 -0
  149. package/src/languages/ar.ts +15 -0
  150. package/src/languages/bn.ts +16 -0
  151. package/src/languages/de.ts +15 -0
  152. package/src/languages/en.ts +29 -0
  153. package/src/languages/es.ts +15 -0
  154. package/src/languages/fr.ts +15 -0
  155. package/src/languages/hi.ts +26 -0
  156. package/src/languages/id.ts +15 -0
  157. package/src/languages/index.ts +18 -0
  158. package/src/languages/it.ts +15 -0
  159. package/src/languages/ja.ts +15 -0
  160. package/src/languages/ko.ts +15 -0
  161. package/src/languages/ms.ts +16 -0
  162. package/src/languages/pl.ts +18 -0
  163. package/src/languages/pt.ts +15 -0
  164. package/src/languages/qu.ts +15 -0
  165. package/src/languages/ru.ts +26 -0
  166. package/src/languages/sw.ts +15 -0
  167. package/src/languages/th.ts +16 -0
  168. package/src/languages/tl.ts +16 -0
  169. package/src/languages/tr.ts +15 -0
  170. package/src/languages/uk.ts +26 -0
  171. package/src/languages/vi.ts +16 -0
  172. package/src/languages/zh.ts +15 -0
  173. package/src/parser/index.ts +15 -0
  174. package/src/parser/pattern-matcher.ts +1181 -0
  175. package/src/parser/semantic-parser.ts +573 -0
  176. package/src/parser/utils/index.ts +35 -0
  177. package/src/parser/utils/marker-resolution.ts +111 -0
  178. package/src/parser/utils/possessive-keywords.ts +43 -0
  179. package/src/parser/utils/role-positioning.ts +70 -0
  180. package/src/parser/utils/type-validation.ts +134 -0
  181. package/src/patterns/add/ar.ts +71 -0
  182. package/src/patterns/add/bn.ts +70 -0
  183. package/src/patterns/add/hi.ts +69 -0
  184. package/src/patterns/add/index.ts +87 -0
  185. package/src/patterns/add/it.ts +61 -0
  186. package/src/patterns/add/ja.ts +93 -0
  187. package/src/patterns/add/ko.ts +74 -0
  188. package/src/patterns/add/ms.ts +30 -0
  189. package/src/patterns/add/pl.ts +62 -0
  190. package/src/patterns/add/ru.ts +62 -0
  191. package/src/patterns/add/th.ts +49 -0
  192. package/src/patterns/add/tl.ts +30 -0
  193. package/src/patterns/add/tr.ts +71 -0
  194. package/src/patterns/add/uk.ts +62 -0
  195. package/src/patterns/add/vi.ts +61 -0
  196. package/src/patterns/add/zh.ts +71 -0
  197. package/src/patterns/builders.ts +207 -0
  198. package/src/patterns/decrement/bn.ts +70 -0
  199. package/src/patterns/decrement/de.ts +42 -0
  200. package/src/patterns/decrement/hi.ts +68 -0
  201. package/src/patterns/decrement/index.ts +79 -0
  202. package/src/patterns/decrement/it.ts +69 -0
  203. package/src/patterns/decrement/ms.ts +30 -0
  204. package/src/patterns/decrement/pl.ts +58 -0
  205. package/src/patterns/decrement/ru.ts +58 -0
  206. package/src/patterns/decrement/th.ts +49 -0
  207. package/src/patterns/decrement/tl.ts +30 -0
  208. package/src/patterns/decrement/tr.ts +48 -0
  209. package/src/patterns/decrement/uk.ts +58 -0
  210. package/src/patterns/decrement/vi.ts +61 -0
  211. package/src/patterns/decrement/zh.ts +32 -0
  212. package/src/patterns/en.ts +302 -0
  213. package/src/patterns/event-handler/ar.ts +151 -0
  214. package/src/patterns/event-handler/bn.ts +72 -0
  215. package/src/patterns/event-handler/de.ts +117 -0
  216. package/src/patterns/event-handler/en.ts +117 -0
  217. package/src/patterns/event-handler/es.ts +136 -0
  218. package/src/patterns/event-handler/fr.ts +117 -0
  219. package/src/patterns/event-handler/hi.ts +64 -0
  220. package/src/patterns/event-handler/id.ts +117 -0
  221. package/src/patterns/event-handler/index.ts +119 -0
  222. package/src/patterns/event-handler/it.ts +54 -0
  223. package/src/patterns/event-handler/ja.ts +118 -0
  224. package/src/patterns/event-handler/ko.ts +133 -0
  225. package/src/patterns/event-handler/ms.ts +30 -0
  226. package/src/patterns/event-handler/pl.ts +62 -0
  227. package/src/patterns/event-handler/pt.ts +117 -0
  228. package/src/patterns/event-handler/qu.ts +66 -0
  229. package/src/patterns/event-handler/ru.ts +62 -0
  230. package/src/patterns/event-handler/shared.ts +270 -0
  231. package/src/patterns/event-handler/sw.ts +117 -0
  232. package/src/patterns/event-handler/th.ts +53 -0
  233. package/src/patterns/event-handler/tl.ts +30 -0
  234. package/src/patterns/event-handler/tr.ts +170 -0
  235. package/src/patterns/event-handler/uk.ts +62 -0
  236. package/src/patterns/event-handler/vi.ts +61 -0
  237. package/src/patterns/event-handler/zh.ts +150 -0
  238. package/src/patterns/get/ar.ts +49 -0
  239. package/src/patterns/get/bn.ts +47 -0
  240. package/src/patterns/get/de.ts +32 -0
  241. package/src/patterns/get/hi.ts +52 -0
  242. package/src/patterns/get/index.ts +83 -0
  243. package/src/patterns/get/it.ts +56 -0
  244. package/src/patterns/get/ja.ts +53 -0
  245. package/src/patterns/get/ko.ts +53 -0
  246. package/src/patterns/get/ms.ts +30 -0
  247. package/src/patterns/get/pl.ts +57 -0
  248. package/src/patterns/get/ru.ts +57 -0
  249. package/src/patterns/get/th.ts +29 -0
  250. package/src/patterns/get/tl.ts +30 -0
  251. package/src/patterns/get/uk.ts +57 -0
  252. package/src/patterns/get/vi.ts +48 -0
  253. package/src/patterns/grammar-transformed/index.ts +39 -0
  254. package/src/patterns/grammar-transformed/ja.ts +1713 -0
  255. package/src/patterns/grammar-transformed/ko.ts +1311 -0
  256. package/src/patterns/grammar-transformed/tr.ts +1067 -0
  257. package/src/patterns/hide/ar.ts +67 -0
  258. package/src/patterns/hide/bn.ts +47 -0
  259. package/src/patterns/hide/de.ts +36 -0
  260. package/src/patterns/hide/hi.ts +61 -0
  261. package/src/patterns/hide/index.ts +91 -0
  262. package/src/patterns/hide/it.ts +56 -0
  263. package/src/patterns/hide/ja.ts +69 -0
  264. package/src/patterns/hide/ko.ts +69 -0
  265. package/src/patterns/hide/ms.ts +30 -0
  266. package/src/patterns/hide/pl.ts +57 -0
  267. package/src/patterns/hide/ru.ts +57 -0
  268. package/src/patterns/hide/th.ts +29 -0
  269. package/src/patterns/hide/tl.ts +30 -0
  270. package/src/patterns/hide/tr.ts +65 -0
  271. package/src/patterns/hide/uk.ts +57 -0
  272. package/src/patterns/hide/vi.ts +56 -0
  273. package/src/patterns/hide/zh.ts +68 -0
  274. package/src/patterns/increment/bn.ts +70 -0
  275. package/src/patterns/increment/de.ts +36 -0
  276. package/src/patterns/increment/hi.ts +68 -0
  277. package/src/patterns/increment/index.ts +79 -0
  278. package/src/patterns/increment/it.ts +69 -0
  279. package/src/patterns/increment/ms.ts +30 -0
  280. package/src/patterns/increment/pl.ts +58 -0
  281. package/src/patterns/increment/ru.ts +58 -0
  282. package/src/patterns/increment/th.ts +49 -0
  283. package/src/patterns/increment/tl.ts +30 -0
  284. package/src/patterns/increment/tr.ts +52 -0
  285. package/src/patterns/increment/uk.ts +58 -0
  286. package/src/patterns/increment/vi.ts +61 -0
  287. package/src/patterns/increment/zh.ts +32 -0
  288. package/src/patterns/index.ts +84 -0
  289. package/src/patterns/languages/en/control-flow.ts +93 -0
  290. package/src/patterns/languages/en/fetch.ts +62 -0
  291. package/src/patterns/languages/en/index.ts +42 -0
  292. package/src/patterns/languages/en/repeat.ts +67 -0
  293. package/src/patterns/languages/en/set.ts +48 -0
  294. package/src/patterns/languages/en/swap.ts +38 -0
  295. package/src/patterns/languages/en/temporal.ts +57 -0
  296. package/src/patterns/put/ar.ts +74 -0
  297. package/src/patterns/put/bn.ts +53 -0
  298. package/src/patterns/put/en.ts +74 -0
  299. package/src/patterns/put/es.ts +74 -0
  300. package/src/patterns/put/hi.ts +69 -0
  301. package/src/patterns/put/id.ts +96 -0
  302. package/src/patterns/put/index.ts +99 -0
  303. package/src/patterns/put/it.ts +56 -0
  304. package/src/patterns/put/ja.ts +75 -0
  305. package/src/patterns/put/ko.ts +67 -0
  306. package/src/patterns/put/ms.ts +30 -0
  307. package/src/patterns/put/pl.ts +81 -0
  308. package/src/patterns/put/ru.ts +85 -0
  309. package/src/patterns/put/th.ts +32 -0
  310. package/src/patterns/put/tl.ts +30 -0
  311. package/src/patterns/put/tr.ts +67 -0
  312. package/src/patterns/put/uk.ts +85 -0
  313. package/src/patterns/put/vi.ts +72 -0
  314. package/src/patterns/put/zh.ts +62 -0
  315. package/src/patterns/registry.ts +163 -0
  316. package/src/patterns/remove/ar.ts +71 -0
  317. package/src/patterns/remove/bn.ts +68 -0
  318. package/src/patterns/remove/hi.ts +69 -0
  319. package/src/patterns/remove/index.ts +87 -0
  320. package/src/patterns/remove/it.ts +69 -0
  321. package/src/patterns/remove/ja.ts +74 -0
  322. package/src/patterns/remove/ko.ts +78 -0
  323. package/src/patterns/remove/ms.ts +30 -0
  324. package/src/patterns/remove/pl.ts +62 -0
  325. package/src/patterns/remove/ru.ts +62 -0
  326. package/src/patterns/remove/th.ts +49 -0
  327. package/src/patterns/remove/tl.ts +30 -0
  328. package/src/patterns/remove/tr.ts +78 -0
  329. package/src/patterns/remove/uk.ts +62 -0
  330. package/src/patterns/remove/vi.ts +61 -0
  331. package/src/patterns/remove/zh.ts +72 -0
  332. package/src/patterns/set/ar.ts +84 -0
  333. package/src/patterns/set/bn.ts +53 -0
  334. package/src/patterns/set/de.ts +84 -0
  335. package/src/patterns/set/es.ts +92 -0
  336. package/src/patterns/set/fr.ts +88 -0
  337. package/src/patterns/set/hi.ts +56 -0
  338. package/src/patterns/set/id.ts +84 -0
  339. package/src/patterns/set/index.ts +107 -0
  340. package/src/patterns/set/it.ts +56 -0
  341. package/src/patterns/set/ja.ts +86 -0
  342. package/src/patterns/set/ko.ts +85 -0
  343. package/src/patterns/set/ms.ts +30 -0
  344. package/src/patterns/set/pl.ts +57 -0
  345. package/src/patterns/set/pt.ts +84 -0
  346. package/src/patterns/set/ru.ts +57 -0
  347. package/src/patterns/set/th.ts +31 -0
  348. package/src/patterns/set/tl.ts +30 -0
  349. package/src/patterns/set/tr.ts +107 -0
  350. package/src/patterns/set/uk.ts +57 -0
  351. package/src/patterns/set/vi.ts +53 -0
  352. package/src/patterns/set/zh.ts +84 -0
  353. package/src/patterns/show/ar.ts +67 -0
  354. package/src/patterns/show/bn.ts +47 -0
  355. package/src/patterns/show/de.ts +32 -0
  356. package/src/patterns/show/fr.ts +32 -0
  357. package/src/patterns/show/hi.ts +61 -0
  358. package/src/patterns/show/index.ts +95 -0
  359. package/src/patterns/show/it.ts +56 -0
  360. package/src/patterns/show/ja.ts +69 -0
  361. package/src/patterns/show/ko.ts +73 -0
  362. package/src/patterns/show/ms.ts +30 -0
  363. package/src/patterns/show/pl.ts +57 -0
  364. package/src/patterns/show/ru.ts +57 -0
  365. package/src/patterns/show/th.ts +29 -0
  366. package/src/patterns/show/tl.ts +30 -0
  367. package/src/patterns/show/tr.ts +65 -0
  368. package/src/patterns/show/uk.ts +57 -0
  369. package/src/patterns/show/vi.ts +56 -0
  370. package/src/patterns/show/zh.ts +68 -0
  371. package/src/patterns/take/ar.ts +51 -0
  372. package/src/patterns/take/index.ts +31 -0
  373. package/src/patterns/toggle/ar.ts +61 -0
  374. package/src/patterns/toggle/bn.ts +70 -0
  375. package/src/patterns/toggle/en.ts +61 -0
  376. package/src/patterns/toggle/es.ts +61 -0
  377. package/src/patterns/toggle/hi.ts +80 -0
  378. package/src/patterns/toggle/index.ts +95 -0
  379. package/src/patterns/toggle/it.ts +69 -0
  380. package/src/patterns/toggle/ja.ts +156 -0
  381. package/src/patterns/toggle/ko.ts +113 -0
  382. package/src/patterns/toggle/ms.ts +30 -0
  383. package/src/patterns/toggle/pl.ts +62 -0
  384. package/src/patterns/toggle/ru.ts +62 -0
  385. package/src/patterns/toggle/th.ts +50 -0
  386. package/src/patterns/toggle/tl.ts +30 -0
  387. package/src/patterns/toggle/tr.ts +88 -0
  388. package/src/patterns/toggle/uk.ts +62 -0
  389. package/src/patterns/toggle/vi.ts +61 -0
  390. package/src/patterns/toggle/zh.ts +99 -0
  391. package/src/public-api.ts +286 -0
  392. package/src/registry.ts +441 -0
  393. package/src/tokenizers/arabic.ts +723 -0
  394. package/src/tokenizers/base.ts +1300 -0
  395. package/src/tokenizers/bengali.ts +289 -0
  396. package/src/tokenizers/chinese.ts +481 -0
  397. package/src/tokenizers/english.ts +416 -0
  398. package/src/tokenizers/french.ts +326 -0
  399. package/src/tokenizers/german.ts +324 -0
  400. package/src/tokenizers/hindi.ts +319 -0
  401. package/src/tokenizers/index.ts +127 -0
  402. package/src/tokenizers/indonesian.ts +306 -0
  403. package/src/tokenizers/italian.ts +458 -0
  404. package/src/tokenizers/japanese.ts +447 -0
  405. package/src/tokenizers/korean.ts +642 -0
  406. package/src/tokenizers/morphology/arabic-normalizer.ts +242 -0
  407. package/src/tokenizers/morphology/french-normalizer.ts +268 -0
  408. package/src/tokenizers/morphology/german-normalizer.ts +256 -0
  409. package/src/tokenizers/morphology/index.ts +46 -0
  410. package/src/tokenizers/morphology/italian-normalizer.ts +329 -0
  411. package/src/tokenizers/morphology/japanese-normalizer.ts +288 -0
  412. package/src/tokenizers/morphology/korean-normalizer.ts +428 -0
  413. package/src/tokenizers/morphology/polish-normalizer.ts +264 -0
  414. package/src/tokenizers/morphology/portuguese-normalizer.ts +310 -0
  415. package/src/tokenizers/morphology/spanish-normalizer.ts +327 -0
  416. package/src/tokenizers/morphology/turkish-normalizer.ts +412 -0
  417. package/src/tokenizers/morphology/types.ts +211 -0
  418. package/src/tokenizers/ms.ts +198 -0
  419. package/src/tokenizers/polish.ts +354 -0
  420. package/src/tokenizers/portuguese.ts +304 -0
  421. package/src/tokenizers/quechua.ts +339 -0
  422. package/src/tokenizers/russian.ts +375 -0
  423. package/src/tokenizers/spanish.ts +403 -0
  424. package/src/tokenizers/swahili.ts +303 -0
  425. package/src/tokenizers/thai.ts +236 -0
  426. package/src/tokenizers/tl.ts +198 -0
  427. package/src/tokenizers/turkish.ts +411 -0
  428. package/src/tokenizers/ukrainian.ts +369 -0
  429. package/src/tokenizers/vietnamese.ts +410 -0
  430. package/src/types/grammar-types.ts +617 -0
  431. package/src/types/unified-profile.ts +267 -0
  432. package/src/types.ts +709 -0
  433. package/src/utils/confidence-calculator.ts +147 -0
  434. package/src/validators/command-validator.ts +380 -0
  435. package/src/validators/index.ts +15 -0
@@ -0,0 +1,394 @@
1
+ /**
2
+ * Language Loader
3
+ *
4
+ * Provides lazy loading capabilities for language modules.
5
+ * Languages can be loaded:
6
+ * 1. Via dynamic import from package subpath
7
+ * 2. From a URL (for CDN usage)
8
+ * 3. From a pre-loaded module object
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { loadLanguage, parse } from '@lokascript/semantic/browser/lazy';
13
+ *
14
+ * // Load Japanese on demand
15
+ * await loadLanguage('ja');
16
+ *
17
+ * // Now parsing works for Japanese
18
+ * parse('トグル .active', 'ja');
19
+ * ```
20
+ */
21
+
22
+ import {
23
+ registerLanguage,
24
+ registerPatterns,
25
+ isLanguageRegistered,
26
+ type LanguageProfile,
27
+ } from './registry';
28
+ import type { LanguageTokenizer, LanguagePattern } from './types';
29
+
30
+ // =============================================================================
31
+ // Types
32
+ // =============================================================================
33
+
34
+ /**
35
+ * Options for loading a language.
36
+ */
37
+ export interface LoadLanguageOptions {
38
+ /**
39
+ * URL to fetch the language module from (for CDN usage).
40
+ * The module should export: tokenizer, profile, patterns (or buildPatterns)
41
+ */
42
+ url?: string;
43
+
44
+ /**
45
+ * Pre-loaded module object.
46
+ * Use this if you've already imported the module.
47
+ */
48
+ module?: LanguageModule;
49
+
50
+ /**
51
+ * Skip loading if the language is already registered.
52
+ * Defaults to true.
53
+ */
54
+ skipIfRegistered?: boolean;
55
+ }
56
+
57
+ /**
58
+ * A language module that can be registered with the semantic parser.
59
+ */
60
+ export interface LanguageModule {
61
+ /** The language tokenizer */
62
+ tokenizer: LanguageTokenizer;
63
+
64
+ /** The language profile for pattern generation */
65
+ profile: LanguageProfile;
66
+
67
+ /** Pre-built patterns (optional) */
68
+ patterns?: LanguagePattern[];
69
+
70
+ /** Function to build patterns lazily (optional) */
71
+ buildPatterns?: () => LanguagePattern[];
72
+ }
73
+
74
+ /**
75
+ * Result of a language loading operation.
76
+ */
77
+ export interface LoadLanguageResult {
78
+ /** The language code that was loaded */
79
+ code: string;
80
+
81
+ /** Whether the language was newly loaded (false if already registered) */
82
+ loaded: boolean;
83
+
84
+ /** Error message if loading failed */
85
+ error?: string;
86
+ }
87
+
88
+ // =============================================================================
89
+ // Language Module Import Map
90
+ // =============================================================================
91
+
92
+ /**
93
+ * Map of language codes to their module import functions.
94
+ * This enables dynamic imports without bundling all languages.
95
+ *
96
+ * Most languages use the registry's pattern generator (set via setPatternGenerator).
97
+ * English has special hand-crafted patterns that are explicitly registered.
98
+ */
99
+ const LANGUAGE_IMPORTERS: Record<string, () => Promise<LanguageModule>> = {
100
+ en: async () => {
101
+ // English has special hand-crafted patterns
102
+ const { englishTokenizer } = await import('./tokenizers/english');
103
+ const { englishProfile } = await import('./generators/profiles/english');
104
+ const { buildEnglishPatterns } = await import('./patterns/en');
105
+ return {
106
+ tokenizer: englishTokenizer,
107
+ profile: englishProfile,
108
+ buildPatterns: buildEnglishPatterns,
109
+ };
110
+ },
111
+ es: async () => {
112
+ const { spanishTokenizer } = await import('./tokenizers/spanish');
113
+ const { spanishProfile } = await import('./generators/profiles/spanish');
114
+ return { tokenizer: spanishTokenizer, profile: spanishProfile };
115
+ },
116
+ ja: async () => {
117
+ const { japaneseTokenizer } = await import('./tokenizers/japanese');
118
+ const { japaneseProfile } = await import('./generators/profiles/japanese');
119
+ return { tokenizer: japaneseTokenizer, profile: japaneseProfile };
120
+ },
121
+ ar: async () => {
122
+ const { arabicTokenizer } = await import('./tokenizers/arabic');
123
+ const { arabicProfile } = await import('./generators/profiles/arabic');
124
+ return { tokenizer: arabicTokenizer, profile: arabicProfile };
125
+ },
126
+ ko: async () => {
127
+ const { koreanTokenizer } = await import('./tokenizers/korean');
128
+ const { koreanProfile } = await import('./generators/profiles/korean');
129
+ return { tokenizer: koreanTokenizer, profile: koreanProfile };
130
+ },
131
+ zh: async () => {
132
+ const { chineseTokenizer } = await import('./tokenizers/chinese');
133
+ const { chineseProfile } = await import('./generators/profiles/chinese');
134
+ return { tokenizer: chineseTokenizer, profile: chineseProfile };
135
+ },
136
+ tr: async () => {
137
+ const { turkishTokenizer } = await import('./tokenizers/turkish');
138
+ const { turkishProfile } = await import('./generators/profiles/turkish');
139
+ return { tokenizer: turkishTokenizer, profile: turkishProfile };
140
+ },
141
+ pt: async () => {
142
+ const { portugueseTokenizer } = await import('./tokenizers/portuguese');
143
+ const { portugueseProfile } = await import('./generators/profiles/portuguese');
144
+ return { tokenizer: portugueseTokenizer, profile: portugueseProfile };
145
+ },
146
+ fr: async () => {
147
+ const { frenchTokenizer } = await import('./tokenizers/french');
148
+ const { frenchProfile } = await import('./generators/profiles/french');
149
+ return { tokenizer: frenchTokenizer, profile: frenchProfile };
150
+ },
151
+ de: async () => {
152
+ const { germanTokenizer } = await import('./tokenizers/german');
153
+ const { germanProfile } = await import('./generators/profiles/german');
154
+ return { tokenizer: germanTokenizer, profile: germanProfile };
155
+ },
156
+ id: async () => {
157
+ const { indonesianTokenizer } = await import('./tokenizers/indonesian');
158
+ const { indonesianProfile } = await import('./generators/profiles/indonesian');
159
+ return { tokenizer: indonesianTokenizer, profile: indonesianProfile };
160
+ },
161
+ qu: async () => {
162
+ const { quechuaTokenizer } = await import('./tokenizers/quechua');
163
+ const { quechuaProfile } = await import('./generators/profiles/quechua');
164
+ return { tokenizer: quechuaTokenizer, profile: quechuaProfile };
165
+ },
166
+ sw: async () => {
167
+ const { swahiliTokenizer } = await import('./tokenizers/swahili');
168
+ const { swahiliProfile } = await import('./generators/profiles/swahili');
169
+ return { tokenizer: swahiliTokenizer, profile: swahiliProfile };
170
+ },
171
+ bn: async () => {
172
+ const { bengaliTokenizer } = await import('./tokenizers/bengali');
173
+ const { bengaliProfile } = await import('./generators/profiles/bengali');
174
+ return { tokenizer: bengaliTokenizer, profile: bengaliProfile };
175
+ },
176
+ hi: async () => {
177
+ const { hindiTokenizer } = await import('./tokenizers/hindi');
178
+ const { hindiProfile } = await import('./generators/profiles/hindi');
179
+ return { tokenizer: hindiTokenizer, profile: hindiProfile };
180
+ },
181
+ it: async () => {
182
+ const { italianTokenizer } = await import('./tokenizers/italian');
183
+ const { italianProfile } = await import('./generators/profiles/italian');
184
+ return { tokenizer: italianTokenizer, profile: italianProfile };
185
+ },
186
+ ms: async () => {
187
+ const { malayTokenizer } = await import('./tokenizers/ms');
188
+ const { malayProfile } = await import('./generators/profiles/ms');
189
+ return { tokenizer: malayTokenizer, profile: malayProfile };
190
+ },
191
+ pl: async () => {
192
+ const { polishTokenizer } = await import('./tokenizers/polish');
193
+ const { polishProfile } = await import('./generators/profiles/polish');
194
+ return { tokenizer: polishTokenizer, profile: polishProfile };
195
+ },
196
+ ru: async () => {
197
+ const { russianTokenizer } = await import('./tokenizers/russian');
198
+ const { russianProfile } = await import('./generators/profiles/russian');
199
+ return { tokenizer: russianTokenizer, profile: russianProfile };
200
+ },
201
+ th: async () => {
202
+ const { thaiTokenizer } = await import('./tokenizers/thai');
203
+ const { thaiProfile } = await import('./generators/profiles/thai');
204
+ return { tokenizer: thaiTokenizer, profile: thaiProfile };
205
+ },
206
+ tl: async () => {
207
+ const { tagalogTokenizer } = await import('./tokenizers/tl');
208
+ const { tagalogProfile } = await import('./generators/profiles/tl');
209
+ return { tokenizer: tagalogTokenizer, profile: tagalogProfile };
210
+ },
211
+ uk: async () => {
212
+ const { ukrainianTokenizer } = await import('./tokenizers/ukrainian');
213
+ const { ukrainianProfile } = await import('./generators/profiles/ukrainian');
214
+ return { tokenizer: ukrainianTokenizer, profile: ukrainianProfile };
215
+ },
216
+ vi: async () => {
217
+ const { vietnameseTokenizer } = await import('./tokenizers/vietnamese');
218
+ const { vietnameseProfile } = await import('./generators/profiles/vietnamese');
219
+ return { tokenizer: vietnameseTokenizer, profile: vietnameseProfile };
220
+ },
221
+ };
222
+
223
+ /**
224
+ * List of all supported language codes.
225
+ */
226
+ export const SUPPORTED_LANGUAGES = Object.keys(LANGUAGE_IMPORTERS);
227
+
228
+ // =============================================================================
229
+ // Core Loading Functions
230
+ // =============================================================================
231
+
232
+ /**
233
+ * Register a language module with the semantic parser.
234
+ */
235
+ function registerModule(code: string, module: LanguageModule): void {
236
+ // Register tokenizer and profile
237
+ registerLanguage(code, module.tokenizer, module.profile);
238
+
239
+ // Register patterns
240
+ if (module.patterns) {
241
+ registerPatterns(code, module.patterns);
242
+ } else if (module.buildPatterns) {
243
+ registerPatterns(code, module.buildPatterns());
244
+ }
245
+ }
246
+
247
+ /**
248
+ * Load a language from a URL.
249
+ * The URL should return a JavaScript module that exports a LanguageModule.
250
+ */
251
+ async function loadFromUrl(code: string, url: string): Promise<LanguageModule> {
252
+ try {
253
+ // Fetch the module
254
+ const response = await fetch(url);
255
+ if (!response.ok) {
256
+ throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}`);
257
+ }
258
+
259
+ // Get the module text and create a blob URL
260
+ const text = await response.text();
261
+ const blob = new Blob([text], { type: 'application/javascript' });
262
+ const blobUrl = URL.createObjectURL(blob);
263
+
264
+ try {
265
+ // Dynamic import from blob URL
266
+ const module = await import(/* @vite-ignore */ blobUrl);
267
+
268
+ // Validate module structure
269
+ if (!module.tokenizer || !module.profile) {
270
+ throw new Error(`Invalid language module: missing tokenizer or profile`);
271
+ }
272
+
273
+ return module as LanguageModule;
274
+ } finally {
275
+ // Clean up blob URL
276
+ URL.revokeObjectURL(blobUrl);
277
+ }
278
+ } catch (error) {
279
+ throw new Error(
280
+ `Failed to load language '${code}' from ${url}: ${error instanceof Error ? error.message : String(error)}`
281
+ );
282
+ }
283
+ }
284
+
285
+ /**
286
+ * Load a single language.
287
+ *
288
+ * @param code - The language code (e.g., 'en', 'ja', 'es')
289
+ * @param options - Loading options
290
+ * @returns Result indicating success or failure
291
+ *
292
+ * @example
293
+ * ```typescript
294
+ * // Load from package
295
+ * await loadLanguage('ja');
296
+ *
297
+ * // Load from CDN
298
+ * await loadLanguage('ko', {
299
+ * url: 'https://cdn.example.com/hyperfixi-semantic-ko.js'
300
+ * });
301
+ *
302
+ * // Load from pre-loaded module
303
+ * await loadLanguage('en', { module: myEnglishModule });
304
+ * ```
305
+ */
306
+ export async function loadLanguage(
307
+ code: string,
308
+ options: LoadLanguageOptions = {}
309
+ ): Promise<LoadLanguageResult> {
310
+ const { url, module, skipIfRegistered = true } = options;
311
+
312
+ // Check if already registered
313
+ if (skipIfRegistered && isLanguageRegistered(code)) {
314
+ return { code, loaded: false };
315
+ }
316
+
317
+ try {
318
+ let languageModule: LanguageModule;
319
+
320
+ if (module) {
321
+ // Use provided module directly
322
+ languageModule = module;
323
+ } else if (url) {
324
+ // Load from URL
325
+ languageModule = await loadFromUrl(code, url);
326
+ } else {
327
+ // Dynamic import from package
328
+ const importer = LANGUAGE_IMPORTERS[code];
329
+ if (!importer) {
330
+ throw new Error(`Unknown language: ${code}. Supported: ${SUPPORTED_LANGUAGES.join(', ')}`);
331
+ }
332
+ languageModule = await importer();
333
+ }
334
+
335
+ // Register the module
336
+ registerModule(code, languageModule);
337
+
338
+ return { code, loaded: true };
339
+ } catch (error) {
340
+ return {
341
+ code,
342
+ loaded: false,
343
+ error: error instanceof Error ? error.message : String(error),
344
+ };
345
+ }
346
+ }
347
+
348
+ /**
349
+ * Load multiple languages in parallel.
350
+ *
351
+ * @param codes - Array of language codes to load
352
+ * @param options - Loading options (applied to all languages)
353
+ * @returns Array of results for each language
354
+ *
355
+ * @example
356
+ * ```typescript
357
+ * // Load multiple languages
358
+ * const results = await loadLanguages(['en', 'es', 'ja']);
359
+ *
360
+ * // Check results
361
+ * for (const result of results) {
362
+ * if (result.error) {
363
+ * console.error(`Failed to load ${result.code}: ${result.error}`);
364
+ * }
365
+ * }
366
+ * ```
367
+ */
368
+ export async function loadLanguages(
369
+ codes: string[],
370
+ options: Omit<LoadLanguageOptions, 'module'> = {}
371
+ ): Promise<LoadLanguageResult[]> {
372
+ return Promise.all(codes.map(code => loadLanguage(code, options)));
373
+ }
374
+
375
+ /**
376
+ * Check if a language can be loaded (is supported).
377
+ */
378
+ export function canLoadLanguage(code: string): boolean {
379
+ return code in LANGUAGE_IMPORTERS;
380
+ }
381
+
382
+ /**
383
+ * Get list of languages that are currently loaded.
384
+ */
385
+ export function getLoadedLanguages(): string[] {
386
+ return SUPPORTED_LANGUAGES.filter(isLanguageRegistered);
387
+ }
388
+
389
+ /**
390
+ * Get list of languages that are not yet loaded.
391
+ */
392
+ export function getUnloadedLanguages(): string[] {
393
+ return SUPPORTED_LANGUAGES.filter(code => !isLanguageRegistered(code));
394
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * All Languages Module
3
+ *
4
+ * Imports and registers all 23 supported languages.
5
+ * Use this for the full bundle with all language support.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import '@lokascript/semantic/languages/_all';
10
+ * // or
11
+ * import '@lokascript/semantic/languages';
12
+ * ```
13
+ *
14
+ * @generated This file is auto-generated. Do not edit manually.
15
+ */
16
+
17
+ // Import all language modules to trigger registration
18
+ import './ar';
19
+ import './bn';
20
+ import './de';
21
+ import './en';
22
+ import './es';
23
+ import './fr';
24
+ import './hi';
25
+ import './id';
26
+ import './it';
27
+ import './ja';
28
+ import './ko';
29
+ import './ms';
30
+ import './pl';
31
+ import './pt';
32
+ import './qu';
33
+ import './ru';
34
+ import './sw';
35
+ import './th';
36
+ import './tl';
37
+ import './tr';
38
+ import './uk';
39
+ import './vi';
40
+ import './zh';
41
+
42
+ // Re-export everything for convenience
43
+ export * from './ar';
44
+ export * from './bn';
45
+ export * from './de';
46
+ export * from './en';
47
+ export * from './es';
48
+ export * from './fr';
49
+ export * from './hi';
50
+ export * from './id';
51
+ export * from './it';
52
+ export * from './ja';
53
+ export * from './ko';
54
+ export * from './ms';
55
+ export * from './pl';
56
+ export * from './pt';
57
+ export * from './qu';
58
+ export * from './ru';
59
+ export * from './sw';
60
+ export * from './th';
61
+ export * from './tl';
62
+ export * from './tr';
63
+ export * from './uk';
64
+ export * from './vi';
65
+ export * from './zh';
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Arabic Language Module
3
+ *
4
+ * Self-registering module for Arabic language support.
5
+ * Importing this module registers Arabic tokenizer and profile.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { arabicTokenizer } from '../tokenizers/arabic';
10
+ import { arabicProfile } from '../generators/profiles/arabic';
11
+
12
+ export { arabicTokenizer } from '../tokenizers/arabic';
13
+ export { arabicProfile } from '../generators/profiles/arabic';
14
+
15
+ registerLanguage('ar', arabicTokenizer, arabicProfile);
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Bengali Language Registration
3
+ *
4
+ * Self-registering language module for Bengali.
5
+ * Import this module to enable Bengali language support.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { bengaliTokenizer } from '../tokenizers/bengali';
10
+ import { bengaliProfile } from '../generators/profiles/bengali';
11
+
12
+ // Register Bengali with the tokenizer and profile
13
+ registerLanguage('bn', bengaliTokenizer, bengaliProfile);
14
+
15
+ // Re-export for direct access
16
+ export { bengaliTokenizer, bengaliProfile };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * German Language Module
3
+ *
4
+ * Self-registering module for German language support.
5
+ * Importing this module registers German tokenizer and profile.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { germanTokenizer } from '../tokenizers/german';
10
+ import { germanProfile } from '../generators/profiles/german';
11
+
12
+ export { germanTokenizer } from '../tokenizers/german';
13
+ export { germanProfile } from '../generators/profiles/german';
14
+
15
+ registerLanguage('de', germanTokenizer, germanProfile);
@@ -0,0 +1,29 @@
1
+ /**
2
+ * English Language Module
3
+ *
4
+ * Self-registering module for English language support.
5
+ * Importing this module registers English tokenizer, profile, and patterns.
6
+ *
7
+ * This module enables tree-shaking by directly importing only English-specific
8
+ * code, avoiding the patterns/index.ts barrel which pulls in all languages.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import '@lokascript/semantic/languages/en';
13
+ * ```
14
+ */
15
+
16
+ import { registerLanguage, registerPatterns } from '../registry';
17
+ import { englishTokenizer } from '../tokenizers/english';
18
+ import { englishProfile } from '../generators/profiles/english';
19
+ import { buildEnglishPatterns } from '../patterns/en';
20
+
21
+ // Re-export for direct access
22
+ export { englishTokenizer } from '../tokenizers/english';
23
+ export { englishProfile } from '../generators/profiles/english';
24
+
25
+ // Auto-register when this module is imported
26
+ registerLanguage('en', englishTokenizer, englishProfile);
27
+
28
+ // Register English patterns directly (enables tree-shaking)
29
+ registerPatterns('en', buildEnglishPatterns());
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Spanish Language Module
3
+ *
4
+ * Self-registering module for Spanish language support.
5
+ * Importing this module registers Spanish tokenizer and profile.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { spanishTokenizer } from '../tokenizers/spanish';
10
+ import { spanishProfile } from '../generators/profiles/spanish';
11
+
12
+ export { spanishTokenizer } from '../tokenizers/spanish';
13
+ export { spanishProfile } from '../generators/profiles/spanish';
14
+
15
+ registerLanguage('es', spanishTokenizer, spanishProfile);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * French Language Module
3
+ *
4
+ * Self-registering module for French language support.
5
+ * Importing this module registers French tokenizer and profile.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { frenchTokenizer } from '../tokenizers/french';
10
+ import { frenchProfile } from '../generators/profiles/french';
11
+
12
+ export { frenchTokenizer } from '../tokenizers/french';
13
+ export { frenchProfile } from '../generators/profiles/french';
14
+
15
+ registerLanguage('fr', frenchTokenizer, frenchProfile);
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Hindi Language Module
3
+ *
4
+ * Self-registering module that sets up Hindi language support.
5
+ * Import this module to enable Hindi in the semantic parser.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Enable Hindi
10
+ * import '@lokascript/semantic/languages/hi';
11
+ *
12
+ * // Or import everything
13
+ * import '@lokascript/semantic/languages/_all';
14
+ * ```
15
+ */
16
+
17
+ import { registerLanguage } from '../registry';
18
+ import { hindiTokenizer } from '../tokenizers/hindi';
19
+ import { hindiProfile } from '../generators/profiles/hindi';
20
+
21
+ // Re-export for direct access
22
+ export { hindiTokenizer } from '../tokenizers/hindi';
23
+ export { hindiProfile } from '../generators/profiles/hindi';
24
+
25
+ // Self-register on import
26
+ registerLanguage('hi', hindiTokenizer, hindiProfile);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Indonesian Language Module
3
+ *
4
+ * Self-registering module for Indonesian language support.
5
+ * Importing this module registers Indonesian tokenizer and profile.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { indonesianTokenizer } from '../tokenizers/indonesian';
10
+ import { indonesianProfile } from '../generators/profiles/indonesian';
11
+
12
+ export { indonesianTokenizer } from '../tokenizers/indonesian';
13
+ export { indonesianProfile } from '../generators/profiles/indonesian';
14
+
15
+ registerLanguage('id', indonesianTokenizer, indonesianProfile);
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Languages Index
3
+ *
4
+ * Re-exports all languages for the full bundle.
5
+ * For minimal bundles, import specific languages instead.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Full bundle - all languages
10
+ * import '@lokascript/semantic/languages';
11
+ *
12
+ * // Minimal bundle - specific languages only
13
+ * import '@lokascript/semantic/languages/en';
14
+ * import '@lokascript/semantic/languages/es';
15
+ * ```
16
+ */
17
+
18
+ export * from './_all';
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Italian Language Module
3
+ *
4
+ * Self-registering module for Italian language support.
5
+ * Importing this module registers Italian tokenizer and profile.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { italianTokenizer } from '../tokenizers/italian';
10
+ import { italianProfile } from '../generators/profiles/italian';
11
+
12
+ export { italianTokenizer } from '../tokenizers/italian';
13
+ export { italianProfile } from '../generators/profiles/italian';
14
+
15
+ registerLanguage('it', italianTokenizer, italianProfile);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Japanese Language Module
3
+ *
4
+ * Self-registering module for Japanese language support.
5
+ * Importing this module registers Japanese tokenizer and profile.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { japaneseTokenizer } from '../tokenizers/japanese';
10
+ import { japaneseProfile } from '../generators/profiles/japanese';
11
+
12
+ export { japaneseTokenizer } from '../tokenizers/japanese';
13
+ export { japaneseProfile } from '../generators/profiles/japanese';
14
+
15
+ registerLanguage('ja', japaneseTokenizer, japaneseProfile);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Korean Language Module
3
+ *
4
+ * Self-registering module for Korean language support.
5
+ * Importing this module registers Korean tokenizer and profile.
6
+ */
7
+
8
+ import { registerLanguage } from '../registry';
9
+ import { koreanTokenizer } from '../tokenizers/korean';
10
+ import { koreanProfile } from '../generators/profiles/korean';
11
+
12
+ export { koreanTokenizer } from '../tokenizers/korean';
13
+ export { koreanProfile } from '../generators/profiles/korean';
14
+
15
+ registerLanguage('ko', koreanTokenizer, koreanProfile);