@jspicl/core 4.0.0-alpha.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 (275) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +112 -0
  3. package/dist/ast/declarations/classDeclaration.d.ts +4 -0
  4. package/dist/ast/declarations/classDeclaration.d.ts.map +1 -0
  5. package/dist/ast/declarations/classDeclaration.js +8 -0
  6. package/dist/ast/declarations/classDeclaration.js.map +1 -0
  7. package/dist/ast/declarations/functionDeclaration.d.ts +3 -0
  8. package/dist/ast/declarations/functionDeclaration.d.ts.map +1 -0
  9. package/dist/ast/declarations/functionDeclaration.js +49 -0
  10. package/dist/ast/declarations/functionDeclaration.js.map +1 -0
  11. package/dist/ast/declarations/index.d.ts +5 -0
  12. package/dist/ast/declarations/index.d.ts.map +1 -0
  13. package/dist/ast/declarations/index.js +5 -0
  14. package/dist/ast/declarations/index.js.map +1 -0
  15. package/dist/ast/declarations/variableDeclaration.d.ts +4 -0
  16. package/dist/ast/declarations/variableDeclaration.d.ts.map +1 -0
  17. package/dist/ast/declarations/variableDeclaration.js +3 -0
  18. package/dist/ast/declarations/variableDeclaration.js.map +1 -0
  19. package/dist/ast/declarations/variableDeclarator.d.ts +4 -0
  20. package/dist/ast/declarations/variableDeclarator.d.ts.map +1 -0
  21. package/dist/ast/declarations/variableDeclarator.js +13 -0
  22. package/dist/ast/declarations/variableDeclarator.js.map +1 -0
  23. package/dist/ast/expressions/arrayExpression.d.ts +4 -0
  24. package/dist/ast/expressions/arrayExpression.d.ts.map +1 -0
  25. package/dist/ast/expressions/arrayExpression.js +5 -0
  26. package/dist/ast/expressions/arrayExpression.js.map +1 -0
  27. package/dist/ast/expressions/arrowFunctionExpression.d.ts +4 -0
  28. package/dist/ast/expressions/arrowFunctionExpression.d.ts.map +1 -0
  29. package/dist/ast/expressions/arrowFunctionExpression.js +29 -0
  30. package/dist/ast/expressions/arrowFunctionExpression.js.map +1 -0
  31. package/dist/ast/expressions/assignmentExpression.d.ts +4 -0
  32. package/dist/ast/expressions/assignmentExpression.d.ts.map +1 -0
  33. package/dist/ast/expressions/assignmentExpression.js +7 -0
  34. package/dist/ast/expressions/assignmentExpression.js.map +1 -0
  35. package/dist/ast/expressions/binaryExpression.d.ts +4 -0
  36. package/dist/ast/expressions/binaryExpression.d.ts.map +1 -0
  37. package/dist/ast/expressions/binaryExpression.js +20 -0
  38. package/dist/ast/expressions/binaryExpression.js.map +1 -0
  39. package/dist/ast/expressions/callExpression.d.ts +4 -0
  40. package/dist/ast/expressions/callExpression.d.ts.map +1 -0
  41. package/dist/ast/expressions/callExpression.js +14 -0
  42. package/dist/ast/expressions/callExpression.js.map +1 -0
  43. package/dist/ast/expressions/classBody.d.ts +4 -0
  44. package/dist/ast/expressions/classBody.d.ts.map +1 -0
  45. package/dist/ast/expressions/classBody.js +5 -0
  46. package/dist/ast/expressions/classBody.js.map +1 -0
  47. package/dist/ast/expressions/conditionalExpression.d.ts +4 -0
  48. package/dist/ast/expressions/conditionalExpression.d.ts.map +1 -0
  49. package/dist/ast/expressions/conditionalExpression.js +8 -0
  50. package/dist/ast/expressions/conditionalExpression.js.map +1 -0
  51. package/dist/ast/expressions/functionExpression.d.ts +4 -0
  52. package/dist/ast/expressions/functionExpression.d.ts.map +1 -0
  53. package/dist/ast/expressions/functionExpression.js +17 -0
  54. package/dist/ast/expressions/functionExpression.js.map +1 -0
  55. package/dist/ast/expressions/identifier.d.ts +4 -0
  56. package/dist/ast/expressions/identifier.d.ts.map +1 -0
  57. package/dist/ast/expressions/identifier.js +11 -0
  58. package/dist/ast/expressions/identifier.js.map +1 -0
  59. package/dist/ast/expressions/index.d.ts +21 -0
  60. package/dist/ast/expressions/index.d.ts.map +1 -0
  61. package/dist/ast/expressions/index.js +21 -0
  62. package/dist/ast/expressions/index.js.map +1 -0
  63. package/dist/ast/expressions/literal.d.ts +4 -0
  64. package/dist/ast/expressions/literal.d.ts.map +1 -0
  65. package/dist/ast/expressions/literal.js +11 -0
  66. package/dist/ast/expressions/literal.js.map +1 -0
  67. package/dist/ast/expressions/logicalExpression.d.ts +4 -0
  68. package/dist/ast/expressions/logicalExpression.d.ts.map +1 -0
  69. package/dist/ast/expressions/logicalExpression.js +9 -0
  70. package/dist/ast/expressions/logicalExpression.js.map +1 -0
  71. package/dist/ast/expressions/memberExpression.d.ts +4 -0
  72. package/dist/ast/expressions/memberExpression.d.ts.map +1 -0
  73. package/dist/ast/expressions/memberExpression.js +4 -0
  74. package/dist/ast/expressions/memberExpression.js.map +1 -0
  75. package/dist/ast/expressions/methodDefinition.d.ts +4 -0
  76. package/dist/ast/expressions/methodDefinition.d.ts.map +1 -0
  77. package/dist/ast/expressions/methodDefinition.js +3 -0
  78. package/dist/ast/expressions/methodDefinition.js.map +1 -0
  79. package/dist/ast/expressions/newExpression.d.ts +4 -0
  80. package/dist/ast/expressions/newExpression.d.ts.map +1 -0
  81. package/dist/ast/expressions/newExpression.js +7 -0
  82. package/dist/ast/expressions/newExpression.js.map +1 -0
  83. package/dist/ast/expressions/objectExpression.d.ts +4 -0
  84. package/dist/ast/expressions/objectExpression.d.ts.map +1 -0
  85. package/dist/ast/expressions/objectExpression.js +5 -0
  86. package/dist/ast/expressions/objectExpression.js.map +1 -0
  87. package/dist/ast/expressions/property.d.ts +4 -0
  88. package/dist/ast/expressions/property.d.ts.map +1 -0
  89. package/dist/ast/expressions/property.js +8 -0
  90. package/dist/ast/expressions/property.js.map +1 -0
  91. package/dist/ast/expressions/sequenceExpression.d.ts +4 -0
  92. package/dist/ast/expressions/sequenceExpression.d.ts.map +1 -0
  93. package/dist/ast/expressions/sequenceExpression.js +3 -0
  94. package/dist/ast/expressions/sequenceExpression.js.map +1 -0
  95. package/dist/ast/expressions/thisExpression.d.ts +4 -0
  96. package/dist/ast/expressions/thisExpression.d.ts.map +1 -0
  97. package/dist/ast/expressions/thisExpression.js +3 -0
  98. package/dist/ast/expressions/thisExpression.js.map +1 -0
  99. package/dist/ast/expressions/unaryExpression.d.ts +4 -0
  100. package/dist/ast/expressions/unaryExpression.d.ts.map +1 -0
  101. package/dist/ast/expressions/unaryExpression.js +10 -0
  102. package/dist/ast/expressions/unaryExpression.js.map +1 -0
  103. package/dist/ast/expressions/updateExpression.d.ts +4 -0
  104. package/dist/ast/expressions/updateExpression.d.ts.map +1 -0
  105. package/dist/ast/expressions/updateExpression.js +6 -0
  106. package/dist/ast/expressions/updateExpression.js.map +1 -0
  107. package/dist/ast/index.d.ts +4 -0
  108. package/dist/ast/index.d.ts.map +1 -0
  109. package/dist/ast/index.js +4 -0
  110. package/dist/ast/index.js.map +1 -0
  111. package/dist/ast/statements/blockStatement.d.ts +4 -0
  112. package/dist/ast/statements/blockStatement.d.ts.map +1 -0
  113. package/dist/ast/statements/blockStatement.js +4 -0
  114. package/dist/ast/statements/blockStatement.js.map +1 -0
  115. package/dist/ast/statements/breakStatement.d.ts +4 -0
  116. package/dist/ast/statements/breakStatement.d.ts.map +1 -0
  117. package/dist/ast/statements/breakStatement.js +3 -0
  118. package/dist/ast/statements/breakStatement.js.map +1 -0
  119. package/dist/ast/statements/doWhileStatement.d.ts +4 -0
  120. package/dist/ast/statements/doWhileStatement.d.ts.map +1 -0
  121. package/dist/ast/statements/doWhileStatement.js +5 -0
  122. package/dist/ast/statements/doWhileStatement.js.map +1 -0
  123. package/dist/ast/statements/emptyStatement.d.ts +4 -0
  124. package/dist/ast/statements/emptyStatement.d.ts.map +1 -0
  125. package/dist/ast/statements/emptyStatement.js +3 -0
  126. package/dist/ast/statements/emptyStatement.js.map +1 -0
  127. package/dist/ast/statements/expressionStatement.d.ts +4 -0
  128. package/dist/ast/statements/expressionStatement.d.ts.map +1 -0
  129. package/dist/ast/statements/expressionStatement.js +6 -0
  130. package/dist/ast/statements/expressionStatement.js.map +1 -0
  131. package/dist/ast/statements/forStatement.d.ts +4 -0
  132. package/dist/ast/statements/forStatement.d.ts.map +1 -0
  133. package/dist/ast/statements/forStatement.js +7 -0
  134. package/dist/ast/statements/forStatement.js.map +1 -0
  135. package/dist/ast/statements/ifStatement.d.ts +5 -0
  136. package/dist/ast/statements/ifStatement.d.ts.map +1 -0
  137. package/dist/ast/statements/ifStatement.js +18 -0
  138. package/dist/ast/statements/ifStatement.js.map +1 -0
  139. package/dist/ast/statements/index.d.ts +13 -0
  140. package/dist/ast/statements/index.d.ts.map +1 -0
  141. package/dist/ast/statements/index.js +13 -0
  142. package/dist/ast/statements/index.js.map +1 -0
  143. package/dist/ast/statements/returnStatement.d.ts +4 -0
  144. package/dist/ast/statements/returnStatement.d.ts.map +1 -0
  145. package/dist/ast/statements/returnStatement.js +6 -0
  146. package/dist/ast/statements/returnStatement.js.map +1 -0
  147. package/dist/ast/statements/switchCase.d.ts +4 -0
  148. package/dist/ast/statements/switchCase.d.ts.map +1 -0
  149. package/dist/ast/statements/switchCase.js +15 -0
  150. package/dist/ast/statements/switchCase.js.map +1 -0
  151. package/dist/ast/statements/switchStatement.d.ts +4 -0
  152. package/dist/ast/statements/switchStatement.d.ts.map +1 -0
  153. package/dist/ast/statements/switchStatement.js +13 -0
  154. package/dist/ast/statements/switchStatement.js.map +1 -0
  155. package/dist/ast/statements/throwStatement.d.ts +4 -0
  156. package/dist/ast/statements/throwStatement.d.ts.map +1 -0
  157. package/dist/ast/statements/throwStatement.js +9 -0
  158. package/dist/ast/statements/throwStatement.js.map +1 -0
  159. package/dist/ast/statements/whileStatement.d.ts +4 -0
  160. package/dist/ast/statements/whileStatement.d.ts.map +1 -0
  161. package/dist/ast/statements/whileStatement.js +5 -0
  162. package/dist/ast/statements/whileStatement.js.map +1 -0
  163. package/dist/index.d.ts +2 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +2 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/jspicl.d.ts +3 -0
  168. package/dist/jspicl.d.ts.map +1 -0
  169. package/dist/jspicl.js +24 -0
  170. package/dist/jspicl.js.map +1 -0
  171. package/dist/polyfills/constants.d.ts +3 -0
  172. package/dist/polyfills/constants.d.ts.map +1 -0
  173. package/dist/polyfills/constants.js +34 -0
  174. package/dist/polyfills/constants.js.map +1 -0
  175. package/dist/polyfills/defaultImplementations/_assign.d.ts +2 -0
  176. package/dist/polyfills/defaultImplementations/_assign.d.ts.map +1 -0
  177. package/dist/polyfills/defaultImplementations/_assign.js +14 -0
  178. package/dist/polyfills/defaultImplementations/_assign.js.map +1 -0
  179. package/dist/polyfills/defaultImplementations/_filter.d.ts +2 -0
  180. package/dist/polyfills/defaultImplementations/_filter.d.ts.map +1 -0
  181. package/dist/polyfills/defaultImplementations/_filter.js +13 -0
  182. package/dist/polyfills/defaultImplementations/_filter.js.map +1 -0
  183. package/dist/polyfills/defaultImplementations/_findindex.d.ts +2 -0
  184. package/dist/polyfills/defaultImplementations/_findindex.d.ts.map +1 -0
  185. package/dist/polyfills/defaultImplementations/_findindex.js +8 -0
  186. package/dist/polyfills/defaultImplementations/_findindex.js.map +1 -0
  187. package/dist/polyfills/defaultImplementations/_includes.d.ts +2 -0
  188. package/dist/polyfills/defaultImplementations/_includes.d.ts.map +1 -0
  189. package/dist/polyfills/defaultImplementations/_includes.js +12 -0
  190. package/dist/polyfills/defaultImplementations/_includes.js.map +1 -0
  191. package/dist/polyfills/defaultImplementations/_join.d.ts +2 -0
  192. package/dist/polyfills/defaultImplementations/_join.d.ts.map +1 -0
  193. package/dist/polyfills/defaultImplementations/_join.js +16 -0
  194. package/dist/polyfills/defaultImplementations/_join.js.map +1 -0
  195. package/dist/polyfills/defaultImplementations/_map.d.ts +2 -0
  196. package/dist/polyfills/defaultImplementations/_map.d.ts.map +1 -0
  197. package/dist/polyfills/defaultImplementations/_map.js +11 -0
  198. package/dist/polyfills/defaultImplementations/_map.js.map +1 -0
  199. package/dist/polyfills/defaultImplementations/_objmap.d.ts +2 -0
  200. package/dist/polyfills/defaultImplementations/_objmap.d.ts.map +1 -0
  201. package/dist/polyfills/defaultImplementations/_objmap.js +23 -0
  202. package/dist/polyfills/defaultImplementations/_objmap.js.map +1 -0
  203. package/dist/polyfills/defaultImplementations/_pop.d.ts +2 -0
  204. package/dist/polyfills/defaultImplementations/_pop.d.ts.map +1 -0
  205. package/dist/polyfills/defaultImplementations/_pop.js +7 -0
  206. package/dist/polyfills/defaultImplementations/_pop.js.map +1 -0
  207. package/dist/polyfills/defaultImplementations/_reduce.d.ts +2 -0
  208. package/dist/polyfills/defaultImplementations/_reduce.d.ts.map +1 -0
  209. package/dist/polyfills/defaultImplementations/_reduce.js +17 -0
  210. package/dist/polyfills/defaultImplementations/_reduce.js.map +1 -0
  211. package/dist/polyfills/defaultImplementations/_sort.d.ts +2 -0
  212. package/dist/polyfills/defaultImplementations/_sort.d.ts.map +1 -0
  213. package/dist/polyfills/defaultImplementations/_sort.js +23 -0
  214. package/dist/polyfills/defaultImplementations/_sort.js.map +1 -0
  215. package/dist/polyfills/defaultImplementations/_split.d.ts +2 -0
  216. package/dist/polyfills/defaultImplementations/_split.d.ts.map +1 -0
  217. package/dist/polyfills/defaultImplementations/_split.js +27 -0
  218. package/dist/polyfills/defaultImplementations/_split.js.map +1 -0
  219. package/dist/polyfills/defaultImplementations/_substr.d.ts +2 -0
  220. package/dist/polyfills/defaultImplementations/_substr.d.ts.map +1 -0
  221. package/dist/polyfills/defaultImplementations/_substr.js +5 -0
  222. package/dist/polyfills/defaultImplementations/_substr.js.map +1 -0
  223. package/dist/polyfills/defaultImplementations/_substring.d.ts +2 -0
  224. package/dist/polyfills/defaultImplementations/_substring.d.ts.map +1 -0
  225. package/dist/polyfills/defaultImplementations/_substring.js +5 -0
  226. package/dist/polyfills/defaultImplementations/_substring.js.map +1 -0
  227. package/dist/polyfills/defaultImplementations/_tostring.d.ts +2 -0
  228. package/dist/polyfills/defaultImplementations/_tostring.d.ts.map +1 -0
  229. package/dist/polyfills/defaultImplementations/_tostring.js +32 -0
  230. package/dist/polyfills/defaultImplementations/_tostring.js.map +1 -0
  231. package/dist/polyfills/defaultImplementations/index.d.ts +15 -0
  232. package/dist/polyfills/defaultImplementations/index.d.ts.map +1 -0
  233. package/dist/polyfills/defaultImplementations/index.js +15 -0
  234. package/dist/polyfills/defaultImplementations/index.js.map +1 -0
  235. package/dist/polyfills/getPolyfilledCallExpression.d.ts +9 -0
  236. package/dist/polyfills/getPolyfilledCallExpression.d.ts.map +1 -0
  237. package/dist/polyfills/getPolyfilledCallExpression.js +17 -0
  238. package/dist/polyfills/getPolyfilledCallExpression.js.map +1 -0
  239. package/dist/polyfills/getPolyfilledMemberExpression.d.ts +10 -0
  240. package/dist/polyfills/getPolyfilledMemberExpression.d.ts.map +1 -0
  241. package/dist/polyfills/getPolyfilledMemberExpression.js +13 -0
  242. package/dist/polyfills/getPolyfilledMemberExpression.js.map +1 -0
  243. package/dist/polyfills/getRequiredPolyfills.d.ts +2 -0
  244. package/dist/polyfills/getRequiredPolyfills.d.ts.map +1 -0
  245. package/dist/polyfills/getRequiredPolyfills.js +15 -0
  246. package/dist/polyfills/getRequiredPolyfills.js.map +1 -0
  247. package/dist/prettify.d.ts +2 -0
  248. package/dist/prettify.d.ts.map +1 -0
  249. package/dist/prettify.js +42 -0
  250. package/dist/prettify.js.map +1 -0
  251. package/dist/transpile.d.ts +3 -0
  252. package/dist/transpile.d.ts.map +1 -0
  253. package/dist/transpile.js +12 -0
  254. package/dist/transpile.js.map +1 -0
  255. package/dist/types.d.ts +22 -0
  256. package/dist/types.d.ts.map +1 -0
  257. package/dist/types.js +2 -0
  258. package/dist/types.js.map +1 -0
  259. package/dist/utils/assert.d.ts +2 -0
  260. package/dist/utils/assert.d.ts.map +1 -0
  261. package/dist/utils/assert.js +6 -0
  262. package/dist/utils/assert.js.map +1 -0
  263. package/dist/utils/declareVariable.d.ts +6 -0
  264. package/dist/utils/declareVariable.d.ts.map +1 -0
  265. package/dist/utils/declareVariable.js +33 -0
  266. package/dist/utils/declareVariable.js.map +1 -0
  267. package/dist/utils/normalizeName.d.ts +2 -0
  268. package/dist/utils/normalizeName.d.ts.map +1 -0
  269. package/dist/utils/normalizeName.js +4 -0
  270. package/dist/utils/normalizeName.js.map +1 -0
  271. package/dist/utils/wrapWithParantheses.d.ts +2 -0
  272. package/dist/utils/wrapWithParantheses.d.ts.map +1 -0
  273. package/dist/utils/wrapWithParantheses.js +4 -0
  274. package/dist/utils/wrapWithParantheses.js.map +1 -0
  275. package/package.json +72 -0
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isLiteral: (node?: ASTNode | null) => node is Literal;
3
+ export declare const Literal: AstNodeVisitor<Literal>;
4
+ //# sourceMappingURL=literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,GAAG,IAAI,KAAG,IAAI,IAAI,OAChC,CAAC;AAK3B,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,OAAO,CAM3C,CAAC"}
@@ -0,0 +1,11 @@
1
+ export const isLiteral = (node) => node?.type === "Literal";
2
+ const specialCases = {
3
+ null: "nil"
4
+ };
5
+ export const Literal = ({ value, raw }) => {
6
+ if (Number.isInteger(value)) {
7
+ return value.toString();
8
+ }
9
+ return specialCases[raw] || raw;
10
+ };
11
+ //# sourceMappingURL=literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../src/ast/expressions/literal.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAqB,EAAmB,EAAE,CAClE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;AAE3B,MAAM,YAAY,GAA2B;IAC3C,IAAI,EAAE,KAAK;CACZ,CAAC;AACF,MAAM,CAAC,MAAM,OAAO,GAA4B,CAAC,EAAC,KAAK,EAAE,GAAG,EAAC,EAAE,EAAE;IAC/D,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isLogicalExpression: (node?: ASTNode | null) => node is LogicalExpression;
3
+ export declare const LogicalExpression: AstNodeVisitor<LogicalExpression>;
4
+ //# sourceMappingURL=logicalExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logicalExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/logicalExpression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,mBAAmB,GAC9B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,iBAAuD,CAAC;AAEnE,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,CAgB/D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { wrapWithParantheses } from "../../utils/wrapWithParantheses.js";
2
+ export const isLogicalExpression = (node) => node?.type === "LogicalExpression";
3
+ export const LogicalExpression = ({ operator, left, right }, { transpile }) => {
4
+ const logicalOperator = operator === "||" ? "or" : "and";
5
+ const leftExpression = wrapWithParantheses(left.type === "LogicalExpression" && logicalOperator === "and", transpile(left));
6
+ const rightExpression = wrapWithParantheses(right.type === "LogicalExpression" && logicalOperator === "and", transpile(right));
7
+ return `${leftExpression} ${logicalOperator} ${rightExpression}`;
8
+ };
9
+ //# sourceMappingURL=logicalExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logicalExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/logicalExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AAGvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAqB,EACM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,mBAAmB,CAAC;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAsC,CAClE,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAC,EACvB,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,eAAe,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACzD,MAAM,cAAc,GAAG,mBAAmB,CACxC,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,eAAe,KAAK,KAAK,EAC9D,SAAS,CAAC,IAAI,CAAC,CAChB,CAAC;IAEF,MAAM,eAAe,GAAG,mBAAmB,CACzC,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,eAAe,KAAK,KAAK,EAC/D,SAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IAEF,OAAO,GAAG,cAAc,IAAI,eAAe,IAAI,eAAe,EAAE,CAAC;AACnE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isMemberExpression: (node?: ASTNode | null) => node is MemberExpression;
3
+ export declare const MemberExpression: AstNodeVisitor<MemberExpression>;
4
+ //# sourceMappingURL=memberExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memberExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/memberExpression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,gBAAqD,CAAC;AAEjE,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAGa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { getPolyfilledMemberExpression } from "../../polyfills/getPolyfilledMemberExpression.js";
2
+ export const isMemberExpression = (node) => node?.type === "MemberExpression";
3
+ export const MemberExpression = ({ computed, object, property }, { transpile }) => getPolyfilledMemberExpression({ transpile, computed, object, property });
4
+ //# sourceMappingURL=memberExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memberExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/memberExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,kDAAkD,CAAC;AAG/F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAqB,EACK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,kBAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAqC,CAChE,EAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAC,EAC5B,EAAC,SAAS,EAAC,EACX,EAAE,CAAC,6BAA6B,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isMethodDefinition: (node?: ASTNode | null) => node is MethodDefinition;
3
+ export declare const MethodDefinition: AstNodeVisitor<MethodDefinition>;
4
+ //# sourceMappingURL=methodDefinition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methodDefinition.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/methodDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,gBAAqD,CAAC;AAEjE,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAGhB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const isMethodDefinition = (node) => node?.type === "MethodDefinition";
2
+ export const MethodDefinition = ({ key, value }, { transpile }) => `${transpile(key)} = ${transpile(value)}`;
3
+ //# sourceMappingURL=methodDefinition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methodDefinition.js","sourceRoot":"","sources":["../../../src/ast/expressions/methodDefinition.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAqB,EACK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,kBAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAqC,CAChE,EAAC,GAAG,EAAE,KAAK,EAAC,EACZ,EAAC,SAAS,EAAC,EACX,EAAE,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isNewExpression: (node?: ASTNode | null) => node is NewExpression;
3
+ export declare const NewExpression: AstNodeVisitor<NewExpression>;
4
+ //# sourceMappingURL=newExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/newExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,eAAe,GAC1B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,aAA+C,CAAC;AAE3D,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,aAAa,CAQvD,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const isNewExpression = (node) => node?.type === "NewExpression";
2
+ export const NewExpression = ({ arguments: args, callee }, { transpile }) => {
3
+ const className = `class_${transpile(callee)}`;
4
+ const classArguments = transpile(args, { arraySeparator: "," });
5
+ return `${className}(${classArguments})`;
6
+ };
7
+ //# sourceMappingURL=newExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/newExpression.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAqB,EACE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,eAAe,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAkC,CAC1D,EAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAC,EACzB,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,SAAS,GAAG,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,EAAE,EAAC,cAAc,EAAE,GAAG,EAAC,CAAC,CAAC;IAE9D,OAAO,GAAG,SAAS,IAAI,cAAc,GAAG,CAAC;AAC3C,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isObjectExpression: (node?: ASTNode | null) => node is ObjectExpression;
3
+ export declare const ObjectExpression: AstNodeVisitor<ObjectExpression>;
4
+ //# sourceMappingURL=objectExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/objectExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,gBAAqD,CAAC;AAEjE,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAM1D,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const isObjectExpression = (node) => node?.type === "ObjectExpression";
2
+ export const ObjectExpression = ({ properties }, { transpile }) => `{
3
+ ${transpile(properties, { arraySeparator: ",\n" })}
4
+ }`;
5
+ //# sourceMappingURL=objectExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/objectExpression.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAqB,EACK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,kBAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAqC,CAChE,EAAC,UAAU,EAAC,EACZ,EAAC,SAAS,EAAC,EACX,EAAE,CACF;MACI,SAAS,CAAC,UAAU,EAAE,EAAC,cAAc,EAAE,KAAK,EAAC,CAAC;IAChD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isProperty: (node?: ASTNode | null) => node is Property;
3
+ export declare const Property: AstNodeVisitor<Property>;
4
+ //# sourceMappingURL=property.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/property.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,GAAG,IAAI,KAAG,IAAI,IAAI,QAChC,CAAC;AAE5B,eAAO,MAAM,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAQ7C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { normalizeName } from "../../utils/normalizeName.js";
2
+ export const isProperty = (node) => node?.type === "Property";
3
+ export const Property = ({ key, value }, { transpile }) => {
4
+ // const {name} = key as Identifier;
5
+ const name = transpile(key).replace(/"/g, "");
6
+ return `${normalizeName(name)} = ${transpile(value)}`;
7
+ };
8
+ //# sourceMappingURL=property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.js","sourceRoot":"","sources":["../../../src/ast/expressions/property.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAG3D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAqB,EAAoB,EAAE,CACpE,IAAI,EAAE,IAAI,KAAK,UAAU,CAAC;AAE5B,MAAM,CAAC,MAAM,QAAQ,GAA6B,CAChD,EAAC,GAAG,EAAE,KAAK,EAAC,EACZ,EAAC,SAAS,EAAC,EACX,EAAE;IACF,oCAAoC;IACpC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE9C,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isSequenceExpression: (node?: ASTNode | null) => node is SequenceExpression;
3
+ export declare const SequenceExpression: AstNodeVisitor<SequenceExpression>;
4
+ //# sourceMappingURL=sequenceExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequenceExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/sequenceExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,oBAAoB,GAC/B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,kBAAyD,CAAC;AAErE,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,kBAAkB,CAGf,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const isSequenceExpression = (node) => node?.type === "SequenceExpression";
2
+ export const SequenceExpression = ({ expressions }, { transpile }) => transpile(expressions, { arraySeparator: "\n" });
3
+ //# sourceMappingURL=sequenceExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequenceExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/sequenceExpression.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAqB,EACO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,oBAAoB,CAAC;AAErE,MAAM,CAAC,MAAM,kBAAkB,GAAuC,CACpE,EAAC,WAAW,EAAC,EACb,EAAC,SAAS,EAAC,EACX,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isThisExpression: (node?: ASTNode | null) => node is ThisExpression;
3
+ export declare const ThisExpression: AstNodeVisitor<ThisExpression>;
4
+ //# sourceMappingURL=thisExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thisExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/thisExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,cAAiD,CAAC;AAE7D,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,cAAc,CAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const isThisExpression = (node) => node?.type === "ThisExpression";
2
+ export const ThisExpression = () => "this";
3
+ //# sourceMappingURL=thisExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thisExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/thisExpression.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAqB,EACG,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,gBAAgB,CAAC;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAmC,GAAG,EAAE,CAAC,MAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isUnaryExpression: (node?: ASTNode | null) => node is UnaryExpression;
3
+ export declare const UnaryExpression: AstNodeVisitor<UnaryExpression>;
4
+ //# sourceMappingURL=unaryExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unaryExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/unaryExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,eAAmD,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,eAAe,CAY3D,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const isUnaryExpression = (node) => node?.type === "UnaryExpression";
2
+ export const UnaryExpression = ({ operator, argument }, { transpile }) => {
3
+ const value = transpile(argument);
4
+ if (operator === "~") {
5
+ throw new Error("Unary operator ~ is not supported.");
6
+ }
7
+ const luaOperator = operator === "!" ? "not " : operator;
8
+ return operator === "void" ? "nil" : `${luaOperator}${value}`;
9
+ };
10
+ //# sourceMappingURL=unaryExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unaryExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/unaryExpression.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAqB,EACI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAoC,CAC9D,EAAC,QAAQ,EAAE,QAAQ,EAAC,EACpB,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzD,OAAO,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,KAAK,EAAE,CAAC;AAChE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isUpdateExpression: (node?: ASTNode | null) => node is UpdateExpression;
3
+ export declare const UpdateExpression: AstNodeVisitor<UpdateExpression>;
4
+ //# sourceMappingURL=updateExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateExpression.d.ts","sourceRoot":"","sources":["../../../src/ast/expressions/updateExpression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,gBAAqD,CAAC;AAEjE,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAO7D,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const isUpdateExpression = (node) => node?.type === "UpdateExpression";
2
+ export const UpdateExpression = ({ argument, operator }, { transpile }) => {
3
+ const identifier = transpile(argument);
4
+ return `${identifier}${operator[0]}=1`;
5
+ };
6
+ //# sourceMappingURL=updateExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateExpression.js","sourceRoot":"","sources":["../../../src/ast/expressions/updateExpression.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAqB,EACK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,kBAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAqC,CAChE,EAAC,QAAQ,EAAE,QAAQ,EAAC,EACpB,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./declarations/index.js";
2
+ export * from "./expressions/index.js";
3
+ export * from "./statements/index.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./declarations/index.js";
2
+ export * from "./expressions/index.js";
3
+ export * from "./statements/index.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isBlockStatement: (node?: ASTNode | null) => node is BlockStatement;
3
+ export declare const BlockStatement: AstNodeVisitor<BlockStatement>;
4
+ //# sourceMappingURL=blockStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/blockStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,cAAiD,CAAC;AAE7D,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,cAAc,CAGtC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const isBlockStatement = (node) => node?.type === "BlockStatement";
2
+ export const BlockStatement = ({ body }, { transpile }) => transpile(body);
3
+ BlockStatement.scopeBoundary = true;
4
+ //# sourceMappingURL=blockStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/blockStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAqB,EACG,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,gBAAgB,CAAC;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAmC,CAC5D,EAAC,IAAI,EAAC,EACN,EAAC,SAAS,EAAC,EACX,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAErB,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isBreakStatement: (node?: ASTNode | null) => node is BreakStatement;
3
+ export declare const BreakStatement: AstNodeVisitor<BreakStatement>;
4
+ //# sourceMappingURL=breakStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breakStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/breakStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,cAAiD,CAAC;AAE7D,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,cAAc,CAGtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const isBreakStatement = (node) => node?.type === "BreakStatement";
2
+ export const BreakStatement = (_, { scope: { isInsideSwitch } }) => (isInsideSwitch ? "" : "break");
3
+ //# sourceMappingURL=breakStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breakStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/breakStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAqB,EACG,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,gBAAgB,CAAC;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAmC,CAC5D,CAAC,EACD,EAAC,KAAK,EAAE,EAAC,cAAc,EAAC,EAAC,EACzB,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isDoWhileStatement: (node?: ASTNode | null) => node is DoWhileStatement;
3
+ export declare const DoWhileStatement: AstNodeVisitor<DoWhileStatement>;
4
+ //# sourceMappingURL=doWhileStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doWhileStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/doWhileStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,gBAAqD,CAAC;AAEjE,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAM7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const isDoWhileStatement = (node) => node?.type === "DoWhileStatement";
2
+ export const DoWhileStatement = ({ body, test }, { transpile }) => `repeat
3
+ ${transpile(body)}
4
+ until not (${transpile(test)})`;
5
+ //# sourceMappingURL=doWhileStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doWhileStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/doWhileStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAqB,EACK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,kBAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAqC,CAChE,EAAC,IAAI,EAAE,IAAI,EAAC,EACZ,EAAC,SAAS,EAAC,EACX,EAAE,CACF;MACI,SAAS,CAAC,IAAI,CAAC;eACN,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isEmptyStatement: (node?: ASTNode | null) => node is EmptyStatement;
3
+ export declare const EmptyStatement: AstNodeVisitor<EmptyStatement>;
4
+ //# sourceMappingURL=emptyStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emptyStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/emptyStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,cAAiD,CAAC;AAE7D,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,cAAc,CAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const isEmptyStatement = (node) => node?.type === "EmptyStatement";
2
+ export const EmptyStatement = () => "";
3
+ //# sourceMappingURL=emptyStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emptyStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/emptyStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAqB,EACG,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,gBAAgB,CAAC;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAmC,GAAG,EAAE,CAAC,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isExpressionStatement: (node?: ASTNode | null) => node is ExpressionStatement;
3
+ export declare const ExpressionStatement: AstNodeVisitor<ExpressionStatement>;
4
+ //# sourceMappingURL=expressionStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressionStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/expressionStatement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,mBAA2D,CAAC;AAEvE,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,mBAAmB,CAS5D,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { wrapWithParantheses } from "../../utils/wrapWithParantheses.js";
2
+ export const isExpressionStatement = (node) => node?.type === "ExpressionStatement";
3
+ export const ExpressionStatement = ({ expression, directive }, { transpile }) => !directive
4
+ ? wrapWithParantheses(expression.type === "FunctionExpression", transpile(expression))
5
+ : "";
6
+ //# sourceMappingURL=expressionStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressionStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/expressionStatement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AAGvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAqB,EACQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,qBAAqB,CAAC;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAwC,CACtE,EAAC,UAAU,EAAE,SAAS,EAAC,EACvB,EAAC,SAAS,EAAC,EACX,EAAE,CACF,CAAC,SAAS;IACR,CAAC,CAAC,mBAAmB,CACjB,UAAU,CAAC,IAAI,KAAK,oBAAoB,EACxC,SAAS,CAAC,UAAU,CAAC,CACtB;IACH,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isForStatement: (node?: ASTNode | null) => node is ForStatement;
3
+ export declare const ForStatement: AstNodeVisitor<ForStatement>;
4
+ //# sourceMappingURL=forStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/forStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,cAAc,GACzB,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,YAA6C,CAAC;AAEzD,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,YAAY,CAQhD,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const isForStatement = (node) => node?.type === "ForStatement";
2
+ export const ForStatement = ({ body, init, test, update }, { transpile }) => `${transpile(init)}
3
+ while ${transpile(test)} do
4
+ ${transpile(body)}
5
+ ${transpile(update, { arraySeparator: "\n" })}
6
+ end`;
7
+ //# sourceMappingURL=forStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/forStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAqB,EACC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,YAAY,GAAiC,CACxD,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAC1B,EAAC,SAAS,EAAC,EACX,EAAE,CACF,GAAG,SAAS,CAAC,IAAI,CAAC;UACV,SAAS,CAAC,IAAI,CAAC;MACnB,SAAS,CAAC,IAAI,CAAC;MACf,SAAS,CAAC,MAAM,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,CAAC;MACzC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isIfStatement: (node?: ASTNode | null) => node is IfStatement;
3
+ declare const IfStatement: AstNodeVisitor<IfStatement>;
4
+ export { IfStatement };
5
+ //# sourceMappingURL=ifStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ifStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/ifStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,aAAa,GACxB,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,WAA2C,CAAC;AAEvD,QAAA,MAAM,WAAW,EAAE,cAAc,CAAC,WAAW,CAoB5C,CAAC;AAEF,OAAO,EAAC,WAAW,EAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const isIfStatement = (node) => node?.type === "IfStatement";
2
+ const IfStatement = ({ test, consequent, alternate }, { transpile }) => {
3
+ const testExpression = transpile(test);
4
+ const statementBody = transpile(consequent);
5
+ const alternateStatement = transpile(alternate);
6
+ const alternateIsIfStatement = alternate && alternate.type === "IfStatement";
7
+ let closingStatement = "end";
8
+ if (alternateStatement) {
9
+ closingStatement = alternateIsIfStatement
10
+ ? `else${alternateStatement}`
11
+ : `else ${alternateStatement} end`;
12
+ }
13
+ return `if ${testExpression} then
14
+ ${statementBody}
15
+ ${closingStatement}`;
16
+ };
17
+ export { IfStatement };
18
+ //# sourceMappingURL=ifStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ifStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/ifStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAqB,EACA,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC;AAEvD,MAAM,WAAW,GAAgC,CAC/C,EAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,EAC7B,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEhD,MAAM,sBAAsB,GAAG,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC;IAE7E,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,kBAAkB,EAAE,CAAC;QACvB,gBAAgB,GAAG,sBAAsB;YACvC,CAAC,CAAC,OAAO,kBAAkB,EAAE;YAC7B,CAAC,CAAC,QAAQ,kBAAkB,MAAM,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,cAAc;MACvB,aAAa;IACf,gBAAgB,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAC,WAAW,EAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from "./blockStatement.js";
2
+ export * from "./breakStatement.js";
3
+ export * from "./doWhileStatement.js";
4
+ export * from "./emptyStatement.js";
5
+ export * from "./expressionStatement.js";
6
+ export * from "./ifStatement.js";
7
+ export * from "./forStatement.js";
8
+ export * from "./returnStatement.js";
9
+ export * from "./switchCase.js";
10
+ export * from "./switchStatement.js";
11
+ export * from "./throwStatement.js";
12
+ export * from "./whileStatement.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from "./blockStatement.js";
2
+ export * from "./breakStatement.js";
3
+ export * from "./doWhileStatement.js";
4
+ export * from "./emptyStatement.js";
5
+ export * from "./expressionStatement.js";
6
+ export * from "./ifStatement.js";
7
+ export * from "./forStatement.js";
8
+ export * from "./returnStatement.js";
9
+ export * from "./switchCase.js";
10
+ export * from "./switchStatement.js";
11
+ export * from "./throwStatement.js";
12
+ export * from "./whileStatement.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ast/statements/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isReturnStatement: (node?: ASTNode | null) => node is ReturnStatement;
3
+ export declare const ReturnStatement: AstNodeVisitor<ReturnStatement>;
4
+ //# sourceMappingURL=returnStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"returnStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/returnStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,eAAmD,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,eAAe,CAO3D,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const isReturnStatement = (node) => node?.type === "ReturnStatement";
2
+ export const ReturnStatement = ({ argument }, { transpile }) => {
3
+ const value = transpile(argument);
4
+ return value ? `return ${value}` : "do return end";
5
+ };
6
+ //# sourceMappingURL=returnStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"returnStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/returnStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAqB,EACI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAoC,CAC9D,EAAC,QAAQ,EAAC,EACV,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;AACrD,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isSwitchCase: (node?: ASTNode | null) => node is SwitchCase;
3
+ export declare const SwitchCase: AstNodeVisitor<SwitchCase>;
4
+ //# sourceMappingURL=switchCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switchCase.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/switchCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,GAAG,IAAI,KAAG,IAAI,IAAI,UAChC,CAAC;AAE9B,eAAO,MAAM,UAAU,EAAE,cAAc,CAAC,UAAU,CAiBjD,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const isSwitchCase = (node) => node?.type === "SwitchCase";
2
+ export const SwitchCase = ({ test, consequent }, { transpile }) => {
3
+ if (consequent.length === 0) {
4
+ throw new Error("Switch case fallthroughs are not supported.");
5
+ }
6
+ const statements = transpile(consequent, { arraySeparator: "\n" });
7
+ if (!test) {
8
+ return `\n${statements}`; // Default case
9
+ }
10
+ const testValue = transpile(test);
11
+ return `if ${testValue} == switchCase then
12
+ ${statements}
13
+ `;
14
+ };
15
+ //# sourceMappingURL=switchCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switchCase.js","sourceRoot":"","sources":["../../../src/ast/statements/switchCase.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAqB,EAAsB,EAAE,CACxE,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC;AAE9B,MAAM,CAAC,MAAM,UAAU,GAA+B,CACpD,EAAC,IAAI,EAAE,UAAU,EAAC,EAClB,EAAC,SAAS,EAAC,EACX,EAAE;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,UAAU,EAAE,CAAC,CAAC,eAAe;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,MAAM,SAAS;MAClB,UAAU;GACb,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isSwitchStatement: (node?: ASTNode | null) => node is SwitchStatement;
3
+ export declare const SwitchStatement: AstNodeVisitor<SwitchStatement>;
4
+ //# sourceMappingURL=switchStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switchStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/switchStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,eAAmD,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,eAAe,CAgB3D,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const isSwitchStatement = (node) => node?.type === "SwitchStatement";
2
+ export const SwitchStatement = ({ discriminant, cases }, { scope, transpile }) => {
3
+ const condition = `local switchCase = ${transpile(discriminant)}`;
4
+ scope.isInsideSwitch = true;
5
+ // sort the cases so the default case ends up at the end
6
+ const sortedCases = cases.sort((switchCase) => !switchCase.test ? 1 : 0);
7
+ return `
8
+ ${condition}
9
+ ${transpile(sortedCases, { arraySeparator: "else" })}
10
+ end`;
11
+ };
12
+ SwitchStatement.scopeBoundary = true;
13
+ //# sourceMappingURL=switchStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switchStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/switchStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAqB,EACI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAoC,CAC9D,EAAC,YAAY,EAAE,KAAK,EAAC,EACrB,EAAC,KAAK,EAAE,SAAS,EAAC,EAClB,EAAE;IACF,MAAM,SAAS,GAAG,sBAAsB,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;IAElE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,wDAAwD;IACxD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,UAAsB,EAAE,EAAE,CACxD,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzB,CAAC;IAEF,OAAO;MACH,SAAS;MACT,SAAS,CAAC,WAAW,EAAE,EAAC,cAAc,EAAE,MAAM,EAAC,CAAC;QAC9C,CAAC;AACT,CAAC,CAAC;AAEF,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ASTNode, AstNodeVisitor } from "../../types.js";
2
+ export declare const isThrowStatement: (node?: ASTNode | null) => node is ThrowStatement;
3
+ export declare const ThrowStatement: AstNodeVisitor<ThrowStatement>;
4
+ //# sourceMappingURL=throwStatement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throwStatement.d.ts","sourceRoot":"","sources":["../../../src/ast/statements/throwStatement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,GAAG,IAAI,KACpB,IAAI,IAAI,cAAiD,CAAC;AAG7D,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,cAAc,CASzD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const isThrowStatement = (node) => node?.type === "ThrowStatement";
2
+ // https://esprima.readthedocs.io/en/latest/syntax-tree-format.html#throw-statement
3
+ export const ThrowStatement = ({ argument }, { transpile }) => {
4
+ const transpiledArgument = transpile(argument)
5
+ .replace(/\n/g, "\\n")
6
+ .replace(/"/g, '\\"');
7
+ return `assert(false, "${transpiledArgument}")`;
8
+ };
9
+ //# sourceMappingURL=throwStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throwStatement.js","sourceRoot":"","sources":["../../../src/ast/statements/throwStatement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAqB,EACG,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,gBAAgB,CAAC;AAE7D,mFAAmF;AACnF,MAAM,CAAC,MAAM,cAAc,GAAmC,CAC5D,EAAC,QAAQ,EAAC,EACV,EAAC,SAAS,EAAC,EACX,EAAE;IACF,MAAM,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC;SAC3C,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAExB,OAAO,kBAAkB,kBAAkB,IAAI,CAAC;AAClD,CAAC,CAAC"}