typescript-to-lua 1.16.3 → 1.18.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.
- package/dist/lualib-build/plugin.d.ts +1 -1
- package/dist/transformation/utils/language-extensions.d.ts +3 -1
- package/dist/transformation/utils/language-extensions.js +3 -25
- package/dist/transformation/visitors/language-extensions/table.js +11 -0
- package/dist/transpilation/resolve.js +6 -3
- package/package.json +8 -6
|
@@ -7,7 +7,7 @@ export declare const lualibDiagnostic: ((message: string, file?: ts.SourceFile |
|
|
|
7
7
|
};
|
|
8
8
|
declare class LuaLibPlugin implements tstl.Plugin {
|
|
9
9
|
visitors: {
|
|
10
|
-
|
|
10
|
+
312: (file: ts.SourceFile, context: tstl.TransformationContext) => tstl.File;
|
|
11
11
|
};
|
|
12
12
|
printer: tstl.Printer;
|
|
13
13
|
afterPrint(program: ts.Program, options: tstl.CompilerOptions, emitHost: EmitHost, result: ProcessedFile[]): ts.Diagnostic[];
|
|
@@ -50,7 +50,9 @@ export declare enum ExtensionKind {
|
|
|
50
50
|
TableSetType = "TableSet",
|
|
51
51
|
TableSetMethodType = "TableSetMethod",
|
|
52
52
|
TableAddKeyType = "TableAddKey",
|
|
53
|
-
TableAddKeyMethodType = "TableAddKeyMethod"
|
|
53
|
+
TableAddKeyMethodType = "TableAddKeyMethod",
|
|
54
|
+
TableIsEmptyType = "TableIsEmpty",
|
|
55
|
+
TableIsEmptyMethodType = "TableIsEmptyMethod"
|
|
54
56
|
}
|
|
55
57
|
export declare function getExtensionKindForType(context: TransformationContext, type: ts.Type): ExtensionKind | undefined;
|
|
56
58
|
export declare function getExtensionKindForNode(context: TransformationContext, node: ts.Node): ExtensionKind | undefined;
|
|
@@ -55,6 +55,8 @@ var ExtensionKind;
|
|
|
55
55
|
ExtensionKind["TableSetMethodType"] = "TableSetMethod";
|
|
56
56
|
ExtensionKind["TableAddKeyType"] = "TableAddKey";
|
|
57
57
|
ExtensionKind["TableAddKeyMethodType"] = "TableAddKeyMethod";
|
|
58
|
+
ExtensionKind["TableIsEmptyType"] = "TableIsEmpty";
|
|
59
|
+
ExtensionKind["TableIsEmptyMethodType"] = "TableIsEmptyMethod";
|
|
58
60
|
})(ExtensionKind || (exports.ExtensionKind = ExtensionKind = {}));
|
|
59
61
|
const extensionValues = new Set(Object.values(ExtensionKind));
|
|
60
62
|
function getExtensionKindForType(context, type) {
|
|
@@ -113,31 +115,7 @@ function getIterableExtensionKindForNode(context, node) {
|
|
|
113
115
|
return getIterableExtensionTypeForType(context, type);
|
|
114
116
|
}
|
|
115
117
|
exports.getIterableExtensionKindForNode = getIterableExtensionKindForNode;
|
|
116
|
-
exports.methodExtensionKinds = new Set(
|
|
117
|
-
ExtensionKind.AdditionOperatorMethodType,
|
|
118
|
-
ExtensionKind.SubtractionOperatorMethodType,
|
|
119
|
-
ExtensionKind.MultiplicationOperatorMethodType,
|
|
120
|
-
ExtensionKind.DivisionOperatorMethodType,
|
|
121
|
-
ExtensionKind.ModuloOperatorMethodType,
|
|
122
|
-
ExtensionKind.PowerOperatorMethodType,
|
|
123
|
-
ExtensionKind.FloorDivisionOperatorMethodType,
|
|
124
|
-
ExtensionKind.BitwiseAndOperatorMethodType,
|
|
125
|
-
ExtensionKind.BitwiseOrOperatorMethodType,
|
|
126
|
-
ExtensionKind.BitwiseExclusiveOrOperatorMethodType,
|
|
127
|
-
ExtensionKind.BitwiseLeftShiftOperatorMethodType,
|
|
128
|
-
ExtensionKind.BitwiseRightShiftOperatorMethodType,
|
|
129
|
-
ExtensionKind.ConcatOperatorMethodType,
|
|
130
|
-
ExtensionKind.LessThanOperatorMethodType,
|
|
131
|
-
ExtensionKind.GreaterThanOperatorMethodType,
|
|
132
|
-
ExtensionKind.NegationOperatorMethodType,
|
|
133
|
-
ExtensionKind.BitwiseNotOperatorMethodType,
|
|
134
|
-
ExtensionKind.LengthOperatorMethodType,
|
|
135
|
-
ExtensionKind.TableDeleteMethodType,
|
|
136
|
-
ExtensionKind.TableGetMethodType,
|
|
137
|
-
ExtensionKind.TableHasMethodType,
|
|
138
|
-
ExtensionKind.TableSetMethodType,
|
|
139
|
-
ExtensionKind.TableAddKeyMethodType,
|
|
140
|
-
]);
|
|
118
|
+
exports.methodExtensionKinds = new Set(Object.values(ExtensionKind).filter(key => key.endsWith("Method")));
|
|
141
119
|
function getNaryCallExtensionArgs(context, node, kind, numArgs) {
|
|
142
120
|
let expressions;
|
|
143
121
|
if (node.arguments.some(ts.isSpreadElement)) {
|
|
@@ -20,6 +20,8 @@ exports.tableExtensionTransformers = {
|
|
|
20
20
|
[language_extensions_1.ExtensionKind.TableSetMethodType]: transformTableSetExpression,
|
|
21
21
|
[language_extensions_1.ExtensionKind.TableAddKeyType]: transformTableAddKeyExpression,
|
|
22
22
|
[language_extensions_1.ExtensionKind.TableAddKeyMethodType]: transformTableAddKeyExpression,
|
|
23
|
+
[language_extensions_1.ExtensionKind.TableIsEmptyType]: transformTableIsEmptyExpression,
|
|
24
|
+
[language_extensions_1.ExtensionKind.TableIsEmptyMethodType]: transformTableIsEmptyExpression,
|
|
23
25
|
};
|
|
24
26
|
function transformTableDeleteExpression(context, node, extensionKind) {
|
|
25
27
|
const args = (0, language_extensions_1.getBinaryCallExtensionArgs)(context, node, extensionKind);
|
|
@@ -71,4 +73,13 @@ function transformTableAddKeyExpression(context, node, extensionKind) {
|
|
|
71
73
|
context.addPrecedingStatements(lua.createAssignmentStatement(lua.createTableIndexExpression(table, key), lua.createBooleanLiteral(true), node));
|
|
72
74
|
return lua.createNilLiteral();
|
|
73
75
|
}
|
|
76
|
+
function transformTableIsEmptyExpression(context, node, extensionKind) {
|
|
77
|
+
const args = (0, language_extensions_1.getUnaryCallExtensionArg)(context, node, extensionKind);
|
|
78
|
+
if (!args) {
|
|
79
|
+
return lua.createNilLiteral();
|
|
80
|
+
}
|
|
81
|
+
const table = context.transformExpression(args);
|
|
82
|
+
// next(arg0) == nil
|
|
83
|
+
return lua.createBinaryExpression(lua.createCallExpression(lua.createIdentifier("next"), [table], node), lua.createNilLiteral(), lua.SyntaxKind.EqualityOperator, node);
|
|
84
|
+
}
|
|
74
85
|
//# sourceMappingURL=table.js.map
|
|
@@ -10,10 +10,11 @@ const utils_1 = require("../utils");
|
|
|
10
10
|
const diagnostics_1 = require("./diagnostics");
|
|
11
11
|
const CompilerOptions_1 = require("../CompilerOptions");
|
|
12
12
|
const find_lua_requires_1 = require("./find-lua-requires");
|
|
13
|
+
const picomatch = require("picomatch");
|
|
13
14
|
const resolver = resolve.ResolverFactory.createResolver({
|
|
14
15
|
extensions: [".lua"],
|
|
15
16
|
enforceExtension: true,
|
|
16
|
-
fileSystem: { ...new resolve.CachedInputFileSystem(fs) },
|
|
17
|
+
fileSystem: { ...new resolve.CachedInputFileSystem(fs, 0) },
|
|
17
18
|
useSyncFileSystemCalls: true,
|
|
18
19
|
conditionNames: ["require", "node", "tstl", "default"],
|
|
19
20
|
symlinks: false, // Do not resolve symlinks to their original paths (that breaks node_modules detection)
|
|
@@ -29,7 +30,9 @@ class ResolutionContext {
|
|
|
29
30
|
this.processedDependencies = new Set();
|
|
30
31
|
// value is false if already searched but not found
|
|
31
32
|
this.pathToFile = new Map();
|
|
32
|
-
|
|
33
|
+
const unique = [...new Set(options.noResolvePaths)];
|
|
34
|
+
const matchers = unique.map(x => picomatch(x));
|
|
35
|
+
this.noResolvePaths = matchers;
|
|
33
36
|
}
|
|
34
37
|
addAndResolveDependencies(file) {
|
|
35
38
|
if (this.resolvedFiles.has(file.fileName))
|
|
@@ -59,7 +62,7 @@ class ResolutionContext {
|
|
|
59
62
|
this.resolvedFiles.set("lualib_bundle", { fileName: "lualib_bundle", code: "" });
|
|
60
63
|
return;
|
|
61
64
|
}
|
|
62
|
-
if (this.noResolvePaths.
|
|
65
|
+
if (this.noResolvePaths.find(isMatch => isMatch(required.requirePath))) {
|
|
63
66
|
if (this.options.tstlVerbose) {
|
|
64
67
|
console.log(`Skipping module resolution of ${required.requirePath} as it is in the tsconfig noResolvePaths.`);
|
|
65
68
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typescript-to-lua",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "A generic TypeScript to Lua transpiler. Write your code in TypeScript and publish Lua!",
|
|
5
5
|
"repository": "https://github.com/TypeScriptToLua/TypeScriptToLua",
|
|
6
6
|
"homepage": "https://typescripttolua.github.io/",
|
|
@@ -42,11 +42,12 @@
|
|
|
42
42
|
"node": ">=16.10.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"typescript": "
|
|
45
|
+
"typescript": "5.2.2"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@typescript-to-lua/language-extensions": "1.0.0",
|
|
49
49
|
"enhanced-resolve": "^5.8.2",
|
|
50
|
+
"picomatch": "^2.3.1",
|
|
50
51
|
"resolve": "^1.15.1",
|
|
51
52
|
"source-map": "^0.7.3"
|
|
52
53
|
},
|
|
@@ -55,10 +56,11 @@
|
|
|
55
56
|
"@types/glob": "^7.1.1",
|
|
56
57
|
"@types/jest": "^27.5.2",
|
|
57
58
|
"@types/node": "^13.7.7",
|
|
59
|
+
"@types/picomatch": "^2.3.0",
|
|
58
60
|
"@types/resolve": "1.14.0",
|
|
59
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
60
|
-
"@typescript-eslint/parser": "^5.
|
|
61
|
-
"eslint": "^8.
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
62
|
+
"@typescript-eslint/parser": "^5.62.0",
|
|
63
|
+
"eslint": "^8.47.0",
|
|
62
64
|
"eslint-plugin-import": "^2.27.5",
|
|
63
65
|
"eslint-plugin-jest": "^26.9.0",
|
|
64
66
|
"fs-extra": "^8.1.0",
|
|
@@ -70,6 +72,6 @@
|
|
|
70
72
|
"prettier": "^2.8.4",
|
|
71
73
|
"ts-jest": "^29.1.0",
|
|
72
74
|
"ts-node": "^10.9.1",
|
|
73
|
-
"typescript": "
|
|
75
|
+
"typescript": "^5.2.2"
|
|
74
76
|
}
|
|
75
77
|
}
|