typescript-to-lua 1.8.2 → 1.10.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 (246) hide show
  1. package/dist/CompilerOptions.d.ts +1 -0
  2. package/dist/CompilerOptions.js +1 -0
  3. package/dist/LuaAST.d.ts +43 -37
  4. package/dist/LuaAST.js +48 -38
  5. package/dist/LuaLib.d.ts +12 -6
  6. package/dist/LuaLib.js +31 -21
  7. package/dist/LuaPrinter.d.ts +1 -0
  8. package/dist/LuaPrinter.js +10 -4
  9. package/dist/lualib/5.0/ArrayConcat.lua +22 -0
  10. package/dist/lualib/{ArrayEntries.lua → 5.0/ArrayEntries.lua} +0 -0
  11. package/dist/lualib/5.0/ArrayEvery.lua +8 -0
  12. package/dist/lualib/5.0/ArrayFilter.lua +11 -0
  13. package/dist/lualib/5.0/ArrayFind.lua +9 -0
  14. package/dist/lualib/5.0/ArrayFindIndex.lua +8 -0
  15. package/dist/lualib/5.0/ArrayFlat.lua +27 -0
  16. package/dist/lualib/5.0/ArrayFlatMap.lua +17 -0
  17. package/dist/lualib/5.0/ArrayForEach.lua +5 -0
  18. package/dist/lualib/5.0/ArrayFrom.lua +29 -0
  19. package/dist/lualib/5.0/ArrayIncludes.lua +19 -0
  20. package/dist/lualib/5.0/ArrayIndexOf.lua +24 -0
  21. package/dist/lualib/{ArrayIsArray.lua → 5.0/ArrayIsArray.lua} +0 -0
  22. package/dist/lualib/5.0/ArrayJoin.lua +10 -0
  23. package/dist/lualib/5.0/ArrayMap.lua +7 -0
  24. package/dist/lualib/5.0/ArrayPush.lua +9 -0
  25. package/dist/lualib/5.0/ArrayPushArray.lua +8 -0
  26. package/dist/lualib/5.0/ArrayReduce.lua +23 -0
  27. package/dist/lualib/5.0/ArrayReduceRight.lua +23 -0
  28. package/dist/lualib/5.0/ArrayReverse.lua +12 -0
  29. package/dist/lualib/5.0/ArraySetLength.lua +12 -0
  30. package/dist/lualib/5.0/ArraySlice.lua +43 -0
  31. package/dist/lualib/5.0/ArraySome.lua +8 -0
  32. package/dist/lualib/{ArraySort.lua → 5.0/ArraySort.lua} +0 -0
  33. package/dist/lualib/5.0/ArraySplice.lua +77 -0
  34. package/dist/lualib/5.0/ArrayToObject.lua +7 -0
  35. package/dist/lualib/5.0/ArrayUnshift.lua +14 -0
  36. package/dist/lualib/{Await.lua → 5.0/Await.lua} +0 -0
  37. package/dist/lualib/{Class.lua → 5.0/Class.lua} +0 -0
  38. package/dist/lualib/{ClassExtends.lua → 5.0/ClassExtends.lua} +0 -0
  39. package/dist/lualib/{CloneDescriptor.lua → 5.0/CloneDescriptor.lua} +0 -0
  40. package/dist/lualib/5.0/CountVarargs.lua +4 -0
  41. package/dist/lualib/5.0/Decorate.lua +36 -0
  42. package/dist/lualib/{DecorateParam.lua → 5.0/DecorateParam.lua} +0 -0
  43. package/dist/lualib/5.0/DelegatedYield.lua +34 -0
  44. package/dist/lualib/{Delete.lua → 5.0/Delete.lua} +0 -0
  45. package/dist/lualib/5.0/Error.lua +85 -0
  46. package/dist/lualib/5.0/FunctionBind.lua +11 -0
  47. package/dist/lualib/5.0/Generator.lua +34 -0
  48. package/dist/lualib/{InstanceOf.lua → 5.0/InstanceOf.lua} +0 -0
  49. package/dist/lualib/{InstanceOfObject.lua → 5.0/InstanceOfObject.lua} +0 -0
  50. package/dist/lualib/5.0/Iterator.lua +40 -0
  51. package/dist/lualib/5.0/LuaIteratorSpread.lua +9 -0
  52. package/dist/lualib/{Map.lua → 5.0/Map.lua} +0 -0
  53. package/dist/lualib/5.0/Match.lua +13 -0
  54. package/dist/lualib/{MathAtan2.lua → 5.0/MathAtan2.lua} +0 -0
  55. package/dist/lualib/5.0/MathModf.lua +10 -0
  56. package/dist/lualib/{MathSign.lua → 5.0/MathSign.lua} +0 -0
  57. package/dist/lualib/5.0/Modulo50.lua +3 -0
  58. package/dist/lualib/5.0/New.lua +5 -0
  59. package/dist/lualib/5.0/Number.lua +26 -0
  60. package/dist/lualib/5.0/NumberIsFinite.lua +3 -0
  61. package/dist/lualib/{NumberIsNaN.lua → 5.0/NumberIsNaN.lua} +0 -0
  62. package/dist/lualib/5.0/NumberToString.lua +47 -0
  63. package/dist/lualib/5.0/ObjectAssign.lua +10 -0
  64. package/dist/lualib/{ObjectDefineProperty.lua → 5.0/ObjectDefineProperty.lua} +0 -0
  65. package/dist/lualib/{ObjectEntries.lua → 5.0/ObjectEntries.lua} +0 -0
  66. package/dist/lualib/{ObjectFromEntries.lua → 5.0/ObjectFromEntries.lua} +0 -0
  67. package/dist/lualib/{ObjectGetOwnPropertyDescriptor.lua → 5.0/ObjectGetOwnPropertyDescriptor.lua} +0 -0
  68. package/dist/lualib/{ObjectGetOwnPropertyDescriptors.lua → 5.0/ObjectGetOwnPropertyDescriptors.lua} +0 -0
  69. package/dist/lualib/{ObjectKeys.lua → 5.0/ObjectKeys.lua} +0 -0
  70. package/dist/lualib/{ObjectRest.lua → 5.0/ObjectRest.lua} +0 -0
  71. package/dist/lualib/{ObjectValues.lua → 5.0/ObjectValues.lua} +0 -0
  72. package/dist/lualib/5.0/ParseFloat.lua +18 -0
  73. package/dist/lualib/5.0/ParseInt.lua +49 -0
  74. package/dist/lualib/5.0/Promise.lua +176 -0
  75. package/dist/lualib/{PromiseAll.lua → 5.0/PromiseAll.lua} +0 -0
  76. package/dist/lualib/{PromiseAllSettled.lua → 5.0/PromiseAllSettled.lua} +0 -0
  77. package/dist/lualib/5.0/PromiseAny.lua +41 -0
  78. package/dist/lualib/5.0/PromiseRace.lua +28 -0
  79. package/dist/lualib/{Set.lua → 5.0/Set.lua} +0 -0
  80. package/dist/lualib/{SetDescriptor.lua → 5.0/SetDescriptor.lua} +0 -0
  81. package/dist/lualib/5.0/SourceMapTraceBack.lua +56 -0
  82. package/dist/lualib/5.0/SparseArrayNew.lua +5 -0
  83. package/dist/lualib/5.0/SparseArrayPush.lua +9 -0
  84. package/dist/lualib/5.0/SparseArraySpread.lua +3 -0
  85. package/dist/lualib/5.0/Spread.lua +15 -0
  86. package/dist/lualib/5.0/StringAccess.lua +5 -0
  87. package/dist/lualib/{StringCharAt.lua → 5.0/StringCharAt.lua} +0 -0
  88. package/dist/lualib/{StringCharCodeAt.lua → 5.0/StringCharCodeAt.lua} +0 -0
  89. package/dist/lualib/5.0/StringEndsWith.lua +10 -0
  90. package/dist/lualib/{StringIncludes.lua → 5.0/StringIncludes.lua} +0 -0
  91. package/dist/lualib/5.0/StringPadEnd.lua +26 -0
  92. package/dist/lualib/5.0/StringPadStart.lua +26 -0
  93. package/dist/lualib/{StringReplace.lua → 5.0/StringReplace.lua} +0 -0
  94. package/dist/lualib/5.0/StringReplaceAll.lua +42 -0
  95. package/dist/lualib/{StringSlice.lua → 5.0/StringSlice.lua} +0 -0
  96. package/dist/lualib/5.0/StringSplit.lua +36 -0
  97. package/dist/lualib/5.0/StringStartsWith.lua +10 -0
  98. package/dist/lualib/{StringSubstr.lua → 5.0/StringSubstr.lua} +0 -0
  99. package/dist/lualib/{StringSubstring.lua → 5.0/StringSubstring.lua} +0 -0
  100. package/dist/lualib/{StringTrim.lua → 5.0/StringTrim.lua} +0 -0
  101. package/dist/lualib/{StringTrimEnd.lua → 5.0/StringTrimEnd.lua} +0 -0
  102. package/dist/lualib/{StringTrimStart.lua → 5.0/StringTrimStart.lua} +0 -0
  103. package/dist/lualib/{Symbol.lua → 5.0/Symbol.lua} +0 -0
  104. package/dist/lualib/{SymbolRegistry.lua → 5.0/SymbolRegistry.lua} +0 -0
  105. package/dist/lualib/{TypeOf.lua → 5.0/TypeOf.lua} +0 -0
  106. package/dist/lualib/5.0/Unpack.lua +1 -0
  107. package/dist/lualib/{WeakMap.lua → 5.0/WeakMap.lua} +0 -0
  108. package/dist/lualib/{WeakSet.lua → 5.0/WeakSet.lua} +0 -0
  109. package/dist/lualib/5.0/lualib_bundle.lua +2574 -0
  110. package/dist/lualib/5.0/lualib_module_info.json +672 -0
  111. package/dist/lualib/{ArrayConcat.lua → universal/ArrayConcat.lua} +0 -0
  112. package/dist/lualib/universal/ArrayEntries.lua +13 -0
  113. package/dist/lualib/{ArrayEvery.lua → universal/ArrayEvery.lua} +0 -0
  114. package/dist/lualib/{ArrayFilter.lua → universal/ArrayFilter.lua} +0 -0
  115. package/dist/lualib/{ArrayFind.lua → universal/ArrayFind.lua} +0 -0
  116. package/dist/lualib/{ArrayFindIndex.lua → universal/ArrayFindIndex.lua} +0 -0
  117. package/dist/lualib/{ArrayFlat.lua → universal/ArrayFlat.lua} +0 -0
  118. package/dist/lualib/{ArrayFlatMap.lua → universal/ArrayFlatMap.lua} +0 -0
  119. package/dist/lualib/{ArrayForEach.lua → universal/ArrayForEach.lua} +0 -0
  120. package/dist/lualib/{ArrayFrom.lua → universal/ArrayFrom.lua} +0 -0
  121. package/dist/lualib/{ArrayIncludes.lua → universal/ArrayIncludes.lua} +0 -0
  122. package/dist/lualib/{ArrayIndexOf.lua → universal/ArrayIndexOf.lua} +0 -0
  123. package/dist/lualib/universal/ArrayIsArray.lua +3 -0
  124. package/dist/lualib/{ArrayJoin.lua → universal/ArrayJoin.lua} +0 -0
  125. package/dist/lualib/{ArrayMap.lua → universal/ArrayMap.lua} +0 -0
  126. package/dist/lualib/{ArrayPush.lua → universal/ArrayPush.lua} +0 -0
  127. package/dist/lualib/{ArrayPushArray.lua → universal/ArrayPushArray.lua} +0 -0
  128. package/dist/lualib/{ArrayReduce.lua → universal/ArrayReduce.lua} +1 -1
  129. package/dist/lualib/{ArrayReduceRight.lua → universal/ArrayReduceRight.lua} +1 -1
  130. package/dist/lualib/{ArrayReverse.lua → universal/ArrayReverse.lua} +0 -0
  131. package/dist/lualib/{ArraySetLength.lua → universal/ArraySetLength.lua} +0 -0
  132. package/dist/lualib/{ArraySlice.lua → universal/ArraySlice.lua} +0 -0
  133. package/dist/lualib/{ArraySome.lua → universal/ArraySome.lua} +0 -0
  134. package/dist/lualib/universal/ArraySort.lua +11 -0
  135. package/dist/lualib/{ArraySplice.lua → universal/ArraySplice.lua} +1 -1
  136. package/dist/lualib/{ArrayToObject.lua → universal/ArrayToObject.lua} +0 -0
  137. package/dist/lualib/{ArrayUnshift.lua → universal/ArrayUnshift.lua} +0 -0
  138. package/dist/lualib/universal/Await.lua +54 -0
  139. package/dist/lualib/universal/Class.lua +6 -0
  140. package/dist/lualib/universal/ClassExtends.lua +24 -0
  141. package/dist/lualib/universal/CloneDescriptor.lua +28 -0
  142. package/dist/lualib/universal/CountVarargs.lua +3 -0
  143. package/dist/lualib/{Decorate.lua → universal/Decorate.lua} +0 -0
  144. package/dist/lualib/universal/DecorateParam.lua +3 -0
  145. package/dist/lualib/{DelegatedYield.lua → universal/DelegatedYield.lua} +0 -0
  146. package/dist/lualib/universal/Delete.lua +19 -0
  147. package/dist/lualib/{Error.lua → universal/Error.lua} +7 -2
  148. package/dist/lualib/{FunctionBind.lua → universal/FunctionBind.lua} +0 -0
  149. package/dist/lualib/{Generator.lua → universal/Generator.lua} +2 -9
  150. package/dist/lualib/universal/InstanceOf.lua +18 -0
  151. package/dist/lualib/universal/InstanceOfObject.lua +4 -0
  152. package/dist/lualib/{Iterator.lua → universal/Iterator.lua} +0 -0
  153. package/dist/lualib/{LuaIteratorSpread.lua → universal/LuaIteratorSpread.lua} +0 -0
  154. package/dist/lualib/universal/Map.lua +140 -0
  155. package/dist/lualib/universal/Match.lua +1 -0
  156. package/dist/lualib/universal/MathAtan2.lua +1 -0
  157. package/dist/lualib/universal/MathModf.lua +1 -0
  158. package/dist/lualib/universal/MathSign.lua +8 -0
  159. package/dist/lualib/universal/Modulo50.lua +3 -0
  160. package/dist/lualib/{New.lua → universal/New.lua} +0 -0
  161. package/dist/lualib/{Number.lua → universal/Number.lua} +0 -0
  162. package/dist/lualib/{NumberIsFinite.lua → universal/NumberIsFinite.lua} +0 -0
  163. package/dist/lualib/universal/NumberIsNaN.lua +3 -0
  164. package/dist/lualib/{NumberToString.lua → universal/NumberToString.lua} +1 -1
  165. package/dist/lualib/{ObjectAssign.lua → universal/ObjectAssign.lua} +0 -0
  166. package/dist/lualib/universal/ObjectDefineProperty.lua +59 -0
  167. package/dist/lualib/universal/ObjectEntries.lua +9 -0
  168. package/dist/lualib/universal/ObjectFromEntries.lua +20 -0
  169. package/dist/lualib/universal/ObjectGetOwnPropertyDescriptor.lua +10 -0
  170. package/dist/lualib/universal/ObjectGetOwnPropertyDescriptors.lua +7 -0
  171. package/dist/lualib/universal/ObjectKeys.lua +9 -0
  172. package/dist/lualib/universal/ObjectRest.lua +9 -0
  173. package/dist/lualib/universal/ObjectValues.lua +9 -0
  174. package/dist/lualib/{ParseFloat.lua → universal/ParseFloat.lua} +2 -2
  175. package/dist/lualib/{ParseInt.lua → universal/ParseInt.lua} +7 -7
  176. package/dist/lualib/{Promise.lua → universal/Promise.lua} +0 -0
  177. package/dist/lualib/universal/PromiseAll.lua +44 -0
  178. package/dist/lualib/universal/PromiseAllSettled.lua +48 -0
  179. package/dist/lualib/{PromiseAny.lua → universal/PromiseAny.lua} +0 -0
  180. package/dist/lualib/{PromiseRace.lua → universal/PromiseRace.lua} +0 -0
  181. package/dist/lualib/universal/Set.lua +130 -0
  182. package/dist/lualib/universal/SetDescriptor.lua +79 -0
  183. package/dist/lualib/{SourceMapTraceBack.lua → universal/SourceMapTraceBack.lua} +3 -1
  184. package/dist/lualib/{SparseArrayNew.lua → universal/SparseArrayNew.lua} +1 -1
  185. package/dist/lualib/{SparseArrayPush.lua → universal/SparseArrayPush.lua} +1 -1
  186. package/dist/lualib/{SparseArraySpread.lua → universal/SparseArraySpread.lua} +0 -0
  187. package/dist/lualib/{Spread.lua → universal/Spread.lua} +0 -0
  188. package/dist/lualib/{StringAccess.lua → universal/StringAccess.lua} +0 -0
  189. package/dist/lualib/universal/StringCharAt.lua +9 -0
  190. package/dist/lualib/universal/StringCharCodeAt.lua +13 -0
  191. package/dist/lualib/{StringEndsWith.lua → universal/StringEndsWith.lua} +0 -0
  192. package/dist/lualib/universal/StringIncludes.lua +9 -0
  193. package/dist/lualib/{StringPadEnd.lua → universal/StringPadEnd.lua} +0 -0
  194. package/dist/lualib/{StringPadStart.lua → universal/StringPadStart.lua} +0 -0
  195. package/dist/lualib/universal/StringReplace.lua +20 -0
  196. package/dist/lualib/{StringReplaceAll.lua → universal/StringReplaceAll.lua} +0 -0
  197. package/dist/lualib/universal/StringSlice.lua +15 -0
  198. package/dist/lualib/{StringSplit.lua → universal/StringSplit.lua} +0 -0
  199. package/dist/lualib/{StringStartsWith.lua → universal/StringStartsWith.lua} +0 -0
  200. package/dist/lualib/universal/StringSubstr.lua +15 -0
  201. package/dist/lualib/universal/StringSubstring.lua +17 -0
  202. package/dist/lualib/universal/StringTrim.lua +4 -0
  203. package/dist/lualib/universal/StringTrimEnd.lua +4 -0
  204. package/dist/lualib/universal/StringTrimStart.lua +4 -0
  205. package/dist/lualib/universal/Symbol.lua +15 -0
  206. package/dist/lualib/universal/SymbolRegistry.lua +17 -0
  207. package/dist/lualib/universal/TypeOf.lua +10 -0
  208. package/dist/lualib/{Unpack.lua → universal/Unpack.lua} +0 -0
  209. package/dist/lualib/universal/WeakMap.lua +45 -0
  210. package/dist/lualib/universal/WeakSet.lua +41 -0
  211. package/dist/lualib/{lualib_bundle.lua → universal/lualib_bundle.lua} +53 -37
  212. package/dist/lualib/{lualib_module_info.json → universal/lualib_module_info.json} +49 -4
  213. package/dist/lualib-build/plugin.js +12 -2
  214. package/dist/transformation/builtins/array.d.ts +1 -1
  215. package/dist/transformation/builtins/array.js +12 -2
  216. package/dist/transformation/builtins/function.js +4 -2
  217. package/dist/transformation/builtins/index.js +11 -3
  218. package/dist/transformation/builtins/string.d.ts +1 -1
  219. package/dist/transformation/builtins/string.js +8 -1
  220. package/dist/transformation/utils/diagnostics.d.ts +5 -4
  221. package/dist/transformation/utils/diagnostics.js +2 -1
  222. package/dist/transformation/utils/lua-ast.js +3 -1
  223. package/dist/transformation/utils/typescript/index.js +2 -2
  224. package/dist/transformation/visitors/access.js +11 -0
  225. package/dist/transformation/visitors/binary-expression/bit.js +4 -2
  226. package/dist/transformation/visitors/binary-expression/index.js +4 -0
  227. package/dist/transformation/visitors/break-continue.js +4 -2
  228. package/dist/transformation/visitors/class/index.js +9 -4
  229. package/dist/transformation/visitors/class/members/fields.js +6 -2
  230. package/dist/transformation/visitors/class/members/method.js +4 -2
  231. package/dist/transformation/visitors/conditional.d.ts +1 -0
  232. package/dist/transformation/visitors/conditional.js +12 -1
  233. package/dist/transformation/visitors/errors.js +4 -2
  234. package/dist/transformation/visitors/function.js +2 -1
  235. package/dist/transformation/visitors/identifier.js +4 -1
  236. package/dist/transformation/visitors/language-extensions/operators.js +2 -1
  237. package/dist/transformation/visitors/literal.js +12 -4
  238. package/dist/transformation/visitors/loops/do-while.js +5 -0
  239. package/dist/transformation/visitors/modules/export.js +1 -1
  240. package/dist/transformation/visitors/spread.js +4 -1
  241. package/dist/transformation/visitors/typescript.js +1 -0
  242. package/dist/transpilation/bundle.js +15 -6
  243. package/dist/transpilation/resolve.js +3 -3
  244. package/dist/transpilation/transpiler.js +3 -1
  245. package/package.json +18 -18
  246. package/language-extensions/index.d.ts +0 -676
@@ -43,6 +43,7 @@ export declare enum LuaLibImportKind {
43
43
  }
44
44
  export declare enum LuaTarget {
45
45
  Universal = "universal",
46
+ Lua50 = "5.0",
46
47
  Lua51 = "5.1",
47
48
  Lua52 = "5.2",
48
49
  Lua53 = "5.3",
@@ -12,6 +12,7 @@ var LuaLibImportKind;
12
12
  var LuaTarget;
13
13
  (function (LuaTarget) {
14
14
  LuaTarget["Universal"] = "universal";
15
+ LuaTarget["Lua50"] = "5.0";
15
16
  LuaTarget["Lua51"] = "5.1";
16
17
  LuaTarget["Lua52"] = "5.2";
17
18
  LuaTarget["Lua53"] = "5.3";
package/dist/LuaAST.d.ts CHANGED
@@ -20,42 +20,43 @@ export declare enum SyntaxKind {
20
20
  NumericLiteral = 16,
21
21
  NilKeyword = 17,
22
22
  DotsKeyword = 18,
23
- TrueKeyword = 19,
24
- FalseKeyword = 20,
25
- FunctionExpression = 21,
26
- TableFieldExpression = 22,
27
- TableExpression = 23,
28
- UnaryExpression = 24,
29
- BinaryExpression = 25,
30
- CallExpression = 26,
31
- MethodCallExpression = 27,
32
- Identifier = 28,
33
- TableIndexExpression = 29,
34
- AdditionOperator = 30,
35
- SubtractionOperator = 31,
36
- MultiplicationOperator = 32,
37
- DivisionOperator = 33,
38
- FloorDivisionOperator = 34,
39
- ModuloOperator = 35,
40
- PowerOperator = 36,
41
- NegationOperator = 37,
42
- ConcatOperator = 38,
43
- LengthOperator = 39,
44
- EqualityOperator = 40,
45
- InequalityOperator = 41,
46
- LessThanOperator = 42,
47
- LessEqualOperator = 43,
48
- GreaterThanOperator = 44,
49
- GreaterEqualOperator = 45,
50
- AndOperator = 46,
51
- OrOperator = 47,
52
- NotOperator = 48,
53
- BitwiseAndOperator = 49,
54
- BitwiseOrOperator = 50,
55
- BitwiseExclusiveOrOperator = 51,
56
- BitwiseRightShiftOperator = 52,
57
- BitwiseLeftShiftOperator = 53,
58
- BitwiseNotOperator = 54
23
+ ArgKeyword = 19,
24
+ TrueKeyword = 20,
25
+ FalseKeyword = 21,
26
+ FunctionExpression = 22,
27
+ TableFieldExpression = 23,
28
+ TableExpression = 24,
29
+ UnaryExpression = 25,
30
+ BinaryExpression = 26,
31
+ CallExpression = 27,
32
+ MethodCallExpression = 28,
33
+ Identifier = 29,
34
+ TableIndexExpression = 30,
35
+ AdditionOperator = 31,
36
+ SubtractionOperator = 32,
37
+ MultiplicationOperator = 33,
38
+ DivisionOperator = 34,
39
+ FloorDivisionOperator = 35,
40
+ ModuloOperator = 36,
41
+ PowerOperator = 37,
42
+ NegationOperator = 38,
43
+ ConcatOperator = 39,
44
+ LengthOperator = 40,
45
+ EqualityOperator = 41,
46
+ InequalityOperator = 42,
47
+ LessThanOperator = 43,
48
+ LessEqualOperator = 44,
49
+ GreaterThanOperator = 45,
50
+ GreaterEqualOperator = 46,
51
+ AndOperator = 47,
52
+ OrOperator = 48,
53
+ NotOperator = 49,
54
+ BitwiseAndOperator = 50,
55
+ BitwiseOrOperator = 51,
56
+ BitwiseExclusiveOrOperator = 52,
57
+ BitwiseRightShiftOperator = 53,
58
+ BitwiseLeftShiftOperator = 54,
59
+ BitwiseNotOperator = 55
59
60
  }
60
61
  export declare type UnaryBitwiseOperator = SyntaxKind.BitwiseNotOperator;
61
62
  export declare type UnaryOperator = SyntaxKind.NegationOperator | SyntaxKind.LengthOperator | SyntaxKind.NotOperator | UnaryBitwiseOperator;
@@ -212,6 +213,11 @@ export interface DotsLiteral extends Expression {
212
213
  }
213
214
  export declare function isDotsLiteral(node: Node): node is DotsLiteral;
214
215
  export declare function createDotsLiteral(tsOriginal?: ts.Node): DotsLiteral;
216
+ export interface ArgLiteral extends Expression {
217
+ kind: SyntaxKind.ArgKeyword;
218
+ }
219
+ export declare function isArgLiteral(node: Node): node is ArgLiteral;
220
+ export declare function createArgLiteral(tsOriginal?: ts.Node): ArgLiteral;
215
221
  export interface NumericLiteral extends Expression {
216
222
  kind: SyntaxKind.NumericLiteral;
217
223
  value: number;
@@ -224,7 +230,7 @@ export interface StringLiteral extends Expression {
224
230
  }
225
231
  export declare function isStringLiteral(node: Node): node is StringLiteral;
226
232
  export declare function createStringLiteral(value: string, tsOriginal?: ts.Node): StringLiteral;
227
- export declare function isLiteral(node: Node): node is NilLiteral | DotsLiteral | BooleanLiteral | NumericLiteral | StringLiteral;
233
+ export declare function isLiteral(node: Node): node is NilLiteral | DotsLiteral | ArgLiteral | BooleanLiteral | NumericLiteral | StringLiteral;
228
234
  export interface FunctionExpression extends Expression {
229
235
  kind: SyntaxKind.FunctionExpression;
230
236
  params?: Identifier[];
package/dist/LuaAST.js CHANGED
@@ -2,8 +2,8 @@
2
2
  // Simplified Lua AST based roughly on http://lua-users.org/wiki/MetaLuaAbstractSyntaxTree,
3
3
  // https://www.lua.org/manual/5.3/manual.html#9 and the TS AST implementation
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.isLiteral = exports.createStringLiteral = exports.isStringLiteral = exports.createNumericLiteral = exports.isNumericLiteral = exports.createDotsLiteral = exports.isDotsLiteral = exports.createBooleanLiteral = exports.isBooleanLiteral = exports.createNilLiteral = exports.isNilLiteral = exports.createExpressionStatement = exports.isExpressionStatement = exports.createBreakStatement = exports.isBreakStatement = exports.createReturnStatement = exports.isReturnStatement = exports.createLabelStatement = exports.isLabelStatement = exports.createGotoStatement = exports.isGotoStatement = exports.createForInStatement = exports.isForInStatement = exports.createForStatement = exports.isForStatement = exports.createRepeatStatement = exports.isRepeatStatement = exports.createWhileStatement = exports.isWhileStatement = exports.isIterationStatement = exports.createIfStatement = exports.isIfStatement = exports.createAssignmentStatement = exports.isAssignmentStatement = exports.createVariableDeclarationStatement = exports.isVariableDeclarationStatement = exports.createDoStatement = exports.isDoStatement = exports.createBlock = exports.isBlock = exports.createFile = exports.isFile = exports.setNodeFlags = exports.getOriginalPos = exports.setNodeOriginal = exports.setNodePosition = exports.cloneNode = exports.createNode = exports.NodeFlags = exports.SyntaxKind = void 0;
6
- exports.isInlineFunctionExpression = exports.isFunctionDefinition = exports.isAssignmentLeftHandSideExpression = exports.createTableIndexExpression = exports.isTableIndexExpression = exports.createAnonymousIdentifier = exports.cloneIdentifier = exports.createIdentifier = exports.isIdentifier = exports.createMethodCallExpression = exports.isMethodCallExpression = exports.createCallExpression = exports.isCallExpression = exports.createBinaryExpression = exports.isBinaryExpression = exports.createUnaryExpression = exports.isUnaryExpression = exports.createTableExpression = exports.isTableExpression = exports.createTableFieldExpression = exports.isTableFieldExpression = exports.createFunctionExpression = exports.isFunctionExpression = void 0;
5
+ exports.isStringLiteral = exports.createNumericLiteral = exports.isNumericLiteral = exports.createArgLiteral = exports.isArgLiteral = exports.createDotsLiteral = exports.isDotsLiteral = exports.createBooleanLiteral = exports.isBooleanLiteral = exports.createNilLiteral = exports.isNilLiteral = exports.createExpressionStatement = exports.isExpressionStatement = exports.createBreakStatement = exports.isBreakStatement = exports.createReturnStatement = exports.isReturnStatement = exports.createLabelStatement = exports.isLabelStatement = exports.createGotoStatement = exports.isGotoStatement = exports.createForInStatement = exports.isForInStatement = exports.createForStatement = exports.isForStatement = exports.createRepeatStatement = exports.isRepeatStatement = exports.createWhileStatement = exports.isWhileStatement = exports.isIterationStatement = exports.createIfStatement = exports.isIfStatement = exports.createAssignmentStatement = exports.isAssignmentStatement = exports.createVariableDeclarationStatement = exports.isVariableDeclarationStatement = exports.createDoStatement = exports.isDoStatement = exports.createBlock = exports.isBlock = exports.createFile = exports.isFile = exports.setNodeFlags = exports.getOriginalPos = exports.setNodeOriginal = exports.setNodePosition = exports.cloneNode = exports.createNode = exports.NodeFlags = exports.SyntaxKind = void 0;
6
+ exports.isInlineFunctionExpression = exports.isFunctionDefinition = exports.isAssignmentLeftHandSideExpression = exports.createTableIndexExpression = exports.isTableIndexExpression = exports.createAnonymousIdentifier = exports.cloneIdentifier = exports.createIdentifier = exports.isIdentifier = exports.createMethodCallExpression = exports.isMethodCallExpression = exports.createCallExpression = exports.isCallExpression = exports.createBinaryExpression = exports.isBinaryExpression = exports.createUnaryExpression = exports.isUnaryExpression = exports.createTableExpression = exports.isTableExpression = exports.createTableFieldExpression = exports.isTableFieldExpression = exports.createFunctionExpression = exports.isFunctionExpression = exports.isLiteral = exports.createStringLiteral = void 0;
7
7
  // We can elide a lot of nodes especially tokens and keywords
8
8
  // because we don't create the AST from text
9
9
  const ts = require("typescript");
@@ -31,51 +31,52 @@ var SyntaxKind;
31
31
  SyntaxKind[SyntaxKind["NumericLiteral"] = 16] = "NumericLiteral";
32
32
  SyntaxKind[SyntaxKind["NilKeyword"] = 17] = "NilKeyword";
33
33
  SyntaxKind[SyntaxKind["DotsKeyword"] = 18] = "DotsKeyword";
34
- SyntaxKind[SyntaxKind["TrueKeyword"] = 19] = "TrueKeyword";
35
- SyntaxKind[SyntaxKind["FalseKeyword"] = 20] = "FalseKeyword";
36
- SyntaxKind[SyntaxKind["FunctionExpression"] = 21] = "FunctionExpression";
37
- SyntaxKind[SyntaxKind["TableFieldExpression"] = 22] = "TableFieldExpression";
38
- SyntaxKind[SyntaxKind["TableExpression"] = 23] = "TableExpression";
39
- SyntaxKind[SyntaxKind["UnaryExpression"] = 24] = "UnaryExpression";
40
- SyntaxKind[SyntaxKind["BinaryExpression"] = 25] = "BinaryExpression";
41
- SyntaxKind[SyntaxKind["CallExpression"] = 26] = "CallExpression";
42
- SyntaxKind[SyntaxKind["MethodCallExpression"] = 27] = "MethodCallExpression";
43
- SyntaxKind[SyntaxKind["Identifier"] = 28] = "Identifier";
44
- SyntaxKind[SyntaxKind["TableIndexExpression"] = 29] = "TableIndexExpression";
34
+ SyntaxKind[SyntaxKind["ArgKeyword"] = 19] = "ArgKeyword";
35
+ SyntaxKind[SyntaxKind["TrueKeyword"] = 20] = "TrueKeyword";
36
+ SyntaxKind[SyntaxKind["FalseKeyword"] = 21] = "FalseKeyword";
37
+ SyntaxKind[SyntaxKind["FunctionExpression"] = 22] = "FunctionExpression";
38
+ SyntaxKind[SyntaxKind["TableFieldExpression"] = 23] = "TableFieldExpression";
39
+ SyntaxKind[SyntaxKind["TableExpression"] = 24] = "TableExpression";
40
+ SyntaxKind[SyntaxKind["UnaryExpression"] = 25] = "UnaryExpression";
41
+ SyntaxKind[SyntaxKind["BinaryExpression"] = 26] = "BinaryExpression";
42
+ SyntaxKind[SyntaxKind["CallExpression"] = 27] = "CallExpression";
43
+ SyntaxKind[SyntaxKind["MethodCallExpression"] = 28] = "MethodCallExpression";
44
+ SyntaxKind[SyntaxKind["Identifier"] = 29] = "Identifier";
45
+ SyntaxKind[SyntaxKind["TableIndexExpression"] = 30] = "TableIndexExpression";
45
46
  // Operators
46
47
  // Arithmetic
47
- SyntaxKind[SyntaxKind["AdditionOperator"] = 30] = "AdditionOperator";
48
- SyntaxKind[SyntaxKind["SubtractionOperator"] = 31] = "SubtractionOperator";
49
- SyntaxKind[SyntaxKind["MultiplicationOperator"] = 32] = "MultiplicationOperator";
50
- SyntaxKind[SyntaxKind["DivisionOperator"] = 33] = "DivisionOperator";
51
- SyntaxKind[SyntaxKind["FloorDivisionOperator"] = 34] = "FloorDivisionOperator";
52
- SyntaxKind[SyntaxKind["ModuloOperator"] = 35] = "ModuloOperator";
53
- SyntaxKind[SyntaxKind["PowerOperator"] = 36] = "PowerOperator";
54
- SyntaxKind[SyntaxKind["NegationOperator"] = 37] = "NegationOperator";
48
+ SyntaxKind[SyntaxKind["AdditionOperator"] = 31] = "AdditionOperator";
49
+ SyntaxKind[SyntaxKind["SubtractionOperator"] = 32] = "SubtractionOperator";
50
+ SyntaxKind[SyntaxKind["MultiplicationOperator"] = 33] = "MultiplicationOperator";
51
+ SyntaxKind[SyntaxKind["DivisionOperator"] = 34] = "DivisionOperator";
52
+ SyntaxKind[SyntaxKind["FloorDivisionOperator"] = 35] = "FloorDivisionOperator";
53
+ SyntaxKind[SyntaxKind["ModuloOperator"] = 36] = "ModuloOperator";
54
+ SyntaxKind[SyntaxKind["PowerOperator"] = 37] = "PowerOperator";
55
+ SyntaxKind[SyntaxKind["NegationOperator"] = 38] = "NegationOperator";
55
56
  // Concat
56
- SyntaxKind[SyntaxKind["ConcatOperator"] = 38] = "ConcatOperator";
57
+ SyntaxKind[SyntaxKind["ConcatOperator"] = 39] = "ConcatOperator";
57
58
  // Length
58
- SyntaxKind[SyntaxKind["LengthOperator"] = 39] = "LengthOperator";
59
+ SyntaxKind[SyntaxKind["LengthOperator"] = 40] = "LengthOperator";
59
60
  // Relational Ops
60
- SyntaxKind[SyntaxKind["EqualityOperator"] = 40] = "EqualityOperator";
61
- SyntaxKind[SyntaxKind["InequalityOperator"] = 41] = "InequalityOperator";
62
- SyntaxKind[SyntaxKind["LessThanOperator"] = 42] = "LessThanOperator";
63
- SyntaxKind[SyntaxKind["LessEqualOperator"] = 43] = "LessEqualOperator";
61
+ SyntaxKind[SyntaxKind["EqualityOperator"] = 41] = "EqualityOperator";
62
+ SyntaxKind[SyntaxKind["InequalityOperator"] = 42] = "InequalityOperator";
63
+ SyntaxKind[SyntaxKind["LessThanOperator"] = 43] = "LessThanOperator";
64
+ SyntaxKind[SyntaxKind["LessEqualOperator"] = 44] = "LessEqualOperator";
64
65
  // Syntax Sugar `x > y` <=> `not (y <= x)`
65
66
  // but we should probably use them to make the output code more readable
66
- SyntaxKind[SyntaxKind["GreaterThanOperator"] = 44] = "GreaterThanOperator";
67
- SyntaxKind[SyntaxKind["GreaterEqualOperator"] = 45] = "GreaterEqualOperator";
67
+ SyntaxKind[SyntaxKind["GreaterThanOperator"] = 45] = "GreaterThanOperator";
68
+ SyntaxKind[SyntaxKind["GreaterEqualOperator"] = 46] = "GreaterEqualOperator";
68
69
  // Logical
69
- SyntaxKind[SyntaxKind["AndOperator"] = 46] = "AndOperator";
70
- SyntaxKind[SyntaxKind["OrOperator"] = 47] = "OrOperator";
71
- SyntaxKind[SyntaxKind["NotOperator"] = 48] = "NotOperator";
70
+ SyntaxKind[SyntaxKind["AndOperator"] = 47] = "AndOperator";
71
+ SyntaxKind[SyntaxKind["OrOperator"] = 48] = "OrOperator";
72
+ SyntaxKind[SyntaxKind["NotOperator"] = 49] = "NotOperator";
72
73
  // Bitwise
73
- SyntaxKind[SyntaxKind["BitwiseAndOperator"] = 49] = "BitwiseAndOperator";
74
- SyntaxKind[SyntaxKind["BitwiseOrOperator"] = 50] = "BitwiseOrOperator";
75
- SyntaxKind[SyntaxKind["BitwiseExclusiveOrOperator"] = 51] = "BitwiseExclusiveOrOperator";
76
- SyntaxKind[SyntaxKind["BitwiseRightShiftOperator"] = 52] = "BitwiseRightShiftOperator";
77
- SyntaxKind[SyntaxKind["BitwiseLeftShiftOperator"] = 53] = "BitwiseLeftShiftOperator";
78
- SyntaxKind[SyntaxKind["BitwiseNotOperator"] = 54] = "BitwiseNotOperator";
74
+ SyntaxKind[SyntaxKind["BitwiseAndOperator"] = 50] = "BitwiseAndOperator";
75
+ SyntaxKind[SyntaxKind["BitwiseOrOperator"] = 51] = "BitwiseOrOperator";
76
+ SyntaxKind[SyntaxKind["BitwiseExclusiveOrOperator"] = 52] = "BitwiseExclusiveOrOperator";
77
+ SyntaxKind[SyntaxKind["BitwiseRightShiftOperator"] = 53] = "BitwiseRightShiftOperator";
78
+ SyntaxKind[SyntaxKind["BitwiseLeftShiftOperator"] = 54] = "BitwiseLeftShiftOperator";
79
+ SyntaxKind[SyntaxKind["BitwiseNotOperator"] = 55] = "BitwiseNotOperator";
79
80
  })(SyntaxKind = exports.SyntaxKind || (exports.SyntaxKind = {}));
80
81
  var NodeFlags;
81
82
  (function (NodeFlags) {
@@ -330,6 +331,14 @@ function createDotsLiteral(tsOriginal) {
330
331
  return createNode(SyntaxKind.DotsKeyword, tsOriginal);
331
332
  }
332
333
  exports.createDotsLiteral = createDotsLiteral;
334
+ function isArgLiteral(node) {
335
+ return node.kind === SyntaxKind.ArgKeyword;
336
+ }
337
+ exports.isArgLiteral = isArgLiteral;
338
+ function createArgLiteral(tsOriginal) {
339
+ return createNode(SyntaxKind.ArgKeyword, tsOriginal);
340
+ }
341
+ exports.createArgLiteral = createArgLiteral;
333
342
  function isNumericLiteral(node) {
334
343
  return node.kind === SyntaxKind.NumericLiteral;
335
344
  }
@@ -353,6 +362,7 @@ exports.createStringLiteral = createStringLiteral;
353
362
  function isLiteral(node) {
354
363
  return (isNilLiteral(node) ||
355
364
  isDotsLiteral(node) ||
365
+ isArgLiteral(node) ||
356
366
  isBooleanLiteral(node) ||
357
367
  isNumericLiteral(node) ||
358
368
  isStringLiteral(node));
package/dist/LuaLib.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { EmitHost } from "./transpilation";
2
2
  import * as lua from "./LuaAST";
3
+ import { LuaTarget } from "./CompilerOptions";
3
4
  export declare enum LuaLibFeature {
4
5
  ArrayConcat = "ArrayConcat",
5
6
  ArrayEntries = "ArrayEntries",
@@ -32,6 +33,7 @@ export declare enum LuaLibFeature {
32
33
  Class = "Class",
33
34
  ClassExtends = "ClassExtends",
34
35
  CloneDescriptor = "CloneDescriptor",
36
+ CountVarargs = "CountVarargs",
35
37
  Decorate = "Decorate",
36
38
  DecorateParam = "DecorateParam",
37
39
  Delete = "Delete",
@@ -44,8 +46,11 @@ export declare enum LuaLibFeature {
44
46
  Iterator = "Iterator",
45
47
  LuaIteratorSpread = "LuaIteratorSpread",
46
48
  Map = "Map",
49
+ Match = "Match",
47
50
  MathAtan2 = "MathAtan2",
51
+ MathModf = "MathModf",
48
52
  MathSign = "MathSign",
53
+ Modulo50 = "Modulo50",
49
54
  New = "New",
50
55
  Number = "Number",
51
56
  NumberIsFinite = "NumberIsFinite",
@@ -103,10 +108,11 @@ export interface LuaLibFeatureInfo {
103
108
  exports: string[];
104
109
  }
105
110
  export declare type LuaLibModulesInfo = Record<LuaLibFeature, LuaLibFeatureInfo>;
111
+ export declare function resolveLuaLibDir(luaTarget: LuaTarget): string;
106
112
  export declare const luaLibModulesInfoFileName = "lualib_module_info.json";
107
- export declare function getLuaLibModulesInfo(emitHost: EmitHost): LuaLibModulesInfo;
108
- export declare function readLuaLibFeature(feature: LuaLibFeature, emitHost: EmitHost): string;
109
- export declare function resolveRecursiveLualibFeatures(features: Iterable<LuaLibFeature>, emitHost: EmitHost, luaLibModulesInfo?: LuaLibModulesInfo): LuaLibFeature[];
110
- export declare function loadInlineLualibFeatures(features: Iterable<LuaLibFeature>, emitHost: EmitHost): string;
111
- export declare function loadImportedLualibFeatures(features: Iterable<LuaLibFeature>, emitHost: EmitHost): lua.Statement[];
112
- export declare function getLuaLibBundle(emitHost: EmitHost): string;
113
+ export declare function getLuaLibModulesInfo(luaTarget: LuaTarget, emitHost: EmitHost): LuaLibModulesInfo;
114
+ export declare function readLuaLibFeature(feature: LuaLibFeature, luaTarget: LuaTarget, emitHost: EmitHost): string;
115
+ export declare function resolveRecursiveLualibFeatures(features: Iterable<LuaLibFeature>, luaTarget: LuaTarget, emitHost: EmitHost, luaLibModulesInfo?: LuaLibModulesInfo): LuaLibFeature[];
116
+ export declare function loadInlineLualibFeatures(features: Iterable<LuaLibFeature>, luaTarget: LuaTarget, emitHost: EmitHost): string;
117
+ export declare function loadImportedLualibFeatures(features: Iterable<LuaLibFeature>, luaTarget: LuaTarget, emitHost: EmitHost): lua.Statement[];
118
+ export declare function getLuaLibBundle(luaTarget: LuaTarget, emitHost: EmitHost): string;
package/dist/LuaLib.js CHANGED
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLuaLibBundle = exports.loadImportedLualibFeatures = exports.loadInlineLualibFeatures = exports.resolveRecursiveLualibFeatures = exports.readLuaLibFeature = exports.getLuaLibModulesInfo = exports.luaLibModulesInfoFileName = exports.LuaLibFeature = void 0;
3
+ exports.getLuaLibBundle = exports.loadImportedLualibFeatures = exports.loadInlineLualibFeatures = exports.resolveRecursiveLualibFeatures = exports.readLuaLibFeature = exports.getLuaLibModulesInfo = exports.luaLibModulesInfoFileName = exports.resolveLuaLibDir = exports.LuaLibFeature = void 0;
4
4
  const path = require("path");
5
5
  const lua = require("./LuaAST");
6
+ const CompilerOptions_1 = require("./CompilerOptions");
6
7
  var LuaLibFeature;
7
8
  (function (LuaLibFeature) {
8
9
  LuaLibFeature["ArrayConcat"] = "ArrayConcat";
@@ -36,6 +37,7 @@ var LuaLibFeature;
36
37
  LuaLibFeature["Class"] = "Class";
37
38
  LuaLibFeature["ClassExtends"] = "ClassExtends";
38
39
  LuaLibFeature["CloneDescriptor"] = "CloneDescriptor";
40
+ LuaLibFeature["CountVarargs"] = "CountVarargs";
39
41
  LuaLibFeature["Decorate"] = "Decorate";
40
42
  LuaLibFeature["DecorateParam"] = "DecorateParam";
41
43
  LuaLibFeature["Delete"] = "Delete";
@@ -48,8 +50,11 @@ var LuaLibFeature;
48
50
  LuaLibFeature["Iterator"] = "Iterator";
49
51
  LuaLibFeature["LuaIteratorSpread"] = "LuaIteratorSpread";
50
52
  LuaLibFeature["Map"] = "Map";
53
+ LuaLibFeature["Match"] = "Match";
51
54
  LuaLibFeature["MathAtan2"] = "MathAtan2";
55
+ LuaLibFeature["MathModf"] = "MathModf";
52
56
  LuaLibFeature["MathSign"] = "MathSign";
57
+ LuaLibFeature["Modulo50"] = "Modulo50";
53
58
  LuaLibFeature["New"] = "New";
54
59
  LuaLibFeature["Number"] = "Number";
55
60
  LuaLibFeature["NumberIsFinite"] = "NumberIsFinite";
@@ -102,24 +107,29 @@ var LuaLibFeature;
102
107
  LuaLibFeature["TypeOf"] = "TypeOf";
103
108
  LuaLibFeature["Unpack"] = "Unpack";
104
109
  })(LuaLibFeature = exports.LuaLibFeature || (exports.LuaLibFeature = {}));
110
+ function resolveLuaLibDir(luaTarget) {
111
+ const luaLibDir = luaTarget === CompilerOptions_1.LuaTarget.Lua50 ? "5.0" : "universal";
112
+ return path.resolve(__dirname, path.join("..", "dist", "lualib", luaLibDir));
113
+ }
114
+ exports.resolveLuaLibDir = resolveLuaLibDir;
105
115
  exports.luaLibModulesInfoFileName = "lualib_module_info.json";
106
- let luaLibModulesInfo;
107
- function getLuaLibModulesInfo(emitHost) {
108
- if (luaLibModulesInfo === undefined) {
109
- const lualibPath = path.resolve(__dirname, `../dist/lualib/${exports.luaLibModulesInfoFileName}`);
116
+ const luaLibModulesInfo = new Map();
117
+ function getLuaLibModulesInfo(luaTarget, emitHost) {
118
+ const lualibPath = path.join(resolveLuaLibDir(luaTarget), exports.luaLibModulesInfoFileName);
119
+ if (!luaLibModulesInfo.has(lualibPath)) {
110
120
  const result = emitHost.readFile(lualibPath);
111
121
  if (result !== undefined) {
112
- luaLibModulesInfo = JSON.parse(result);
122
+ luaLibModulesInfo.set(lualibPath, JSON.parse(result));
113
123
  }
114
124
  else {
115
125
  throw new Error(`Could not load lualib dependencies from '${lualibPath}'`);
116
126
  }
117
127
  }
118
- return luaLibModulesInfo;
128
+ return luaLibModulesInfo.get(lualibPath);
119
129
  }
120
130
  exports.getLuaLibModulesInfo = getLuaLibModulesInfo;
121
- function readLuaLibFeature(feature, emitHost) {
122
- const featurePath = path.resolve(__dirname, `../dist/lualib/${feature}.lua`);
131
+ function readLuaLibFeature(feature, luaTarget, emitHost) {
132
+ const featurePath = path.join(resolveLuaLibDir(luaTarget), `${feature}.lua`);
123
133
  const luaLibFeature = emitHost.readFile(featurePath);
124
134
  if (luaLibFeature === undefined) {
125
135
  throw new Error(`Could not load lualib feature from '${featurePath}'`);
@@ -127,7 +137,7 @@ function readLuaLibFeature(feature, emitHost) {
127
137
  return luaLibFeature;
128
138
  }
129
139
  exports.readLuaLibFeature = readLuaLibFeature;
130
- function resolveRecursiveLualibFeatures(features, emitHost, luaLibModulesInfo = getLuaLibModulesInfo(emitHost)) {
140
+ function resolveRecursiveLualibFeatures(features, luaTarget, emitHost, luaLibModulesInfo = getLuaLibModulesInfo(luaTarget, emitHost)) {
131
141
  const loadedFeatures = new Set();
132
142
  const result = [];
133
143
  function load(feature) {
@@ -147,17 +157,17 @@ function resolveRecursiveLualibFeatures(features, emitHost, luaLibModulesInfo =
147
157
  return result;
148
158
  }
149
159
  exports.resolveRecursiveLualibFeatures = resolveRecursiveLualibFeatures;
150
- function loadInlineLualibFeatures(features, emitHost) {
160
+ function loadInlineLualibFeatures(features, luaTarget, emitHost) {
151
161
  let result = "";
152
- for (const feature of resolveRecursiveLualibFeatures(features, emitHost)) {
153
- const luaLibFeature = readLuaLibFeature(feature, emitHost);
162
+ for (const feature of resolveRecursiveLualibFeatures(features, luaTarget, emitHost)) {
163
+ const luaLibFeature = readLuaLibFeature(feature, luaTarget, emitHost);
154
164
  result += luaLibFeature + "\n";
155
165
  }
156
166
  return result;
157
167
  }
158
168
  exports.loadInlineLualibFeatures = loadInlineLualibFeatures;
159
- function loadImportedLualibFeatures(features, emitHost) {
160
- const luaLibModuleInfo = getLuaLibModulesInfo(emitHost);
169
+ function loadImportedLualibFeatures(features, luaTarget, emitHost) {
170
+ const luaLibModuleInfo = getLuaLibModulesInfo(luaTarget, emitHost);
161
171
  const imports = Array.from(features).flatMap(feature => luaLibModuleInfo[feature].exports);
162
172
  const requireCall = lua.createCallExpression(lua.createIdentifier("require"), [
163
173
  lua.createStringLiteral("lualib_bundle"),
@@ -175,19 +185,19 @@ function loadImportedLualibFeatures(features, emitHost) {
175
185
  return statements;
176
186
  }
177
187
  exports.loadImportedLualibFeatures = loadImportedLualibFeatures;
178
- let luaLibBundleContent;
179
- function getLuaLibBundle(emitHost) {
180
- if (luaLibBundleContent === undefined) {
181
- const lualibPath = path.resolve(__dirname, "../dist/lualib/lualib_bundle.lua");
188
+ const luaLibBundleContent = new Map();
189
+ function getLuaLibBundle(luaTarget, emitHost) {
190
+ const lualibPath = path.join(resolveLuaLibDir(luaTarget), "lualib_bundle.lua");
191
+ if (!luaLibBundleContent.has(lualibPath)) {
182
192
  const result = emitHost.readFile(lualibPath);
183
193
  if (result !== undefined) {
184
- luaLibBundleContent = result;
194
+ luaLibBundleContent.set(lualibPath, result);
185
195
  }
186
196
  else {
187
197
  throw new Error(`Could not load lualib bundle from '${lualibPath}'`);
188
198
  }
189
199
  }
190
- return luaLibBundleContent;
200
+ return luaLibBundleContent.get(lualibPath);
191
201
  }
192
202
  exports.getLuaLibBundle = getLuaLibBundle;
193
203
  //# sourceMappingURL=LuaLib.js.map
@@ -60,6 +60,7 @@ export declare class LuaPrinter {
60
60
  printNumericLiteral(expression: lua.NumericLiteral): SourceNode;
61
61
  printNilLiteral(expression: lua.NilLiteral): SourceNode;
62
62
  printDotsLiteral(expression: lua.DotsLiteral): SourceNode;
63
+ printArgLiteral(expression: lua.ArgLiteral): SourceNode;
63
64
  printBooleanLiteral(expression: lua.BooleanLiteral): SourceNode;
64
65
  private printFunctionParameters;
65
66
  printFunctionExpression(expression: lua.FunctionExpression): SourceNode;
@@ -128,20 +128,21 @@ class LuaPrinter {
128
128
  return `__TS__SourceMapTraceBack(debug.getinfo(1).short_src, ${mapString});`;
129
129
  }
130
130
  printFile(file) {
131
- var _a;
131
+ var _a, _b;
132
132
  let sourceChunks = [file.trivia];
133
133
  if (!this.options.noHeader) {
134
134
  sourceChunks.push(exports.tstlHeader);
135
135
  }
136
- const luaLibImport = (_a = this.options.luaLibImport) !== null && _a !== void 0 ? _a : CompilerOptions_1.LuaLibImportKind.Require;
136
+ const luaTarget = (_a = this.options.luaTarget) !== null && _a !== void 0 ? _a : CompilerOptions_1.LuaTarget.Universal;
137
+ const luaLibImport = (_b = this.options.luaLibImport) !== null && _b !== void 0 ? _b : CompilerOptions_1.LuaLibImportKind.Require;
137
138
  if (luaLibImport === CompilerOptions_1.LuaLibImportKind.Require && file.luaLibFeatures.size > 0) {
138
139
  // Import lualib features
139
- sourceChunks = this.printStatementArray((0, LuaLib_1.loadImportedLualibFeatures)(file.luaLibFeatures, this.emitHost));
140
+ sourceChunks = this.printStatementArray((0, LuaLib_1.loadImportedLualibFeatures)(file.luaLibFeatures, luaTarget, this.emitHost));
140
141
  }
141
142
  else if (luaLibImport === CompilerOptions_1.LuaLibImportKind.Inline && file.luaLibFeatures.size > 0) {
142
143
  // Inline lualib features
143
144
  sourceChunks.push("-- Lua Library inline imports\n");
144
- sourceChunks.push((0, LuaLib_1.loadInlineLualibFeatures)(file.luaLibFeatures, this.emitHost));
145
+ sourceChunks.push((0, LuaLib_1.loadInlineLualibFeatures)(file.luaLibFeatures, luaTarget, this.emitHost));
145
146
  sourceChunks.push("-- End of Lua Library inline imports\n");
146
147
  }
147
148
  if (this.options.sourceMapTraceback && !(0, CompilerOptions_1.isBundleEnabled)(this.options)) {
@@ -405,6 +406,8 @@ class LuaPrinter {
405
406
  return this.printNilLiteral(expression);
406
407
  case lua.SyntaxKind.DotsKeyword:
407
408
  return this.printDotsLiteral(expression);
409
+ case lua.SyntaxKind.ArgKeyword:
410
+ return this.printArgLiteral(expression);
408
411
  case lua.SyntaxKind.TrueKeyword:
409
412
  case lua.SyntaxKind.FalseKeyword:
410
413
  return this.printBooleanLiteral(expression);
@@ -442,6 +445,9 @@ class LuaPrinter {
442
445
  printDotsLiteral(expression) {
443
446
  return this.createSourceNode(expression, "...");
444
447
  }
448
+ printArgLiteral(expression) {
449
+ return this.createSourceNode(expression, "arg");
450
+ }
445
451
  printBooleanLiteral(expression) {
446
452
  return this.createSourceNode(expression, expression.kind === lua.SyntaxKind.TrueKeyword ? "true" : "false");
447
453
  }
@@ -0,0 +1,22 @@
1
+ local function __TS__ArrayConcat(self, ...)
2
+ local items = arg
3
+ local result = {}
4
+ local len = 0
5
+ for i = 1, table.getn(self) do
6
+ len = len + 1
7
+ result[len] = self[i]
8
+ end
9
+ for i = 1, table.getn(items) do
10
+ local item = items[i]
11
+ if __TS__ArrayIsArray(item) then
12
+ for j = 1, table.getn(item) do
13
+ len = len + 1
14
+ result[len] = item[j]
15
+ end
16
+ else
17
+ len = len + 1
18
+ result[len] = item
19
+ end
20
+ end
21
+ return result
22
+ end
@@ -0,0 +1,8 @@
1
+ local function __TS__ArrayEvery(self, callbackfn, thisArg)
2
+ for i = 1, table.getn(self) do
3
+ if not callbackfn(thisArg, self[i], i - 1, self) then
4
+ return false
5
+ end
6
+ end
7
+ return true
8
+ end
@@ -0,0 +1,11 @@
1
+ local function __TS__ArrayFilter(self, callbackfn, thisArg)
2
+ local result = {}
3
+ local len = 0
4
+ for i = 1, table.getn(self) do
5
+ if callbackfn(thisArg, self[i], i - 1, self) then
6
+ len = len + 1
7
+ result[len] = self[i]
8
+ end
9
+ end
10
+ return result
11
+ end
@@ -0,0 +1,9 @@
1
+ local function __TS__ArrayFind(self, predicate, thisArg)
2
+ for i = 1, table.getn(self) do
3
+ local elem = self[i]
4
+ if predicate(thisArg, elem, i - 1, self) then
5
+ return elem
6
+ end
7
+ end
8
+ return nil
9
+ end
@@ -0,0 +1,8 @@
1
+ local function __TS__ArrayFindIndex(self, callbackFn, thisArg)
2
+ for i = 1, table.getn(self) do
3
+ if callbackFn(thisArg, self[i], i - 1, self) then
4
+ return i - 1
5
+ end
6
+ end
7
+ return -1
8
+ end
@@ -0,0 +1,27 @@
1
+ local function __TS__ArrayFlat(self, depth)
2
+ if depth == nil then
3
+ depth = 1
4
+ end
5
+ local result = {}
6
+ local len = 0
7
+ for i = 1, table.getn(self) do
8
+ local value = self[i]
9
+ if depth > 0 and __TS__ArrayIsArray(value) then
10
+ local toAdd
11
+ if depth == 1 then
12
+ toAdd = value
13
+ else
14
+ toAdd = __TS__ArrayFlat(value, depth - 1)
15
+ end
16
+ for j = 1, table.getn(toAdd) do
17
+ local val = toAdd[j]
18
+ len = len + 1
19
+ result[len] = val
20
+ end
21
+ else
22
+ len = len + 1
23
+ result[len] = value
24
+ end
25
+ end
26
+ return result
27
+ end
@@ -0,0 +1,17 @@
1
+ local function __TS__ArrayFlatMap(self, callback, thisArg)
2
+ local result = {}
3
+ local len = 0
4
+ for i = 1, table.getn(self) do
5
+ local value = callback(thisArg, self[i], i - 1, self)
6
+ if __TS__ArrayIsArray(value) then
7
+ for j = 1, table.getn(value) do
8
+ len = len + 1
9
+ result[len] = value[j]
10
+ end
11
+ else
12
+ len = len + 1
13
+ result[len] = value
14
+ end
15
+ end
16
+ return result
17
+ end
@@ -0,0 +1,5 @@
1
+ local function __TS__ArrayForEach(self, callbackFn, thisArg)
2
+ for i = 1, table.getn(self) do
3
+ callbackFn(thisArg, self[i], i - 1, self)
4
+ end
5
+ end
@@ -0,0 +1,29 @@
1
+ local __TS__ArrayFrom
2
+ do
3
+ local function arrayLikeStep(self, index)
4
+ index = index + 1
5
+ if index > self.length then
6
+ return
7
+ end
8
+ return index, self[index]
9
+ end
10
+ local function arrayLikeIterator(arr)
11
+ if type(arr.length) == "number" then
12
+ return arrayLikeStep, arr, 0
13
+ end
14
+ return __TS__Iterator(arr)
15
+ end
16
+ function __TS__ArrayFrom(arrayLike, mapFn, thisArg)
17
+ local result = {}
18
+ if mapFn == nil then
19
+ for ____, v in arrayLikeIterator(arrayLike) do
20
+ result[table.getn(result) + 1] = v
21
+ end
22
+ else
23
+ for i, v in arrayLikeIterator(arrayLike) do
24
+ result[table.getn(result) + 1] = mapFn(thisArg, v, i - 1)
25
+ end
26
+ end
27
+ return result
28
+ end
29
+ end