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,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LUA_RESERVED_WORDS = void 0;
4
+ exports.walkAST = walkAST;
5
+ exports.isIdentifier = isIdentifier;
6
+ exports.isLocalDeclaration = isLocalDeclaration;
7
+ exports.createsScope = createsScope;
8
+ exports.getDeclaredIdentifiers = getDeclaredIdentifiers;
9
+ exports.getScopeBody = getScopeBody;
10
+ // Lua reserved keywords that cannot be used as variable names
11
+ exports.LUA_RESERVED_WORDS = new Set([
12
+ "and", "break", "do", "else", "elseif", "end", "false", "for", "function", "goto", "if",
13
+ "in", "local", "nil", "not", "or", "repeat", "return", "then", "true", "until", "while"
14
+ ]);
15
+ // Walk all nodes in the AST, calling visitor for each node
16
+ function walkAST(node, visitor, parent) {
17
+ if (!node || typeof node !== "object")
18
+ return;
19
+ visitor(node, parent);
20
+ if (Array.isArray(node)) {
21
+ node.forEach(child => walkAST(child, visitor, parent));
22
+ return;
23
+ }
24
+ // Walk object properties
25
+ for (const key of Object.keys(node)) {
26
+ const value = node[key];
27
+ if (key === "type" || key === "range" || key === "loc" || key === "raw")
28
+ continue;
29
+ if (Array.isArray(value)) {
30
+ value.forEach(child => walkAST(child, visitor, node));
31
+ }
32
+ else if (value && typeof value === "object") {
33
+ walkAST(value, visitor, node);
34
+ }
35
+ }
36
+ }
37
+ function isIdentifier(node) {
38
+ return node && node.type === "Identifier";
39
+ }
40
+ function isLocalDeclaration(node) {
41
+ return node && node.type === "LocalStatement";
42
+ }
43
+ // Check if a node creates a new scope
44
+ function createsScope(node) {
45
+ return node &&
46
+ (node.type === "FunctionDeclaration" || node.type === "ForNumericStatement" ||
47
+ node.type === "ForGenericStatement" || node.type === "DoStatement" || node.type === "Chunk");
48
+ }
49
+ // Get all identifiers that are declared in a node
50
+ function getDeclaredIdentifiers(node) {
51
+ const identifiers = [];
52
+ if (node.type === "LocalStatement") {
53
+ return node.variables.filter(isIdentifier);
54
+ }
55
+ if (node.type === "FunctionDeclaration") {
56
+ return node.parameters.filter(isIdentifier);
57
+ }
58
+ if (node.type === "ForNumericStatement") {
59
+ return [node.variable].filter(isIdentifier);
60
+ }
61
+ if (node.type === "ForGenericStatement") {
62
+ return node.variables.filter(isIdentifier);
63
+ }
64
+ return identifiers;
65
+ }
66
+ // Get the body of a scope-creating node
67
+ function getScopeBody(node) {
68
+ if (node.type === "FunctionDeclaration")
69
+ return node.body;
70
+ if (node.type === "ForNumericStatement")
71
+ return node.body;
72
+ if (node.type === "ForGenericStatement")
73
+ return node.body;
74
+ if (node.type === "DoStatement")
75
+ return node.body;
76
+ if (node.type === "Chunk")
77
+ return node.body;
78
+ if (node.type === "IfClause")
79
+ return node.body;
80
+ if (node.type === "ElseifClause")
81
+ return node.body;
82
+ if (node.type === "ElseClause")
83
+ return node.body;
84
+ if (node.type === "WhileStatement")
85
+ return node.body;
86
+ if (node.type === "RepeatStatement")
87
+ return node.body;
88
+ return null;
89
+ }
90
+ //# sourceMappingURL=lua_ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_ast.js","sourceRoot":"","sources":["../../../src/utils/lua/lua_ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare function toLuaStringLiteral(str: string): string;
2
+ export declare function replaceLuaBlock(src: string, beginMarker: string, endMarker: string, replacement: string): string;
3
+ export type ExtractedLuaBlock = {
4
+ placeholder: string;
5
+ content: string;
6
+ };
7
+ export declare function extractLuaBlocks(src: string, beginMarker: string, endMarker: string, placeholderFactory: (index: number) => string, options?: {
8
+ strict?: boolean;
9
+ }): {
10
+ code: string;
11
+ blocks: ExtractedLuaBlock[];
12
+ };
13
+ export declare function removeLuaBlockMarkers(src: string, markers: string[]): string;
14
+ //# sourceMappingURL=lua_fundamentals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_fundamentals.d.ts","sourceRoot":"","sources":["../../../src/utils/lua/lua_fundamentals.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGtD;AAsDD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAoBhH;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAC7C,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAuB/C;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAO5E"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toLuaStringLiteral = toLuaStringLiteral;
4
+ exports.replaceLuaBlock = replaceLuaBlock;
5
+ exports.extractLuaBlocks = extractLuaBlocks;
6
+ exports.removeLuaBlockMarkers = removeLuaBlockMarkers;
7
+ const errorHandling_1 = require("../errorHandling");
8
+ // takes string contents, returns Lua string literal with quotes and escapes.
9
+ function toLuaStringLiteral(str) {
10
+ const escaped = str.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r");
11
+ return `"${escaped}"`;
12
+ }
13
+ function findNextLuaBlockSpan(src, beginMarker, endMarker, searchFrom, strict) {
14
+ const eol = src.includes("\r\n") ? "\r\n" : "\n";
15
+ const beginIdx = src.indexOf(beginMarker, searchFrom);
16
+ if (beginIdx < 0)
17
+ return null;
18
+ const beginLineStart = Math.max(0, src.lastIndexOf(eol, beginIdx));
19
+ const beginLineStart0 = beginLineStart === 0 ? 0 : beginLineStart + eol.length;
20
+ const beginLineEnd = src.indexOf(eol, beginIdx);
21
+ const innerStart = beginLineEnd < 0 ? src.length : beginLineEnd + eol.length;
22
+ const endIdx = src.indexOf(endMarker, innerStart);
23
+ if (endIdx < 0) {
24
+ if (strict) {
25
+ (0, errorHandling_1.assert)(false, `replaceLuaBlock: end marker not found: ${endMarker}`);
26
+ }
27
+ return null;
28
+ }
29
+ const endLineStart = Math.max(0, src.lastIndexOf(eol, endIdx));
30
+ const endLineStart0 = endLineStart === 0 ? 0 : endLineStart + eol.length;
31
+ const endLineEnd = src.indexOf(eol, endIdx);
32
+ const blockEnd = endLineEnd < 0 ? src.length : endLineEnd + eol.length;
33
+ return {
34
+ eol,
35
+ beginLineStart0,
36
+ innerStart,
37
+ endLineStart0,
38
+ blockEnd,
39
+ nextSearchFrom: beginLineStart0,
40
+ };
41
+ }
42
+ function replaceLuaBlock(src, beginMarker, endMarker, replacement) {
43
+ let out = src;
44
+ let searchFrom = 0;
45
+ while (true) {
46
+ const span = findNextLuaBlockSpan(out, beginMarker, endMarker, searchFrom, true);
47
+ if (!span)
48
+ break;
49
+ // Normalize line endings to match the surrounding source.
50
+ // If the replaced block was followed by more content, ensure the replacement ends with EOL
51
+ // so the last replacement line doesn't get merged into the following line.
52
+ let replacementNorm = replacement.replace(/\r?\n/g, span.eol);
53
+ if (replacementNorm.length > 0 && !replacementNorm.endsWith(span.eol) && span.blockEnd < out.length) {
54
+ replacementNorm += span.eol;
55
+ }
56
+ out = out.slice(0, span.beginLineStart0) + replacementNorm + out.slice(span.blockEnd);
57
+ searchFrom = span.beginLineStart0 + replacementNorm.length;
58
+ }
59
+ return out;
60
+ }
61
+ // Extract blocks delimited by begin/end markers and replace them with placeholders.
62
+ // Similar scanning semantics to replaceLuaBlock(), but captures inner content for reinsertion.
63
+ function extractLuaBlocks(src, beginMarker, endMarker, placeholderFactory, options) {
64
+ const strict = options?.strict ?? false;
65
+ const blocks = [];
66
+ let out = src;
67
+ let searchFrom = 0;
68
+ let i = 0;
69
+ while (true) {
70
+ const span = findNextLuaBlockSpan(out, beginMarker, endMarker, searchFrom, strict);
71
+ if (!span)
72
+ break;
73
+ const content = out.slice(span.innerStart, span.endLineStart0);
74
+ const placeholder = placeholderFactory(i);
75
+ const replacement = placeholder + span.eol;
76
+ blocks.push({ placeholder, content });
77
+ out = out.slice(0, span.beginLineStart0) + replacement + out.slice(span.blockEnd);
78
+ searchFrom = span.beginLineStart0 + replacement.length;
79
+ i++;
80
+ }
81
+ return { code: out, blocks };
82
+ }
83
+ // Remove any Lua lines that contain one of the specified marker substrings.
84
+ // Useful for stripping marker comments while leaving surrounding code untouched.
85
+ function removeLuaBlockMarkers(src, markers) {
86
+ if (markers.length === 0)
87
+ return src;
88
+ const eol = src.includes("\r\n") ? "\r\n" : "\n";
89
+ const lines = src.split(/\r?\n/);
90
+ const filtered = lines.filter((line) => !markers.some((m) => m && line.includes(m)));
91
+ return filtered.join(eol);
92
+ }
93
+ //# sourceMappingURL=lua_fundamentals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_fundamentals.js","sourceRoot":"","sources":["../../../src/utils/lua/lua_fundamentals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import * as luaparse from "luaparse";
2
+ export declare function packLocalDeclarationsInAST(ast: luaparse.Chunk): luaparse.Chunk;
3
+ //# sourceMappingURL=lua_pack_locals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_pack_locals.d.ts","sourceRoot":"","sources":["../../../src/utils/lua/lua_pack_locals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AA6PrC,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAG9E"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.packLocalDeclarationsInAST = packLocalDeclarationsInAST;
4
+ // // Optional string literal value helper (luaparse may omit value)
5
+ // type StringLiteralNode = luaparse.StringLiteral&{value?: string | null};
6
+ function usesAnyIdentifier(node, names) {
7
+ switch (node.type) {
8
+ case "Identifier":
9
+ return names.has(node.name);
10
+ case "MemberExpression":
11
+ return usesAnyIdentifier(node.base, names);
12
+ case "IndexExpression":
13
+ return usesAnyIdentifier(node.base, names) || usesAnyIdentifier(node.index, names);
14
+ case "CallExpression":
15
+ return usesAnyIdentifier(node.base, names) || node.arguments.some(arg => usesAnyIdentifier(arg, names));
16
+ case "TableCallExpression":
17
+ return usesAnyIdentifier(node.base, names) || usesAnyIdentifier(node.arguments, names);
18
+ case "StringCallExpression":
19
+ return usesAnyIdentifier(node.base, names) || usesAnyIdentifier(node.argument, names);
20
+ case "BinaryExpression":
21
+ case "LogicalExpression":
22
+ return usesAnyIdentifier(node.left, names) || usesAnyIdentifier(node.right, names);
23
+ case "UnaryExpression":
24
+ return usesAnyIdentifier(node.argument, names);
25
+ case "TableConstructorExpression":
26
+ return node.fields.some(field => {
27
+ if (field.type === "TableKey" || field.type === "TableKeyString") {
28
+ const keyHit = field.key ? usesAnyIdentifier(field.key, names) : false;
29
+ const valHit = field.value ? usesAnyIdentifier(field.value, names) : false;
30
+ return keyHit || valHit;
31
+ }
32
+ return field.value ? usesAnyIdentifier(field.value, names) : false;
33
+ });
34
+ case "FunctionDeclaration": {
35
+ // Treat parameters as shadowing; don't walk into body here (packing is statement-level)
36
+ const paramNames = new Set(node.parameters.filter(p => p.type === "Identifier").map(p => p.name));
37
+ const innerNames = new Set([...names].filter(n => !paramNames.has(n)));
38
+ // We still need to see if defaults capture; luaparse FunctionDeclaration as expression has no defaults, so safe.
39
+ return node.body.some(stmt => statementUsesNames(stmt, innerNames));
40
+ }
41
+ case "StringLiteral": {
42
+ const s = node;
43
+ return s.raw ? false : !!s.value;
44
+ }
45
+ default:
46
+ return false;
47
+ }
48
+ }
49
+ function statementUsesNames(stmt, names) {
50
+ switch (stmt.type) {
51
+ case "LocalStatement":
52
+ if (stmt.init && stmt.init.some(expr => usesAnyIdentifier(expr, names)))
53
+ return true;
54
+ return false;
55
+ case "AssignmentStatement":
56
+ if (stmt.variables.some(v => usesAnyIdentifier(v, names)))
57
+ return true;
58
+ if (stmt.init.some(expr => usesAnyIdentifier(expr, names)))
59
+ return true;
60
+ return false;
61
+ case "CallStatement":
62
+ return usesAnyIdentifier(stmt.expression, names);
63
+ case "ReturnStatement":
64
+ return stmt.arguments.some(arg => usesAnyIdentifier(arg, names));
65
+ case "IfStatement":
66
+ return stmt.clauses.some(clause => {
67
+ const condHit = clause.type !== "ElseClause" && clause.condition ? usesAnyIdentifier(clause.condition, names) : false;
68
+ return condHit || clause.body.some(s => statementUsesNames(s, names));
69
+ });
70
+ case "WhileStatement":
71
+ return usesAnyIdentifier(stmt.condition, names) || stmt.body.some(s => statementUsesNames(s, names));
72
+ case "RepeatStatement":
73
+ return stmt.body.some(s => statementUsesNames(s, names)) || usesAnyIdentifier(stmt.condition, names);
74
+ case "ForNumericStatement":
75
+ return usesAnyIdentifier(stmt.start, names) || usesAnyIdentifier(stmt.end, names) ||
76
+ (stmt.step ? usesAnyIdentifier(stmt.step, names) : false) ||
77
+ stmt.body.some(s => statementUsesNames(s, names));
78
+ case "ForGenericStatement":
79
+ return stmt.iterators.some(it => usesAnyIdentifier(it, names)) ||
80
+ stmt.body.some(s => statementUsesNames(s, names));
81
+ case "FunctionDeclaration":
82
+ return stmt.body.some(s => statementUsesNames(s, names));
83
+ case "DoStatement":
84
+ return stmt.body.some(s => statementUsesNames(s, names));
85
+ case "BreakStatement":
86
+ case "LabelStatement":
87
+ case "GotoStatement":
88
+ return false;
89
+ default:
90
+ return false;
91
+ }
92
+ }
93
+ function isPackableLocal(stmt) {
94
+ // Only pack 1-variable locals. Multi-variable locals can rely on Lua's multi-return
95
+ // fill semantics (e.g. `local a,b,c = f()`), and packing them with neighbors can
96
+ // silently change results.
97
+ return stmt.variables.length === 1 && stmt.variables.every(v => v.type === "Identifier");
98
+ }
99
+ function nilLiteral() {
100
+ return { type: "NilLiteral", value: null, raw: "nil" };
101
+ }
102
+ function processBlock(body) {
103
+ const result = [];
104
+ let i = 0;
105
+ while (i < body.length) {
106
+ const stmt = body[i];
107
+ if (stmt.type === "LocalStatement" && isPackableLocal(stmt)) {
108
+ const group = [];
109
+ const declared = new Set();
110
+ // seed group with first local
111
+ group.push(stmt);
112
+ stmt.variables.forEach(v => declared.add(v.name));
113
+ let j = i + 1;
114
+ while (j < body.length) {
115
+ const next = body[j];
116
+ if (next.type !== "LocalStatement" || !isPackableLocal(next))
117
+ break;
118
+ // Don't pack across a redeclaration (Lua allows it; packing would change shadowing boundaries).
119
+ const nextVarNames = new Set(next.variables.map(v => v.name));
120
+ const isRedeclaration = [...nextVarNames].some(n => declared.has(n));
121
+ if (isRedeclaration)
122
+ break;
123
+ // Forward-reference hazard: if any earlier initializer references a name that will be declared
124
+ // by `next`, packing would make that identifier resolve to an uninitialized local (nil) instead
125
+ // of a global/outer binding.
126
+ const groupHasForwardRef = group.some(ls => {
127
+ const inits = ls.init || [];
128
+ return inits.some(expr => usesAnyIdentifier(expr, nextVarNames));
129
+ });
130
+ if (groupHasForwardRef)
131
+ break;
132
+ // dependency check: next init must not reference already-declared names in this group
133
+ const inits = next.init || [];
134
+ const hasDependency = inits.some(expr => usesAnyIdentifier(expr, declared));
135
+ if (hasDependency)
136
+ break;
137
+ group.push(next);
138
+ next.variables.forEach(v => declared.add(v.name));
139
+ j++;
140
+ }
141
+ if (group.length === 1) {
142
+ result.push(stmt);
143
+ i += 1;
144
+ continue;
145
+ }
146
+ // Merge group
147
+ const mergedVars = [];
148
+ const mergedInits = [];
149
+ group.forEach(ls => {
150
+ const vars = ls.variables;
151
+ const inits = ls.init || [];
152
+ vars.forEach((v, idx) => {
153
+ mergedVars.push(v);
154
+ if (idx < inits.length) {
155
+ mergedInits.push(inits[idx]);
156
+ }
157
+ else {
158
+ mergedInits.push(nilLiteral());
159
+ }
160
+ });
161
+ });
162
+ const packed = {
163
+ type: "LocalStatement",
164
+ variables: mergedVars,
165
+ init: mergedInits,
166
+ };
167
+ result.push(packed);
168
+ i = j;
169
+ continue;
170
+ }
171
+ // Recurse into child blocks
172
+ switch (stmt.type) {
173
+ case "IfStatement":
174
+ stmt.clauses.forEach(clause => {
175
+ clause.body = processBlock(clause.body);
176
+ });
177
+ break;
178
+ case "WhileStatement":
179
+ stmt.body = processBlock(stmt.body);
180
+ break;
181
+ case "RepeatStatement":
182
+ stmt.body = processBlock(stmt.body);
183
+ break;
184
+ case "ForNumericStatement":
185
+ stmt.body = processBlock(stmt.body);
186
+ break;
187
+ case "ForGenericStatement":
188
+ stmt.body = processBlock(stmt.body);
189
+ break;
190
+ case "FunctionDeclaration":
191
+ stmt.body = processBlock(stmt.body);
192
+ break;
193
+ case "DoStatement":
194
+ stmt.body = processBlock(stmt.body);
195
+ break;
196
+ }
197
+ result.push(stmt);
198
+ i += 1;
199
+ }
200
+ return result;
201
+ }
202
+ function packLocalDeclarationsInAST(ast) {
203
+ ast.body = processBlock(ast.body);
204
+ return ast;
205
+ }
206
+ //# sourceMappingURL=lua_pack_locals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_pack_locals.js","sourceRoot":"","sources":["../../../src/utils/lua/lua_pack_locals.ts"],"names":[],"mappings":";;AA6PA,gEAGC;AA7PD,oEAAoE;AACpE,2EAA2E;AAE3E,SAAS,iBAAiB,CAAC,IAAyB,EAAE,KAAkB;IACrE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,YAAY;YACd,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,kBAAkB;YACpB,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE9C,KAAK,iBAAiB;YACnB,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEtF,KAAK,gBAAgB;YAClB,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAE3G,KAAK,qBAAqB;YACvB,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE1F,KAAK,sBAAsB;YACxB,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAA+B,EAAE,KAAK,CAAC,CAAC;QAEhH,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB;YACrB,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEtF,KAAK,iBAAiB;YACnB,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAElD,KAAK,4BAA4B;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBAChE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBACvE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC3E,OAAO,MAAM,IAAI,MAAM,CAAC;gBAC3B,CAAC;gBACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACtE,CAAC,CAAC,CAAC;QAEN,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC1B,wFAAwF;YACxF,MAAM,UAAU,GACb,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3G,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,iHAAiH;YACjH,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,eAAe,CAAC,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,IAAyB,CAAC;YACpC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACpC,CAAC;QAED;YACG,OAAO,KAAK,CAAC;IACnB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAwB,EAAE,KAAkB;IACrE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,gBAAgB;YAClB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACpE,OAAO,IAAI,CAAC;YACf,OAAO,KAAK,CAAC;QAEhB,KAAK,qBAAqB;YACvB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC;YACf,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC;YACf,OAAO,KAAK,CAAC;QAEhB,KAAK,eAAe;YACjB,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAEpD,KAAK,iBAAiB;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpE,KAAK,aAAa;YACf,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/B,MAAM,OAAO,GACV,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzG,OAAO,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QAEN,KAAK,gBAAgB;YAClB,OAAO,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAExG,KAAK,iBAAiB;YACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAExG,KAAK,qBAAqB;YACvB,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBAC9E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAExD,KAAK,qBAAqB;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC3D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAExD,KAAK,qBAAqB;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAE5D,KAAK,aAAa;YACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAE5D,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB,CAAC;QACtB,KAAK,eAAe;YACjB,OAAO,KAAK,CAAC;QAEhB;YACG,OAAO,KAAK,CAAC;IACnB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAA6B;IACnD,oFAAoF;IACpF,iFAAiF;IACjF,2BAA2B;IAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,UAAU;IAChB,OAAO,EAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CAAC,IAA0B;IAC7C,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,MAAM,KAAK,GAA8B,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;YAEnC,8BAA8B;YAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;YAE3E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBACzD,MAAM;gBAET,gGAAgG;gBAChG,MAAM,YAAY,GAAG,IAAI,GAAG,CAAE,IAAI,CAAC,SAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzF,MAAM,eAAe,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,IAAI,eAAe;oBAChB,MAAM;gBAET,+FAA+F;gBAC/F,gGAAgG;gBAChG,6BAA6B;gBAC7B,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBACxC,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;gBACH,IAAI,kBAAkB;oBACnB,MAAM;gBAET,sFAAsF;gBACtF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC5E,IAAI,aAAa;oBACd,MAAM;gBAET,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3E,CAAC,EAAE,CAAC;YACP,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACZ,CAAC;YAED,cAAc;YACd,MAAM,UAAU,GAA0B,EAAE,CAAC;YAC7C,MAAM,WAAW,GAA0B,EAAE,CAAC;YAE9C,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAChB,MAAM,IAAI,GAAG,EAAE,CAAC,SAAkC,CAAC;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;oBACrB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnB,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;wBACtB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACL,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBAClC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAA4B;gBACrC,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aACnB,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC;YACN,SAAS;QACZ,CAAC;QAED,4BAA4B;QAC5B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,aAAa;gBACf,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC3B,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBACH,MAAM;YAET,KAAK,gBAAgB;gBAClB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;YAET,KAAK,iBAAiB;gBACnB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;YAET,KAAK,qBAAqB;gBACvB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;YAET,KAAK,qBAAqB;gBACvB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;YAET,KAAK,qBAAqB;gBACvB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;YAET,KAAK,aAAa;gBACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;QACZ,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,IAAI,CAAC,CAAC;IACV,CAAC;IAED,OAAO,MAAM,CAAC;AACjB,CAAC;AAED,SAAgB,0BAA0B,CAAC,GAAmB;IAC3D,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACd,CAAC"}
@@ -0,0 +1,65 @@
1
+ import * as luaparse from "luaparse";
2
+ export type OptimizationRuleOptions = {
3
+ stripComments: boolean;
4
+ maxIndentLevel: number;
5
+ lineBehavior: "pretty" | "tight" | "single-line-blocks";
6
+ maxLineLength: number;
7
+ renameLocalVariables: boolean;
8
+ aliasRepeatedExpressions: boolean;
9
+ aliasLiterals: boolean;
10
+ simplifyExpressions: boolean;
11
+ removeUnusedLocals: boolean;
12
+ removeUnusedFunctions: boolean;
13
+ functionNamesToKeep: string[];
14
+ renameTableFields: boolean;
15
+ tableEntryKeysToRename: string[];
16
+ packLocalDeclarations: boolean;
17
+ };
18
+ export declare class LuaPrinter {
19
+ private buf;
20
+ private options;
21
+ private indentLevel;
22
+ private indentUnit;
23
+ private currentLine;
24
+ private blockComments;
25
+ private inlineMode;
26
+ constructor(options: OptimizationRuleOptions, blockComments?: Map<luaparse.Statement[], luaparse.Comment[]>);
27
+ print(chunk: luaparse.Chunk): string;
28
+ private printTightMode;
29
+ private collectTokens;
30
+ private statementToTokens;
31
+ private packTokensIntoLines;
32
+ private renderComment;
33
+ private emit;
34
+ private newline;
35
+ private flushLine;
36
+ private emitKeyword;
37
+ private startPos;
38
+ private printIndent;
39
+ private printBlock;
40
+ private printStatementInline;
41
+ private printStatement;
42
+ private renderInlineStatement;
43
+ private isBlockStatement;
44
+ private expr;
45
+ private stringLiteral;
46
+ private numericLiteral;
47
+ private tableConstructor;
48
+ private unaryExpr;
49
+ private binaryExpr;
50
+ private concatLeftExpr;
51
+ private concatRightExpr;
52
+ private ensureConcatSafeRight;
53
+ private logicalExpr;
54
+ private memberExpr;
55
+ private indexExpr;
56
+ private callExpr;
57
+ private tableCallExpr;
58
+ private stringCallExpr;
59
+ private functionExpr;
60
+ private printComment;
61
+ }
62
+ export declare function unparseLua(ast: luaparse.Chunk, ruleOptions: OptimizationRuleOptions): string;
63
+ export declare function parseLua(code: string): luaparse.Chunk | null;
64
+ export declare function processLua(code: string, ruleOptions: OptimizationRuleOptions): string;
65
+ //# sourceMappingURL=lua_processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lua_processor.d.ts","sourceRoot":"","sources":["../../../src/utils/lua/lua_processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAYrC,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,OAAO,CAAC;IAEvB,cAAc,EAAE,MAAM,CAAC;IAGvB,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,oBAAoB,CAAC;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,wBAAwB,EAAE,OAAO,CAAC;IAMlC,aAAa,EAAE,OAAO,CAAC;IAKvB,mBAAmB,EAAE,OAAO,CAAC;IAG7B,kBAAkB,EAAE,OAAO,CAAC;IAI5B,qBAAqB,EAAE,OAAO,CAAC;IAI/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAG9B,iBAAiB,EAAE,OAAO,CAAC;IAI3B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IAuBjC,qBAAqB,EAAE,OAAO,CAAC;CAKhC,CAAC;AAiDF,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,uBAAuB,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IAK3G,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,MAAM;IAoBpC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,iBAAiB;IAoHzB,OAAO,CAAC,mBAAmB;IA2C3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;IA6FlB,OAAO,CAAC,oBAAoB;IAoH5B,OAAO,CAAC,cAAc;IA8MtB,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,IAAI;IAyDZ,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,YAAY;CAQrB;AAqGD,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,uBAAuB,GAAG,MAAM,CAG5F;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAgB5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,GAAG,MAAM,CA+ErF"}