typescript-to-lua 0.42.0 → 1.1.1

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 (129) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/dist/CompilerOptions.d.ts +4 -3
  3. package/dist/LuaAST.js +4 -4
  4. package/dist/LuaLib.d.ts +7 -0
  5. package/dist/LuaLib.js +32 -1
  6. package/dist/LuaPrinter.d.ts +6 -2
  7. package/dist/LuaPrinter.js +25 -16
  8. package/dist/cli/diagnostics.js +2 -2
  9. package/dist/cli/parse.d.ts +1 -1
  10. package/dist/cli/parse.js +14 -0
  11. package/dist/cli/report.js +1 -1
  12. package/dist/cli/tsconfig.js +4 -4
  13. package/dist/lualib/Await.lua +59 -0
  14. package/dist/lualib/OptionalMethodCall.lua +3 -1
  15. package/dist/lualib/Promise.lua +172 -0
  16. package/dist/lualib/PromiseAll.lua +44 -0
  17. package/dist/lualib/PromiseAllSettled.lua +48 -0
  18. package/dist/lualib/PromiseAny.lua +41 -0
  19. package/dist/lualib/PromiseRace.lua +28 -0
  20. package/dist/lualib/SourceMapTraceBack.lua +20 -10
  21. package/dist/lualib/StringReplace.lua +8 -13
  22. package/dist/lualib/StringReplaceAll.lua +35 -0
  23. package/dist/lualib/lualib_bundle.lua +503 -62
  24. package/dist/transformation/builtins/array.js +29 -29
  25. package/dist/transformation/builtins/console.js +2 -2
  26. package/dist/transformation/builtins/function.js +9 -9
  27. package/dist/transformation/builtins/global.js +8 -8
  28. package/dist/transformation/builtins/index.js +35 -32
  29. package/dist/transformation/builtins/math.js +4 -4
  30. package/dist/transformation/builtins/number.js +7 -7
  31. package/dist/transformation/builtins/object.js +11 -11
  32. package/dist/transformation/builtins/promise.d.ts +7 -0
  33. package/dist/transformation/builtins/promise.js +46 -0
  34. package/dist/transformation/builtins/string.js +32 -30
  35. package/dist/transformation/builtins/symbol.js +3 -3
  36. package/dist/transformation/context/context.js +5 -5
  37. package/dist/transformation/index.js +1 -1
  38. package/dist/transformation/utils/annotations.d.ts +1 -4
  39. package/dist/transformation/utils/annotations.js +2 -39
  40. package/dist/transformation/utils/assignment-validation.js +8 -7
  41. package/dist/transformation/utils/diagnostics.d.ts +3 -0
  42. package/dist/transformation/utils/diagnostics.js +6 -5
  43. package/dist/transformation/utils/export.d.ts +3 -2
  44. package/dist/transformation/utils/export.js +14 -7
  45. package/dist/transformation/utils/function-context.js +19 -13
  46. package/dist/transformation/utils/lua-ast.js +18 -19
  47. package/dist/transformation/utils/lualib.js +1 -1
  48. package/dist/transformation/utils/safe-names.js +5 -5
  49. package/dist/transformation/utils/scope.d.ts +6 -0
  50. package/dist/transformation/utils/scope.js +70 -40
  51. package/dist/transformation/utils/symbols.js +6 -6
  52. package/dist/transformation/utils/transform.js +3 -3
  53. package/dist/transformation/utils/typescript/nodes.d.ts +2 -0
  54. package/dist/transformation/utils/typescript/nodes.js +21 -1
  55. package/dist/transformation/visitors/access.js +16 -16
  56. package/dist/transformation/visitors/async-await.d.ts +6 -0
  57. package/dist/transformation/visitors/async-await.js +38 -0
  58. package/dist/transformation/visitors/binary-expression/assignments.js +29 -29
  59. package/dist/transformation/visitors/binary-expression/bit.js +4 -4
  60. package/dist/transformation/visitors/binary-expression/compound.js +18 -18
  61. package/dist/transformation/visitors/binary-expression/destructuring-assignments.js +17 -17
  62. package/dist/transformation/visitors/binary-expression/index.js +21 -21
  63. package/dist/transformation/visitors/block.js +6 -6
  64. package/dist/transformation/visitors/break-continue.js +4 -9
  65. package/dist/transformation/visitors/call.js +38 -33
  66. package/dist/transformation/visitors/class/decorators.js +3 -3
  67. package/dist/transformation/visitors/class/index.js +41 -34
  68. package/dist/transformation/visitors/class/members/accessors.js +6 -6
  69. package/dist/transformation/visitors/class/members/constructor.js +7 -7
  70. package/dist/transformation/visitors/class/members/fields.js +6 -6
  71. package/dist/transformation/visitors/class/members/method.js +6 -6
  72. package/dist/transformation/visitors/class/new.js +13 -13
  73. package/dist/transformation/visitors/class/setup.js +11 -11
  74. package/dist/transformation/visitors/class/utils.js +2 -2
  75. package/dist/transformation/visitors/conditional.js +6 -6
  76. package/dist/transformation/visitors/delete.js +4 -4
  77. package/dist/transformation/visitors/enum.js +8 -8
  78. package/dist/transformation/visitors/errors.js +30 -31
  79. package/dist/transformation/visitors/expression-statement.js +10 -6
  80. package/dist/transformation/visitors/function.js +33 -21
  81. package/dist/transformation/visitors/identifier.js +25 -19
  82. package/dist/transformation/visitors/index.js +4 -2
  83. package/dist/transformation/visitors/language-extensions/iterable.js +7 -7
  84. package/dist/transformation/visitors/language-extensions/multi.d.ts +1 -1
  85. package/dist/transformation/visitors/language-extensions/multi.js +5 -7
  86. package/dist/transformation/visitors/language-extensions/operators.js +6 -6
  87. package/dist/transformation/visitors/language-extensions/range.js +6 -6
  88. package/dist/transformation/visitors/language-extensions/table.js +5 -5
  89. package/dist/transformation/visitors/literal.d.ts +1 -2
  90. package/dist/transformation/visitors/literal.js +19 -42
  91. package/dist/transformation/visitors/loops/do-while.js +2 -2
  92. package/dist/transformation/visitors/loops/for-in.js +4 -4
  93. package/dist/transformation/visitors/loops/for-of.js +13 -13
  94. package/dist/transformation/visitors/loops/for.js +3 -3
  95. package/dist/transformation/visitors/loops/utils.js +9 -9
  96. package/dist/transformation/visitors/modules/export.js +13 -14
  97. package/dist/transformation/visitors/modules/import.js +10 -10
  98. package/dist/transformation/visitors/namespace.js +13 -13
  99. package/dist/transformation/visitors/return.d.ts +1 -0
  100. package/dist/transformation/visitors/return.js +41 -49
  101. package/dist/transformation/visitors/sourceFile.js +8 -8
  102. package/dist/transformation/visitors/spread.js +16 -11
  103. package/dist/transformation/visitors/switch.js +132 -30
  104. package/dist/transformation/visitors/template.js +5 -5
  105. package/dist/transformation/visitors/typeof.js +2 -2
  106. package/dist/transformation/visitors/typescript.js +1 -1
  107. package/dist/transformation/visitors/unary-expression.js +9 -9
  108. package/dist/transformation/visitors/variable-declaration.js +28 -28
  109. package/dist/transformation/visitors/void.d.ts +6 -0
  110. package/dist/transformation/visitors/void.js +23 -0
  111. package/dist/transpilation/bundle.d.ts +3 -0
  112. package/dist/transpilation/bundle.js +56 -13
  113. package/dist/transpilation/diagnostics.js +3 -3
  114. package/dist/transpilation/index.js +2 -2
  115. package/dist/transpilation/output-collector.js +2 -2
  116. package/dist/transpilation/plugins.js +1 -1
  117. package/dist/transpilation/resolve.js +28 -15
  118. package/dist/transpilation/transformers.d.ts +1 -0
  119. package/dist/transpilation/transformers.js +61 -25
  120. package/dist/transpilation/transpile.js +7 -7
  121. package/dist/transpilation/transpiler.js +8 -8
  122. package/dist/transpilation/utils.js +3 -2
  123. package/dist/tstl.js +8 -8
  124. package/dist/utils.js +2 -2
  125. package/package.json +15 -12
  126. package/dist/transformation/visitors/jsx/jsx.d.ts +0 -9
  127. package/dist/transformation/visitors/jsx/jsx.js +0 -237
  128. package/dist/transformation/visitors/jsx/xhtml.d.ts +0 -3
  129. package/dist/transformation/visitors/jsx/xhtml.js +0 -260
@@ -9,69 +9,69 @@ const typescript_1 = require("../utils/typescript");
9
9
  function transformArrayConstructorCall(context, node) {
10
10
  const expression = node.expression;
11
11
  const signature = context.checker.getResolvedSignature(node);
12
- const params = call_1.transformArguments(context, node.arguments, signature);
12
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
13
13
  const expressionName = expression.name.text;
14
14
  switch (expressionName) {
15
15
  case "isArray":
16
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayIsArray, node, ...params);
16
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayIsArray, node, ...params);
17
17
  default:
18
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "Array", expressionName));
18
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "Array", expressionName));
19
19
  }
20
20
  }
21
21
  exports.transformArrayConstructorCall = transformArrayConstructorCall;
22
22
  function transformArrayPrototypeCall(context, node) {
23
23
  const expression = node.expression;
24
24
  const signature = context.checker.getResolvedSignature(node);
25
- const params = call_1.transformArguments(context, node.arguments, signature);
25
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
26
26
  const caller = context.transformExpression(expression.expression);
27
27
  const expressionName = expression.name.text;
28
28
  switch (expressionName) {
29
29
  case "concat":
30
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayConcat, node, caller, ...params);
30
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayConcat, node, caller, ...params);
31
31
  case "entries":
32
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayEntries, node, caller);
32
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayEntries, node, caller);
33
33
  case "push":
34
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayPush, node, caller, ...params);
34
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayPush, node, caller, ...params);
35
35
  case "reverse":
36
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayReverse, node, caller);
36
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayReverse, node, caller);
37
37
  case "shift":
38
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayShift, node, caller);
38
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayShift, node, caller);
39
39
  case "unshift":
40
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayUnshift, node, caller, ...params);
40
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayUnshift, node, caller, ...params);
41
41
  case "sort":
42
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySort, node, caller, ...params);
42
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySort, node, caller, ...params);
43
43
  case "pop":
44
44
  return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("table"), lua.createStringLiteral("remove")), [caller], node);
45
45
  case "forEach":
46
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayForEach, node, caller, ...params);
46
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayForEach, node, caller, ...params);
47
47
  case "find":
48
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFind, node, caller, ...params);
48
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFind, node, caller, ...params);
49
49
  case "findIndex":
50
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFindIndex, node, caller, ...params);
50
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFindIndex, node, caller, ...params);
51
51
  case "includes":
52
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayIncludes, node, caller, ...params);
52
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayIncludes, node, caller, ...params);
53
53
  case "indexOf":
54
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayIndexOf, node, caller, ...params);
54
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayIndexOf, node, caller, ...params);
55
55
  case "map":
56
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayMap, node, caller, ...params);
56
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayMap, node, caller, ...params);
57
57
  case "filter":
58
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFilter, node, caller, ...params);
58
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFilter, node, caller, ...params);
59
59
  case "reduce":
60
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayReduce, node, caller, ...params);
60
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayReduce, node, caller, ...params);
61
61
  case "reduceRight":
62
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayReduceRight, node, caller, ...params);
62
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayReduceRight, node, caller, ...params);
63
63
  case "some":
64
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySome, node, caller, ...params);
64
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySome, node, caller, ...params);
65
65
  case "every":
66
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayEvery, node, caller, ...params);
66
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayEvery, node, caller, ...params);
67
67
  case "slice":
68
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySlice, node, caller, ...params);
68
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySlice, node, caller, ...params);
69
69
  case "splice":
70
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArraySplice, node, caller, ...params);
70
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArraySplice, node, caller, ...params);
71
71
  case "join":
72
72
  const callerType = context.checker.getTypeAtLocation(expression.expression);
73
73
  const elementType = context.checker.getElementTypeOfArrayType(callerType);
74
- if (elementType && (typescript_1.isStringType(context, elementType) || typescript_1.isNumberType(context, elementType))) {
74
+ if (elementType && ((0, typescript_1.isStringType)(context, elementType) || (0, typescript_1.isNumberType)(context, elementType))) {
75
75
  const defaultSeparatorLiteral = lua.createStringLiteral(",");
76
76
  const parameters = [
77
77
  caller,
@@ -81,13 +81,13 @@ function transformArrayPrototypeCall(context, node) {
81
81
  ];
82
82
  return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("table"), lua.createStringLiteral("concat")), parameters, node);
83
83
  }
84
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayJoin, node, caller, ...params);
84
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayJoin, node, caller, ...params);
85
85
  case "flat":
86
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFlat, node, caller, ...params);
86
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFlat, node, caller, ...params);
87
87
  case "flatMap":
88
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ArrayFlatMap, node, caller, ...params);
88
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFlatMap, node, caller, ...params);
89
89
  default:
90
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "array", expressionName));
90
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "array", expressionName));
91
91
  }
92
92
  }
93
93
  exports.transformArrayPrototypeCall = transformArrayPrototypeCall;
@@ -10,7 +10,7 @@ function transformConsoleCall(context, expression) {
10
10
  const method = expression.expression;
11
11
  const methodName = method.name.text;
12
12
  const signature = context.checker.getResolvedSignature(expression);
13
- const parameters = call_1.transformArguments(context, expression.arguments, signature);
13
+ const parameters = (0, call_1.transformArguments)(context, expression.arguments, signature);
14
14
  switch (methodName) {
15
15
  case "error":
16
16
  case "info":
@@ -42,7 +42,7 @@ function transformConsoleCall(context, expression) {
42
42
  const debugTracebackCall = lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("debug"), lua.createStringLiteral("traceback")), parameters);
43
43
  return lua.createCallExpression(lua.createIdentifier("print"), [debugTracebackCall]);
44
44
  default:
45
- context.diagnostics.push(diagnostics_1.unsupportedProperty(method.name, "console", methodName));
45
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(method.name, "console", methodName));
46
46
  }
47
47
  }
48
48
  exports.transformConsoleCall = transformConsoleCall;
@@ -11,22 +11,22 @@ const call_1 = require("../visitors/call");
11
11
  function transformFunctionPrototypeCall(context, node) {
12
12
  const expression = node.expression;
13
13
  const callerType = context.checker.getTypeAtLocation(expression.expression);
14
- if (function_context_1.getFunctionContextType(context, callerType) === function_context_1.ContextType.Void) {
15
- context.diagnostics.push(diagnostics_1.unsupportedSelfFunctionConversion(node));
14
+ if ((0, function_context_1.getFunctionContextType)(context, callerType) === function_context_1.ContextType.Void) {
15
+ context.diagnostics.push((0, diagnostics_1.unsupportedSelfFunctionConversion)(node));
16
16
  }
17
17
  const signature = context.checker.getResolvedSignature(node);
18
- const params = call_1.transformArguments(context, node.arguments, signature);
18
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
19
19
  const caller = context.transformExpression(expression.expression);
20
20
  const expressionName = expression.name.text;
21
21
  switch (expressionName) {
22
22
  case "apply":
23
- return lua.createCallExpression(caller, [params[0], lua_ast_1.createUnpackCall(context, params[1], node.arguments[1])], node);
23
+ return lua.createCallExpression(caller, [params[0], (0, lua_ast_1.createUnpackCall)(context, params[1], node.arguments[1])], node);
24
24
  case "bind":
25
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.FunctionBind, node, caller, ...params);
25
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.FunctionBind, node, caller, ...params);
26
26
  case "call":
27
27
  return lua.createCallExpression(caller, params, node);
28
28
  default:
29
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "function", expressionName));
29
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "function", expressionName));
30
30
  }
31
31
  }
32
32
  exports.transformFunctionPrototypeCall = transformFunctionPrototypeCall;
@@ -34,17 +34,17 @@ function transformFunctionProperty(context, node) {
34
34
  switch (node.name.text) {
35
35
  case "length":
36
36
  if (context.luaTarget === CompilerOptions_1.LuaTarget.Lua51 || context.luaTarget === CompilerOptions_1.LuaTarget.Universal) {
37
- context.diagnostics.push(diagnostics_1.unsupportedForTarget(node, "function.length", CompilerOptions_1.LuaTarget.Lua51));
37
+ context.diagnostics.push((0, diagnostics_1.unsupportedForTarget)(node, "function.length", CompilerOptions_1.LuaTarget.Lua51));
38
38
  }
39
39
  // debug.getinfo(fn)
40
40
  const getInfoCall = lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("debug"), lua.createStringLiteral("getinfo")), [context.transformExpression(node.expression)]);
41
41
  const nparams = lua.createTableIndexExpression(getInfoCall, lua.createStringLiteral("nparams"));
42
- const contextType = function_context_1.getFunctionContextType(context, context.checker.getTypeAtLocation(node.expression));
42
+ const contextType = (0, function_context_1.getFunctionContextType)(context, context.checker.getTypeAtLocation(node.expression));
43
43
  return contextType === function_context_1.ContextType.NonVoid
44
44
  ? lua.createBinaryExpression(nparams, lua.createNumericLiteral(1), lua.SyntaxKind.SubtractionOperator)
45
45
  : nparams;
46
46
  default:
47
- context.diagnostics.push(diagnostics_1.unsupportedProperty(node.name, "function", node.name.text));
47
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(node.name, "function", node.name.text));
48
48
  }
49
49
  }
50
50
  exports.transformFunctionProperty = transformFunctionProperty;
@@ -6,24 +6,24 @@ const typescript_1 = require("../utils/typescript");
6
6
  const call_1 = require("../visitors/call");
7
7
  function transformGlobalCall(context, node) {
8
8
  const signature = context.checker.getResolvedSignature(node);
9
- const parameters = call_1.transformArguments(context, node.arguments, signature);
9
+ const parameters = (0, call_1.transformArguments)(context, node.arguments, signature);
10
10
  const expressionType = context.checker.getTypeAtLocation(node.expression);
11
11
  const name = expressionType.symbol.name;
12
12
  switch (name) {
13
13
  case "SymbolConstructor":
14
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Symbol, node, ...parameters);
14
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Symbol, node, ...parameters);
15
15
  case "NumberConstructor":
16
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Number, node, ...parameters);
16
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Number, node, ...parameters);
17
17
  case "isNaN":
18
18
  case "isFinite":
19
- const numberParameters = typescript_1.isNumberType(context, expressionType)
19
+ const numberParameters = (0, typescript_1.isNumberType)(context, expressionType)
20
20
  ? parameters
21
- : [lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.Number, undefined, ...parameters)];
22
- return lualib_1.transformLuaLibFunction(context, name === "isNaN" ? lualib_1.LuaLibFeature.NumberIsNaN : lualib_1.LuaLibFeature.NumberIsFinite, node, ...numberParameters);
21
+ : [(0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Number, undefined, ...parameters)];
22
+ return (0, lualib_1.transformLuaLibFunction)(context, name === "isNaN" ? lualib_1.LuaLibFeature.NumberIsNaN : lualib_1.LuaLibFeature.NumberIsFinite, node, ...numberParameters);
23
23
  case "parseFloat":
24
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ParseFloat, node, ...parameters);
24
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ParseFloat, node, ...parameters);
25
25
  case "parseInt":
26
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ParseInt, node, ...parameters);
26
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ParseInt, node, ...parameters);
27
27
  }
28
28
  }
29
29
  exports.transformGlobalCall = transformGlobalCall;
@@ -16,35 +16,36 @@ const global_1 = require("./global");
16
16
  const math_1 = require("./math");
17
17
  const number_1 = require("./number");
18
18
  const object_1 = require("./object");
19
+ const promise_1 = require("./promise");
19
20
  const string_1 = require("./string");
20
21
  const symbol_1 = require("./symbol");
21
22
  function transformBuiltinPropertyAccessExpression(context, node) {
22
23
  const ownerType = context.checker.getTypeAtLocation(node.expression);
23
- if (typescript_1.isStringType(context, ownerType)) {
24
- return string_1.transformStringProperty(context, node);
24
+ if ((0, typescript_1.isStringType)(context, ownerType)) {
25
+ return (0, string_1.transformStringProperty)(context, node);
25
26
  }
26
- if (typescript_1.isArrayType(context, ownerType)) {
27
- return array_1.transformArrayProperty(context, node);
27
+ if ((0, typescript_1.isArrayType)(context, ownerType)) {
28
+ return (0, array_1.transformArrayProperty)(context, node);
28
29
  }
29
- if (typescript_1.isFunctionType(context, ownerType)) {
30
- return function_1.transformFunctionProperty(context, node);
30
+ if ((0, typescript_1.isFunctionType)(context, ownerType)) {
31
+ return (0, function_1.transformFunctionProperty)(context, node);
31
32
  }
32
- if (ts.isIdentifier(node.expression) && typescript_1.isStandardLibraryType(context, ownerType, undefined)) {
33
+ if (ts.isIdentifier(node.expression) && (0, typescript_1.isStandardLibraryType)(context, ownerType, undefined)) {
33
34
  switch (node.expression.text) {
34
35
  case "Math":
35
- return math_1.transformMathProperty(context, node);
36
+ return (0, math_1.transformMathProperty)(context, node);
36
37
  case "Symbol":
37
- lualib_1.importLuaLibFeature(context, lualib_1.LuaLibFeature.Symbol);
38
+ (0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Symbol);
38
39
  }
39
40
  }
40
41
  }
41
42
  exports.transformBuiltinPropertyAccessExpression = transformBuiltinPropertyAccessExpression;
42
43
  function transformBuiltinCallExpression(context, node) {
43
44
  const expressionType = context.checker.getTypeAtLocation(node.expression);
44
- if (ts.isIdentifier(node.expression) && typescript_1.isStandardLibraryType(context, expressionType, undefined)) {
45
+ if (ts.isIdentifier(node.expression) && (0, typescript_1.isStandardLibraryType)(context, expressionType, undefined)) {
45
46
  // TODO:
46
- new_1.checkForLuaLibType(context, expressionType);
47
- const result = global_1.transformGlobalCall(context, node);
47
+ (0, new_1.checkForLuaLibType)(context, expressionType);
48
+ const result = (0, global_1.transformGlobalCall)(context, node);
48
49
  if (result) {
49
50
  return result;
50
51
  }
@@ -52,41 +53,43 @@ function transformBuiltinCallExpression(context, node) {
52
53
  if (!ts.isPropertyAccessExpression(node.expression)) {
53
54
  return;
54
55
  }
55
- utils_1.assume(node);
56
+ (0, utils_1.assume)(node);
56
57
  // If the function being called is of type owner.func, get the type of owner
57
58
  const ownerType = context.checker.getTypeAtLocation(node.expression.expression);
58
- if (typescript_1.isStandardLibraryType(context, ownerType, undefined)) {
59
+ if ((0, typescript_1.isStandardLibraryType)(context, ownerType, undefined)) {
59
60
  const symbol = ownerType.getSymbol();
60
61
  switch (symbol === null || symbol === void 0 ? void 0 : symbol.name) {
61
62
  case "ArrayConstructor":
62
- return array_1.transformArrayConstructorCall(context, node);
63
+ return (0, array_1.transformArrayConstructorCall)(context, node);
63
64
  case "Console":
64
- return console_1.transformConsoleCall(context, node);
65
+ return (0, console_1.transformConsoleCall)(context, node);
65
66
  case "Math":
66
- return math_1.transformMathCall(context, node);
67
+ return (0, math_1.transformMathCall)(context, node);
67
68
  case "StringConstructor":
68
- return string_1.transformStringConstructorCall(context, node);
69
+ return (0, string_1.transformStringConstructorCall)(context, node);
69
70
  case "ObjectConstructor":
70
- return object_1.transformObjectConstructorCall(context, node);
71
+ return (0, object_1.transformObjectConstructorCall)(context, node);
71
72
  case "SymbolConstructor":
72
- return symbol_1.transformSymbolConstructorCall(context, node);
73
+ return (0, symbol_1.transformSymbolConstructorCall)(context, node);
73
74
  case "NumberConstructor":
74
- return number_1.transformNumberConstructorCall(context, node);
75
+ return (0, number_1.transformNumberConstructorCall)(context, node);
76
+ case "PromiseConstructor":
77
+ return (0, promise_1.transformPromiseConstructorCall)(context, node);
75
78
  }
76
79
  }
77
- if (typescript_1.isStringType(context, ownerType) && typescript_1.hasStandardLibrarySignature(context, node)) {
78
- return string_1.transformStringPrototypeCall(context, node);
80
+ if ((0, typescript_1.isStringType)(context, ownerType) && (0, typescript_1.hasStandardLibrarySignature)(context, node)) {
81
+ return (0, string_1.transformStringPrototypeCall)(context, node);
79
82
  }
80
- if (typescript_1.isNumberType(context, ownerType) && typescript_1.hasStandardLibrarySignature(context, node)) {
81
- return number_1.transformNumberPrototypeCall(context, node);
83
+ if ((0, typescript_1.isNumberType)(context, ownerType) && (0, typescript_1.hasStandardLibrarySignature)(context, node)) {
84
+ return (0, number_1.transformNumberPrototypeCall)(context, node);
82
85
  }
83
- if (typescript_1.isArrayType(context, ownerType) && typescript_1.hasStandardLibrarySignature(context, node)) {
84
- return array_1.transformArrayPrototypeCall(context, node);
86
+ if ((0, typescript_1.isArrayType)(context, ownerType) && (0, typescript_1.hasStandardLibrarySignature)(context, node)) {
87
+ return (0, array_1.transformArrayPrototypeCall)(context, node);
85
88
  }
86
- if (typescript_1.isFunctionType(context, ownerType) && typescript_1.hasStandardLibrarySignature(context, node)) {
87
- return function_1.transformFunctionPrototypeCall(context, node);
89
+ if ((0, typescript_1.isFunctionType)(context, ownerType) && (0, typescript_1.hasStandardLibrarySignature)(context, node)) {
90
+ return (0, function_1.transformFunctionPrototypeCall)(context, node);
88
91
  }
89
- const objectResult = object_1.transformObjectPrototypeCall(context, node);
92
+ const objectResult = (0, object_1.transformObjectPrototypeCall)(context, node);
90
93
  if (objectResult) {
91
94
  return objectResult;
92
95
  }
@@ -95,13 +98,13 @@ exports.transformBuiltinCallExpression = transformBuiltinCallExpression;
95
98
  function transformBuiltinIdentifierExpression(context, node) {
96
99
  switch (node.text) {
97
100
  case "NaN":
98
- return lua_ast_1.createNaN(node);
101
+ return (0, lua_ast_1.createNaN)(node);
99
102
  case "Infinity":
100
103
  const math = lua.createIdentifier("math");
101
104
  const huge = lua.createStringLiteral("huge");
102
105
  return lua.createTableIndexExpression(math, huge, node);
103
106
  case "globalThis":
104
- return lua.createIdentifier("_G", node, symbols_1.getIdentifierSymbolId(context, node), "globalThis");
107
+ return lua.createIdentifier("_G", node, (0, symbols_1.getIdentifierSymbolId)(context, node), "globalThis");
105
108
  }
106
109
  }
107
110
  exports.transformBuiltinIdentifierExpression = transformBuiltinIdentifierExpression;
@@ -22,14 +22,14 @@ function transformMathProperty(context, node) {
22
22
  case "SQRT2":
23
23
  return lua.createNumericLiteral(Math[name], node);
24
24
  default:
25
- context.diagnostics.push(diagnostics_1.unsupportedProperty(node.name, "Math", name));
25
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(node.name, "Math", name));
26
26
  }
27
27
  }
28
28
  exports.transformMathProperty = transformMathProperty;
29
29
  function transformMathCall(context, node) {
30
30
  const expression = node.expression;
31
31
  const signature = context.checker.getResolvedSignature(node);
32
- const params = call_1.transformArguments(context, node.arguments, signature);
32
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
33
33
  const math = lua.createIdentifier("math");
34
34
  const expressionName = expression.name.text;
35
35
  switch (expressionName) {
@@ -37,7 +37,7 @@ function transformMathCall(context, node) {
37
37
  // Otherwise: math.atan2(y, x)
38
38
  case "atan2": {
39
39
  if (context.luaTarget === CompilerOptions_1.LuaTarget.Universal) {
40
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.MathAtan2, node, ...params);
40
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.MathAtan2, node, ...params);
41
41
  }
42
42
  const method = lua.createStringLiteral(context.luaTarget === CompilerOptions_1.LuaTarget.Lua53 ? "atan" : "atan2");
43
43
  return lua.createCallExpression(lua.createTableIndexExpression(math, method), params, node);
@@ -84,7 +84,7 @@ function transformMathCall(context, node) {
84
84
  return lua.createCallExpression(lua.createTableIndexExpression(math, method), params, node);
85
85
  }
86
86
  default:
87
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "Math", expressionName));
87
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "Math", expressionName));
88
88
  }
89
89
  }
90
90
  exports.transformMathCall = transformMathCall;
@@ -8,30 +8,30 @@ const call_1 = require("../visitors/call");
8
8
  function transformNumberPrototypeCall(context, node) {
9
9
  const expression = node.expression;
10
10
  const signature = context.checker.getResolvedSignature(node);
11
- const params = call_1.transformArguments(context, node.arguments, signature);
11
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
12
12
  const caller = context.transformExpression(expression.expression);
13
13
  const expressionName = expression.name.text;
14
14
  switch (expressionName) {
15
15
  case "toString":
16
16
  return params.length === 0
17
17
  ? lua.createCallExpression(lua.createIdentifier("tostring"), [caller], node)
18
- : lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.NumberToString, node, caller, ...params);
18
+ : (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.NumberToString, node, caller, ...params);
19
19
  default:
20
- context.diagnostics.push(diagnostics_1.unsupportedProperty(expression.name, "number", expressionName));
20
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "number", expressionName));
21
21
  }
22
22
  }
23
23
  exports.transformNumberPrototypeCall = transformNumberPrototypeCall;
24
24
  function transformNumberConstructorCall(context, expression) {
25
25
  const method = expression.expression;
26
- const parameters = call_1.transformArguments(context, expression.arguments);
26
+ const parameters = (0, call_1.transformArguments)(context, expression.arguments);
27
27
  const methodName = method.name.text;
28
28
  switch (methodName) {
29
29
  case "isNaN":
30
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.NumberIsNaN, expression, ...parameters);
30
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.NumberIsNaN, expression, ...parameters);
31
31
  case "isFinite":
32
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.NumberIsFinite, expression, ...parameters);
32
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.NumberIsFinite, expression, ...parameters);
33
33
  default:
34
- context.diagnostics.push(diagnostics_1.unsupportedProperty(method.name, "Number", methodName));
34
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(method.name, "Number", methodName));
35
35
  }
36
36
  }
37
37
  exports.transformNumberConstructorCall = transformNumberConstructorCall;
@@ -7,27 +7,27 @@ const lualib_1 = require("../utils/lualib");
7
7
  const call_1 = require("../visitors/call");
8
8
  function transformObjectConstructorCall(context, expression) {
9
9
  const method = expression.expression;
10
- const args = call_1.transformArguments(context, expression.arguments);
10
+ const args = (0, call_1.transformArguments)(context, expression.arguments);
11
11
  const methodName = method.name.text;
12
12
  switch (methodName) {
13
13
  case "assign":
14
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectAssign, expression, ...args);
14
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectAssign, expression, ...args);
15
15
  case "defineProperty":
16
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectDefineProperty, expression, ...args);
16
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectDefineProperty, expression, ...args);
17
17
  case "entries":
18
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectEntries, expression, ...args);
18
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectEntries, expression, ...args);
19
19
  case "fromEntries":
20
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectFromEntries, expression, ...args);
20
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectFromEntries, expression, ...args);
21
21
  case "getOwnPropertyDescriptor":
22
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectGetOwnPropertyDescriptor, expression, ...args);
22
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectGetOwnPropertyDescriptor, expression, ...args);
23
23
  case "getOwnPropertyDescriptors":
24
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectGetOwnPropertyDescriptors, expression, ...args);
24
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectGetOwnPropertyDescriptors, expression, ...args);
25
25
  case "keys":
26
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectKeys, expression, ...args);
26
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectKeys, expression, ...args);
27
27
  case "values":
28
- return lualib_1.transformLuaLibFunction(context, lualib_1.LuaLibFeature.ObjectValues, expression, ...args);
28
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ObjectValues, expression, ...args);
29
29
  default:
30
- context.diagnostics.push(diagnostics_1.unsupportedProperty(method.name, "Object", methodName));
30
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(method.name, "Object", methodName));
31
31
  }
32
32
  }
33
33
  exports.transformObjectConstructorCall = transformObjectConstructorCall;
@@ -41,7 +41,7 @@ function transformObjectPrototypeCall(context, node) {
41
41
  return lua.createCallExpression(toStringIdentifier, [context.transformExpression(expression.expression)], node);
42
42
  case "hasOwnProperty":
43
43
  const expr = context.transformExpression(expression.expression);
44
- const parameters = call_1.transformArguments(context, node.arguments, signature);
44
+ const parameters = (0, call_1.transformArguments)(context, node.arguments, signature);
45
45
  const rawGetIdentifier = lua.createIdentifier("rawget");
46
46
  const rawGetCall = lua.createCallExpression(rawGetIdentifier, [expr, ...parameters]);
47
47
  return lua.createBinaryExpression(rawGetCall, lua.createNilLiteral(), lua.SyntaxKind.InequalityOperator, node);
@@ -0,0 +1,7 @@
1
+ import * as ts from "typescript";
2
+ import * as lua from "../../LuaAST";
3
+ import { TransformationContext } from "../context";
4
+ import { PropertyCallExpression } from "../visitors/call";
5
+ export declare function isPromiseClass(context: TransformationContext, node: ts.Identifier): boolean;
6
+ export declare function createPromiseIdentifier(original: ts.Node): lua.Identifier;
7
+ export declare function transformPromiseConstructorCall(context: TransformationContext, node: PropertyCallExpression): lua.Expression | undefined;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformPromiseConstructorCall = exports.createPromiseIdentifier = exports.isPromiseClass = void 0;
4
+ const lua = require("../../LuaAST");
5
+ const diagnostics_1 = require("../utils/diagnostics");
6
+ const lualib_1 = require("../utils/lualib");
7
+ const typescript_1 = require("../utils/typescript");
8
+ const call_1 = require("../visitors/call");
9
+ function isPromiseClass(context, node) {
10
+ const type = context.checker.getTypeAtLocation(node);
11
+ return (0, typescript_1.isStandardLibraryType)(context, type, undefined) && node.text === "Promise";
12
+ }
13
+ exports.isPromiseClass = isPromiseClass;
14
+ function createPromiseIdentifier(original) {
15
+ return lua.createIdentifier("__TS__Promise", original);
16
+ }
17
+ exports.createPromiseIdentifier = createPromiseIdentifier;
18
+ function transformPromiseConstructorCall(context, node) {
19
+ const expression = node.expression;
20
+ const signature = context.checker.getResolvedSignature(node);
21
+ const params = (0, call_1.transformArguments)(context, node.arguments, signature);
22
+ const expressionName = expression.name.text;
23
+ switch (expressionName) {
24
+ case "all":
25
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.PromiseAll, node, ...params);
26
+ case "allSettled":
27
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.PromiseAllSettled, node, ...params);
28
+ case "any":
29
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.PromiseAny, node, ...params);
30
+ case "race":
31
+ return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.PromiseRace, node, ...params);
32
+ case "resolve":
33
+ (0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Promise);
34
+ return lua.createCallExpression(createStaticPromiseFunctionAccessor("resolve", expression), params, node);
35
+ case "reject":
36
+ (0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Promise);
37
+ return lua.createCallExpression(createStaticPromiseFunctionAccessor("reject", expression), params, node);
38
+ default:
39
+ context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "Promise", expressionName));
40
+ }
41
+ }
42
+ exports.transformPromiseConstructorCall = transformPromiseConstructorCall;
43
+ function createStaticPromiseFunctionAccessor(functionName, node) {
44
+ return lua.createTableIndexExpression(lua.createIdentifier("__TS__Promise"), lua.createStringLiteral(functionName), node);
45
+ }
46
+ //# sourceMappingURL=promise.js.map