@lokascript/semantic 1.2.1 → 2.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 (964) hide show
  1. package/dist/__test-utils__/index.d.ts +6 -0
  2. package/dist/__test-utils__/index.d.ts.map +1 -0
  3. package/dist/__test-utils__/test-helpers.d.ts +7 -0
  4. package/dist/__test-utils__/test-helpers.d.ts.map +1 -0
  5. package/dist/__types__/test-helpers.d.ts +67 -0
  6. package/dist/__types__/test-helpers.d.ts.map +1 -0
  7. package/dist/analysis/index.d.ts +106 -0
  8. package/dist/analysis/index.d.ts.map +1 -0
  9. package/dist/ast-builder/command-mappers.d.ts +50 -0
  10. package/dist/ast-builder/command-mappers.d.ts.map +1 -0
  11. package/dist/ast-builder/expression-parser/index.d.ts +14 -0
  12. package/dist/ast-builder/expression-parser/index.d.ts.map +1 -0
  13. package/dist/ast-builder/expression-parser/parser.d.ts +50 -0
  14. package/dist/ast-builder/expression-parser/parser.d.ts.map +1 -0
  15. package/dist/ast-builder/expression-parser/tokenizer.d.ts +44 -0
  16. package/dist/ast-builder/expression-parser/tokenizer.d.ts.map +1 -0
  17. package/dist/ast-builder/expression-parser/types.d.ts +111 -0
  18. package/dist/ast-builder/expression-parser/types.d.ts.map +1 -0
  19. package/dist/ast-builder/index.d.ts +183 -0
  20. package/dist/ast-builder/index.d.ts.map +1 -0
  21. package/dist/ast-builder/value-converters.d.ts +51 -0
  22. package/dist/ast-builder/value-converters.d.ts.map +1 -0
  23. package/dist/browser-ar.ar.global.js +2 -2
  24. package/dist/browser-ar.d.ts +47 -0
  25. package/dist/browser-ar.d.ts.map +1 -0
  26. package/dist/browser-bn.bn.global.js +2 -0
  27. package/dist/browser-bn.d.ts +47 -0
  28. package/dist/browser-bn.d.ts.map +1 -0
  29. package/dist/browser-core.core.global.js +2 -2
  30. package/dist/browser-core.d.ts +83 -0
  31. package/dist/browser-core.d.ts.map +1 -0
  32. package/dist/browser-de.d.ts +47 -0
  33. package/dist/browser-de.d.ts.map +1 -0
  34. package/dist/browser-de.de.global.js +2 -2
  35. package/dist/browser-east-asian.d.ts +59 -0
  36. package/dist/browser-east-asian.d.ts.map +1 -0
  37. package/dist/browser-east-asian.east-asian.global.js +2 -2
  38. package/dist/browser-en-tr.d.ts +50 -0
  39. package/dist/browser-en-tr.d.ts.map +1 -0
  40. package/dist/browser-en-tr.en-tr.global.js +2 -2
  41. package/dist/browser-en.d.ts +48 -0
  42. package/dist/browser-en.d.ts.map +1 -0
  43. package/dist/browser-en.en.global.js +2 -2
  44. package/dist/browser-es-en.d.ts +62 -0
  45. package/dist/browser-es-en.d.ts.map +1 -0
  46. package/dist/browser-es-en.es-en.global.js +2 -2
  47. package/dist/browser-es.d.ts +51 -0
  48. package/dist/browser-es.d.ts.map +1 -0
  49. package/dist/browser-es.es.global.js +2 -2
  50. package/dist/browser-fr.d.ts +47 -0
  51. package/dist/browser-fr.d.ts.map +1 -0
  52. package/dist/browser-fr.fr.global.js +2 -2
  53. package/dist/browser-hi.d.ts +47 -0
  54. package/dist/browser-hi.d.ts.map +1 -0
  55. package/dist/browser-hi.hi.global.js +2 -0
  56. package/dist/browser-id.d.ts +47 -0
  57. package/dist/browser-id.d.ts.map +1 -0
  58. package/dist/browser-id.id.global.js +2 -2
  59. package/dist/browser-it.d.ts +47 -0
  60. package/dist/browser-it.d.ts.map +1 -0
  61. package/dist/browser-it.it.global.js +2 -0
  62. package/dist/browser-ja.d.ts +47 -0
  63. package/dist/browser-ja.d.ts.map +1 -0
  64. package/dist/browser-ja.ja.global.js +2 -2
  65. package/dist/browser-ko.d.ts +47 -0
  66. package/dist/browser-ko.d.ts.map +1 -0
  67. package/dist/browser-ko.ko.global.js +2 -2
  68. package/dist/browser-lazy.d.ts +52 -0
  69. package/dist/browser-lazy.d.ts.map +1 -0
  70. package/dist/browser-lazy.lazy.global.js +2 -2
  71. package/dist/browser-ms.d.ts +47 -0
  72. package/dist/browser-ms.d.ts.map +1 -0
  73. package/dist/browser-ms.ms.global.js +2 -0
  74. package/dist/browser-pl.d.ts +47 -0
  75. package/dist/browser-pl.d.ts.map +1 -0
  76. package/dist/browser-pl.pl.global.js +2 -0
  77. package/dist/browser-priority.d.ts +83 -0
  78. package/dist/browser-priority.d.ts.map +1 -0
  79. package/dist/browser-priority.priority.global.js +2 -2
  80. package/dist/browser-pt.d.ts +47 -0
  81. package/dist/browser-pt.d.ts.map +1 -0
  82. package/dist/browser-pt.pt.global.js +2 -2
  83. package/dist/browser-qu.d.ts +47 -0
  84. package/dist/browser-qu.d.ts.map +1 -0
  85. package/dist/browser-qu.qu.global.js +2 -2
  86. package/dist/browser-ru.d.ts +47 -0
  87. package/dist/browser-ru.d.ts.map +1 -0
  88. package/dist/browser-ru.ru.global.js +2 -0
  89. package/dist/browser-sw.d.ts +47 -0
  90. package/dist/browser-sw.d.ts.map +1 -0
  91. package/dist/browser-sw.sw.global.js +2 -2
  92. package/dist/browser-th.d.ts +47 -0
  93. package/dist/browser-th.d.ts.map +1 -0
  94. package/dist/browser-th.th.global.js +2 -0
  95. package/dist/browser-tl.d.ts +47 -0
  96. package/dist/browser-tl.d.ts.map +1 -0
  97. package/dist/browser-tl.tl.global.js +2 -0
  98. package/dist/browser-tr.d.ts +47 -0
  99. package/dist/browser-tr.d.ts.map +1 -0
  100. package/dist/browser-tr.tr.global.js +2 -2
  101. package/dist/browser-uk.d.ts +47 -0
  102. package/dist/browser-uk.d.ts.map +1 -0
  103. package/dist/browser-uk.uk.global.js +2 -0
  104. package/dist/browser-vi.d.ts +47 -0
  105. package/dist/browser-vi.d.ts.map +1 -0
  106. package/dist/browser-vi.vi.global.js +2 -0
  107. package/dist/browser-western.d.ts +67 -0
  108. package/dist/browser-western.d.ts.map +1 -0
  109. package/dist/browser-western.western.global.js +2 -2
  110. package/dist/browser-zh.d.ts +47 -0
  111. package/dist/browser-zh.d.ts.map +1 -0
  112. package/dist/browser-zh.zh.global.js +2 -2
  113. package/dist/browser.d.ts +69 -0
  114. package/dist/browser.d.ts.map +1 -0
  115. package/dist/browser.global.js +2 -2
  116. package/dist/browser.global.js.map +1 -1
  117. package/dist/cache/index.d.ts +7 -0
  118. package/dist/cache/index.d.ts.map +1 -0
  119. package/dist/cache/semantic-cache.d.ts +138 -0
  120. package/dist/cache/semantic-cache.d.ts.map +1 -0
  121. package/dist/core-bridge.d.ts +154 -0
  122. package/dist/core-bridge.d.ts.map +1 -0
  123. package/dist/core.d.ts +24 -1235
  124. package/dist/core.d.ts.map +1 -0
  125. package/dist/core.js +6433 -1731
  126. package/dist/core.js.map +1 -1
  127. package/dist/explicit/converter.d.ts +98 -0
  128. package/dist/explicit/converter.d.ts.map +1 -0
  129. package/dist/explicit/index.d.ts +10 -0
  130. package/dist/explicit/index.d.ts.map +1 -0
  131. package/dist/explicit/parser.d.ts +25 -0
  132. package/dist/explicit/parser.d.ts.map +1 -0
  133. package/dist/explicit/renderer.d.ts +82 -0
  134. package/dist/explicit/renderer.d.ts.map +1 -0
  135. package/dist/generators/command-schemas.d.ts +358 -0
  136. package/dist/generators/command-schemas.d.ts.map +1 -0
  137. package/dist/generators/event-handlers-sov.d.ts +91 -0
  138. package/dist/generators/event-handlers-sov.d.ts.map +1 -0
  139. package/dist/generators/event-handlers-vso.d.ts +69 -0
  140. package/dist/generators/event-handlers-vso.d.ts.map +1 -0
  141. package/dist/generators/index.d.ts +12 -0
  142. package/dist/generators/index.d.ts.map +1 -0
  143. package/dist/generators/language-profiles.d.ts +65 -0
  144. package/dist/generators/language-profiles.d.ts.map +1 -0
  145. package/dist/generators/pattern-generator.d.ts +81 -0
  146. package/dist/generators/pattern-generator.d.ts.map +1 -0
  147. package/dist/generators/profiles/arabic.d.ts +9 -0
  148. package/dist/generators/profiles/arabic.d.ts.map +1 -0
  149. package/dist/generators/profiles/bengali.d.ts +9 -0
  150. package/dist/generators/profiles/bengali.d.ts.map +1 -0
  151. package/dist/generators/profiles/chinese.d.ts +9 -0
  152. package/dist/generators/profiles/chinese.d.ts.map +1 -0
  153. package/dist/generators/profiles/english.d.ts +8 -0
  154. package/dist/generators/profiles/english.d.ts.map +1 -0
  155. package/dist/generators/profiles/french.d.ts +9 -0
  156. package/dist/generators/profiles/french.d.ts.map +1 -0
  157. package/dist/generators/profiles/german.d.ts +9 -0
  158. package/dist/generators/profiles/german.d.ts.map +1 -0
  159. package/dist/generators/profiles/hebrew.d.ts +10 -0
  160. package/dist/generators/profiles/hebrew.d.ts.map +1 -0
  161. package/dist/generators/profiles/hindi.d.ts +9 -0
  162. package/dist/generators/profiles/hindi.d.ts.map +1 -0
  163. package/dist/generators/profiles/index.d.ts +36 -0
  164. package/dist/generators/profiles/index.d.ts.map +1 -0
  165. package/dist/generators/profiles/indonesian.d.ts +9 -0
  166. package/dist/generators/profiles/indonesian.d.ts.map +1 -0
  167. package/dist/generators/profiles/italian.d.ts +10 -0
  168. package/dist/generators/profiles/italian.d.ts.map +1 -0
  169. package/dist/generators/profiles/japanese.d.ts +9 -0
  170. package/dist/generators/profiles/japanese.d.ts.map +1 -0
  171. package/dist/generators/profiles/korean.d.ts +9 -0
  172. package/dist/generators/profiles/korean.d.ts.map +1 -0
  173. package/dist/generators/profiles/marker-templates.d.ts +119 -0
  174. package/dist/generators/profiles/marker-templates.d.ts.map +1 -0
  175. package/dist/generators/profiles/ms.d.ts +8 -0
  176. package/dist/generators/profiles/ms.d.ts.map +1 -0
  177. package/dist/generators/profiles/polish.d.ts +10 -0
  178. package/dist/generators/profiles/polish.d.ts.map +1 -0
  179. package/dist/generators/profiles/portuguese.d.ts +9 -0
  180. package/dist/generators/profiles/portuguese.d.ts.map +1 -0
  181. package/dist/generators/profiles/quechua.d.ts +9 -0
  182. package/dist/generators/profiles/quechua.d.ts.map +1 -0
  183. package/dist/generators/profiles/russian.d.ts +10 -0
  184. package/dist/generators/profiles/russian.d.ts.map +1 -0
  185. package/dist/generators/profiles/spanish.d.ts +9 -0
  186. package/dist/generators/profiles/spanish.d.ts.map +1 -0
  187. package/dist/generators/profiles/spanishMexico.d.ts +19 -0
  188. package/dist/generators/profiles/spanishMexico.d.ts.map +1 -0
  189. package/dist/generators/profiles/swahili.d.ts +9 -0
  190. package/dist/generators/profiles/swahili.d.ts.map +1 -0
  191. package/dist/generators/profiles/thai.d.ts +9 -0
  192. package/dist/generators/profiles/thai.d.ts.map +1 -0
  193. package/dist/generators/profiles/tl.d.ts +8 -0
  194. package/dist/generators/profiles/tl.d.ts.map +1 -0
  195. package/dist/generators/profiles/turkish.d.ts +9 -0
  196. package/dist/generators/profiles/turkish.d.ts.map +1 -0
  197. package/dist/generators/profiles/types.d.ts +170 -0
  198. package/dist/generators/profiles/types.d.ts.map +1 -0
  199. package/dist/generators/profiles/ukrainian.d.ts +10 -0
  200. package/dist/generators/profiles/ukrainian.d.ts.map +1 -0
  201. package/dist/generators/profiles/vietnamese.d.ts +10 -0
  202. package/dist/generators/profiles/vietnamese.d.ts.map +1 -0
  203. package/dist/generators/schema-error-codes.d.ts +60 -0
  204. package/dist/generators/schema-error-codes.d.ts.map +1 -0
  205. package/dist/generators/schema-validator.d.ts +77 -0
  206. package/dist/generators/schema-validator.d.ts.map +1 -0
  207. package/dist/index.cjs +5451 -2522
  208. package/dist/index.cjs.map +1 -1
  209. package/dist/index.d.ts +50 -3436
  210. package/dist/index.d.ts.map +1 -0
  211. package/dist/index.js +5448 -2526
  212. package/dist/index.js.map +1 -1
  213. package/dist/interchange/from-semantic.d.ts +23 -0
  214. package/dist/interchange/from-semantic.d.ts.map +1 -0
  215. package/dist/interchange/index.d.ts +7 -0
  216. package/dist/interchange/index.d.ts.map +1 -0
  217. package/dist/interchange/types.d.ts +132 -0
  218. package/dist/interchange/types.d.ts.map +1 -0
  219. package/dist/language-building-schema.d.ts +163 -0
  220. package/dist/language-building-schema.d.ts.map +1 -0
  221. package/dist/language-loader.d.ts +126 -0
  222. package/dist/language-loader.d.ts.map +1 -0
  223. package/dist/languages/_all.d.ts +66 -0
  224. package/dist/languages/_all.d.ts.map +1 -0
  225. package/dist/languages/ar.d.ts +6 -75
  226. package/dist/languages/ar.d.ts.map +1 -0
  227. package/dist/languages/ar.js +65 -14
  228. package/dist/languages/ar.js.map +1 -1
  229. package/dist/languages/bn.d.ts +10 -0
  230. package/dist/languages/bn.d.ts.map +1 -0
  231. package/dist/languages/bn.js +1163 -0
  232. package/dist/languages/bn.js.map +1 -0
  233. package/dist/languages/de.d.ts +6 -35
  234. package/dist/languages/de.d.ts.map +1 -0
  235. package/dist/languages/de.js +260 -22
  236. package/dist/languages/de.js.map +1 -1
  237. package/dist/languages/en.d.ts +13 -40
  238. package/dist/languages/en.d.ts.map +1 -0
  239. package/dist/languages/en.js +788 -241
  240. package/dist/languages/en.js.map +1 -1
  241. package/dist/languages/es-MX.d.ts +24 -0
  242. package/dist/languages/es-MX.d.ts.map +1 -0
  243. package/dist/languages/es-MX.js +1729 -0
  244. package/dist/languages/es-MX.js.map +1 -0
  245. package/dist/languages/es.d.ts +6 -49
  246. package/dist/languages/es.d.ts.map +1 -0
  247. package/dist/languages/es.js +60 -13
  248. package/dist/languages/es.js.map +1 -1
  249. package/dist/languages/fr.d.ts +6 -34
  250. package/dist/languages/fr.d.ts.map +1 -0
  251. package/dist/languages/fr.js +309 -22
  252. package/dist/languages/fr.js.map +1 -1
  253. package/dist/languages/he.d.ts +9 -0
  254. package/dist/languages/he.d.ts.map +1 -0
  255. package/dist/languages/he.js +1378 -0
  256. package/dist/languages/he.js.map +1 -0
  257. package/dist/languages/hi.d.ts +18 -0
  258. package/dist/languages/hi.d.ts.map +1 -0
  259. package/dist/languages/hi.js +1209 -0
  260. package/dist/languages/hi.js.map +1 -0
  261. package/dist/languages/id.d.ts +6 -32
  262. package/dist/languages/id.d.ts.map +1 -0
  263. package/dist/languages/id.js +60 -13
  264. package/dist/languages/id.js.map +1 -1
  265. package/dist/languages/index.d.ts +18 -0
  266. package/dist/languages/index.d.ts.map +1 -0
  267. package/dist/languages/it.d.ts +9 -0
  268. package/dist/languages/it.d.ts.map +1 -0
  269. package/dist/languages/it.js +1647 -0
  270. package/dist/languages/it.js.map +1 -0
  271. package/dist/languages/ja.d.ts +6 -50
  272. package/dist/languages/ja.d.ts.map +1 -0
  273. package/dist/languages/ja.js +60 -13
  274. package/dist/languages/ja.js.map +1 -1
  275. package/dist/languages/ko.d.ts +6 -55
  276. package/dist/languages/ko.d.ts.map +1 -0
  277. package/dist/languages/ko.js +64 -13
  278. package/dist/languages/ko.js.map +1 -1
  279. package/dist/languages/ms.d.ts +10 -0
  280. package/dist/languages/ms.d.ts.map +1 -0
  281. package/dist/languages/ms.js +1088 -0
  282. package/dist/languages/ms.js.map +1 -0
  283. package/dist/languages/pl.d.ts +12 -0
  284. package/dist/languages/pl.d.ts.map +1 -0
  285. package/dist/languages/pl.js +1586 -0
  286. package/dist/languages/pl.js.map +1 -0
  287. package/dist/languages/pt.d.ts +6 -34
  288. package/dist/languages/pt.d.ts.map +1 -0
  289. package/dist/languages/pt.js +344 -22
  290. package/dist/languages/pt.js.map +1 -1
  291. package/dist/languages/qu.d.ts +6 -44
  292. package/dist/languages/qu.d.ts.map +1 -0
  293. package/dist/languages/qu.js +105 -28
  294. package/dist/languages/qu.js.map +1 -1
  295. package/dist/languages/ru.d.ts +18 -0
  296. package/dist/languages/ru.d.ts.map +1 -0
  297. package/dist/languages/ru.js +1705 -0
  298. package/dist/languages/ru.js.map +1 -0
  299. package/dist/languages/sw.d.ts +6 -32
  300. package/dist/languages/sw.d.ts.map +1 -0
  301. package/dist/languages/sw.js +69 -17
  302. package/dist/languages/sw.js.map +1 -1
  303. package/dist/languages/th.d.ts +10 -0
  304. package/dist/languages/th.d.ts.map +1 -0
  305. package/dist/languages/th.js +1123 -0
  306. package/dist/languages/th.js.map +1 -0
  307. package/dist/languages/tl.d.ts +10 -0
  308. package/dist/languages/tl.d.ts.map +1 -0
  309. package/dist/languages/tl.js +1086 -0
  310. package/dist/languages/tl.js.map +1 -0
  311. package/dist/languages/tr.d.ts +6 -50
  312. package/dist/languages/tr.d.ts.map +1 -0
  313. package/dist/languages/tr.js +67 -16
  314. package/dist/languages/tr.js.map +1 -1
  315. package/dist/languages/uk.d.ts +18 -0
  316. package/dist/languages/uk.d.ts.map +1 -0
  317. package/dist/languages/uk.js +1691 -0
  318. package/dist/languages/uk.js.map +1 -0
  319. package/dist/languages/vi.d.ts +10 -0
  320. package/dist/languages/vi.d.ts.map +1 -0
  321. package/dist/languages/vi.js +1266 -0
  322. package/dist/languages/vi.js.map +1 -0
  323. package/dist/languages/zh.d.ts +6 -55
  324. package/dist/languages/zh.d.ts.map +1 -0
  325. package/dist/languages/zh.js +59 -13
  326. package/dist/languages/zh.js.map +1 -1
  327. package/dist/parser/index.d.ts +8 -0
  328. package/dist/parser/index.d.ts.map +1 -0
  329. package/dist/parser/pattern-matcher.d.ts +188 -0
  330. package/dist/parser/pattern-matcher.d.ts.map +1 -0
  331. package/dist/parser/semantic-parser.d.ts +238 -0
  332. package/dist/parser/semantic-parser.d.ts.map +1 -0
  333. package/dist/parser/utils/index.d.ts +9 -0
  334. package/dist/parser/utils/index.d.ts.map +1 -0
  335. package/dist/parser/utils/marker-resolution.d.ts +57 -0
  336. package/dist/parser/utils/marker-resolution.d.ts.map +1 -0
  337. package/dist/parser/utils/possessive-keywords.d.ts +31 -0
  338. package/dist/parser/utils/possessive-keywords.d.ts.map +1 -0
  339. package/dist/parser/utils/role-positioning.d.ts +42 -0
  340. package/dist/parser/utils/role-positioning.d.ts.map +1 -0
  341. package/dist/parser/utils/type-validation.d.ts +63 -0
  342. package/dist/parser/utils/type-validation.d.ts.map +1 -0
  343. package/dist/patterns/add/ar.d.ts +12 -0
  344. package/dist/patterns/add/ar.d.ts.map +1 -0
  345. package/dist/patterns/add/bn.d.ts +8 -0
  346. package/dist/patterns/add/bn.d.ts.map +1 -0
  347. package/dist/patterns/add/hi.d.ts +8 -0
  348. package/dist/patterns/add/hi.d.ts.map +1 -0
  349. package/dist/patterns/add/index.d.ts +31 -0
  350. package/dist/patterns/add/index.d.ts.map +1 -0
  351. package/dist/patterns/add/it.d.ts +11 -0
  352. package/dist/patterns/add/it.d.ts.map +1 -0
  353. package/dist/patterns/add/ja.d.ts +12 -0
  354. package/dist/patterns/add/ja.d.ts.map +1 -0
  355. package/dist/patterns/add/ko.d.ts +12 -0
  356. package/dist/patterns/add/ko.d.ts.map +1 -0
  357. package/dist/patterns/add/pl.d.ts +12 -0
  358. package/dist/patterns/add/pl.d.ts.map +1 -0
  359. package/dist/patterns/add/qu.d.ts +9 -0
  360. package/dist/patterns/add/qu.d.ts.map +1 -0
  361. package/dist/patterns/add/ru.d.ts +12 -0
  362. package/dist/patterns/add/ru.d.ts.map +1 -0
  363. package/dist/patterns/add/th.d.ts +8 -0
  364. package/dist/patterns/add/th.d.ts.map +1 -0
  365. package/dist/patterns/add/tr.d.ts +12 -0
  366. package/dist/patterns/add/tr.d.ts.map +1 -0
  367. package/dist/patterns/add/uk.d.ts +12 -0
  368. package/dist/patterns/add/uk.d.ts.map +1 -0
  369. package/dist/patterns/add/vi.d.ts +11 -0
  370. package/dist/patterns/add/vi.d.ts.map +1 -0
  371. package/dist/patterns/add/zh.d.ts +12 -0
  372. package/dist/patterns/add/zh.d.ts.map +1 -0
  373. package/dist/patterns/builders.d.ts +52 -0
  374. package/dist/patterns/builders.d.ts.map +1 -0
  375. package/dist/patterns/decrement/bn.d.ts +8 -0
  376. package/dist/patterns/decrement/bn.d.ts.map +1 -0
  377. package/dist/patterns/decrement/de.d.ts +12 -0
  378. package/dist/patterns/decrement/de.d.ts.map +1 -0
  379. package/dist/patterns/decrement/hi.d.ts +8 -0
  380. package/dist/patterns/decrement/hi.d.ts.map +1 -0
  381. package/dist/patterns/decrement/index.d.ts +28 -0
  382. package/dist/patterns/decrement/index.d.ts.map +1 -0
  383. package/dist/patterns/decrement/it.d.ts +11 -0
  384. package/dist/patterns/decrement/it.d.ts.map +1 -0
  385. package/dist/patterns/decrement/pl.d.ts +12 -0
  386. package/dist/patterns/decrement/pl.d.ts.map +1 -0
  387. package/dist/patterns/decrement/ru.d.ts +12 -0
  388. package/dist/patterns/decrement/ru.d.ts.map +1 -0
  389. package/dist/patterns/decrement/th.d.ts +8 -0
  390. package/dist/patterns/decrement/th.d.ts.map +1 -0
  391. package/dist/patterns/decrement/tr.d.ts +12 -0
  392. package/dist/patterns/decrement/tr.d.ts.map +1 -0
  393. package/dist/patterns/decrement/uk.d.ts +12 -0
  394. package/dist/patterns/decrement/uk.d.ts.map +1 -0
  395. package/dist/patterns/decrement/vi.d.ts +11 -0
  396. package/dist/patterns/decrement/vi.d.ts.map +1 -0
  397. package/dist/patterns/decrement/zh.d.ts +12 -0
  398. package/dist/patterns/decrement/zh.d.ts.map +1 -0
  399. package/dist/patterns/en.d.ts +13 -0
  400. package/dist/patterns/en.d.ts.map +1 -0
  401. package/dist/patterns/event-handler/ar.d.ts +12 -0
  402. package/dist/patterns/event-handler/ar.d.ts.map +1 -0
  403. package/dist/patterns/event-handler/bn.d.ts +8 -0
  404. package/dist/patterns/event-handler/bn.d.ts.map +1 -0
  405. package/dist/patterns/event-handler/de.d.ts +11 -0
  406. package/dist/patterns/event-handler/de.d.ts.map +1 -0
  407. package/dist/patterns/event-handler/en.d.ts +11 -0
  408. package/dist/patterns/event-handler/en.d.ts.map +1 -0
  409. package/dist/patterns/event-handler/es.d.ts +11 -0
  410. package/dist/patterns/event-handler/es.d.ts.map +1 -0
  411. package/dist/patterns/event-handler/fr.d.ts +11 -0
  412. package/dist/patterns/event-handler/fr.d.ts.map +1 -0
  413. package/dist/patterns/event-handler/he.d.ts +12 -0
  414. package/dist/patterns/event-handler/he.d.ts.map +1 -0
  415. package/dist/patterns/event-handler/hi.d.ts +9 -0
  416. package/dist/patterns/event-handler/hi.d.ts.map +1 -0
  417. package/dist/patterns/event-handler/id.d.ts +11 -0
  418. package/dist/patterns/event-handler/id.d.ts.map +1 -0
  419. package/dist/patterns/event-handler/index.d.ts +41 -0
  420. package/dist/patterns/event-handler/index.d.ts.map +1 -0
  421. package/dist/patterns/event-handler/it.d.ts +11 -0
  422. package/dist/patterns/event-handler/it.d.ts.map +1 -0
  423. package/dist/patterns/event-handler/ja.d.ts +12 -0
  424. package/dist/patterns/event-handler/ja.d.ts.map +1 -0
  425. package/dist/patterns/event-handler/ko.d.ts +12 -0
  426. package/dist/patterns/event-handler/ko.d.ts.map +1 -0
  427. package/dist/patterns/event-handler/ms.d.ts +14 -0
  428. package/dist/patterns/event-handler/ms.d.ts.map +1 -0
  429. package/dist/patterns/event-handler/pl.d.ts +12 -0
  430. package/dist/patterns/event-handler/pl.d.ts.map +1 -0
  431. package/dist/patterns/event-handler/pt.d.ts +11 -0
  432. package/dist/patterns/event-handler/pt.d.ts.map +1 -0
  433. package/dist/patterns/event-handler/qu.d.ts +11 -0
  434. package/dist/patterns/event-handler/qu.d.ts.map +1 -0
  435. package/dist/patterns/event-handler/ru.d.ts +12 -0
  436. package/dist/patterns/event-handler/ru.d.ts.map +1 -0
  437. package/dist/patterns/event-handler/shared.d.ts +15 -0
  438. package/dist/patterns/event-handler/shared.d.ts.map +1 -0
  439. package/dist/patterns/event-handler/sw.d.ts +11 -0
  440. package/dist/patterns/event-handler/sw.d.ts.map +1 -0
  441. package/dist/patterns/event-handler/th.d.ts +8 -0
  442. package/dist/patterns/event-handler/th.d.ts.map +1 -0
  443. package/dist/patterns/event-handler/tl.d.ts +9 -0
  444. package/dist/patterns/event-handler/tl.d.ts.map +1 -0
  445. package/dist/patterns/event-handler/tr.d.ts +12 -0
  446. package/dist/patterns/event-handler/tr.d.ts.map +1 -0
  447. package/dist/patterns/event-handler/uk.d.ts +12 -0
  448. package/dist/patterns/event-handler/uk.d.ts.map +1 -0
  449. package/dist/patterns/event-handler/vi.d.ts +11 -0
  450. package/dist/patterns/event-handler/vi.d.ts.map +1 -0
  451. package/dist/patterns/event-handler/zh.d.ts +11 -0
  452. package/dist/patterns/event-handler/zh.d.ts.map +1 -0
  453. package/dist/patterns/get/ar.d.ts +12 -0
  454. package/dist/patterns/get/ar.d.ts.map +1 -0
  455. package/dist/patterns/get/bn.d.ts +8 -0
  456. package/dist/patterns/get/bn.d.ts.map +1 -0
  457. package/dist/patterns/get/de.d.ts +12 -0
  458. package/dist/patterns/get/de.d.ts.map +1 -0
  459. package/dist/patterns/get/hi.d.ts +8 -0
  460. package/dist/patterns/get/hi.d.ts.map +1 -0
  461. package/dist/patterns/get/index.d.ts +29 -0
  462. package/dist/patterns/get/index.d.ts.map +1 -0
  463. package/dist/patterns/get/it.d.ts +11 -0
  464. package/dist/patterns/get/it.d.ts.map +1 -0
  465. package/dist/patterns/get/ja.d.ts +12 -0
  466. package/dist/patterns/get/ja.d.ts.map +1 -0
  467. package/dist/patterns/get/ko.d.ts +12 -0
  468. package/dist/patterns/get/ko.d.ts.map +1 -0
  469. package/dist/patterns/get/pl.d.ts +12 -0
  470. package/dist/patterns/get/pl.d.ts.map +1 -0
  471. package/dist/patterns/get/ru.d.ts +12 -0
  472. package/dist/patterns/get/ru.d.ts.map +1 -0
  473. package/dist/patterns/get/th.d.ts +8 -0
  474. package/dist/patterns/get/th.d.ts.map +1 -0
  475. package/dist/patterns/get/uk.d.ts +12 -0
  476. package/dist/patterns/get/uk.d.ts.map +1 -0
  477. package/dist/patterns/get/vi.d.ts +11 -0
  478. package/dist/patterns/get/vi.d.ts.map +1 -0
  479. package/dist/patterns/grammar-transformed/index.d.ts +20 -0
  480. package/dist/patterns/grammar-transformed/index.d.ts.map +1 -0
  481. package/dist/patterns/grammar-transformed/ja.d.ts +12 -0
  482. package/dist/patterns/grammar-transformed/ja.d.ts.map +1 -0
  483. package/dist/patterns/grammar-transformed/ko.d.ts +12 -0
  484. package/dist/patterns/grammar-transformed/ko.d.ts.map +1 -0
  485. package/dist/patterns/grammar-transformed/tr.d.ts +12 -0
  486. package/dist/patterns/grammar-transformed/tr.d.ts.map +1 -0
  487. package/dist/patterns/hide/ar.d.ts +12 -0
  488. package/dist/patterns/hide/ar.d.ts.map +1 -0
  489. package/dist/patterns/hide/bn.d.ts +8 -0
  490. package/dist/patterns/hide/bn.d.ts.map +1 -0
  491. package/dist/patterns/hide/de.d.ts +12 -0
  492. package/dist/patterns/hide/de.d.ts.map +1 -0
  493. package/dist/patterns/hide/hi.d.ts +8 -0
  494. package/dist/patterns/hide/hi.d.ts.map +1 -0
  495. package/dist/patterns/hide/index.d.ts +31 -0
  496. package/dist/patterns/hide/index.d.ts.map +1 -0
  497. package/dist/patterns/hide/it.d.ts +11 -0
  498. package/dist/patterns/hide/it.d.ts.map +1 -0
  499. package/dist/patterns/hide/ja.d.ts +12 -0
  500. package/dist/patterns/hide/ja.d.ts.map +1 -0
  501. package/dist/patterns/hide/ko.d.ts +12 -0
  502. package/dist/patterns/hide/ko.d.ts.map +1 -0
  503. package/dist/patterns/hide/pl.d.ts +12 -0
  504. package/dist/patterns/hide/pl.d.ts.map +1 -0
  505. package/dist/patterns/hide/ru.d.ts +12 -0
  506. package/dist/patterns/hide/ru.d.ts.map +1 -0
  507. package/dist/patterns/hide/th.d.ts +8 -0
  508. package/dist/patterns/hide/th.d.ts.map +1 -0
  509. package/dist/patterns/hide/tr.d.ts +12 -0
  510. package/dist/patterns/hide/tr.d.ts.map +1 -0
  511. package/dist/patterns/hide/uk.d.ts +12 -0
  512. package/dist/patterns/hide/uk.d.ts.map +1 -0
  513. package/dist/patterns/hide/vi.d.ts +11 -0
  514. package/dist/patterns/hide/vi.d.ts.map +1 -0
  515. package/dist/patterns/hide/zh.d.ts +12 -0
  516. package/dist/patterns/hide/zh.d.ts.map +1 -0
  517. package/dist/patterns/increment/bn.d.ts +8 -0
  518. package/dist/patterns/increment/bn.d.ts.map +1 -0
  519. package/dist/patterns/increment/de.d.ts +12 -0
  520. package/dist/patterns/increment/de.d.ts.map +1 -0
  521. package/dist/patterns/increment/hi.d.ts +8 -0
  522. package/dist/patterns/increment/hi.d.ts.map +1 -0
  523. package/dist/patterns/increment/index.d.ts +28 -0
  524. package/dist/patterns/increment/index.d.ts.map +1 -0
  525. package/dist/patterns/increment/it.d.ts +11 -0
  526. package/dist/patterns/increment/it.d.ts.map +1 -0
  527. package/dist/patterns/increment/pl.d.ts +12 -0
  528. package/dist/patterns/increment/pl.d.ts.map +1 -0
  529. package/dist/patterns/increment/ru.d.ts +12 -0
  530. package/dist/patterns/increment/ru.d.ts.map +1 -0
  531. package/dist/patterns/increment/th.d.ts +8 -0
  532. package/dist/patterns/increment/th.d.ts.map +1 -0
  533. package/dist/patterns/increment/tr.d.ts +12 -0
  534. package/dist/patterns/increment/tr.d.ts.map +1 -0
  535. package/dist/patterns/increment/uk.d.ts +12 -0
  536. package/dist/patterns/increment/uk.d.ts.map +1 -0
  537. package/dist/patterns/increment/vi.d.ts +11 -0
  538. package/dist/patterns/increment/vi.d.ts.map +1 -0
  539. package/dist/patterns/increment/zh.d.ts +12 -0
  540. package/dist/patterns/increment/zh.d.ts.map +1 -0
  541. package/dist/patterns/index.d.ts +21 -0
  542. package/dist/patterns/index.d.ts.map +1 -0
  543. package/dist/patterns/languages/en/control-flow.d.ts +40 -0
  544. package/dist/patterns/languages/en/control-flow.d.ts.map +1 -0
  545. package/dist/patterns/languages/en/fetch.d.ts +22 -0
  546. package/dist/patterns/languages/en/fetch.d.ts.map +1 -0
  547. package/dist/patterns/languages/en/index.d.ts +22 -0
  548. package/dist/patterns/languages/en/index.d.ts.map +1 -0
  549. package/dist/patterns/languages/en/repeat.d.ts +22 -0
  550. package/dist/patterns/languages/en/repeat.d.ts.map +1 -0
  551. package/dist/patterns/languages/en/set.d.ts +23 -0
  552. package/dist/patterns/languages/en/set.d.ts.map +1 -0
  553. package/dist/patterns/languages/en/swap.d.ts +19 -0
  554. package/dist/patterns/languages/en/swap.d.ts.map +1 -0
  555. package/dist/patterns/languages/en/temporal.d.ts +24 -0
  556. package/dist/patterns/languages/en/temporal.d.ts.map +1 -0
  557. package/dist/patterns/put/ar.d.ts +12 -0
  558. package/dist/patterns/put/ar.d.ts.map +1 -0
  559. package/dist/patterns/put/bn.d.ts +8 -0
  560. package/dist/patterns/put/bn.d.ts.map +1 -0
  561. package/dist/patterns/put/en.d.ts +11 -0
  562. package/dist/patterns/put/en.d.ts.map +1 -0
  563. package/dist/patterns/put/es.d.ts +11 -0
  564. package/dist/patterns/put/es.d.ts.map +1 -0
  565. package/dist/patterns/put/hi.d.ts +8 -0
  566. package/dist/patterns/put/hi.d.ts.map +1 -0
  567. package/dist/patterns/put/id.d.ts +15 -0
  568. package/dist/patterns/put/id.d.ts.map +1 -0
  569. package/dist/patterns/put/index.d.ts +33 -0
  570. package/dist/patterns/put/index.d.ts.map +1 -0
  571. package/dist/patterns/put/it.d.ts +11 -0
  572. package/dist/patterns/put/it.d.ts.map +1 -0
  573. package/dist/patterns/put/ja.d.ts +12 -0
  574. package/dist/patterns/put/ja.d.ts.map +1 -0
  575. package/dist/patterns/put/ko.d.ts +12 -0
  576. package/dist/patterns/put/ko.d.ts.map +1 -0
  577. package/dist/patterns/put/pl.d.ts +12 -0
  578. package/dist/patterns/put/pl.d.ts.map +1 -0
  579. package/dist/patterns/put/ru.d.ts +12 -0
  580. package/dist/patterns/put/ru.d.ts.map +1 -0
  581. package/dist/patterns/put/th.d.ts +8 -0
  582. package/dist/patterns/put/th.d.ts.map +1 -0
  583. package/dist/patterns/put/tr.d.ts +12 -0
  584. package/dist/patterns/put/tr.d.ts.map +1 -0
  585. package/dist/patterns/put/uk.d.ts +12 -0
  586. package/dist/patterns/put/uk.d.ts.map +1 -0
  587. package/dist/patterns/put/vi.d.ts +11 -0
  588. package/dist/patterns/put/vi.d.ts.map +1 -0
  589. package/dist/patterns/put/zh.d.ts +12 -0
  590. package/dist/patterns/put/zh.d.ts.map +1 -0
  591. package/dist/patterns/registry.d.ts +53 -0
  592. package/dist/patterns/registry.d.ts.map +1 -0
  593. package/dist/patterns/remove/ar.d.ts +12 -0
  594. package/dist/patterns/remove/ar.d.ts.map +1 -0
  595. package/dist/patterns/remove/bn.d.ts +8 -0
  596. package/dist/patterns/remove/bn.d.ts.map +1 -0
  597. package/dist/patterns/remove/hi.d.ts +8 -0
  598. package/dist/patterns/remove/hi.d.ts.map +1 -0
  599. package/dist/patterns/remove/index.d.ts +31 -0
  600. package/dist/patterns/remove/index.d.ts.map +1 -0
  601. package/dist/patterns/remove/it.d.ts +11 -0
  602. package/dist/patterns/remove/it.d.ts.map +1 -0
  603. package/dist/patterns/remove/ja.d.ts +12 -0
  604. package/dist/patterns/remove/ja.d.ts.map +1 -0
  605. package/dist/patterns/remove/ko.d.ts +12 -0
  606. package/dist/patterns/remove/ko.d.ts.map +1 -0
  607. package/dist/patterns/remove/pl.d.ts +12 -0
  608. package/dist/patterns/remove/pl.d.ts.map +1 -0
  609. package/dist/patterns/remove/qu.d.ts +9 -0
  610. package/dist/patterns/remove/qu.d.ts.map +1 -0
  611. package/dist/patterns/remove/ru.d.ts +12 -0
  612. package/dist/patterns/remove/ru.d.ts.map +1 -0
  613. package/dist/patterns/remove/th.d.ts +8 -0
  614. package/dist/patterns/remove/th.d.ts.map +1 -0
  615. package/dist/patterns/remove/tr.d.ts +12 -0
  616. package/dist/patterns/remove/tr.d.ts.map +1 -0
  617. package/dist/patterns/remove/uk.d.ts +12 -0
  618. package/dist/patterns/remove/uk.d.ts.map +1 -0
  619. package/dist/patterns/remove/vi.d.ts +11 -0
  620. package/dist/patterns/remove/vi.d.ts.map +1 -0
  621. package/dist/patterns/remove/zh.d.ts +12 -0
  622. package/dist/patterns/remove/zh.d.ts.map +1 -0
  623. package/dist/patterns/set/ar.d.ts +12 -0
  624. package/dist/patterns/set/ar.d.ts.map +1 -0
  625. package/dist/patterns/set/bn.d.ts +8 -0
  626. package/dist/patterns/set/bn.d.ts.map +1 -0
  627. package/dist/patterns/set/de.d.ts +12 -0
  628. package/dist/patterns/set/de.d.ts.map +1 -0
  629. package/dist/patterns/set/es.d.ts +12 -0
  630. package/dist/patterns/set/es.d.ts.map +1 -0
  631. package/dist/patterns/set/fr.d.ts +12 -0
  632. package/dist/patterns/set/fr.d.ts.map +1 -0
  633. package/dist/patterns/set/hi.d.ts +8 -0
  634. package/dist/patterns/set/hi.d.ts.map +1 -0
  635. package/dist/patterns/set/id.d.ts +12 -0
  636. package/dist/patterns/set/id.d.ts.map +1 -0
  637. package/dist/patterns/set/index.d.ts +35 -0
  638. package/dist/patterns/set/index.d.ts.map +1 -0
  639. package/dist/patterns/set/it.d.ts +11 -0
  640. package/dist/patterns/set/it.d.ts.map +1 -0
  641. package/dist/patterns/set/ja.d.ts +12 -0
  642. package/dist/patterns/set/ja.d.ts.map +1 -0
  643. package/dist/patterns/set/ko.d.ts +12 -0
  644. package/dist/patterns/set/ko.d.ts.map +1 -0
  645. package/dist/patterns/set/pl.d.ts +12 -0
  646. package/dist/patterns/set/pl.d.ts.map +1 -0
  647. package/dist/patterns/set/pt.d.ts +12 -0
  648. package/dist/patterns/set/pt.d.ts.map +1 -0
  649. package/dist/patterns/set/ru.d.ts +12 -0
  650. package/dist/patterns/set/ru.d.ts.map +1 -0
  651. package/dist/patterns/set/th.d.ts +8 -0
  652. package/dist/patterns/set/th.d.ts.map +1 -0
  653. package/dist/patterns/set/tr.d.ts +12 -0
  654. package/dist/patterns/set/tr.d.ts.map +1 -0
  655. package/dist/patterns/set/uk.d.ts +12 -0
  656. package/dist/patterns/set/uk.d.ts.map +1 -0
  657. package/dist/patterns/set/vi.d.ts +11 -0
  658. package/dist/patterns/set/vi.d.ts.map +1 -0
  659. package/dist/patterns/set/zh.d.ts +12 -0
  660. package/dist/patterns/set/zh.d.ts.map +1 -0
  661. package/dist/patterns/show/ar.d.ts +12 -0
  662. package/dist/patterns/show/ar.d.ts.map +1 -0
  663. package/dist/patterns/show/bn.d.ts +8 -0
  664. package/dist/patterns/show/bn.d.ts.map +1 -0
  665. package/dist/patterns/show/de.d.ts +12 -0
  666. package/dist/patterns/show/de.d.ts.map +1 -0
  667. package/dist/patterns/show/fr.d.ts +12 -0
  668. package/dist/patterns/show/fr.d.ts.map +1 -0
  669. package/dist/patterns/show/hi.d.ts +8 -0
  670. package/dist/patterns/show/hi.d.ts.map +1 -0
  671. package/dist/patterns/show/index.d.ts +32 -0
  672. package/dist/patterns/show/index.d.ts.map +1 -0
  673. package/dist/patterns/show/it.d.ts +11 -0
  674. package/dist/patterns/show/it.d.ts.map +1 -0
  675. package/dist/patterns/show/ja.d.ts +12 -0
  676. package/dist/patterns/show/ja.d.ts.map +1 -0
  677. package/dist/patterns/show/ko.d.ts +12 -0
  678. package/dist/patterns/show/ko.d.ts.map +1 -0
  679. package/dist/patterns/show/pl.d.ts +12 -0
  680. package/dist/patterns/show/pl.d.ts.map +1 -0
  681. package/dist/patterns/show/ru.d.ts +12 -0
  682. package/dist/patterns/show/ru.d.ts.map +1 -0
  683. package/dist/patterns/show/th.d.ts +8 -0
  684. package/dist/patterns/show/th.d.ts.map +1 -0
  685. package/dist/patterns/show/tr.d.ts +12 -0
  686. package/dist/patterns/show/tr.d.ts.map +1 -0
  687. package/dist/patterns/show/uk.d.ts +12 -0
  688. package/dist/patterns/show/uk.d.ts.map +1 -0
  689. package/dist/patterns/show/vi.d.ts +11 -0
  690. package/dist/patterns/show/vi.d.ts.map +1 -0
  691. package/dist/patterns/show/zh.d.ts +12 -0
  692. package/dist/patterns/show/zh.d.ts.map +1 -0
  693. package/dist/patterns/take/ar.d.ts +12 -0
  694. package/dist/patterns/take/ar.d.ts.map +1 -0
  695. package/dist/patterns/take/index.d.ts +18 -0
  696. package/dist/patterns/take/index.d.ts.map +1 -0
  697. package/dist/patterns/toggle/ar.d.ts +12 -0
  698. package/dist/patterns/toggle/ar.d.ts.map +1 -0
  699. package/dist/patterns/toggle/bn.d.ts +8 -0
  700. package/dist/patterns/toggle/bn.d.ts.map +1 -0
  701. package/dist/patterns/toggle/en.d.ts +11 -0
  702. package/dist/patterns/toggle/en.d.ts.map +1 -0
  703. package/dist/patterns/toggle/es.d.ts +11 -0
  704. package/dist/patterns/toggle/es.d.ts.map +1 -0
  705. package/dist/patterns/toggle/hi.d.ts +9 -0
  706. package/dist/patterns/toggle/hi.d.ts.map +1 -0
  707. package/dist/patterns/toggle/index.d.ts +33 -0
  708. package/dist/patterns/toggle/index.d.ts.map +1 -0
  709. package/dist/patterns/toggle/it.d.ts +11 -0
  710. package/dist/patterns/toggle/it.d.ts.map +1 -0
  711. package/dist/patterns/toggle/ja.d.ts +12 -0
  712. package/dist/patterns/toggle/ja.d.ts.map +1 -0
  713. package/dist/patterns/toggle/ko.d.ts +12 -0
  714. package/dist/patterns/toggle/ko.d.ts.map +1 -0
  715. package/dist/patterns/toggle/pl.d.ts +12 -0
  716. package/dist/patterns/toggle/pl.d.ts.map +1 -0
  717. package/dist/patterns/toggle/qu.d.ts +9 -0
  718. package/dist/patterns/toggle/qu.d.ts.map +1 -0
  719. package/dist/patterns/toggle/ru.d.ts +12 -0
  720. package/dist/patterns/toggle/ru.d.ts.map +1 -0
  721. package/dist/patterns/toggle/th.d.ts +9 -0
  722. package/dist/patterns/toggle/th.d.ts.map +1 -0
  723. package/dist/patterns/toggle/tr.d.ts +12 -0
  724. package/dist/patterns/toggle/tr.d.ts.map +1 -0
  725. package/dist/patterns/toggle/uk.d.ts +12 -0
  726. package/dist/patterns/toggle/uk.d.ts.map +1 -0
  727. package/dist/patterns/toggle/vi.d.ts +11 -0
  728. package/dist/patterns/toggle/vi.d.ts.map +1 -0
  729. package/dist/patterns/toggle/zh.d.ts +11 -0
  730. package/dist/patterns/toggle/zh.d.ts.map +1 -0
  731. package/dist/public-api.d.ts +190 -0
  732. package/dist/public-api.d.ts.map +1 -0
  733. package/dist/registry.d.ts +225 -0
  734. package/dist/registry.d.ts.map +1 -0
  735. package/dist/tokenizers/arabic.d.ts +67 -0
  736. package/dist/tokenizers/arabic.d.ts.map +1 -0
  737. package/dist/tokenizers/base-tokenizer.d.ts +240 -0
  738. package/dist/tokenizers/base-tokenizer.d.ts.map +1 -0
  739. package/dist/tokenizers/base.d.ts +14 -0
  740. package/dist/tokenizers/base.d.ts.map +1 -0
  741. package/dist/tokenizers/bengali.d.ts +22 -0
  742. package/dist/tokenizers/bengali.d.ts.map +1 -0
  743. package/dist/tokenizers/char-classifiers.d.ts +56 -0
  744. package/dist/tokenizers/char-classifiers.d.ts.map +1 -0
  745. package/dist/tokenizers/chinese.d.ts +47 -0
  746. package/dist/tokenizers/chinese.d.ts.map +1 -0
  747. package/dist/tokenizers/english.d.ts +34 -0
  748. package/dist/tokenizers/english.d.ts.map +1 -0
  749. package/dist/tokenizers/extractors.d.ts +61 -0
  750. package/dist/tokenizers/extractors.d.ts.map +1 -0
  751. package/dist/tokenizers/french.d.ts +26 -0
  752. package/dist/tokenizers/french.d.ts.map +1 -0
  753. package/dist/tokenizers/german.d.ts +27 -0
  754. package/dist/tokenizers/german.d.ts.map +1 -0
  755. package/dist/tokenizers/he.d.ts +58 -0
  756. package/dist/tokenizers/he.d.ts.map +1 -0
  757. package/dist/tokenizers/hindi.d.ts +25 -0
  758. package/dist/tokenizers/hindi.d.ts.map +1 -0
  759. package/dist/tokenizers/index.d.ts +64 -0
  760. package/dist/tokenizers/index.d.ts.map +1 -0
  761. package/dist/tokenizers/indonesian.d.ts +24 -0
  762. package/dist/tokenizers/indonesian.d.ts.map +1 -0
  763. package/dist/tokenizers/italian.d.ts +41 -0
  764. package/dist/tokenizers/italian.d.ts.map +1 -0
  765. package/dist/tokenizers/japanese.d.ts +42 -0
  766. package/dist/tokenizers/japanese.d.ts.map +1 -0
  767. package/dist/tokenizers/korean.d.ts +47 -0
  768. package/dist/tokenizers/korean.d.ts.map +1 -0
  769. package/dist/tokenizers/morphology/arabic-normalizer.d.ts +37 -0
  770. package/dist/tokenizers/morphology/arabic-normalizer.d.ts.map +1 -0
  771. package/dist/tokenizers/morphology/french-normalizer.d.ts +46 -0
  772. package/dist/tokenizers/morphology/french-normalizer.d.ts.map +1 -0
  773. package/dist/tokenizers/morphology/german-normalizer.d.ts +55 -0
  774. package/dist/tokenizers/morphology/german-normalizer.d.ts.map +1 -0
  775. package/dist/tokenizers/morphology/index.d.ts +20 -0
  776. package/dist/tokenizers/morphology/index.d.ts.map +1 -0
  777. package/dist/tokenizers/morphology/italian-normalizer.d.ts +52 -0
  778. package/dist/tokenizers/morphology/italian-normalizer.d.ts.map +1 -0
  779. package/dist/tokenizers/morphology/japanese-normalizer.d.ts +43 -0
  780. package/dist/tokenizers/morphology/japanese-normalizer.d.ts.map +1 -0
  781. package/dist/tokenizers/morphology/korean-normalizer.d.ts +45 -0
  782. package/dist/tokenizers/morphology/korean-normalizer.d.ts.map +1 -0
  783. package/dist/tokenizers/morphology/polish-normalizer.d.ts +61 -0
  784. package/dist/tokenizers/morphology/polish-normalizer.d.ts.map +1 -0
  785. package/dist/tokenizers/morphology/portuguese-normalizer.d.ts +51 -0
  786. package/dist/tokenizers/morphology/portuguese-normalizer.d.ts.map +1 -0
  787. package/dist/tokenizers/morphology/russian-normalizer.d.ts +72 -0
  788. package/dist/tokenizers/morphology/russian-normalizer.d.ts.map +1 -0
  789. package/dist/tokenizers/morphology/spanish-normalizer.d.ts +49 -0
  790. package/dist/tokenizers/morphology/spanish-normalizer.d.ts.map +1 -0
  791. package/dist/tokenizers/morphology/turkish-normalizer.d.ts +52 -0
  792. package/dist/tokenizers/morphology/turkish-normalizer.d.ts.map +1 -0
  793. package/dist/tokenizers/morphology/types.d.ts +110 -0
  794. package/dist/tokenizers/morphology/types.d.ts.map +1 -0
  795. package/dist/tokenizers/morphology/ukrainian-normalizer.d.ts +76 -0
  796. package/dist/tokenizers/morphology/ukrainian-normalizer.d.ts.map +1 -0
  797. package/dist/tokenizers/ms.d.ts +22 -0
  798. package/dist/tokenizers/ms.d.ts.map +1 -0
  799. package/dist/tokenizers/polish.d.ts +25 -0
  800. package/dist/tokenizers/polish.d.ts.map +1 -0
  801. package/dist/tokenizers/portuguese.d.ts +26 -0
  802. package/dist/tokenizers/portuguese.d.ts.map +1 -0
  803. package/dist/tokenizers/quechua.d.ts +36 -0
  804. package/dist/tokenizers/quechua.d.ts.map +1 -0
  805. package/dist/tokenizers/russian.d.ts +25 -0
  806. package/dist/tokenizers/russian.d.ts.map +1 -0
  807. package/dist/tokenizers/spanish.d.ts +41 -0
  808. package/dist/tokenizers/spanish.d.ts.map +1 -0
  809. package/dist/tokenizers/swahili.d.ts +24 -0
  810. package/dist/tokenizers/swahili.d.ts.map +1 -0
  811. package/dist/tokenizers/thai.d.ts +24 -0
  812. package/dist/tokenizers/thai.d.ts.map +1 -0
  813. package/dist/tokenizers/tl.d.ts +22 -0
  814. package/dist/tokenizers/tl.d.ts.map +1 -0
  815. package/dist/tokenizers/token-utils.d.ts +97 -0
  816. package/dist/tokenizers/token-utils.d.ts.map +1 -0
  817. package/dist/tokenizers/turkish.d.ts +42 -0
  818. package/dist/tokenizers/turkish.d.ts.map +1 -0
  819. package/dist/tokenizers/ukrainian.d.ts +25 -0
  820. package/dist/tokenizers/ukrainian.d.ts.map +1 -0
  821. package/dist/tokenizers/vietnamese.d.ts +47 -0
  822. package/dist/tokenizers/vietnamese.d.ts.map +1 -0
  823. package/dist/types/grammar-types.d.ts +224 -0
  824. package/dist/types/grammar-types.d.ts.map +1 -0
  825. package/dist/types/unified-profile.d.ts +167 -0
  826. package/dist/types/unified-profile.d.ts.map +1 -0
  827. package/dist/types.d.ts +401 -0
  828. package/dist/types.d.ts.map +1 -0
  829. package/dist/utils/confidence-calculator.d.ts +43 -0
  830. package/dist/utils/confidence-calculator.d.ts.map +1 -0
  831. package/dist/validators/command-validator.d.ts +83 -0
  832. package/dist/validators/command-validator.d.ts.map +1 -0
  833. package/dist/validators/index.d.ts +7 -0
  834. package/dist/validators/index.d.ts.map +1 -0
  835. package/package.json +86 -6
  836. package/src/ast-builder/command-mappers.ts +9 -1
  837. package/src/ast-builder/expression-parser/parser.ts +13 -2
  838. package/src/ast-builder/index.ts +20 -6
  839. package/src/browser-bn.ts +162 -0
  840. package/src/browser-east-asian.ts +1 -1
  841. package/src/browser-hi.ts +162 -0
  842. package/src/browser-it.ts +162 -0
  843. package/src/browser-ms.ts +162 -0
  844. package/src/browser-pl.ts +162 -0
  845. package/src/browser-priority.ts +1 -1
  846. package/src/browser-ru.ts +162 -0
  847. package/src/browser-th.ts +162 -0
  848. package/src/browser-tl.ts +162 -0
  849. package/src/browser-uk.ts +162 -0
  850. package/src/browser-vi.ts +162 -0
  851. package/src/browser-western.ts +1 -1
  852. package/src/core-bridge.ts +43 -16
  853. package/src/core.ts +13 -0
  854. package/src/explicit/parser.ts +4 -2
  855. package/src/explicit/renderer.ts +1 -1
  856. package/src/generators/command-schemas.ts +214 -2
  857. package/src/generators/event-handlers-sov.ts +686 -0
  858. package/src/generators/event-handlers-vso.ts +489 -0
  859. package/src/generators/pattern-generator.ts +93 -736
  860. package/src/generators/profiles/arabic.ts +11 -1
  861. package/src/generators/profiles/bengali.ts +6 -0
  862. package/src/generators/profiles/chinese.ts +6 -0
  863. package/src/generators/profiles/english.ts +6 -0
  864. package/src/generators/profiles/french.ts +6 -0
  865. package/src/generators/profiles/german.ts +6 -0
  866. package/src/generators/profiles/hebrew.ts +6 -0
  867. package/src/generators/profiles/hindi.ts +6 -0
  868. package/src/generators/profiles/indonesian.ts +6 -0
  869. package/src/generators/profiles/italian.ts +6 -0
  870. package/src/generators/profiles/japanese.ts +6 -0
  871. package/src/generators/profiles/korean.ts +6 -0
  872. package/src/generators/profiles/ms.ts +6 -0
  873. package/src/generators/profiles/polish.ts +6 -0
  874. package/src/generators/profiles/portuguese.ts +6 -0
  875. package/src/generators/profiles/quechua.ts +35 -13
  876. package/src/generators/profiles/russian.ts +6 -0
  877. package/src/generators/profiles/spanish.ts +6 -0
  878. package/src/generators/profiles/spanishMexico.ts +6 -0
  879. package/src/generators/profiles/swahili.ts +14 -3
  880. package/src/generators/profiles/thai.ts +6 -0
  881. package/src/generators/profiles/tl.ts +22 -9
  882. package/src/generators/profiles/turkish.ts +7 -1
  883. package/src/generators/profiles/ukrainian.ts +6 -0
  884. package/src/generators/profiles/vietnamese.ts +6 -0
  885. package/src/generators/schema-validator.ts +8 -3
  886. package/src/index.ts +54 -0
  887. package/src/interchange/from-semantic.ts +440 -0
  888. package/src/interchange/index.ts +26 -0
  889. package/src/interchange/types.ts +186 -0
  890. package/src/parser/pattern-matcher.ts +65 -15
  891. package/src/parser/semantic-parser.ts +850 -8
  892. package/src/patterns/add/index.ts +1 -9
  893. package/src/patterns/builders.ts +2 -2
  894. package/src/patterns/decrement/index.ts +1 -9
  895. package/src/patterns/event-handler/shared.ts +30 -0
  896. package/src/patterns/event-handler/tl.ts +39 -19
  897. package/src/patterns/get/index.ts +1 -9
  898. package/src/patterns/hide/index.ts +1 -9
  899. package/src/patterns/increment/index.ts +1 -9
  900. package/src/patterns/put/index.ts +1 -9
  901. package/src/patterns/registry.ts +2 -2
  902. package/src/patterns/remove/index.ts +1 -9
  903. package/src/patterns/set/index.ts +1 -9
  904. package/src/patterns/show/index.ts +1 -9
  905. package/src/patterns/toggle/index.ts +1 -9
  906. package/src/tokenizers/arabic.ts +14 -1
  907. package/src/tokenizers/base-tokenizer.ts +644 -0
  908. package/src/tokenizers/base.ts +39 -1297
  909. package/src/tokenizers/bengali.ts +37 -10
  910. package/src/tokenizers/char-classifiers.ts +79 -0
  911. package/src/tokenizers/chinese.ts +7 -0
  912. package/src/tokenizers/english.ts +8 -1
  913. package/src/tokenizers/extractors.ts +452 -0
  914. package/src/tokenizers/french.ts +16 -1
  915. package/src/tokenizers/german.ts +16 -1
  916. package/src/tokenizers/he.ts +14 -1
  917. package/src/tokenizers/hindi.ts +14 -1
  918. package/src/tokenizers/indonesian.ts +14 -1
  919. package/src/tokenizers/italian.ts +14 -1
  920. package/src/tokenizers/japanese.ts +14 -1
  921. package/src/tokenizers/korean.ts +19 -1
  922. package/src/tokenizers/morphology/index.ts +17 -0
  923. package/src/tokenizers/morphology/polish-normalizer.ts +147 -131
  924. package/src/tokenizers/morphology/russian-normalizer.ts +397 -0
  925. package/src/tokenizers/morphology/ukrainian-normalizer.ts +366 -0
  926. package/src/tokenizers/ms.ts +14 -1
  927. package/src/tokenizers/polish.ts +16 -1
  928. package/src/tokenizers/portuguese.ts +16 -1
  929. package/src/tokenizers/quechua.ts +30 -1
  930. package/src/tokenizers/russian.ts +16 -1
  931. package/src/tokenizers/spanish.ts +14 -1
  932. package/src/tokenizers/swahili.ts +14 -1
  933. package/src/tokenizers/thai.ts +14 -1
  934. package/src/tokenizers/tl.ts +14 -1
  935. package/src/tokenizers/token-utils.ts +205 -0
  936. package/src/tokenizers/turkish.ts +21 -2
  937. package/src/tokenizers/ukrainian.ts +16 -1
  938. package/src/tokenizers/vietnamese.ts +7 -0
  939. package/src/types.ts +41 -2
  940. package/src/validators/command-validator.ts +17 -40
  941. package/dist/index.d.cts +0 -3470
  942. package/dist/types-BY3Id07j.d.ts +0 -615
  943. package/src/bridge.ts +0 -275
  944. package/src/generators/event-handler-generator.ts +0 -115
  945. package/src/patterns/add/ms.ts +0 -30
  946. package/src/patterns/add/tl.ts +0 -30
  947. package/src/patterns/decrement/ms.ts +0 -30
  948. package/src/patterns/decrement/tl.ts +0 -30
  949. package/src/patterns/get/ms.ts +0 -30
  950. package/src/patterns/get/tl.ts +0 -30
  951. package/src/patterns/hide/ms.ts +0 -30
  952. package/src/patterns/hide/tl.ts +0 -30
  953. package/src/patterns/increment/ms.ts +0 -30
  954. package/src/patterns/increment/tl.ts +0 -30
  955. package/src/patterns/put/ms.ts +0 -30
  956. package/src/patterns/put/tl.ts +0 -30
  957. package/src/patterns/remove/ms.ts +0 -30
  958. package/src/patterns/remove/tl.ts +0 -30
  959. package/src/patterns/set/ms.ts +0 -30
  960. package/src/patterns/set/tl.ts +0 -30
  961. package/src/patterns/show/ms.ts +0 -30
  962. package/src/patterns/show/tl.ts +0 -30
  963. package/src/patterns/toggle/ms.ts +0 -30
  964. package/src/patterns/toggle/tl.ts +0 -30
@@ -0,0 +1,366 @@
1
+ /**
2
+ * Ukrainian Morphological Normalizer
3
+ *
4
+ * Reduces Ukrainian verb conjugations to their infinitive forms.
5
+ * Ukrainian is a fusional language closely related to Russian with rich verb morphology:
6
+ * - Two aspects: perfective and imperfective
7
+ * - Three tenses: present, past, future
8
+ * - Person/number agreement in present tense (6 forms)
9
+ * - Gender/number agreement in past tense (4 forms)
10
+ * - Imperative mood (2 forms: singular and plural)
11
+ * - Reflexive verbs (suffix -ся/-сь)
12
+ *
13
+ * Key differences from Russian:
14
+ * - Infinitive ends in -ти (not -ть): робити, ходити
15
+ * - Past masculine ends in -в (not -л): робив, ходив
16
+ * - Unique vowels: і, ї, є, ґ
17
+ *
18
+ * For software UI, Ukrainian uses INFINITIVE form (industry standard):
19
+ * - перемкнути (toggle), додати (add), видалити (remove)
20
+ *
21
+ * Examples:
22
+ * перемкни → перемкнути (imperative → infinitive)
23
+ * додав → додати (past → infinitive)
24
+ * видаляє → видаляти (present → infinitive)
25
+ */
26
+
27
+ import type { MorphologicalNormalizer, NormalizationResult } from './types';
28
+ import { noChange, normalized } from './types';
29
+
30
+ /**
31
+ * Check if a word contains Ukrainian/Cyrillic characters.
32
+ */
33
+ function hasUkrainianChars(word: string): boolean {
34
+ return /[а-яА-ЯіІїЇєЄґҐьЬ']/.test(word);
35
+ }
36
+
37
+ /**
38
+ * Common imperative → infinitive mappings for Ukrainian software UI keywords.
39
+ * These are irregular or semi-regular forms from the language profile.
40
+ */
41
+ const IMPERATIVE_TO_INFINITIVE = new Map<string, string>([
42
+ // Core commands (from Ukrainian language profile)
43
+ ['перемкни', 'перемкнути'],
44
+ ['додай', 'додати'],
45
+ ['видали', 'видалити'],
46
+ ['прибери', 'прибрати'],
47
+ ['поклади', 'покласти'],
48
+ ['помісти', 'помістити'],
49
+ ['встав', 'вставити'],
50
+ ['візьми', 'взяти'],
51
+ ['створи', 'створити'],
52
+ ['клонуй', 'клонувати'],
53
+ ['поміняй', 'поміняти'],
54
+ ['трансформуй', 'трансформувати'],
55
+ ['встанови', 'встановити'],
56
+ ['задай', 'задати'],
57
+ ['отримай', 'отримати'],
58
+ ['збільш', 'збільшити'],
59
+ ['зменш', 'зменшити'],
60
+ ['запиши', 'записати'],
61
+ ['покажи', 'показати'],
62
+ ['сховай', 'сховати'],
63
+ ['приховай', 'приховати'],
64
+ ['анімуй', 'анімувати'],
65
+ ['виклич', 'викликати'],
66
+ ['надішли', 'надіслати'],
67
+ ['сфокусуй', 'сфокусувати'],
68
+ ['розфокусуй', 'розфокусувати'],
69
+ ['перейди', 'перейти'],
70
+ ['йди', 'йти'],
71
+ ['чекай', 'чекати'],
72
+ ['зачекай', 'зачекати'],
73
+ ['завантаж', 'завантажити'],
74
+ ['повтори', 'повторити'],
75
+ ['продовжуй', 'продовжити'],
76
+ ['кинь', 'кинути'],
77
+ ['поверни', 'повернути'],
78
+ ['скажи', 'сказати'],
79
+ ['ініціалізуй', 'ініціалізувати'],
80
+ ['виміряй', 'виміряти'],
81
+ ]);
82
+
83
+ /**
84
+ * Ukrainian morphological normalizer.
85
+ */
86
+ export class UkrainianMorphologicalNormalizer implements MorphologicalNormalizer {
87
+ readonly language = 'uk';
88
+
89
+ /**
90
+ * Check if a word might be a Ukrainian verb that can be normalized.
91
+ */
92
+ isNormalizable(word: string): boolean {
93
+ if (word.length < 3) return false;
94
+ return hasUkrainianChars(word);
95
+ }
96
+
97
+ /**
98
+ * Normalize a Ukrainian word to its infinitive form.
99
+ */
100
+ normalize(word: string): NormalizationResult {
101
+ const lower = word.toLowerCase();
102
+
103
+ // Handle reflexive verbs: strip -ся/-сь, normalize, re-add -ся
104
+ if (lower.endsWith('ся') || lower.endsWith('сь')) {
105
+ const reflexiveResult = this.tryReflexiveNormalization(lower);
106
+ if (reflexiveResult) return reflexiveResult;
107
+ }
108
+
109
+ // Already in infinitive form (-ти, -тися)?
110
+ if (lower.endsWith('ти') || lower.endsWith('чи')) {
111
+ return noChange(word);
112
+ }
113
+
114
+ // Try imperative → infinitive (lookup table only — high confidence)
115
+ const imperativeLookup = this.tryImperativeLookup(lower);
116
+ if (imperativeLookup) return imperativeLookup;
117
+
118
+ // Try past tense → infinitive (before generic patterns — -али/-или are longer)
119
+ const pastResult = this.tryPastTenseNormalization(lower);
120
+ if (pastResult) return pastResult;
121
+
122
+ // Try present tense → infinitive
123
+ const presentResult = this.tryPresentTenseNormalization(lower);
124
+ if (presentResult) return presentResult;
125
+
126
+ // Try generic imperative patterns (fallback — lower confidence)
127
+ const imperativeGeneric = this.tryGenericImperativeNormalization(lower);
128
+ if (imperativeGeneric) return imperativeGeneric;
129
+
130
+ // No normalization needed
131
+ return noChange(word);
132
+ }
133
+
134
+ /**
135
+ * Try to normalize reflexive verbs (-ся/-сь).
136
+ */
137
+ private tryReflexiveNormalization(word: string): NormalizationResult | null {
138
+ const base = word.slice(0, -2);
139
+
140
+ // Already reflexive infinitive (-тися)?
141
+ if (word.endsWith('тися') || word.endsWith('чися')) {
142
+ return noChange(word);
143
+ }
144
+
145
+ // Normalize the base verb
146
+ const baseResult = this.normalizeNonReflexive(base);
147
+ if (baseResult.confidence < 1.0) {
148
+ const infinitive = baseResult.stem.endsWith('ти')
149
+ ? baseResult.stem.slice(0, -2) + 'тися'
150
+ : baseResult.stem + 'ся';
151
+ return normalized(infinitive, baseResult.confidence * 0.95, {
152
+ removedSuffixes: ['ся', ...(baseResult.metadata?.removedSuffixes || [])],
153
+ conjugationType: 'reflexive',
154
+ });
155
+ }
156
+
157
+ return null;
158
+ }
159
+
160
+ /**
161
+ * Normalize a non-reflexive verb form.
162
+ */
163
+ private normalizeNonReflexive(word: string): NormalizationResult {
164
+ if (word.endsWith('ти') || word.endsWith('чи')) {
165
+ return noChange(word);
166
+ }
167
+
168
+ const imperativeLookup = this.tryImperativeLookup(word);
169
+ if (imperativeLookup) return imperativeLookup;
170
+
171
+ const pastResult = this.tryPastTenseNormalization(word);
172
+ if (pastResult) return pastResult;
173
+
174
+ const presentResult = this.tryPresentTenseNormalization(word);
175
+ if (presentResult) return presentResult;
176
+
177
+ const imperativeGeneric = this.tryGenericImperativeNormalization(word);
178
+ if (imperativeGeneric) return imperativeGeneric;
179
+
180
+ return noChange(word);
181
+ }
182
+
183
+ /**
184
+ * Try imperative → infinitive via lookup table only.
185
+ */
186
+ private tryImperativeLookup(word: string): NormalizationResult | null {
187
+ if (IMPERATIVE_TO_INFINITIVE.has(word)) {
188
+ return normalized(IMPERATIVE_TO_INFINITIVE.get(word)!, 0.95, {
189
+ removedSuffixes: ['imperative'],
190
+ conjugationType: 'imperative',
191
+ });
192
+ }
193
+ return null;
194
+ }
195
+
196
+ /**
197
+ * Try generic imperative patterns (lower confidence fallback).
198
+ */
199
+ private tryGenericImperativeNormalization(word: string): NormalizationResult | null {
200
+ // -йте (plural imperative for -ати verbs: читайте → читати)
201
+ if (word.endsWith('йте') && word.length > 5) {
202
+ return normalized(word.slice(0, -3) + 'ти', 0.8, {
203
+ removedSuffixes: ['йте'],
204
+ conjugationType: 'imperative',
205
+ });
206
+ }
207
+
208
+ // -іть (2nd person plural/formal imperative)
209
+ if (word.endsWith('іть') && word.length > 5) {
210
+ return normalized(word.slice(0, -3) + 'ити', 0.8, {
211
+ removedSuffixes: ['іть'],
212
+ conjugationType: 'imperative',
213
+ });
214
+ }
215
+
216
+ // -й → -ти (e.g., читай → читати)
217
+ if (word.endsWith('й') && word.length > 3) {
218
+ return normalized(word.slice(0, -1) + 'ти', 0.75, {
219
+ removedSuffixes: ['й'],
220
+ conjugationType: 'imperative',
221
+ });
222
+ }
223
+
224
+ // -и (2nd person singular for -ити verbs)
225
+ // e.g., говори → говорити
226
+ if (word.endsWith('и') && word.length > 3) {
227
+ return normalized(word + 'ти', 0.7, {
228
+ removedSuffixes: ['и→ити'],
229
+ conjugationType: 'imperative',
230
+ });
231
+ }
232
+
233
+ return null;
234
+ }
235
+
236
+ /**
237
+ * Try past tense → infinitive.
238
+ *
239
+ * Ukrainian past tense endings (differs from Russian):
240
+ * - masculine: -в (робив → робити)
241
+ * - feminine: -ла (робила → робити)
242
+ * - neuter: -ло (робило → робити)
243
+ * - plural: -ли (робили → робити)
244
+ */
245
+ private tryPastTenseNormalization(word: string): NormalizationResult | null {
246
+ // Feminine/neuter/plural forms (longer suffixes first)
247
+ if (word.endsWith('ала') && word.length > 4) {
248
+ return normalized(word.slice(0, -3) + 'ати', 0.85, {
249
+ removedSuffixes: ['ала'],
250
+ conjugationType: 'past',
251
+ });
252
+ }
253
+ if (word.endsWith('ила') && word.length > 4) {
254
+ return normalized(word.slice(0, -3) + 'ити', 0.85, {
255
+ removedSuffixes: ['ила'],
256
+ conjugationType: 'past',
257
+ });
258
+ }
259
+ if (word.endsWith('али') && word.length > 4) {
260
+ return normalized(word.slice(0, -3) + 'ати', 0.85, {
261
+ removedSuffixes: ['али'],
262
+ conjugationType: 'past',
263
+ });
264
+ }
265
+ if (word.endsWith('или') && word.length > 4) {
266
+ return normalized(word.slice(0, -3) + 'ити', 0.85, {
267
+ removedSuffixes: ['или'],
268
+ conjugationType: 'past',
269
+ });
270
+ }
271
+
272
+ // Masculine past: -ав → -ати, -ив → -ити
273
+ if (word.endsWith('ав') && word.length > 3) {
274
+ return normalized(word.slice(0, -2) + 'ати', 0.82, {
275
+ removedSuffixes: ['ав'],
276
+ conjugationType: 'past',
277
+ });
278
+ }
279
+ if (word.endsWith('ив') && word.length > 3) {
280
+ return normalized(word.slice(0, -2) + 'ити', 0.82, {
281
+ removedSuffixes: ['ив'],
282
+ conjugationType: 'past',
283
+ });
284
+ }
285
+
286
+ return null;
287
+ }
288
+
289
+ /**
290
+ * Try present tense → infinitive.
291
+ *
292
+ * Ukrainian present tense endings:
293
+ * 1st conj: -ю/-у, -еш/-єш, -е/-є, -емо/-ємо, -ете/-єте, -ють/-уть
294
+ * 2nd conj: -ю/-у, -иш, -ить, -имо, -ите, -ять/-ать
295
+ */
296
+ private tryPresentTenseNormalization(word: string): NormalizationResult | null {
297
+ // 2nd conjugation (more specific, check first)
298
+ if (word.endsWith('иш') && word.length > 3) {
299
+ return normalized(word.slice(0, -2) + 'ити', 0.8, {
300
+ removedSuffixes: ['иш'],
301
+ conjugationType: 'present',
302
+ });
303
+ }
304
+ if (word.endsWith('ить') && word.length > 4) {
305
+ return normalized(word.slice(0, -3) + 'ити', 0.78, {
306
+ removedSuffixes: ['ить'],
307
+ conjugationType: 'present',
308
+ });
309
+ }
310
+ if (word.endsWith('имо') && word.length > 4) {
311
+ return normalized(word.slice(0, -3) + 'ити', 0.8, {
312
+ removedSuffixes: ['имо'],
313
+ conjugationType: 'present',
314
+ });
315
+ }
316
+ if (word.endsWith('ять') && word.length > 4) {
317
+ return normalized(word.slice(0, -3) + 'ити', 0.78, {
318
+ removedSuffixes: ['ять'],
319
+ conjugationType: 'present',
320
+ });
321
+ }
322
+
323
+ // 1st conjugation
324
+ if (word.endsWith('єш') && word.length > 3) {
325
+ return normalized(word.slice(0, -2) + 'ати', 0.78, {
326
+ removedSuffixes: ['єш'],
327
+ conjugationType: 'present',
328
+ });
329
+ }
330
+ if (word.endsWith('еш') && word.length > 3) {
331
+ return normalized(word.slice(0, -2) + 'ати', 0.75, {
332
+ removedSuffixes: ['еш'],
333
+ conjugationType: 'present',
334
+ });
335
+ }
336
+ if (word.endsWith('є') && word.length > 2) {
337
+ return normalized(word.slice(0, -1) + 'ати', 0.72, {
338
+ removedSuffixes: ['є'],
339
+ conjugationType: 'present',
340
+ });
341
+ }
342
+ if (word.endsWith('ємо') && word.length > 4) {
343
+ return normalized(word.slice(0, -3) + 'ати', 0.8, {
344
+ removedSuffixes: ['ємо'],
345
+ conjugationType: 'present',
346
+ });
347
+ }
348
+ if (word.endsWith('ють') && word.length > 4) {
349
+ return normalized(word.slice(0, -3) + 'ати', 0.78, {
350
+ removedSuffixes: ['ють'],
351
+ conjugationType: 'present',
352
+ });
353
+ }
354
+ if (word.endsWith('уть') && word.length > 4) {
355
+ return normalized(word.slice(0, -3) + 'ати', 0.75, {
356
+ removedSuffixes: ['уть'],
357
+ conjugationType: 'present',
358
+ });
359
+ }
360
+
361
+ return null;
362
+ }
363
+ }
364
+
365
+ // Export singleton instance
366
+ export const ukrainianMorphologicalNormalizer = new UkrainianMorphologicalNormalizer();
@@ -98,6 +98,12 @@ export class MalayTokenizer extends BaseTokenizer {
98
98
  continue;
99
99
  }
100
100
 
101
+ // Check for property access (obj.prop) vs CSS selector (.active)
102
+ if (this.tryPropertyAccess(input, pos, tokens)) {
103
+ pos++;
104
+ continue;
105
+ }
106
+
101
107
  const selectorToken = this.trySelector(input, pos);
102
108
  if (selectorToken) {
103
109
  tokens.push(selectorToken);
@@ -190,7 +196,14 @@ export class MalayTokenizer extends BaseTokenizer {
190
196
  classifyToken(token: string): TokenKind {
191
197
  // O(1) Map lookup instead of O(n) array search
192
198
  if (this.isKeyword(token)) return 'keyword';
193
- if (token.startsWith('.') || token.startsWith('#') || token.startsWith('[')) return 'selector';
199
+ if (
200
+ token.startsWith('.') ||
201
+ token.startsWith('#') ||
202
+ token.startsWith('[') ||
203
+ token.startsWith('*') ||
204
+ token.startsWith('<')
205
+ )
206
+ return 'selector';
194
207
  if (token.startsWith(':')) return 'identifier';
195
208
  if (token.startsWith('"') || token.startsWith("'")) return 'literal';
196
209
  if (/^-?\d/.test(token)) return 'literal';
@@ -26,6 +26,7 @@ import {
26
26
  type KeywordEntry,
27
27
  } from './base';
28
28
  import { polishProfile } from '../generators/profiles/polish';
29
+ import { PolishMorphologicalNormalizer } from './morphology/polish-normalizer';
29
30
 
30
31
  // =============================================================================
31
32
  // Polish Character Classification
@@ -170,6 +171,7 @@ export class PolishTokenizer extends BaseTokenizer {
170
171
  super();
171
172
  // Initialize keywords from profile + extras (single source of truth)
172
173
  this.initializeKeywordsFromProfile(polishProfile, POLISH_EXTRAS);
174
+ this.normalizer = new PolishMorphologicalNormalizer();
173
175
  }
174
176
 
175
177
  tokenize(input: string): TokenStream {
@@ -191,6 +193,12 @@ export class PolishTokenizer extends BaseTokenizer {
191
193
  continue;
192
194
  }
193
195
 
196
+ // Check for property access (obj.prop) vs CSS selector (.active)
197
+ if (this.tryPropertyAccess(input, pos, tokens)) {
198
+ pos++;
199
+ continue;
200
+ }
201
+
194
202
  const selectorToken = this.trySelector(input, pos);
195
203
  if (selectorToken) {
196
204
  tokens.push(selectorToken);
@@ -263,7 +271,14 @@ export class PolishTokenizer extends BaseTokenizer {
263
271
  if (PREPOSITIONS.has(lower)) return 'particle';
264
272
  // O(1) Map lookup instead of O(n) array search
265
273
  if (this.isKeyword(lower)) return 'keyword';
266
- if (token.startsWith('#') || token.startsWith('.') || token.startsWith('[')) return 'selector';
274
+ if (
275
+ token.startsWith('#') ||
276
+ token.startsWith('.') ||
277
+ token.startsWith('[') ||
278
+ token.startsWith('*') ||
279
+ token.startsWith('<')
280
+ )
281
+ return 'selector';
267
282
  if (token.startsWith('"') || token.startsWith("'")) return 'literal';
268
283
  if (/^\d/.test(token)) return 'literal';
269
284
  return 'identifier';
@@ -25,6 +25,7 @@ import {
25
25
  type TimeUnitMapping,
26
26
  } from './base';
27
27
  import { portugueseProfile } from '../generators/profiles/portuguese';
28
+ import { PortugueseMorphologicalNormalizer } from './morphology/portuguese-normalizer';
28
29
 
29
30
  // =============================================================================
30
31
  // Portuguese Character Classification
@@ -166,6 +167,7 @@ export class PortugueseTokenizer extends BaseTokenizer {
166
167
  constructor() {
167
168
  super();
168
169
  this.initializeKeywordsFromProfile(portugueseProfile, PORTUGUESE_EXTRAS);
170
+ this.normalizer = new PortugueseMorphologicalNormalizer();
169
171
  }
170
172
 
171
173
  tokenize(input: string): TokenStream {
@@ -187,6 +189,12 @@ export class PortugueseTokenizer extends BaseTokenizer {
187
189
  continue;
188
190
  }
189
191
 
192
+ // Check for property access (obj.prop) vs CSS selector (.active)
193
+ if (this.tryPropertyAccess(input, pos, tokens)) {
194
+ pos++;
195
+ continue;
196
+ }
197
+
190
198
  const selectorToken = this.trySelector(input, pos);
191
199
  if (selectorToken) {
192
200
  tokens.push(selectorToken);
@@ -259,7 +267,14 @@ export class PortugueseTokenizer extends BaseTokenizer {
259
267
  if (PREPOSITIONS.has(lower)) return 'particle';
260
268
  // O(1) Map lookup instead of O(n) array search
261
269
  if (this.isKeyword(lower)) return 'keyword';
262
- if (token.startsWith('#') || token.startsWith('.') || token.startsWith('[')) return 'selector';
270
+ if (
271
+ token.startsWith('#') ||
272
+ token.startsWith('.') ||
273
+ token.startsWith('[') ||
274
+ token.startsWith('*') ||
275
+ token.startsWith('<')
276
+ )
277
+ return 'selector';
263
278
  if (token.startsWith('"') || token.startsWith("'")) return 'literal';
264
279
  if (/^\d/.test(token)) return 'literal';
265
280
  return 'identifier';
@@ -47,6 +47,16 @@ const SUFFIXES = new Set([
47
47
  '-kama', // limitative (until, up to)
48
48
  '-rayku', // causative (because of)
49
49
  '-hina', // simulative (like, as)
50
+ // Standalone (unhyphenated) forms — used when written as separate words
51
+ 'ta',
52
+ 'man',
53
+ 'manta',
54
+ 'pi',
55
+ 'wan',
56
+ 'paq',
57
+ 'kama',
58
+ 'hina',
59
+ 'pa',
50
60
  ]);
51
61
 
52
62
  // =============================================================================
@@ -77,6 +87,7 @@ const QUECHUA_EXTRAS: KeywordEntry[] = [
77
87
  { native: 'qhipa', normalized: 'last' },
78
88
  { native: 'hamuq', normalized: 'next' },
79
89
  { native: 'ñawpaq kaq', normalized: 'previous' },
90
+ { native: 'ñawpaq_kaq', normalized: 'previous' },
80
91
  { native: 'aswan qayllaqa', normalized: 'closest' },
81
92
  { native: 'tayta', normalized: 'parent' },
82
93
 
@@ -171,6 +182,12 @@ export class QuechuaTokenizer extends BaseTokenizer {
171
182
  continue;
172
183
  }
173
184
 
185
+ // Check for property access (obj.prop) vs CSS selector (.active)
186
+ if (this.tryPropertyAccess(input, pos, tokens)) {
187
+ pos++;
188
+ continue;
189
+ }
190
+
174
191
  const selectorToken = this.trySelector(input, pos);
175
192
  if (selectorToken) {
176
193
  // Check if selector has a Quechua suffix attached
@@ -271,7 +288,14 @@ export class QuechuaTokenizer extends BaseTokenizer {
271
288
  if (SUFFIXES.has(lower)) return 'particle';
272
289
  // O(1) Map lookup instead of O(n) array search
273
290
  if (this.isKeyword(lower)) return 'keyword';
274
- if (token.startsWith('#') || token.startsWith('.') || token.startsWith('[')) return 'selector';
291
+ if (
292
+ token.startsWith('#') ||
293
+ token.startsWith('.') ||
294
+ token.startsWith('[') ||
295
+ token.startsWith('*') ||
296
+ token.startsWith('<')
297
+ )
298
+ return 'selector';
275
299
  if (token.startsWith('"') || token.startsWith("'")) return 'literal';
276
300
  if (/^\d/.test(token)) return 'literal';
277
301
  return 'identifier';
@@ -383,6 +407,11 @@ export class QuechuaTokenizer extends BaseTokenizer {
383
407
 
384
408
  const lower = word.toLowerCase();
385
409
 
410
+ // Check standalone suffixes first — classify as particle
411
+ if (SUFFIXES.has(lower)) {
412
+ return createToken(word, 'particle', createPosition(startPos, pos));
413
+ }
414
+
386
415
  // O(1) Map lookup instead of O(n) array search
387
416
  const keywordEntry = this.lookupKeyword(lower);
388
417
  if (keywordEntry) {
@@ -26,6 +26,7 @@ import {
26
26
  type KeywordEntry,
27
27
  } from './base';
28
28
  import { russianProfile } from '../generators/profiles/russian';
29
+ import { RussianMorphologicalNormalizer } from './morphology/russian-normalizer';
29
30
 
30
31
  // =============================================================================
31
32
  // Russian Character Classification
@@ -162,6 +163,7 @@ export class RussianTokenizer extends BaseTokenizer {
162
163
  super();
163
164
  // Initialize keywords from profile + extras (single source of truth)
164
165
  this.initializeKeywordsFromProfile(russianProfile, RUSSIAN_EXTRAS);
166
+ this.normalizer = new RussianMorphologicalNormalizer();
165
167
  }
166
168
 
167
169
  tokenize(input: string): TokenStream {
@@ -183,6 +185,12 @@ export class RussianTokenizer extends BaseTokenizer {
183
185
  continue;
184
186
  }
185
187
 
188
+ // Check for property access (obj.prop) vs CSS selector (.active)
189
+ if (this.tryPropertyAccess(input, pos, tokens)) {
190
+ pos++;
191
+ continue;
192
+ }
193
+
186
194
  const selectorToken = this.trySelector(input, pos);
187
195
  if (selectorToken) {
188
196
  tokens.push(selectorToken);
@@ -255,7 +263,14 @@ export class RussianTokenizer extends BaseTokenizer {
255
263
  if (PREPOSITIONS.has(lower)) return 'particle';
256
264
  // O(1) Map lookup instead of O(n) array search
257
265
  if (this.isKeyword(lower)) return 'keyword';
258
- if (token.startsWith('#') || token.startsWith('.') || token.startsWith('[')) return 'selector';
266
+ if (
267
+ token.startsWith('#') ||
268
+ token.startsWith('.') ||
269
+ token.startsWith('[') ||
270
+ token.startsWith('*') ||
271
+ token.startsWith('<')
272
+ )
273
+ return 'selector';
259
274
  if (token.startsWith('"') || token.startsWith("'")) return 'literal';
260
275
  if (/^\d/.test(token)) return 'literal';
261
276
  return 'identifier';
@@ -218,6 +218,12 @@ export class SpanishTokenizer extends BaseTokenizer {
218
218
  continue;
219
219
  }
220
220
 
221
+ // Check for property access (obj.prop) vs CSS selector (.active)
222
+ if (this.tryPropertyAccess(input, pos, tokens)) {
223
+ pos++;
224
+ continue;
225
+ }
226
+
221
227
  const selectorToken = this.trySelector(input, pos);
222
228
  if (selectorToken) {
223
229
  tokens.push(selectorToken);
@@ -306,7 +312,14 @@ export class SpanishTokenizer extends BaseTokenizer {
306
312
  if (PREPOSITIONS.has(lower)) return 'particle';
307
313
  // O(1) Map lookup instead of O(n) array search
308
314
  if (this.isKeyword(lower)) return 'keyword';
309
- if (token.startsWith('#') || token.startsWith('.') || token.startsWith('[')) return 'selector';
315
+ if (
316
+ token.startsWith('#') ||
317
+ token.startsWith('.') ||
318
+ token.startsWith('[') ||
319
+ token.startsWith('*') ||
320
+ token.startsWith('<')
321
+ )
322
+ return 'selector';
310
323
  if (token.startsWith('"') || token.startsWith("'")) return 'literal';
311
324
  if (/^\d/.test(token)) return 'literal';
312
325
  if (['==', '!=', '<=', '>=', '<', '>', '&&', '||', '!'].includes(token)) return 'operator';
@@ -152,6 +152,12 @@ export class SwahiliTokenizer extends BaseTokenizer {
152
152
  continue;
153
153
  }
154
154
 
155
+ // Check for property access (obj.prop) vs CSS selector (.active)
156
+ if (this.tryPropertyAccess(input, pos, tokens)) {
157
+ pos++;
158
+ continue;
159
+ }
160
+
155
161
  const selectorToken = this.trySelector(input, pos);
156
162
  if (selectorToken) {
157
163
  tokens.push(selectorToken);
@@ -224,7 +230,14 @@ export class SwahiliTokenizer extends BaseTokenizer {
224
230
  if (PREPOSITIONS.has(lower)) return 'particle';
225
231
  // O(1) Map lookup instead of O(n) array search
226
232
  if (this.isKeyword(lower)) return 'keyword';
227
- if (token.startsWith('#') || token.startsWith('.') || token.startsWith('[')) return 'selector';
233
+ if (
234
+ token.startsWith('#') ||
235
+ token.startsWith('.') ||
236
+ token.startsWith('[') ||
237
+ token.startsWith('*') ||
238
+ token.startsWith('<')
239
+ )
240
+ return 'selector';
228
241
  if (token.startsWith('"') || token.startsWith("'")) return 'literal';
229
242
  if (/^\d/.test(token)) return 'literal';
230
243
  return 'identifier';
@@ -112,6 +112,12 @@ export class ThaiTokenizer extends BaseTokenizer {
112
112
  continue;
113
113
  }
114
114
 
115
+ // Check for property access (obj.prop) vs CSS selector (.active)
116
+ if (this.tryPropertyAccess(input, pos, tokens)) {
117
+ pos++;
118
+ continue;
119
+ }
120
+
115
121
  const selectorToken = this.trySelector(input, pos);
116
122
  if (selectorToken) {
117
123
  tokens.push(selectorToken);
@@ -225,7 +231,14 @@ export class ThaiTokenizer extends BaseTokenizer {
225
231
  classifyToken(value: string): TokenKind {
226
232
  // O(1) Map lookup instead of O(n) array search
227
233
  if (this.isKeyword(value)) return 'keyword';
228
- if (value.startsWith('.') || value.startsWith('#') || value.startsWith('[')) return 'selector';
234
+ if (
235
+ value.startsWith('.') ||
236
+ value.startsWith('#') ||
237
+ value.startsWith('[') ||
238
+ value.startsWith('*') ||
239
+ value.startsWith('<')
240
+ )
241
+ return 'selector';
229
242
  if (value.startsWith(':')) return 'identifier';
230
243
  if (value.startsWith('"') || value.startsWith("'")) return 'literal';
231
244
  if (/^-?\d/.test(value)) return 'literal';