typescript-to-lua 1.4.0 → 1.4.3
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.
- package/dist/CompilerOptions.d.ts +4 -1
- package/dist/LuaAST.d.ts +9 -7
- package/dist/LuaAST.js +19 -13
- package/dist/LuaLib.d.ts +2 -2
- package/dist/LuaLib.js +2 -2
- package/dist/LuaPrinter.js +10 -11
- package/dist/cli/parse.js +5 -0
- package/dist/index.d.ts +1 -1
- package/dist/lualib/ArrayConcat.lua +16 -12
- package/dist/lualib/ArrayEvery.lua +4 -8
- package/dist/lualib/ArrayFilter.lua +6 -8
- package/dist/lualib/ArrayFind.lua +4 -7
- package/dist/lualib/ArrayFindIndex.lua +4 -9
- package/dist/lualib/ArrayFlat.lua +17 -7
- package/dist/lualib/ArrayFlatMap.lua +11 -10
- package/dist/lualib/ArrayForEach.lua +3 -7
- package/dist/lualib/ArrayFrom.lua +29 -0
- package/dist/lualib/ArrayIncludes.lua +2 -2
- package/dist/lualib/ArrayIndexOf.lua +13 -21
- package/dist/lualib/ArrayIsArray.lua +1 -1
- package/dist/lualib/ArrayJoin.lua +4 -7
- package/dist/lualib/ArrayMap.lua +5 -9
- package/dist/lualib/ArrayPush.lua +6 -4
- package/dist/lualib/ArrayPushArray.lua +8 -0
- package/dist/lualib/ArrayReduce.lua +8 -8
- package/dist/lualib/ArrayReduceRight.lua +8 -8
- package/dist/lualib/ArrayReverse.lua +7 -7
- package/dist/lualib/ArraySetLength.lua +3 -7
- package/dist/lualib/ArraySlice.lua +26 -19
- package/dist/lualib/ArraySome.lua +4 -8
- package/dist/lualib/ArraySort.lua +4 -4
- package/dist/lualib/ArraySplice.lua +47 -58
- package/dist/lualib/ArrayToObject.lua +3 -7
- package/dist/lualib/ArrayUnshift.lua +11 -8
- package/dist/lualib/FunctionBind.lua +5 -11
- package/dist/lualib/ObjectAssign.lua +5 -7
- package/dist/lualib/ObjectEntries.lua +3 -1
- package/dist/lualib/ObjectKeys.lua +3 -1
- package/dist/lualib/ObjectValues.lua +3 -1
- package/dist/lualib/Promise.lua +8 -7
- package/dist/lualib/PromiseAny.lua +3 -3
- package/dist/lualib/PromiseRace.lua +1 -1
- package/dist/lualib/Spread.lua +5 -7
- package/dist/lualib/StringReplace.lua +17 -14
- package/dist/lualib/StringReplaceAll.lua +36 -29
- package/dist/lualib/StringSplit.lua +32 -32
- package/dist/lualib/lualib_bundle.lua +425 -421
- package/dist/lualib/lualib_module_info.json +21 -22
- package/dist/transformation/builtins/array.d.ts +2 -2
- package/dist/transformation/builtins/array.js +40 -2
- package/dist/transformation/builtins/promise.d.ts +1 -0
- package/dist/transformation/builtins/promise.js +2 -1
- package/dist/transformation/builtins/string.js +1 -1
- package/dist/transformation/utils/diagnostics.d.ts +7 -2
- package/dist/transformation/utils/diagnostics.js +4 -1
- package/dist/transformation/utils/lua-ast.d.ts +1 -0
- package/dist/transformation/utils/lua-ast.js +6 -2
- package/dist/transformation/utils/typescript/index.d.ts +1 -0
- package/dist/transformation/utils/typescript/index.js +9 -1
- package/dist/transformation/visitors/call.js +4 -0
- package/dist/transformation/visitors/class/index.js +1 -1
- package/dist/transformation/visitors/class/members/accessors.js +1 -1
- package/dist/transformation/visitors/class/members/constructor.js +1 -1
- package/dist/transformation/visitors/errors.js +4 -2
- package/dist/transformation/visitors/function.js +4 -4
- package/dist/transformation/visitors/modules/import.d.ts +1 -0
- package/dist/transformation/visitors/modules/import.js +9 -1
- package/dist/transformation/visitors/spread.js +1 -7
- package/dist/transpilation/plugins.d.ts +10 -3
- package/dist/transpilation/plugins.js +6 -2
- package/dist/transpilation/resolve.js +1 -0
- package/dist/transpilation/transpile.d.ts +1 -1
- package/dist/transpilation/transpile.js +1 -6
- package/dist/transpilation/transpiler.js +19 -9
- package/dist/transpilation/utils.d.ts +2 -0
- package/package.json +1 -1
- package/dist/lualib/ArrayShift.lua +0 -3
- package/dist/lualib/StringConcat.lua +0 -8
|
@@ -40,6 +40,14 @@
|
|
|
40
40
|
"__TS__ArrayFindIndex"
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
|
+
"ArrayFrom": {
|
|
44
|
+
"exports": [
|
|
45
|
+
"__TS__ArrayFrom"
|
|
46
|
+
],
|
|
47
|
+
"dependencies": [
|
|
48
|
+
"Iterator"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
43
51
|
"ArrayIncludes": {
|
|
44
52
|
"exports": [
|
|
45
53
|
"__TS__ArrayIncludes"
|
|
@@ -70,6 +78,11 @@
|
|
|
70
78
|
"__TS__ArrayPush"
|
|
71
79
|
]
|
|
72
80
|
},
|
|
81
|
+
"ArrayPushArray": {
|
|
82
|
+
"exports": [
|
|
83
|
+
"__TS__ArrayPushArray"
|
|
84
|
+
]
|
|
85
|
+
},
|
|
73
86
|
"ArrayReduce": {
|
|
74
87
|
"exports": [
|
|
75
88
|
"__TS__ArrayReduce"
|
|
@@ -85,11 +98,6 @@
|
|
|
85
98
|
"__TS__ArrayReverse"
|
|
86
99
|
]
|
|
87
100
|
},
|
|
88
|
-
"ArrayShift": {
|
|
89
|
-
"exports": [
|
|
90
|
-
"__TS__ArrayShift"
|
|
91
|
-
]
|
|
92
|
-
},
|
|
93
101
|
"ArrayUnshift": {
|
|
94
102
|
"exports": [
|
|
95
103
|
"__TS__ArrayUnshift"
|
|
@@ -126,7 +134,7 @@
|
|
|
126
134
|
],
|
|
127
135
|
"dependencies": [
|
|
128
136
|
"ArrayIsArray",
|
|
129
|
-
"
|
|
137
|
+
"ArrayFlat"
|
|
130
138
|
]
|
|
131
139
|
},
|
|
132
140
|
"ArrayFlatMap": {
|
|
@@ -134,8 +142,7 @@
|
|
|
134
142
|
"__TS__ArrayFlatMap"
|
|
135
143
|
],
|
|
136
144
|
"dependencies": [
|
|
137
|
-
"ArrayIsArray"
|
|
138
|
-
"ArrayConcat"
|
|
145
|
+
"ArrayIsArray"
|
|
139
146
|
]
|
|
140
147
|
},
|
|
141
148
|
"ArraySetLength": {
|
|
@@ -224,7 +231,8 @@
|
|
|
224
231
|
"__TS__FunctionBind"
|
|
225
232
|
],
|
|
226
233
|
"dependencies": [
|
|
227
|
-
"Unpack"
|
|
234
|
+
"Unpack",
|
|
235
|
+
"ArrayUnshift"
|
|
228
236
|
]
|
|
229
237
|
},
|
|
230
238
|
"Generator": {
|
|
@@ -381,8 +389,7 @@
|
|
|
381
389
|
"New",
|
|
382
390
|
"InstanceOf",
|
|
383
391
|
"Class",
|
|
384
|
-
"FunctionBind"
|
|
385
|
-
"ArrayPush"
|
|
392
|
+
"FunctionBind"
|
|
386
393
|
]
|
|
387
394
|
},
|
|
388
395
|
"PromiseAll": {
|
|
@@ -414,7 +421,6 @@
|
|
|
414
421
|
"dependencies": [
|
|
415
422
|
"InstanceOf",
|
|
416
423
|
"Promise",
|
|
417
|
-
"ArrayPush",
|
|
418
424
|
"Iterator",
|
|
419
425
|
"New"
|
|
420
426
|
]
|
|
@@ -426,7 +432,6 @@
|
|
|
426
432
|
"dependencies": [
|
|
427
433
|
"InstanceOf",
|
|
428
434
|
"Promise",
|
|
429
|
-
"ArrayPush",
|
|
430
435
|
"Iterator",
|
|
431
436
|
"New"
|
|
432
437
|
]
|
|
@@ -512,11 +517,6 @@
|
|
|
512
517
|
"__TS__StringCharCodeAt"
|
|
513
518
|
]
|
|
514
519
|
},
|
|
515
|
-
"StringConcat": {
|
|
516
|
-
"exports": [
|
|
517
|
-
"__TS__StringConcat"
|
|
518
|
-
]
|
|
519
|
-
},
|
|
520
520
|
"StringEndsWith": {
|
|
521
521
|
"exports": [
|
|
522
522
|
"__TS__StringEndsWith"
|
|
@@ -545,6 +545,9 @@
|
|
|
545
545
|
"StringReplaceAll": {
|
|
546
546
|
"exports": [
|
|
547
547
|
"__TS__StringReplaceAll"
|
|
548
|
+
],
|
|
549
|
+
"dependencies": [
|
|
550
|
+
"StringSplit"
|
|
548
551
|
]
|
|
549
552
|
},
|
|
550
553
|
"StringSlice": {
|
|
@@ -555,10 +558,6 @@
|
|
|
555
558
|
"StringSplit": {
|
|
556
559
|
"exports": [
|
|
557
560
|
"__TS__StringSplit"
|
|
558
|
-
],
|
|
559
|
-
"dependencies": [
|
|
560
|
-
"StringAccess",
|
|
561
|
-
"StringSubstring"
|
|
562
561
|
]
|
|
563
562
|
},
|
|
564
563
|
"StringStartsWith": {
|
|
@@ -2,6 +2,6 @@ import * as ts from "typescript";
|
|
|
2
2
|
import * as lua from "../../LuaAST";
|
|
3
3
|
import { TransformationContext } from "../context";
|
|
4
4
|
import { PropertyCallExpression } from "../visitors/call";
|
|
5
|
-
export declare function transformArrayConstructorCall(context: TransformationContext, node: PropertyCallExpression): lua.
|
|
6
|
-
export declare function transformArrayPrototypeCall(context: TransformationContext, node: PropertyCallExpression): lua.
|
|
5
|
+
export declare function transformArrayConstructorCall(context: TransformationContext, node: PropertyCallExpression): lua.Expression | undefined;
|
|
6
|
+
export declare function transformArrayPrototypeCall(context: TransformationContext, node: PropertyCallExpression): lua.Expression | undefined;
|
|
7
7
|
export declare function transformArrayProperty(context: TransformationContext, node: ts.PropertyAccessExpression): lua.UnaryExpression | undefined;
|
|
@@ -1,24 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transformArrayProperty = exports.transformArrayPrototypeCall = exports.transformArrayConstructorCall = void 0;
|
|
4
|
+
const ts = require("typescript");
|
|
4
5
|
const lua = require("../../LuaAST");
|
|
5
6
|
const diagnostics_1 = require("../utils/diagnostics");
|
|
6
7
|
const lualib_1 = require("../utils/lualib");
|
|
7
8
|
const call_1 = require("../visitors/call");
|
|
8
9
|
const typescript_1 = require("../utils/typescript");
|
|
10
|
+
const expression_list_1 = require("../visitors/expression-list");
|
|
11
|
+
const lua_ast_1 = require("../utils/lua-ast");
|
|
9
12
|
function transformArrayConstructorCall(context, node) {
|
|
10
13
|
const expression = node.expression;
|
|
11
14
|
const signature = context.checker.getResolvedSignature(node);
|
|
12
15
|
const params = (0, call_1.transformArguments)(context, node.arguments, signature);
|
|
13
16
|
const expressionName = expression.name.text;
|
|
14
17
|
switch (expressionName) {
|
|
18
|
+
case "from":
|
|
19
|
+
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayFrom, node, ...params);
|
|
15
20
|
case "isArray":
|
|
16
21
|
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayIsArray, node, ...params);
|
|
22
|
+
case "of":
|
|
23
|
+
return (0, lua_ast_1.wrapInTable)(...params);
|
|
17
24
|
default:
|
|
18
25
|
context.diagnostics.push((0, diagnostics_1.unsupportedProperty)(expression.name, "Array", expressionName));
|
|
19
26
|
}
|
|
20
27
|
}
|
|
21
28
|
exports.transformArrayConstructorCall = transformArrayConstructorCall;
|
|
29
|
+
/**
|
|
30
|
+
* Optimized single element Array.push
|
|
31
|
+
*
|
|
32
|
+
* array[#array+1] = el
|
|
33
|
+
* return (#array + 1)
|
|
34
|
+
*/
|
|
35
|
+
function transformSingleElementArrayPush(context, node, caller, param) {
|
|
36
|
+
const expressionIsUsed = !ts.isExpressionStatement((0, typescript_1.findFirstNonOuterParent)(node));
|
|
37
|
+
const arrayIdentifier = lua.isIdentifier(caller) ? caller : (0, expression_list_1.moveToPrecedingTemp)(context, caller);
|
|
38
|
+
// #array + 1
|
|
39
|
+
let lengthExpression = lua.createBinaryExpression(lua.createUnaryExpression(arrayIdentifier, lua.SyntaxKind.LengthOperator), lua.createNumericLiteral(1), lua.SyntaxKind.AdditionOperator);
|
|
40
|
+
if (expressionIsUsed) {
|
|
41
|
+
// store length in a temp
|
|
42
|
+
lengthExpression = (0, expression_list_1.moveToPrecedingTemp)(context, lengthExpression);
|
|
43
|
+
}
|
|
44
|
+
const pushStatement = lua.createAssignmentStatement(lua.createTableIndexExpression(arrayIdentifier, lengthExpression), param, node);
|
|
45
|
+
context.addPrecedingStatements(pushStatement);
|
|
46
|
+
return expressionIsUsed ? lengthExpression : lua.createNilLiteral();
|
|
47
|
+
}
|
|
22
48
|
function transformArrayPrototypeCall(context, node) {
|
|
23
49
|
const expression = node.expression;
|
|
24
50
|
const signature = context.checker.getResolvedSignature(node);
|
|
@@ -30,11 +56,20 @@ function transformArrayPrototypeCall(context, node) {
|
|
|
30
56
|
case "entries":
|
|
31
57
|
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayEntries, node, caller);
|
|
32
58
|
case "push":
|
|
59
|
+
if (node.arguments.length === 1) {
|
|
60
|
+
const param = params[0];
|
|
61
|
+
if ((0, lua_ast_1.isUnpackCall)(param)) {
|
|
62
|
+
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayPushArray, node, caller, param.params[0]);
|
|
63
|
+
}
|
|
64
|
+
if (!lua.isDotsLiteral(param)) {
|
|
65
|
+
return transformSingleElementArrayPush(context, node, caller, param);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
33
68
|
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayPush, node, caller, ...params);
|
|
34
69
|
case "reverse":
|
|
35
70
|
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayReverse, node, caller);
|
|
36
71
|
case "shift":
|
|
37
|
-
return (
|
|
72
|
+
return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("table"), lua.createStringLiteral("remove")), [caller, lua.createNumericLiteral(1)], node);
|
|
38
73
|
case "unshift":
|
|
39
74
|
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ArrayUnshift, node, caller, ...params);
|
|
40
75
|
case "sort":
|
|
@@ -72,11 +107,14 @@ function transformArrayPrototypeCall(context, node) {
|
|
|
72
107
|
const elementType = context.checker.getElementTypeOfArrayType(callerType);
|
|
73
108
|
if (elementType && ((0, typescript_1.isStringType)(context, elementType) || (0, typescript_1.isNumberType)(context, elementType))) {
|
|
74
109
|
const defaultSeparatorLiteral = lua.createStringLiteral(",");
|
|
110
|
+
const param = params[0];
|
|
75
111
|
const parameters = [
|
|
76
112
|
caller,
|
|
77
113
|
node.arguments.length === 0
|
|
78
114
|
? defaultSeparatorLiteral
|
|
79
|
-
: lua.
|
|
115
|
+
: lua.isStringLiteral(param)
|
|
116
|
+
? param
|
|
117
|
+
: lua.createBinaryExpression(param, defaultSeparatorLiteral, lua.SyntaxKind.OrOperator),
|
|
80
118
|
];
|
|
81
119
|
return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("table"), lua.createStringLiteral("concat")), parameters, node);
|
|
82
120
|
}
|
|
@@ -5,3 +5,4 @@ import { PropertyCallExpression } from "../visitors/call";
|
|
|
5
5
|
export declare function isPromiseClass(context: TransformationContext, node: ts.Identifier): boolean;
|
|
6
6
|
export declare function createPromiseIdentifier(original: ts.Node): lua.Identifier;
|
|
7
7
|
export declare function transformPromiseConstructorCall(context: TransformationContext, node: PropertyCallExpression): lua.Expression | undefined;
|
|
8
|
+
export declare function createStaticPromiseFunctionAccessor(functionName: string, node: ts.Node): lua.TableIndexExpression;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transformPromiseConstructorCall = exports.createPromiseIdentifier = exports.isPromiseClass = void 0;
|
|
3
|
+
exports.createStaticPromiseFunctionAccessor = exports.transformPromiseConstructorCall = exports.createPromiseIdentifier = exports.isPromiseClass = void 0;
|
|
4
4
|
const lua = require("../../LuaAST");
|
|
5
5
|
const diagnostics_1 = require("../utils/diagnostics");
|
|
6
6
|
const lualib_1 = require("../utils/lualib");
|
|
@@ -43,4 +43,5 @@ exports.transformPromiseConstructorCall = transformPromiseConstructorCall;
|
|
|
43
43
|
function createStaticPromiseFunctionAccessor(functionName, node) {
|
|
44
44
|
return lua.createTableIndexExpression(lua.createIdentifier("__TS__Promise"), lua.createStringLiteral(functionName), node);
|
|
45
45
|
}
|
|
46
|
+
exports.createStaticPromiseFunctionAccessor = createStaticPromiseFunctionAccessor;
|
|
46
47
|
//# sourceMappingURL=promise.js.map
|
|
@@ -21,7 +21,7 @@ function transformStringPrototypeCall(context, node) {
|
|
|
21
21
|
case "replaceAll":
|
|
22
22
|
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.StringReplaceAll, node, caller, ...params);
|
|
23
23
|
case "concat":
|
|
24
|
-
return (
|
|
24
|
+
return lua.createCallExpression(lua.createTableIndexExpression(lua.createIdentifier("table"), lua.createStringLiteral("concat")), [(0, lua_ast_1.wrapInTable)(caller, ...params)], node);
|
|
25
25
|
case "indexOf": {
|
|
26
26
|
const stringExpression = createStringCall("find", node, caller, params[0], params[1]
|
|
27
27
|
? // string.find handles negative indexes by making it relative to string end, but for indexOf it's the same as 0
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as ts from "typescript";
|
|
2
|
-
import { LuaTarget } from "../../CompilerOptions";
|
|
2
|
+
import { LuaTarget, TypeScriptToLuaOptions } from "../../CompilerOptions";
|
|
3
3
|
import { AnnotationKind } from "./annotations";
|
|
4
4
|
export declare const unsupportedNodeKind: ((node: ts.Node, kind: ts.SyntaxKind) => ts.Diagnostic) & {
|
|
5
5
|
code: number;
|
|
@@ -43,7 +43,11 @@ export declare const unsupportedAccessorInObjectLiteral: ((node: ts.Node, ...arg
|
|
|
43
43
|
export declare const unsupportedRightShiftOperator: ((node: ts.Node, ...args: any[]) => ts.Diagnostic) & {
|
|
44
44
|
code: number;
|
|
45
45
|
};
|
|
46
|
-
|
|
46
|
+
declare type NonUniversalTarget = Exclude<LuaTarget, LuaTarget.Universal>;
|
|
47
|
+
export declare const unsupportedForTarget: ((node: ts.Node, functionality: string, version: NonUniversalTarget) => ts.Diagnostic) & {
|
|
48
|
+
code: number;
|
|
49
|
+
};
|
|
50
|
+
export declare const unsupportedForTargetButOverrideAvailable: ((node: ts.Node, functionality: string, version: NonUniversalTarget, optionName: keyof TypeScriptToLuaOptions) => ts.Diagnostic) & {
|
|
47
51
|
code: number;
|
|
48
52
|
};
|
|
49
53
|
export declare const unsupportedProperty: ((node: ts.Node, parentName: string, property: string) => ts.Diagnostic) & {
|
|
@@ -97,3 +101,4 @@ export declare const unsupportedOptionalCompileMembersOnly: ((node: ts.Node, ...
|
|
|
97
101
|
export declare const undefinedInArrayLiteral: ((node: ts.Node, ...args: any[]) => ts.Diagnostic) & {
|
|
98
102
|
code: number;
|
|
99
103
|
};
|
|
104
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.undefinedInArrayLiteral = exports.unsupportedOptionalCompileMembersOnly = exports.unsupportedBuiltinOptionalCall = exports.awaitMustBeInAsyncFunction = exports.notAllowedOptionalAssignment = exports.annotationDeprecated = exports.annotationRemoved = exports.invalidTableExtensionUse = exports.invalidOperatorMappingUse = exports.invalidMultiReturnAccess = exports.invalidMultiTypeToEmptyPatternOrArrayLiteral = exports.invalidMultiTypeToNonArrayLiteral = exports.invalidMultiFunctionReturnType = exports.invalidMultiFunctionUse = exports.unsupportedVarDeclaration = exports.invalidAmbientIdentifierName = exports.unsupportedProperty = exports.unsupportedForTarget = exports.unsupportedRightShiftOperator = exports.unsupportedAccessorInObjectLiteral = exports.invalidPairsIterableWithoutDestructuring = exports.invalidMultiIterableWithoutDestructuring = exports.invalidRangeControlVariable = exports.invalidVarargUse = exports.invalidRangeUse = exports.annotationInvalidArgumentCount = exports.decoratorInvalidContext = exports.unsupportedOverloadAssignment = exports.unsupportedSelfFunctionConversion = exports.unsupportedNoSelfFunctionConversion = exports.forbiddenForIn = exports.unsupportedNodeKind = void 0;
|
|
3
|
+
exports.undefinedInArrayLiteral = exports.unsupportedOptionalCompileMembersOnly = exports.unsupportedBuiltinOptionalCall = exports.awaitMustBeInAsyncFunction = exports.notAllowedOptionalAssignment = exports.annotationDeprecated = exports.annotationRemoved = exports.invalidTableExtensionUse = exports.invalidOperatorMappingUse = exports.invalidMultiReturnAccess = exports.invalidMultiTypeToEmptyPatternOrArrayLiteral = exports.invalidMultiTypeToNonArrayLiteral = exports.invalidMultiFunctionReturnType = exports.invalidMultiFunctionUse = exports.unsupportedVarDeclaration = exports.invalidAmbientIdentifierName = exports.unsupportedProperty = exports.unsupportedForTargetButOverrideAvailable = exports.unsupportedForTarget = exports.unsupportedRightShiftOperator = exports.unsupportedAccessorInObjectLiteral = exports.invalidPairsIterableWithoutDestructuring = exports.invalidMultiIterableWithoutDestructuring = exports.invalidRangeControlVariable = exports.invalidVarargUse = exports.invalidRangeUse = exports.annotationInvalidArgumentCount = exports.decoratorInvalidContext = exports.unsupportedOverloadAssignment = exports.unsupportedSelfFunctionConversion = exports.unsupportedNoSelfFunctionConversion = exports.forbiddenForIn = exports.unsupportedNodeKind = void 0;
|
|
4
4
|
const ts = require("typescript");
|
|
5
5
|
const CompilerOptions_1 = require("../../CompilerOptions");
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
@@ -41,6 +41,9 @@ exports.unsupportedAccessorInObjectLiteral = createErrorDiagnosticFactory("Acces
|
|
|
41
41
|
exports.unsupportedRightShiftOperator = createErrorDiagnosticFactory("Right shift operator is not supported for target Lua 5.3. Use `>>>` instead.");
|
|
42
42
|
const getLuaTargetName = (version) => (version === CompilerOptions_1.LuaTarget.LuaJIT ? "LuaJIT" : `Lua ${version}`);
|
|
43
43
|
exports.unsupportedForTarget = createErrorDiagnosticFactory((functionality, version) => `${functionality} is/are not supported for target ${getLuaTargetName(version)}.`);
|
|
44
|
+
exports.unsupportedForTargetButOverrideAvailable = createErrorDiagnosticFactory((functionality, version, optionName) => `As a precaution, ${functionality} is/are not supported for target ${getLuaTargetName(version)} due to language features/limitations. ` +
|
|
45
|
+
`However "--${optionName}" can be used to bypass this precaution. ` +
|
|
46
|
+
"See https://typescripttolua.github.io/docs/configuration for more information.");
|
|
44
47
|
exports.unsupportedProperty = createErrorDiagnosticFactory((parentName, property) => `${parentName}.${property} is unsupported.`);
|
|
45
48
|
exports.invalidAmbientIdentifierName = createErrorDiagnosticFactory((text) => `Invalid ambient identifier name '${text}'. Ambient identifiers must be valid lua identifiers.`);
|
|
46
49
|
exports.unsupportedVarDeclaration = createErrorDiagnosticFactory("`var` declarations are not supported. Use `let` or `const` instead.");
|
|
@@ -8,6 +8,7 @@ export declare function createExportsIdentifier(): lua.Identifier;
|
|
|
8
8
|
export declare function addToNumericExpression(expression: lua.Expression, change: number): lua.Expression;
|
|
9
9
|
export declare function getNumberLiteralValue(expression?: lua.Expression): number | undefined;
|
|
10
10
|
export declare function createUnpackCall(context: TransformationContext, expression: lua.Expression, tsOriginal?: ts.Node): lua.Expression;
|
|
11
|
+
export declare function isUnpackCall(node: lua.Node): boolean;
|
|
11
12
|
export declare function wrapInTable(...expressions: lua.Expression[]): lua.TableExpression;
|
|
12
13
|
export declare function wrapInToStringForConcat(expression: lua.Expression): lua.Expression;
|
|
13
14
|
export declare function createHoistableVariableDeclarationStatement(context: TransformationContext, identifier: lua.Identifier, initializer?: lua.Expression, tsOriginal?: ts.Node): lua.AssignmentStatement | lua.VariableDeclarationStatement;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createNaN = exports.createLocalOrExportedOrGlobalDeclaration = exports.createHoistableVariableDeclarationStatement = exports.wrapInToStringForConcat = exports.wrapInTable = exports.createUnpackCall = exports.getNumberLiteralValue = exports.addToNumericExpression = exports.createExportsIdentifier = exports.createSelfIdentifier = exports.unwrapVisitorResult = void 0;
|
|
3
|
+
exports.createNaN = exports.createLocalOrExportedOrGlobalDeclaration = exports.createHoistableVariableDeclarationStatement = exports.wrapInToStringForConcat = exports.wrapInTable = exports.isUnpackCall = exports.createUnpackCall = exports.getNumberLiteralValue = exports.addToNumericExpression = exports.createExportsIdentifier = exports.createSelfIdentifier = exports.unwrapVisitorResult = void 0;
|
|
4
4
|
const ts = require("typescript");
|
|
5
5
|
const CompilerOptions_1 = require("../../CompilerOptions");
|
|
6
6
|
const lua = require("../../LuaAST");
|
|
@@ -62,9 +62,13 @@ function createUnpackCall(context, expression, tsOriginal) {
|
|
|
62
62
|
const unpack = context.luaTarget === CompilerOptions_1.LuaTarget.Lua51 || context.luaTarget === CompilerOptions_1.LuaTarget.LuaJIT
|
|
63
63
|
? lua.createIdentifier("unpack")
|
|
64
64
|
: lua.createTableIndexExpression(lua.createIdentifier("table"), lua.createStringLiteral("unpack"));
|
|
65
|
-
return lua.createCallExpression(unpack, [expression], tsOriginal);
|
|
65
|
+
return lua.setNodeFlags(lua.createCallExpression(unpack, [expression], tsOriginal), lua.NodeFlags.TableUnpackCall);
|
|
66
66
|
}
|
|
67
67
|
exports.createUnpackCall = createUnpackCall;
|
|
68
|
+
function isUnpackCall(node) {
|
|
69
|
+
return lua.isCallExpression(node) && (node.flags & lua.NodeFlags.TableUnpackCall) !== 0;
|
|
70
|
+
}
|
|
71
|
+
exports.isUnpackCall = isUnpackCall;
|
|
68
72
|
function wrapInTable(...expressions) {
|
|
69
73
|
const fields = expressions.map(e => lua.createTableFieldExpression(e));
|
|
70
74
|
return lua.createTableExpression(fields);
|
|
@@ -7,6 +7,7 @@ export declare function hasExportEquals(sourceFile: ts.SourceFile): boolean;
|
|
|
7
7
|
* Search up until finding a node satisfying the callback
|
|
8
8
|
*/
|
|
9
9
|
export declare function findFirstNodeAbove<T extends ts.Node>(node: ts.Node, callback: (n: ts.Node) => n is T): T | undefined;
|
|
10
|
+
export declare function findFirstNonOuterParent(node: ts.Node): ts.Node;
|
|
10
11
|
export declare function getFirstDeclarationInFile(symbol: ts.Symbol, sourceFile: ts.SourceFile): ts.Declaration | undefined;
|
|
11
12
|
export declare function isStandardLibraryType(context: TransformationContext, type: ts.Type, name: string | undefined): boolean;
|
|
12
13
|
export declare function hasStandardLibrarySignature(context: TransformationContext, callExpression: ts.CallExpression): boolean;
|
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.isConstIdentifier = exports.getFunctionTypeForCall = exports.isExpressionWithEvaluationEffect = exports.getAllCallSignatures = exports.inferAssignedType = exports.hasStandardLibrarySignature = exports.isStandardLibraryType = exports.getFirstDeclarationInFile = exports.findFirstNodeAbove = exports.hasExportEquals = void 0;
|
|
17
|
+
exports.isConstIdentifier = exports.getFunctionTypeForCall = exports.isExpressionWithEvaluationEffect = exports.getAllCallSignatures = exports.inferAssignedType = exports.hasStandardLibrarySignature = exports.isStandardLibraryType = exports.getFirstDeclarationInFile = exports.findFirstNonOuterParent = exports.findFirstNodeAbove = exports.hasExportEquals = void 0;
|
|
18
18
|
const ts = require("typescript");
|
|
19
19
|
__exportStar(require("./nodes"), exports);
|
|
20
20
|
__exportStar(require("./types"), exports);
|
|
@@ -38,6 +38,14 @@ function findFirstNodeAbove(node, callback) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
exports.findFirstNodeAbove = findFirstNodeAbove;
|
|
41
|
+
function findFirstNonOuterParent(node) {
|
|
42
|
+
let current = node.parent;
|
|
43
|
+
while (ts.isOuterExpression(current)) {
|
|
44
|
+
current = current.parent;
|
|
45
|
+
}
|
|
46
|
+
return current;
|
|
47
|
+
}
|
|
48
|
+
exports.findFirstNonOuterParent = findFirstNonOuterParent;
|
|
41
49
|
function getFirstDeclarationInFile(symbol, sourceFile) {
|
|
42
50
|
var _a, _b;
|
|
43
51
|
const originalSourceFile = (_a = ts.getParseTreeNode(sourceFile)) !== null && _a !== void 0 ? _a : sourceFile;
|
|
@@ -17,6 +17,7 @@ const expression_list_1 = require("./expression-list");
|
|
|
17
17
|
const preceding_statements_1 = require("../utils/preceding-statements");
|
|
18
18
|
const optional_chaining_1 = require("./optional-chaining");
|
|
19
19
|
const language_extensions_1 = require("./language-extensions");
|
|
20
|
+
const import_1 = require("./modules/import");
|
|
20
21
|
function validateArguments(context, params, signature) {
|
|
21
22
|
if (!signature || signature.parameters.length < params.length) {
|
|
22
23
|
return;
|
|
@@ -145,6 +146,9 @@ function transformElementCall(context, node) {
|
|
|
145
146
|
}
|
|
146
147
|
const transformCallExpression = (node, context) => {
|
|
147
148
|
var _a;
|
|
149
|
+
if (node.expression.kind === ts.SyntaxKind.ImportKeyword) {
|
|
150
|
+
return (0, import_1.transformImportExpression)(node, context);
|
|
151
|
+
}
|
|
148
152
|
if (ts.isOptionalChain(node)) {
|
|
149
153
|
return (0, optional_chaining_1.transformOptionalChain)(context, node);
|
|
150
154
|
}
|
|
@@ -96,7 +96,7 @@ function transformClassLikeDeclaration(classDeclaration, context, nameOverride)
|
|
|
96
96
|
const constructorBody = (0, fields_1.transformClassInstanceFields)(context, instanceFields);
|
|
97
97
|
const superCall = lua.createExpressionStatement(lua.createCallExpression(lua.createTableIndexExpression(context.transformExpression(ts.factory.createSuper()), lua.createStringLiteral("____constructor")), [(0, lua_ast_1.createSelfIdentifier)(), lua.createDotsLiteral()]));
|
|
98
98
|
constructorBody.unshift(superCall);
|
|
99
|
-
const constructorFunction = lua.createFunctionExpression(lua.createBlock(constructorBody), [(0, lua_ast_1.createSelfIdentifier)()], lua.createDotsLiteral(), lua.
|
|
99
|
+
const constructorFunction = lua.createFunctionExpression(lua.createBlock(constructorBody), [(0, lua_ast_1.createSelfIdentifier)()], lua.createDotsLiteral(), lua.NodeFlags.Declaration);
|
|
100
100
|
result.push(lua.createAssignmentStatement((0, constructor_1.createConstructorName)(localClassName), constructorFunction, classDeclaration));
|
|
101
101
|
}
|
|
102
102
|
// Transform accessors
|
|
@@ -11,7 +11,7 @@ const constructor_1 = require("./constructor");
|
|
|
11
11
|
function transformAccessor(context, node) {
|
|
12
12
|
const [params, dot, restParam] = (0, function_1.transformParameters)(context, node.parameters, (0, lua_ast_1.createSelfIdentifier)());
|
|
13
13
|
const body = node.body ? (0, function_1.transformFunctionBody)(context, node.parameters, node.body, restParam)[0] : [];
|
|
14
|
-
return lua.createFunctionExpression(lua.createBlock(body), params, dot, lua.
|
|
14
|
+
return lua.createFunctionExpression(lua.createBlock(body), params, dot, lua.NodeFlags.Declaration);
|
|
15
15
|
}
|
|
16
16
|
function transformAccessorDeclarations(context, { firstAccessor, getAccessor, setAccessor }, className) {
|
|
17
17
|
const propertyName = (0, literal_1.transformPropertyName)(context, firstAccessor.name);
|
|
@@ -59,7 +59,7 @@ function transformConstructorDeclaration(context, statement, className, instance
|
|
|
59
59
|
const block = lua.createBlock(bodyWithFieldInitializers);
|
|
60
60
|
const constructorWasGenerated = statement.pos === -1;
|
|
61
61
|
(0, scope_1.popScope)(context);
|
|
62
|
-
return lua.createAssignmentStatement(createConstructorName(className), lua.createFunctionExpression(block, params, dotsLiteral, lua.
|
|
62
|
+
return lua.createAssignmentStatement(createConstructorName(className), lua.createFunctionExpression(block, params, dotsLiteral, lua.NodeFlags.Declaration), constructorWasGenerated ? classDeclaration : statement);
|
|
63
63
|
}
|
|
64
64
|
exports.transformConstructorDeclaration = transformConstructorDeclaration;
|
|
65
65
|
//# sourceMappingURL=constructor.js.map
|
|
@@ -14,8 +14,10 @@ const return_1 = require("./return");
|
|
|
14
14
|
const transformTryStatement = (statement, context) => {
|
|
15
15
|
var _a;
|
|
16
16
|
const [tryBlock, tryScope] = (0, block_1.transformScopeBlock)(context, statement.tryBlock, scope_1.ScopeType.Try);
|
|
17
|
-
if (context.options.luaTarget === __1.LuaTarget.Lua51 &&
|
|
18
|
-
|
|
17
|
+
if (context.options.luaTarget === __1.LuaTarget.Lua51 &&
|
|
18
|
+
(0, typescript_1.isInAsyncFunction)(statement) &&
|
|
19
|
+
!context.options.lua51AllowTryCatchInAsyncAwait) {
|
|
20
|
+
context.diagnostics.push((0, diagnostics_1.unsupportedForTargetButOverrideAvailable)(statement, "try/catch inside async functions", __1.LuaTarget.Lua51, "lua51AllowTryCatchInAsyncAwait"));
|
|
19
21
|
return tryBlock.statements;
|
|
20
22
|
}
|
|
21
23
|
if (context.options.luaTarget === __1.LuaTarget.Lua51 && (0, typescript_1.isInGeneratorFunction)(statement)) {
|
|
@@ -46,7 +46,7 @@ function createCallableTable(functionExpression) {
|
|
|
46
46
|
// so we create a forwarding function to eat the extra argument
|
|
47
47
|
functionExpression = lua.createFunctionExpression(lua.createBlock([
|
|
48
48
|
lua.createReturnStatement([lua.createCallExpression(functionExpression, [lua.createDotsLiteral()])]),
|
|
49
|
-
]), [lua.createAnonymousIdentifier()], lua.createDotsLiteral(), lua.
|
|
49
|
+
]), [lua.createAnonymousIdentifier()], lua.createDotsLiteral(), lua.NodeFlags.Inline);
|
|
50
50
|
}
|
|
51
51
|
return lua.createCallExpression(lua.createIdentifier("setmetatable"), [
|
|
52
52
|
lua.createTableExpression(),
|
|
@@ -169,11 +169,11 @@ function transformFunctionToExpression(context, node) {
|
|
|
169
169
|
functionContext = (0, lua_ast_1.createSelfIdentifier)();
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
|
-
let flags = lua.
|
|
172
|
+
let flags = lua.NodeFlags.None;
|
|
173
173
|
if (!ts.isBlock(node.body))
|
|
174
|
-
flags |= lua.
|
|
174
|
+
flags |= lua.NodeFlags.Inline;
|
|
175
175
|
if (ts.isFunctionDeclaration(node) || ts.isMethodDeclaration(node)) {
|
|
176
|
-
flags |= lua.
|
|
176
|
+
flags |= lua.NodeFlags.Declaration;
|
|
177
177
|
}
|
|
178
178
|
const [paramNames, dotsLiteral, spreadIdentifier] = transformParameters(context, node.parameters, functionContext);
|
|
179
179
|
const [transformedBody, functionScope] = transformFunctionBody(context, node.parameters, node.body, spreadIdentifier, node);
|
|
@@ -5,3 +5,4 @@ export declare function createModuleRequire(context: TransformationContext, modu
|
|
|
5
5
|
export declare const transformImportDeclaration: FunctionVisitor<ts.ImportDeclaration>;
|
|
6
6
|
export declare const transformExternalModuleReference: FunctionVisitor<ts.ExternalModuleReference>;
|
|
7
7
|
export declare const transformImportEqualsDeclaration: FunctionVisitor<ts.ImportEqualsDeclaration>;
|
|
8
|
+
export declare const transformImportExpression: FunctionVisitor<ts.CallExpression>;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transformImportEqualsDeclaration = exports.transformExternalModuleReference = exports.transformImportDeclaration = exports.createModuleRequire = void 0;
|
|
3
|
+
exports.transformImportExpression = exports.transformImportEqualsDeclaration = exports.transformExternalModuleReference = exports.transformImportDeclaration = exports.createModuleRequire = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const ts = require("typescript");
|
|
6
6
|
const lua = require("../../../LuaAST");
|
|
7
|
+
const promise_1 = require("../../builtins/promise");
|
|
7
8
|
const annotations_1 = require("../../utils/annotations");
|
|
8
9
|
const export_1 = require("../../utils/export");
|
|
9
10
|
const lua_ast_1 = require("../../utils/lua-ast");
|
|
11
|
+
const lualib_1 = require("../../utils/lualib");
|
|
10
12
|
const safe_names_1 = require("../../utils/safe-names");
|
|
11
13
|
const scope_1 = require("../../utils/scope");
|
|
12
14
|
const identifier_1 = require("../identifier");
|
|
@@ -113,4 +115,10 @@ const transformImportEqualsDeclaration = (node, context) => {
|
|
|
113
115
|
return (0, lua_ast_1.createHoistableVariableDeclarationStatement)(context, name, expression, node);
|
|
114
116
|
};
|
|
115
117
|
exports.transformImportEqualsDeclaration = transformImportEqualsDeclaration;
|
|
118
|
+
const transformImportExpression = (node, context) => {
|
|
119
|
+
(0, lualib_1.importLuaLibFeature)(context, lualib_1.LuaLibFeature.Promise);
|
|
120
|
+
const importPath = node.arguments.map(a => context.transformExpression(a));
|
|
121
|
+
return lua.createCallExpression((0, promise_1.createStaticPromiseFunctionAccessor)("resolve", node), importPath, node);
|
|
122
|
+
};
|
|
123
|
+
exports.transformImportExpression = transformImportExpression;
|
|
116
124
|
//# sourceMappingURL=import.js.map
|
|
@@ -11,15 +11,9 @@ const typescript_1 = require("../utils/typescript");
|
|
|
11
11
|
const multi_1 = require("./language-extensions/multi");
|
|
12
12
|
const diagnostics_1 = require("../utils/diagnostics");
|
|
13
13
|
const vararg_1 = require("./language-extensions/vararg");
|
|
14
|
-
function skipOuterExpressionParents(node) {
|
|
15
|
-
while (ts.isOuterExpression(node)) {
|
|
16
|
-
node = node.parent;
|
|
17
|
-
}
|
|
18
|
-
return node;
|
|
19
|
-
}
|
|
20
14
|
function isOptimizedVarArgSpread(context, symbol, identifier) {
|
|
21
15
|
var _a;
|
|
22
|
-
if (!ts.isSpreadElement(
|
|
16
|
+
if (!ts.isSpreadElement((0, typescript_1.findFirstNonOuterParent)(identifier))) {
|
|
23
17
|
return false;
|
|
24
18
|
}
|
|
25
19
|
// Walk up, stopping at any scope types which could stop optimization
|
|
@@ -3,7 +3,7 @@ import { EmitHost } from "..";
|
|
|
3
3
|
import { CompilerOptions } from "../CompilerOptions";
|
|
4
4
|
import { Printer } from "../LuaPrinter";
|
|
5
5
|
import { Visitors } from "../transformation/context";
|
|
6
|
-
import { ProcessedFile } from "./utils";
|
|
6
|
+
import { EmitFile, ProcessedFile } from "./utils";
|
|
7
7
|
export interface Plugin {
|
|
8
8
|
/**
|
|
9
9
|
* An augmentation to the map of visitors that transform TypeScript AST to Lua AST.
|
|
@@ -22,8 +22,15 @@ export interface Plugin {
|
|
|
22
22
|
*/
|
|
23
23
|
beforeTransform?: (program: ts.Program, options: CompilerOptions, emitHost: EmitHost) => ts.Diagnostic[] | void;
|
|
24
24
|
/**
|
|
25
|
-
* This function is called after
|
|
25
|
+
* This function is called after translating the input program to Lua, but before resolving dependencies or bundling.
|
|
26
26
|
*/
|
|
27
27
|
afterPrint?: (program: ts.Program, options: CompilerOptions, emitHost: EmitHost, result: ProcessedFile[]) => ts.Diagnostic[] | void;
|
|
28
|
+
/**
|
|
29
|
+
* This function is called after translating the input program to Lua, after resolving dependencies and after bundling.
|
|
30
|
+
*/
|
|
31
|
+
beforeEmit?: (program: ts.Program, options: CompilerOptions, emitHost: EmitHost, result: EmitFile[]) => ts.Diagnostic[] | void;
|
|
28
32
|
}
|
|
29
|
-
export declare function getPlugins(program: ts.Program
|
|
33
|
+
export declare function getPlugins(program: ts.Program): {
|
|
34
|
+
diagnostics: ts.Diagnostic[];
|
|
35
|
+
plugins: Plugin[];
|
|
36
|
+
};
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPlugins = void 0;
|
|
4
4
|
const utils_1 = require("./utils");
|
|
5
|
-
function getPlugins(program
|
|
5
|
+
function getPlugins(program) {
|
|
6
6
|
var _a;
|
|
7
|
+
const diagnostics = [];
|
|
7
8
|
const pluginsFromOptions = [];
|
|
8
9
|
const options = program.getCompilerOptions();
|
|
9
10
|
for (const [index, pluginOption] of ((_a = options.luaPlugins) !== null && _a !== void 0 ? _a : []).entries()) {
|
|
@@ -16,7 +17,10 @@ function getPlugins(program, diagnostics, customPlugins) {
|
|
|
16
17
|
const plugin = typeof factory === "function" ? factory(pluginOption) : factory;
|
|
17
18
|
pluginsFromOptions.push(plugin);
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
+
if (options.tstlVerbose) {
|
|
21
|
+
console.log(`Loaded ${pluginsFromOptions.length} plugins`);
|
|
22
|
+
}
|
|
23
|
+
return { diagnostics, plugins: pluginsFromOptions };
|
|
20
24
|
}
|
|
21
25
|
exports.getPlugins = getPlugins;
|
|
22
26
|
//# sourceMappingURL=plugins.js.map
|
|
@@ -14,6 +14,7 @@ const resolver = resolve.ResolverFactory.createResolver({
|
|
|
14
14
|
enforceExtension: true,
|
|
15
15
|
fileSystem: { ...new resolve.CachedInputFileSystem(fs) },
|
|
16
16
|
useSyncFileSystemCalls: true,
|
|
17
|
+
symlinks: false, // Do not resolve symlinks to their original paths (that breaks node_modules detection)
|
|
17
18
|
});
|
|
18
19
|
class ResolutionContext {
|
|
19
20
|
constructor(program, options, emitHost) {
|
|
@@ -11,4 +11,4 @@ export interface TranspileResult {
|
|
|
11
11
|
diagnostics: ts.Diagnostic[];
|
|
12
12
|
transpiledFiles: ProcessedFile[];
|
|
13
13
|
}
|
|
14
|
-
export declare function getProgramTranspileResult(emitHost: EmitHost, writeFileResult: ts.WriteFileCallback, { program, sourceFiles: targetSourceFiles, customTransformers, plugins
|
|
14
|
+
export declare function getProgramTranspileResult(emitHost: EmitHost, writeFileResult: ts.WriteFileCallback, { program, sourceFiles: targetSourceFiles, customTransformers, plugins }: TranspileOptions): TranspileResult;
|
|
@@ -7,9 +7,8 @@ const CompilerOptions_1 = require("../CompilerOptions");
|
|
|
7
7
|
const LuaPrinter_1 = require("../LuaPrinter");
|
|
8
8
|
const transformation_1 = require("../transformation");
|
|
9
9
|
const utils_1 = require("../utils");
|
|
10
|
-
const plugins_1 = require("./plugins");
|
|
11
10
|
const transformers_1 = require("./transformers");
|
|
12
|
-
function getProgramTranspileResult(emitHost, writeFileResult, { program, sourceFiles: targetSourceFiles, customTransformers = {}, plugins
|
|
11
|
+
function getProgramTranspileResult(emitHost, writeFileResult, { program, sourceFiles: targetSourceFiles, customTransformers = {}, plugins = [] }) {
|
|
13
12
|
var _a, _b;
|
|
14
13
|
const options = program.getCompilerOptions();
|
|
15
14
|
if (options.tstlVerbose) {
|
|
@@ -40,10 +39,6 @@ function getProgramTranspileResult(emitHost, writeFileResult, { program, sourceF
|
|
|
40
39
|
return { diagnostics: preEmitDiagnostics, transpiledFiles };
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
const plugins = (0, plugins_1.getPlugins)(program, diagnostics, customPlugins);
|
|
44
|
-
if (options.tstlVerbose) {
|
|
45
|
-
console.log(`Successfully loaded ${plugins.length} plugins`);
|
|
46
|
-
}
|
|
47
42
|
for (const plugin of plugins) {
|
|
48
43
|
if (plugin.beforeTransform) {
|
|
49
44
|
const pluginDiagnostics = (_a = plugin.beforeTransform(program, options, emitHost)) !== null && _a !== void 0 ? _a : [];
|