mlogjs 0.1.11 → 0.2.2

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 (225) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +68 -18
  3. package/build/bin.cjs +69 -0
  4. package/dist/bin.cjs +69 -0
  5. package/dist/index.cjs +1817 -0
  6. package/dist/index.mjs +1813 -0
  7. package/dist/types/Compiler.d.ts +18 -0
  8. package/{build → dist/types}/Scope.d.ts +8 -11
  9. package/dist/types/bin.d.ts +1 -0
  10. package/dist/types/handlers/BlockStatement.d.ts +2 -0
  11. package/dist/types/handlers/CallExpression.d.ts +3 -0
  12. package/dist/types/handlers/ForStatement.d.ts +2 -0
  13. package/{build → dist/types}/handlers/Function.d.ts +0 -0
  14. package/{build → dist/types}/handlers/Identifier.d.ts +0 -0
  15. package/dist/types/handlers/IfStatement.d.ts +2 -0
  16. package/{build → dist/types}/handlers/Literal.d.ts +0 -0
  17. package/{build → dist/types}/handlers/Object.d.ts +0 -0
  18. package/{build → dist/types}/handlers/OperationExpressions.d.ts +0 -0
  19. package/dist/types/handlers/Program.d.ts +2 -0
  20. package/dist/types/handlers/Statements.d.ts +5 -0
  21. package/dist/types/handlers/TemplateExpression.d.ts +2 -0
  22. package/dist/types/handlers/VariableDeclaration.d.ts +3 -0
  23. package/dist/types/handlers/WhileStatement.d.ts +2 -0
  24. package/{build → dist/types}/handlers/index.d.ts +0 -0
  25. package/dist/types/index.d.ts +1 -0
  26. package/dist/types/initScope.d.ts +2 -0
  27. package/{build → dist/types}/instructions/AddressResolver.d.ts +1 -1
  28. package/{build → dist/types}/instructions/ControlInstructions.d.ts +0 -0
  29. package/{build → dist/types}/instructions/EndInstruction.d.ts +0 -0
  30. package/{build → dist/types}/instructions/InstructionBase.d.ts +2 -2
  31. package/{build → dist/types}/instructions/JumpInstruction.d.ts +1 -1
  32. package/{build → dist/types}/instructions/OperationInstruction.d.ts +1 -1
  33. package/{build → dist/types}/instructions/SetCounterInstruction.d.ts +0 -0
  34. package/{build → dist/types}/instructions/SetInstruction.d.ts +0 -0
  35. package/{build → dist/types}/instructions/ZeroSpaceInstruction.d.ts +0 -0
  36. package/{build → dist/types}/instructions/index.d.ts +0 -0
  37. package/dist/types/macros/Building.d.ts +11 -0
  38. package/dist/types/macros/Function.d.ts +12 -0
  39. package/{build → dist/types}/macros/Math.d.ts +0 -0
  40. package/{build/macros/Blocks.d.ts → dist/types/macros/Memory.d.ts} +1 -1
  41. package/dist/types/macros/Namespace.d.ts +21 -0
  42. package/{build/macros/Draw.d.ts → dist/types/macros/Other.d.ts} +1 -1
  43. package/dist/types/macros/RawValue.d.ts +5 -0
  44. package/dist/types/macros/commands/Control.d.ts +5 -0
  45. package/dist/types/macros/commands/Draw.d.ts +5 -0
  46. package/dist/types/macros/commands/DrawFlush.d.ts +5 -0
  47. package/dist/types/macros/commands/GetLink.d.ts +5 -0
  48. package/dist/types/macros/commands/Lookup.d.ts +5 -0
  49. package/dist/types/macros/commands/Print.d.ts +5 -0
  50. package/dist/types/macros/commands/PrintFlush.d.ts +5 -0
  51. package/dist/types/macros/commands/Radar.d.ts +7 -0
  52. package/dist/types/macros/commands/Sensor.d.ts +5 -0
  53. package/dist/types/macros/commands/UnitBind.d.ts +5 -0
  54. package/dist/types/macros/commands/UnitControl.d.ts +5 -0
  55. package/dist/types/macros/commands/UnitLocate.d.ts +5 -0
  56. package/dist/types/macros/commands/UnitRadar.d.ts +5 -0
  57. package/dist/types/macros/commands/Wait.d.ts +5 -0
  58. package/dist/types/macros/commands/index.d.ts +14 -0
  59. package/dist/types/macros/index.d.ts +7 -0
  60. package/{build → dist/types}/operators.d.ts +3 -0
  61. package/dist/types/types.d.ts +100 -0
  62. package/{build → dist/types}/utils.d.ts +1 -0
  63. package/{build → dist/types}/values/BaseValue.d.ts +0 -0
  64. package/{build → dist/types}/values/FunctionValue.d.ts +1 -1
  65. package/{build → dist/types}/values/LiteralValue.d.ts +0 -0
  66. package/dist/types/values/ObjectValue.d.ts +19 -0
  67. package/{build → dist/types}/values/StoreValue.d.ts +0 -0
  68. package/{build → dist/types}/values/TempValue.d.ts +0 -0
  69. package/{build → dist/types}/values/VoidValue.d.ts +3 -1
  70. package/{build → dist/types}/values/index.d.ts +0 -0
  71. package/{docs → doc}/README.md +9 -17
  72. package/lib/commands.d.ts +326 -0
  73. package/lib/eslib/index.d.ts +3 -0
  74. package/lib/eslib/lib.d.ts +9 -0
  75. package/lib/eslib/lib.es2015.collection.d.ts +89 -0
  76. package/lib/eslib/lib.es2015.core.d.ts +16 -0
  77. package/lib/eslib/lib.es2015.d.ts +30 -0
  78. package/lib/eslib/lib.es2015.generator.d.ts +79 -0
  79. package/lib/eslib/lib.es2015.iterable.d.ts +70 -0
  80. package/lib/eslib/lib.es5.d.ts +295 -0
  81. package/lib/eslib/lib.es6.d.ts +18 -0
  82. package/lib/globals.d.ts +328 -0
  83. package/lib/helpers.d.ts +23 -0
  84. package/lib/index.d.ts +7 -0
  85. package/lib/kinds.d.ts +36 -0
  86. package/lib/memory.d.ts +17 -0
  87. package/lib/traits.d.ts +120 -0
  88. package/lib/util.d.ts +32 -0
  89. package/package.json +63 -37
  90. package/.gitattributes +0 -2
  91. package/build/Compiler.d.ts +0 -18
  92. package/build/Compiler.js +0 -93
  93. package/build/Compiler.js.map +0 -1
  94. package/build/Scope.js +0 -61
  95. package/build/Scope.js.map +0 -1
  96. package/build/bin.d.ts +0 -2
  97. package/build/bin.js +0 -35
  98. package/build/bin.js.map +0 -1
  99. package/build/handlers/BlockStatement.d.ts +0 -2
  100. package/build/handlers/BlockStatement.js +0 -14
  101. package/build/handlers/BlockStatement.js.map +0 -1
  102. package/build/handlers/CallExpression.d.ts +0 -3
  103. package/build/handlers/CallExpression.js +0 -20
  104. package/build/handlers/CallExpression.js.map +0 -1
  105. package/build/handlers/ForStatement.d.ts +0 -2
  106. package/build/handlers/ForStatement.js +0 -32
  107. package/build/handlers/ForStatement.js.map +0 -1
  108. package/build/handlers/Function.js +0 -33
  109. package/build/handlers/Function.js.map +0 -1
  110. package/build/handlers/Identifier.js +0 -8
  111. package/build/handlers/Identifier.js.map +0 -1
  112. package/build/handlers/IfStatement.d.ts +0 -2
  113. package/build/handlers/IfStatement.js +0 -25
  114. package/build/handlers/IfStatement.js.map +0 -1
  115. package/build/handlers/Literal.js +0 -16
  116. package/build/handlers/Literal.js.map +0 -1
  117. package/build/handlers/Object.js +0 -44
  118. package/build/handlers/Object.js.map +0 -1
  119. package/build/handlers/OperationExpressions.js +0 -32
  120. package/build/handlers/OperationExpressions.js.map +0 -1
  121. package/build/handlers/Program.d.ts +0 -2
  122. package/build/handlers/Program.js +0 -9
  123. package/build/handlers/Program.js.map +0 -1
  124. package/build/handlers/Statements.d.ts +0 -5
  125. package/build/handlers/Statements.js +0 -28
  126. package/build/handlers/Statements.js.map +0 -1
  127. package/build/handlers/TemplateExpression.d.ts +0 -2
  128. package/build/handlers/TemplateExpression.js +0 -18
  129. package/build/handlers/TemplateExpression.js.map +0 -1
  130. package/build/handlers/VariableDeclaration.d.ts +0 -3
  131. package/build/handlers/VariableDeclaration.js +0 -32
  132. package/build/handlers/VariableDeclaration.js.map +0 -1
  133. package/build/handlers/WhileStatement.d.ts +0 -2
  134. package/build/handlers/WhileStatement.js +0 -23
  135. package/build/handlers/WhileStatement.js.map +0 -1
  136. package/build/handlers/index.js +0 -27
  137. package/build/handlers/index.js.map +0 -1
  138. package/build/index.d.ts +0 -1
  139. package/build/index.js +0 -8
  140. package/build/index.js.map +0 -1
  141. package/build/instructions/AddressResolver.js +0 -32
  142. package/build/instructions/AddressResolver.js.map +0 -1
  143. package/build/instructions/ControlInstructions.js +0 -23
  144. package/build/instructions/ControlInstructions.js.map +0 -1
  145. package/build/instructions/EndInstruction.js +0 -11
  146. package/build/instructions/EndInstruction.js.map +0 -1
  147. package/build/instructions/InstructionBase.js +0 -21
  148. package/build/instructions/InstructionBase.js.map +0 -1
  149. package/build/instructions/JumpInstruction.js +0 -22
  150. package/build/instructions/JumpInstruction.js.map +0 -1
  151. package/build/instructions/OperationInstruction.js +0 -11
  152. package/build/instructions/OperationInstruction.js.map +0 -1
  153. package/build/instructions/SetCounterInstruction.js +0 -11
  154. package/build/instructions/SetCounterInstruction.js.map +0 -1
  155. package/build/instructions/SetInstruction.js +0 -11
  156. package/build/instructions/SetInstruction.js.map +0 -1
  157. package/build/instructions/ZeroSpaceInstruction.js +0 -11
  158. package/build/instructions/ZeroSpaceInstruction.js.map +0 -1
  159. package/build/instructions/index.js +0 -22
  160. package/build/instructions/index.js.map +0 -1
  161. package/build/macros/Blocks.js +0 -137
  162. package/build/macros/Blocks.js.map +0 -1
  163. package/build/macros/Draw.js +0 -34
  164. package/build/macros/Draw.js.map +0 -1
  165. package/build/macros/Function.d.ts +0 -12
  166. package/build/macros/Function.js +0 -20
  167. package/build/macros/Function.js.map +0 -1
  168. package/build/macros/Math.js +0 -57
  169. package/build/macros/Math.js.map +0 -1
  170. package/build/macros/Other.d.ts +0 -8
  171. package/build/macros/Other.js +0 -29
  172. package/build/macros/Other.js.map +0 -1
  173. package/build/macros/TypeFactory.d.ts +0 -8
  174. package/build/macros/TypeFactory.js +0 -22
  175. package/build/macros/TypeFactory.js.map +0 -1
  176. package/build/macros/index.d.ts +0 -5
  177. package/build/macros/index.js +0 -18
  178. package/build/macros/index.js.map +0 -1
  179. package/build/operators.js +0 -39
  180. package/build/operators.js.map +0 -1
  181. package/build/scopes/FunctionScope.d.ts +0 -5
  182. package/build/scopes/FunctionScope.js +0 -13
  183. package/build/scopes/FunctionScope.js.map +0 -1
  184. package/build/scopes/LoopScope.d.ts +0 -5
  185. package/build/scopes/LoopScope.js +0 -13
  186. package/build/scopes/LoopScope.js.map +0 -1
  187. package/build/scopes/Scope.d.ts +0 -36
  188. package/build/scopes/Scope.js +0 -93
  189. package/build/scopes/Scope.js.map +0 -1
  190. package/build/scopes/index.d.ts +0 -3
  191. package/build/scopes/index.js +0 -16
  192. package/build/scopes/index.js.map +0 -1
  193. package/build/types.d.ts +0 -49
  194. package/build/types.js +0 -24
  195. package/build/types.js.map +0 -1
  196. package/build/utils.js +0 -9
  197. package/build/utils.js.map +0 -1
  198. package/build/values/BaseValue.js +0 -102
  199. package/build/values/BaseValue.js.map +0 -1
  200. package/build/values/FunctionValue.js +0 -101
  201. package/build/values/FunctionValue.js.map +0 -1
  202. package/build/values/LiteralValue.js +0 -89
  203. package/build/values/LiteralValue.js.map +0 -1
  204. package/build/values/ObjectValue.d.ts +0 -17
  205. package/build/values/ObjectValue.js +0 -50
  206. package/build/values/ObjectValue.js.map +0 -1
  207. package/build/values/StoreValue.js +0 -31
  208. package/build/values/StoreValue.js.map +0 -1
  209. package/build/values/TempValue.js +0 -53
  210. package/build/values/TempValue.js.map +0 -1
  211. package/build/values/VoidValue.js +0 -31
  212. package/build/values/VoidValue.js.map +0 -1
  213. package/build/values/index.js +0 -19
  214. package/build/values/index.js.map +0 -1
  215. package/dist/bundle.js +0 -553
  216. package/docs/.nojekyll +0 -0
  217. package/docs/_coverpage.md +0 -8
  218. package/docs/_sidebar.md +0 -3
  219. package/docs/data-types.md +0 -56
  220. package/docs/getting-started.md +0 -19
  221. package/docs/index.html +0 -41
  222. package/docs/mlogjs.png +0 -0
  223. package/mlogjs.d.ts +0 -72
  224. package/tsconfig.json +0 -22
  225. package/webpack.config.js +0 -22
@@ -0,0 +1,17 @@
1
+ /// <reference path="./kinds.d.ts" />
2
+
3
+ type MemoryCapacity = 64 | 512;
4
+ /**
5
+ * A wrapper around memory cells/banks that is compatible with custom types.
6
+ */
7
+ declare class Memory<S extends MemoryCapacity = 64> {
8
+ constructor(cell: BasicBuilding, size?: S);
9
+
10
+ [Symbol.iterator](): IterableIterator<number>;
11
+ [index: number]: number;
12
+
13
+ /**
14
+ * The practical length of the memory view.
15
+ */
16
+ readonly length: S;
17
+ }
@@ -0,0 +1,120 @@
1
+ import "./globals";
2
+
3
+ type LogicSymbols = typeof Items & typeof Liquids & typeof LAccess;
4
+
5
+ type WithSymbols<T extends Record<string, unknown>> = T & {
6
+ readonly [K in keyof (LogicSymbols | T) as LogicSymbols[K]]: T[K];
7
+ };
8
+
9
+ declare global {
10
+ type LiquidHolder = WithSymbols<
11
+ {
12
+ readonly [L in keyof typeof Liquids]: number;
13
+ } & {
14
+ readonly totalLiquids: number;
15
+ readonly liquidCapacity: number;
16
+ }
17
+ >;
18
+
19
+ type ItemHolder = WithSymbols<
20
+ {
21
+ readonly [I in keyof typeof Items]: number;
22
+ } & {
23
+ readonly totalItems: number;
24
+ readonly firstItem: ItemSymbol | null;
25
+ readonly itemCapacity: number;
26
+ }
27
+ >;
28
+
29
+ type PowerHolder = WithSymbols<{
30
+ readonly totalPower: number;
31
+ readonly powerCapacity: number;
32
+ readonly powerNetStored: number;
33
+ readonly powerNetCapacity: number;
34
+ readonly powerNetIn: number;
35
+ readonly powerNetOut: number;
36
+ }>;
37
+
38
+ type Shooting = WithSymbols<{
39
+ readonly shootX: number;
40
+ readonly shootY: number;
41
+ readonly ammo: number;
42
+ readonly ammoCapacity: number;
43
+ }>;
44
+
45
+ type WithHealth = WithSymbols<{
46
+ readonly health: number;
47
+ readonly maxHealth: number;
48
+ readonly dead: boolean;
49
+ }>;
50
+
51
+ type Heatable = WithSymbols<{
52
+ readonly heat: number;
53
+ }>;
54
+
55
+ type WithEffiency = WithSymbols<{
56
+ readonly efficiency: number;
57
+ }>;
58
+
59
+ type WithProgress = WithSymbols<{
60
+ readonly progress: number;
61
+ }>;
62
+
63
+ type WithTimescale = WithSymbols<{
64
+ readonly timescale: number;
65
+ }>;
66
+
67
+ type Rotatable = WithSymbols<{
68
+ readonly rotation: number;
69
+ }>;
70
+
71
+ type Spaced = WithSymbols<{
72
+ readonly x: number;
73
+ readonly y: number;
74
+ readonly size: number;
75
+ }>;
76
+
77
+ type Ranged = WithSymbols<{
78
+ readonly range: number;
79
+ }>;
80
+
81
+ type Boosted = WithSymbols<{
82
+ readonly boosting: number;
83
+ }>;
84
+
85
+ type Mining = WithSymbols<{
86
+ readonly mineX: number;
87
+ readonly mineY: number;
88
+ readonly mining: number;
89
+ }>;
90
+
91
+ type Typed<T extends symbol = symbol> = WithSymbols<{
92
+ readonly type: T;
93
+ }>;
94
+ type Flagged = WithSymbols<{
95
+ readonly flag: number;
96
+ }>;
97
+
98
+ type Controllable = WithSymbols<{
99
+ readonly controlled: 0 | ControlKind;
100
+ readonly controller: AnyUnit | BasicBuilding;
101
+ }>;
102
+
103
+ type Nameable = WithSymbols<{
104
+ readonly name: string | null;
105
+ }>;
106
+
107
+ type PayloadHolder = WithSymbols<{
108
+ readonly payloadCount: number;
109
+ readonly payloadType: symbol | null;
110
+ }>;
111
+
112
+ type WithEnable = WithSymbols<{
113
+ enabled: boolean;
114
+ }>;
115
+
116
+ type WithConfig<T extends symbol | number | null = symbol | null> =
117
+ WithSymbols<{
118
+ readonly config: T;
119
+ }>;
120
+ }
package/lib/util.d.ts ADDED
@@ -0,0 +1,32 @@
1
+ export type TRadarFilter =
2
+ | "any"
3
+ | "enemy"
4
+ | "ally"
5
+ | "player"
6
+ | "attacker"
7
+ | "flying"
8
+ | "boss"
9
+ | "ground";
10
+
11
+ export type TRadarFilterArray =
12
+ | [TRadarFilter]
13
+ | [TRadarFilter, TRadarFilter]
14
+ | [TRadarFilter, TRadarFilter, TRadarFilter];
15
+
16
+ export type TRadarSort =
17
+ | "distance"
18
+ | "health"
19
+ | "shield"
20
+ | "armor"
21
+ | "maxHealth";
22
+
23
+ export type TUnitLocateBuildingGroup =
24
+ | "core"
25
+ | "storage"
26
+ | "generator"
27
+ | "turret"
28
+ | "factory"
29
+ | "repair"
30
+ | "rally"
31
+ | "battery"
32
+ | "reactor";
package/package.json CHANGED
@@ -1,37 +1,63 @@
1
- {
2
- "name": "mlogjs",
3
- "version": "0.1.11",
4
- "description": "Compiler that compiles Javascript to Mindustry Logic Code.",
5
- "main": "build/index.js",
6
- "bin": {
7
- "mlogjs": "./build/bin.js"
8
- },
9
- "scripts": {
10
- "build": "tsc && webpack",
11
- "start": "npm run build && npm i -g . && mlogjs"
12
- },
13
- "repository": {
14
- "type": "git",
15
- "url": "git+https://github.com/weisrc/mlogjs.git"
16
- },
17
- "keywords": [],
18
- "author": "str1z",
19
- "license": "MIT",
20
- "bugs": {
21
- "url": "https://github.com/weisrc/mlogjs/issues"
22
- },
23
- "homepage": "https://github.com/weisrc/mlogjs#readme",
24
- "dependencies": {
25
- "esprima": "^4.0.1",
26
- "yargs": "^17.0.1"
27
- },
28
- "devDependencies": {
29
- "@types/esprima": "^4.0.2",
30
- "@types/node": "^15.3.0",
31
- "@types/yargs": "^16.0.1",
32
- "ts-loader": "^9.1.2",
33
- "typescript": "^4.2.4",
34
- "webpack": "^5.37.0",
35
- "webpack-cli": "^4.7.0"
36
- }
37
- }
1
+ {
2
+ "name": "mlogjs",
3
+ "version": "0.2.2",
4
+ "description": "Compiler that compiles Javascript to Mindustry Logic Code.",
5
+ "main": "./dist/index.cjs",
6
+ "module": "./dist/index.mjs",
7
+ "bin": "./dist/index.cjs",
8
+ "types": "./dist/types",
9
+ "scripts": {
10
+ "clean": "rm -rf ../docs dist build",
11
+ "build": "rollup -c",
12
+ "dev": "ts-node src/bin",
13
+ "test": "jest",
14
+ "coverage": "jest --coverage",
15
+ "docs:doc": "mkdir -p ../docs && cp -r doc/. ../docs",
16
+ "docs:lib": "typedoc --out ../docs/lib lib/*",
17
+ "docs:src": "typedoc --out ../docs/src src/index.ts",
18
+ "docs": "run-p docs:lib docs:src docs:doc",
19
+ "start": "npm run build && npm i -g . && mlogjs",
20
+ "prepublishOnly": "npm run build"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/weisrc/mlogjs.git"
25
+ },
26
+ "packageManager": "yarn@3.2.0",
27
+ "keywords": [],
28
+ "author": "str1z",
29
+ "license": "MIT",
30
+ "bugs": {
31
+ "url": "https://github.com/weisrc/mlogjs/issues"
32
+ },
33
+ "homepage": "https://github.com/weisrc/mlogjs#readme",
34
+ "dependencies": {
35
+ "acorn": "^8.7.0",
36
+ "cli-highlight": "^2.1.11",
37
+ "yargs": "^17.0.1"
38
+ },
39
+ "devDependencies": {
40
+ "@rollup/plugin-alias": "^3.1.9",
41
+ "@rollup/plugin-replace": "^4.0.0",
42
+ "@rollup/plugin-typescript": "^8.3.1",
43
+ "@types/estree": "^0.0.51",
44
+ "@types/jest": "^27.4.1",
45
+ "@types/node": "^15.3.0",
46
+ "@types/yargs": "^16.0.1",
47
+ "jest": "^27.5.1",
48
+ "npm-run-all": "^4.1.5",
49
+ "rollup": "^2.70.1",
50
+ "ts-jest": "^27.1.3",
51
+ "ts-node": "^10.6.0",
52
+ "tslib": "^2.3.1",
53
+ "typedoc": "^0.22.12",
54
+ "typescript": "*"
55
+ },
56
+ "files": [
57
+ "build",
58
+ "dist",
59
+ "lib",
60
+ "LICENSE",
61
+ "README.md"
62
+ ]
63
+ }
package/.gitattributes DELETED
@@ -1,2 +0,0 @@
1
- # Auto detect text files and perform LF normalization
2
- * text=auto
@@ -1,18 +0,0 @@
1
- import { es, IScope, THandler, TValueInstructions } from "./types";
2
- declare type THandlerMap = {
3
- [k in es.Node["type"]]?: THandler;
4
- };
5
- export declare class Compiler {
6
- protected stackName?: string;
7
- protected usingStack: boolean;
8
- protected handlers: THandlerMap;
9
- constructor(stackName?: string);
10
- compile(script: string): string;
11
- protected resolve(valueInst: TValueInstructions): void;
12
- protected serialize(resLines: TValueInstructions): string;
13
- protected parse(script: string): import("esprima").Program;
14
- handle(scope: IScope, node: es.Node): TValueInstructions;
15
- handleEval(scope: IScope, node: es.Node): TValueInstructions;
16
- handleMany(scope: IScope, nodes: es.Node[], handler?: typeof Compiler.prototype.handle): TValueInstructions;
17
- }
18
- export {};
package/build/Compiler.js DELETED
@@ -1,93 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.Compiler = void 0;
23
- const handlers = __importStar(require("./handlers"));
24
- const esprima_1 = require("esprima");
25
- const instructions_1 = require("./instructions");
26
- const Scope_1 = require("./Scope");
27
- const macros_1 = require("./macros");
28
- const Draw_1 = require("./macros/Draw");
29
- const utils_1 = require("./utils");
30
- class Compiler {
31
- constructor(stackName) {
32
- this.handlers = handlers;
33
- this.usingStack = !!stackName;
34
- this.stackName = stackName;
35
- }
36
- compile(script) {
37
- const program = this.parse(script);
38
- const scope = new Scope_1.Scope({});
39
- scope.hardSet("Block", new macros_1.BlockBuilder(scope));
40
- scope.hardSet("Entity", new macros_1.BlockBuilder(scope));
41
- scope.hardSet("Math", new macros_1.MlogMath(scope));
42
- scope.hardSet("draw", new Draw_1.Draw(scope));
43
- scope.hardSet("print", new macros_1.Print(scope));
44
- scope.hardSet("concat", new macros_1.Concat(scope));
45
- scope.hardSet("Store", new macros_1.StoreFactory(scope));
46
- scope.hardSet("Temp", new macros_1.TempFactory(scope));
47
- const valueInst = this.handle(scope, program);
48
- valueInst[1].push(new instructions_1.EndInstruction(), ...scope.inst);
49
- this.resolve(valueInst);
50
- return this.serialize(valueInst) + "\n";
51
- }
52
- resolve(valueInst) {
53
- let i = 0;
54
- for (const inst of valueInst[1]) {
55
- inst.resolve(i);
56
- if (!inst.hidden)
57
- i++;
58
- }
59
- }
60
- serialize(resLines) {
61
- const [_, inst] = resLines;
62
- return inst.filter((l) => !l.hidden).join("\n");
63
- }
64
- parse(script) {
65
- return esprima_1.parseScript(script, { loc: true });
66
- }
67
- handle(scope, node) {
68
- try {
69
- const handler = this.handlers[node.type];
70
- if (!handler)
71
- throw Error("Missing handler for " + node.type);
72
- return handler(this, scope, node, null);
73
- }
74
- catch (error) {
75
- throw new Error(`${node.type} ${utils_1.nodeName(node)} > ${error.message}`);
76
- }
77
- }
78
- handleEval(scope, node) {
79
- const [res, inst] = this.handle(scope, node);
80
- const [evaluated, evaluatedLines] = res.eval(scope);
81
- return [evaluated, [...inst, ...evaluatedLines]];
82
- }
83
- handleMany(scope, nodes, handler = this.handle.bind(this)) {
84
- const lines = [];
85
- for (const node of nodes) {
86
- const [_, nodeLines] = handler(scope, node);
87
- lines.push(...nodeLines);
88
- }
89
- return [null, lines];
90
- }
91
- }
92
- exports.Compiler = Compiler;
93
- //# sourceMappingURL=Compiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Compiler.js","sourceRoot":"","sources":["../src/Compiler.ts"],"names":[],"mappings":"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"}
package/build/Scope.js DELETED
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Scope = void 0;
4
- const values_1 = require("./values");
5
- class Scope {
6
- constructor(values, parent = null, stacked = false, ntemp = 0, name = "", inst = []) {
7
- this.stacked = false;
8
- this.ntemp = 0;
9
- this.data = values;
10
- this.parent = parent;
11
- this.stacked = stacked;
12
- this.ntemp = ntemp;
13
- this.name = name;
14
- this.inst = inst;
15
- }
16
- copy() {
17
- const scope = new Scope(Object.assign({}, this.data), this.parent, this.stacked, this.ntemp, this.name, this.inst);
18
- scope.break = this.break;
19
- scope.continue = this.continue;
20
- scope.function = this.function;
21
- return scope;
22
- }
23
- createScope() {
24
- const scope = this.copy();
25
- scope.data = {};
26
- scope.parent = this;
27
- return scope;
28
- }
29
- createFunction(name, stacked) {
30
- return new Scope({}, this, stacked !== null && stacked !== void 0 ? stacked : this.stacked, 0, name, this.inst);
31
- }
32
- has(name) {
33
- if (name in this.data)
34
- return true;
35
- if (this.parent)
36
- return this.parent.has(name);
37
- return false;
38
- }
39
- get(name) {
40
- const value = this.data[name];
41
- if (value)
42
- return value;
43
- if (this.parent)
44
- return this.parent.get(name);
45
- throw Error(`${name} is not declared.`);
46
- }
47
- set(name, value) {
48
- if (name in this.data)
49
- throw Error(`${name} is already declared.`);
50
- return this.hardSet(name, value);
51
- }
52
- hardSet(name, value) {
53
- this.data[name] = value;
54
- return value;
55
- }
56
- make(name, storeName) {
57
- return this.set(name, this.stacked ? null : new values_1.StoreValue(this, storeName));
58
- }
59
- }
60
- exports.Scope = Scope;
61
- //# sourceMappingURL=Scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Scope.js","sourceRoot":"","sources":["../src/Scope.ts"],"names":[],"mappings":"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"}
package/build/bin.d.ts DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
package/build/bin.js DELETED
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const fs_1 = require("fs");
8
- const _1 = require(".");
9
- const yargs_1 = __importDefault(require("yargs"));
10
- const helpers_1 = require("yargs/helpers");
11
- yargs_1.default(helpers_1.hideBin(process.argv)).command("$0 [path] [out]", "compiles your Javascript file to MLog", (yargs) => {
12
- return yargs.positional("path", {
13
- describe: "path of the file to compile",
14
- }).positional("out", {
15
- describe: "path of the output file"
16
- });
17
- }, (argv) => {
18
- const path = argv.path;
19
- const out = argv.out;
20
- if (!path)
21
- return console.log("missing required path argument");
22
- if (!out)
23
- return console.log("missing output path");
24
- if (!fs_1.existsSync(path))
25
- return console.log(`file at ${path} does not exist`);
26
- try {
27
- const compiled = _1.compile(fs_1.readFileSync(path, { encoding: "utf-8" }));
28
- fs_1.writeFileSync(out, compiled);
29
- console.log(`Success: Compiled ${path}. Your compiled code is at ${out}.`);
30
- }
31
- catch (e) {
32
- console.log("Error: " + e.message);
33
- }
34
- }).help().scriptName("mlogjs").demandCommand().parse();
35
- //# sourceMappingURL=bin.js.map
package/build/bin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;;;;AACA,2BAA4D;AAC5D,wBAA2B;AAC3B,kDAAyB;AACzB,2CAAqC;AAErC,eAAK,CAAC,iBAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,uCAAuC,EAAE,CAAC,KAAK,EAAE,EAAE;IACvG,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;QAC5B,QAAQ,EAAE,6BAA6B;KAC1C,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE;QACjB,QAAQ,EAAE,yBAAyB;KACtC,CAAC,CAAA;AACN,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE;IACR,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAA;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAA;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;IAC/D,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IACnD,IAAI,CAAC,eAAU,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,iBAAiB,CAAC,CAAA;IAC3E,IAAI;QACA,MAAM,QAAQ,GAAG,UAAO,CAAC,iBAAY,CAAC,IAAc,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC,CAAA;QAC3E,kBAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,8BAA8B,GAAG,GAAG,CAAC,CAAA;KAC7E;IAAC,OAAM,CAAC,EAAE;QACP,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;KACrC;AACL,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAA"}
@@ -1,2 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const BlockStatement: THandler;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BlockStatement = void 0;
4
- const BlockStatement = (c, scope, node) => {
5
- const [value, insts] = c.handleMany(scope.createScope(), node.body);
6
- // const cleanInst = []
7
- // for (const inst of insts) {
8
- // if (inst instanceof BreakInstruction || inst instanceof ContinueInstruction || inst instanceof ReturnInstruction || inst instanceof SetCounterInstruction) break
9
- // cleanInst.push(inst)
10
- // }
11
- return [value, insts];
12
- };
13
- exports.BlockStatement = BlockStatement;
14
- //# sourceMappingURL=BlockStatement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockStatement.js","sourceRoot":"","sources":["../../src/handlers/BlockStatement.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAuB,EAAE,EAAE;IAC7E,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,uBAAuB;IACvB,8BAA8B;IAC9B,uKAAuK;IACvK,2BAA2B;IAC3B,IAAI;IACJ,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC,CAAC;AARW,QAAA,cAAc,kBAQzB"}
@@ -1,3 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const CallExpression: THandler;
3
- export declare const NewExpression: THandler;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NewExpression = exports.CallExpression = void 0;
4
- const CallExpression = (c, scope, node) => {
5
- const inst = [];
6
- const args = node.arguments.map(node => {
7
- // TODO: this might be why t0 did not increment
8
- const [v, i] = c.handleEval(scope, node);
9
- inst.push(...i);
10
- return v;
11
- });
12
- const [callee, calleeInst] = c.handleEval(scope, node.callee);
13
- inst.push(...calleeInst);
14
- const [callValue, callInst] = callee.call(scope, args);
15
- inst.push(...callInst);
16
- return [callValue, inst];
17
- };
18
- exports.CallExpression = CallExpression;
19
- exports.NewExpression = exports.CallExpression;
20
- //# sourceMappingURL=CallExpression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CallExpression.js","sourceRoot":"","sources":["../../src/handlers/CallExpression.ts"],"names":[],"mappings":";;;AAGO,MAAM,cAAc,GAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAuB,EAAE,EAAE;IAC3E,MAAM,IAAI,GAAoB,EAAE,CAAA;IAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACnC,+CAA+C;QAC/C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACf,OAAO,CAAC,CAAA;IACZ,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC7D,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;IAExB,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACtD,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;IAEtB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAA;AAjBY,QAAA,cAAc,kBAiB1B;AAEY,QAAA,aAAa,GAAG,sBAAc,CAAA"}
@@ -1,2 +0,0 @@
1
- import { THandler } from "../types";
2
- export declare const ForStatement: THandler;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ForStatement = void 0;
4
- const instructions_1 = require("../instructions");
5
- const values_1 = require("../values");
6
- const ForStatement = (c, scope, node) => {
7
- scope = scope.createScope();
8
- const initInst = node.init ? c.handle(scope, node.init)[1] : [];
9
- const [test, testLines] = node.test
10
- ? c.handleEval(scope, node.test)
11
- : [new values_1.LiteralValue(scope, 1), []];
12
- const updateLines = node.update ? c.handle(scope, node.update)[1] : [];
13
- const startLoopAddr = new values_1.LiteralValue(scope, null);
14
- const endLoopAddr = new values_1.LiteralValue(scope, null);
15
- const startLoopLine = new instructions_1.AddressResolver(startLoopAddr).bindContinue(scope);
16
- const endLoopLine = new instructions_1.AddressResolver(endLoopAddr).bindBreak(scope);
17
- return [
18
- null,
19
- [
20
- ...initInst,
21
- startLoopLine,
22
- ...testLines,
23
- new instructions_1.JumpInstruction(endLoopAddr, instructions_1.EJumpKind.Equal, test, new values_1.LiteralValue(scope, 0)),
24
- ...c.handle(scope, node.body)[1],
25
- ...updateLines,
26
- new instructions_1.JumpInstruction(startLoopAddr, instructions_1.EJumpKind.Always),
27
- endLoopLine,
28
- ],
29
- ];
30
- };
31
- exports.ForStatement = ForStatement;
32
- //# sourceMappingURL=ForStatement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ForStatement.js","sourceRoot":"","sources":["../../src/handlers/ForStatement.ts"],"names":[],"mappings":";;;AAAA,kDAA6E;AAE7E,sCAAyC;AAGlC,MAAM,YAAY,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAqB,EAAE,EAAE;IACzE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI;QAClC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC,IAAI,qBAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,aAAa,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,qBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG,IAAI,8BAAe,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC5E,MAAM,WAAW,GAAG,IAAI,8BAAe,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAExE,OAAO;QACN,IAAI;QACJ;YACC,GAAG,QAAQ;YACX,aAAa;YACb,GAAG,SAAS;YACZ,IAAI,8BAAe,CAAC,WAAW,EAAE,wBAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,qBAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnF,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,GAAG,WAAW;YACd,IAAI,8BAAe,CAAC,aAAa,EAAE,wBAAS,CAAC,MAAM,CAAC;YACpD,WAAW;SACX;KACD,CAAC;AACH,CAAC,CAAC;AA3BW,QAAA,YAAY,gBA2BvB"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FunctionExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = void 0;
4
- const utils_1 = require("../utils");
5
- const FunctionValue_1 = require("../values/FunctionValue");
6
- const ArrowFunctionExpression = (c, scope, node) => {
7
- const name = utils_1.nodeName(node);
8
- scope = scope.createFunction(name);
9
- let { params, body } = node;
10
- if (node.expression) {
11
- body = {
12
- type: "BlockStatement",
13
- body: [{ type: "ReturnStatement", argument: body }],
14
- };
15
- }
16
- const paramNames = [];
17
- const paramStores = [];
18
- for (const id of params) {
19
- paramNames.push(id.name);
20
- paramStores.push(scope.make(id.name, utils_1.nodeName(id)));
21
- }
22
- return [
23
- new FunctionValue_1.FunctionValue(scope, name, paramNames, paramStores, body, c),
24
- [],
25
- ];
26
- };
27
- exports.ArrowFunctionExpression = ArrowFunctionExpression;
28
- const FunctionDeclaration = (c, scope, node) => {
29
- return [scope.set(node.id.name, exports.ArrowFunctionExpression(c, scope, node, null)[0]), []];
30
- };
31
- exports.FunctionDeclaration = FunctionDeclaration;
32
- exports.FunctionExpression = exports.ArrowFunctionExpression;
33
- //# sourceMappingURL=Function.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Function.js","sourceRoot":"","sources":["../../src/handlers/Function.ts"],"names":[],"mappings":";;;AAEA,oCAAoC;AAEpC,2DAAwD;AAEjD,MAAM,uBAAuB,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAgC,EAAE,EAAE;IAC/F,MAAM,IAAI,GAAG,gBAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAE5B,IAAI,IAAI,CAAC,UAAU,EAAE;QACpB,IAAI,GAAG;YACN,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAqB,EAAE,CAAC;SACpE,CAAC;KACF;IAED,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,WAAW,GAAG,EAAE,CAAA;IAEtB,KAAK,MAAM,EAAE,IAAI,MAAyB,EAAE;QAC3C,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACxB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;KACnD;IAED,OAAO;QACN,IAAI,6BAAa,CAChB,KAAK,EACL,IAAI,EACJ,UAAU,EACV,WAAW,EACX,IAAyB,EACzB,CAAC,CACD;QACD,EAAE;KACF,CAAC;AACH,CAAC,CAAC;AA/BW,QAAA,uBAAuB,2BA+BlC;AAEK,MAAM,mBAAmB,GAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAA4B,EAAE,EAAE;IACvF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,+BAAuB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxF,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEW,QAAA,kBAAkB,GAAa,+BAAuB,CAAC"}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Identifier = void 0;
4
- const Identifier = (c, scope, node) => {
5
- return [scope.get(node.name), []];
6
- };
7
- exports.Identifier = Identifier;
8
- //# sourceMappingURL=Identifier.js.map