ticbuild 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/.attachments/support_me_on_kofi_beige.png +0 -0
  2. package/.env.example +3 -0
  3. package/.prettierignore +10 -0
  4. package/LICENSE +15 -0
  5. package/README.md +429 -0
  6. package/debug/obj/resolvedManifest.ticbuild.jsonc +108 -0
  7. package/dist/backend/ImportedResource.d.ts +11 -0
  8. package/dist/backend/ImportedResource.d.ts.map +1 -0
  9. package/dist/backend/ImportedResource.js +53 -0
  10. package/dist/backend/ImportedResource.js.map +1 -0
  11. package/dist/backend/ImportedResourceTypes.d.ts +24 -0
  12. package/dist/backend/ImportedResourceTypes.d.ts.map +1 -0
  13. package/dist/backend/ImportedResourceTypes.js +35 -0
  14. package/dist/backend/ImportedResourceTypes.js.map +1 -0
  15. package/dist/backend/codeBanking.test.d.ts +2 -0
  16. package/dist/backend/codeBanking.test.d.ts.map +1 -0
  17. package/dist/backend/codeBanking.test.js.map +1 -0
  18. package/dist/backend/importResources.d.ts +4 -0
  19. package/dist/backend/importResources.d.ts.map +1 -0
  20. package/dist/backend/importResources.js +58 -0
  21. package/dist/backend/importResources.js.map +1 -0
  22. package/dist/backend/importUtils.d.ts +14 -0
  23. package/dist/backend/importUtils.d.ts.map +1 -0
  24. package/dist/backend/importUtils.js +77 -0
  25. package/dist/backend/importUtils.js.map +1 -0
  26. package/dist/backend/importers/LuaCodeImporter.d.ts +47 -0
  27. package/dist/backend/importers/LuaCodeImporter.d.ts.map +1 -0
  28. package/dist/backend/importers/LuaCodeImporter.js +196 -0
  29. package/dist/backend/importers/LuaCodeImporter.js.map +1 -0
  30. package/dist/backend/importers/LuaCodeImporter.test.d.ts +2 -0
  31. package/dist/backend/importers/LuaCodeImporter.test.d.ts.map +1 -0
  32. package/dist/backend/importers/LuaCodeImporter.test.js.map +1 -0
  33. package/dist/backend/importers/binaryResourceImporter.d.ts +22 -0
  34. package/dist/backend/importers/binaryResourceImporter.d.ts.map +1 -0
  35. package/dist/backend/importers/binaryResourceImporter.js +53 -0
  36. package/dist/backend/importers/binaryResourceImporter.js.map +1 -0
  37. package/dist/backend/importers/luaImporter.d.ts +1 -0
  38. package/dist/backend/importers/luaImporter.d.ts.map +1 -0
  39. package/dist/backend/importers/luaImporter.js +3 -0
  40. package/dist/backend/importers/luaImporter.js.map +1 -0
  41. package/dist/backend/importers/textResourceImporter.d.ts +23 -0
  42. package/dist/backend/importers/textResourceImporter.d.ts.map +1 -0
  43. package/dist/backend/importers/textResourceImporter.js +55 -0
  44. package/dist/backend/importers/textResourceImporter.js.map +1 -0
  45. package/dist/backend/importers/tic80CartImporter.d.ts +21 -0
  46. package/dist/backend/importers/tic80CartImporter.d.ts.map +1 -0
  47. package/dist/backend/importers/tic80CartImporter.js +96 -0
  48. package/dist/backend/importers/tic80CartImporter.js.map +1 -0
  49. package/dist/backend/loadAllImports.d.ts +1 -0
  50. package/dist/backend/loadAllImports.d.ts.map +1 -0
  51. package/dist/backend/loadAllImports.js +3 -0
  52. package/dist/backend/loadAllImports.js.map +1 -0
  53. package/dist/backend/luaBinaryEncoding.d.ts +6 -0
  54. package/dist/backend/luaBinaryEncoding.d.ts.map +1 -0
  55. package/dist/backend/luaBinaryEncoding.js +94 -0
  56. package/dist/backend/luaBinaryEncoding.js.map +1 -0
  57. package/dist/backend/luaPreprocessor.d.ts +8 -0
  58. package/dist/backend/luaPreprocessor.d.ts.map +1 -0
  59. package/dist/backend/luaPreprocessor.js +862 -0
  60. package/dist/backend/luaPreprocessor.js.map +1 -0
  61. package/dist/backend/luaPreprocessor.test.d.ts +2 -0
  62. package/dist/backend/luaPreprocessor.test.d.ts.map +1 -0
  63. package/dist/backend/luaPreprocessor.test.js.map +1 -0
  64. package/dist/backend/manifestLoader.d.ts +19 -0
  65. package/dist/backend/manifestLoader.d.ts.map +1 -0
  66. package/dist/backend/manifestLoader.js +142 -0
  67. package/dist/backend/manifestLoader.js.map +1 -0
  68. package/dist/backend/manifestLoader.test.d.ts +2 -0
  69. package/dist/backend/manifestLoader.test.d.ts.map +1 -0
  70. package/dist/backend/manifestLoader.test.js.map +1 -0
  71. package/dist/backend/manifestTypes.d.ts +454 -0
  72. package/dist/backend/manifestTypes.d.ts.map +1 -0
  73. package/dist/backend/manifestTypes.js +28 -0
  74. package/dist/backend/manifestTypes.js.map +1 -0
  75. package/dist/backend/project.d.ts +24 -0
  76. package/dist/backend/project.d.ts.map +1 -0
  77. package/dist/backend/project.js +159 -0
  78. package/dist/backend/project.js.map +1 -0
  79. package/dist/backend/projectCore.d.ts +34 -0
  80. package/dist/backend/projectCore.d.ts.map +1 -0
  81. package/dist/backend/projectCore.js +226 -0
  82. package/dist/backend/projectCore.js.map +1 -0
  83. package/dist/backend/tic80Resolver.d.ts +6 -0
  84. package/dist/backend/tic80Resolver.d.ts.map +1 -0
  85. package/dist/backend/tic80Resolver.js +66 -0
  86. package/dist/backend/tic80Resolver.js.map +1 -0
  87. package/dist/buildInfo.d.ts +9 -0
  88. package/dist/buildInfo.d.ts.map +1 -0
  89. package/dist/buildInfo.js +13 -0
  90. package/dist/buildInfo.js.map +1 -0
  91. package/dist/frontend/build.d.ts +3 -0
  92. package/dist/frontend/build.d.ts.map +1 -0
  93. package/dist/frontend/build.js +8 -0
  94. package/dist/frontend/build.js.map +1 -0
  95. package/dist/frontend/codeBankWarnings.test.d.ts +2 -0
  96. package/dist/frontend/codeBankWarnings.test.d.ts.map +1 -0
  97. package/dist/frontend/codeBankWarnings.test.js.map +1 -0
  98. package/dist/frontend/core.d.ts +3 -0
  99. package/dist/frontend/core.d.ts.map +1 -0
  100. package/dist/frontend/core.js +259 -0
  101. package/dist/frontend/core.js.map +1 -0
  102. package/dist/frontend/init.d.ts +7 -0
  103. package/dist/frontend/init.d.ts.map +1 -0
  104. package/dist/frontend/init.js +95 -0
  105. package/dist/frontend/init.js.map +1 -0
  106. package/dist/frontend/parseOptions.d.ts +7 -0
  107. package/dist/frontend/parseOptions.d.ts.map +1 -0
  108. package/dist/frontend/parseOptions.js +68 -0
  109. package/dist/frontend/parseOptions.js.map +1 -0
  110. package/dist/frontend/run.d.ts +3 -0
  111. package/dist/frontend/run.d.ts.map +1 -0
  112. package/dist/frontend/run.js +63 -0
  113. package/dist/frontend/run.js.map +1 -0
  114. package/dist/frontend/watch.d.ts +3 -0
  115. package/dist/frontend/watch.d.ts.map +1 -0
  116. package/dist/frontend/watch.js +208 -0
  117. package/dist/frontend/watch.js.map +1 -0
  118. package/dist/index.d.ts +3 -0
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +191 -0
  121. package/dist/index.js.map +1 -0
  122. package/dist/obj/resolvedManifest.ticbuild.jsonc +110 -0
  123. package/dist/obj/variables.json +19 -0
  124. package/dist/utils/algorithms.d.ts +4 -0
  125. package/dist/utils/algorithms.d.ts.map +1 -0
  126. package/dist/utils/algorithms.js +15 -0
  127. package/dist/utils/algorithms.js.map +1 -0
  128. package/dist/utils/algorithms.test.d.ts +2 -0
  129. package/dist/utils/algorithms.test.d.ts.map +1 -0
  130. package/dist/utils/algorithms.test.js.map +1 -0
  131. package/dist/utils/bin.d.ts +4 -0
  132. package/dist/utils/bin.d.ts.map +1 -0
  133. package/dist/utils/bin.js +16 -0
  134. package/dist/utils/bin.js.map +1 -0
  135. package/dist/utils/charMap.d.ts +28 -0
  136. package/dist/utils/charMap.d.ts.map +1 -0
  137. package/dist/utils/charMap.js +31 -0
  138. package/dist/utils/charMap.js.map +1 -0
  139. package/dist/utils/console.d.ts +10 -0
  140. package/dist/utils/console.d.ts.map +1 -0
  141. package/dist/utils/console.js +66 -0
  142. package/dist/utils/console.js.map +1 -0
  143. package/dist/utils/encoding/b85.d.ts +5 -0
  144. package/dist/utils/encoding/b85.d.ts.map +1 -0
  145. package/dist/utils/encoding/b85.js +136 -0
  146. package/dist/utils/encoding/b85.js.map +1 -0
  147. package/dist/utils/encoding/codecRegistry.d.ts +333 -0
  148. package/dist/utils/encoding/codecRegistry.d.ts.map +1 -0
  149. package/dist/utils/encoding/codecRegistry.js +81 -0
  150. package/dist/utils/encoding/codecRegistry.js.map +1 -0
  151. package/dist/utils/encoding/hex.d.ts +3 -0
  152. package/dist/utils/encoding/hex.d.ts.map +1 -0
  153. package/dist/utils/encoding/hex.js +30 -0
  154. package/dist/utils/encoding/hex.js.map +1 -0
  155. package/dist/utils/encoding/lz.d.ts +12 -0
  156. package/dist/utils/encoding/lz.d.ts.map +1 -0
  157. package/dist/utils/encoding/lz.js +271 -0
  158. package/dist/utils/encoding/lz.js.map +1 -0
  159. package/dist/utils/enum.d.ts +45 -0
  160. package/dist/utils/enum.d.ts.map +1 -0
  161. package/dist/utils/enum.js +135 -0
  162. package/dist/utils/enum.js.map +1 -0
  163. package/dist/utils/errorHandling.d.ts +13 -0
  164. package/dist/utils/errorHandling.d.ts.map +1 -0
  165. package/dist/utils/errorHandling.js +18 -0
  166. package/dist/utils/errorHandling.js.map +1 -0
  167. package/dist/utils/fileSystem.d.ts +16 -0
  168. package/dist/utils/fileSystem.d.ts.map +1 -0
  169. package/dist/utils/fileSystem.js +161 -0
  170. package/dist/utils/fileSystem.js.map +1 -0
  171. package/dist/utils/help.d.ts +7 -0
  172. package/dist/utils/help.d.ts.map +1 -0
  173. package/dist/utils/help.js +87 -0
  174. package/dist/utils/help.js.map +1 -0
  175. package/dist/utils/lua/luaUtils.d.ts +1 -0
  176. package/dist/utils/lua/luaUtils.d.ts.map +1 -0
  177. package/dist/utils/lua/luaUtils.js +3 -0
  178. package/dist/utils/lua/luaUtils.js.map +1 -0
  179. package/dist/utils/lua/lua_alias_expressions.d.ts +20 -0
  180. package/dist/utils/lua/lua_alias_expressions.d.ts.map +1 -0
  181. package/dist/utils/lua/lua_alias_expressions.js +233 -0
  182. package/dist/utils/lua/lua_alias_expressions.js.map +1 -0
  183. package/dist/utils/lua/lua_alias_literals.d.ts +20 -0
  184. package/dist/utils/lua/lua_alias_literals.d.ts.map +1 -0
  185. package/dist/utils/lua/lua_alias_literals.js +165 -0
  186. package/dist/utils/lua/lua_alias_literals.js.map +1 -0
  187. package/dist/utils/lua/lua_alias_shared.d.ts +31 -0
  188. package/dist/utils/lua/lua_alias_shared.d.ts.map +1 -0
  189. package/dist/utils/lua/lua_alias_shared.js +415 -0
  190. package/dist/utils/lua/lua_alias_shared.js.map +1 -0
  191. package/dist/utils/lua/lua_ast.d.ts +9 -0
  192. package/dist/utils/lua/lua_ast.d.ts.map +1 -0
  193. package/dist/utils/lua/lua_ast.js +90 -0
  194. package/dist/utils/lua/lua_ast.js.map +1 -0
  195. package/dist/utils/lua/lua_fundamentals.d.ts +14 -0
  196. package/dist/utils/lua/lua_fundamentals.d.ts.map +1 -0
  197. package/dist/utils/lua/lua_fundamentals.js +93 -0
  198. package/dist/utils/lua/lua_fundamentals.js.map +1 -0
  199. package/dist/utils/lua/lua_pack_locals.d.ts +3 -0
  200. package/dist/utils/lua/lua_pack_locals.d.ts.map +1 -0
  201. package/dist/utils/lua/lua_pack_locals.js +206 -0
  202. package/dist/utils/lua/lua_pack_locals.js.map +1 -0
  203. package/dist/utils/lua/lua_processor.d.ts +65 -0
  204. package/dist/utils/lua/lua_processor.d.ts.map +1 -0
  205. package/dist/utils/lua/lua_processor.js +1153 -0
  206. package/dist/utils/lua/lua_processor.js.map +1 -0
  207. package/dist/utils/lua/lua_processor.test.d.ts +2 -0
  208. package/dist/utils/lua/lua_processor.test.d.ts.map +1 -0
  209. package/dist/utils/lua/lua_processor.test.js.map +1 -0
  210. package/dist/utils/lua/lua_remove_unused_functions.d.ts +6 -0
  211. package/dist/utils/lua/lua_remove_unused_functions.d.ts.map +1 -0
  212. package/dist/utils/lua/lua_remove_unused_functions.js +474 -0
  213. package/dist/utils/lua/lua_remove_unused_functions.js.map +1 -0
  214. package/dist/utils/lua/lua_remove_unused_locals.d.ts +3 -0
  215. package/dist/utils/lua/lua_remove_unused_locals.d.ts.map +1 -0
  216. package/dist/utils/lua/lua_remove_unused_locals.js +303 -0
  217. package/dist/utils/lua/lua_remove_unused_locals.js.map +1 -0
  218. package/dist/utils/lua/lua_rename_allowed_table_keys.d.ts +3 -0
  219. package/dist/utils/lua/lua_rename_allowed_table_keys.d.ts.map +1 -0
  220. package/dist/utils/lua/lua_rename_allowed_table_keys.js +157 -0
  221. package/dist/utils/lua/lua_rename_allowed_table_keys.js.map +1 -0
  222. package/dist/utils/lua/lua_rename_table_fields.d.ts +3 -0
  223. package/dist/utils/lua/lua_rename_table_fields.d.ts.map +1 -0
  224. package/dist/utils/lua/lua_rename_table_fields.js +427 -0
  225. package/dist/utils/lua/lua_rename_table_fields.js.map +1 -0
  226. package/dist/utils/lua/lua_renamer.d.ts +3 -0
  227. package/dist/utils/lua/lua_renamer.d.ts.map +1 -0
  228. package/dist/utils/lua/lua_renamer.js +229 -0
  229. package/dist/utils/lua/lua_renamer.js.map +1 -0
  230. package/dist/utils/lua/lua_simplify.d.ts +3 -0
  231. package/dist/utils/lua/lua_simplify.d.ts.map +1 -0
  232. package/dist/utils/lua/lua_simplify.js +541 -0
  233. package/dist/utils/lua/lua_simplify.js.map +1 -0
  234. package/dist/utils/lua/lua_utils.d.ts +13 -0
  235. package/dist/utils/lua/lua_utils.d.ts.map +1 -0
  236. package/dist/utils/lua/lua_utils.js +58 -0
  237. package/dist/utils/lua/lua_utils.js.map +1 -0
  238. package/dist/utils/math.d.ts +2 -0
  239. package/dist/utils/math.d.ts.map +1 -0
  240. package/dist/utils/math.js +7 -0
  241. package/dist/utils/math.js.map +1 -0
  242. package/dist/utils/math.test.d.ts +2 -0
  243. package/dist/utils/math.test.d.ts.map +1 -0
  244. package/dist/utils/math.test.js.map +1 -0
  245. package/dist/utils/templates.d.ts +3 -0
  246. package/dist/utils/templates.d.ts.map +1 -0
  247. package/dist/utils/templates.js +57 -0
  248. package/dist/utils/templates.js.map +1 -0
  249. package/dist/utils/tic80/bankSupport.test.d.ts +2 -0
  250. package/dist/utils/tic80/bankSupport.test.d.ts.map +1 -0
  251. package/dist/utils/tic80/bankSupport.test.js.map +1 -0
  252. package/dist/utils/tic80/cartLoader.d.ts +3 -0
  253. package/dist/utils/tic80/cartLoader.d.ts.map +1 -0
  254. package/dist/utils/tic80/cartLoader.js +54 -0
  255. package/dist/utils/tic80/cartLoader.js.map +1 -0
  256. package/dist/utils/tic80/cartWriter.d.ts +5 -0
  257. package/dist/utils/tic80/cartWriter.d.ts.map +1 -0
  258. package/dist/utils/tic80/cartWriter.js +95 -0
  259. package/dist/utils/tic80/cartWriter.js.map +1 -0
  260. package/dist/utils/tic80/launch.d.ts +4 -0
  261. package/dist/utils/tic80/launch.d.ts.map +1 -0
  262. package/dist/utils/tic80/launch.js +36 -0
  263. package/dist/utils/tic80/launch.js.map +1 -0
  264. package/dist/utils/tic80/tic80.d.ts +1149 -0
  265. package/dist/utils/tic80/tic80.d.ts.map +1 -0
  266. package/dist/utils/tic80/tic80.js +114 -0
  267. package/dist/utils/tic80/tic80.js.map +1 -0
  268. package/dist/utils/utils.d.ts +13 -0
  269. package/dist/utils/utils.d.ts.map +1 -0
  270. package/dist/utils/utils.js +109 -0
  271. package/dist/utils/utils.js.map +1 -0
  272. package/dist/utils/versionString.d.ts +12 -0
  273. package/dist/utils/versionString.d.ts.map +1 -0
  274. package/dist/utils/versionString.js +33 -0
  275. package/dist/utils/versionString.js.map +1 -0
  276. package/dist/utils/windowPosition.d.ts +10 -0
  277. package/dist/utils/windowPosition.d.ts.map +1 -0
  278. package/dist/utils/windowPosition.js +222 -0
  279. package/dist/utils/windowPosition.js.map +1 -0
  280. package/example.ticbuild.jsonc +94 -0
  281. package/package.json +51 -0
  282. package/templates/help/build.txt +23 -0
  283. package/templates/help/init.txt +23 -0
  284. package/templates/help/main.txt +41 -0
  285. package/templates/help/run.txt +22 -0
  286. package/templates/help/tic80.txt +8 -0
  287. package/templates/help/watch.txt +24 -0
  288. package/templates/minimal/project.ticbuild.jsonc +43 -0
  289. package/ticbuild-1.0.0.tgz +0 -0
  290. package/ticbuild.schema.json +327 -0
@@ -0,0 +1,541 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.simplifyExpressionsInAST = simplifyExpressionsInAST;
4
+ const lua_utils_1 = require("./lua_utils");
5
+ // Collect identifiers that are written/introduced within a statement.
6
+ // We only track plain identifiers (not table fields) because we propagate
7
+ // only plain locals; member/index writes are treated conservatively later.
8
+ function collectWrites(stmt, out) {
9
+ switch (stmt.type) {
10
+ case "LocalStatement": {
11
+ stmt.variables.forEach(v => {
12
+ if (v.type === "Identifier")
13
+ out.add(v.name);
14
+ });
15
+ break;
16
+ }
17
+ case "AssignmentStatement": {
18
+ stmt.variables.forEach(v => {
19
+ if (v.type === "Identifier")
20
+ out.add(v.name);
21
+ });
22
+ break;
23
+ }
24
+ case "ForNumericStatement": {
25
+ if (stmt.variable.type === "Identifier")
26
+ out.add(stmt.variable.name);
27
+ stmt.body.forEach(s => collectWrites(s, out));
28
+ break;
29
+ }
30
+ case "ForGenericStatement": {
31
+ stmt.variables.forEach(v => {
32
+ if (v.type === "Identifier")
33
+ out.add(v.name);
34
+ });
35
+ stmt.body.forEach(s => collectWrites(s, out));
36
+ break;
37
+ }
38
+ case "WhileStatement":
39
+ case "RepeatStatement":
40
+ case "IfStatement":
41
+ case "DoStatement":
42
+ case "FunctionDeclaration": {
43
+ // Recurse into bodies/clauses to collect inner writes.
44
+ const bodies = [];
45
+ if (stmt.type === "WhileStatement" || stmt.type === "DoStatement") {
46
+ bodies.push(stmt.body);
47
+ }
48
+ else if (stmt.type === "RepeatStatement") {
49
+ bodies.push(stmt.body);
50
+ }
51
+ else if (stmt.type === "IfStatement") {
52
+ stmt.clauses.forEach(c => bodies.push(c.body));
53
+ }
54
+ else if (stmt.type === "FunctionDeclaration") {
55
+ bodies.push(stmt.body);
56
+ }
57
+ bodies.forEach(b => b.forEach(s => collectWrites(s, out)));
58
+ break;
59
+ }
60
+ default:
61
+ break;
62
+ }
63
+ }
64
+ function collectBlockWrites(body) {
65
+ const writes = new Set();
66
+ body.forEach(stmt => collectWrites(stmt, writes));
67
+ return writes;
68
+ }
69
+ function cloneScope(scope) {
70
+ return { env: new Map(scope.env), locals: new Set(scope.locals) };
71
+ }
72
+ function freshScope() {
73
+ return { env: new Map(), locals: new Set() };
74
+ }
75
+ function makeNumericLiteral(value) {
76
+ return { type: "NumericLiteral", value, raw: String(value) };
77
+ }
78
+ function makeBooleanLiteral(value) {
79
+ return { type: "BooleanLiteral", value, raw: value ? "true" : "false" };
80
+ }
81
+ function makeStringLiteral(value) {
82
+ return { type: "StringLiteral", value, raw: JSON.stringify(value) };
83
+ }
84
+ function makeNilLiteral() {
85
+ return { type: "NilLiteral", value: null, raw: "nil" };
86
+ }
87
+ function cloneLiteral(lit) {
88
+ switch (lit.type) {
89
+ case "NumericLiteral":
90
+ return { ...lit };
91
+ case "BooleanLiteral":
92
+ return { ...lit };
93
+ case "NilLiteral":
94
+ return { ...lit };
95
+ case "StringLiteral": {
96
+ const str = lit;
97
+ return { type: "StringLiteral", value: str.value, raw: str.raw };
98
+ }
99
+ default:
100
+ return lit;
101
+ }
102
+ }
103
+ function isLiteral(expr) {
104
+ if (!expr)
105
+ return false;
106
+ switch (expr.type) {
107
+ case "NumericLiteral":
108
+ case "BooleanLiteral":
109
+ case "NilLiteral":
110
+ case "StringLiteral":
111
+ return true;
112
+ default:
113
+ return false;
114
+ }
115
+ }
116
+ function missingInitDefaultsToNil(init) {
117
+ if (!init || init.length === 0)
118
+ return true;
119
+ const last = init[init.length - 1];
120
+ return last.type !== "CallExpression" && last.type !== "TableCallExpression" &&
121
+ last.type !== "StringCallExpression" && last.type !== "VarargLiteral";
122
+ }
123
+ function literalEquals(a, b) {
124
+ if (a.type === "NilLiteral")
125
+ return b.type === "NilLiteral";
126
+ if (a.type === "BooleanLiteral" && b.type === "BooleanLiteral")
127
+ return a.value === b.value;
128
+ if (a.type === "NumericLiteral" && b.type === "NumericLiteral")
129
+ return a.value === b.value;
130
+ if (a.type === "StringLiteral" && b.type === "StringLiteral")
131
+ return (0, lua_utils_1.stringValue)(a) === (0, lua_utils_1.stringValue)(b);
132
+ return false;
133
+ }
134
+ function isTruthy(lit) {
135
+ if (lit.type === "NilLiteral")
136
+ return false;
137
+ if (lit.type === "BooleanLiteral" && lit.value === false)
138
+ return false;
139
+ return true;
140
+ }
141
+ function toNumber(expr) {
142
+ return expr.type === "NumericLiteral" ? expr.value : null;
143
+ }
144
+ function toStringLiteral(expr) {
145
+ return expr.type === "StringLiteral" ? expr : null;
146
+ }
147
+ function foldBinary(operator, left, right) {
148
+ switch (operator) {
149
+ case "+": {
150
+ const a = toNumber(left);
151
+ const b = toNumber(right);
152
+ if (a == null || b == null)
153
+ return null;
154
+ return makeNumericLiteral(a + b);
155
+ }
156
+ case "-": {
157
+ const a = toNumber(left);
158
+ const b = toNumber(right);
159
+ if (a == null || b == null)
160
+ return null;
161
+ return makeNumericLiteral(a - b);
162
+ }
163
+ case "*": {
164
+ const a = toNumber(left);
165
+ const b = toNumber(right);
166
+ if (a == null || b == null)
167
+ return null;
168
+ return makeNumericLiteral(a * b);
169
+ }
170
+ case "/": {
171
+ const a = toNumber(left);
172
+ const b = toNumber(right);
173
+ if (a == null || b == null)
174
+ return null;
175
+ return makeNumericLiteral(a / b);
176
+ }
177
+ case "//": {
178
+ const a = toNumber(left);
179
+ const b = toNumber(right);
180
+ if (a == null || b == null)
181
+ return null;
182
+ return makeNumericLiteral(Math.floor(a / b));
183
+ }
184
+ case "%": {
185
+ const a = toNumber(left);
186
+ const b = toNumber(right);
187
+ if (a == null || b == null)
188
+ return null;
189
+ return makeNumericLiteral(a - Math.floor(a / b) * b);
190
+ }
191
+ case "^": {
192
+ const a = toNumber(left);
193
+ const b = toNumber(right);
194
+ if (a == null || b == null)
195
+ return null;
196
+ return makeNumericLiteral(Math.pow(a, b));
197
+ }
198
+ case "..": {
199
+ const s1 = toStringLiteral(left);
200
+ const s2 = toStringLiteral(right);
201
+ if (!s1 || !s2)
202
+ return null;
203
+ const v1 = (0, lua_utils_1.stringValue)(s1);
204
+ const v2 = (0, lua_utils_1.stringValue)(s2);
205
+ if (v1 == null || v2 == null)
206
+ return null;
207
+ return makeStringLiteral(v1 + v2);
208
+ }
209
+ case "==":
210
+ return makeBooleanLiteral(literalEquals(left, right));
211
+ case "~=":
212
+ return makeBooleanLiteral(!literalEquals(left, right));
213
+ case "<": {
214
+ const a = toNumber(left);
215
+ const b = toNumber(right);
216
+ if (a == null || b == null)
217
+ return null;
218
+ return makeBooleanLiteral(a < b);
219
+ }
220
+ case "<=": {
221
+ const a = toNumber(left);
222
+ const b = toNumber(right);
223
+ if (a == null || b == null)
224
+ return null;
225
+ return makeBooleanLiteral(a <= b);
226
+ }
227
+ case ">": {
228
+ const a = toNumber(left);
229
+ const b = toNumber(right);
230
+ if (a == null || b == null)
231
+ return null;
232
+ return makeBooleanLiteral(a > b);
233
+ }
234
+ case ">=": {
235
+ const a = toNumber(left);
236
+ const b = toNumber(right);
237
+ if (a == null || b == null)
238
+ return null;
239
+ return makeBooleanLiteral(a >= b);
240
+ }
241
+ default:
242
+ return null;
243
+ }
244
+ }
245
+ function simplifyExpression(expr, scope) {
246
+ switch (expr.type) {
247
+ case "Identifier": {
248
+ const replacement = scope.env.get(expr.name);
249
+ return replacement ? cloneLiteral(replacement) : expr;
250
+ }
251
+ case "UnaryExpression": {
252
+ expr.argument = simplifyExpression(expr.argument, scope);
253
+ if (isLiteral(expr.argument)) {
254
+ if (expr.operator === "-") {
255
+ const n = toNumber(expr.argument);
256
+ if (n != null)
257
+ return makeNumericLiteral(-n);
258
+ }
259
+ else if (expr.operator === "not") {
260
+ return makeBooleanLiteral(!isTruthy(expr.argument));
261
+ }
262
+ }
263
+ return expr;
264
+ }
265
+ case "BinaryExpression": {
266
+ expr.left = simplifyExpression(expr.left, scope);
267
+ expr.right = simplifyExpression(expr.right, scope);
268
+ if (isLiteral(expr.left) && isLiteral(expr.right)) {
269
+ const folded = foldBinary(expr.operator, expr.left, expr.right);
270
+ if (folded)
271
+ return folded;
272
+ }
273
+ return expr;
274
+ }
275
+ case "LogicalExpression": {
276
+ expr.left = simplifyExpression(expr.left, scope);
277
+ if (isLiteral(expr.left)) {
278
+ if (expr.operator === "and") {
279
+ if (!isTruthy(expr.left))
280
+ return cloneLiteral(expr.left);
281
+ expr.right = simplifyExpression(expr.right, scope);
282
+ return expr.right;
283
+ }
284
+ else if (expr.operator === "or") {
285
+ if (isTruthy(expr.left))
286
+ return cloneLiteral(expr.left);
287
+ expr.right = simplifyExpression(expr.right, scope);
288
+ return expr.right;
289
+ }
290
+ }
291
+ expr.right = simplifyExpression(expr.right, scope);
292
+ if (isLiteral(expr.left) && isLiteral(expr.right)) {
293
+ const result = expr.operator === "and" ? (isTruthy(expr.left) ? expr.right : expr.left) :
294
+ (isTruthy(expr.left) ? expr.left : expr.right);
295
+ return isLiteral(result) ? cloneLiteral(result) : result;
296
+ }
297
+ return expr;
298
+ }
299
+ case "CallExpression": {
300
+ expr.base = simplifyExpression(expr.base, scope);
301
+ expr.arguments = expr.arguments.map(arg => simplifyExpression(arg, scope));
302
+ return expr;
303
+ }
304
+ case "TableCallExpression": {
305
+ expr.base = simplifyExpression(expr.base, scope);
306
+ expr.arguments = simplifyExpression(expr.arguments, scope);
307
+ return expr;
308
+ }
309
+ case "StringCallExpression": {
310
+ expr.base = simplifyExpression(expr.base, scope);
311
+ return expr;
312
+ }
313
+ case "MemberExpression": {
314
+ expr.base = simplifyExpression(expr.base, scope);
315
+ return expr;
316
+ }
317
+ case "IndexExpression": {
318
+ expr.base = simplifyExpression(expr.base, scope);
319
+ expr.index = simplifyExpression(expr.index, scope);
320
+ return expr;
321
+ }
322
+ case "TableConstructorExpression": {
323
+ expr.fields.forEach(field => {
324
+ if (field.type === "TableKey" || field.type === "TableKeyString") {
325
+ if (field.key)
326
+ field.key = simplifyExpression(field.key, scope);
327
+ if (field.value)
328
+ field.value = simplifyExpression(field.value, scope);
329
+ }
330
+ else if (field.type === "TableValue" && field.value) {
331
+ field.value = simplifyExpression(field.value, scope);
332
+ }
333
+ });
334
+ return expr;
335
+ }
336
+ case "FunctionDeclaration": {
337
+ const bodyScope = freshScope();
338
+ for (const param of expr.parameters) {
339
+ if (param.type === "Identifier")
340
+ bodyScope.locals.add(param.name);
341
+ }
342
+ simplifyBlock(expr.body, bodyScope);
343
+ return expr;
344
+ }
345
+ default:
346
+ return expr;
347
+ }
348
+ }
349
+ // Detect whether an expression references a given identifier name.
350
+ function referencesIdentifier(expr, name) {
351
+ switch (expr.type) {
352
+ case "Identifier":
353
+ return expr.name === name;
354
+ case "UnaryExpression":
355
+ return referencesIdentifier(expr.argument, name);
356
+ case "BinaryExpression":
357
+ case "LogicalExpression":
358
+ return referencesIdentifier(expr.left, name) || referencesIdentifier(expr.right, name);
359
+ case "CallExpression":
360
+ return referencesIdentifier(expr.base, name) || expr.arguments.some(arg => referencesIdentifier(arg, name));
361
+ case "TableCallExpression":
362
+ return referencesIdentifier(expr.base, name) || referencesIdentifier(expr.arguments, name);
363
+ case "StringCallExpression":
364
+ return referencesIdentifier(expr.base, name);
365
+ case "MemberExpression":
366
+ return referencesIdentifier(expr.base, name) ||
367
+ (expr.identifier ? referencesIdentifier(expr.identifier, name) : false);
368
+ case "IndexExpression":
369
+ return referencesIdentifier(expr.base, name) || referencesIdentifier(expr.index, name);
370
+ case "TableConstructorExpression":
371
+ return expr.fields.some(field => {
372
+ if (field.type === "TableKey" || field.type === "TableKeyString") {
373
+ return (field.key && referencesIdentifier(field.key, name)) ||
374
+ (field.value && referencesIdentifier(field.value, name));
375
+ }
376
+ else if (field.type === "TableValue") {
377
+ return field.value ? referencesIdentifier(field.value, name) : false;
378
+ }
379
+ return false;
380
+ });
381
+ default:
382
+ return false;
383
+ }
384
+ }
385
+ function simplifyStatement(stmt, scope) {
386
+ switch (stmt.type) {
387
+ case "LocalStatement": {
388
+ const simplifiedInit = stmt.init ? stmt.init.map(expr => simplifyExpression(expr, scope)) : undefined;
389
+ if (simplifiedInit)
390
+ stmt.init = simplifiedInit;
391
+ const defaultMissingToNil = missingInitDefaultsToNil(simplifiedInit);
392
+ stmt.variables.forEach((variable, idx) => {
393
+ if (variable.type !== "Identifier")
394
+ return;
395
+ scope.locals.add(variable.name);
396
+ const initExpr = simplifiedInit ? simplifiedInit[idx] : undefined;
397
+ const literal = initExpr ? (isLiteral(initExpr) ? initExpr : null) : (defaultMissingToNil ? makeNilLiteral() : null);
398
+ if (literal)
399
+ scope.env.set(variable.name, literal);
400
+ else
401
+ scope.env.delete(variable.name);
402
+ });
403
+ break;
404
+ }
405
+ case "AssignmentStatement": {
406
+ const originalInit = stmt.init.slice();
407
+ const simplifiedInit = originalInit.map((expr, idx) => {
408
+ const variable = stmt.variables[idx];
409
+ if (variable && variable.type === "Identifier" && expr) {
410
+ const rhsUsesLhs = referencesIdentifier(expr, variable.name);
411
+ if (rhsUsesLhs) {
412
+ const scoped = cloneScope(scope);
413
+ scoped.env.delete(variable.name);
414
+ return simplifyExpression(expr, scoped);
415
+ }
416
+ }
417
+ return simplifyExpression(expr, scope);
418
+ });
419
+ stmt.init = simplifiedInit;
420
+ const defaultMissingToNil = missingInitDefaultsToNil(simplifiedInit);
421
+ stmt.variables.forEach((variable, idx) => {
422
+ if (variable.type !== "Identifier")
423
+ return;
424
+ if (!scope.locals.has(variable.name)) {
425
+ scope.env.delete(variable.name);
426
+ return;
427
+ }
428
+ const initExpr = simplifiedInit[idx];
429
+ // If RHS references the LHS (self-update) or is non-literal, drop from env.
430
+ const rhsUsesLhs = originalInit[idx] && referencesIdentifier(originalInit[idx], variable.name);
431
+ const literal = !rhsUsesLhs && initExpr ? (isLiteral(initExpr) ? initExpr : null) :
432
+ (!initExpr && defaultMissingToNil ? makeNilLiteral() : null);
433
+ if (literal)
434
+ scope.env.set(variable.name, literal);
435
+ else
436
+ scope.env.delete(variable.name);
437
+ });
438
+ break;
439
+ }
440
+ case "CallStatement": {
441
+ stmt.expression = simplifyExpression(stmt.expression, scope);
442
+ break;
443
+ }
444
+ case "ReturnStatement": {
445
+ stmt.arguments = stmt.arguments.map(arg => simplifyExpression(arg, scope));
446
+ break;
447
+ }
448
+ case "IfStatement": {
449
+ const writes = new Set();
450
+ for (const clause of stmt.clauses) {
451
+ if (clause.type !== "ElseClause" && clause.condition)
452
+ clause.condition = simplifyExpression(clause.condition, scope);
453
+ const innerScope = cloneScope(scope);
454
+ simplifyBlock(clause.body, innerScope);
455
+ clause.body.forEach(s => collectWrites(s, writes));
456
+ }
457
+ writes.forEach(name => scope.env.delete(name));
458
+ break;
459
+ }
460
+ case "WhileStatement": {
461
+ const bodyWrites = collectBlockWrites(stmt.body);
462
+ bodyWrites.forEach(name => scope.env.delete(name));
463
+ const condScope = cloneScope(scope);
464
+ condScope.env = new Map(); // avoid propagating locals into loop conditions
465
+ stmt.condition = simplifyExpression(stmt.condition, condScope);
466
+ const inner = cloneScope(scope);
467
+ simplifyBlock(stmt.body, inner);
468
+ bodyWrites.forEach(name => scope.env.delete(name));
469
+ break;
470
+ }
471
+ case "RepeatStatement": {
472
+ const bodyWrites = collectBlockWrites(stmt.body);
473
+ bodyWrites.forEach(name => scope.env.delete(name));
474
+ const inner = cloneScope(scope);
475
+ simplifyBlock(stmt.body, inner);
476
+ const condScope = cloneScope(scope);
477
+ condScope.env = new Map();
478
+ stmt.condition = simplifyExpression(stmt.condition, condScope);
479
+ bodyWrites.forEach(name => scope.env.delete(name));
480
+ break;
481
+ }
482
+ case "ForNumericStatement": {
483
+ const bodyWrites = collectBlockWrites(stmt.body);
484
+ bodyWrites.forEach(name => scope.env.delete(name));
485
+ stmt.start = simplifyExpression(stmt.start, scope);
486
+ stmt.end = simplifyExpression(stmt.end, scope);
487
+ if (stmt.step)
488
+ stmt.step = simplifyExpression(stmt.step, scope);
489
+ const bodyScope = cloneScope(scope);
490
+ if (stmt.variable.type === "Identifier") {
491
+ bodyScope.locals.add(stmt.variable.name);
492
+ bodyScope.env.delete(stmt.variable.name);
493
+ scope.env.delete(stmt.variable.name); // do not treat loop var as const outside
494
+ }
495
+ simplifyBlock(stmt.body, bodyScope);
496
+ bodyWrites.forEach(name => scope.env.delete(name));
497
+ break;
498
+ }
499
+ case "ForGenericStatement": {
500
+ const bodyWrites = collectBlockWrites(stmt.body);
501
+ bodyWrites.forEach(name => scope.env.delete(name));
502
+ stmt.iterators = stmt.iterators.map(it => simplifyExpression(it, scope));
503
+ const bodyScope = cloneScope(scope);
504
+ stmt.variables.forEach(v => {
505
+ if (v.type === "Identifier") {
506
+ bodyScope.locals.add(v.name);
507
+ bodyScope.env.delete(v.name);
508
+ scope.env.delete(v.name);
509
+ }
510
+ });
511
+ simplifyBlock(stmt.body, bodyScope);
512
+ bodyWrites.forEach(name => scope.env.delete(name));
513
+ break;
514
+ }
515
+ case "FunctionDeclaration": {
516
+ const bodyScope = freshScope();
517
+ stmt.parameters.forEach(param => {
518
+ if (param.type === "Identifier")
519
+ bodyScope.locals.add(param.name);
520
+ });
521
+ simplifyBlock(stmt.body, bodyScope);
522
+ break;
523
+ }
524
+ case "DoStatement": {
525
+ simplifyBlock(stmt.body, cloneScope(scope));
526
+ break;
527
+ }
528
+ default:
529
+ break;
530
+ }
531
+ }
532
+ function simplifyBlock(body, scope) {
533
+ for (const stmt of body) {
534
+ simplifyStatement(stmt, scope);
535
+ }
536
+ }
537
+ function simplifyExpressionsInAST(ast) {
538
+ simplifyBlock(ast.body, freshScope());
539
+ return ast;
540
+ }
541
+ //# sourceMappingURL=lua_simplify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_simplify.js","sourceRoot":"","sources":["../../../src/utils/lua/lua_simplify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as luaparse from "luaparse";
2
+ export type StringLiteralNode = luaparse.StringLiteral & {
3
+ value?: string | null;
4
+ };
5
+ export type LiteralNode = luaparse.NumericLiteral | StringLiteralNode | luaparse.BooleanLiteral | luaparse.NilLiteral;
6
+ export declare function generateShortName(index: number): string;
7
+ export declare function nextFreeName(counter: {
8
+ value: number;
9
+ }): string;
10
+ export declare function isStringLiteral(node: luaparse.Expression | undefined | null): node is luaparse.StringLiteral;
11
+ export declare function decodeRawString(raw: string | undefined): string | null;
12
+ export declare function stringValue(node: StringLiteralNode): string | null;
13
+ //# sourceMappingURL=lua_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_utils.d.ts","sourceRoot":"","sources":["../../../src/utils/lua/lua_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAIrC,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,GAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC,CAAC;AAC/E,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,GAAC,iBAAiB,GAAC,QAAQ,CAAC,cAAc,GAAC,QAAQ,CAAC,UAAU,CAAC;AAIhH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASvD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,MAAM,CAM7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,GAAC,SAAS,GAAC,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC,aAAa,CAExG;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAC,SAAS,GAAG,MAAM,GAAC,IAAI,CAsBlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,GAAC,IAAI,CAIhE"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateShortName = generateShortName;
4
+ exports.nextFreeName = nextFreeName;
5
+ exports.isStringLiteral = isStringLiteral;
6
+ exports.decodeRawString = decodeRawString;
7
+ exports.stringValue = stringValue;
8
+ const lua_ast_1 = require("./lua_ast");
9
+ // Short name generator (a, b, c, ..., z, aa, ab, ...), skipping Lua reserved words.
10
+ function generateShortName(index) {
11
+ const alphabet = "abcdefghijklmnopqrstuvwxyz";
12
+ let name = "";
13
+ let n = index;
14
+ do {
15
+ name = alphabet[n % 26] + name;
16
+ n = Math.floor(n / 26) - 1;
17
+ } while (n >= 0);
18
+ return name;
19
+ }
20
+ function nextFreeName(counter) {
21
+ while (true) {
22
+ const name = generateShortName(counter.value++);
23
+ if (!lua_ast_1.LUA_RESERVED_WORDS.has(name))
24
+ return name;
25
+ }
26
+ }
27
+ function isStringLiteral(node) {
28
+ return !!node && node.type === "StringLiteral";
29
+ }
30
+ function decodeRawString(raw) {
31
+ if (!raw || raw.length < 2)
32
+ return null;
33
+ // Handle long bracket strings [[...]] (naive but sufficient for folding literals)
34
+ if (raw.startsWith("[[") && raw.endsWith("]]"))
35
+ return raw.slice(2, -2);
36
+ const quote = raw[0];
37
+ const tail = raw[raw.length - 1];
38
+ if ((quote === "\"" || quote === "'") && tail === quote) {
39
+ const inner = raw.slice(1, -1);
40
+ try {
41
+ if (quote === "\"")
42
+ return JSON.parse(raw);
43
+ // Convert single-quoted Lua string to JSON-friendly double-quoted string
44
+ const escaped = inner.replace(/\\/g, "\\\\").replace(/"/g, "\\\"");
45
+ return JSON.parse(`"${escaped}"`);
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ return null;
52
+ }
53
+ function stringValue(node) {
54
+ if (typeof node.value === "string")
55
+ return node.value;
56
+ return decodeRawString(node.raw);
57
+ }
58
+ //# sourceMappingURL=lua_utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_utils.js","sourceRoot":"","sources":["../../../src/utils/lua/lua_utils.ts"],"names":[],"mappings":";;AASA,8CASC;AAED,oCAMC;AAED,0CAEC;AAED,0CAsBC;AAED,kCAIC;AA3DD,uCAA6C;AAO7C,oFAAoF;AACpF,SAAgB,iBAAiB,CAAC,KAAa;IAC5C,MAAM,QAAQ,GAAG,4BAA4B,CAAC;IAC9C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,GAAG,CAAC;QACD,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;QAC/B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IACjB,OAAO,IAAI,CAAC;AACf,CAAC;AAED,SAAgB,YAAY,CAAC,OAAwB;IAClD,OAAO,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,4BAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B,OAAO,IAAI,CAAC;IAClB,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,IAAwC;IACrE,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC;AAClD,CAAC;AAED,SAAgB,eAAe,CAAC,GAAqB;IAClD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QACvB,OAAO,IAAI,CAAC;IACf,kFAAkF;IAClF,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3C,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3B,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC;YACF,IAAI,KAAK,KAAK,IAAI;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1B,yEAAyE;YACzE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACf,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACf,CAAC;AAED,SAAgB,WAAW,CAAC,IAAuB;IAChD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC;IACrB,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function clamp(value: number, min: number, max: number): number;
2
+ //# sourceMappingURL=math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AACA,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE"}