@lokascript/semantic 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +686 -0
  3. package/dist/browser-ar.ar.global.js +2 -0
  4. package/dist/browser-core.core.global.js +2 -0
  5. package/dist/browser-de.de.global.js +2 -0
  6. package/dist/browser-east-asian.east-asian.global.js +2 -0
  7. package/dist/browser-en-tr.en-tr.global.js +2 -0
  8. package/dist/browser-en.en.global.js +2 -0
  9. package/dist/browser-es-en.es-en.global.js +2 -0
  10. package/dist/browser-es.es.global.js +2 -0
  11. package/dist/browser-fr.fr.global.js +2 -0
  12. package/dist/browser-id.id.global.js +2 -0
  13. package/dist/browser-ja.ja.global.js +2 -0
  14. package/dist/browser-ko.ko.global.js +2 -0
  15. package/dist/browser-lazy.lazy.global.js +2 -0
  16. package/dist/browser-priority.priority.global.js +2 -0
  17. package/dist/browser-pt.pt.global.js +2 -0
  18. package/dist/browser-qu.qu.global.js +2 -0
  19. package/dist/browser-sw.sw.global.js +2 -0
  20. package/dist/browser-tr.tr.global.js +2 -0
  21. package/dist/browser-western.western.global.js +2 -0
  22. package/dist/browser-zh.zh.global.js +2 -0
  23. package/dist/browser.global.js +3 -0
  24. package/dist/browser.global.js.map +1 -0
  25. package/dist/index.cjs +35051 -0
  26. package/dist/index.cjs.map +1 -0
  27. package/dist/index.d.cts +3426 -0
  28. package/dist/index.d.ts +3426 -0
  29. package/dist/index.js +34890 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/languages/ar.d.ts +78 -0
  32. package/dist/languages/ar.js +1622 -0
  33. package/dist/languages/ar.js.map +1 -0
  34. package/dist/languages/de.d.ts +38 -0
  35. package/dist/languages/de.js +1168 -0
  36. package/dist/languages/de.js.map +1 -0
  37. package/dist/languages/en.d.ts +44 -0
  38. package/dist/languages/en.js +3491 -0
  39. package/dist/languages/en.js.map +1 -0
  40. package/dist/languages/es.d.ts +52 -0
  41. package/dist/languages/es.js +1493 -0
  42. package/dist/languages/es.js.map +1 -0
  43. package/dist/languages/fr.d.ts +37 -0
  44. package/dist/languages/fr.js +1159 -0
  45. package/dist/languages/fr.js.map +1 -0
  46. package/dist/languages/id.d.ts +35 -0
  47. package/dist/languages/id.js +1152 -0
  48. package/dist/languages/id.js.map +1 -0
  49. package/dist/languages/ja.d.ts +53 -0
  50. package/dist/languages/ja.js +1430 -0
  51. package/dist/languages/ja.js.map +1 -0
  52. package/dist/languages/ko.d.ts +51 -0
  53. package/dist/languages/ko.js +1729 -0
  54. package/dist/languages/ko.js.map +1 -0
  55. package/dist/languages/pt.d.ts +37 -0
  56. package/dist/languages/pt.js +1127 -0
  57. package/dist/languages/pt.js.map +1 -0
  58. package/dist/languages/qu.d.ts +36 -0
  59. package/dist/languages/qu.js +1143 -0
  60. package/dist/languages/qu.js.map +1 -0
  61. package/dist/languages/sw.d.ts +35 -0
  62. package/dist/languages/sw.js +1147 -0
  63. package/dist/languages/sw.js.map +1 -0
  64. package/dist/languages/tr.d.ts +45 -0
  65. package/dist/languages/tr.js +1529 -0
  66. package/dist/languages/tr.js.map +1 -0
  67. package/dist/languages/zh.d.ts +58 -0
  68. package/dist/languages/zh.js +1257 -0
  69. package/dist/languages/zh.js.map +1 -0
  70. package/dist/types-C4dcj53L.d.ts +600 -0
  71. package/package.json +202 -0
  72. package/src/__test-utils__/index.ts +7 -0
  73. package/src/__test-utils__/test-helpers.ts +8 -0
  74. package/src/__types__/test-helpers.ts +122 -0
  75. package/src/analysis/index.ts +479 -0
  76. package/src/ast-builder/command-mappers.ts +1133 -0
  77. package/src/ast-builder/expression-parser/index.ts +41 -0
  78. package/src/ast-builder/expression-parser/parser.ts +563 -0
  79. package/src/ast-builder/expression-parser/tokenizer.ts +394 -0
  80. package/src/ast-builder/expression-parser/types.ts +208 -0
  81. package/src/ast-builder/index.ts +536 -0
  82. package/src/ast-builder/value-converters.ts +172 -0
  83. package/src/bridge.ts +275 -0
  84. package/src/browser-ar.ts +162 -0
  85. package/src/browser-core.ts +231 -0
  86. package/src/browser-de.ts +162 -0
  87. package/src/browser-east-asian.ts +173 -0
  88. package/src/browser-en-tr.ts +165 -0
  89. package/src/browser-en.ts +157 -0
  90. package/src/browser-es-en.ts +200 -0
  91. package/src/browser-es.ts +170 -0
  92. package/src/browser-fr.ts +162 -0
  93. package/src/browser-id.ts +162 -0
  94. package/src/browser-ja.ts +162 -0
  95. package/src/browser-ko.ts +162 -0
  96. package/src/browser-lazy.ts +189 -0
  97. package/src/browser-priority.ts +214 -0
  98. package/src/browser-pt.ts +162 -0
  99. package/src/browser-qu.ts +162 -0
  100. package/src/browser-sw.ts +162 -0
  101. package/src/browser-tr.ts +162 -0
  102. package/src/browser-western.ts +181 -0
  103. package/src/browser-zh.ts +162 -0
  104. package/src/browser.ts +268 -0
  105. package/src/cache/index.ts +14 -0
  106. package/src/cache/semantic-cache.ts +344 -0
  107. package/src/core-bridge.ts +372 -0
  108. package/src/explicit/converter.ts +258 -0
  109. package/src/explicit/index.ts +18 -0
  110. package/src/explicit/parser.ts +236 -0
  111. package/src/explicit/renderer.ts +424 -0
  112. package/src/generators/command-schemas.ts +1636 -0
  113. package/src/generators/event-handler-generator.ts +109 -0
  114. package/src/generators/index.ts +117 -0
  115. package/src/generators/language-profiles.ts +139 -0
  116. package/src/generators/pattern-generator.ts +537 -0
  117. package/src/generators/profiles/arabic.ts +131 -0
  118. package/src/generators/profiles/bengali.ts +132 -0
  119. package/src/generators/profiles/chinese.ts +124 -0
  120. package/src/generators/profiles/english.ts +113 -0
  121. package/src/generators/profiles/french.ts +125 -0
  122. package/src/generators/profiles/german.ts +126 -0
  123. package/src/generators/profiles/hindi.ts +146 -0
  124. package/src/generators/profiles/index.ts +46 -0
  125. package/src/generators/profiles/indonesian.ts +125 -0
  126. package/src/generators/profiles/italian.ts +139 -0
  127. package/src/generators/profiles/japanese.ts +149 -0
  128. package/src/generators/profiles/korean.ts +127 -0
  129. package/src/generators/profiles/marker-templates.ts +288 -0
  130. package/src/generators/profiles/ms.ts +130 -0
  131. package/src/generators/profiles/polish.ts +249 -0
  132. package/src/generators/profiles/portuguese.ts +115 -0
  133. package/src/generators/profiles/quechua.ts +113 -0
  134. package/src/generators/profiles/russian.ts +260 -0
  135. package/src/generators/profiles/spanish.ts +130 -0
  136. package/src/generators/profiles/swahili.ts +129 -0
  137. package/src/generators/profiles/thai.ts +132 -0
  138. package/src/generators/profiles/tl.ts +128 -0
  139. package/src/generators/profiles/turkish.ts +124 -0
  140. package/src/generators/profiles/types.ts +165 -0
  141. package/src/generators/profiles/ukrainian.ts +270 -0
  142. package/src/generators/profiles/vietnamese.ts +133 -0
  143. package/src/generators/schema-error-codes.ts +160 -0
  144. package/src/generators/schema-validator.ts +391 -0
  145. package/src/index.ts +429 -0
  146. package/src/language-building-schema.ts +3170 -0
  147. package/src/language-loader.ts +394 -0
  148. package/src/languages/_all.ts +65 -0
  149. package/src/languages/ar.ts +15 -0
  150. package/src/languages/bn.ts +16 -0
  151. package/src/languages/de.ts +15 -0
  152. package/src/languages/en.ts +29 -0
  153. package/src/languages/es.ts +15 -0
  154. package/src/languages/fr.ts +15 -0
  155. package/src/languages/hi.ts +26 -0
  156. package/src/languages/id.ts +15 -0
  157. package/src/languages/index.ts +18 -0
  158. package/src/languages/it.ts +15 -0
  159. package/src/languages/ja.ts +15 -0
  160. package/src/languages/ko.ts +15 -0
  161. package/src/languages/ms.ts +16 -0
  162. package/src/languages/pl.ts +18 -0
  163. package/src/languages/pt.ts +15 -0
  164. package/src/languages/qu.ts +15 -0
  165. package/src/languages/ru.ts +26 -0
  166. package/src/languages/sw.ts +15 -0
  167. package/src/languages/th.ts +16 -0
  168. package/src/languages/tl.ts +16 -0
  169. package/src/languages/tr.ts +15 -0
  170. package/src/languages/uk.ts +26 -0
  171. package/src/languages/vi.ts +16 -0
  172. package/src/languages/zh.ts +15 -0
  173. package/src/parser/index.ts +15 -0
  174. package/src/parser/pattern-matcher.ts +1181 -0
  175. package/src/parser/semantic-parser.ts +573 -0
  176. package/src/parser/utils/index.ts +35 -0
  177. package/src/parser/utils/marker-resolution.ts +111 -0
  178. package/src/parser/utils/possessive-keywords.ts +43 -0
  179. package/src/parser/utils/role-positioning.ts +70 -0
  180. package/src/parser/utils/type-validation.ts +134 -0
  181. package/src/patterns/add/ar.ts +71 -0
  182. package/src/patterns/add/bn.ts +70 -0
  183. package/src/patterns/add/hi.ts +69 -0
  184. package/src/patterns/add/index.ts +87 -0
  185. package/src/patterns/add/it.ts +61 -0
  186. package/src/patterns/add/ja.ts +93 -0
  187. package/src/patterns/add/ko.ts +74 -0
  188. package/src/patterns/add/ms.ts +30 -0
  189. package/src/patterns/add/pl.ts +62 -0
  190. package/src/patterns/add/ru.ts +62 -0
  191. package/src/patterns/add/th.ts +49 -0
  192. package/src/patterns/add/tl.ts +30 -0
  193. package/src/patterns/add/tr.ts +71 -0
  194. package/src/patterns/add/uk.ts +62 -0
  195. package/src/patterns/add/vi.ts +61 -0
  196. package/src/patterns/add/zh.ts +71 -0
  197. package/src/patterns/builders.ts +207 -0
  198. package/src/patterns/decrement/bn.ts +70 -0
  199. package/src/patterns/decrement/de.ts +42 -0
  200. package/src/patterns/decrement/hi.ts +68 -0
  201. package/src/patterns/decrement/index.ts +79 -0
  202. package/src/patterns/decrement/it.ts +69 -0
  203. package/src/patterns/decrement/ms.ts +30 -0
  204. package/src/patterns/decrement/pl.ts +58 -0
  205. package/src/patterns/decrement/ru.ts +58 -0
  206. package/src/patterns/decrement/th.ts +49 -0
  207. package/src/patterns/decrement/tl.ts +30 -0
  208. package/src/patterns/decrement/tr.ts +48 -0
  209. package/src/patterns/decrement/uk.ts +58 -0
  210. package/src/patterns/decrement/vi.ts +61 -0
  211. package/src/patterns/decrement/zh.ts +32 -0
  212. package/src/patterns/en.ts +302 -0
  213. package/src/patterns/event-handler/ar.ts +151 -0
  214. package/src/patterns/event-handler/bn.ts +72 -0
  215. package/src/patterns/event-handler/de.ts +117 -0
  216. package/src/patterns/event-handler/en.ts +117 -0
  217. package/src/patterns/event-handler/es.ts +136 -0
  218. package/src/patterns/event-handler/fr.ts +117 -0
  219. package/src/patterns/event-handler/hi.ts +64 -0
  220. package/src/patterns/event-handler/id.ts +117 -0
  221. package/src/patterns/event-handler/index.ts +119 -0
  222. package/src/patterns/event-handler/it.ts +54 -0
  223. package/src/patterns/event-handler/ja.ts +118 -0
  224. package/src/patterns/event-handler/ko.ts +133 -0
  225. package/src/patterns/event-handler/ms.ts +30 -0
  226. package/src/patterns/event-handler/pl.ts +62 -0
  227. package/src/patterns/event-handler/pt.ts +117 -0
  228. package/src/patterns/event-handler/qu.ts +66 -0
  229. package/src/patterns/event-handler/ru.ts +62 -0
  230. package/src/patterns/event-handler/shared.ts +270 -0
  231. package/src/patterns/event-handler/sw.ts +117 -0
  232. package/src/patterns/event-handler/th.ts +53 -0
  233. package/src/patterns/event-handler/tl.ts +30 -0
  234. package/src/patterns/event-handler/tr.ts +170 -0
  235. package/src/patterns/event-handler/uk.ts +62 -0
  236. package/src/patterns/event-handler/vi.ts +61 -0
  237. package/src/patterns/event-handler/zh.ts +150 -0
  238. package/src/patterns/get/ar.ts +49 -0
  239. package/src/patterns/get/bn.ts +47 -0
  240. package/src/patterns/get/de.ts +32 -0
  241. package/src/patterns/get/hi.ts +52 -0
  242. package/src/patterns/get/index.ts +83 -0
  243. package/src/patterns/get/it.ts +56 -0
  244. package/src/patterns/get/ja.ts +53 -0
  245. package/src/patterns/get/ko.ts +53 -0
  246. package/src/patterns/get/ms.ts +30 -0
  247. package/src/patterns/get/pl.ts +57 -0
  248. package/src/patterns/get/ru.ts +57 -0
  249. package/src/patterns/get/th.ts +29 -0
  250. package/src/patterns/get/tl.ts +30 -0
  251. package/src/patterns/get/uk.ts +57 -0
  252. package/src/patterns/get/vi.ts +48 -0
  253. package/src/patterns/grammar-transformed/index.ts +39 -0
  254. package/src/patterns/grammar-transformed/ja.ts +1713 -0
  255. package/src/patterns/grammar-transformed/ko.ts +1311 -0
  256. package/src/patterns/grammar-transformed/tr.ts +1067 -0
  257. package/src/patterns/hide/ar.ts +67 -0
  258. package/src/patterns/hide/bn.ts +47 -0
  259. package/src/patterns/hide/de.ts +36 -0
  260. package/src/patterns/hide/hi.ts +61 -0
  261. package/src/patterns/hide/index.ts +91 -0
  262. package/src/patterns/hide/it.ts +56 -0
  263. package/src/patterns/hide/ja.ts +69 -0
  264. package/src/patterns/hide/ko.ts +69 -0
  265. package/src/patterns/hide/ms.ts +30 -0
  266. package/src/patterns/hide/pl.ts +57 -0
  267. package/src/patterns/hide/ru.ts +57 -0
  268. package/src/patterns/hide/th.ts +29 -0
  269. package/src/patterns/hide/tl.ts +30 -0
  270. package/src/patterns/hide/tr.ts +65 -0
  271. package/src/patterns/hide/uk.ts +57 -0
  272. package/src/patterns/hide/vi.ts +56 -0
  273. package/src/patterns/hide/zh.ts +68 -0
  274. package/src/patterns/increment/bn.ts +70 -0
  275. package/src/patterns/increment/de.ts +36 -0
  276. package/src/patterns/increment/hi.ts +68 -0
  277. package/src/patterns/increment/index.ts +79 -0
  278. package/src/patterns/increment/it.ts +69 -0
  279. package/src/patterns/increment/ms.ts +30 -0
  280. package/src/patterns/increment/pl.ts +58 -0
  281. package/src/patterns/increment/ru.ts +58 -0
  282. package/src/patterns/increment/th.ts +49 -0
  283. package/src/patterns/increment/tl.ts +30 -0
  284. package/src/patterns/increment/tr.ts +52 -0
  285. package/src/patterns/increment/uk.ts +58 -0
  286. package/src/patterns/increment/vi.ts +61 -0
  287. package/src/patterns/increment/zh.ts +32 -0
  288. package/src/patterns/index.ts +84 -0
  289. package/src/patterns/languages/en/control-flow.ts +93 -0
  290. package/src/patterns/languages/en/fetch.ts +62 -0
  291. package/src/patterns/languages/en/index.ts +42 -0
  292. package/src/patterns/languages/en/repeat.ts +67 -0
  293. package/src/patterns/languages/en/set.ts +48 -0
  294. package/src/patterns/languages/en/swap.ts +38 -0
  295. package/src/patterns/languages/en/temporal.ts +57 -0
  296. package/src/patterns/put/ar.ts +74 -0
  297. package/src/patterns/put/bn.ts +53 -0
  298. package/src/patterns/put/en.ts +74 -0
  299. package/src/patterns/put/es.ts +74 -0
  300. package/src/patterns/put/hi.ts +69 -0
  301. package/src/patterns/put/id.ts +96 -0
  302. package/src/patterns/put/index.ts +99 -0
  303. package/src/patterns/put/it.ts +56 -0
  304. package/src/patterns/put/ja.ts +75 -0
  305. package/src/patterns/put/ko.ts +67 -0
  306. package/src/patterns/put/ms.ts +30 -0
  307. package/src/patterns/put/pl.ts +81 -0
  308. package/src/patterns/put/ru.ts +85 -0
  309. package/src/patterns/put/th.ts +32 -0
  310. package/src/patterns/put/tl.ts +30 -0
  311. package/src/patterns/put/tr.ts +67 -0
  312. package/src/patterns/put/uk.ts +85 -0
  313. package/src/patterns/put/vi.ts +72 -0
  314. package/src/patterns/put/zh.ts +62 -0
  315. package/src/patterns/registry.ts +163 -0
  316. package/src/patterns/remove/ar.ts +71 -0
  317. package/src/patterns/remove/bn.ts +68 -0
  318. package/src/patterns/remove/hi.ts +69 -0
  319. package/src/patterns/remove/index.ts +87 -0
  320. package/src/patterns/remove/it.ts +69 -0
  321. package/src/patterns/remove/ja.ts +74 -0
  322. package/src/patterns/remove/ko.ts +78 -0
  323. package/src/patterns/remove/ms.ts +30 -0
  324. package/src/patterns/remove/pl.ts +62 -0
  325. package/src/patterns/remove/ru.ts +62 -0
  326. package/src/patterns/remove/th.ts +49 -0
  327. package/src/patterns/remove/tl.ts +30 -0
  328. package/src/patterns/remove/tr.ts +78 -0
  329. package/src/patterns/remove/uk.ts +62 -0
  330. package/src/patterns/remove/vi.ts +61 -0
  331. package/src/patterns/remove/zh.ts +72 -0
  332. package/src/patterns/set/ar.ts +84 -0
  333. package/src/patterns/set/bn.ts +53 -0
  334. package/src/patterns/set/de.ts +84 -0
  335. package/src/patterns/set/es.ts +92 -0
  336. package/src/patterns/set/fr.ts +88 -0
  337. package/src/patterns/set/hi.ts +56 -0
  338. package/src/patterns/set/id.ts +84 -0
  339. package/src/patterns/set/index.ts +107 -0
  340. package/src/patterns/set/it.ts +56 -0
  341. package/src/patterns/set/ja.ts +86 -0
  342. package/src/patterns/set/ko.ts +85 -0
  343. package/src/patterns/set/ms.ts +30 -0
  344. package/src/patterns/set/pl.ts +57 -0
  345. package/src/patterns/set/pt.ts +84 -0
  346. package/src/patterns/set/ru.ts +57 -0
  347. package/src/patterns/set/th.ts +31 -0
  348. package/src/patterns/set/tl.ts +30 -0
  349. package/src/patterns/set/tr.ts +107 -0
  350. package/src/patterns/set/uk.ts +57 -0
  351. package/src/patterns/set/vi.ts +53 -0
  352. package/src/patterns/set/zh.ts +84 -0
  353. package/src/patterns/show/ar.ts +67 -0
  354. package/src/patterns/show/bn.ts +47 -0
  355. package/src/patterns/show/de.ts +32 -0
  356. package/src/patterns/show/fr.ts +32 -0
  357. package/src/patterns/show/hi.ts +61 -0
  358. package/src/patterns/show/index.ts +95 -0
  359. package/src/patterns/show/it.ts +56 -0
  360. package/src/patterns/show/ja.ts +69 -0
  361. package/src/patterns/show/ko.ts +73 -0
  362. package/src/patterns/show/ms.ts +30 -0
  363. package/src/patterns/show/pl.ts +57 -0
  364. package/src/patterns/show/ru.ts +57 -0
  365. package/src/patterns/show/th.ts +29 -0
  366. package/src/patterns/show/tl.ts +30 -0
  367. package/src/patterns/show/tr.ts +65 -0
  368. package/src/patterns/show/uk.ts +57 -0
  369. package/src/patterns/show/vi.ts +56 -0
  370. package/src/patterns/show/zh.ts +68 -0
  371. package/src/patterns/take/ar.ts +51 -0
  372. package/src/patterns/take/index.ts +31 -0
  373. package/src/patterns/toggle/ar.ts +61 -0
  374. package/src/patterns/toggle/bn.ts +70 -0
  375. package/src/patterns/toggle/en.ts +61 -0
  376. package/src/patterns/toggle/es.ts +61 -0
  377. package/src/patterns/toggle/hi.ts +80 -0
  378. package/src/patterns/toggle/index.ts +95 -0
  379. package/src/patterns/toggle/it.ts +69 -0
  380. package/src/patterns/toggle/ja.ts +156 -0
  381. package/src/patterns/toggle/ko.ts +113 -0
  382. package/src/patterns/toggle/ms.ts +30 -0
  383. package/src/patterns/toggle/pl.ts +62 -0
  384. package/src/patterns/toggle/ru.ts +62 -0
  385. package/src/patterns/toggle/th.ts +50 -0
  386. package/src/patterns/toggle/tl.ts +30 -0
  387. package/src/patterns/toggle/tr.ts +88 -0
  388. package/src/patterns/toggle/uk.ts +62 -0
  389. package/src/patterns/toggle/vi.ts +61 -0
  390. package/src/patterns/toggle/zh.ts +99 -0
  391. package/src/public-api.ts +286 -0
  392. package/src/registry.ts +441 -0
  393. package/src/tokenizers/arabic.ts +723 -0
  394. package/src/tokenizers/base.ts +1300 -0
  395. package/src/tokenizers/bengali.ts +289 -0
  396. package/src/tokenizers/chinese.ts +481 -0
  397. package/src/tokenizers/english.ts +416 -0
  398. package/src/tokenizers/french.ts +326 -0
  399. package/src/tokenizers/german.ts +324 -0
  400. package/src/tokenizers/hindi.ts +319 -0
  401. package/src/tokenizers/index.ts +127 -0
  402. package/src/tokenizers/indonesian.ts +306 -0
  403. package/src/tokenizers/italian.ts +458 -0
  404. package/src/tokenizers/japanese.ts +447 -0
  405. package/src/tokenizers/korean.ts +642 -0
  406. package/src/tokenizers/morphology/arabic-normalizer.ts +242 -0
  407. package/src/tokenizers/morphology/french-normalizer.ts +268 -0
  408. package/src/tokenizers/morphology/german-normalizer.ts +256 -0
  409. package/src/tokenizers/morphology/index.ts +46 -0
  410. package/src/tokenizers/morphology/italian-normalizer.ts +329 -0
  411. package/src/tokenizers/morphology/japanese-normalizer.ts +288 -0
  412. package/src/tokenizers/morphology/korean-normalizer.ts +428 -0
  413. package/src/tokenizers/morphology/polish-normalizer.ts +264 -0
  414. package/src/tokenizers/morphology/portuguese-normalizer.ts +310 -0
  415. package/src/tokenizers/morphology/spanish-normalizer.ts +327 -0
  416. package/src/tokenizers/morphology/turkish-normalizer.ts +412 -0
  417. package/src/tokenizers/morphology/types.ts +211 -0
  418. package/src/tokenizers/ms.ts +198 -0
  419. package/src/tokenizers/polish.ts +354 -0
  420. package/src/tokenizers/portuguese.ts +304 -0
  421. package/src/tokenizers/quechua.ts +339 -0
  422. package/src/tokenizers/russian.ts +375 -0
  423. package/src/tokenizers/spanish.ts +403 -0
  424. package/src/tokenizers/swahili.ts +303 -0
  425. package/src/tokenizers/thai.ts +236 -0
  426. package/src/tokenizers/tl.ts +198 -0
  427. package/src/tokenizers/turkish.ts +411 -0
  428. package/src/tokenizers/ukrainian.ts +369 -0
  429. package/src/tokenizers/vietnamese.ts +410 -0
  430. package/src/types/grammar-types.ts +617 -0
  431. package/src/types/unified-profile.ts +267 -0
  432. package/src/types.ts +709 -0
  433. package/src/utils/confidence-calculator.ts +147 -0
  434. package/src/validators/command-validator.ts +380 -0
  435. package/src/validators/index.ts +15 -0
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Russian Increment Patterns
3
+ *
4
+ * Tree-shakeable: Only included when Russian is imported.
5
+ * Russian uses infinitive verb forms for commands.
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../types';
9
+
10
+ /**
11
+ * Get Russian increment patterns.
12
+ */
13
+ export function getIncrementPatternsRu(): LanguagePattern[] {
14
+ return [
15
+ {
16
+ id: 'increment-ru-full',
17
+ language: 'ru',
18
+ command: 'increment',
19
+ priority: 100,
20
+ template: {
21
+ format: 'увеличить {patient} на {quantity}',
22
+ tokens: [
23
+ { type: 'literal', value: 'увеличить', alternatives: ['увеличь'] },
24
+ { type: 'role', role: 'patient' },
25
+ {
26
+ type: 'group',
27
+ optional: true,
28
+ tokens: [
29
+ { type: 'literal', value: 'на' },
30
+ { type: 'role', role: 'quantity' },
31
+ ],
32
+ },
33
+ ],
34
+ },
35
+ extraction: {
36
+ patient: { position: 1 },
37
+ quantity: { marker: 'на', default: { type: 'literal', value: 1 } },
38
+ },
39
+ },
40
+ {
41
+ id: 'increment-ru-simple',
42
+ language: 'ru',
43
+ command: 'increment',
44
+ priority: 90,
45
+ template: {
46
+ format: 'увеличить {patient}',
47
+ tokens: [
48
+ { type: 'literal', value: 'увеличить', alternatives: ['увеличь'] },
49
+ { type: 'role', role: 'patient' },
50
+ ],
51
+ },
52
+ extraction: {
53
+ patient: { position: 1 },
54
+ quantity: { default: { type: 'literal', value: 1 } },
55
+ },
56
+ },
57
+ ];
58
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Thai Increment Patterns
3
+ *
4
+ * Patterns for parsing "increment" command in Thai.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ export function getIncrementPatternsTh(): LanguagePattern[] {
10
+ return [
11
+ // Simple pattern: เพิ่มค่า :counter
12
+ {
13
+ id: 'increment-th-simple',
14
+ language: 'th',
15
+ command: 'increment',
16
+ priority: 100,
17
+ template: {
18
+ format: 'เพิ่มค่า {patient}',
19
+ tokens: [
20
+ { type: 'literal', value: 'เพิ่มค่า' },
21
+ { type: 'role', role: 'patient' },
22
+ ],
23
+ },
24
+ extraction: {
25
+ patient: { position: 1 },
26
+ },
27
+ },
28
+ // With quantity: เพิ่มค่า :counter ด้วย 5
29
+ {
30
+ id: 'increment-th-with-quantity',
31
+ language: 'th',
32
+ command: 'increment',
33
+ priority: 95,
34
+ template: {
35
+ format: 'เพิ่มค่า {patient} ด้วย {quantity}',
36
+ tokens: [
37
+ { type: 'literal', value: 'เพิ่มค่า' },
38
+ { type: 'role', role: 'patient' },
39
+ { type: 'literal', value: 'ด้วย' },
40
+ { type: 'role', role: 'quantity' },
41
+ ],
42
+ },
43
+ extraction: {
44
+ patient: { position: 1 },
45
+ quantity: { marker: 'ด้วย', position: 3 },
46
+ },
47
+ },
48
+ ];
49
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Tagalog Increment Patterns
3
+ *
4
+ * Patterns for parsing "increment" command in Tagalog.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ export function getIncrementPatternsTl(): LanguagePattern[] {
10
+ return [
11
+ // TODO: Add patterns for increment
12
+ // Example:
13
+ // {
14
+ // id: 'increment-tl-simple',
15
+ // language: 'tl',
16
+ // command: 'increment',
17
+ // priority: 100,
18
+ // template: {
19
+ // format: 'TODO {patient}',
20
+ // tokens: [
21
+ // { type: 'literal', value: 'TODO' },
22
+ // { type: 'role', role: 'patient' },
23
+ // ],
24
+ // },
25
+ // extraction: {
26
+ // patient: { position: 1 },
27
+ // },
28
+ // },
29
+ ];
30
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Turkish Increment Patterns
3
+ *
4
+ * Hand-crafted patterns for "increment" command.
5
+ * Turkish: counter artır (SOV order)
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../types';
9
+
10
+ /**
11
+ * Get Turkish increment patterns.
12
+ */
13
+ export function getIncrementPatternsTr(): LanguagePattern[] {
14
+ return [
15
+ {
16
+ id: 'increment-tr-full',
17
+ language: 'tr',
18
+ command: 'increment',
19
+ priority: 100,
20
+ template: {
21
+ format: '{patient} artır',
22
+ tokens: [
23
+ { type: 'role', role: 'patient', expectedTypes: ['selector', 'reference', 'expression'] },
24
+ {
25
+ type: 'literal',
26
+ value: 'artır',
27
+ alternatives: ['artir', 'artırmak', 'artirmak', 'arttır', 'increment'],
28
+ },
29
+ ],
30
+ },
31
+ extraction: {
32
+ patient: { position: 0 },
33
+ },
34
+ },
35
+ {
36
+ id: 'increment-tr-svo',
37
+ language: 'tr',
38
+ command: 'increment',
39
+ priority: 90,
40
+ template: {
41
+ format: 'artır {patient}',
42
+ tokens: [
43
+ { type: 'literal', value: 'artır', alternatives: ['artir', 'artırmak'] },
44
+ { type: 'role', role: 'patient', expectedTypes: ['selector', 'reference', 'expression'] },
45
+ ],
46
+ },
47
+ extraction: {
48
+ patient: { position: 1 },
49
+ },
50
+ },
51
+ ];
52
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Ukrainian Increment Patterns
3
+ *
4
+ * Tree-shakeable: Only included when Ukrainian is imported.
5
+ * Ukrainian uses infinitive verb forms for commands.
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../types';
9
+
10
+ /**
11
+ * Get Ukrainian increment patterns.
12
+ */
13
+ export function getIncrementPatternsUk(): LanguagePattern[] {
14
+ return [
15
+ {
16
+ id: 'increment-uk-full',
17
+ language: 'uk',
18
+ command: 'increment',
19
+ priority: 100,
20
+ template: {
21
+ format: 'збільшити {patient} на {quantity}',
22
+ tokens: [
23
+ { type: 'literal', value: 'збільшити', alternatives: ['збільш'] },
24
+ { type: 'role', role: 'patient' },
25
+ {
26
+ type: 'group',
27
+ optional: true,
28
+ tokens: [
29
+ { type: 'literal', value: 'на' },
30
+ { type: 'role', role: 'quantity' },
31
+ ],
32
+ },
33
+ ],
34
+ },
35
+ extraction: {
36
+ patient: { position: 1 },
37
+ quantity: { marker: 'на', default: { type: 'literal', value: 1 } },
38
+ },
39
+ },
40
+ {
41
+ id: 'increment-uk-simple',
42
+ language: 'uk',
43
+ command: 'increment',
44
+ priority: 90,
45
+ template: {
46
+ format: 'збільшити {patient}',
47
+ tokens: [
48
+ { type: 'literal', value: 'збільшити', alternatives: ['збільш'] },
49
+ { type: 'role', role: 'patient' },
50
+ ],
51
+ },
52
+ extraction: {
53
+ patient: { position: 1 },
54
+ quantity: { default: { type: 'literal', value: 1 } },
55
+ },
56
+ },
57
+ ];
58
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Vietnamese Increment Patterns
3
+ *
4
+ * Tree-shakeable: Only included when Vietnamese is imported.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ /**
10
+ * Get Vietnamese increment patterns.
11
+ */
12
+ export function getIncrementPatternsVi(): LanguagePattern[] {
13
+ return [
14
+ {
15
+ id: 'increment-vi-full',
16
+ language: 'vi',
17
+ command: 'increment',
18
+ priority: 100,
19
+ template: {
20
+ format: 'tăng {target} thêm {amount}',
21
+ tokens: [
22
+ { type: 'literal', value: 'tăng', alternatives: ['tăng lên'] },
23
+ { type: 'role', role: 'patient' },
24
+ {
25
+ type: 'group',
26
+ optional: true,
27
+ tokens: [
28
+ { type: 'literal', value: 'thêm', alternatives: ['lên'] },
29
+ { type: 'role', role: 'quantity' },
30
+ ],
31
+ },
32
+ ],
33
+ },
34
+ extraction: {
35
+ patient: { position: 1 },
36
+ quantity: {
37
+ marker: 'thêm',
38
+ markerAlternatives: ['lên'],
39
+ default: { type: 'literal', value: '1' },
40
+ },
41
+ },
42
+ },
43
+ {
44
+ id: 'increment-vi-simple',
45
+ language: 'vi',
46
+ command: 'increment',
47
+ priority: 90,
48
+ template: {
49
+ format: 'tăng {target}',
50
+ tokens: [
51
+ { type: 'literal', value: 'tăng', alternatives: ['tăng lên'] },
52
+ { type: 'role', role: 'patient' },
53
+ ],
54
+ },
55
+ extraction: {
56
+ patient: { position: 1 },
57
+ quantity: { default: { type: 'literal', value: '1' } },
58
+ },
59
+ },
60
+ ];
61
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Chinese Increment Patterns
3
+ *
4
+ * Hand-crafted patterns for "increment" command.
5
+ * Chinese: 增加 counter
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../types';
9
+
10
+ /**
11
+ * Get Chinese increment patterns.
12
+ */
13
+ export function getIncrementPatternsZh(): LanguagePattern[] {
14
+ return [
15
+ {
16
+ id: 'increment-zh-full',
17
+ language: 'zh',
18
+ command: 'increment',
19
+ priority: 100,
20
+ template: {
21
+ format: '增加 {patient}',
22
+ tokens: [
23
+ { type: 'literal', value: '增加', alternatives: ['递增', '加', '增', 'increment'] },
24
+ { type: 'role', role: 'patient', expectedTypes: ['selector', 'reference', 'expression'] },
25
+ ],
26
+ },
27
+ extraction: {
28
+ patient: { position: 1 },
29
+ },
30
+ },
31
+ ];
32
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Pattern Registry
3
+ *
4
+ * Central registry for all language patterns.
5
+ * Provides lookup by language and command type.
6
+ *
7
+ * Architecture:
8
+ * - builders.ts: Pattern building and generation logic
9
+ * - registry.ts: Pattern cache and lookup functions
10
+ * - languages/en/: English-only hand-crafted patterns
11
+ * - toggle/, put/, event-handler/: Per-command patterns by language
12
+ */
13
+
14
+ import type { LanguagePattern } from '../types';
15
+ import type { LanguageProfile } from '../generators/language-profiles';
16
+
17
+ // =============================================================================
18
+ // Re-exports from builders and registry
19
+ // =============================================================================
20
+
21
+ // Pattern building
22
+ export {
23
+ buildPatternsForLanguage,
24
+ buildAllPatterns,
25
+ getGeneratedPatterns,
26
+ getHandcraftedLanguages,
27
+ } from './builders';
28
+
29
+ // Pattern lookup and cache
30
+ export {
31
+ allPatterns,
32
+ getAllPatterns,
33
+ getPatternsForLanguage,
34
+ getPatternsForLanguageAndCommand,
35
+ getSupportedLanguages,
36
+ getSupportedCommands,
37
+ getPatternById,
38
+ getPatternStats,
39
+ clearPatternCache,
40
+ } from './registry';
41
+
42
+ export type { PatternStats } from './registry';
43
+
44
+ // =============================================================================
45
+ // Re-exports from per-command pattern directories
46
+ // =============================================================================
47
+
48
+ // Per-language getter functions (tree-shakeable)
49
+ export { getTogglePatternsForLanguage } from './toggle/index';
50
+ export { getPutPatternsForLanguage } from './put/index';
51
+ export { getEventHandlerPatternsForLanguage } from './event-handler/index';
52
+ export { getGrammarTransformedPatternsForLanguage } from './grammar-transformed/index';
53
+
54
+ // Event handler utilities
55
+ export { eventNameTranslations, normalizeEventName } from './event-handler/shared';
56
+
57
+ // =============================================================================
58
+ // Registry Pattern Generator Setup
59
+ // =============================================================================
60
+ // Set up the pattern generator for the registry so that non-English languages
61
+ // work correctly when using the full bundle. This enables the registry's
62
+ // getPatternsForLanguage to fall back to buildPatternsForLanguage when patterns
63
+ // aren't directly registered.
64
+
65
+ import { setPatternGenerator } from '../registry';
66
+ import { buildPatternsForLanguage } from './builders';
67
+
68
+ // Wrapper to match the registry's expected signature (profile -> patterns)
69
+ function patternGeneratorForProfile(profile: LanguageProfile): LanguagePattern[] {
70
+ return buildPatternsForLanguage(profile.code);
71
+ }
72
+
73
+ // Register the pattern generator with the registry
74
+ // This allows the registry to generate patterns for any registered language
75
+ setPatternGenerator(patternGeneratorForProfile);
76
+
77
+ // =============================================================================
78
+ // Backwards Compatibility Notes
79
+ // =============================================================================
80
+ // NOTE: togglePatterns, putPatterns, eventHandlerPatterns arrays are NOT
81
+ // re-exported from this file to enable tree-shaking. Import them directly:
82
+ // import { togglePatterns } from './patterns/toggle';
83
+ // import { putPatterns } from './patterns/put';
84
+ // import { eventHandlerPatterns } from './patterns/event-handler';
@@ -0,0 +1,93 @@
1
+ /**
2
+ * English Control Flow Patterns
3
+ *
4
+ * Hand-crafted patterns for for, if, and unless commands.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../../types';
8
+
9
+ /**
10
+ * English: "for {variable} in {collection}"
11
+ * Basic for-each iteration pattern.
12
+ *
13
+ * Examples:
14
+ * - for item in items
15
+ * - for x in .elements
16
+ * - for user in users
17
+ */
18
+ export const forEnglish: LanguagePattern = {
19
+ id: 'for-en-basic',
20
+ language: 'en',
21
+ command: 'for',
22
+ priority: 100,
23
+ template: {
24
+ format: 'for {patient} in {source}',
25
+ tokens: [
26
+ { type: 'literal', value: 'for' },
27
+ { type: 'role', role: 'patient', expectedTypes: ['expression', 'reference'] }, // Loop variable
28
+ { type: 'literal', value: 'in' },
29
+ { type: 'role', role: 'source', expectedTypes: ['selector', 'expression', 'reference'] }, // Collection
30
+ ],
31
+ },
32
+ extraction: {
33
+ patient: { position: 1 },
34
+ source: { marker: 'in' },
35
+ loopType: { default: { type: 'literal', value: 'for' } },
36
+ },
37
+ };
38
+
39
+ /**
40
+ * English: "if {condition}"
41
+ * Basic conditional pattern. Body parsing handled by main parser.
42
+ *
43
+ * Examples:
44
+ * - if active toggle .class
45
+ * - if x > 5 then ... end
46
+ * - if myVar
47
+ */
48
+ export const ifEnglish: LanguagePattern = {
49
+ id: 'if-en-basic',
50
+ language: 'en',
51
+ command: 'if',
52
+ priority: 100,
53
+ template: {
54
+ format: 'if {condition}',
55
+ tokens: [
56
+ { type: 'literal', value: 'if' },
57
+ { type: 'role', role: 'condition', expectedTypes: ['expression', 'reference', 'selector'] },
58
+ ],
59
+ },
60
+ extraction: {
61
+ condition: { position: 1 },
62
+ },
63
+ };
64
+
65
+ /**
66
+ * English: "unless {condition}"
67
+ * Negated conditional pattern. Body parsing handled by main parser.
68
+ *
69
+ * Examples:
70
+ * - unless disabled submit
71
+ * - unless x == 0 then ... end
72
+ */
73
+ export const unlessEnglish: LanguagePattern = {
74
+ id: 'unless-en-basic',
75
+ language: 'en',
76
+ command: 'unless',
77
+ priority: 100,
78
+ template: {
79
+ format: 'unless {condition}',
80
+ tokens: [
81
+ { type: 'literal', value: 'unless' },
82
+ { type: 'role', role: 'condition', expectedTypes: ['expression', 'reference', 'selector'] },
83
+ ],
84
+ },
85
+ extraction: {
86
+ condition: { position: 1 },
87
+ },
88
+ };
89
+
90
+ /**
91
+ * All English control flow patterns.
92
+ */
93
+ export const controlFlowPatternsEn: LanguagePattern[] = [forEnglish, ifEnglish, unlessEnglish];
@@ -0,0 +1,62 @@
1
+ /**
2
+ * English Fetch Patterns
3
+ *
4
+ * Hand-crafted patterns for fetch command with response type support.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../../types';
8
+
9
+ /**
10
+ * English: "fetch /url as json" with response type.
11
+ * This pattern has higher priority to capture the "as json" modifier.
12
+ */
13
+ export const fetchWithResponseTypeEnglish: LanguagePattern = {
14
+ id: 'fetch-en-with-response-type',
15
+ language: 'en',
16
+ command: 'fetch',
17
+ priority: 90, // Higher than simple pattern (80) to capture "as" modifier first
18
+ template: {
19
+ format: 'fetch {source} as {responseType}',
20
+ tokens: [
21
+ { type: 'literal', value: 'fetch' },
22
+ { type: 'role', role: 'source', expectedTypes: ['literal', 'expression'] },
23
+ { type: 'literal', value: 'as' },
24
+ // json/text/html are identifiers not keywords, so we need to accept 'expression' type
25
+ { type: 'role', role: 'responseType', expectedTypes: ['literal', 'expression'] },
26
+ ],
27
+ },
28
+ extraction: {
29
+ source: { position: 1 },
30
+ responseType: { marker: 'as' },
31
+ },
32
+ };
33
+
34
+ /**
35
+ * English: "fetch /url" without "from" preposition.
36
+ * Official hyperscript allows bare URL without "from".
37
+ * Lower priority so it's tried after the response type pattern.
38
+ */
39
+ export const fetchSimpleEnglish: LanguagePattern = {
40
+ id: 'fetch-en-simple',
41
+ language: 'en',
42
+ command: 'fetch',
43
+ priority: 80, // Lower than response type pattern (90) - fallback when "as" not present
44
+ template: {
45
+ format: 'fetch {source}',
46
+ tokens: [
47
+ { type: 'literal', value: 'fetch' },
48
+ { type: 'role', role: 'source' },
49
+ ],
50
+ },
51
+ extraction: {
52
+ source: { position: 1 },
53
+ },
54
+ };
55
+
56
+ /**
57
+ * All English fetch patterns.
58
+ */
59
+ export const fetchPatternsEn: LanguagePattern[] = [
60
+ fetchWithResponseTypeEnglish,
61
+ fetchSimpleEnglish,
62
+ ];
@@ -0,0 +1,42 @@
1
+ /**
2
+ * English-Only Patterns
3
+ *
4
+ * Re-exports all English-specific hand-crafted patterns.
5
+ * These patterns are only included when English is the target language.
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../../types';
9
+
10
+ import { fetchPatternsEn } from './fetch';
11
+ import { swapPatternsEn } from './swap';
12
+ import { repeatPatternsEn } from './repeat';
13
+ import { setPatternsEn } from './set';
14
+ import { controlFlowPatternsEn } from './control-flow';
15
+ import { temporalPatternsEn } from './temporal';
16
+
17
+ // Re-export individual pattern arrays for selective imports
18
+ export { fetchPatternsEn } from './fetch';
19
+ export { swapPatternsEn } from './swap';
20
+ export { repeatPatternsEn } from './repeat';
21
+ export { setPatternsEn } from './set';
22
+ export { controlFlowPatternsEn } from './control-flow';
23
+ export { temporalPatternsEn } from './temporal';
24
+
25
+ /**
26
+ * All English-only hand-crafted patterns combined.
27
+ */
28
+ export const allEnglishOnlyPatterns: LanguagePattern[] = [
29
+ ...fetchPatternsEn,
30
+ ...swapPatternsEn,
31
+ ...repeatPatternsEn,
32
+ ...setPatternsEn,
33
+ ...controlFlowPatternsEn,
34
+ ...temporalPatternsEn,
35
+ ];
36
+
37
+ /**
38
+ * Get all English-only hand-crafted patterns.
39
+ */
40
+ export function getEnglishOnlyPatterns(): LanguagePattern[] {
41
+ return allEnglishOnlyPatterns;
42
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * English Repeat Patterns
3
+ *
4
+ * Hand-crafted patterns for repeat command with event termination.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../../types';
8
+
9
+ /**
10
+ * English: "repeat until event pointerup from document"
11
+ * Full form with event source specification.
12
+ * Higher priority to capture the complete "until event X from Y" syntax.
13
+ */
14
+ export const repeatUntilEventFromEnglish: LanguagePattern = {
15
+ id: 'repeat-en-until-event-from',
16
+ language: 'en',
17
+ command: 'repeat',
18
+ priority: 120, // Highest priority - most specific pattern
19
+ template: {
20
+ format: 'repeat until event {event} from {source}',
21
+ tokens: [
22
+ { type: 'literal', value: 'repeat' },
23
+ { type: 'literal', value: 'until' },
24
+ { type: 'literal', value: 'event' },
25
+ { type: 'role', role: 'event', expectedTypes: ['literal', 'expression'] },
26
+ { type: 'literal', value: 'from' },
27
+ { type: 'role', role: 'source', expectedTypes: ['selector', 'reference', 'expression'] },
28
+ ],
29
+ },
30
+ extraction: {
31
+ event: { marker: 'event' },
32
+ source: { marker: 'from' },
33
+ loopType: { default: { type: 'literal', value: 'until-event' } },
34
+ },
35
+ };
36
+
37
+ /**
38
+ * English: "repeat until event pointerup"
39
+ * Simple event termination without source.
40
+ */
41
+ export const repeatUntilEventEnglish: LanguagePattern = {
42
+ id: 'repeat-en-until-event',
43
+ language: 'en',
44
+ command: 'repeat',
45
+ priority: 110, // Lower than "from" variant, but higher than quantity-based repeat
46
+ template: {
47
+ format: 'repeat until event {event}',
48
+ tokens: [
49
+ { type: 'literal', value: 'repeat' },
50
+ { type: 'literal', value: 'until' },
51
+ { type: 'literal', value: 'event' },
52
+ { type: 'role', role: 'event', expectedTypes: ['literal', 'expression'] },
53
+ ],
54
+ },
55
+ extraction: {
56
+ event: { marker: 'event' },
57
+ loopType: { default: { type: 'literal', value: 'until-event' } },
58
+ },
59
+ };
60
+
61
+ /**
62
+ * All English repeat patterns.
63
+ */
64
+ export const repeatPatternsEn: LanguagePattern[] = [
65
+ repeatUntilEventFromEnglish,
66
+ repeatUntilEventEnglish,
67
+ ];