@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
@@ -324,8 +324,12 @@ var init_schema_validator = __esm({
324
324
  "measure",
325
325
  "return",
326
326
  "swap",
327
- "morph"
327
+ "morph",
328
328
  // DOM manipulation commands that accept various content types
329
+ "beep",
330
+ // Debug command — accepts any expression type
331
+ "copy"
332
+ // Clipboard — accepts text literals, selectors, or references
329
333
  ]);
330
334
  NO_REQUIRED_ROLES_COMMANDS = /* @__PURE__ */ new Set([
331
335
  "compound",
@@ -339,8 +343,14 @@ var init_schema_validator = __esm({
339
343
  "blur",
340
344
  "return",
341
345
  "js",
342
- "measure"
346
+ "measure",
343
347
  // Commands with optional-only roles
348
+ "break",
349
+ // Zero-arg control flow (exit loop)
350
+ "exit",
351
+ // Zero-arg control flow (exit handler)
352
+ "beep"
353
+ // Debug command — all roles optional
344
354
  ]);
345
355
  }
346
356
  });
@@ -360,7 +370,7 @@ function registerPatterns(code, patterns) {
360
370
  patternCache.delete(code);
361
371
  }
362
372
 
363
- // src/tokenizers/base.ts
373
+ // src/tokenizers/token-utils.ts
364
374
  var TokenStreamImpl = class {
365
375
  constructor(tokens, language) {
366
376
  this.pos = 0;
@@ -426,17 +436,14 @@ function createToken(value, kind, position, normalizedOrOptions) {
426
436
  }
427
437
  if (normalizedOrOptions) {
428
438
  const { normalized, stem, stemConfidence } = normalizedOrOptions;
429
- const token = { value, kind, position };
430
- if (normalized !== void 0) {
431
- token.normalized = normalized;
432
- }
433
- if (stem !== void 0) {
434
- token.stem = stem;
435
- if (stemConfidence !== void 0) {
436
- token.stemConfidence = stemConfidence;
437
- }
438
- }
439
- return token;
439
+ return {
440
+ value,
441
+ kind,
442
+ position,
443
+ ...normalized !== void 0 && { normalized },
444
+ ...stem !== void 0 && { stem },
445
+ ...stemConfidence !== void 0 && { stemConfidence }
446
+ };
440
447
  }
441
448
  return { value, kind, position };
442
449
  }
@@ -458,6 +465,8 @@ function isAsciiLetter(char) {
458
465
  function isAsciiIdentifierChar(char) {
459
466
  return /[a-zA-Z0-9_-]/.test(char);
460
467
  }
468
+
469
+ // src/tokenizers/extractors.ts
461
470
  function extractCssSelector(input, startPos) {
462
471
  if (startPos >= input.length) return null;
463
472
  const char = input[startPos];
@@ -715,6 +724,8 @@ function extractNumber(input, startPos) {
715
724
  }
716
725
  return number;
717
726
  }
727
+
728
+ // src/tokenizers/base-tokenizer.ts
718
729
  var _BaseTokenizer = class _BaseTokenizer {
719
730
  constructor() {
720
731
  /** Keywords derived from profile, sorted longest-first for greedy matching */
@@ -722,6 +733,34 @@ var _BaseTokenizer = class _BaseTokenizer {
722
733
  /** Map for O(1) keyword lookups by lowercase native word */
723
734
  this.profileKeywordMap = /* @__PURE__ */ new Map();
724
735
  }
736
+ /**
737
+ * Check if current position is a property access (obj.prop) vs CSS selector (.active).
738
+ * Property access: no whitespace before '.', previous token is identifier/keyword/selector.
739
+ * Also detects standalone method calls: .identifier( pattern.
740
+ *
741
+ * Returns true if '.' was emitted as an operator token and pos should advance by 1.
742
+ * Returns false if this is a CSS selector and should be handled by trySelector().
743
+ */
744
+ tryPropertyAccess(input, pos, tokens) {
745
+ if (input[pos] !== ".") return false;
746
+ const lastToken = tokens[tokens.length - 1];
747
+ const hasWhitespaceBefore = lastToken && lastToken.position.end < pos;
748
+ const isPropertyAccess = lastToken && !hasWhitespaceBefore && (lastToken.kind === "identifier" || lastToken.kind === "keyword" || lastToken.kind === "selector");
749
+ if (isPropertyAccess) {
750
+ tokens.push(createToken(".", "operator", createPosition(pos, pos + 1)));
751
+ return true;
752
+ }
753
+ const methodStart = pos + 1;
754
+ let methodEnd = methodStart;
755
+ while (methodEnd < input.length && isAsciiIdentifierChar(input[methodEnd])) {
756
+ methodEnd++;
757
+ }
758
+ if (methodEnd < input.length && input[methodEnd] === "(") {
759
+ tokens.push(createToken(".", "operator", createPosition(pos, pos + 1)));
760
+ return true;
761
+ }
762
+ return false;
763
+ }
725
764
  /**
726
765
  * Initialize keyword mappings from a language profile.
727
766
  * Builds a list of native→english mappings from:
@@ -757,6 +796,11 @@ var _BaseTokenizer = class _BaseTokenizer {
757
796
  for (const [normalized, native] of Object.entries(profile.references)) {
758
797
  keywordMap.set(native, { native, normalized });
759
798
  }
799
+ for (const canonical of Object.keys(profile.references)) {
800
+ if (!keywordMap.has(canonical)) {
801
+ keywordMap.set(canonical, { native: canonical, normalized: canonical });
802
+ }
803
+ }
760
804
  }
761
805
  if (profile.roleMarkers) {
762
806
  for (const [role, marker] of Object.entries(profile.roleMarkers)) {
@@ -1222,6 +1266,12 @@ var englishProfile = {
1222
1266
  behavior: { primary: "behavior" },
1223
1267
  install: { primary: "install" },
1224
1268
  measure: { primary: "measure" },
1269
+ beep: { primary: "beep" },
1270
+ break: { primary: "break" },
1271
+ copy: { primary: "copy" },
1272
+ exit: { primary: "exit" },
1273
+ pick: { primary: "pick" },
1274
+ render: { primary: "render" },
1225
1275
  into: { primary: "into" },
1226
1276
  before: { primary: "before" },
1227
1277
  after: { primary: "after" },
@@ -1434,7 +1484,8 @@ var EnglishTokenizer = class extends BaseTokenizer {
1434
1484
  }
1435
1485
  classifyToken(token) {
1436
1486
  if (this.isKeyword(token)) return "keyword";
1437
- if (token.startsWith("#") || token.startsWith(".") || token.startsWith("[")) return "selector";
1487
+ if (token.startsWith("#") || token.startsWith(".") || token.startsWith("[") || token.startsWith("*") || token.startsWith("<"))
1488
+ return "selector";
1438
1489
  if (token.startsWith('"') || token.startsWith("'")) return "literal";
1439
1490
  if (/^\d/.test(token)) return "literal";
1440
1491
  if (["==", "!=", "<=", ">=", "<", ">", "&&", "||", "!"].includes(token)) return "operator";
@@ -1576,7 +1627,9 @@ var addSchema = {
1576
1627
  expectedTypes: ["selector", "reference"],
1577
1628
  default: { type: "reference", value: "me" },
1578
1629
  svoPosition: 2,
1579
- sovPosition: 1
1630
+ sovPosition: 1,
1631
+ markerOverride: { en: "to" }
1632
+ // "add .class to #element"
1580
1633
  }
1581
1634
  ],
1582
1635
  // Runtime error documentation
@@ -1653,8 +1706,10 @@ var putSchema = {
1653
1706
  required: true,
1654
1707
  expectedTypes: ["selector", "reference"],
1655
1708
  svoPosition: 2,
1656
- sovPosition: 2
1709
+ sovPosition: 2,
1657
1710
  // SOV: destination comes second (に/에/a marker)
1711
+ markerOverride: { en: "into" }
1712
+ // "put 'hello' into #output"
1658
1713
  }
1659
1714
  ],
1660
1715
  // Runtime error documentation
@@ -1717,8 +1772,16 @@ var setSchema = {
1717
1772
  // "x 를 10 으로 설정" - variable gets object marker
1718
1773
  tr: "i",
1719
1774
  // "x i 10 e ayarla" - variable gets accusative marker
1720
- ar: ""
1775
+ ar: "",
1721
1776
  // "عيّن x إلى 10" - no marker before variable
1777
+ sw: "",
1778
+ // "seti x kwenye 10" - no marker before variable
1779
+ tl: "",
1780
+ // "itakda x sa 10" - no marker before variable
1781
+ bn: "\u0995\u09C7",
1782
+ // "x কে 10 তে সেট" - patient marker on variable
1783
+ qu: "ta"
1784
+ // "x ta 10 man churay" - patient marker on variable
1722
1785
  }
1723
1786
  },
1724
1787
  {
@@ -1750,8 +1813,16 @@ var setSchema = {
1750
1813
  // "x 를 10 으로 설정" - value gets manner/instrument marker
1751
1814
  tr: "e",
1752
1815
  // "x i 10 e ayarla" - value gets dative marker
1753
- ar: "\u0625\u0644\u0649"
1816
+ ar: "\u0625\u0644\u0649",
1754
1817
  // "عيّن x إلى 10" - value gets preposition "to"
1818
+ sw: "kwenye",
1819
+ // "seti x kwenye 10" - destination prep before value
1820
+ tl: "sa",
1821
+ // "itakda x sa 10" - destination prep before value
1822
+ bn: "\u09A4\u09C7",
1823
+ // "x কে 10 তে সেট" - destination marker on value
1824
+ qu: "man"
1825
+ // "x ta 10 man churay" - destination marker on value
1755
1826
  }
1756
1827
  }
1757
1828
  ],
@@ -1913,7 +1984,10 @@ var fetchSchema = {
1913
1984
  required: true,
1914
1985
  expectedTypes: ["literal", "expression"],
1915
1986
  svoPosition: 1,
1916
- sovPosition: 1
1987
+ sovPosition: 1,
1988
+ // No markerOverride — uses profile default 'from' for parsing.
1989
+ renderOverride: { en: "" }
1990
+ // "fetch /api" (rendering — no preposition)
1917
1991
  },
1918
1992
  {
1919
1993
  role: "responseType",
@@ -1963,7 +2037,9 @@ var incrementSchema = {
1963
2037
  expectedTypes: ["literal"],
1964
2038
  default: { type: "literal", value: 1, dataType: "number" },
1965
2039
  svoPosition: 2,
1966
- sovPosition: 2
2040
+ sovPosition: 2,
2041
+ markerOverride: { en: "by" }
2042
+ // "increment :count by 5"
1967
2043
  }
1968
2044
  ]
1969
2045
  };
@@ -1988,7 +2064,9 @@ var decrementSchema = {
1988
2064
  expectedTypes: ["literal"],
1989
2065
  default: { type: "literal", value: 1, dataType: "number" },
1990
2066
  svoPosition: 2,
1991
- sovPosition: 2
2067
+ sovPosition: 2,
2068
+ markerOverride: { en: "by" }
2069
+ // "decrement :count by 5"
1992
2070
  }
1993
2071
  ]
1994
2072
  };
@@ -2012,7 +2090,9 @@ var appendSchema = {
2012
2090
  required: true,
2013
2091
  expectedTypes: ["selector", "reference"],
2014
2092
  svoPosition: 2,
2015
- sovPosition: 1
2093
+ sovPosition: 1,
2094
+ markerOverride: { en: "to" }
2095
+ // "append <content> to #element"
2016
2096
  }
2017
2097
  ]
2018
2098
  };
@@ -2036,7 +2116,9 @@ var prependSchema = {
2036
2116
  required: true,
2037
2117
  expectedTypes: ["selector", "reference"],
2038
2118
  svoPosition: 2,
2039
- sovPosition: 1
2119
+ sovPosition: 1,
2120
+ markerOverride: { en: "to" }
2121
+ // "prepend <content> to #element"
2040
2122
  }
2041
2123
  ]
2042
2124
  };
@@ -2086,7 +2168,15 @@ var getCommandSchema = {
2086
2168
  // Arabic preposition: احصل على #element
2087
2169
  tr: "i",
2088
2170
  // Turkish accusative: #element i al
2089
- id: ""
2171
+ id: "",
2172
+ sw: "",
2173
+ // Swahili SVO: pata #element (no marker)
2174
+ tl: "",
2175
+ // Tagalog VSO: kunin #element (no marker)
2176
+ bn: "\u0995\u09C7",
2177
+ // Bengali SOV: #element কে পান (patient marker)
2178
+ qu: "ta"
2179
+ // Quechua SOV: #element ta taripay (patient marker)
2090
2180
  }
2091
2181
  },
2092
2182
  {
@@ -2338,7 +2428,9 @@ var forSchema = {
2338
2428
  required: true,
2339
2429
  expectedTypes: ["selector", "reference", "expression"],
2340
2430
  svoPosition: 2,
2341
- sovPosition: 1
2431
+ sovPosition: 1,
2432
+ markerOverride: { en: "in" }
2433
+ // "for item in .items"
2342
2434
  }
2343
2435
  ]
2344
2436
  };
@@ -2379,7 +2471,11 @@ var goSchema = {
2379
2471
  required: true,
2380
2472
  expectedTypes: ["literal", "expression"],
2381
2473
  svoPosition: 1,
2382
- sovPosition: 1
2474
+ sovPosition: 1,
2475
+ markerOverride: { en: "to" },
2476
+ // "go to /page" (parsing)
2477
+ renderOverride: { en: "" }
2478
+ // "go /page" (rendering — no preposition)
2383
2479
  }
2384
2480
  ]
2385
2481
  };
@@ -2396,7 +2492,10 @@ var transitionSchema = {
2396
2492
  expectedTypes: ["literal"],
2397
2493
  // Only literal - CSS properties are strings, not selectors
2398
2494
  svoPosition: 1,
2399
- sovPosition: 2
2495
+ sovPosition: 2,
2496
+ // No marker before the CSS property name (SVO/VSO languages)
2497
+ // SOV languages (bn, qu) use their default patient marker from profile
2498
+ markerOverride: { en: "", ar: "", tl: "", sw: "" }
2400
2499
  },
2401
2500
  {
2402
2501
  role: "goal",
@@ -2404,7 +2503,24 @@ var transitionSchema = {
2404
2503
  required: true,
2405
2504
  expectedTypes: ["literal", "expression"],
2406
2505
  svoPosition: 2,
2407
- sovPosition: 3
2506
+ sovPosition: 3,
2507
+ // "to" preposition before goal value (same as set's patient marker)
2508
+ markerOverride: {
2509
+ en: "to",
2510
+ ar: "\u0625\u0644\u0649",
2511
+ tl: "sa",
2512
+ sw: "kwenye",
2513
+ bn: "\u09A4\u09C7",
2514
+ qu: "man",
2515
+ es: "a",
2516
+ pt: "para",
2517
+ fr: "\xE0",
2518
+ de: "auf",
2519
+ ja: "\u306B",
2520
+ ko: "\uC73C\uB85C",
2521
+ tr: "e",
2522
+ id: "ke"
2523
+ }
2408
2524
  },
2409
2525
  {
2410
2526
  role: "destination",
@@ -2421,7 +2537,9 @@ var transitionSchema = {
2421
2537
  required: false,
2422
2538
  expectedTypes: ["literal"],
2423
2539
  svoPosition: 4,
2424
- sovPosition: 4
2540
+ sovPosition: 4,
2541
+ markerOverride: { en: "over" }
2542
+ // "transition opacity to 1 over 500ms"
2425
2543
  },
2426
2544
  {
2427
2545
  role: "style",
@@ -2453,7 +2571,9 @@ var cloneSchema = {
2453
2571
  required: false,
2454
2572
  expectedTypes: ["selector", "reference"],
2455
2573
  svoPosition: 2,
2456
- sovPosition: 1
2574
+ sovPosition: 1,
2575
+ markerOverride: { en: "into" }
2576
+ // "clone #element into #container"
2457
2577
  }
2458
2578
  ]
2459
2579
  };
@@ -2561,7 +2681,9 @@ var tellSchema = {
2561
2681
  required: true,
2562
2682
  expectedTypes: ["selector", "reference"],
2563
2683
  svoPosition: 1,
2564
- sovPosition: 1
2684
+ sovPosition: 1,
2685
+ markerOverride: { en: "" }
2686
+ // "tell #element ..." (no preposition)
2565
2687
  }
2566
2688
  ]
2567
2689
  };
@@ -2577,7 +2699,16 @@ var defaultSchema = {
2577
2699
  required: true,
2578
2700
  expectedTypes: ["reference"],
2579
2701
  svoPosition: 1,
2580
- sovPosition: 1
2702
+ sovPosition: 1,
2703
+ // Same overrides as SET: no marker before variable in VSO/SVO
2704
+ markerOverride: {
2705
+ en: "",
2706
+ ar: "",
2707
+ tl: "",
2708
+ sw: "",
2709
+ bn: "\u0995\u09C7",
2710
+ qu: "ta"
2711
+ }
2581
2712
  },
2582
2713
  {
2583
2714
  role: "patient",
@@ -2585,7 +2716,16 @@ var defaultSchema = {
2585
2716
  required: true,
2586
2717
  expectedTypes: ["literal", "expression"],
2587
2718
  svoPosition: 2,
2588
- sovPosition: 2
2719
+ sovPosition: 2,
2720
+ // Same overrides as SET: value gets destination preposition
2721
+ markerOverride: {
2722
+ en: "to",
2723
+ ar: "\u0625\u0644\u0649",
2724
+ tl: "sa",
2725
+ sw: "kwenye",
2726
+ bn: "\u09A4\u09C7",
2727
+ qu: "man"
2728
+ }
2589
2729
  }
2590
2730
  ]
2591
2731
  };
@@ -2662,7 +2802,9 @@ var measureSchema = {
2662
2802
  expectedTypes: ["selector", "reference"],
2663
2803
  default: { type: "reference", value: "me" },
2664
2804
  svoPosition: 2,
2665
- sovPosition: 2
2805
+ sovPosition: 2,
2806
+ markerOverride: { en: "of" }
2807
+ // "measure width of #element"
2666
2808
  }
2667
2809
  ]
2668
2810
  };
@@ -2678,7 +2820,9 @@ var swapSchema = {
2678
2820
  required: false,
2679
2821
  expectedTypes: ["literal"],
2680
2822
  svoPosition: 1,
2681
- sovPosition: 3
2823
+ sovPosition: 3,
2824
+ markerOverride: { en: "" }
2825
+ // "swap innerHTML ..." (no preposition)
2682
2826
  },
2683
2827
  {
2684
2828
  role: "destination",
@@ -2686,7 +2830,9 @@ var swapSchema = {
2686
2830
  required: true,
2687
2831
  expectedTypes: ["selector", "reference"],
2688
2832
  svoPosition: 2,
2689
- sovPosition: 1
2833
+ sovPosition: 1,
2834
+ markerOverride: { en: "of" }
2835
+ // "swap innerHTML of #target"
2690
2836
  },
2691
2837
  {
2692
2838
  role: "patient",
@@ -2694,7 +2840,9 @@ var swapSchema = {
2694
2840
  required: false,
2695
2841
  expectedTypes: ["literal", "expression", "selector"],
2696
2842
  svoPosition: 3,
2697
- sovPosition: 2
2843
+ sovPosition: 2,
2844
+ markerOverride: { en: "with" }
2845
+ // "swap innerHTML of #target with <html>"
2698
2846
  }
2699
2847
  ]
2700
2848
  };
@@ -2710,7 +2858,9 @@ var morphSchema = {
2710
2858
  required: true,
2711
2859
  expectedTypes: ["selector", "reference"],
2712
2860
  svoPosition: 1,
2713
- sovPosition: 1
2861
+ sovPosition: 1,
2862
+ markerOverride: { en: "" }
2863
+ // "morph #target ..." (no preposition)
2714
2864
  },
2715
2865
  {
2716
2866
  role: "patient",
@@ -2718,7 +2868,103 @@ var morphSchema = {
2718
2868
  required: true,
2719
2869
  expectedTypes: ["literal", "expression", "selector"],
2720
2870
  svoPosition: 2,
2871
+ sovPosition: 2,
2872
+ markerOverride: { en: "to" }
2873
+ // "morph #target to <html>"
2874
+ }
2875
+ ]
2876
+ };
2877
+ var beepSchema = {
2878
+ action: "beep",
2879
+ description: "Debug output for expressions with type information",
2880
+ category: "variable",
2881
+ primaryRole: "patient",
2882
+ roles: [
2883
+ {
2884
+ role: "patient",
2885
+ description: "The expression(s) to debug",
2886
+ required: false,
2887
+ expectedTypes: ["literal", "selector", "reference", "expression"],
2888
+ svoPosition: 1,
2889
+ sovPosition: 1
2890
+ }
2891
+ ]
2892
+ };
2893
+ var breakSchema = {
2894
+ action: "break",
2895
+ description: "Exit from the current loop",
2896
+ category: "control-flow",
2897
+ primaryRole: "patient",
2898
+ roles: []
2899
+ };
2900
+ var copySchema = {
2901
+ action: "copy",
2902
+ description: "Copy text or element content to the clipboard",
2903
+ category: "dom-content",
2904
+ primaryRole: "patient",
2905
+ roles: [
2906
+ {
2907
+ role: "patient",
2908
+ description: "The text or element to copy",
2909
+ required: true,
2910
+ expectedTypes: ["literal", "selector", "reference", "expression"],
2911
+ svoPosition: 1,
2912
+ sovPosition: 1
2913
+ }
2914
+ ]
2915
+ };
2916
+ var exitSchema = {
2917
+ action: "exit",
2918
+ description: "Exit from the current event handler",
2919
+ category: "control-flow",
2920
+ primaryRole: "patient",
2921
+ roles: []
2922
+ };
2923
+ var pickSchema = {
2924
+ action: "pick",
2925
+ description: "Select a random element from a collection",
2926
+ category: "variable",
2927
+ primaryRole: "patient",
2928
+ roles: [
2929
+ {
2930
+ role: "patient",
2931
+ description: "The items to pick from",
2932
+ required: true,
2933
+ expectedTypes: ["literal", "expression", "reference"],
2934
+ svoPosition: 1,
2935
+ sovPosition: 1
2936
+ },
2937
+ {
2938
+ role: "source",
2939
+ description: 'The array to pick from (with "from" keyword)',
2940
+ required: false,
2941
+ expectedTypes: ["reference", "expression"],
2942
+ svoPosition: 2,
2943
+ sovPosition: 2
2944
+ }
2945
+ ]
2946
+ };
2947
+ var renderSchema = {
2948
+ action: "render",
2949
+ description: "Render a template with optional variables",
2950
+ category: "dom-content",
2951
+ primaryRole: "patient",
2952
+ roles: [
2953
+ {
2954
+ role: "patient",
2955
+ description: "The template to render",
2956
+ required: true,
2957
+ expectedTypes: ["selector", "reference", "expression"],
2958
+ svoPosition: 1,
2721
2959
  sovPosition: 2
2960
+ },
2961
+ {
2962
+ role: "style",
2963
+ description: "Variables to pass to the template (with keyword)",
2964
+ required: false,
2965
+ expectedTypes: ["expression", "reference"],
2966
+ svoPosition: 2,
2967
+ sovPosition: 1
2722
2968
  }
2723
2969
  ]
2724
2970
  };
@@ -2776,6 +3022,13 @@ var commandSchemas = {
2776
3022
  // Batch 5 - DOM Content Manipulation
2777
3023
  swap: swapSchema,
2778
3024
  morph: morphSchema,
3025
+ // Batch 6 - Missing Commands
3026
+ beep: beepSchema,
3027
+ break: breakSchema,
3028
+ copy: copySchema,
3029
+ exit: exitSchema,
3030
+ pick: pickSchema,
3031
+ render: renderSchema,
2779
3032
  // Meta commands (for compound structures)
2780
3033
  compound: {
2781
3034
  action: "compound",
@@ -2839,170 +3092,114 @@ function resolveMarkerForRole(roleSpec, profile) {
2839
3092
  return null;
2840
3093
  }
2841
3094
 
2842
- // src/generators/pattern-generator.ts
2843
- var defaultConfig = {
2844
- basePriority: 100,
2845
- generateSimpleVariants: true,
2846
- generateAlternatives: true
2847
- };
2848
- function generatePattern(schema, profile, config = defaultConfig) {
2849
- const id = `${schema.action}-${profile.code}-generated`;
2850
- const priority = config.basePriority ?? 100;
2851
- const keyword = profile.keywords[schema.action];
2852
- if (!keyword) {
2853
- throw new Error(`No keyword translation for '${schema.action}' in ${profile.code}`);
3095
+ // src/generators/event-handlers-sov.ts
3096
+ function generateSOVEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3097
+ const tokens = [];
3098
+ tokens.push({ type: "role", role: "event", optional: false });
3099
+ if (eventMarker.position === "after") {
3100
+ const markerWords = eventMarker.primary.split(/\s+/);
3101
+ if (markerWords.length > 1) {
3102
+ for (const word of markerWords) {
3103
+ tokens.push({ type: "literal", value: word });
3104
+ }
3105
+ } else {
3106
+ const markerToken = eventMarker.alternatives ? { type: "literal", value: eventMarker.primary, alternatives: eventMarker.alternatives } : { type: "literal", value: eventMarker.primary };
3107
+ tokens.push(markerToken);
3108
+ }
2854
3109
  }
2855
- const tokens = buildTokens(schema, profile, keyword);
2856
- const extraction = buildExtractionRulesWithDefaults(schema, profile);
2857
- const format = buildFormatString(schema, profile, keyword);
3110
+ const destMarker = profile.roleMarkers.destination;
3111
+ if (destMarker) {
3112
+ tokens.push({
3113
+ type: "group",
3114
+ optional: true,
3115
+ tokens: [
3116
+ { type: "role", role: "destination", optional: true },
3117
+ destMarker.alternatives ? { type: "literal", value: destMarker.primary, alternatives: destMarker.alternatives } : { type: "literal", value: destMarker.primary }
3118
+ ]
3119
+ });
3120
+ }
3121
+ tokens.push({ type: "role", role: "patient", optional: false });
3122
+ const patientMarker = profile.roleMarkers.patient;
3123
+ if (patientMarker) {
3124
+ const patMarkerToken = patientMarker.alternatives ? { type: "literal", value: patientMarker.primary, alternatives: patientMarker.alternatives } : { type: "literal", value: patientMarker.primary };
3125
+ tokens.push(patMarkerToken);
3126
+ }
3127
+ const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };
3128
+ tokens.push(verbToken);
2858
3129
  return {
2859
- id,
3130
+ id: `${commandSchema.action}-event-${profile.code}-sov`,
2860
3131
  language: profile.code,
2861
- command: schema.action,
2862
- priority,
3132
+ command: "on",
3133
+ // This is an event handler pattern
3134
+ priority: (config.basePriority ?? 100) + 50,
3135
+ // Higher priority than simple commands
2863
3136
  template: {
2864
- format,
3137
+ format: `{event} ${eventMarker.primary} {destination?} {patient} ${patientMarker?.primary || ""} ${keyword.primary}`,
2865
3138
  tokens
2866
3139
  },
2867
- extraction
3140
+ extraction: {
3141
+ action: { value: commandSchema.action },
3142
+ // Extract the wrapped command
3143
+ event: { fromRole: "event" },
3144
+ patient: { fromRole: "patient" },
3145
+ destination: { fromRole: "destination", default: { type: "reference", value: "me" } }
3146
+ }
2868
3147
  };
2869
3148
  }
2870
- function generateSimplePattern(schema, profile, config = defaultConfig) {
2871
- const optionalRoles = schema.roles.filter((r) => !r.required);
2872
- if (optionalRoles.length === 0) {
2873
- return null;
3149
+ function generateSOVPatientFirstEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3150
+ const tokens = [];
3151
+ tokens.push({ type: "role", role: "patient", optional: false });
3152
+ const patientMarker = profile.roleMarkers.patient;
3153
+ if (patientMarker) {
3154
+ const patMarkerToken = patientMarker.alternatives ? { type: "literal", value: patientMarker.primary, alternatives: patientMarker.alternatives } : { type: "literal", value: patientMarker.primary };
3155
+ tokens.push(patMarkerToken);
2874
3156
  }
2875
- const requiredRoles = schema.roles.filter((r) => r.required);
2876
- const simpleSchema = {
2877
- ...schema,
2878
- roles: requiredRoles
2879
- };
2880
- const pattern = generatePattern(simpleSchema, profile, config);
3157
+ tokens.push({ type: "role", role: "event", optional: false });
3158
+ if (eventMarker.position === "after") {
3159
+ const markerWords = eventMarker.primary.split(/\s+/);
3160
+ if (markerWords.length > 1) {
3161
+ for (const word of markerWords) {
3162
+ tokens.push({ type: "literal", value: word });
3163
+ }
3164
+ } else {
3165
+ const markerToken = eventMarker.alternatives ? { type: "literal", value: eventMarker.primary, alternatives: eventMarker.alternatives } : { type: "literal", value: eventMarker.primary };
3166
+ tokens.push(markerToken);
3167
+ }
3168
+ }
3169
+ const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };
3170
+ tokens.push(verbToken);
2881
3171
  return {
2882
- ...pattern,
2883
- id: `${schema.action}-${profile.code}-simple`,
2884
- priority: (config.basePriority ?? 100) - 5,
2885
- // Lower priority than full pattern (was -10)
2886
- extraction: buildExtractionRulesWithDefaults(schema, profile)
3172
+ id: `${commandSchema.action}-event-${profile.code}-sov-patient-first`,
3173
+ language: profile.code,
3174
+ command: "on",
3175
+ priority: (config.basePriority ?? 100) + 45,
3176
+ template: {
3177
+ format: `{patient} ${patientMarker?.primary || ""} {event} ${eventMarker.primary} ${keyword.primary}`,
3178
+ tokens
3179
+ },
3180
+ extraction: {
3181
+ action: { value: commandSchema.action },
3182
+ event: { fromRole: "event" },
3183
+ patient: { fromRole: "patient" },
3184
+ destination: { fromRole: "destination", default: { type: "reference", value: "me" } }
3185
+ }
2887
3186
  };
2888
3187
  }
2889
- function generatePatternVariants(schema, profile, config = defaultConfig) {
2890
- const patterns = [];
2891
- patterns.push(generatePattern(schema, profile, config));
2892
- if (config.generateSimpleVariants) {
2893
- const simple = generateSimplePattern(schema, profile, config);
2894
- if (simple) {
2895
- patterns.push(simple);
2896
- }
2897
- }
2898
- return patterns;
2899
- }
2900
- function generatePatternsForLanguage(profile, config = defaultConfig) {
2901
- const patterns = [];
2902
- const schemas = getDefinedSchemas();
2903
- for (const schema of schemas) {
2904
- if (!profile.keywords[schema.action]) {
2905
- continue;
2906
- }
2907
- const variants = generatePatternVariants(schema, profile, config);
2908
- patterns.push(...variants);
2909
- if (profile.eventHandler?.eventMarker) {
2910
- const eventHandlerPatterns = generateEventHandlerPatterns(schema, profile, config);
2911
- patterns.push(...eventHandlerPatterns);
2912
- }
2913
- }
2914
- return patterns;
2915
- }
2916
- function generateEventHandlerPatterns(commandSchema, profile, config = defaultConfig) {
2917
- if (!profile.eventHandler || !profile.eventHandler.eventMarker) {
2918
- return [];
2919
- }
2920
- const patterns = [];
2921
- const eventMarker = profile.eventHandler.eventMarker;
2922
- const keyword = profile.keywords[commandSchema.action];
2923
- if (!keyword) {
2924
- return [];
3188
+ function generateSOVPatientFirstWithDestEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3189
+ const tokens = [];
3190
+ tokens.push({ type: "role", role: "patient", optional: false });
3191
+ const patientMarker = profile.roleMarkers.patient;
3192
+ if (patientMarker) {
3193
+ const patMarkerToken = patientMarker.alternatives ? { type: "literal", value: patientMarker.primary, alternatives: patientMarker.alternatives } : { type: "literal", value: patientMarker.primary };
3194
+ tokens.push(patMarkerToken);
2925
3195
  }
2926
- const requiredRoles = commandSchema.roles.filter((r) => r.required);
2927
- const hasTwoRequiredRoles = requiredRoles.length === 2;
2928
- if (profile.wordOrder === "SOV") {
2929
- if (hasTwoRequiredRoles) {
2930
- patterns.push(
2931
- generateSOVTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
2932
- );
2933
- } else {
2934
- patterns.push(
2935
- generateSOVEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
2936
- );
2937
- const markerWords = eventMarker.primary.split(/\s+/);
2938
- const hasNoSpaceAlternative = eventMarker.alternatives?.some(
2939
- (alt) => !alt.includes(" ") && alt.length > 1
2940
- );
2941
- if (markerWords.length > 1 && hasNoSpaceAlternative) {
2942
- patterns.push(
2943
- generateSOVCompactEventHandlerPattern(
2944
- commandSchema,
2945
- profile,
2946
- keyword,
2947
- eventMarker,
2948
- config
2949
- )
2950
- );
2951
- }
2952
- patterns.push(
2953
- generateSOVSimpleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
2954
- );
2955
- const temporalPattern = generateSOVTemporalEventHandlerPattern(
2956
- commandSchema,
2957
- profile,
2958
- keyword,
2959
- config
2960
- );
2961
- if (temporalPattern) {
2962
- patterns.push(temporalPattern);
2963
- }
2964
- }
2965
- } else if (profile.wordOrder === "VSO") {
2966
- if (hasTwoRequiredRoles) {
2967
- patterns.push(
2968
- generateVSOTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
2969
- );
2970
- } else {
2971
- patterns.push(
2972
- generateVSOEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
2973
- );
2974
- if (profile.eventHandler?.negationMarker) {
2975
- patterns.push(
2976
- generateVSONegatedEventHandlerPattern(
2977
- commandSchema,
2978
- profile,
2979
- keyword,
2980
- eventMarker,
2981
- config
2982
- )
2983
- );
2984
- }
2985
- if (profile.tokenization?.prefixes) {
2986
- patterns.push(
2987
- generateVSOProcliticEventHandlerPattern(commandSchema, profile, keyword, config)
2988
- );
2989
- }
2990
- }
2991
- } else {
2992
- if (hasTwoRequiredRoles) {
2993
- patterns.push(
2994
- generateVSOTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
2995
- );
2996
- } else {
2997
- patterns.push(
2998
- generateVSOEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
2999
- );
3000
- }
3196
+ const destMarker = profile.roleMarkers.destination;
3197
+ if (destMarker) {
3198
+ tokens.push({ type: "role", role: "destination", optional: false });
3199
+ tokens.push(
3200
+ destMarker.alternatives ? { type: "literal", value: destMarker.primary, alternatives: destMarker.alternatives } : { type: "literal", value: destMarker.primary }
3201
+ );
3001
3202
  }
3002
- return patterns;
3003
- }
3004
- function generateSOVEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3005
- const tokens = [];
3006
3203
  tokens.push({ type: "role", role: "event", optional: false });
3007
3204
  if (eventMarker.position === "after") {
3008
3205
  const markerWords = eventMarker.primary.split(/\s+/);
@@ -3015,42 +3212,23 @@ function generateSOVEventHandlerPattern(commandSchema, profile, keyword, eventMa
3015
3212
  tokens.push(markerToken);
3016
3213
  }
3017
3214
  }
3018
- const destMarker = profile.roleMarkers.destination;
3019
- if (destMarker) {
3020
- tokens.push({
3021
- type: "group",
3022
- optional: true,
3023
- tokens: [
3024
- { type: "role", role: "destination", optional: true },
3025
- destMarker.alternatives ? { type: "literal", value: destMarker.primary, alternatives: destMarker.alternatives } : { type: "literal", value: destMarker.primary }
3026
- ]
3027
- });
3028
- }
3029
- tokens.push({ type: "role", role: "patient", optional: false });
3030
- const patientMarker = profile.roleMarkers.patient;
3031
- if (patientMarker) {
3032
- const patMarkerToken = patientMarker.alternatives ? { type: "literal", value: patientMarker.primary, alternatives: patientMarker.alternatives } : { type: "literal", value: patientMarker.primary };
3033
- tokens.push(patMarkerToken);
3034
- }
3035
3215
  const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };
3036
3216
  tokens.push(verbToken);
3037
3217
  return {
3038
- id: `${commandSchema.action}-event-${profile.code}-sov`,
3218
+ id: `${commandSchema.action}-event-${profile.code}-sov-patient-first-dest`,
3039
3219
  language: profile.code,
3040
3220
  command: "on",
3041
- // This is an event handler pattern
3042
- priority: (config.basePriority ?? 100) + 50,
3043
- // Higher priority than simple commands
3221
+ priority: (config.basePriority ?? 100) + 40,
3222
+ // Lower than simple patient-first
3044
3223
  template: {
3045
- format: `{event} ${eventMarker.primary} {destination?} {patient} ${patientMarker?.primary || ""} ${keyword.primary}`,
3224
+ format: `{patient} ${patientMarker?.primary || ""} {destination} ${destMarker?.primary || ""} {event} ${eventMarker.primary} ${keyword.primary}`,
3046
3225
  tokens
3047
3226
  },
3048
3227
  extraction: {
3049
3228
  action: { value: commandSchema.action },
3050
- // Extract the wrapped command
3051
3229
  event: { fromRole: "event" },
3052
3230
  patient: { fromRole: "patient" },
3053
- destination: { fromRole: "destination", default: { type: "reference", value: "me" } }
3231
+ destination: { fromRole: "destination" }
3054
3232
  }
3055
3233
  };
3056
3234
  }
@@ -3180,6 +3358,137 @@ function generateSOVTemporalEventHandlerPattern(commandSchema, profile, keyword,
3180
3358
  }
3181
3359
  };
3182
3360
  }
3361
+ function generateSOVTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3362
+ const tokens = [];
3363
+ tokens.push({ type: "role", role: "event", optional: false });
3364
+ if (eventMarker.position === "after") {
3365
+ const markerWords = eventMarker.primary.split(/\s+/);
3366
+ if (markerWords.length > 1) {
3367
+ for (const word of markerWords) {
3368
+ tokens.push({ type: "literal", value: word });
3369
+ }
3370
+ } else {
3371
+ const markerToken = eventMarker.alternatives ? { type: "literal", value: eventMarker.primary, alternatives: eventMarker.alternatives } : { type: "literal", value: eventMarker.primary };
3372
+ tokens.push(markerToken);
3373
+ }
3374
+ }
3375
+ const requiredRoles = commandSchema.roles.filter((r) => r.required);
3376
+ const sortedRoles = [...requiredRoles].sort((a, b) => {
3377
+ const aPos = a.sovPosition ?? 999;
3378
+ const bPos = b.sovPosition ?? 999;
3379
+ return aPos - bPos;
3380
+ });
3381
+ for (const roleSpec of sortedRoles) {
3382
+ tokens.push({ type: "role", role: roleSpec.role, optional: false });
3383
+ let marker;
3384
+ let markerAlternatives;
3385
+ if (roleSpec.markerOverride && roleSpec.markerOverride[profile.code] !== void 0) {
3386
+ marker = roleSpec.markerOverride[profile.code];
3387
+ } else {
3388
+ const roleMarker = profile.roleMarkers[roleSpec.role];
3389
+ if (roleMarker) {
3390
+ marker = roleMarker.primary;
3391
+ markerAlternatives = roleMarker.alternatives;
3392
+ }
3393
+ }
3394
+ if (marker) {
3395
+ const markerToken = markerAlternatives ? { type: "literal", value: marker, alternatives: markerAlternatives } : { type: "literal", value: marker };
3396
+ tokens.push(markerToken);
3397
+ }
3398
+ }
3399
+ const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };
3400
+ tokens.push(verbToken);
3401
+ const roleNames = sortedRoles.map((r) => `{${r.role}}`).join(" ");
3402
+ return {
3403
+ id: `${commandSchema.action}-event-${profile.code}-sov-2role`,
3404
+ language: profile.code,
3405
+ command: "on",
3406
+ // This is an event handler pattern
3407
+ priority: (config.basePriority ?? 100) + 55,
3408
+ // Higher priority than single-role patterns
3409
+ template: {
3410
+ format: `{event} ${eventMarker.primary} ${roleNames} ${keyword.primary}`,
3411
+ tokens
3412
+ },
3413
+ extraction: {
3414
+ action: { value: commandSchema.action },
3415
+ // Extract the wrapped command
3416
+ event: { fromRole: "event" },
3417
+ ...Object.fromEntries(sortedRoles.map((r) => [r.role, { fromRole: r.role }]))
3418
+ }
3419
+ };
3420
+ }
3421
+ function generateSOVTwoRoleDestFirstEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3422
+ const tokens = [];
3423
+ const requiredRoles = commandSchema.roles.filter((r) => r.required);
3424
+ const sortedRoles = [...requiredRoles].sort((a, b) => {
3425
+ const aPos = a.sovPosition ?? 999;
3426
+ const bPos = b.sovPosition ?? 999;
3427
+ return aPos - bPos;
3428
+ });
3429
+ const firstRole = sortedRoles[0];
3430
+ tokens.push({ type: "role", role: firstRole.role, optional: false });
3431
+ let firstMarker;
3432
+ if (firstRole.markerOverride && firstRole.markerOverride[profile.code] !== void 0) {
3433
+ firstMarker = firstRole.markerOverride[profile.code];
3434
+ } else {
3435
+ const roleMarker = profile.roleMarkers[firstRole.role];
3436
+ if (roleMarker) firstMarker = roleMarker.primary;
3437
+ }
3438
+ if (firstMarker) {
3439
+ tokens.push({ type: "literal", value: firstMarker });
3440
+ }
3441
+ tokens.push({ type: "role", role: "event", optional: false });
3442
+ if (eventMarker.position === "after") {
3443
+ const markerWords = eventMarker.primary.split(/\s+/);
3444
+ if (markerWords.length > 1) {
3445
+ for (const word of markerWords) {
3446
+ tokens.push({ type: "literal", value: word });
3447
+ }
3448
+ } else {
3449
+ const markerToken = eventMarker.alternatives ? { type: "literal", value: eventMarker.primary, alternatives: eventMarker.alternatives } : { type: "literal", value: eventMarker.primary };
3450
+ tokens.push(markerToken);
3451
+ }
3452
+ }
3453
+ const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };
3454
+ tokens.push(verbToken);
3455
+ const secondRole = sortedRoles[1];
3456
+ tokens.push({ type: "role", role: secondRole.role, optional: false });
3457
+ let secondMarker;
3458
+ let secondMarkerAlts;
3459
+ if (secondRole.markerOverride && secondRole.markerOverride[profile.code] !== void 0) {
3460
+ secondMarker = secondRole.markerOverride[profile.code];
3461
+ } else {
3462
+ const roleMarker = profile.roleMarkers[secondRole.role];
3463
+ if (roleMarker) {
3464
+ secondMarker = roleMarker.primary;
3465
+ secondMarkerAlts = roleMarker.alternatives;
3466
+ }
3467
+ }
3468
+ if (secondMarker) {
3469
+ const markerToken = secondMarkerAlts ? { type: "literal", value: secondMarker, alternatives: secondMarkerAlts } : { type: "literal", value: secondMarker };
3470
+ tokens.push(markerToken);
3471
+ }
3472
+ return {
3473
+ id: `${commandSchema.action}-event-${profile.code}-sov-2role-dest-first`,
3474
+ language: profile.code,
3475
+ command: "on",
3476
+ priority: (config.basePriority ?? 100) + 48,
3477
+ // Slightly lower than event-first two-role
3478
+ template: {
3479
+ format: `{${firstRole.role}} {event} ${eventMarker.primary} ${keyword.primary} {${secondRole.role}}`,
3480
+ tokens
3481
+ },
3482
+ extraction: {
3483
+ action: { value: commandSchema.action },
3484
+ event: { fromRole: "event" },
3485
+ [firstRole.role]: { fromRole: firstRole.role },
3486
+ [secondRole.role]: { fromRole: secondRole.role }
3487
+ }
3488
+ };
3489
+ }
3490
+
3491
+ // src/generators/event-handlers-vso.ts
3183
3492
  function generateVSOEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3184
3493
  const tokens = [];
3185
3494
  if (eventMarker.position === "before") {
@@ -3221,31 +3530,59 @@ function generateVSOEventHandlerPattern(commandSchema, profile, keyword, eventMa
3221
3530
  }
3222
3531
  };
3223
3532
  }
3224
- function generateSOVTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3533
+ function generateVSOVerbFirstEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3225
3534
  const tokens = [];
3535
+ const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };
3536
+ tokens.push(verbToken);
3537
+ tokens.push({ type: "role", role: "patient", optional: false });
3538
+ const destMarker = profile.roleMarkers.destination;
3539
+ if (destMarker) {
3540
+ tokens.push({
3541
+ type: "group",
3542
+ optional: true,
3543
+ tokens: [
3544
+ destMarker.alternatives ? { type: "literal", value: destMarker.primary, alternatives: destMarker.alternatives } : { type: "literal", value: destMarker.primary },
3545
+ { type: "role", role: "destination", optional: true }
3546
+ ]
3547
+ });
3548
+ }
3549
+ if (eventMarker.position === "before") {
3550
+ const markerToken = eventMarker.alternatives ? { type: "literal", value: eventMarker.primary, alternatives: eventMarker.alternatives } : { type: "literal", value: eventMarker.primary };
3551
+ tokens.push(markerToken);
3552
+ }
3226
3553
  tokens.push({ type: "role", role: "event", optional: false });
3227
- if (eventMarker.position === "after") {
3228
- const markerWords = eventMarker.primary.split(/\s+/);
3229
- if (markerWords.length > 1) {
3230
- for (const word of markerWords) {
3231
- tokens.push({ type: "literal", value: word });
3232
- }
3233
- } else {
3234
- const markerToken = eventMarker.alternatives ? { type: "literal", value: eventMarker.primary, alternatives: eventMarker.alternatives } : { type: "literal", value: eventMarker.primary };
3235
- tokens.push(markerToken);
3554
+ return {
3555
+ id: `${commandSchema.action}-event-${profile.code}-vso-verb-first`,
3556
+ language: profile.code,
3557
+ command: "on",
3558
+ priority: (config.basePriority ?? 100) + 45,
3559
+ // Slightly lower than event-first variant
3560
+ template: {
3561
+ format: `${keyword.primary} {patient} ${destMarker?.primary || ""} {destination?} ${eventMarker.primary} {event}`,
3562
+ tokens
3563
+ },
3564
+ extraction: {
3565
+ action: { value: commandSchema.action },
3566
+ event: { fromRole: "event" },
3567
+ patient: { fromRole: "patient" },
3568
+ destination: { fromRole: "destination", default: { type: "reference", value: "me" } }
3236
3569
  }
3237
- }
3570
+ };
3571
+ }
3572
+ function generateVSOVerbFirstTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config) {
3573
+ const tokens = [];
3574
+ const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };
3575
+ tokens.push(verbToken);
3238
3576
  const requiredRoles = commandSchema.roles.filter((r) => r.required);
3239
3577
  const sortedRoles = [...requiredRoles].sort((a, b) => {
3240
- const aPos = a.sovPosition ?? 999;
3241
- const bPos = b.sovPosition ?? 999;
3578
+ const aPos = a.svoPosition ?? 999;
3579
+ const bPos = b.svoPosition ?? 999;
3242
3580
  return aPos - bPos;
3243
3581
  });
3244
3582
  for (const roleSpec of sortedRoles) {
3245
- tokens.push({ type: "role", role: roleSpec.role, optional: false });
3246
3583
  let marker;
3247
3584
  let markerAlternatives;
3248
- if (roleSpec.markerOverride && roleSpec.markerOverride[profile.code]) {
3585
+ if (roleSpec.markerOverride && roleSpec.markerOverride[profile.code] !== void 0) {
3249
3586
  marker = roleSpec.markerOverride[profile.code];
3250
3587
  } else {
3251
3588
  const roleMarker = profile.roleMarkers[roleSpec.role];
@@ -3258,27 +3595,27 @@ function generateSOVTwoRoleEventHandlerPattern(commandSchema, profile, keyword,
3258
3595
  const markerToken = markerAlternatives ? { type: "literal", value: marker, alternatives: markerAlternatives } : { type: "literal", value: marker };
3259
3596
  tokens.push(markerToken);
3260
3597
  }
3598
+ tokens.push({ type: "role", role: roleSpec.role, optional: false });
3261
3599
  }
3262
- const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };
3263
- tokens.push(verbToken);
3600
+ if (eventMarker.position === "before") {
3601
+ const markerToken = eventMarker.alternatives ? { type: "literal", value: eventMarker.primary, alternatives: eventMarker.alternatives } : { type: "literal", value: eventMarker.primary };
3602
+ tokens.push(markerToken);
3603
+ }
3604
+ tokens.push({ type: "role", role: "event", optional: false });
3264
3605
  const roleNames = sortedRoles.map((r) => `{${r.role}}`).join(" ");
3265
3606
  return {
3266
- id: `${commandSchema.action}-event-${profile.code}-sov-2role`,
3607
+ id: `${commandSchema.action}-event-${profile.code}-vso-verb-first-2role`,
3267
3608
  language: profile.code,
3268
3609
  command: "on",
3269
- // This is an event handler pattern
3270
- priority: (config.basePriority ?? 100) + 55,
3271
- // Higher priority than single-role patterns
3610
+ priority: (config.basePriority ?? 100) + 48,
3272
3611
  template: {
3273
- format: `{event} ${eventMarker.primary} ${roleNames} ${keyword.primary}`,
3612
+ format: `${keyword.primary} ${roleNames} ${eventMarker.primary} {event}`,
3274
3613
  tokens
3275
3614
  },
3276
3615
  extraction: {
3277
3616
  action: { value: commandSchema.action },
3278
- // Extract the wrapped command
3279
3617
  event: { fromRole: "event" },
3280
- patient: { fromRole: "patient" },
3281
- destination: { fromRole: "destination" }
3618
+ ...Object.fromEntries(sortedRoles.map((r) => [r.role, { fromRole: r.role }]))
3282
3619
  }
3283
3620
  };
3284
3621
  }
@@ -3300,7 +3637,7 @@ function generateVSOTwoRoleEventHandlerPattern(commandSchema, profile, keyword,
3300
3637
  for (const roleSpec of sortedRoles) {
3301
3638
  let marker;
3302
3639
  let markerAlternatives;
3303
- if (roleSpec.markerOverride && roleSpec.markerOverride[profile.code]) {
3640
+ if (roleSpec.markerOverride && roleSpec.markerOverride[profile.code] !== void 0) {
3304
3641
  marker = roleSpec.markerOverride[profile.code];
3305
3642
  } else {
3306
3643
  const roleMarker = profile.roleMarkers[roleSpec.role];
@@ -3331,8 +3668,7 @@ function generateVSOTwoRoleEventHandlerPattern(commandSchema, profile, keyword,
3331
3668
  action: { value: commandSchema.action },
3332
3669
  // Extract the wrapped command
3333
3670
  event: { fromRole: "event" },
3334
- patient: { fromRole: "patient" },
3335
- destination: { fromRole: "destination" }
3671
+ ...Object.fromEntries(sortedRoles.map((r) => [r.role, { fromRole: r.role }]))
3336
3672
  }
3337
3673
  };
3338
3674
  }
@@ -3430,6 +3766,217 @@ function generateVSOProcliticEventHandlerPattern(commandSchema, profile, keyword
3430
3766
  }
3431
3767
  };
3432
3768
  }
3769
+
3770
+ // src/generators/pattern-generator.ts
3771
+ var defaultConfig = {
3772
+ basePriority: 100,
3773
+ generateSimpleVariants: true,
3774
+ generateAlternatives: true
3775
+ };
3776
+ function generatePattern(schema, profile, config = defaultConfig) {
3777
+ const id = `${schema.action}-${profile.code}-generated`;
3778
+ const priority = config.basePriority ?? 100;
3779
+ const keyword = profile.keywords[schema.action];
3780
+ if (!keyword) {
3781
+ throw new Error(`No keyword translation for '${schema.action}' in ${profile.code}`);
3782
+ }
3783
+ const tokens = buildTokens(schema, profile, keyword);
3784
+ const extraction = buildExtractionRulesWithDefaults(schema, profile);
3785
+ const format = buildFormatString(schema, profile, keyword);
3786
+ return {
3787
+ id,
3788
+ language: profile.code,
3789
+ command: schema.action,
3790
+ priority,
3791
+ template: {
3792
+ format,
3793
+ tokens
3794
+ },
3795
+ extraction
3796
+ };
3797
+ }
3798
+ function generateSimplePattern(schema, profile, config = defaultConfig) {
3799
+ const optionalRoles = schema.roles.filter((r) => !r.required);
3800
+ if (optionalRoles.length === 0) {
3801
+ return null;
3802
+ }
3803
+ const requiredRoles = schema.roles.filter((r) => r.required);
3804
+ const simpleSchema = {
3805
+ ...schema,
3806
+ roles: requiredRoles
3807
+ };
3808
+ const pattern = generatePattern(simpleSchema, profile, config);
3809
+ return {
3810
+ ...pattern,
3811
+ id: `${schema.action}-${profile.code}-simple`,
3812
+ priority: (config.basePriority ?? 100) - 5,
3813
+ // Lower priority than full pattern (was -10)
3814
+ extraction: buildExtractionRulesWithDefaults(schema, profile)
3815
+ };
3816
+ }
3817
+ function generatePatternVariants(schema, profile, config = defaultConfig) {
3818
+ const patterns = [];
3819
+ patterns.push(generatePattern(schema, profile, config));
3820
+ if (config.generateSimpleVariants) {
3821
+ const simple = generateSimplePattern(schema, profile, config);
3822
+ if (simple) {
3823
+ patterns.push(simple);
3824
+ }
3825
+ }
3826
+ return patterns;
3827
+ }
3828
+ function generatePatternsForLanguage(profile, config = defaultConfig) {
3829
+ const patterns = [];
3830
+ const schemas = getDefinedSchemas();
3831
+ for (const schema of schemas) {
3832
+ if (!profile.keywords[schema.action]) {
3833
+ continue;
3834
+ }
3835
+ const variants = generatePatternVariants(schema, profile, config);
3836
+ patterns.push(...variants);
3837
+ if (profile.eventHandler?.eventMarker) {
3838
+ const eventHandlerPatterns = generateEventHandlerPatterns(schema, profile, config);
3839
+ patterns.push(...eventHandlerPatterns);
3840
+ }
3841
+ }
3842
+ return patterns;
3843
+ }
3844
+ function generateEventHandlerPatterns(commandSchema, profile, config = defaultConfig) {
3845
+ if (!profile.eventHandler || !profile.eventHandler.eventMarker) {
3846
+ return [];
3847
+ }
3848
+ const patterns = [];
3849
+ const eventMarker = profile.eventHandler.eventMarker;
3850
+ const keyword = profile.keywords[commandSchema.action];
3851
+ if (!keyword) {
3852
+ return [];
3853
+ }
3854
+ const requiredRoles = commandSchema.roles.filter((r) => r.required);
3855
+ const hasTwoRequiredRoles = requiredRoles.length === 2;
3856
+ if (profile.wordOrder === "SOV") {
3857
+ if (hasTwoRequiredRoles) {
3858
+ patterns.push(
3859
+ generateSOVTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
3860
+ );
3861
+ patterns.push(
3862
+ generateSOVTwoRoleDestFirstEventHandlerPattern(
3863
+ commandSchema,
3864
+ profile,
3865
+ keyword,
3866
+ eventMarker,
3867
+ config
3868
+ )
3869
+ );
3870
+ } else {
3871
+ patterns.push(
3872
+ generateSOVEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
3873
+ );
3874
+ patterns.push(
3875
+ generateSOVPatientFirstEventHandlerPattern(
3876
+ commandSchema,
3877
+ profile,
3878
+ keyword,
3879
+ eventMarker,
3880
+ config
3881
+ )
3882
+ );
3883
+ const destMarkerCheck = profile.roleMarkers.destination;
3884
+ if (destMarkerCheck && destMarkerCheck.primary !== eventMarker.primary) {
3885
+ patterns.push(
3886
+ generateSOVPatientFirstWithDestEventHandlerPattern(
3887
+ commandSchema,
3888
+ profile,
3889
+ keyword,
3890
+ eventMarker,
3891
+ config
3892
+ )
3893
+ );
3894
+ }
3895
+ const markerWords = eventMarker.primary.split(/\s+/);
3896
+ const hasNoSpaceAlternative = eventMarker.alternatives?.some(
3897
+ (alt) => !alt.includes(" ") && alt.length > 1
3898
+ );
3899
+ if (markerWords.length > 1 && hasNoSpaceAlternative) {
3900
+ patterns.push(
3901
+ generateSOVCompactEventHandlerPattern(
3902
+ commandSchema,
3903
+ profile,
3904
+ keyword,
3905
+ eventMarker,
3906
+ config
3907
+ )
3908
+ );
3909
+ }
3910
+ patterns.push(
3911
+ generateSOVSimpleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
3912
+ );
3913
+ const temporalPattern = generateSOVTemporalEventHandlerPattern(
3914
+ commandSchema,
3915
+ profile,
3916
+ keyword,
3917
+ config
3918
+ );
3919
+ if (temporalPattern) {
3920
+ patterns.push(temporalPattern);
3921
+ }
3922
+ }
3923
+ } else if (profile.wordOrder === "VSO") {
3924
+ if (hasTwoRequiredRoles) {
3925
+ patterns.push(
3926
+ generateVSOTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
3927
+ );
3928
+ patterns.push(
3929
+ generateVSOVerbFirstTwoRoleEventHandlerPattern(
3930
+ commandSchema,
3931
+ profile,
3932
+ keyword,
3933
+ eventMarker,
3934
+ config
3935
+ )
3936
+ );
3937
+ } else {
3938
+ patterns.push(
3939
+ generateVSOEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
3940
+ );
3941
+ patterns.push(
3942
+ generateVSOVerbFirstEventHandlerPattern(
3943
+ commandSchema,
3944
+ profile,
3945
+ keyword,
3946
+ eventMarker,
3947
+ config
3948
+ )
3949
+ );
3950
+ if (profile.eventHandler?.negationMarker) {
3951
+ patterns.push(
3952
+ generateVSONegatedEventHandlerPattern(
3953
+ commandSchema,
3954
+ profile,
3955
+ keyword,
3956
+ eventMarker,
3957
+ config
3958
+ )
3959
+ );
3960
+ }
3961
+ if (profile.tokenization?.prefixes) {
3962
+ patterns.push(
3963
+ generateVSOProcliticEventHandlerPattern(commandSchema, profile, keyword, config)
3964
+ );
3965
+ }
3966
+ }
3967
+ } else {
3968
+ if (hasTwoRequiredRoles) {
3969
+ patterns.push(
3970
+ generateVSOTwoRoleEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
3971
+ );
3972
+ } else {
3973
+ patterns.push(
3974
+ generateVSOEventHandlerPattern(commandSchema, profile, keyword, eventMarker, config)
3975
+ );
3976
+ }
3977
+ }
3978
+ return patterns;
3979
+ }
3433
3980
  function buildTokens(schema, profile, keyword) {
3434
3981
  const tokens = [];
3435
3982
  const verbToken = keyword.alternatives ? { type: "literal", value: keyword.primary, alternatives: keyword.alternatives } : { type: "literal", value: keyword.primary };