typescript-to-lua 1.33.2 → 1.35.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 (119) hide show
  1. package/dist/CompilerOptions.d.ts +1 -0
  2. package/dist/CompilerOptions.js +35 -4
  3. package/dist/LuaAST.js +34 -1
  4. package/dist/LuaLib.js +35 -2
  5. package/dist/LuaPrinter.js +36 -3
  6. package/dist/cli/diagnostics.js +34 -1
  7. package/dist/cli/parse.js +35 -2
  8. package/dist/cli/report.js +34 -1
  9. package/dist/cli/tsconfig.js +36 -3
  10. package/dist/lualib/5.0/Map.lua +36 -12
  11. package/dist/lualib/5.0/ObjectAssign.lua +4 -2
  12. package/dist/lualib/5.0/Promise.lua +11 -20
  13. package/dist/lualib/5.0/Set.lua +36 -12
  14. package/dist/lualib/5.0/SetDescriptor.lua +7 -0
  15. package/dist/lualib/5.0/SourceMapTraceBack.lua +1 -1
  16. package/dist/lualib/5.0/lualib_bundle.lua +95 -47
  17. package/dist/lualib/universal/Map.lua +36 -12
  18. package/dist/lualib/universal/ObjectAssign.lua +4 -2
  19. package/dist/lualib/universal/Promise.lua +11 -20
  20. package/dist/lualib/universal/Set.lua +36 -12
  21. package/dist/lualib/universal/SetDescriptor.lua +7 -0
  22. package/dist/lualib/universal/SourceMapTraceBack.lua +1 -1
  23. package/dist/lualib/universal/lualib_bundle.lua +95 -47
  24. package/dist/lualib-build/plugin.js +36 -3
  25. package/dist/lualib-build/util.js +34 -1
  26. package/dist/transformation/builtins/array.js +35 -2
  27. package/dist/transformation/builtins/console.js +35 -2
  28. package/dist/transformation/builtins/function.js +34 -1
  29. package/dist/transformation/builtins/index.js +35 -2
  30. package/dist/transformation/builtins/math.js +41 -3
  31. package/dist/transformation/builtins/number.js +42 -5
  32. package/dist/transformation/builtins/object.js +34 -1
  33. package/dist/transformation/builtins/promise.js +34 -1
  34. package/dist/transformation/builtins/string.js +34 -1
  35. package/dist/transformation/builtins/symbol.js +34 -1
  36. package/dist/transformation/context/context.js +35 -2
  37. package/dist/transformation/context/visitors.js +34 -1
  38. package/dist/transformation/index.js +34 -1
  39. package/dist/transformation/pre-transformers/using-transformer.js +34 -1
  40. package/dist/transformation/utils/annotations.js +34 -1
  41. package/dist/transformation/utils/assignment-validation.js +34 -1
  42. package/dist/transformation/utils/diagnostics.js +35 -2
  43. package/dist/transformation/utils/export.js +35 -2
  44. package/dist/transformation/utils/function-context.js +36 -4
  45. package/dist/transformation/utils/language-extensions.js +34 -1
  46. package/dist/transformation/utils/lua-ast.js +35 -2
  47. package/dist/transformation/utils/lualib.js +34 -1
  48. package/dist/transformation/utils/scope.d.ts +6 -0
  49. package/dist/transformation/utils/scope.js +56 -2
  50. package/dist/transformation/utils/typescript/index.js +27 -3
  51. package/dist/transformation/utils/typescript/nodes.js +34 -1
  52. package/dist/transformation/utils/typescript/types.js +34 -1
  53. package/dist/transformation/visitors/access.js +35 -2
  54. package/dist/transformation/visitors/async-await.js +35 -2
  55. package/dist/transformation/visitors/binary-expression/assignments.js +35 -2
  56. package/dist/transformation/visitors/binary-expression/bit.js +41 -2
  57. package/dist/transformation/visitors/binary-expression/compound.js +35 -2
  58. package/dist/transformation/visitors/binary-expression/destructuring-assignments.js +35 -2
  59. package/dist/transformation/visitors/binary-expression/index.js +35 -2
  60. package/dist/transformation/visitors/block.js +35 -2
  61. package/dist/transformation/visitors/break-continue.js +52 -2
  62. package/dist/transformation/visitors/call.js +35 -2
  63. package/dist/transformation/visitors/class/decorators.js +35 -2
  64. package/dist/transformation/visitors/class/index.js +35 -2
  65. package/dist/transformation/visitors/class/members/accessors.js +35 -2
  66. package/dist/transformation/visitors/class/members/constructor.js +35 -2
  67. package/dist/transformation/visitors/class/members/fields.js +34 -1
  68. package/dist/transformation/visitors/class/members/method.js +35 -2
  69. package/dist/transformation/visitors/class/new.js +34 -1
  70. package/dist/transformation/visitors/class/setup.js +35 -2
  71. package/dist/transformation/visitors/class/utils.js +34 -1
  72. package/dist/transformation/visitors/conditional.js +35 -2
  73. package/dist/transformation/visitors/delete.js +35 -2
  74. package/dist/transformation/visitors/enum.js +36 -3
  75. package/dist/transformation/visitors/errors.js +119 -21
  76. package/dist/transformation/visitors/expression-list.js +35 -2
  77. package/dist/transformation/visitors/expression-statement.js +34 -1
  78. package/dist/transformation/visitors/function.js +35 -2
  79. package/dist/transformation/visitors/identifier.js +35 -2
  80. package/dist/transformation/visitors/index.js +34 -1
  81. package/dist/transformation/visitors/language-extensions/iterable.js +35 -2
  82. package/dist/transformation/visitors/language-extensions/multi.js +35 -2
  83. package/dist/transformation/visitors/language-extensions/operators.js +34 -1
  84. package/dist/transformation/visitors/language-extensions/range.js +36 -3
  85. package/dist/transformation/visitors/language-extensions/table.js +34 -1
  86. package/dist/transformation/visitors/language-extensions/vararg.js +34 -1
  87. package/dist/transformation/visitors/literal.js +35 -2
  88. package/dist/transformation/visitors/loops/do-while.js +34 -1
  89. package/dist/transformation/visitors/loops/for-in.js +34 -1
  90. package/dist/transformation/visitors/loops/for-of.js +35 -2
  91. package/dist/transformation/visitors/loops/for.js +35 -2
  92. package/dist/transformation/visitors/loops/utils.js +35 -2
  93. package/dist/transformation/visitors/modules/export.js +36 -3
  94. package/dist/transformation/visitors/modules/import.js +36 -3
  95. package/dist/transformation/visitors/namespace.js +35 -2
  96. package/dist/transformation/visitors/optional-chaining.js +35 -2
  97. package/dist/transformation/visitors/return.js +75 -19
  98. package/dist/transformation/visitors/sourceFile.js +35 -2
  99. package/dist/transformation/visitors/spread.js +35 -2
  100. package/dist/transformation/visitors/switch.js +35 -2
  101. package/dist/transformation/visitors/template.js +35 -2
  102. package/dist/transformation/visitors/typeof.js +35 -2
  103. package/dist/transformation/visitors/typescript.js +34 -1
  104. package/dist/transformation/visitors/unary-expression.js +35 -2
  105. package/dist/transformation/visitors/variable-declaration.js +36 -3
  106. package/dist/transformation/visitors/void.js +35 -2
  107. package/dist/transpilation/bundle.js +37 -2
  108. package/dist/transpilation/diagnostics.d.ts +1 -1
  109. package/dist/transpilation/diagnostics.js +37 -3
  110. package/dist/transpilation/index.js +25 -3
  111. package/dist/transpilation/plugins.js +34 -1
  112. package/dist/transpilation/resolve.js +48 -12
  113. package/dist/transpilation/transformers.js +36 -3
  114. package/dist/transpilation/transpile.js +36 -3
  115. package/dist/transpilation/transpiler.js +56 -9
  116. package/dist/transpilation/utils.js +37 -4
  117. package/dist/tstl.js +37 -4
  118. package/dist/utils.js +37 -4
  119. package/package.json +11 -11
@@ -653,7 +653,6 @@ do
653
653
  self.state = 0
654
654
  self.fulfilledCallbacks = {}
655
655
  self.rejectedCallbacks = {}
656
- self.finallyCallbacks = {}
657
656
  local success, ____error = ____pcall(
658
657
  executor,
659
658
  nil,
@@ -703,14 +702,17 @@ do
703
702
  return self["then"](self, nil, onRejected)
704
703
  end
705
704
  function __TS__Promise.prototype.finally(self, onFinally)
706
- if onFinally then
707
- local ____self_finallyCallbacks_2 = self.finallyCallbacks
708
- ____self_finallyCallbacks_2[#____self_finallyCallbacks_2 + 1] = onFinally
709
- if self.state ~= 0 then
705
+ return self["then"](
706
+ self,
707
+ onFinally and (function(____, value)
710
708
  onFinally(nil)
711
- end
712
- end
713
- return self
709
+ return value
710
+ end) or nil,
711
+ onFinally and (function(____, reason)
712
+ onFinally(nil)
713
+ error(reason, 0)
714
+ end) or nil
715
+ )
714
716
  end
715
717
  function __TS__Promise.prototype.resolve(self, value)
716
718
  if isPromiseLike(value) then
@@ -734,22 +736,11 @@ do
734
736
  end
735
737
  function __TS__Promise.prototype.invokeCallbacks(self, callbacks, value)
736
738
  local callbacksLength = #callbacks
737
- local finallyCallbacks = self.finallyCallbacks
738
- local finallyCallbacksLength = #finallyCallbacks
739
739
  if callbacksLength ~= 0 then
740
740
  for i = 1, callbacksLength - 1 do
741
741
  callbacks[i](callbacks, value)
742
742
  end
743
- if finallyCallbacksLength == 0 then
744
- return callbacks[callbacksLength](callbacks, value)
745
- end
746
- callbacks[callbacksLength](callbacks, value)
747
- end
748
- if finallyCallbacksLength ~= 0 then
749
- for i = 1, finallyCallbacksLength - 1 do
750
- finallyCallbacks[i](finallyCallbacks)
751
- end
752
- return finallyCallbacks[finallyCallbacksLength](finallyCallbacks)
743
+ return callbacks[callbacksLength](callbacks, value)
753
744
  end
754
745
  end
755
746
  function __TS__Promise.prototype.createPromiseResolvingCallback(self, f, resolve, reject)
@@ -904,8 +895,10 @@ local function __TS__ObjectAssign(target, ...)
904
895
  local sources = {...}
905
896
  for i = 1, #sources do
906
897
  local source = sources[i]
907
- for key in pairs(source) do
908
- target[key] = source[key]
898
+ if type(source) == "table" then
899
+ for key in pairs(source) do
900
+ target[key] = source[key]
901
+ end
909
902
  end
910
903
  end
911
904
  return target
@@ -1011,6 +1004,13 @@ do
1011
1004
  metatable = {}
1012
1005
  setmetatable(target, metatable)
1013
1006
  end
1007
+ if not isPrototype and not rawget(metatable, "_isOwnDescriptorMetatable") then
1008
+ local instanceMetatable = {}
1009
+ instanceMetatable._isOwnDescriptorMetatable = true
1010
+ setmetatable(instanceMetatable, metatable)
1011
+ setmetatable(target, instanceMetatable)
1012
+ metatable = instanceMetatable
1013
+ end
1014
1014
  local value = rawget(target, key)
1015
1015
  if value ~= nil then
1016
1016
  rawset(target, key, nil)
@@ -1383,46 +1383,70 @@ do
1383
1383
  return self:entries()
1384
1384
  end
1385
1385
  function Map.prototype.entries(self)
1386
+ local function getFirstKey()
1387
+ return self.firstKey
1388
+ end
1386
1389
  local items = self.items
1387
1390
  local nextKey = self.nextKey
1388
- local key = self.firstKey
1391
+ local key
1392
+ local started = false
1389
1393
  return {
1390
1394
  [Symbol.iterator] = function(self)
1391
1395
  return self
1392
1396
  end,
1393
1397
  next = function(self)
1394
- local result = {done = not key, value = {key, items[key]}}
1395
- key = nextKey[key]
1396
- return result
1398
+ if not started then
1399
+ started = true
1400
+ key = getFirstKey(nil)
1401
+ else
1402
+ key = nextKey[key]
1403
+ end
1404
+ return {done = not key, value = {key, items[key]}}
1397
1405
  end
1398
1406
  }
1399
1407
  end
1400
1408
  function Map.prototype.keys(self)
1409
+ local function getFirstKey()
1410
+ return self.firstKey
1411
+ end
1401
1412
  local nextKey = self.nextKey
1402
- local key = self.firstKey
1413
+ local key
1414
+ local started = false
1403
1415
  return {
1404
1416
  [Symbol.iterator] = function(self)
1405
1417
  return self
1406
1418
  end,
1407
1419
  next = function(self)
1408
- local result = {done = not key, value = key}
1409
- key = nextKey[key]
1410
- return result
1420
+ if not started then
1421
+ started = true
1422
+ key = getFirstKey(nil)
1423
+ else
1424
+ key = nextKey[key]
1425
+ end
1426
+ return {done = not key, value = key}
1411
1427
  end
1412
1428
  }
1413
1429
  end
1414
1430
  function Map.prototype.values(self)
1431
+ local function getFirstKey()
1432
+ return self.firstKey
1433
+ end
1415
1434
  local items = self.items
1416
1435
  local nextKey = self.nextKey
1417
- local key = self.firstKey
1436
+ local key
1437
+ local started = false
1418
1438
  return {
1419
1439
  [Symbol.iterator] = function(self)
1420
1440
  return self
1421
1441
  end,
1422
1442
  next = function(self)
1423
- local result = {done = not key, value = items[key]}
1424
- key = nextKey[key]
1425
- return result
1443
+ if not started then
1444
+ started = true
1445
+ key = getFirstKey(nil)
1446
+ else
1447
+ key = nextKey[key]
1448
+ end
1449
+ return {done = not key, value = items[key]}
1426
1450
  end
1427
1451
  }
1428
1452
  end
@@ -1999,44 +2023,68 @@ do
1999
2023
  return self:values()
2000
2024
  end
2001
2025
  function Set.prototype.entries(self)
2026
+ local function getFirstKey()
2027
+ return self.firstKey
2028
+ end
2002
2029
  local nextKey = self.nextKey
2003
- local key = self.firstKey
2030
+ local key
2031
+ local started = false
2004
2032
  return {
2005
2033
  [Symbol.iterator] = function(self)
2006
2034
  return self
2007
2035
  end,
2008
2036
  next = function(self)
2009
- local result = {done = not key, value = {key, key}}
2010
- key = nextKey[key]
2011
- return result
2037
+ if not started then
2038
+ started = true
2039
+ key = getFirstKey(nil)
2040
+ else
2041
+ key = nextKey[key]
2042
+ end
2043
+ return {done = not key, value = {key, key}}
2012
2044
  end
2013
2045
  }
2014
2046
  end
2015
2047
  function Set.prototype.keys(self)
2048
+ local function getFirstKey()
2049
+ return self.firstKey
2050
+ end
2016
2051
  local nextKey = self.nextKey
2017
- local key = self.firstKey
2052
+ local key
2053
+ local started = false
2018
2054
  return {
2019
2055
  [Symbol.iterator] = function(self)
2020
2056
  return self
2021
2057
  end,
2022
2058
  next = function(self)
2023
- local result = {done = not key, value = key}
2024
- key = nextKey[key]
2025
- return result
2059
+ if not started then
2060
+ started = true
2061
+ key = getFirstKey(nil)
2062
+ else
2063
+ key = nextKey[key]
2064
+ end
2065
+ return {done = not key, value = key}
2026
2066
  end
2027
2067
  }
2028
2068
  end
2029
2069
  function Set.prototype.values(self)
2070
+ local function getFirstKey()
2071
+ return self.firstKey
2072
+ end
2030
2073
  local nextKey = self.nextKey
2031
- local key = self.firstKey
2074
+ local key
2075
+ local started = false
2032
2076
  return {
2033
2077
  [Symbol.iterator] = function(self)
2034
2078
  return self
2035
2079
  end,
2036
2080
  next = function(self)
2037
- local result = {done = not key, value = key}
2038
- key = nextKey[key]
2039
- return result
2081
+ if not started then
2082
+ started = true
2083
+ key = getFirstKey(nil)
2084
+ else
2085
+ key = nextKey[key]
2086
+ end
2087
+ return {done = not key, value = key}
2040
2088
  end
2041
2089
  }
2042
2090
  end
@@ -2241,7 +2289,7 @@ local function __TS__SourceMapTraceBack(fileName, sourceMap)
2241
2289
  end
2242
2290
  local result = string.gsub(
2243
2291
  trace,
2244
- "(%S+)%.lua:(%d+)",
2292
+ "([^%s<]+)%.lua:(%d+)",
2245
2293
  function(file, line) return replacer(nil, file .. ".lua", file .. ".ts", line) end
2246
2294
  )
2247
2295
  local function stringReplacer(____, file, line)
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.lualibDiagnostic = void 0;
4
- const ts = require("typescript");
5
- const tstl = require("..");
6
- const path = require("path");
37
+ const ts = __importStar(require("typescript"));
38
+ const tstl = __importStar(require(".."));
39
+ const path = __importStar(require("path"));
7
40
  const LuaLib_1 = require("../LuaLib");
8
41
  const util_1 = require("./util");
9
42
  const utils_1 = require("../utils");
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.isExportTableDeclaration = isExportTableDeclaration;
4
37
  exports.isExportTable = isExportTable;
@@ -8,7 +41,7 @@ exports.isExportAssignment = isExportAssignment;
8
41
  exports.isRequire = isRequire;
9
42
  exports.isImport = isImport;
10
43
  exports.isExportsReturn = isExportsReturn;
11
- const tstl = require("..");
44
+ const tstl = __importStar(require(".."));
12
45
  function isExportTableDeclaration(node) {
13
46
  return tstl.isVariableDeclarationStatement(node) && isExportTable(node.left[0]);
14
47
  }
@@ -1,11 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.transformArrayConstructorCall = transformArrayConstructorCall;
4
37
  exports.transformArrayPrototypeCall = transformArrayPrototypeCall;
5
38
  exports.transformArrayProperty = transformArrayProperty;
6
- const ts = require("typescript");
39
+ const ts = __importStar(require("typescript"));
7
40
  const CompilerOptions_1 = require("../../CompilerOptions");
8
- const lua = require("../../LuaAST");
41
+ const lua = __importStar(require("../../LuaAST"));
9
42
  const diagnostics_1 = require("../utils/diagnostics");
10
43
  const lualib_1 = require("../utils/lualib");
11
44
  const call_1 = require("../visitors/call");
@@ -1,8 +1,41 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.transformConsoleCall = transformConsoleCall;
4
- const ts = require("typescript");
5
- const lua = require("../../LuaAST");
37
+ const ts = __importStar(require("typescript"));
38
+ const lua = __importStar(require("../../LuaAST"));
6
39
  const diagnostics_1 = require("../utils/diagnostics");
7
40
  const call_1 = require("../visitors/call");
8
41
  const isStringFormatTemplate = (node) => ts.isStringLiteral(node) && node.text.includes("%");
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.transformFunctionPrototypeCall = transformFunctionPrototypeCall;
4
37
  exports.transformFunctionProperty = transformFunctionProperty;
5
38
  const CompilerOptions_1 = require("../../CompilerOptions");
6
- const lua = require("../../LuaAST");
39
+ const lua = __importStar(require("../../LuaAST"));
7
40
  const diagnostics_1 = require("../utils/diagnostics");
8
41
  const function_context_1 = require("../utils/function-context");
9
42
  const lualib_1 = require("../utils/lualib");
@@ -1,12 +1,45 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.transformBuiltinPropertyAccessExpression = transformBuiltinPropertyAccessExpression;
4
37
  exports.transformBuiltinCallExpression = transformBuiltinCallExpression;
5
38
  exports.transformBuiltinIdentifierExpression = transformBuiltinIdentifierExpression;
6
39
  exports.checkForLuaLibType = checkForLuaLibType;
7
40
  exports.tryGetStandardLibrarySymbolOfType = tryGetStandardLibrarySymbolOfType;
8
- const ts = require("typescript");
9
- const lua = require("../../LuaAST");
41
+ const ts = __importStar(require("typescript"));
42
+ const lua = __importStar(require("../../LuaAST"));
10
43
  const lua_ast_1 = require("../utils/lua-ast");
11
44
  const lualib_1 = require("../utils/lualib");
12
45
  const symbols_1 = require("../utils/symbols");
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.transformMathProperty = transformMathProperty;
4
37
  exports.transformMathCall = transformMathCall;
5
38
  const CompilerOptions_1 = require("../../CompilerOptions");
6
- const lua = require("../../LuaAST");
39
+ const lua = __importStar(require("../../LuaAST"));
7
40
  const diagnostics_1 = require("../utils/diagnostics");
8
41
  const lualib_1 = require("../utils/lualib");
9
42
  const call_1 = require("../visitors/call");
@@ -33,13 +66,18 @@ function transformMathCall(context, node, calledMethod) {
33
66
  const math = lua.createIdentifier("math");
34
67
  const expressionName = calledMethod.name.text;
35
68
  switch (expressionName) {
36
- // Lua 5.3: math.atan(y, x)
69
+ // Lua 5.3+: math.atan(y, x)
37
70
  // Otherwise: math.atan2(y, x)
38
71
  case "atan2": {
39
72
  if (context.luaTarget === CompilerOptions_1.LuaTarget.Universal) {
40
73
  return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.MathAtan2, node, ...params);
41
74
  }
42
- const method = lua.createStringLiteral(context.luaTarget === CompilerOptions_1.LuaTarget.Lua53 ? "atan" : "atan2");
75
+ const useAtan2 = context.luaTarget === CompilerOptions_1.LuaTarget.Lua50 ||
76
+ context.luaTarget === CompilerOptions_1.LuaTarget.Lua51 ||
77
+ context.luaTarget === CompilerOptions_1.LuaTarget.Lua52 ||
78
+ context.luaTarget === CompilerOptions_1.LuaTarget.LuaJIT ||
79
+ context.luaTarget === CompilerOptions_1.LuaTarget.Luau;
80
+ const method = lua.createStringLiteral(useAtan2 ? "atan2" : "atan");
43
81
  return lua.createCallExpression(lua.createTableIndexExpression(math, method), params, node);
44
82
  }
45
83
  // (math.log(x) / Math.LNe)
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.transformNumberPrototypeCall = transformNumberPrototypeCall;
4
37
  exports.transformNumberProperty = transformNumberProperty;
5
38
  exports.transformNumberConstructorCall = transformNumberConstructorCall;
6
- const lua = require("../../LuaAST");
39
+ const lua = __importStar(require("../../LuaAST"));
7
40
  const lua_ast_1 = require("../utils/lua-ast");
8
41
  const diagnostics_1 = require("../utils/diagnostics");
9
42
  const lualib_1 = require("../utils/lualib");
@@ -59,13 +92,17 @@ function transformNumberProperty(context, node) {
59
92
  case "EPSILON":
60
93
  return lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createNumericLiteral(-52), lua.SyntaxKind.PowerOperator, node);
61
94
  case "MIN_VALUE":
62
- return lua.createBinaryExpression(lua.createNumericLiteral(-2), lua.createNumericLiteral(1074), lua.SyntaxKind.PowerOperator, node);
95
+ // 2 ^ -1074 = 5e-324 (smallest positive double)
96
+ return lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createNumericLiteral(-1074), lua.SyntaxKind.PowerOperator, node);
63
97
  case "MIN_SAFE_INTEGER":
64
- return lua.createBinaryExpression(lua.createNumericLiteral(-2), lua.createNumericLiteral(1074), lua.SyntaxKind.PowerOperator, node);
98
+ // -(2 ^ 53 - 1) = -9007199254740991
99
+ return lua.createUnaryExpression(lua.createParenthesizedExpression(lua.createBinaryExpression(lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createNumericLiteral(53), lua.SyntaxKind.PowerOperator), lua.createNumericLiteral(1), lua.SyntaxKind.SubtractionOperator)), lua.SyntaxKind.NegationOperator, node);
65
100
  case "MAX_SAFE_INTEGER":
66
- return lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createNumericLiteral(1024), lua.SyntaxKind.PowerOperator, node);
101
+ // 2 ^ 53 - 1 = 9007199254740991
102
+ return lua.createBinaryExpression(lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createNumericLiteral(53), lua.SyntaxKind.PowerOperator), lua.createNumericLiteral(1), lua.SyntaxKind.SubtractionOperator, node);
67
103
  case "MAX_VALUE":
68
- return lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createNumericLiteral(1024), lua.SyntaxKind.PowerOperator, node);
104
+ // (2 - 2 ^ -52) * 2 ^ 1023 = 1.7976931348623157e+308
105
+ return lua.createBinaryExpression(lua.createParenthesizedExpression(lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createNumericLiteral(-52), lua.SyntaxKind.PowerOperator), lua.SyntaxKind.SubtractionOperator)), lua.createBinaryExpression(lua.createNumericLiteral(2), lua.createNumericLiteral(1023), lua.SyntaxKind.PowerOperator), lua.SyntaxKind.MultiplicationOperator, node);
69
106
  default:
70
107
  context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(node.name, "Number", name));
71
108
  }