luau2ts 0.1.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/LICENSE +21 -0
- package/README.md +107 -0
- package/dist/cli/args.d.ts +19 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +130 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +65 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/modes.d.ts +17 -0
- package/dist/cli/modes.d.ts.map +1 -0
- package/dist/cli/modes.js +134 -0
- package/dist/cli/modes.js.map +1 -0
- package/dist/compile/class-shape.d.ts +31 -0
- package/dist/compile/class-shape.d.ts.map +1 -0
- package/dist/compile/class-shape.js +291 -0
- package/dist/compile/class-shape.js.map +1 -0
- package/dist/compile/context.d.ts +86 -0
- package/dist/compile/context.d.ts.map +1 -0
- package/dist/compile/context.js +144 -0
- package/dist/compile/context.js.map +1 -0
- package/dist/compile/index.d.ts +43 -0
- package/dist/compile/index.d.ts.map +1 -0
- package/dist/compile/index.js +2028 -0
- package/dist/compile/index.js.map +1 -0
- package/dist/compile/macros/datatypes.d.ts +2 -0
- package/dist/compile/macros/datatypes.d.ts.map +1 -0
- package/dist/compile/macros/datatypes.js +76 -0
- package/dist/compile/macros/datatypes.js.map +1 -0
- package/dist/compile/macros/index.d.ts +33 -0
- package/dist/compile/macros/index.d.ts.map +1 -0
- package/dist/compile/macros/index.js +71 -0
- package/dist/compile/macros/index.js.map +1 -0
- package/dist/compile/macros/instance.d.ts +2 -0
- package/dist/compile/macros/instance.d.ts.map +1 -0
- package/dist/compile/macros/instance.js +58 -0
- package/dist/compile/macros/instance.js.map +1 -0
- package/dist/compile/macros/stdlib.d.ts +2 -0
- package/dist/compile/macros/stdlib.d.ts.map +1 -0
- package/dist/compile/macros/stdlib.js +140 -0
- package/dist/compile/macros/stdlib.js.map +1 -0
- package/dist/compile/rbxts-runtime.d.ts +2 -0
- package/dist/compile/rbxts-runtime.d.ts.map +1 -0
- package/dist/compile/rbxts-runtime.js +163 -0
- package/dist/compile/rbxts-runtime.js.map +1 -0
- package/dist/compile/sourcemap.d.ts +25 -0
- package/dist/compile/sourcemap.d.ts.map +1 -0
- package/dist/compile/sourcemap.js +71 -0
- package/dist/compile/sourcemap.js.map +1 -0
- package/dist/compile/type.d.ts +6 -0
- package/dist/compile/type.d.ts.map +1 -0
- package/dist/compile/type.js +122 -0
- package/dist/compile/type.js.map +1 -0
- package/dist/compile/util.d.ts +38 -0
- package/dist/compile/util.d.ts.map +1 -0
- package/dist/compile/util.js +153 -0
- package/dist/compile/util.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/index.d.ts +4 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +227 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/types.d.ts +430 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/dist/parser/types.js +14 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/parser/wasm/luau-parser.d.mts +21 -0
- package/dist/parser/wasm/luau-parser.mjs +2 -0
- package/dist/parser/wasm/luau-parser.wasm +0 -0
- package/dist/rojo/index.d.ts +4 -0
- package/dist/rojo/index.d.ts.map +1 -0
- package/dist/rojo/index.js +3 -0
- package/dist/rojo/index.js.map +1 -0
- package/dist/rojo/load-project.d.ts +12 -0
- package/dist/rojo/load-project.d.ts.map +1 -0
- package/dist/rojo/load-project.js +35 -0
- package/dist/rojo/load-project.js.map +1 -0
- package/dist/rojo/types.d.ts +39 -0
- package/dist/rojo/types.d.ts.map +1 -0
- package/dist/rojo/types.js +2 -0
- package/dist/rojo/types.js.map +1 -0
- package/dist/rojo/walk-tree.d.ts +40 -0
- package/dist/rojo/walk-tree.d.ts.map +1 -0
- package/dist/rojo/walk-tree.js +164 -0
- package/dist/rojo/walk-tree.js.map +1 -0
- package/dist/runtime/arith.d.ts +13 -0
- package/dist/runtime/arith.d.ts.map +1 -0
- package/dist/runtime/arith.js +151 -0
- package/dist/runtime/arith.js.map +1 -0
- package/dist/runtime/index-helper.d.ts +3 -0
- package/dist/runtime/index-helper.d.ts.map +1 -0
- package/dist/runtime/index-helper.js +40 -0
- package/dist/runtime/index-helper.js.map +1 -0
- package/dist/runtime/index.d.ts +13 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +13 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/iterator.d.ts +58 -0
- package/dist/runtime/iterator.d.ts.map +1 -0
- package/dist/runtime/iterator.js +181 -0
- package/dist/runtime/iterator.js.map +1 -0
- package/dist/runtime/length.d.ts +2 -0
- package/dist/runtime/length.d.ts.map +1 -0
- package/dist/runtime/length.js +15 -0
- package/dist/runtime/length.js.map +1 -0
- package/dist/runtime/lua-stdlib.d.ts +186 -0
- package/dist/runtime/lua-stdlib.d.ts.map +1 -0
- package/dist/runtime/lua-stdlib.js +502 -0
- package/dist/runtime/lua-stdlib.js.map +1 -0
- package/dist/runtime/metatable.d.ts +16 -0
- package/dist/runtime/metatable.d.ts.map +1 -0
- package/dist/runtime/metatable.js +129 -0
- package/dist/runtime/metatable.js.map +1 -0
- package/dist/runtime/pattern.d.ts +21 -0
- package/dist/runtime/pattern.d.ts.map +1 -0
- package/dist/runtime/pattern.js +375 -0
- package/dist/runtime/pattern.js.map +1 -0
- package/dist/runtime/pcall.d.ts +12 -0
- package/dist/runtime/pcall.d.ts.map +1 -0
- package/dist/runtime/pcall.js +54 -0
- package/dist/runtime/pcall.js.map +1 -0
- package/dist/runtime/string-lib.d.ts +31 -0
- package/dist/runtime/string-lib.d.ts.map +1 -0
- package/dist/runtime/string-lib.js +296 -0
- package/dist/runtime/string-lib.js.map +1 -0
- package/dist/runtime/table-lib.d.ts +18 -0
- package/dist/runtime/table-lib.d.ts.map +1 -0
- package/dist/runtime/table-lib.js +133 -0
- package/dist/runtime/table-lib.js.map +1 -0
- package/dist/runtime/tostring.d.ts +3 -0
- package/dist/runtime/tostring.d.ts.map +1 -0
- package/dist/runtime/tostring.js +82 -0
- package/dist/runtime/tostring.js.map +1 -0
- package/dist/runtime/truthy.d.ts +13 -0
- package/dist/runtime/truthy.d.ts.map +1 -0
- package/dist/runtime/truthy.js +26 -0
- package/dist/runtime/truthy.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdlib.js","sourceRoot":"","sources":["../../../src/compile/macros/stdlib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbxts-runtime.d.ts","sourceRoot":"","sources":["../../src/compile/rbxts-runtime.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { registerMacro } from './macros/index.js';
|
|
3
|
+
const { factory } = ts;
|
|
4
|
+
// ─── async / await / generator ─────────────────────────────────────────────
|
|
5
|
+
// `TS.async(fn)` wraps a function in an async closure. Roblox-ts uses this
|
|
6
|
+
// at every `async function` declaration boundary.
|
|
7
|
+
registerMacro('TS.async', ({ compiledArgs }) => {
|
|
8
|
+
const inner = compiledArgs[0];
|
|
9
|
+
if (!inner)
|
|
10
|
+
return undefined;
|
|
11
|
+
// Emit: ((...args) => Promise.resolve().then(() => fn(...args)))
|
|
12
|
+
// The Promise.resolve hop ensures the body always runs in a microtask,
|
|
13
|
+
// matching `async function` semantics.
|
|
14
|
+
const argsParam = factory.createParameterDeclaration(undefined, factory.createToken(ts.SyntaxKind.DotDotDotToken), 'args');
|
|
15
|
+
return factory.createParenthesizedExpression(factory.createArrowFunction([factory.createModifier(ts.SyntaxKind.AsyncKeyword)], undefined, [argsParam], undefined, factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), factory.createCallExpression(inner, undefined, [factory.createSpreadElement(factory.createIdentifier('args'))])));
|
|
16
|
+
}, 'always');
|
|
17
|
+
// `TS.await(promise)` → `(await promise)`.
|
|
18
|
+
registerMacro('TS.await', ({ compiledArgs }) => {
|
|
19
|
+
const p = compiledArgs[0];
|
|
20
|
+
if (!p)
|
|
21
|
+
return undefined;
|
|
22
|
+
return factory.createParenthesizedExpression(factory.createAwaitExpression(p));
|
|
23
|
+
}, 'always');
|
|
24
|
+
// `TS.try(tryFn, catchFn?, finallyFn?)` → Promise-style chain. The
|
|
25
|
+
// expression form is necessary because we can't emit a TS try-statement
|
|
26
|
+
// from inside a value-position macro. Real Roblox-ts implementation uses
|
|
27
|
+
// pcall under the hood; we use Promise.try/catch/finally semantics with
|
|
28
|
+
// awaited execution so synchronous throws still surface.
|
|
29
|
+
registerMacro('TS.try', ({ compiledArgs }) => {
|
|
30
|
+
const [tryFn, catchFn, finallyFn] = compiledArgs;
|
|
31
|
+
if (!tryFn)
|
|
32
|
+
return undefined;
|
|
33
|
+
// Promise.resolve().then(() => tryFn()).catch(catchFn).finally(finallyFn)
|
|
34
|
+
let chain = factory.createCallExpression(factory.createPropertyAccessExpression(factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Promise'), factory.createIdentifier('resolve')), undefined, []), factory.createIdentifier('then')), undefined, [tryFn]);
|
|
35
|
+
if (catchFn) {
|
|
36
|
+
chain = factory.createCallExpression(factory.createPropertyAccessExpression(chain, factory.createIdentifier('catch')), undefined, [catchFn]);
|
|
37
|
+
}
|
|
38
|
+
if (finallyFn) {
|
|
39
|
+
chain = factory.createCallExpression(factory.createPropertyAccessExpression(chain, factory.createIdentifier('finally')), undefined, [finallyFn]);
|
|
40
|
+
}
|
|
41
|
+
return chain;
|
|
42
|
+
}, 'always');
|
|
43
|
+
// `TS.generator(fn)` — Roblox-ts wraps a generator-returning function so
|
|
44
|
+
// it conforms to its iteration protocol (`{next, done, value}`). On the JS
|
|
45
|
+
// side the same protocol is built-in for `function*` declarations. The
|
|
46
|
+
// safest lowering: keep `fn` as-is and wrap with a thin adapter that
|
|
47
|
+
// invokes the iterator factory the user produced.
|
|
48
|
+
registerMacro('TS.generator', ({ compiledArgs }) => compiledArgs[0], 'always');
|
|
49
|
+
// ─── instanceof / import / Object_assign ───────────────────────────────────
|
|
50
|
+
registerMacro('TS.instanceof', ({ compiledArgs }) => {
|
|
51
|
+
const [v, t] = compiledArgs;
|
|
52
|
+
if (!v || !t)
|
|
53
|
+
return undefined;
|
|
54
|
+
return factory.createParenthesizedExpression(factory.createBinaryExpression(v, factory.createToken(ts.SyntaxKind.InstanceOfKeyword), t));
|
|
55
|
+
}, 'always');
|
|
56
|
+
// `TS.import(loader, ...path)` → `await import("path")`. We accept the
|
|
57
|
+
// loader argument because roblox-ts emits it but ignore it; the JS module
|
|
58
|
+
// system is the loader.
|
|
59
|
+
registerMacro('TS.import', ({ compiledArgs }) => {
|
|
60
|
+
// Find the first string-literal argument and use it as the module path.
|
|
61
|
+
// Any other arguments are joined as path segments after the first.
|
|
62
|
+
const stringArgs = compiledArgs.filter((a) => ts.isStringLiteral(a));
|
|
63
|
+
if (stringArgs.length === 0)
|
|
64
|
+
return undefined;
|
|
65
|
+
const moduleName = stringArgs.map((s) => s.text).join('/');
|
|
66
|
+
return factory.createParenthesizedExpression(factory.createAwaitExpression(factory.createCallExpression(factory.createToken(ts.SyntaxKind.ImportKeyword), undefined, [factory.createStringLiteral(moduleName)])));
|
|
67
|
+
}, 'always');
|
|
68
|
+
registerMacro('TS.Object_assign', ({ compiledArgs }) => factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Object'), factory.createIdentifier('assign')), undefined, compiledArgs), 'always');
|
|
69
|
+
function emitBitOp(opFactory) {
|
|
70
|
+
return ({ compiledArgs }) => {
|
|
71
|
+
if (compiledArgs.length === 0)
|
|
72
|
+
return undefined;
|
|
73
|
+
let acc = compiledArgs[0];
|
|
74
|
+
for (let i = 1; i < compiledArgs.length; i++) {
|
|
75
|
+
acc = factory.createBinaryExpression(acc, opFactory(), compiledArgs[i]);
|
|
76
|
+
}
|
|
77
|
+
return factory.createParenthesizedExpression(factory.createBinaryExpression(acc, factory.createToken(ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken), factory.createNumericLiteral(0)));
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
registerMacro('TS.bit_band', emitBitOp(() => factory.createToken(ts.SyntaxKind.AmpersandToken)), 'always');
|
|
81
|
+
registerMacro('TS.bit_bor', emitBitOp(() => factory.createToken(ts.SyntaxKind.BarToken)), 'always');
|
|
82
|
+
registerMacro('TS.bit_bxor', emitBitOp(() => factory.createToken(ts.SyntaxKind.CaretToken)), 'always');
|
|
83
|
+
registerMacro('TS.bit_lshift', emitBitOp(() => factory.createToken(ts.SyntaxKind.LessThanLessThanToken)), 'always');
|
|
84
|
+
registerMacro('TS.bit_rshift', emitBitOp(() => factory.createToken(ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken)), 'always');
|
|
85
|
+
// `TS.bit_bnot(x)` — unary; `(~x) >>> 0`.
|
|
86
|
+
registerMacro('TS.bit_bnot', ({ compiledArgs }) => {
|
|
87
|
+
if (!compiledArgs[0])
|
|
88
|
+
return undefined;
|
|
89
|
+
return factory.createParenthesizedExpression(factory.createBinaryExpression(factory.createPrefixUnaryExpression(ts.SyntaxKind.TildeToken, compiledArgs[0]), factory.createToken(ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken), factory.createNumericLiteral(0)));
|
|
90
|
+
}, 'always');
|
|
91
|
+
// ─── number helpers ────────────────────────────────────────────────────────
|
|
92
|
+
function emitMathCall(method) {
|
|
93
|
+
return ({ compiledArgs }) => factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Math'), factory.createIdentifier(method)), undefined, compiledArgs);
|
|
94
|
+
}
|
|
95
|
+
registerMacro('TS.round', emitMathCall('round'), 'always');
|
|
96
|
+
registerMacro('TS.math_floor', emitMathCall('floor'), 'always');
|
|
97
|
+
registerMacro('TS.math_ceil', emitMathCall('ceil'), 'always');
|
|
98
|
+
registerMacro('TS.math_abs', emitMathCall('abs'), 'always');
|
|
99
|
+
registerMacro('TS.math_max', emitMathCall('max'), 'always');
|
|
100
|
+
registerMacro('TS.math_min', emitMathCall('min'), 'always');
|
|
101
|
+
registerMacro('TS.math_sqrt', emitMathCall('sqrt'), 'always');
|
|
102
|
+
// ─── string helpers ────────────────────────────────────────────────────────
|
|
103
|
+
// Most TS.string_* helpers in roblox-ts are just method calls on the string
|
|
104
|
+
// itself. Lower them by emitting `s.<method>(args)`.
|
|
105
|
+
function emitStringMethod(method) {
|
|
106
|
+
return ({ compiledArgs }) => {
|
|
107
|
+
if (!compiledArgs[0])
|
|
108
|
+
return undefined;
|
|
109
|
+
return factory.createCallExpression(factory.createPropertyAccessExpression(compiledArgs[0], factory.createIdentifier(method)), undefined, compiledArgs.slice(1));
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
registerMacro('TS.string_split', emitStringMethod('split'), 'always');
|
|
113
|
+
registerMacro('TS.string_includes', emitStringMethod('includes'), 'always');
|
|
114
|
+
registerMacro('TS.string_indexOf', emitStringMethod('indexOf'), 'always');
|
|
115
|
+
registerMacro('TS.string_startsWith', emitStringMethod('startsWith'), 'always');
|
|
116
|
+
registerMacro('TS.string_endsWith', emitStringMethod('endsWith'), 'always');
|
|
117
|
+
registerMacro('TS.string_padStart', emitStringMethod('padStart'), 'always');
|
|
118
|
+
registerMacro('TS.string_padEnd', emitStringMethod('padEnd'), 'always');
|
|
119
|
+
registerMacro('TS.string_slice', emitStringMethod('slice'), 'always');
|
|
120
|
+
registerMacro('TS.string_substring', emitStringMethod('substring'), 'always');
|
|
121
|
+
registerMacro('TS.string_substr', emitStringMethod('substr'), 'always');
|
|
122
|
+
registerMacro('TS.string_trim', emitStringMethod('trim'), 'always');
|
|
123
|
+
registerMacro('TS.string_trimStart', emitStringMethod('trimStart'), 'always');
|
|
124
|
+
registerMacro('TS.string_trimEnd', emitStringMethod('trimEnd'), 'always');
|
|
125
|
+
registerMacro('TS.string_concat', emitStringMethod('concat'), 'always');
|
|
126
|
+
registerMacro('TS.string_replace', emitStringMethod('replace'), 'always');
|
|
127
|
+
registerMacro('TS.string_replaceAll', emitStringMethod('replaceAll'), 'always');
|
|
128
|
+
registerMacro('TS.string_repeat', emitStringMethod('repeat'), 'always');
|
|
129
|
+
registerMacro('TS.string_toLowerCase', emitStringMethod('toLowerCase'), 'always');
|
|
130
|
+
registerMacro('TS.string_toUpperCase', emitStringMethod('toUpperCase'), 'always');
|
|
131
|
+
// ─── array helpers ─────────────────────────────────────────────────────────
|
|
132
|
+
function emitArrayMethod(method) {
|
|
133
|
+
return ({ compiledArgs }) => {
|
|
134
|
+
if (!compiledArgs[0])
|
|
135
|
+
return undefined;
|
|
136
|
+
return factory.createCallExpression(factory.createPropertyAccessExpression(compiledArgs[0], factory.createIdentifier(method)), undefined, compiledArgs.slice(1));
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
registerMacro('TS.array_push', emitArrayMethod('push'), 'always');
|
|
140
|
+
registerMacro('TS.array_unshift', emitArrayMethod('unshift'), 'always');
|
|
141
|
+
registerMacro('TS.array_pop', emitArrayMethod('pop'), 'always');
|
|
142
|
+
registerMacro('TS.array_shift', emitArrayMethod('shift'), 'always');
|
|
143
|
+
registerMacro('TS.array_concat', emitArrayMethod('concat'), 'always');
|
|
144
|
+
registerMacro('TS.array_join', emitArrayMethod('join'), 'always');
|
|
145
|
+
registerMacro('TS.array_reverse', emitArrayMethod('reverse'), 'always');
|
|
146
|
+
registerMacro('TS.array_slice', emitArrayMethod('slice'), 'always');
|
|
147
|
+
registerMacro('TS.array_splice', emitArrayMethod('splice'), 'always');
|
|
148
|
+
registerMacro('TS.array_indexOf', emitArrayMethod('indexOf'), 'always');
|
|
149
|
+
registerMacro('TS.array_lastIndexOf', emitArrayMethod('lastIndexOf'), 'always');
|
|
150
|
+
registerMacro('TS.array_includes', emitArrayMethod('includes'), 'always');
|
|
151
|
+
registerMacro('TS.array_find', emitArrayMethod('find'), 'always');
|
|
152
|
+
registerMacro('TS.array_findIndex', emitArrayMethod('findIndex'), 'always');
|
|
153
|
+
registerMacro('TS.array_forEach', emitArrayMethod('forEach'), 'always');
|
|
154
|
+
registerMacro('TS.array_map', emitArrayMethod('map'), 'always');
|
|
155
|
+
registerMacro('TS.array_filter', emitArrayMethod('filter'), 'always');
|
|
156
|
+
registerMacro('TS.array_reduce', emitArrayMethod('reduce'), 'always');
|
|
157
|
+
registerMacro('TS.array_reduceRight', emitArrayMethod('reduceRight'), 'always');
|
|
158
|
+
registerMacro('TS.array_every', emitArrayMethod('every'), 'always');
|
|
159
|
+
registerMacro('TS.array_some', emitArrayMethod('some'), 'always');
|
|
160
|
+
registerMacro('TS.array_sort', emitArrayMethod('sort'), 'always');
|
|
161
|
+
registerMacro('TS.array_flat', emitArrayMethod('flat'), 'always');
|
|
162
|
+
registerMacro('TS.array_flatMap', emitArrayMethod('flatMap'), 'always');
|
|
163
|
+
//# sourceMappingURL=rbxts-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbxts-runtime.js","sourceRoot":"","sources":["../../src/compile/rbxts-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAkB,MAAM,mBAAmB,CAAC;AAElE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAEvB,8EAA8E;AAE9E,2EAA2E;AAC3E,kDAAkD;AAClD,aAAa,CACX,UAAU,EACV,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,iEAAiE;IACjE,uEAAuE;IACvE,uCAAuC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAClD,SAAS,EACT,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EACjD,MAAM,CACP,CAAC;IACF,OAAO,OAAO,CAAC,6BAA6B,CAC1C,OAAO,CAAC,mBAAmB,CACzB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EACpD,SAAS,EACT,CAAC,SAAS,CAAC,EACX,SAAS,EACT,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACzD,OAAO,CAAC,oBAAoB,CAC1B,KAAK,EACL,SAAS,EACT,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAChE,CACF,CACF,CAAC;AACJ,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,2CAA2C;AAC3C,aAAa,CACX,UAAU,EACV,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO,OAAO,CAAC,6BAA6B,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,mEAAmE;AACnE,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AACxE,yDAAyD;AACzD,aAAa,CACX,QAAQ,EACR,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,0EAA0E;IAC1E,IAAI,KAAK,GAAkB,OAAO,CAAC,oBAAoB,CACrD,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,EACnC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CACpC,EACD,SAAS,EACT,EAAE,CACH,EACD,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CACjC,EACD,SAAS,EACT,CAAC,KAAK,CAAC,CACR,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAClC,OAAO,CAAC,8BAA8B,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAChF,SAAS,EACT,CAAC,OAAO,CAAC,CACV,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAClC,OAAO,CAAC,8BAA8B,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAClF,SAAS,EACT,CAAC,SAAS,CAAC,CACZ,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,yEAAyE;AACzE,2EAA2E;AAC3E,uEAAuE;AACvE,qEAAqE;AACrE,kDAAkD;AAClD,aAAa,CACX,cAAc,EACd,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAChD,QAAQ,CACT,CAAC;AAEF,8EAA8E;AAE9E,aAAa,CACX,eAAe,EACf,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC;IAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC,6BAA6B,CAC1C,OAAO,CAAC,sBAAsB,CAC5B,CAAC,EACD,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EACpD,CAAC,CACF,CACF,CAAC;AACJ,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,uEAAuE;AACvE,0EAA0E;AAC1E,wBAAwB;AACxB,aAAa,CACX,WAAW,EACX,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,wEAAwE;IACxE,mEAAmE;IACnE,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CACpC,CAAC,CAAgB,EAAyB,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CACnE,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC,6BAA6B,CAC1C,OAAO,CAAC,qBAAqB,CAC3B,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAA6B,EAC5E,SAAS,EACT,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAC1C,CACF,CACF,CAAC;AACJ,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,aAAa,CACX,kBAAkB,EAClB,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE,CAC9B,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CACnC,EACD,SAAS,EACT,YAAY,CACb,EACH,QAAQ,CACT,CAAC;AAcF,SAAS,SAAS,CAAC,SAA2B;IAC5C,OAAO,CAAC,EAAE,YAAY,EAAqC,EAAE,EAAE;QAC7D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAChD,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,GAAG,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC,CAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,OAAO,CAAC,6BAA6B,CAC1C,OAAO,CAAC,sBAAsB,CAC5B,GAAG,EACH,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sCAAsC,CAAC,EACzE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAChC,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3G,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpG,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACvG,aAAa,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpH,aAAa,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sCAAsC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAErI,0CAA0C;AAC1C,aAAa,CACX,aAAa,EACb,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,OAAO,CAAC,6BAA6B,CAC1C,OAAO,CAAC,sBAAsB,CAC5B,OAAO,CAAC,2BAA2B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAC9E,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sCAAsC,CAAC,EACzE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAChC,CACF,CAAC;AACJ,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,8EAA8E;AAE9E,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,CAAC,EAAE,YAAY,EAAqC,EAAE,EAAE,CAC7D,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAChC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CACjC,EACD,SAAS,EACT,YAAY,CACb,CAAC;AACN,CAAC;AAED,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3D,aAAa,CAAC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChE,aAAa,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9D,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5D,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5D,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5D,aAAa,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAE9D,8EAA8E;AAC9E,4EAA4E;AAC5E,qDAAqD;AAErD,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,CAAC,EAAE,YAAY,EAAqC,EAAE,EAAE;QAC7D,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EACzF,SAAS,EACT,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CACtB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE,aAAa,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5E,aAAa,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1E,aAAa,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChF,aAAa,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5E,aAAa,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5E,aAAa,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE,aAAa,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9E,aAAa,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,aAAa,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpE,aAAa,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9E,aAAa,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1E,aAAa,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,aAAa,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1E,aAAa,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChF,aAAa,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,aAAa,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClF,aAAa,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;AAElF,8EAA8E;AAE9E,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO,CAAC,EAAE,YAAY,EAAqC,EAAE,EAAE;QAC7D,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EACzF,SAAS,EACT,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CACtB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClE,aAAa,CAAC,kBAAkB,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,aAAa,CAAC,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChE,aAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpE,aAAa,CAAC,iBAAiB,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClE,aAAa,CAAC,kBAAkB,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,aAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpE,aAAa,CAAC,iBAAiB,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE,aAAa,CAAC,kBAAkB,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,aAAa,CAAC,sBAAsB,EAAE,eAAe,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChF,aAAa,CAAC,mBAAmB,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1E,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClE,aAAa,CAAC,oBAAoB,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5E,aAAa,CAAC,kBAAkB,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,aAAa,CAAC,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChE,aAAa,CAAC,iBAAiB,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE,aAAa,CAAC,iBAAiB,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE,aAAa,CAAC,sBAAsB,EAAE,eAAe,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChF,aAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpE,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClE,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClE,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClE,aAAa,CAAC,kBAAkB,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface SourceMapMapping {
|
|
2
|
+
/** Line in the generated TS (0-indexed). */
|
|
3
|
+
generatedLine: number;
|
|
4
|
+
/** Column in the generated TS (0-indexed). */
|
|
5
|
+
generatedColumn: number;
|
|
6
|
+
/** Line in the original .luau (0-indexed). */
|
|
7
|
+
originalLine: number;
|
|
8
|
+
/** Column in the original .luau (0-indexed). */
|
|
9
|
+
originalColumn: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SourceMap {
|
|
12
|
+
version: 3;
|
|
13
|
+
file: string;
|
|
14
|
+
sources: [string];
|
|
15
|
+
sourcesContent: [string];
|
|
16
|
+
names: [];
|
|
17
|
+
mappings: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function buildSourceMap(generatedFile: string, originalFile: string, originalContent: string, mappings: SourceMapMapping[]): SourceMap;
|
|
20
|
+
/** Encode a sourcemap as a base64 data URL suitable for appending to TS output.
|
|
21
|
+
* Returns a string of the form `// # source` + `MappingURL=data:...` so the
|
|
22
|
+
* sourcemap directive is consumed by JS tooling but ignored when this file
|
|
23
|
+
* is itself loaded as TypeScript. */
|
|
24
|
+
export declare function inlineSourceMapURL(map: SourceMap): string;
|
|
25
|
+
//# sourceMappingURL=sourcemap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourcemap.d.ts","sourceRoot":"","sources":["../../src/compile/sourcemap.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IAClB,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;IACzB,KAAK,EAAE,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgBD,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,SAAS,CA8CX;AAED;;;sCAGsC;AACtC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAOzD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
2
|
+
function encodeVlqSigned(value) {
|
|
3
|
+
let v = value < 0 ? (-value << 1) | 1 : value << 1;
|
|
4
|
+
let out = '';
|
|
5
|
+
do {
|
|
6
|
+
let digit = v & 0b11111;
|
|
7
|
+
v >>>= 5;
|
|
8
|
+
if (v > 0)
|
|
9
|
+
digit |= 0b100000; // continuation bit
|
|
10
|
+
out += BASE64_CHARS[digit];
|
|
11
|
+
} while (v > 0);
|
|
12
|
+
return out;
|
|
13
|
+
}
|
|
14
|
+
export function buildSourceMap(generatedFile, originalFile, originalContent, mappings) {
|
|
15
|
+
// Group by generated line.
|
|
16
|
+
const lines = new Map();
|
|
17
|
+
let maxLine = 0;
|
|
18
|
+
for (const m of mappings) {
|
|
19
|
+
if (m.generatedLine > maxLine)
|
|
20
|
+
maxLine = m.generatedLine;
|
|
21
|
+
let bucket = lines.get(m.generatedLine);
|
|
22
|
+
if (!bucket) {
|
|
23
|
+
bucket = [];
|
|
24
|
+
lines.set(m.generatedLine, bucket);
|
|
25
|
+
}
|
|
26
|
+
bucket.push(m);
|
|
27
|
+
}
|
|
28
|
+
// VLQ encoding state — last absolute values across mappings.
|
|
29
|
+
let prevGenCol = 0;
|
|
30
|
+
let prevOrigLine = 0;
|
|
31
|
+
let prevOrigCol = 0;
|
|
32
|
+
const out = [];
|
|
33
|
+
for (let line = 0; line <= maxLine; line++) {
|
|
34
|
+
if (line > 0)
|
|
35
|
+
prevGenCol = 0; // reset gen column at each line
|
|
36
|
+
const bucket = (lines.get(line) ?? []).sort((a, b) => a.generatedColumn - b.generatedColumn);
|
|
37
|
+
const segments = [];
|
|
38
|
+
for (const m of bucket) {
|
|
39
|
+
let s = '';
|
|
40
|
+
s += encodeVlqSigned(m.generatedColumn - prevGenCol);
|
|
41
|
+
s += encodeVlqSigned(0); // source index — only one source
|
|
42
|
+
s += encodeVlqSigned(m.originalLine - prevOrigLine);
|
|
43
|
+
s += encodeVlqSigned(m.originalColumn - prevOrigCol);
|
|
44
|
+
segments.push(s);
|
|
45
|
+
prevGenCol = m.generatedColumn;
|
|
46
|
+
prevOrigLine = m.originalLine;
|
|
47
|
+
prevOrigCol = m.originalColumn;
|
|
48
|
+
}
|
|
49
|
+
out.push(segments.join(','));
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
version: 3,
|
|
53
|
+
file: generatedFile,
|
|
54
|
+
sources: [originalFile],
|
|
55
|
+
sourcesContent: [originalContent],
|
|
56
|
+
names: [],
|
|
57
|
+
mappings: out.join(';'),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** Encode a sourcemap as a base64 data URL suitable for appending to TS output.
|
|
61
|
+
* Returns a string of the form `// # source` + `MappingURL=data:...` so the
|
|
62
|
+
* sourcemap directive is consumed by JS tooling but ignored when this file
|
|
63
|
+
* is itself loaded as TypeScript. */
|
|
64
|
+
export function inlineSourceMapURL(map) {
|
|
65
|
+
const json = JSON.stringify(map);
|
|
66
|
+
const base64 = typeof Buffer !== 'undefined'
|
|
67
|
+
? Buffer.from(json, 'utf8').toString('base64')
|
|
68
|
+
: btoa(unescape(encodeURIComponent(json)));
|
|
69
|
+
return `//# sourceMappingURL=data:application/json;base64,${base64}\n`;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=sourcemap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourcemap.js","sourceRoot":"","sources":["../../src/compile/sourcemap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { TypeNode, TypePack } from '../parser/index.js';
|
|
3
|
+
export declare function compileType(t: TypeNode | null | undefined): ts.TypeNode;
|
|
4
|
+
/** Compile a type-pack into a single TS type usable as a return type. */
|
|
5
|
+
export declare function compileTypePack(pack: TypePack | null): ts.TypeNode;
|
|
6
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/compile/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAEV,QAAQ,EACR,QAAQ,EAGT,MAAM,oBAAoB,CAAC;AAc5B,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,EAAE,CAAC,QAAQ,CAmCvE;AA6FD,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC,QAAQ,CAkBlE"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
const { factory } = ts;
|
|
3
|
+
const PRIMITIVE_TYPE_NAMES = {
|
|
4
|
+
number: ts.SyntaxKind.NumberKeyword,
|
|
5
|
+
string: ts.SyntaxKind.StringKeyword,
|
|
6
|
+
boolean: ts.SyntaxKind.BooleanKeyword,
|
|
7
|
+
any: ts.SyntaxKind.AnyKeyword,
|
|
8
|
+
unknown: ts.SyntaxKind.UnknownKeyword,
|
|
9
|
+
never: ts.SyntaxKind.NeverKeyword,
|
|
10
|
+
void: ts.SyntaxKind.VoidKeyword,
|
|
11
|
+
};
|
|
12
|
+
export function compileType(t) {
|
|
13
|
+
if (!t)
|
|
14
|
+
return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
|
|
15
|
+
switch (t.type) {
|
|
16
|
+
case 'TypeReference':
|
|
17
|
+
return compileTypeReference(t);
|
|
18
|
+
case 'TypeOptional':
|
|
19
|
+
// Bare `?` — only appears as part of `T?` desugared into `T | nil` by
|
|
20
|
+
// the parser, so this case usually rides inside a TypeUnion. Emit `null`.
|
|
21
|
+
return factory.createLiteralTypeNode(factory.createNull());
|
|
22
|
+
case 'TypeUnion':
|
|
23
|
+
return factory.createUnionTypeNode(t.types.map(compileType));
|
|
24
|
+
case 'TypeIntersection':
|
|
25
|
+
return factory.createIntersectionTypeNode(t.types.map(compileType));
|
|
26
|
+
case 'TypeTypeof':
|
|
27
|
+
// `typeof x` — emit a typeof query node referencing the expression's
|
|
28
|
+
// identifier when possible.
|
|
29
|
+
if (t.expr.type === 'Local' || t.expr.type === 'Global') {
|
|
30
|
+
return factory.createTypeQueryNode(factory.createIdentifier(t.expr.name));
|
|
31
|
+
}
|
|
32
|
+
return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
|
|
33
|
+
case 'TypeSingletonBool':
|
|
34
|
+
return factory.createLiteralTypeNode(t.value ? factory.createTrue() : factory.createFalse());
|
|
35
|
+
case 'TypeSingletonString':
|
|
36
|
+
return factory.createLiteralTypeNode(factory.createStringLiteral(t.value));
|
|
37
|
+
case 'TypeGroup':
|
|
38
|
+
return factory.createParenthesizedType(compileType(t.groupType));
|
|
39
|
+
case 'TypeTable':
|
|
40
|
+
return compileTypeTable(t);
|
|
41
|
+
case 'TypeFunction':
|
|
42
|
+
return compileTypeFunction(t);
|
|
43
|
+
case 'TypeError':
|
|
44
|
+
case 'UnknownType':
|
|
45
|
+
default:
|
|
46
|
+
return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function compileTypeReference(t) {
|
|
50
|
+
if (t.name === 'nil')
|
|
51
|
+
return factory.createLiteralTypeNode(factory.createNull());
|
|
52
|
+
const kw = PRIMITIVE_TYPE_NAMES[t.name];
|
|
53
|
+
if (kw !== undefined && !t.prefix && t.parameters.length === 0) {
|
|
54
|
+
return factory.createKeywordTypeNode(kw);
|
|
55
|
+
}
|
|
56
|
+
const name = t.prefix
|
|
57
|
+
? factory.createQualifiedName(factory.createIdentifier(t.prefix), t.name)
|
|
58
|
+
: factory.createIdentifier(t.name);
|
|
59
|
+
const typeArgs = t.parameters
|
|
60
|
+
.map((p) => {
|
|
61
|
+
if (!p)
|
|
62
|
+
return undefined;
|
|
63
|
+
if (p.kind === 'type')
|
|
64
|
+
return compileType(p.value);
|
|
65
|
+
// Type-pack parameters (rare in our scope) — fall through to unknown.
|
|
66
|
+
return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
|
|
67
|
+
})
|
|
68
|
+
.filter((x) => x !== undefined);
|
|
69
|
+
return factory.createTypeReferenceNode(name, typeArgs.length > 0 ? typeArgs : undefined);
|
|
70
|
+
}
|
|
71
|
+
function compileTypeTable(t) {
|
|
72
|
+
const members = [];
|
|
73
|
+
for (const prop of t.props) {
|
|
74
|
+
members.push(factory.createPropertySignature(undefined, factory.createIdentifier(prop.name), undefined, compileType(prop.propType)));
|
|
75
|
+
}
|
|
76
|
+
if (t.indexer) {
|
|
77
|
+
members.push(factory.createIndexSignature(undefined, [
|
|
78
|
+
factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier('key'), undefined, compileType(t.indexer.indexType)),
|
|
79
|
+
], compileType(t.indexer.resultType)));
|
|
80
|
+
}
|
|
81
|
+
return factory.createTypeLiteralNode(members);
|
|
82
|
+
}
|
|
83
|
+
function compileTypeFunction(t) {
|
|
84
|
+
const params = [];
|
|
85
|
+
for (let i = 0; i < t.argTypes.types.length; i += 1) {
|
|
86
|
+
const argType = t.argTypes.types[i];
|
|
87
|
+
const argName = t.argNames[i];
|
|
88
|
+
params.push(factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier(argName?.name ?? `arg${i}`), undefined, compileType(argType)));
|
|
89
|
+
}
|
|
90
|
+
if (t.argTypes.tailType) {
|
|
91
|
+
const tail = t.argTypes.tailType;
|
|
92
|
+
const restType = tail.type === 'TypePackVariadic'
|
|
93
|
+
? factory.createArrayTypeNode(compileType(tail.variadicType))
|
|
94
|
+
: factory.createArrayTypeNode(factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword));
|
|
95
|
+
params.push(factory.createParameterDeclaration(undefined, factory.createToken(ts.SyntaxKind.DotDotDotToken), factory.createIdentifier('rest'), undefined, restType));
|
|
96
|
+
}
|
|
97
|
+
const ret = compileTypePack(t.returnTypes);
|
|
98
|
+
return factory.createFunctionTypeNode(undefined, params, ret);
|
|
99
|
+
}
|
|
100
|
+
/** Compile a type-pack into a single TS type usable as a return type. */
|
|
101
|
+
export function compileTypePack(pack) {
|
|
102
|
+
if (!pack)
|
|
103
|
+
return factory.createKeywordTypeNode(ts.SyntaxKind.VoidKeyword);
|
|
104
|
+
switch (pack.type) {
|
|
105
|
+
case 'TypePackExplicit': {
|
|
106
|
+
const types = pack.typeList.types;
|
|
107
|
+
if (types.length === 0 && !pack.typeList.tailType) {
|
|
108
|
+
return factory.createKeywordTypeNode(ts.SyntaxKind.VoidKeyword);
|
|
109
|
+
}
|
|
110
|
+
if (types.length === 1 && !pack.typeList.tailType)
|
|
111
|
+
return compileType(types[0]);
|
|
112
|
+
return factory.createTupleTypeNode(types.map(compileType));
|
|
113
|
+
}
|
|
114
|
+
case 'TypePackVariadic':
|
|
115
|
+
return factory.createArrayTypeNode(compileType(pack.variadicType));
|
|
116
|
+
case 'TypePackGeneric':
|
|
117
|
+
return factory.createTypeReferenceNode(pack.genericName);
|
|
118
|
+
default:
|
|
119
|
+
return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/compile/type.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { CompileContext } from './context.js';
|
|
3
|
+
/** Map a Luau identifier to a JS-safe one (suffixing reserved words). */
|
|
4
|
+
export declare function safeIdentifier(name: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Property-access name. JS allows reserved words as property names in
|
|
7
|
+
* dot notation (`obj.new`, `obj.delete`, `obj.class`) — only the
|
|
8
|
+
* identifier position needs escaping. Use this for IndexName / record
|
|
9
|
+
* keys / static class members.
|
|
10
|
+
*
|
|
11
|
+
* Parse-error recovery can hand us names with `%`, spaces, hyphens etc. —
|
|
12
|
+
* those would emit invalid JS when wrapped in `createIdentifier`. Replace
|
|
13
|
+
* such names with a safe placeholder so the file still compiles; the
|
|
14
|
+
* surrounding script will already have thrown a parse-error stub.
|
|
15
|
+
*/
|
|
16
|
+
export declare function propertyName(name: string): string;
|
|
17
|
+
export declare function isRepeatableExpression(expr: ts.Expression): boolean;
|
|
18
|
+
/** Wrap a TS expression in a Lua-faithful truthiness check.
|
|
19
|
+
*
|
|
20
|
+
* Optional `staticType` hint short-circuits the wrapper when the runtime
|
|
21
|
+
* shape of the value is narrow enough:
|
|
22
|
+
* - `'boolean'` → return `expr` directly (already truthy-shaped).
|
|
23
|
+
* - `'number'` / `'string'` → always truthy in Lua (only nil/false are
|
|
24
|
+
* falsy). Return `true` literal when the expression is side-effect-
|
|
25
|
+
* free; otherwise fall through.
|
|
26
|
+
* - `'nil'` → always falsy. Return `false`.
|
|
27
|
+
*
|
|
28
|
+
* For everything else, route through the runtime `isTruthy()` helper.
|
|
29
|
+
* We previously inlined the check (`x !== false && x !== null && …`) for
|
|
30
|
+
* repeatable expressions, but the inline form bloats output by ~6× per
|
|
31
|
+
* use site for no measurable runtime win — `isTruthy()` is one indirect
|
|
32
|
+
* call into a 4-line function the engine inlines on the hot path. */
|
|
33
|
+
export declare function truthify(expr: ts.Expression, ctx: CompileContext, staticType?: import('./context.js').StaticValueType | undefined): ts.Expression;
|
|
34
|
+
/** `throw new Error(message)` — used for unsupported AST nodes. */
|
|
35
|
+
export declare function throwUnsupported(message: string): ts.Statement;
|
|
36
|
+
/** As an expression: `(() => { throw new Error(message) })()`. */
|
|
37
|
+
export declare function unsupportedExpr(message: string): ts.Expression;
|
|
38
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/compile/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqEnD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD;AAOD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO,CASnE;AAED;;;;;;;;;;;;;;sEAcsE;AACtE,wBAAgB,QAAQ,CACtB,IAAI,EAAE,EAAE,CAAC,UAAU,EACnB,GAAG,EAAE,cAAc,EACnB,UAAU,GAAE,OAAO,cAAc,EAAE,eAAe,GAAG,SAAqB,GACzE,EAAE,CAAC,UAAU,CAuBf;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,SAAS,CAM9D;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAe9D"}
|