@lokascript/semantic 1.3.0 → 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 +7 -30
  230. package/dist/languages/bn.d.ts.map +1 -0
  231. package/dist/languages/bn.js +83 -21
  232. package/dist/languages/bn.js.map +1 -1
  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 +18 -17
  242. package/dist/languages/es-MX.d.ts.map +1 -0
  243. package/dist/languages/es-MX.js +66 -13
  244. package/dist/languages/es-MX.js.map +1 -1
  245. package/dist/languages/es.d.ts +6 -10
  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 +6 -67
  254. package/dist/languages/he.d.ts.map +1 -0
  255. package/dist/languages/he.js +60 -13
  256. package/dist/languages/he.js.map +1 -1
  257. package/dist/languages/hi.d.ts +14 -32
  258. package/dist/languages/hi.d.ts.map +1 -0
  259. package/dist/languages/hi.js +60 -13
  260. package/dist/languages/hi.js.map +1 -1
  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 +6 -50
  268. package/dist/languages/it.d.ts.map +1 -0
  269. package/dist/languages/it.js +60 -13
  270. package/dist/languages/it.js.map +1 -1
  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 +7 -29
  280. package/dist/languages/ms.d.ts.map +1 -0
  281. package/dist/languages/ms.js +58 -13
  282. package/dist/languages/ms.js.map +1 -1
  283. package/dist/languages/pl.d.ts +8 -33
  284. package/dist/languages/pl.d.ts.map +1 -0
  285. package/dist/languages/pl.js +277 -22
  286. package/dist/languages/pl.js.map +1 -1
  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 +14 -33
  296. package/dist/languages/ru.d.ts.map +1 -0
  297. package/dist/languages/ru.js +371 -22
  298. package/dist/languages/ru.js.map +1 -1
  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 +7 -32
  304. package/dist/languages/th.d.ts.map +1 -0
  305. package/dist/languages/th.js +60 -13
  306. package/dist/languages/th.js.map +1 -1
  307. package/dist/languages/tl.d.ts +7 -29
  308. package/dist/languages/tl.d.ts.map +1 -0
  309. package/dist/languages/tl.js +75 -23
  310. package/dist/languages/tl.js.map +1 -1
  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 +14 -33
  316. package/dist/languages/uk.d.ts.map +1 -0
  317. package/dist/languages/uk.js +357 -22
  318. package/dist/languages/uk.js.map +1 -1
  319. package/dist/languages/vi.d.ts +7 -56
  320. package/dist/languages/vi.d.ts.map +1 -0
  321. package/dist/languages/vi.js +59 -13
  322. package/dist/languages/vi.js.map +1 -1
  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/{spanish-BedpM-NU.d.ts → tokenizers/spanish.d.ts} +5 -7
  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 +38 -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,644 @@
1
+ /**
2
+ * Base Tokenizer Class
3
+ *
4
+ * Abstract base class for language-specific tokenizers.
5
+ * Provides keyword management, morphological normalization,
6
+ * and high-level token extraction methods.
7
+ */
8
+
9
+ import type { LanguageToken, TokenKind, TokenStream, LanguageTokenizer } from '../types';
10
+ import type { MorphologicalNormalizer, NormalizationResult } from './morphology/types';
11
+ import {
12
+ createToken,
13
+ createPosition,
14
+ isWhitespace,
15
+ isDigit,
16
+ isAsciiIdentifierChar,
17
+ type TimeUnitMapping,
18
+ type CreateTokenOptions,
19
+ } from './token-utils';
20
+ import { extractCssSelector, extractStringLiteral, extractNumber, extractUrl } from './extractors';
21
+
22
+ // =============================================================================
23
+ // Types
24
+ // =============================================================================
25
+
26
+ /**
27
+ * Keyword entry for tokenizer - maps native word to normalized English form.
28
+ */
29
+ export interface KeywordEntry {
30
+ readonly native: string;
31
+ readonly normalized: string;
32
+ }
33
+
34
+ /**
35
+ * Profile interface for keyword derivation.
36
+ * Matches the structure of LanguageProfile but only includes fields needed for tokenization.
37
+ */
38
+ export interface TokenizerProfile {
39
+ readonly keywords?: Record<
40
+ string,
41
+ { primary: string; alternatives?: string[]; normalized?: string }
42
+ >;
43
+ readonly references?: Record<string, string>;
44
+ readonly roleMarkers?: Record<
45
+ string,
46
+ { primary: string; alternatives?: string[]; position?: string }
47
+ >;
48
+ }
49
+
50
+ // =============================================================================
51
+ // Base Tokenizer Class
52
+ // =============================================================================
53
+
54
+ /**
55
+ * Abstract base class for language-specific tokenizers.
56
+ * Provides common functionality for CSS selectors, strings, and numbers.
57
+ */
58
+ export abstract class BaseTokenizer implements LanguageTokenizer {
59
+ abstract readonly language: string;
60
+ abstract readonly direction: 'ltr' | 'rtl';
61
+
62
+ /** Optional morphological normalizer for this language */
63
+ protected normalizer?: MorphologicalNormalizer;
64
+
65
+ /** Keywords derived from profile, sorted longest-first for greedy matching */
66
+ protected profileKeywords: KeywordEntry[] = [];
67
+
68
+ /** Map for O(1) keyword lookups by lowercase native word */
69
+ protected profileKeywordMap: Map<string, KeywordEntry> = new Map();
70
+
71
+ abstract tokenize(input: string): TokenStream;
72
+ abstract classifyToken(token: string): TokenKind;
73
+
74
+ /**
75
+ * Check if current position is a property access (obj.prop) vs CSS selector (.active).
76
+ * Property access: no whitespace before '.', previous token is identifier/keyword/selector.
77
+ * Also detects standalone method calls: .identifier( pattern.
78
+ *
79
+ * Returns true if '.' was emitted as an operator token and pos should advance by 1.
80
+ * Returns false if this is a CSS selector and should be handled by trySelector().
81
+ */
82
+ protected tryPropertyAccess(input: string, pos: number, tokens: LanguageToken[]): boolean {
83
+ if (input[pos] !== '.') return false;
84
+
85
+ const lastToken = tokens[tokens.length - 1];
86
+ // Property access requires NO whitespace between tokens (e.g., "obj.prop")
87
+ const hasWhitespaceBefore = lastToken && lastToken.position.end < pos;
88
+ const isPropertyAccess =
89
+ lastToken &&
90
+ !hasWhitespaceBefore &&
91
+ (lastToken.kind === 'identifier' ||
92
+ lastToken.kind === 'keyword' ||
93
+ lastToken.kind === 'selector');
94
+
95
+ if (isPropertyAccess) {
96
+ tokens.push(createToken('.', 'operator', createPosition(pos, pos + 1)));
97
+ return true;
98
+ }
99
+
100
+ // Check for method call pattern at start: .identifier(
101
+ const methodStart = pos + 1;
102
+ let methodEnd = methodStart;
103
+ while (methodEnd < input.length && isAsciiIdentifierChar(input[methodEnd])) {
104
+ methodEnd++;
105
+ }
106
+ if (methodEnd < input.length && input[methodEnd] === '(') {
107
+ tokens.push(createToken('.', 'operator', createPosition(pos, pos + 1)));
108
+ return true;
109
+ }
110
+
111
+ return false;
112
+ }
113
+
114
+ /**
115
+ * Initialize keyword mappings from a language profile.
116
+ * Builds a list of native→english mappings from:
117
+ * - profile.keywords (primary + alternatives)
118
+ * - profile.references (me, it, you, etc.)
119
+ * - profile.roleMarkers (into, from, with, etc.)
120
+ *
121
+ * Results are sorted longest-first for greedy matching (important for non-space languages).
122
+ * Extras take precedence over profile entries when there are duplicates.
123
+ *
124
+ * @param profile - Language profile containing keyword translations
125
+ * @param extras - Additional keyword entries to include (literals, positional, events)
126
+ */
127
+ protected initializeKeywordsFromProfile(
128
+ profile: TokenizerProfile,
129
+ extras: KeywordEntry[] = []
130
+ ): void {
131
+ // Use a Map to deduplicate, with extras taking precedence
132
+ const keywordMap = new Map<string, KeywordEntry>();
133
+
134
+ // Extract from keywords (command translations)
135
+ if (profile.keywords) {
136
+ for (const [normalized, translation] of Object.entries(profile.keywords)) {
137
+ // Primary translation
138
+ keywordMap.set(translation.primary, {
139
+ native: translation.primary,
140
+ normalized: translation.normalized || normalized,
141
+ });
142
+
143
+ // Alternative forms
144
+ if (translation.alternatives) {
145
+ for (const alt of translation.alternatives) {
146
+ keywordMap.set(alt, {
147
+ native: alt,
148
+ normalized: translation.normalized || normalized,
149
+ });
150
+ }
151
+ }
152
+ }
153
+ }
154
+
155
+ // Extract from references (me, it, you, etc.)
156
+ if (profile.references) {
157
+ for (const [normalized, native] of Object.entries(profile.references)) {
158
+ keywordMap.set(native, { native, normalized });
159
+ }
160
+ // Also register English canonical forms as universal fallbacks.
161
+ // Users frequently mix English references (me, it, you) into non-English
162
+ // hyperscript (e.g., "alternar .active on me"). Without this, the English
163
+ // word "me" would be unrecognized in non-English token streams.
164
+ for (const canonical of Object.keys(profile.references)) {
165
+ if (!keywordMap.has(canonical)) {
166
+ keywordMap.set(canonical, { native: canonical, normalized: canonical });
167
+ }
168
+ }
169
+ }
170
+
171
+ // Extract from roleMarkers (into, from, with, etc.)
172
+ if (profile.roleMarkers) {
173
+ for (const [role, marker] of Object.entries(profile.roleMarkers)) {
174
+ if (marker.primary) {
175
+ keywordMap.set(marker.primary, { native: marker.primary, normalized: role });
176
+ }
177
+ if (marker.alternatives) {
178
+ for (const alt of marker.alternatives) {
179
+ keywordMap.set(alt, { native: alt, normalized: role });
180
+ }
181
+ }
182
+ }
183
+ }
184
+
185
+ // Add extra entries (literals, positional, events) - these OVERRIDE profile entries
186
+ for (const extra of extras) {
187
+ keywordMap.set(extra.native, extra);
188
+ }
189
+
190
+ // Convert to array and sort longest-first for greedy matching
191
+ this.profileKeywords = Array.from(keywordMap.values()).sort(
192
+ (a, b) => b.native.length - a.native.length
193
+ );
194
+
195
+ // Build Map for O(1) lookups (case-insensitive + diacritic-insensitive)
196
+ // This allows matching both 'بدّل' (with shadda) and 'بدل' (without) to the same entry
197
+ this.profileKeywordMap = new Map();
198
+ for (const keyword of this.profileKeywords) {
199
+ // Add original form (with diacritics if present)
200
+ this.profileKeywordMap.set(keyword.native.toLowerCase(), keyword);
201
+
202
+ // Add diacritic-normalized form (for Arabic, Turkish, etc.)
203
+ const normalized = this.removeDiacritics(keyword.native);
204
+ if (normalized !== keyword.native && !this.profileKeywordMap.has(normalized.toLowerCase())) {
205
+ this.profileKeywordMap.set(normalized.toLowerCase(), keyword);
206
+ }
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Remove diacritical marks from a word for normalization.
212
+ * Primarily for Arabic (shadda, fatha, kasra, damma, sukun, etc.)
213
+ * but could be extended for other languages.
214
+ *
215
+ * @param word - Word to normalize
216
+ * @returns Word without diacritics
217
+ */
218
+ protected removeDiacritics(word: string): string {
219
+ // Arabic diacritics: U+064B-U+0652 (fatha, kasra, damma, sukun, shadda, etc.)
220
+ // U+0670 (superscript alif)
221
+ return word.replace(/[\u064B-\u0652\u0670]/g, '');
222
+ }
223
+
224
+ /**
225
+ * Try to match a keyword from profile at the current position.
226
+ * Uses longest-first greedy matching (important for non-space languages).
227
+ *
228
+ * @param input - Input string
229
+ * @param pos - Current position
230
+ * @returns Token if matched, null otherwise
231
+ */
232
+ protected tryProfileKeyword(input: string, pos: number): LanguageToken | null {
233
+ for (const entry of this.profileKeywords) {
234
+ if (input.slice(pos).startsWith(entry.native)) {
235
+ return createToken(
236
+ entry.native,
237
+ 'keyword',
238
+ createPosition(pos, pos + entry.native.length),
239
+ entry.normalized
240
+ );
241
+ }
242
+ }
243
+ return null;
244
+ }
245
+
246
+ /**
247
+ * Check if the remaining input starts with any known keyword.
248
+ * Useful for non-space languages to detect word boundaries.
249
+ *
250
+ * @param input - Input string
251
+ * @param pos - Current position
252
+ * @returns true if a keyword starts at this position
253
+ */
254
+ protected isKeywordStart(input: string, pos: number): boolean {
255
+ const remaining = input.slice(pos);
256
+ return this.profileKeywords.some(entry => remaining.startsWith(entry.native));
257
+ }
258
+
259
+ /**
260
+ * Look up a keyword by native word (case-insensitive).
261
+ * O(1) lookup using the keyword map.
262
+ *
263
+ * @param native - Native word to look up
264
+ * @returns KeywordEntry if found, undefined otherwise
265
+ */
266
+ protected lookupKeyword(native: string): KeywordEntry | undefined {
267
+ return this.profileKeywordMap.get(native.toLowerCase());
268
+ }
269
+
270
+ /**
271
+ * Check if a word is a known keyword (case-insensitive).
272
+ * O(1) lookup using the keyword map.
273
+ *
274
+ * @param native - Native word to check
275
+ * @returns true if the word is a keyword
276
+ */
277
+ protected isKeyword(native: string): boolean {
278
+ return this.profileKeywordMap.has(native.toLowerCase());
279
+ }
280
+
281
+ /**
282
+ * Set the morphological normalizer for this tokenizer.
283
+ */
284
+ setNormalizer(normalizer: MorphologicalNormalizer): void {
285
+ this.normalizer = normalizer;
286
+ }
287
+
288
+ /**
289
+ * Try to normalize a word using the morphological normalizer.
290
+ * Returns null if no normalizer is set or normalization fails.
291
+ *
292
+ * Note: We don't check isNormalizable() here because the individual tokenizers
293
+ * historically called normalize() directly without that check. The normalize()
294
+ * method itself handles returning noChange() for words that can't be normalized.
295
+ */
296
+ protected tryNormalize(word: string): NormalizationResult | null {
297
+ if (!this.normalizer) return null;
298
+
299
+ const result = this.normalizer.normalize(word);
300
+
301
+ // Only return if actually normalized (stem differs from input)
302
+ if (result.stem !== word && result.confidence >= 0.7) {
303
+ return result;
304
+ }
305
+
306
+ return null;
307
+ }
308
+
309
+ /**
310
+ * Try morphological normalization and keyword lookup.
311
+ *
312
+ * If the word can be normalized to a stem that matches a known keyword,
313
+ * returns a keyword token with morphological metadata (stem, stemConfidence).
314
+ *
315
+ * This is the common pattern for handling conjugated verbs across languages:
316
+ * 1. Normalize the word (e.g., "toggled" → "toggle")
317
+ * 2. Look up the stem in the keyword map
318
+ * 3. Create a token with both the original form and stem metadata
319
+ *
320
+ * @param word - The word to normalize and look up
321
+ * @param startPos - Start position for the token
322
+ * @param endPos - End position for the token
323
+ * @returns Token if stem matches a keyword, null otherwise
324
+ */
325
+ protected tryMorphKeywordMatch(
326
+ word: string,
327
+ startPos: number,
328
+ endPos: number
329
+ ): LanguageToken | null {
330
+ const result = this.tryNormalize(word);
331
+ if (!result) return null;
332
+
333
+ // Check if the stem is a known keyword
334
+ const stemEntry = this.lookupKeyword(result.stem);
335
+ if (!stemEntry) return null;
336
+
337
+ const tokenOptions: CreateTokenOptions = {
338
+ normalized: stemEntry.normalized,
339
+ stem: result.stem,
340
+ stemConfidence: result.confidence,
341
+ };
342
+ return createToken(word, 'keyword', createPosition(startPos, endPos), tokenOptions);
343
+ }
344
+
345
+ /**
346
+ * Try to extract a CSS selector at the current position.
347
+ */
348
+ protected trySelector(input: string, pos: number): LanguageToken | null {
349
+ const selector = extractCssSelector(input, pos);
350
+ if (selector) {
351
+ return createToken(selector, 'selector', createPosition(pos, pos + selector.length));
352
+ }
353
+ return null;
354
+ }
355
+
356
+ /**
357
+ * Try to extract an event modifier at the current position.
358
+ * Event modifiers are .once, .debounce(N), .throttle(N), .queue(strategy)
359
+ */
360
+ protected tryEventModifier(input: string, pos: number): LanguageToken | null {
361
+ // Must start with a dot
362
+ if (input[pos] !== '.') {
363
+ return null;
364
+ }
365
+
366
+ // Match pattern: .(once|debounce|throttle|queue) followed by optional (value)
367
+ const match = input
368
+ .slice(pos)
369
+ .match(/^\.(?:once|debounce|throttle|queue)(?:\(([^)]+)\))?(?:\s|$|\.)/);
370
+ if (!match) {
371
+ return null;
372
+ }
373
+
374
+ const fullMatch = match[0].replace(/(\s|\.)$/, ''); // Remove trailing space or dot
375
+ const modifierName = fullMatch.slice(1).split('(')[0]; // Extract modifier name
376
+ const value = match[1]; // Extract value from parentheses if present
377
+
378
+ // Create token with metadata
379
+ const token = createToken(
380
+ fullMatch,
381
+ 'event-modifier',
382
+ createPosition(pos, pos + fullMatch.length)
383
+ );
384
+
385
+ // Add metadata for the modifier
386
+ return {
387
+ ...token,
388
+ metadata: {
389
+ modifierName,
390
+ value: value ? (modifierName === 'queue' ? value : parseInt(value, 10)) : undefined,
391
+ },
392
+ };
393
+ }
394
+
395
+ /**
396
+ * Try to extract a string literal at the current position.
397
+ */
398
+ protected tryString(input: string, pos: number): LanguageToken | null {
399
+ const literal = extractStringLiteral(input, pos);
400
+ if (literal) {
401
+ return createToken(literal, 'literal', createPosition(pos, pos + literal.length));
402
+ }
403
+ return null;
404
+ }
405
+
406
+ /**
407
+ * Try to extract a number at the current position.
408
+ */
409
+ protected tryNumber(input: string, pos: number): LanguageToken | null {
410
+ const number = extractNumber(input, pos);
411
+ if (number) {
412
+ return createToken(number, 'literal', createPosition(pos, pos + number.length));
413
+ }
414
+ return null;
415
+ }
416
+
417
+ /**
418
+ * Configuration for native language time units.
419
+ * Maps patterns to their standard suffix (ms, s, m, h).
420
+ */
421
+ protected static readonly STANDARD_TIME_UNITS: readonly TimeUnitMapping[] = [
422
+ { pattern: 'ms', suffix: 'ms', length: 2 },
423
+ { pattern: 's', suffix: 's', length: 1, checkBoundary: true },
424
+ { pattern: 'm', suffix: 'm', length: 1, checkBoundary: true, notFollowedBy: 's' },
425
+ { pattern: 'h', suffix: 'h', length: 1, checkBoundary: true },
426
+ ];
427
+
428
+ /**
429
+ * Try to match a time unit from a list of patterns.
430
+ *
431
+ * @param input - Input string
432
+ * @param pos - Position after the number
433
+ * @param timeUnits - Array of time unit mappings (native pattern → standard suffix)
434
+ * @param skipWhitespace - Whether to skip whitespace before time unit (default: false)
435
+ * @returns Object with matched suffix and new position, or null if no match
436
+ */
437
+ protected tryMatchTimeUnit(
438
+ input: string,
439
+ pos: number,
440
+ timeUnits: readonly TimeUnitMapping[],
441
+ skipWhitespace = false
442
+ ): { suffix: string; endPos: number } | null {
443
+ let unitPos = pos;
444
+
445
+ // Optionally skip whitespace before time unit
446
+ if (skipWhitespace) {
447
+ while (unitPos < input.length && isWhitespace(input[unitPos])) {
448
+ unitPos++;
449
+ }
450
+ }
451
+
452
+ const remaining = input.slice(unitPos);
453
+
454
+ // Check each time unit pattern
455
+ for (const unit of timeUnits) {
456
+ const candidate = remaining.slice(0, unit.length);
457
+ const matches = unit.caseInsensitive
458
+ ? candidate.toLowerCase() === unit.pattern.toLowerCase()
459
+ : candidate === unit.pattern;
460
+
461
+ if (matches) {
462
+ // Check notFollowedBy constraint (e.g., 'm' should not match 'ms')
463
+ if (unit.notFollowedBy) {
464
+ const nextChar = remaining[unit.length] || '';
465
+ if (nextChar === unit.notFollowedBy) continue;
466
+ }
467
+
468
+ // Check word boundary if required
469
+ if (unit.checkBoundary) {
470
+ const nextChar = remaining[unit.length] || '';
471
+ if (isAsciiIdentifierChar(nextChar)) continue;
472
+ }
473
+
474
+ return { suffix: unit.suffix, endPos: unitPos + unit.length };
475
+ }
476
+ }
477
+
478
+ return null;
479
+ }
480
+
481
+ /**
482
+ * Parse a base number (sign, integer, decimal) without time units.
483
+ * Returns the number string and end position.
484
+ *
485
+ * @param input - Input string
486
+ * @param startPos - Start position
487
+ * @param allowSign - Whether to allow +/- sign (default: true)
488
+ * @returns Object with number string and end position, or null
489
+ */
490
+ protected parseBaseNumber(
491
+ input: string,
492
+ startPos: number,
493
+ allowSign = true
494
+ ): { number: string; endPos: number } | null {
495
+ let pos = startPos;
496
+ let number = '';
497
+
498
+ // Optional sign
499
+ if (allowSign && (input[pos] === '-' || input[pos] === '+')) {
500
+ number += input[pos++];
501
+ }
502
+
503
+ // Must have at least one digit
504
+ if (pos >= input.length || !isDigit(input[pos])) {
505
+ return null;
506
+ }
507
+
508
+ // Integer part
509
+ while (pos < input.length && isDigit(input[pos])) {
510
+ number += input[pos++];
511
+ }
512
+
513
+ // Optional decimal
514
+ if (pos < input.length && input[pos] === '.') {
515
+ number += input[pos++];
516
+ while (pos < input.length && isDigit(input[pos])) {
517
+ number += input[pos++];
518
+ }
519
+ }
520
+
521
+ if (!number || number === '-' || number === '+') return null;
522
+
523
+ return { number, endPos: pos };
524
+ }
525
+
526
+ /**
527
+ * Try to extract a number with native language time units.
528
+ *
529
+ * This is a template method that handles the common pattern:
530
+ * 1. Parse the base number (sign, integer, decimal)
531
+ * 2. Try to match native language time units
532
+ * 3. Fall back to standard time units (ms, s, m, h)
533
+ *
534
+ * @param input - Input string
535
+ * @param pos - Start position
536
+ * @param nativeTimeUnits - Language-specific time unit mappings
537
+ * @param options - Configuration options
538
+ * @returns Token if number found, null otherwise
539
+ */
540
+ protected tryNumberWithTimeUnits(
541
+ input: string,
542
+ pos: number,
543
+ nativeTimeUnits: readonly TimeUnitMapping[],
544
+ options: { allowSign?: boolean; skipWhitespace?: boolean } = {}
545
+ ): LanguageToken | null {
546
+ const { allowSign = true, skipWhitespace = false } = options;
547
+
548
+ // Parse base number
549
+ const baseResult = this.parseBaseNumber(input, pos, allowSign);
550
+ if (!baseResult) return null;
551
+
552
+ let { number, endPos } = baseResult;
553
+
554
+ // Try native time units first, then standard
555
+ const allUnits = [...nativeTimeUnits, ...BaseTokenizer.STANDARD_TIME_UNITS];
556
+ const timeMatch = this.tryMatchTimeUnit(input, endPos, allUnits, skipWhitespace);
557
+
558
+ if (timeMatch) {
559
+ number += timeMatch.suffix;
560
+ endPos = timeMatch.endPos;
561
+ }
562
+
563
+ return createToken(number, 'literal', createPosition(pos, endPos));
564
+ }
565
+
566
+ /**
567
+ * Try to extract a URL at the current position.
568
+ * Handles /path, ./path, ../path, //domain.com, http://, https://
569
+ */
570
+ protected tryUrl(input: string, pos: number): LanguageToken | null {
571
+ const url = extractUrl(input, pos);
572
+ if (url) {
573
+ return createToken(url, 'url', createPosition(pos, pos + url.length));
574
+ }
575
+ return null;
576
+ }
577
+
578
+ /**
579
+ * Try to extract a variable reference (:varname) at the current position.
580
+ * In hyperscript, :x refers to a local variable named x.
581
+ */
582
+ protected tryVariableRef(input: string, pos: number): LanguageToken | null {
583
+ if (input[pos] !== ':') return null;
584
+ if (pos + 1 >= input.length) return null;
585
+ if (!isAsciiIdentifierChar(input[pos + 1])) return null;
586
+
587
+ let endPos = pos + 1;
588
+ while (endPos < input.length && isAsciiIdentifierChar(input[endPos])) {
589
+ endPos++;
590
+ }
591
+
592
+ const varRef = input.slice(pos, endPos);
593
+ return createToken(varRef, 'identifier', createPosition(pos, endPos));
594
+ }
595
+
596
+ /**
597
+ * Try to extract an operator or punctuation token at the current position.
598
+ * Handles two-character operators (==, !=, etc.) and single-character operators.
599
+ */
600
+ protected tryOperator(input: string, pos: number): LanguageToken | null {
601
+ // Two-character operators
602
+ const twoChar = input.slice(pos, pos + 2);
603
+ if (['==', '!=', '<=', '>=', '&&', '||', '->'].includes(twoChar)) {
604
+ return createToken(twoChar, 'operator', createPosition(pos, pos + 2));
605
+ }
606
+
607
+ // Single-character operators
608
+ const oneChar = input[pos];
609
+ if (['<', '>', '!', '+', '-', '*', '/', '='].includes(oneChar)) {
610
+ return createToken(oneChar, 'operator', createPosition(pos, pos + 1));
611
+ }
612
+
613
+ // Punctuation
614
+ if (['(', ')', '{', '}', ',', ';', ':'].includes(oneChar)) {
615
+ return createToken(oneChar, 'punctuation', createPosition(pos, pos + 1));
616
+ }
617
+
618
+ return null;
619
+ }
620
+
621
+ /**
622
+ * Try to match a multi-character particle from a list.
623
+ *
624
+ * Used by languages like Japanese, Korean, and Chinese that have
625
+ * multi-character particles (e.g., Japanese から, まで, より).
626
+ *
627
+ * @param input - Input string
628
+ * @param pos - Current position
629
+ * @param particles - Array of multi-character particles to match
630
+ * @returns Token if matched, null otherwise
631
+ */
632
+ protected tryMultiCharParticle(
633
+ input: string,
634
+ pos: number,
635
+ particles: readonly string[]
636
+ ): LanguageToken | null {
637
+ for (const particle of particles) {
638
+ if (input.slice(pos, pos + particle.length) === particle) {
639
+ return createToken(particle, 'particle', createPosition(pos, pos + particle.length));
640
+ }
641
+ }
642
+ return null;
643
+ }
644
+ }