@lokascript/framework 7.0.0 → 7.1.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 (283) hide show
  1. package/CHANGELOG.md +65 -1
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/languages/ar.cjs +7 -0
  6. package/dist/languages/ar.cjs.map +1 -0
  7. package/dist/languages/ar.d.ts +49 -0
  8. package/dist/languages/ar.d.ts.map +1 -0
  9. package/dist/languages/ar.js +7 -0
  10. package/dist/languages/ar.js.map +1 -0
  11. package/dist/languages/bn.cjs +7 -0
  12. package/dist/languages/bn.cjs.map +1 -0
  13. package/dist/languages/bn.d.ts +58 -0
  14. package/dist/languages/bn.d.ts.map +1 -0
  15. package/dist/languages/bn.js +7 -0
  16. package/dist/languages/bn.js.map +1 -0
  17. package/dist/languages/chunks/chunk-2Y3XXFQO.cjs +47 -0
  18. package/dist/languages/chunks/chunk-2Y3XXFQO.cjs.map +1 -0
  19. package/dist/languages/chunks/chunk-7JFC6YCG.cjs +38 -0
  20. package/dist/languages/chunks/chunk-7JFC6YCG.cjs.map +1 -0
  21. package/dist/languages/chunks/chunk-7M7D3AZV.js +36 -0
  22. package/dist/languages/chunks/chunk-7M7D3AZV.js.map +1 -0
  23. package/dist/languages/chunks/chunk-BLWOTGS4.cjs +33 -0
  24. package/dist/languages/chunks/chunk-BLWOTGS4.cjs.map +1 -0
  25. package/dist/languages/chunks/chunk-BNU64ZWY.cjs +33 -0
  26. package/dist/languages/chunks/chunk-BNU64ZWY.cjs.map +1 -0
  27. package/dist/languages/chunks/chunk-CCC73SLG.js +33 -0
  28. package/dist/languages/chunks/chunk-CCC73SLG.js.map +1 -0
  29. package/dist/languages/chunks/chunk-CEZSJJBE.js +35 -0
  30. package/dist/languages/chunks/chunk-CEZSJJBE.js.map +1 -0
  31. package/dist/languages/chunks/chunk-CJPWN3UM.cjs +33 -0
  32. package/dist/languages/chunks/chunk-CJPWN3UM.cjs.map +1 -0
  33. package/dist/languages/chunks/chunk-CZUFBVAP.cjs +36 -0
  34. package/dist/languages/chunks/chunk-CZUFBVAP.cjs.map +1 -0
  35. package/dist/languages/chunks/chunk-DFQ7CZ43.js +32 -0
  36. package/dist/languages/chunks/chunk-DFQ7CZ43.js.map +1 -0
  37. package/dist/languages/chunks/chunk-DZIG3L3C.js +33 -0
  38. package/dist/languages/chunks/chunk-DZIG3L3C.js.map +1 -0
  39. package/dist/languages/chunks/chunk-EEEJDKZH.cjs +41 -0
  40. package/dist/languages/chunks/chunk-EEEJDKZH.cjs.map +1 -0
  41. package/dist/languages/chunks/chunk-EH3CS6QF.cjs +39 -0
  42. package/dist/languages/chunks/chunk-EH3CS6QF.cjs.map +1 -0
  43. package/dist/languages/chunks/chunk-EQVZR5WU.js +36 -0
  44. package/dist/languages/chunks/chunk-EQVZR5WU.js.map +1 -0
  45. package/dist/languages/chunks/chunk-EY2I2PZI.cjs +42 -0
  46. package/dist/languages/chunks/chunk-EY2I2PZI.cjs.map +1 -0
  47. package/dist/languages/chunks/chunk-FDD6SCYE.js +38 -0
  48. package/dist/languages/chunks/chunk-FDD6SCYE.js.map +1 -0
  49. package/dist/languages/chunks/chunk-FDL3DCUR.cjs +38 -0
  50. package/dist/languages/chunks/chunk-FDL3DCUR.cjs.map +1 -0
  51. package/dist/languages/chunks/chunk-FQZEBNEC.js +32 -0
  52. package/dist/languages/chunks/chunk-FQZEBNEC.js.map +1 -0
  53. package/dist/languages/chunks/chunk-FXKGDEEF.js +32 -0
  54. package/dist/languages/chunks/chunk-FXKGDEEF.js.map +1 -0
  55. package/dist/languages/chunks/chunk-G727KC5F.js +34 -0
  56. package/dist/languages/chunks/chunk-G727KC5F.js.map +1 -0
  57. package/dist/languages/chunks/chunk-HRTBXKAS.js +34 -0
  58. package/dist/languages/chunks/chunk-HRTBXKAS.js.map +1 -0
  59. package/dist/languages/chunks/chunk-HTWLJAXE.cjs +34 -0
  60. package/dist/languages/chunks/chunk-HTWLJAXE.cjs.map +1 -0
  61. package/dist/languages/chunks/chunk-IG2BHTIU.js +50 -0
  62. package/dist/languages/chunks/chunk-IG2BHTIU.js.map +1 -0
  63. package/dist/languages/chunks/chunk-JJGECSB7.js +44 -0
  64. package/dist/languages/chunks/chunk-JJGECSB7.js.map +1 -0
  65. package/dist/languages/chunks/chunk-KPGJSWSP.js +32 -0
  66. package/dist/languages/chunks/chunk-KPGJSWSP.js.map +1 -0
  67. package/dist/languages/chunks/chunk-LGZCHKVL.cjs +50 -0
  68. package/dist/languages/chunks/chunk-LGZCHKVL.cjs.map +1 -0
  69. package/dist/languages/chunks/chunk-LMRNA2XQ.cjs +35 -0
  70. package/dist/languages/chunks/chunk-LMRNA2XQ.cjs.map +1 -0
  71. package/dist/languages/chunks/chunk-NS4L6RCJ.js +42 -0
  72. package/dist/languages/chunks/chunk-NS4L6RCJ.js.map +1 -0
  73. package/dist/languages/chunks/chunk-OGVDC4MV.js +33 -0
  74. package/dist/languages/chunks/chunk-OGVDC4MV.js.map +1 -0
  75. package/dist/languages/chunks/chunk-OOI6MH2H.js +47 -0
  76. package/dist/languages/chunks/chunk-OOI6MH2H.js.map +1 -0
  77. package/dist/languages/chunks/chunk-OSHTQPFA.js +35 -0
  78. package/dist/languages/chunks/chunk-OSHTQPFA.js.map +1 -0
  79. package/dist/languages/chunks/chunk-P2ONCOPE.js +33 -0
  80. package/dist/languages/chunks/chunk-P2ONCOPE.js.map +1 -0
  81. package/dist/languages/chunks/chunk-PC4BLDMN.js +41 -0
  82. package/dist/languages/chunks/chunk-PC4BLDMN.js.map +1 -0
  83. package/dist/languages/chunks/chunk-Q7Z57FEP.js +39 -0
  84. package/dist/languages/chunks/chunk-Q7Z57FEP.js.map +1 -0
  85. package/dist/languages/chunks/chunk-SFDLZDQC.cjs +36 -0
  86. package/dist/languages/chunks/chunk-SFDLZDQC.cjs.map +1 -0
  87. package/dist/languages/chunks/chunk-SLSZETLO.js +39 -0
  88. package/dist/languages/chunks/chunk-SLSZETLO.js.map +1 -0
  89. package/dist/languages/chunks/chunk-T5QEXBP6.cjs +39 -0
  90. package/dist/languages/chunks/chunk-T5QEXBP6.cjs.map +1 -0
  91. package/dist/languages/chunks/chunk-TM54B2L7.cjs +34 -0
  92. package/dist/languages/chunks/chunk-TM54B2L7.cjs.map +1 -0
  93. package/dist/languages/chunks/chunk-UYYD7BWL.cjs +32 -0
  94. package/dist/languages/chunks/chunk-UYYD7BWL.cjs.map +1 -0
  95. package/dist/languages/chunks/chunk-V3EPOWJS.cjs +32 -0
  96. package/dist/languages/chunks/chunk-V3EPOWJS.cjs.map +1 -0
  97. package/dist/languages/chunks/chunk-W4Y2BHDV.cjs +33 -0
  98. package/dist/languages/chunks/chunk-W4Y2BHDV.cjs.map +1 -0
  99. package/dist/languages/chunks/chunk-W7UIUU64.cjs +32 -0
  100. package/dist/languages/chunks/chunk-W7UIUU64.cjs.map +1 -0
  101. package/dist/languages/chunks/chunk-WOTY3GYE.cjs +44 -0
  102. package/dist/languages/chunks/chunk-WOTY3GYE.cjs.map +1 -0
  103. package/dist/languages/chunks/chunk-WYH4M6NK.js +78 -0
  104. package/dist/languages/chunks/chunk-WYH4M6NK.js.map +1 -0
  105. package/dist/languages/chunks/chunk-XFSNOEMB.cjs +32 -0
  106. package/dist/languages/chunks/chunk-XFSNOEMB.cjs.map +1 -0
  107. package/dist/languages/chunks/chunk-XHHTLZRZ.cjs +78 -0
  108. package/dist/languages/chunks/chunk-XHHTLZRZ.cjs.map +1 -0
  109. package/dist/languages/chunks/chunk-YTZILXWL.cjs +35 -0
  110. package/dist/languages/chunks/chunk-YTZILXWL.cjs.map +1 -0
  111. package/dist/languages/chunks/chunk-ZLMXABY7.js +38 -0
  112. package/dist/languages/chunks/chunk-ZLMXABY7.js.map +1 -0
  113. package/dist/languages/de.cjs +7 -0
  114. package/dist/languages/de.cjs.map +1 -0
  115. package/dist/languages/de.d.ts +47 -0
  116. package/dist/languages/de.d.ts.map +1 -0
  117. package/dist/languages/de.js +7 -0
  118. package/dist/languages/de.js.map +1 -0
  119. package/dist/languages/en.cjs +7 -0
  120. package/dist/languages/en.cjs.map +1 -0
  121. package/dist/languages/en.d.ts +54 -0
  122. package/dist/languages/en.d.ts.map +1 -0
  123. package/dist/languages/en.js +7 -0
  124. package/dist/languages/en.js.map +1 -0
  125. package/dist/languages/es.cjs +7 -0
  126. package/dist/languages/es.cjs.map +1 -0
  127. package/dist/languages/es.d.ts +47 -0
  128. package/dist/languages/es.d.ts.map +1 -0
  129. package/dist/languages/es.js +7 -0
  130. package/dist/languages/es.js.map +1 -0
  131. package/dist/languages/fr.cjs +7 -0
  132. package/dist/languages/fr.cjs.map +1 -0
  133. package/dist/languages/fr.d.ts +47 -0
  134. package/dist/languages/fr.d.ts.map +1 -0
  135. package/dist/languages/fr.js +7 -0
  136. package/dist/languages/fr.js.map +1 -0
  137. package/dist/languages/he.cjs +7 -0
  138. package/dist/languages/he.cjs.map +1 -0
  139. package/dist/languages/he.d.ts +51 -0
  140. package/dist/languages/he.d.ts.map +1 -0
  141. package/dist/languages/he.js +7 -0
  142. package/dist/languages/he.js.map +1 -0
  143. package/dist/languages/hi.cjs +7 -0
  144. package/dist/languages/hi.cjs.map +1 -0
  145. package/dist/languages/hi.d.ts +54 -0
  146. package/dist/languages/hi.d.ts.map +1 -0
  147. package/dist/languages/hi.js +7 -0
  148. package/dist/languages/hi.js.map +1 -0
  149. package/dist/languages/id.cjs +7 -0
  150. package/dist/languages/id.cjs.map +1 -0
  151. package/dist/languages/id.d.ts +45 -0
  152. package/dist/languages/id.d.ts.map +1 -0
  153. package/dist/languages/id.js +7 -0
  154. package/dist/languages/id.js.map +1 -0
  155. package/dist/languages/index.cjs +99 -0
  156. package/dist/languages/index.cjs.map +1 -0
  157. package/dist/languages/index.d.ts +30 -0
  158. package/dist/languages/index.d.ts.map +1 -0
  159. package/dist/languages/index.js +99 -0
  160. package/dist/languages/index.js.map +1 -0
  161. package/dist/languages/it.cjs +7 -0
  162. package/dist/languages/it.cjs.map +1 -0
  163. package/dist/languages/it.d.ts +48 -0
  164. package/dist/languages/it.d.ts.map +1 -0
  165. package/dist/languages/it.js +7 -0
  166. package/dist/languages/it.js.map +1 -0
  167. package/dist/languages/ja.cjs +7 -0
  168. package/dist/languages/ja.cjs.map +1 -0
  169. package/dist/languages/ja.d.ts +58 -0
  170. package/dist/languages/ja.d.ts.map +1 -0
  171. package/dist/languages/ja.js +7 -0
  172. package/dist/languages/ja.js.map +1 -0
  173. package/dist/languages/ko.cjs +7 -0
  174. package/dist/languages/ko.cjs.map +1 -0
  175. package/dist/languages/ko.d.ts +61 -0
  176. package/dist/languages/ko.d.ts.map +1 -0
  177. package/dist/languages/ko.js +7 -0
  178. package/dist/languages/ko.js.map +1 -0
  179. package/dist/languages/ms.cjs +7 -0
  180. package/dist/languages/ms.cjs.map +1 -0
  181. package/dist/languages/ms.d.ts +44 -0
  182. package/dist/languages/ms.d.ts.map +1 -0
  183. package/dist/languages/ms.js +7 -0
  184. package/dist/languages/ms.js.map +1 -0
  185. package/dist/languages/pl.cjs +7 -0
  186. package/dist/languages/pl.cjs.map +1 -0
  187. package/dist/languages/pl.d.ts +50 -0
  188. package/dist/languages/pl.d.ts.map +1 -0
  189. package/dist/languages/pl.js +7 -0
  190. package/dist/languages/pl.js.map +1 -0
  191. package/dist/languages/pt.cjs +7 -0
  192. package/dist/languages/pt.cjs.map +1 -0
  193. package/dist/languages/pt.d.ts +46 -0
  194. package/dist/languages/pt.d.ts.map +1 -0
  195. package/dist/languages/pt.js +7 -0
  196. package/dist/languages/pt.js.map +1 -0
  197. package/dist/languages/qu.cjs +7 -0
  198. package/dist/languages/qu.cjs.map +1 -0
  199. package/dist/languages/qu.d.ts +48 -0
  200. package/dist/languages/qu.d.ts.map +1 -0
  201. package/dist/languages/qu.js +7 -0
  202. package/dist/languages/qu.js.map +1 -0
  203. package/dist/languages/ru.cjs +7 -0
  204. package/dist/languages/ru.cjs.map +1 -0
  205. package/dist/languages/ru.d.ts +50 -0
  206. package/dist/languages/ru.d.ts.map +1 -0
  207. package/dist/languages/ru.js +7 -0
  208. package/dist/languages/ru.js.map +1 -0
  209. package/dist/languages/sw.cjs +7 -0
  210. package/dist/languages/sw.cjs.map +1 -0
  211. package/dist/languages/sw.d.ts +45 -0
  212. package/dist/languages/sw.d.ts.map +1 -0
  213. package/dist/languages/sw.js +7 -0
  214. package/dist/languages/sw.js.map +1 -0
  215. package/dist/languages/th.cjs +7 -0
  216. package/dist/languages/th.cjs.map +1 -0
  217. package/dist/languages/th.d.ts +48 -0
  218. package/dist/languages/th.d.ts.map +1 -0
  219. package/dist/languages/th.js +7 -0
  220. package/dist/languages/th.js.map +1 -0
  221. package/dist/languages/tl.cjs +7 -0
  222. package/dist/languages/tl.cjs.map +1 -0
  223. package/dist/languages/tl.d.ts +44 -0
  224. package/dist/languages/tl.d.ts.map +1 -0
  225. package/dist/languages/tl.js +7 -0
  226. package/dist/languages/tl.js.map +1 -0
  227. package/dist/languages/tr.cjs +7 -0
  228. package/dist/languages/tr.cjs.map +1 -0
  229. package/dist/languages/tr.d.ts +57 -0
  230. package/dist/languages/tr.d.ts.map +1 -0
  231. package/dist/languages/tr.js +7 -0
  232. package/dist/languages/tr.js.map +1 -0
  233. package/dist/languages/types.d.ts +137 -0
  234. package/dist/languages/types.d.ts.map +1 -0
  235. package/dist/languages/uk.cjs +7 -0
  236. package/dist/languages/uk.cjs.map +1 -0
  237. package/dist/languages/uk.d.ts +50 -0
  238. package/dist/languages/uk.d.ts.map +1 -0
  239. package/dist/languages/uk.js +7 -0
  240. package/dist/languages/uk.js.map +1 -0
  241. package/dist/languages/vi.cjs +7 -0
  242. package/dist/languages/vi.cjs.map +1 -0
  243. package/dist/languages/vi.d.ts +47 -0
  244. package/dist/languages/vi.d.ts.map +1 -0
  245. package/dist/languages/vi.js +7 -0
  246. package/dist/languages/vi.js.map +1 -0
  247. package/dist/languages/zh.cjs +7 -0
  248. package/dist/languages/zh.cjs.map +1 -0
  249. package/dist/languages/zh.d.ts +49 -0
  250. package/dist/languages/zh.d.ts.map +1 -0
  251. package/dist/languages/zh.js +7 -0
  252. package/dist/languages/zh.js.map +1 -0
  253. package/dist/testing/index.js +1416 -930
  254. package/dist/testing/index.js.map +1 -1
  255. package/package.json +130 -5
  256. package/src/index.ts +2 -0
  257. package/src/languages/ar.ts +41 -0
  258. package/src/languages/bn.ts +45 -0
  259. package/src/languages/de.ts +37 -0
  260. package/src/languages/en.ts +36 -0
  261. package/src/languages/es.ts +40 -0
  262. package/src/languages/fr.ts +36 -0
  263. package/src/languages/he.ts +38 -0
  264. package/src/languages/hi.ts +44 -0
  265. package/src/languages/id.ts +34 -0
  266. package/src/languages/index.ts +42 -0
  267. package/src/languages/it.ts +38 -0
  268. package/src/languages/ja.ts +49 -0
  269. package/src/languages/ko.ts +50 -0
  270. package/src/languages/languages.test.ts +57 -0
  271. package/src/languages/ms.ts +33 -0
  272. package/src/languages/pl.ts +39 -0
  273. package/src/languages/pt.ts +34 -0
  274. package/src/languages/qu.ts +34 -0
  275. package/src/languages/ru.ts +37 -0
  276. package/src/languages/sw.ts +34 -0
  277. package/src/languages/th.ts +44 -0
  278. package/src/languages/tl.ts +37 -0
  279. package/src/languages/tr.ts +76 -0
  280. package/src/languages/types.ts +145 -0
  281. package/src/languages/uk.ts +37 -0
  282. package/src/languages/vi.ts +36 -0
  283. package/src/languages/zh.ts +36 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokascript/framework",
3
- "version": "7.0.0",
3
+ "version": "7.1.0",
4
4
  "description": "Generic framework for building multilingual DSLs with semantic parsing and grammar transformation",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -28,6 +28,131 @@
28
28
  "types": "./dist/multilingual/index.d.ts",
29
29
  "import": "./dist/multilingual/index.js"
30
30
  },
31
+ "./languages": {
32
+ "types": "./dist/languages/index.d.ts",
33
+ "import": "./dist/languages/index.js",
34
+ "require": "./dist/languages/index.cjs"
35
+ },
36
+ "./languages/ar": {
37
+ "types": "./dist/languages/ar.d.ts",
38
+ "import": "./dist/languages/ar.js",
39
+ "require": "./dist/languages/ar.cjs"
40
+ },
41
+ "./languages/bn": {
42
+ "types": "./dist/languages/bn.d.ts",
43
+ "import": "./dist/languages/bn.js",
44
+ "require": "./dist/languages/bn.cjs"
45
+ },
46
+ "./languages/de": {
47
+ "types": "./dist/languages/de.d.ts",
48
+ "import": "./dist/languages/de.js",
49
+ "require": "./dist/languages/de.cjs"
50
+ },
51
+ "./languages/en": {
52
+ "types": "./dist/languages/en.d.ts",
53
+ "import": "./dist/languages/en.js",
54
+ "require": "./dist/languages/en.cjs"
55
+ },
56
+ "./languages/es": {
57
+ "types": "./dist/languages/es.d.ts",
58
+ "import": "./dist/languages/es.js",
59
+ "require": "./dist/languages/es.cjs"
60
+ },
61
+ "./languages/fr": {
62
+ "types": "./dist/languages/fr.d.ts",
63
+ "import": "./dist/languages/fr.js",
64
+ "require": "./dist/languages/fr.cjs"
65
+ },
66
+ "./languages/he": {
67
+ "types": "./dist/languages/he.d.ts",
68
+ "import": "./dist/languages/he.js",
69
+ "require": "./dist/languages/he.cjs"
70
+ },
71
+ "./languages/hi": {
72
+ "types": "./dist/languages/hi.d.ts",
73
+ "import": "./dist/languages/hi.js",
74
+ "require": "./dist/languages/hi.cjs"
75
+ },
76
+ "./languages/id": {
77
+ "types": "./dist/languages/id.d.ts",
78
+ "import": "./dist/languages/id.js",
79
+ "require": "./dist/languages/id.cjs"
80
+ },
81
+ "./languages/it": {
82
+ "types": "./dist/languages/it.d.ts",
83
+ "import": "./dist/languages/it.js",
84
+ "require": "./dist/languages/it.cjs"
85
+ },
86
+ "./languages/ja": {
87
+ "types": "./dist/languages/ja.d.ts",
88
+ "import": "./dist/languages/ja.js",
89
+ "require": "./dist/languages/ja.cjs"
90
+ },
91
+ "./languages/ko": {
92
+ "types": "./dist/languages/ko.d.ts",
93
+ "import": "./dist/languages/ko.js",
94
+ "require": "./dist/languages/ko.cjs"
95
+ },
96
+ "./languages/ms": {
97
+ "types": "./dist/languages/ms.d.ts",
98
+ "import": "./dist/languages/ms.js",
99
+ "require": "./dist/languages/ms.cjs"
100
+ },
101
+ "./languages/pl": {
102
+ "types": "./dist/languages/pl.d.ts",
103
+ "import": "./dist/languages/pl.js",
104
+ "require": "./dist/languages/pl.cjs"
105
+ },
106
+ "./languages/pt": {
107
+ "types": "./dist/languages/pt.d.ts",
108
+ "import": "./dist/languages/pt.js",
109
+ "require": "./dist/languages/pt.cjs"
110
+ },
111
+ "./languages/qu": {
112
+ "types": "./dist/languages/qu.d.ts",
113
+ "import": "./dist/languages/qu.js",
114
+ "require": "./dist/languages/qu.cjs"
115
+ },
116
+ "./languages/ru": {
117
+ "types": "./dist/languages/ru.d.ts",
118
+ "import": "./dist/languages/ru.js",
119
+ "require": "./dist/languages/ru.cjs"
120
+ },
121
+ "./languages/sw": {
122
+ "types": "./dist/languages/sw.d.ts",
123
+ "import": "./dist/languages/sw.js",
124
+ "require": "./dist/languages/sw.cjs"
125
+ },
126
+ "./languages/th": {
127
+ "types": "./dist/languages/th.d.ts",
128
+ "import": "./dist/languages/th.js",
129
+ "require": "./dist/languages/th.cjs"
130
+ },
131
+ "./languages/tl": {
132
+ "types": "./dist/languages/tl.d.ts",
133
+ "import": "./dist/languages/tl.js",
134
+ "require": "./dist/languages/tl.cjs"
135
+ },
136
+ "./languages/tr": {
137
+ "types": "./dist/languages/tr.d.ts",
138
+ "import": "./dist/languages/tr.js",
139
+ "require": "./dist/languages/tr.cjs"
140
+ },
141
+ "./languages/uk": {
142
+ "types": "./dist/languages/uk.d.ts",
143
+ "import": "./dist/languages/uk.js",
144
+ "require": "./dist/languages/uk.cjs"
145
+ },
146
+ "./languages/vi": {
147
+ "types": "./dist/languages/vi.d.ts",
148
+ "import": "./dist/languages/vi.js",
149
+ "require": "./dist/languages/vi.cjs"
150
+ },
151
+ "./languages/zh": {
152
+ "types": "./dist/languages/zh.d.ts",
153
+ "import": "./dist/languages/zh.js",
154
+ "require": "./dist/languages/zh.cjs"
155
+ },
31
156
  "./schema": {
32
157
  "types": "./dist/schema/index.d.ts",
33
158
  "import": "./dist/schema/index.js"
@@ -95,15 +220,15 @@
95
220
  "author": "LokaScript Contributors",
96
221
  "license": "MIT",
97
222
  "dependencies": {
98
- "@lokascript/intent": "^7.0.0"
223
+ "@lokascript/intent": "^7.1.0"
99
224
  },
100
225
  "devDependencies": {
101
226
  "@lokascript/domains": "^5.0.0",
102
- "@types/node": "^26.6.3",
103
- "@vitest/coverage-v8": "^5.0.0",
227
+ "@types/node": "^26.6.5",
228
+ "@vitest/coverage-v8": "^5.0.5",
104
229
  "tsup": "^9.0.0",
105
230
  "typescript": "^5.0.0",
106
- "vitest": "^5.0.2"
231
+ "vitest": "^5.0.5"
107
232
  },
108
233
  "files": [
109
234
  "dist",
package/src/index.ts CHANGED
@@ -65,6 +65,8 @@ export type {
65
65
  DomainTokenizerOptions,
66
66
  LanguageConfigMeta,
67
67
  } from './multilingual';
68
+ // A language's grammar (the data lives in `@lokascript/framework/languages/<code>`)
69
+ export type { GrammarProfile } from './languages/types';
68
70
 
69
71
  // Core - export classes and utilities
70
72
  export * from './core';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Arabic Grammar
3
+ *
4
+ * VSO word order, prepositions, RTL (right-to-left), space-separated.
5
+ * Features root-based morphology and rich verb conjugation.
6
+ */
7
+
8
+ import type { GrammarProfile } from './types';
9
+
10
+ export const arabicGrammar = {
11
+ code: 'ar',
12
+ name: 'Arabic',
13
+ nativeName: 'العربية',
14
+ direction: 'rtl',
15
+ script: 'arabic',
16
+ wordOrder: 'VSO',
17
+ markingStrategy: 'preposition',
18
+ usesSpaces: true,
19
+ verb: {
20
+ position: 'start',
21
+ subjectDrop: true,
22
+ },
23
+ possessive: {
24
+ marker: '', // No explicit marker - uses possessive pronouns
25
+ markerPosition: 'after-object',
26
+ usePossessiveAdjectives: true,
27
+ },
28
+ roleMarkers: {
29
+ destination: {
30
+ primary: 'على',
31
+ alternatives: ['في', 'إلى', 'ب', 'قبل', 'بعد'],
32
+ position: 'before',
33
+ },
34
+ source: { primary: 'من', position: 'before' },
35
+ patient: { primary: '', position: 'before' },
36
+ style: { primary: 'بـ', alternatives: ['باستخدام'], position: 'before' },
37
+ },
38
+ tokenization: {
39
+ prefixes: ['ال', 'و', 'ف', 'ب', 'ك', 'ل'],
40
+ },
41
+ } satisfies GrammarProfile;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Bengali Grammar
3
+ *
4
+ * SOV word order, postpositions (কে, তে, থেকে, etc.), Bengali script.
5
+ * Agglutinative language similar to Hindi.
6
+ */
7
+
8
+ import type { GrammarProfile } from './types';
9
+
10
+ export const bengaliGrammar = {
11
+ code: 'bn',
12
+ name: 'Bengali',
13
+ nativeName: 'বাংলা',
14
+ direction: 'ltr',
15
+ script: 'bengali',
16
+ wordOrder: 'SOV',
17
+ markingStrategy: 'postposition',
18
+ usesSpaces: true,
19
+ defaultVerbForm: 'imperative',
20
+ verb: {
21
+ position: 'end',
22
+ suffixes: ['ুন', 'ো', 'া', 'ে', 'ি'],
23
+ subjectDrop: true,
24
+ },
25
+ possessive: {
26
+ marker: 'র',
27
+ markerPosition: 'between',
28
+ },
29
+ roleMarkers: {
30
+ patient: { primary: 'কে', position: 'after' },
31
+ destination: { primary: 'তে', alternatives: ['এ'], position: 'after' },
32
+ source: { primary: 'থেকে', position: 'after' },
33
+ style: { primary: 'দিয়ে', position: 'after' },
34
+ event: { primary: 'তে', position: 'after' },
35
+ },
36
+ tokenization: {
37
+ particles: ['কে', 'তে', 'থেকে', 'র', 'এর', 'দিয়ে', 'জন্য', 'পর্যন্ত'],
38
+ boundaryStrategy: 'space',
39
+ },
40
+ // Bengali writes a case ending onto its noun (`#outকে`, `#outএ`; M2 N5).
41
+ // After a Bengali word only `কে`, which never changes: the locative is `তে`
42
+ // after a vowel and the vowel sign `ে` after a consonant (`ক্লিকে`), which
43
+ // the reader does not split.
44
+ attachedMarkers: { markers: ['কে', 'তে', 'এ'], afterWords: ['কে'] },
45
+ } satisfies GrammarProfile;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * German Grammar
3
+ *
4
+ * SVO word order (V2 in main clauses), prepositions, space-separated.
5
+ * Features case system, compound words, and verb-second word order in main clauses.
6
+ */
7
+
8
+ import type { GrammarProfile } from './types';
9
+
10
+ export const germanGrammar = {
11
+ code: 'de',
12
+ name: 'German',
13
+ nativeName: 'Deutsch',
14
+ direction: 'ltr',
15
+ script: 'latin',
16
+ wordOrder: 'SVO',
17
+ markingStrategy: 'preposition',
18
+ usesSpaces: true,
19
+ // Infinitive is standard for German software UI (Speichern, Öffnen, Schließen)
20
+ // Also used in written instructions ("Bitte nicht stören")
21
+ defaultVerbForm: 'infinitive',
22
+ verb: {
23
+ position: 'start',
24
+ subjectDrop: false,
25
+ },
26
+ possessive: {
27
+ marker: '', // German uses possessive pronouns directly
28
+ markerPosition: 'before-property',
29
+ usePossessiveAdjectives: true,
30
+ },
31
+ roleMarkers: {
32
+ destination: { primary: 'auf', alternatives: ['zu', 'in'], position: 'before' },
33
+ source: { primary: 'von', alternatives: ['aus'], position: 'before' },
34
+ patient: { primary: '', position: 'before' },
35
+ style: { primary: 'mit', position: 'before' },
36
+ },
37
+ } satisfies GrammarProfile;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * English Grammar
3
+ *
4
+ * SVO word order, prepositions, space-separated.
5
+ */
6
+
7
+ import type { GrammarProfile } from './types';
8
+
9
+ export const englishGrammar = {
10
+ code: 'en',
11
+ name: 'English',
12
+ nativeName: 'English',
13
+ direction: 'ltr',
14
+ script: 'latin',
15
+ wordOrder: 'SVO',
16
+ markingStrategy: 'preposition',
17
+ usesSpaces: true,
18
+ // English infinitive and imperative are identical ("toggle", "save", "open")
19
+ defaultVerbForm: 'base',
20
+ verb: {
21
+ position: 'start',
22
+ subjectDrop: false,
23
+ },
24
+ possessive: {
25
+ marker: "'s",
26
+ markerPosition: 'after-object',
27
+ },
28
+ roleMarkers: {
29
+ destination: { primary: 'on', alternatives: ['to', 'from'], position: 'before' },
30
+ source: { primary: 'from', position: 'before' },
31
+ patient: { primary: '', position: 'before' },
32
+ style: { primary: 'with', alternatives: ['by', 'using'], position: 'before' },
33
+ responseType: { primary: 'as', position: 'before' },
34
+ method: { primary: 'via', alternatives: ['using'], position: 'before' },
35
+ },
36
+ } satisfies GrammarProfile;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Spanish Grammar
3
+ *
4
+ * SVO word order, prepositions, space-separated.
5
+ * Features rich verb conjugation with pro-drop (subject omission).
6
+ */
7
+
8
+ import type { GrammarProfile } from './types';
9
+
10
+ export const spanishGrammar = {
11
+ code: 'es',
12
+ name: 'Spanish',
13
+ nativeName: 'Español',
14
+ direction: 'ltr',
15
+ script: 'latin',
16
+ wordOrder: 'SVO',
17
+ markingStrategy: 'preposition',
18
+ usesSpaces: true,
19
+ // Infinitive is standard for Spanish software UI (Guardar, Cancelar, Abrir)
20
+ // This matches macOS, Windows, and web app conventions
21
+ defaultVerbForm: 'infinitive',
22
+ verb: {
23
+ position: 'start',
24
+ subjectDrop: true,
25
+ },
26
+ possessive: {
27
+ marker: 'de', // Spanish uses "de" for general possession
28
+ markerPosition: 'before-property',
29
+ usePossessiveAdjectives: true,
30
+ },
31
+ roleMarkers: {
32
+ // `hacia` is the i18n grammar's optional destination render form ("towards");
33
+ // without it here a rendered/user `hacia` clause silently dropped the
34
+ // destination (add → default `me`, put → null parse). Vocab Batch 1 (V2+V4).
35
+ destination: { primary: 'en', alternatives: ['sobre', 'a', 'hacia'], position: 'before' },
36
+ source: { primary: 'de', alternatives: ['desde'], position: 'before' },
37
+ patient: { primary: '', position: 'before' },
38
+ style: { primary: 'con', position: 'before' },
39
+ },
40
+ } satisfies GrammarProfile;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * French Grammar
3
+ *
4
+ * SVO word order, prepositions, space-separated.
5
+ * Features rich verb conjugation and gendered articles.
6
+ */
7
+
8
+ import type { GrammarProfile } from './types';
9
+
10
+ export const frenchGrammar = {
11
+ code: 'fr',
12
+ name: 'French',
13
+ nativeName: 'Français',
14
+ direction: 'ltr',
15
+ script: 'latin',
16
+ wordOrder: 'SVO',
17
+ markingStrategy: 'preposition',
18
+ usesSpaces: true,
19
+ // Infinitive is standard for French software UI (Enregistrer, Ouvrir, Fermer)
20
+ defaultVerbForm: 'infinitive',
21
+ verb: {
22
+ position: 'start',
23
+ subjectDrop: false,
24
+ },
25
+ possessive: {
26
+ marker: 'de', // Uses "de" for general possession
27
+ markerPosition: 'before-property',
28
+ usePossessiveAdjectives: true,
29
+ },
30
+ roleMarkers: {
31
+ destination: { primary: 'sur', alternatives: ['à', 'dans'], position: 'before' },
32
+ source: { primary: 'de', alternatives: ['depuis'], position: 'before' },
33
+ patient: { primary: '', position: 'before' },
34
+ style: { primary: 'avec', position: 'before' },
35
+ },
36
+ } satisfies GrammarProfile;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Hebrew Grammar
3
+ *
4
+ * SVO word order, prepositions, RTL (right-to-left), space-separated.
5
+ * Hebrew uses prefix prepositions (ב, ל, מ, כ) that attach to the following word.
6
+ * Features optional vowel points (nikkud) which are typically omitted in modern text.
7
+ */
8
+
9
+ import type { GrammarProfile } from './types';
10
+
11
+ export const hebrewGrammar = {
12
+ code: 'he',
13
+ name: 'Hebrew',
14
+ nativeName: 'עברית',
15
+ direction: 'rtl',
16
+ script: 'hebrew',
17
+ wordOrder: 'SVO',
18
+ markingStrategy: 'preposition',
19
+ usesSpaces: true,
20
+ verb: {
21
+ position: 'second', // SVO - verb comes after subject
22
+ subjectDrop: true,
23
+ },
24
+ possessive: {
25
+ marker: 'של', // "of" - used for general possession
26
+ markerPosition: 'before-property',
27
+ usePossessiveAdjectives: true,
28
+ },
29
+ roleMarkers: {
30
+ destination: { primary: 'על', alternatives: ['ב', 'אל', 'ל'], position: 'before' },
31
+ source: { primary: 'מ', alternatives: ['מן', 'מאת'], position: 'before' },
32
+ patient: { primary: 'את', position: 'before' }, // Direct object marker
33
+ style: { primary: 'עם', alternatives: ['ב'], position: 'before' },
34
+ },
35
+ tokenization: {
36
+ prefixes: ['ה', 'ו', 'ב', 'כ', 'ל', 'מ', 'ש'], // Common Hebrew prefixes
37
+ },
38
+ } satisfies GrammarProfile;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Hindi Grammar
3
+ *
4
+ * SOV word order, postpositions (को, में, पर, से, etc.), Devanagari script.
5
+ * Fusional language with verb conjugation patterns.
6
+ */
7
+
8
+ import type { GrammarProfile } from './types';
9
+
10
+ export const hindiGrammar = {
11
+ code: 'hi',
12
+ name: 'Hindi',
13
+ nativeName: 'हिन्दी',
14
+ direction: 'ltr',
15
+ script: 'devanagari',
16
+ wordOrder: 'SOV',
17
+ markingStrategy: 'postposition',
18
+ usesSpaces: true,
19
+ // Hindi uses imperative forms for commands in software UI
20
+ defaultVerbForm: 'imperative',
21
+ verb: {
22
+ position: 'end',
23
+ suffixes: ['ें', 'ा', 'ी', 'े', 'ो'],
24
+ subjectDrop: true,
25
+ },
26
+ possessive: {
27
+ marker: 'का',
28
+ markerPosition: 'between',
29
+ },
30
+ roleMarkers: {
31
+ patient: { primary: 'को', position: 'after' },
32
+ // `को` is the accusative/patient marker only — NOT a destination alternative.
33
+ // Listing it here made a `को`-marked patient mis-parse as a destination, the
34
+ // dominant source of phantom `into` commands in hi (precision audit 2026-06-15).
35
+ destination: { primary: 'में', alternatives: ['पर'], position: 'after' },
36
+ source: { primary: 'से', position: 'after' },
37
+ style: { primary: 'से', position: 'after' },
38
+ event: { primary: 'पर', position: 'after' },
39
+ },
40
+ tokenization: {
41
+ particles: ['को', 'में', 'पर', 'से', 'का', 'की', 'के', 'तक', 'ने'],
42
+ boundaryStrategy: 'space',
43
+ },
44
+ } satisfies GrammarProfile;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Indonesian Grammar
3
+ *
4
+ * SVO word order, prepositions, space-separated, agglutinative.
5
+ * Features affixation for verb derivation (me-, ber-, di-, -kan, -i).
6
+ */
7
+
8
+ import type { GrammarProfile } from './types';
9
+
10
+ export const indonesianGrammar = {
11
+ code: 'id',
12
+ name: 'Indonesian',
13
+ nativeName: 'Bahasa Indonesia',
14
+ direction: 'ltr',
15
+ script: 'latin',
16
+ wordOrder: 'SVO',
17
+ markingStrategy: 'preposition',
18
+ usesSpaces: true,
19
+ verb: {
20
+ position: 'start',
21
+ subjectDrop: true,
22
+ },
23
+ possessive: {
24
+ marker: '', // Indonesian: "X saya" (X of mine), possessor follows noun
25
+ markerPosition: 'after-object',
26
+ usePossessiveAdjectives: true,
27
+ },
28
+ roleMarkers: {
29
+ destination: { primary: 'pada', alternatives: ['ke', 'di'], position: 'before' },
30
+ source: { primary: 'dari', position: 'before' },
31
+ patient: { primary: '', position: 'before' },
32
+ style: { primary: 'dengan', position: 'before' },
33
+ },
34
+ } satisfies GrammarProfile;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Every language's grammar, one module each (`@lokascript/framework/languages/<code>`).
3
+ * Import the module you need: this barrel is for tooling and tests.
4
+ */
5
+
6
+ export type {
7
+ WordOrder,
8
+ MarkingStrategy,
9
+ ScriptType,
10
+ RoleMarker,
11
+ VerbConfig,
12
+ VerbForm,
13
+ TokenizationConfig,
14
+ PossessiveGrammar,
15
+ AttachedMarkers,
16
+ GrammarProfile,
17
+ } from './types';
18
+
19
+ export { arabicGrammar } from './ar';
20
+ export { bengaliGrammar } from './bn';
21
+ export { germanGrammar } from './de';
22
+ export { englishGrammar } from './en';
23
+ export { spanishGrammar } from './es';
24
+ export { frenchGrammar } from './fr';
25
+ export { hebrewGrammar } from './he';
26
+ export { hindiGrammar } from './hi';
27
+ export { indonesianGrammar } from './id';
28
+ export { italianGrammar } from './it';
29
+ export { japaneseGrammar } from './ja';
30
+ export { koreanGrammar } from './ko';
31
+ export { malayGrammar } from './ms';
32
+ export { polishGrammar } from './pl';
33
+ export { portugueseGrammar } from './pt';
34
+ export { quechuaGrammar } from './qu';
35
+ export { russianGrammar } from './ru';
36
+ export { swahiliGrammar } from './sw';
37
+ export { thaiGrammar } from './th';
38
+ export { tagalogGrammar } from './tl';
39
+ export { turkishGrammar } from './tr';
40
+ export { ukrainianGrammar } from './uk';
41
+ export { vietnameseGrammar } from './vi';
42
+ export { chineseGrammar } from './zh';
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Italian Grammar
3
+ *
4
+ * SVO word order, prepositions, space-separated.
5
+ * Features rich verb conjugation with pro-drop (subject omission).
6
+ * Very similar to Spanish but with Italian-specific vocabulary.
7
+ */
8
+
9
+ import type { GrammarProfile } from './types';
10
+
11
+ export const italianGrammar = {
12
+ code: 'it',
13
+ name: 'Italian',
14
+ nativeName: 'Italiano',
15
+ direction: 'ltr',
16
+ script: 'latin',
17
+ wordOrder: 'SVO',
18
+ markingStrategy: 'preposition',
19
+ usesSpaces: true,
20
+ // Infinitive is standard for Italian software UI (Salvare, Annullare, Aprire)
21
+ // This matches macOS, Windows, and web app conventions
22
+ defaultVerbForm: 'infinitive',
23
+ verb: {
24
+ position: 'start',
25
+ subjectDrop: true,
26
+ },
27
+ possessive: {
28
+ marker: 'di', // Italian uses "di" for general possession
29
+ markerPosition: 'before-property',
30
+ usePossessiveAdjectives: true,
31
+ },
32
+ roleMarkers: {
33
+ destination: { primary: 'in', alternatives: ['su', 'a'], position: 'before' },
34
+ source: { primary: 'da', alternatives: ['di'], position: 'before' },
35
+ patient: { primary: '', position: 'before' },
36
+ style: { primary: 'con', position: 'before' },
37
+ },
38
+ } satisfies GrammarProfile;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Japanese Grammar
3
+ *
4
+ * SOV word order, particles (を, に, で, etc.), no spaces between words.
5
+ * Agglutinative language with rich verb conjugation.
6
+ */
7
+
8
+ import type { GrammarProfile } from './types';
9
+
10
+ export const japaneseGrammar = {
11
+ code: 'ja',
12
+ name: 'Japanese',
13
+ nativeName: '日本語',
14
+ direction: 'ltr',
15
+ script: 'cjk',
16
+ wordOrder: 'SOV',
17
+ markingStrategy: 'particle',
18
+ usesSpaces: false,
19
+ // Japanese uses verb stem/masu-stem form, no clear infinitive/imperative distinction
20
+ // for UI commands. Uses katakana loanwords (トグル) or native stems (切り替え)
21
+ defaultVerbForm: 'base',
22
+ verb: {
23
+ position: 'end',
24
+ suffixes: ['る', 'て', 'た', 'ます', 'ない'],
25
+ subjectDrop: true,
26
+ },
27
+ possessive: {
28
+ marker: 'の',
29
+ markerPosition: 'between',
30
+ },
31
+ roleMarkers: {
32
+ patient: { primary: 'を', position: 'after' },
33
+ destination: { primary: 'に', alternatives: ['へ', 'で', 'の'], position: 'after' },
34
+ source: { primary: 'から', position: 'after' },
35
+ style: { primary: 'で', position: 'after' },
36
+ event: { primary: 'を', position: 'after' }, // Event as object marker
37
+ // Possession marker for "X's Y" patterns
38
+ // Note: の is used between target and patient: #button の .active
39
+ },
40
+ tokenization: {
41
+ particles: ['を', 'に', 'で', 'から', 'の', 'が', 'は', 'も', 'へ', 'と'],
42
+ boundaryStrategy: 'particle',
43
+ },
44
+ // Japanese writes a particle onto its noun (`#outに`, `自分から`; M2 N5).
45
+ attachedMarkers: {
46
+ markers: ['を', 'に', 'へ', 'で', 'の', 'から', 'として', 'の間で'],
47
+ afterWords: 'all',
48
+ },
49
+ } satisfies GrammarProfile;