@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
package/src/browser.ts ADDED
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Browser Bundle Entry Point
3
+ *
4
+ * This file exports the public API for browser usage via the
5
+ * LokaScriptSemantic global object.
6
+ *
7
+ * @example
8
+ * ```html
9
+ * <script src="hyperfixi-semantic.browser.js"></script>
10
+ * <script>
11
+ * const result = LokaScriptSemantic.parse('toggle .active on #button', 'en');
12
+ * const japanese = LokaScriptSemantic.translate(
13
+ * 'toggle .active on #button',
14
+ * 'en',
15
+ * 'ja'
16
+ * );
17
+ * </script>
18
+ * ```
19
+ */
20
+
21
+ // =============================================================================
22
+ // Register All Languages (Full Browser Bundle)
23
+ // =============================================================================
24
+
25
+ // Import patterns/index to register the pattern generator.
26
+ // This enables non-English languages to generate patterns on-demand
27
+ // via the patternGenerator fallback in the registry.
28
+ import './patterns/index';
29
+
30
+ // Import each language module directly to ensure side-effect registrations run.
31
+ // Each module calls registerLanguage() and registerPatterns() at load time.
32
+ // For minimal bundles, use language-specific entry points (e.g., browser-en.ts).
33
+
34
+ // Priority languages (13 original)
35
+ import { englishProfile as _en } from './languages/en';
36
+ import { spanishProfile as _es } from './languages/es';
37
+ import { japaneseProfile as _ja } from './languages/ja';
38
+ import { arabicProfile as _ar } from './languages/ar';
39
+ import { koreanProfile as _ko } from './languages/ko';
40
+ import { chineseProfile as _zh } from './languages/zh';
41
+ import { turkishProfile as _tr } from './languages/tr';
42
+ import { portugueseProfile as _pt } from './languages/pt';
43
+ import { frenchProfile as _fr } from './languages/fr';
44
+ import { germanProfile as _de } from './languages/de';
45
+ import { indonesianProfile as _id } from './languages/id';
46
+ import { quechuaProfile as _qu } from './languages/qu';
47
+ import { swahiliProfile as _sw } from './languages/sw';
48
+
49
+ // Additional languages (10 more for full bundle)
50
+ import { bengaliProfile as _bn } from './languages/bn';
51
+ import { hindiProfile as _hi } from './languages/hi';
52
+ import { italianProfile as _it } from './languages/it';
53
+ import { malayProfile as _ms } from './languages/ms';
54
+ import { polishProfile as _pl } from './languages/pl';
55
+ import { russianProfile as _ru } from './languages/ru';
56
+ import { tagalogProfile as _tl } from './languages/tl';
57
+ import { thaiProfile as _th } from './languages/th';
58
+ import { ukrainianProfile as _uk } from './languages/uk';
59
+ import { vietnameseProfile as _vi } from './languages/vi';
60
+
61
+ // Export the profiles to force bundler to keep them (prevents tree-shaking)
62
+ // Full bundle: 23 languages
63
+ export const registeredLanguageProfiles = {
64
+ // Priority languages
65
+ en: _en,
66
+ es: _es,
67
+ ja: _ja,
68
+ ar: _ar,
69
+ ko: _ko,
70
+ zh: _zh,
71
+ tr: _tr,
72
+ pt: _pt,
73
+ fr: _fr,
74
+ de: _de,
75
+ id: _id,
76
+ qu: _qu,
77
+ sw: _sw,
78
+ // Additional languages
79
+ bn: _bn,
80
+ hi: _hi,
81
+ it: _it,
82
+ ms: _ms,
83
+ pl: _pl,
84
+ ru: _ru,
85
+ tl: _tl,
86
+ th: _th,
87
+ uk: _uk,
88
+ vi: _vi,
89
+ };
90
+
91
+ // =============================================================================
92
+ // Core API
93
+ // =============================================================================
94
+
95
+ export {
96
+ // Version
97
+ VERSION,
98
+ // Supported languages
99
+ getSupportedLanguages,
100
+ } from './index';
101
+
102
+ // =============================================================================
103
+ // Parsing
104
+ // =============================================================================
105
+
106
+ // Core parsing functions from the parser module
107
+ export { parse, canParse } from './parser';
108
+
109
+ // Explicit mode parsing and utilities
110
+ export { parseAny, parseExplicit, isExplicitSyntax } from './explicit';
111
+
112
+ // =============================================================================
113
+ // Translation
114
+ // =============================================================================
115
+
116
+ export { translate, getAllTranslations, roundTrip, validateTranslation } from './explicit';
117
+
118
+ // =============================================================================
119
+ // Rendering
120
+ // =============================================================================
121
+
122
+ export { render, renderExplicit, toExplicit, fromExplicit } from './explicit';
123
+
124
+ // =============================================================================
125
+ // Semantic Analyzer (for core parser integration)
126
+ // =============================================================================
127
+
128
+ export {
129
+ createSemanticAnalyzer,
130
+ SemanticAnalyzerImpl,
131
+ shouldUseSemanticResult,
132
+ DEFAULT_CONFIDENCE_THRESHOLD,
133
+ HIGH_CONFIDENCE_THRESHOLD,
134
+ } from './core-bridge';
135
+
136
+ export type { SemanticAnalyzer, SemanticAnalysisResult } from './core-bridge';
137
+
138
+ // =============================================================================
139
+ // AST Builder (direct semantic-to-AST conversion)
140
+ // =============================================================================
141
+
142
+ export { buildAST, ASTBuilder, getCommandMapper, registerCommandMapper } from './ast-builder';
143
+
144
+ // =============================================================================
145
+ // Tokenizers (for advanced usage)
146
+ // =============================================================================
147
+
148
+ // Import from tokenizers module
149
+ import {
150
+ tokenize as tokenizeInternal,
151
+ getTokenizer,
152
+ isLanguageSupported,
153
+ // Priority language tokenizers (13)
154
+ englishTokenizer,
155
+ japaneseTokenizer,
156
+ koreanTokenizer,
157
+ arabicTokenizer,
158
+ spanishTokenizer,
159
+ turkishTokenizer,
160
+ chineseTokenizer,
161
+ portugueseTokenizer,
162
+ frenchTokenizer,
163
+ germanTokenizer,
164
+ indonesianTokenizer,
165
+ quechuaTokenizer,
166
+ swahiliTokenizer,
167
+ // Additional language tokenizers (10)
168
+ bengaliTokenizer,
169
+ hindiTokenizer,
170
+ italianTokenizer,
171
+ malayTokenizer,
172
+ polishTokenizer,
173
+ russianTokenizer,
174
+ tagalogTokenizer,
175
+ thaiTokenizer,
176
+ ukrainianTokenizer,
177
+ vietnameseTokenizer,
178
+ } from './tokenizers';
179
+
180
+ import type { LanguageToken } from './types';
181
+
182
+ /**
183
+ * Tokenize input and return array of tokens (browser-friendly wrapper).
184
+ *
185
+ * @param input The input string to tokenize
186
+ * @param language The language code
187
+ * @returns Array of language tokens
188
+ */
189
+ export function tokenize(input: string, language: string): LanguageToken[] {
190
+ const stream = tokenizeInternal(input, language);
191
+ return [...stream.tokens];
192
+ }
193
+
194
+ // Re-export other tokenizer utilities
195
+ export {
196
+ getTokenizer,
197
+ isLanguageSupported,
198
+ // All 23 language tokenizers
199
+ englishTokenizer,
200
+ japaneseTokenizer,
201
+ koreanTokenizer,
202
+ arabicTokenizer,
203
+ spanishTokenizer,
204
+ turkishTokenizer,
205
+ chineseTokenizer,
206
+ portugueseTokenizer,
207
+ frenchTokenizer,
208
+ germanTokenizer,
209
+ indonesianTokenizer,
210
+ quechuaTokenizer,
211
+ swahiliTokenizer,
212
+ bengaliTokenizer,
213
+ hindiTokenizer,
214
+ italianTokenizer,
215
+ malayTokenizer,
216
+ polishTokenizer,
217
+ russianTokenizer,
218
+ tagalogTokenizer,
219
+ thaiTokenizer,
220
+ ukrainianTokenizer,
221
+ vietnameseTokenizer,
222
+ };
223
+
224
+ // =============================================================================
225
+ // Registry (for language profile and pattern access)
226
+ // =============================================================================
227
+
228
+ export {
229
+ getProfile,
230
+ tryGetProfile,
231
+ getRegisteredLanguages,
232
+ getPatternsForLanguage,
233
+ getPatternsForLanguageAndCommand,
234
+ } from './registry';
235
+
236
+ export type {
237
+ LanguageProfile,
238
+ KeywordTranslation,
239
+ RoleMarker,
240
+ PossessiveConfig,
241
+ VerbConfig,
242
+ } from './registry';
243
+
244
+ // =============================================================================
245
+ // Type Helpers (for constructing semantic nodes)
246
+ // =============================================================================
247
+
248
+ export {
249
+ createSelector,
250
+ createLiteral,
251
+ createReference,
252
+ createPropertyPath,
253
+ createCommandNode,
254
+ createEventHandler,
255
+ } from './types';
256
+
257
+ // =============================================================================
258
+ // Types (re-exported for TypeScript users)
259
+ // =============================================================================
260
+
261
+ export type {
262
+ ActionType,
263
+ SemanticRole,
264
+ SemanticValue,
265
+ SemanticNode,
266
+ LanguageToken,
267
+ TokenStream,
268
+ } from './types';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Cache Module
3
+ *
4
+ * LRU caching for semantic analysis results.
5
+ */
6
+
7
+ export {
8
+ SemanticCache,
9
+ semanticCache,
10
+ createSemanticCache,
11
+ withCache,
12
+ type SemanticCacheConfig,
13
+ type CacheStats,
14
+ } from './semantic-cache';
@@ -0,0 +1,344 @@
1
+ /**
2
+ * Semantic Result Cache
3
+ *
4
+ * LRU cache for semantic analysis results to optimize repeated parsing.
5
+ *
6
+ * Design:
7
+ * - Cache key: `${language}:${input}` for simple, fast lookups
8
+ * - LRU eviction when max size reached
9
+ * - Optional TTL (time-to-live) for cache entries
10
+ * - Statistics for monitoring cache effectiveness
11
+ * - Thread-safe for browser environments (single-threaded)
12
+ */
13
+
14
+ import type { SemanticAnalysisResult } from '../core-bridge';
15
+
16
+ // =============================================================================
17
+ // Types
18
+ // =============================================================================
19
+
20
+ /**
21
+ * Cache configuration options.
22
+ */
23
+ export interface SemanticCacheConfig {
24
+ /** Maximum number of entries to cache. Default: 1000 */
25
+ maxSize?: number;
26
+ /** Time-to-live in milliseconds. 0 = no expiration. Default: 0 */
27
+ ttlMs?: number;
28
+ /** Enable/disable caching. Default: true */
29
+ enabled?: boolean;
30
+ }
31
+
32
+ /**
33
+ * Cache entry with metadata.
34
+ */
35
+ interface CacheEntry {
36
+ /** The cached result */
37
+ result: SemanticAnalysisResult;
38
+ /** Timestamp when entry was created */
39
+ createdAt: number;
40
+ /** Last access timestamp (for LRU) */
41
+ lastAccessed: number;
42
+ }
43
+
44
+ /**
45
+ * Cache statistics.
46
+ */
47
+ export interface CacheStats {
48
+ /** Total cache hits */
49
+ hits: number;
50
+ /** Total cache misses */
51
+ misses: number;
52
+ /** Current cache size */
53
+ size: number;
54
+ /** Maximum cache size */
55
+ maxSize: number;
56
+ /** Hit rate (0-1) */
57
+ hitRate: number;
58
+ /** Total evictions due to size limit */
59
+ evictions: number;
60
+ /** Total expirations due to TTL */
61
+ expirations: number;
62
+ /** Whether caching is enabled */
63
+ enabled: boolean;
64
+ }
65
+
66
+ // =============================================================================
67
+ // LRU Cache Implementation
68
+ // =============================================================================
69
+
70
+ /**
71
+ * LRU Cache for semantic analysis results.
72
+ *
73
+ * Uses Map's insertion order for LRU eviction - when we access an entry,
74
+ * we delete and re-insert it to move it to the end (most recently used).
75
+ */
76
+ export class SemanticCache {
77
+ private cache: Map<string, CacheEntry>;
78
+ private config: Required<SemanticCacheConfig>;
79
+ private stats: {
80
+ hits: number;
81
+ misses: number;
82
+ evictions: number;
83
+ expirations: number;
84
+ };
85
+
86
+ constructor(config: SemanticCacheConfig = {}) {
87
+ this.cache = new Map();
88
+ this.config = {
89
+ maxSize: config.maxSize ?? 1000,
90
+ ttlMs: config.ttlMs ?? 0,
91
+ enabled: config.enabled ?? true,
92
+ };
93
+ this.stats = {
94
+ hits: 0,
95
+ misses: 0,
96
+ evictions: 0,
97
+ expirations: 0,
98
+ };
99
+ }
100
+
101
+ /**
102
+ * Generate cache key from input and language.
103
+ */
104
+ private makeKey(input: string, language: string): string {
105
+ return `${language}:${input}`;
106
+ }
107
+
108
+ /**
109
+ * Check if an entry has expired.
110
+ */
111
+ private isExpired(entry: CacheEntry): boolean {
112
+ if (this.config.ttlMs === 0) return false;
113
+ return Date.now() - entry.createdAt > this.config.ttlMs;
114
+ }
115
+
116
+ /**
117
+ * Evict the least recently used entry.
118
+ */
119
+ private evictLRU(): void {
120
+ // Map preserves insertion order, so first entry is oldest
121
+ const firstKey = this.cache.keys().next().value;
122
+ if (firstKey !== undefined) {
123
+ this.cache.delete(firstKey);
124
+ this.stats.evictions++;
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Get a cached result.
130
+ *
131
+ * @param input - The input string
132
+ * @param language - The language code
133
+ * @returns The cached result, or undefined if not found/expired
134
+ */
135
+ get(input: string, language: string): SemanticAnalysisResult | undefined {
136
+ if (!this.config.enabled) {
137
+ this.stats.misses++;
138
+ return undefined;
139
+ }
140
+
141
+ const key = this.makeKey(input, language);
142
+ const entry = this.cache.get(key);
143
+
144
+ if (!entry) {
145
+ this.stats.misses++;
146
+ return undefined;
147
+ }
148
+
149
+ // Check expiration
150
+ if (this.isExpired(entry)) {
151
+ this.cache.delete(key);
152
+ this.stats.expirations++;
153
+ this.stats.misses++;
154
+ return undefined;
155
+ }
156
+
157
+ // Move to end for LRU (delete and re-insert)
158
+ this.cache.delete(key);
159
+ entry.lastAccessed = Date.now();
160
+ this.cache.set(key, entry);
161
+
162
+ this.stats.hits++;
163
+ return entry.result;
164
+ }
165
+
166
+ /**
167
+ * Store a result in the cache.
168
+ *
169
+ * @param input - The input string
170
+ * @param language - The language code
171
+ * @param result - The analysis result to cache
172
+ */
173
+ set(input: string, language: string, result: SemanticAnalysisResult): void {
174
+ if (!this.config.enabled) return;
175
+
176
+ // Don't cache failed results (confidence 0)
177
+ if (result.confidence === 0) return;
178
+
179
+ const key = this.makeKey(input, language);
180
+ const now = Date.now();
181
+
182
+ // Evict if at max size
183
+ while (this.cache.size >= this.config.maxSize) {
184
+ this.evictLRU();
185
+ }
186
+
187
+ this.cache.set(key, {
188
+ result,
189
+ createdAt: now,
190
+ lastAccessed: now,
191
+ });
192
+ }
193
+
194
+ /**
195
+ * Check if a result is cached (without updating LRU).
196
+ */
197
+ has(input: string, language: string): boolean {
198
+ if (!this.config.enabled) return false;
199
+
200
+ const key = this.makeKey(input, language);
201
+ const entry = this.cache.get(key);
202
+
203
+ if (!entry) return false;
204
+ if (this.isExpired(entry)) {
205
+ this.cache.delete(key);
206
+ this.stats.expirations++;
207
+ return false;
208
+ }
209
+
210
+ return true;
211
+ }
212
+
213
+ /**
214
+ * Remove a specific entry from the cache.
215
+ */
216
+ delete(input: string, language: string): boolean {
217
+ const key = this.makeKey(input, language);
218
+ return this.cache.delete(key);
219
+ }
220
+
221
+ /**
222
+ * Clear all cached entries.
223
+ */
224
+ clear(): void {
225
+ this.cache.clear();
226
+ }
227
+
228
+ /**
229
+ * Reset statistics.
230
+ */
231
+ resetStats(): void {
232
+ this.stats = {
233
+ hits: 0,
234
+ misses: 0,
235
+ evictions: 0,
236
+ expirations: 0,
237
+ };
238
+ }
239
+
240
+ /**
241
+ * Get cache statistics.
242
+ */
243
+ getStats(): CacheStats {
244
+ const total = this.stats.hits + this.stats.misses;
245
+ return {
246
+ hits: this.stats.hits,
247
+ misses: this.stats.misses,
248
+ size: this.cache.size,
249
+ maxSize: this.config.maxSize,
250
+ hitRate: total > 0 ? this.stats.hits / total : 0,
251
+ evictions: this.stats.evictions,
252
+ expirations: this.stats.expirations,
253
+ enabled: this.config.enabled,
254
+ };
255
+ }
256
+
257
+ /**
258
+ * Update cache configuration.
259
+ */
260
+ configure(config: Partial<SemanticCacheConfig>): void {
261
+ if (config.maxSize !== undefined) {
262
+ this.config.maxSize = config.maxSize;
263
+ // Evict if now over limit
264
+ while (this.cache.size > this.config.maxSize) {
265
+ this.evictLRU();
266
+ }
267
+ }
268
+ if (config.ttlMs !== undefined) {
269
+ this.config.ttlMs = config.ttlMs;
270
+ }
271
+ if (config.enabled !== undefined) {
272
+ this.config.enabled = config.enabled;
273
+ }
274
+ }
275
+
276
+ /**
277
+ * Enable caching.
278
+ */
279
+ enable(): void {
280
+ this.config.enabled = true;
281
+ }
282
+
283
+ /**
284
+ * Disable caching.
285
+ */
286
+ disable(): void {
287
+ this.config.enabled = false;
288
+ }
289
+
290
+ /**
291
+ * Get current configuration.
292
+ */
293
+ getConfig(): Readonly<Required<SemanticCacheConfig>> {
294
+ return { ...this.config };
295
+ }
296
+ }
297
+
298
+ // =============================================================================
299
+ // Default Instance
300
+ // =============================================================================
301
+
302
+ /**
303
+ * Default global cache instance.
304
+ */
305
+ export const semanticCache = new SemanticCache();
306
+
307
+ // =============================================================================
308
+ // Utility Functions
309
+ // =============================================================================
310
+
311
+ /**
312
+ * Create a cache with custom configuration.
313
+ */
314
+ export function createSemanticCache(config?: SemanticCacheConfig): SemanticCache {
315
+ return new SemanticCache(config);
316
+ }
317
+
318
+ /**
319
+ * Decorator/wrapper for adding caching to an analyze function.
320
+ *
321
+ * @param analyzeFn - The analyze function to wrap
322
+ * @param cache - The cache instance to use
323
+ * @returns Wrapped function with caching
324
+ */
325
+ export function withCache<T extends (input: string, language: string) => SemanticAnalysisResult>(
326
+ analyzeFn: T,
327
+ cache: SemanticCache = semanticCache
328
+ ): T {
329
+ return ((input: string, language: string): SemanticAnalysisResult => {
330
+ // Check cache first
331
+ const cached = cache.get(input, language);
332
+ if (cached) {
333
+ return cached;
334
+ }
335
+
336
+ // Run analysis
337
+ const result = analyzeFn(input, language);
338
+
339
+ // Cache result
340
+ cache.set(input, language, result);
341
+
342
+ return result;
343
+ }) as T;
344
+ }