luau2ts 0.1.0 → 0.2.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/README.md +1 -1
- package/package.json +4 -1
- package/dist/cli/args.d.ts +0 -19
- package/dist/cli/args.d.ts.map +0 -1
- package/dist/cli/args.js +0 -130
- package/dist/cli/args.js.map +0 -1
- package/dist/cli/bin.d.ts +0 -3
- package/dist/cli/bin.d.ts.map +0 -1
- package/dist/cli/bin.js +0 -65
- package/dist/cli/bin.js.map +0 -1
- package/dist/cli/modes.d.ts +0 -17
- package/dist/cli/modes.d.ts.map +0 -1
- package/dist/cli/modes.js +0 -134
- package/dist/cli/modes.js.map +0 -1
- package/dist/compile/class-shape.d.ts +0 -31
- package/dist/compile/class-shape.d.ts.map +0 -1
- package/dist/compile/class-shape.js +0 -291
- package/dist/compile/class-shape.js.map +0 -1
- package/dist/compile/context.d.ts +0 -86
- package/dist/compile/context.d.ts.map +0 -1
- package/dist/compile/context.js +0 -144
- package/dist/compile/context.js.map +0 -1
- package/dist/compile/index.d.ts +0 -43
- package/dist/compile/index.d.ts.map +0 -1
- package/dist/compile/index.js +0 -2028
- package/dist/compile/index.js.map +0 -1
- package/dist/compile/macros/datatypes.d.ts +0 -2
- package/dist/compile/macros/datatypes.d.ts.map +0 -1
- package/dist/compile/macros/datatypes.js +0 -76
- package/dist/compile/macros/datatypes.js.map +0 -1
- package/dist/compile/macros/index.d.ts +0 -33
- package/dist/compile/macros/index.d.ts.map +0 -1
- package/dist/compile/macros/index.js +0 -71
- package/dist/compile/macros/index.js.map +0 -1
- package/dist/compile/macros/instance.d.ts +0 -2
- package/dist/compile/macros/instance.d.ts.map +0 -1
- package/dist/compile/macros/instance.js +0 -58
- package/dist/compile/macros/instance.js.map +0 -1
- package/dist/compile/macros/stdlib.d.ts +0 -2
- package/dist/compile/macros/stdlib.d.ts.map +0 -1
- package/dist/compile/macros/stdlib.js +0 -140
- package/dist/compile/macros/stdlib.js.map +0 -1
- package/dist/compile/rbxts-runtime.d.ts +0 -2
- package/dist/compile/rbxts-runtime.d.ts.map +0 -1
- package/dist/compile/rbxts-runtime.js +0 -163
- package/dist/compile/rbxts-runtime.js.map +0 -1
- package/dist/compile/sourcemap.d.ts +0 -25
- package/dist/compile/sourcemap.d.ts.map +0 -1
- package/dist/compile/sourcemap.js +0 -71
- package/dist/compile/sourcemap.js.map +0 -1
- package/dist/compile/type.d.ts +0 -6
- package/dist/compile/type.d.ts.map +0 -1
- package/dist/compile/type.js +0 -122
- package/dist/compile/type.js.map +0 -1
- package/dist/compile/util.d.ts +0 -38
- package/dist/compile/util.d.ts.map +0 -1
- package/dist/compile/util.js +0 -153
- package/dist/compile/util.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +0 -1
- package/dist/parser/index.d.ts +0 -4
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -227
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/types.d.ts +0 -430
- package/dist/parser/types.d.ts.map +0 -1
- package/dist/parser/types.js +0 -14
- package/dist/parser/types.js.map +0 -1
- package/dist/parser/wasm/luau-parser.d.mts +0 -21
- package/dist/parser/wasm/luau-parser.mjs +0 -2
- package/dist/parser/wasm/luau-parser.wasm +0 -0
- package/dist/rojo/index.d.ts +0 -4
- package/dist/rojo/index.d.ts.map +0 -1
- package/dist/rojo/index.js +0 -3
- package/dist/rojo/index.js.map +0 -1
- package/dist/rojo/load-project.d.ts +0 -12
- package/dist/rojo/load-project.d.ts.map +0 -1
- package/dist/rojo/load-project.js +0 -35
- package/dist/rojo/load-project.js.map +0 -1
- package/dist/rojo/types.d.ts +0 -39
- package/dist/rojo/types.d.ts.map +0 -1
- package/dist/rojo/types.js +0 -2
- package/dist/rojo/types.js.map +0 -1
- package/dist/rojo/walk-tree.d.ts +0 -40
- package/dist/rojo/walk-tree.d.ts.map +0 -1
- package/dist/rojo/walk-tree.js +0 -164
- package/dist/rojo/walk-tree.js.map +0 -1
- package/dist/runtime/arith.d.ts +0 -13
- package/dist/runtime/arith.d.ts.map +0 -1
- package/dist/runtime/arith.js +0 -151
- package/dist/runtime/arith.js.map +0 -1
- package/dist/runtime/index-helper.d.ts +0 -3
- package/dist/runtime/index-helper.d.ts.map +0 -1
- package/dist/runtime/index-helper.js +0 -40
- package/dist/runtime/index-helper.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -13
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -13
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/iterator.d.ts +0 -58
- package/dist/runtime/iterator.d.ts.map +0 -1
- package/dist/runtime/iterator.js +0 -181
- package/dist/runtime/iterator.js.map +0 -1
- package/dist/runtime/length.d.ts +0 -2
- package/dist/runtime/length.d.ts.map +0 -1
- package/dist/runtime/length.js +0 -15
- package/dist/runtime/length.js.map +0 -1
- package/dist/runtime/lua-stdlib.d.ts +0 -186
- package/dist/runtime/lua-stdlib.d.ts.map +0 -1
- package/dist/runtime/lua-stdlib.js +0 -502
- package/dist/runtime/lua-stdlib.js.map +0 -1
- package/dist/runtime/metatable.d.ts +0 -16
- package/dist/runtime/metatable.d.ts.map +0 -1
- package/dist/runtime/metatable.js +0 -129
- package/dist/runtime/metatable.js.map +0 -1
- package/dist/runtime/pattern.d.ts +0 -21
- package/dist/runtime/pattern.d.ts.map +0 -1
- package/dist/runtime/pattern.js +0 -375
- package/dist/runtime/pattern.js.map +0 -1
- package/dist/runtime/pcall.d.ts +0 -12
- package/dist/runtime/pcall.d.ts.map +0 -1
- package/dist/runtime/pcall.js +0 -54
- package/dist/runtime/pcall.js.map +0 -1
- package/dist/runtime/string-lib.d.ts +0 -31
- package/dist/runtime/string-lib.d.ts.map +0 -1
- package/dist/runtime/string-lib.js +0 -296
- package/dist/runtime/string-lib.js.map +0 -1
- package/dist/runtime/table-lib.d.ts +0 -18
- package/dist/runtime/table-lib.d.ts.map +0 -1
- package/dist/runtime/table-lib.js +0 -133
- package/dist/runtime/table-lib.js.map +0 -1
- package/dist/runtime/tostring.d.ts +0 -3
- package/dist/runtime/tostring.d.ts.map +0 -1
- package/dist/runtime/tostring.js +0 -82
- package/dist/runtime/tostring.js.map +0 -1
- package/dist/runtime/truthy.d.ts +0 -13
- package/dist/runtime/truthy.d.ts.map +0 -1
- package/dist/runtime/truthy.js +0 -26
- package/dist/runtime/truthy.js.map +0 -1
package/dist/compile/util.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import ts from 'typescript';
|
|
2
|
-
const { factory } = ts;
|
|
3
|
-
const TS_RESERVED = new Set([
|
|
4
|
-
'await',
|
|
5
|
-
'break',
|
|
6
|
-
'case',
|
|
7
|
-
'catch',
|
|
8
|
-
'class',
|
|
9
|
-
'const',
|
|
10
|
-
'continue',
|
|
11
|
-
'debugger',
|
|
12
|
-
'default',
|
|
13
|
-
'delete',
|
|
14
|
-
'do',
|
|
15
|
-
'else',
|
|
16
|
-
'enum',
|
|
17
|
-
'export',
|
|
18
|
-
'extends',
|
|
19
|
-
'false',
|
|
20
|
-
'finally',
|
|
21
|
-
'for',
|
|
22
|
-
'function',
|
|
23
|
-
'if',
|
|
24
|
-
'import',
|
|
25
|
-
'in',
|
|
26
|
-
'instanceof',
|
|
27
|
-
'new',
|
|
28
|
-
'null',
|
|
29
|
-
'return',
|
|
30
|
-
'super',
|
|
31
|
-
'switch',
|
|
32
|
-
'this',
|
|
33
|
-
'throw',
|
|
34
|
-
'true',
|
|
35
|
-
'try',
|
|
36
|
-
'typeof',
|
|
37
|
-
'var',
|
|
38
|
-
'void',
|
|
39
|
-
'while',
|
|
40
|
-
'with',
|
|
41
|
-
'yield',
|
|
42
|
-
'let',
|
|
43
|
-
'implements',
|
|
44
|
-
'interface',
|
|
45
|
-
'package',
|
|
46
|
-
'private',
|
|
47
|
-
'protected',
|
|
48
|
-
'public',
|
|
49
|
-
'static',
|
|
50
|
-
'as',
|
|
51
|
-
// TS type-name keywords. We deliberately do NOT escape `string`,
|
|
52
|
-
// `number`, `boolean`, `object` — they shadow the Lua stdlib globals
|
|
53
|
-
// (`string.format`, `math.floor`, `table.insert`) the script wrapper
|
|
54
|
-
// injects, and the JS engine accepts them as variable names anyway.
|
|
55
|
-
'symbol',
|
|
56
|
-
'unknown',
|
|
57
|
-
'never',
|
|
58
|
-
// Strict-mode reserved words. Bare `const arguments = ...` and
|
|
59
|
-
// `const eval = ...` are rejected in ES modules even though
|
|
60
|
-
// they're not classic TS keywords. Lua treats both as ordinary
|
|
61
|
-
// identifiers, so Vigilant-style `for _, arguments in ipairs(...)`
|
|
62
|
-
// breaks without escaping.
|
|
63
|
-
'arguments',
|
|
64
|
-
'eval',
|
|
65
|
-
]);
|
|
66
|
-
/** Map a Luau identifier to a JS-safe one (suffixing reserved words). */
|
|
67
|
-
export function safeIdentifier(name) {
|
|
68
|
-
if (TS_RESERVED.has(name))
|
|
69
|
-
return `${name}_`;
|
|
70
|
-
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name))
|
|
71
|
-
return '_invalid_';
|
|
72
|
-
return name;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Property-access name. JS allows reserved words as property names in
|
|
76
|
-
* dot notation (`obj.new`, `obj.delete`, `obj.class`) — only the
|
|
77
|
-
* identifier position needs escaping. Use this for IndexName / record
|
|
78
|
-
* keys / static class members.
|
|
79
|
-
*
|
|
80
|
-
* Parse-error recovery can hand us names with `%`, spaces, hyphens etc. —
|
|
81
|
-
* those would emit invalid JS when wrapped in `createIdentifier`. Replace
|
|
82
|
-
* such names with a safe placeholder so the file still compiles; the
|
|
83
|
-
* surrounding script will already have thrown a parse-error stub.
|
|
84
|
-
*/
|
|
85
|
-
export function propertyName(name) {
|
|
86
|
-
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name))
|
|
87
|
-
return '_invalid_';
|
|
88
|
-
return name;
|
|
89
|
-
}
|
|
90
|
-
/** Wrap an expression in `isTruthy(…)` for Lua-faithful conditional evaluation. */
|
|
91
|
-
function isUndefinedIdentifier(expr) {
|
|
92
|
-
return ts.isIdentifier(expr) && expr.text === 'undefined';
|
|
93
|
-
}
|
|
94
|
-
export function isRepeatableExpression(expr) {
|
|
95
|
-
return (ts.isIdentifier(expr)
|
|
96
|
-
|| expr.kind === ts.SyntaxKind.ThisKeyword
|
|
97
|
-
|| ts.isNumericLiteral(expr)
|
|
98
|
-
|| ts.isStringLiteral(expr)
|
|
99
|
-
|| expr.kind === ts.SyntaxKind.TrueKeyword
|
|
100
|
-
|| expr.kind === ts.SyntaxKind.FalseKeyword);
|
|
101
|
-
}
|
|
102
|
-
/** Wrap a TS expression in a Lua-faithful truthiness check.
|
|
103
|
-
*
|
|
104
|
-
* Optional `staticType` hint short-circuits the wrapper when the runtime
|
|
105
|
-
* shape of the value is narrow enough:
|
|
106
|
-
* - `'boolean'` → return `expr` directly (already truthy-shaped).
|
|
107
|
-
* - `'number'` / `'string'` → always truthy in Lua (only nil/false are
|
|
108
|
-
* falsy). Return `true` literal when the expression is side-effect-
|
|
109
|
-
* free; otherwise fall through.
|
|
110
|
-
* - `'nil'` → always falsy. Return `false`.
|
|
111
|
-
*
|
|
112
|
-
* For everything else, route through the runtime `isTruthy()` helper.
|
|
113
|
-
* We previously inlined the check (`x !== false && x !== null && …`) for
|
|
114
|
-
* repeatable expressions, but the inline form bloats output by ~6× per
|
|
115
|
-
* use site for no measurable runtime win — `isTruthy()` is one indirect
|
|
116
|
-
* call into a 4-line function the engine inlines on the hot path. */
|
|
117
|
-
export function truthify(expr, ctx, staticType = undefined) {
|
|
118
|
-
if (staticType === 'boolean')
|
|
119
|
-
return expr;
|
|
120
|
-
if (staticType === 'nil')
|
|
121
|
-
return factory.createFalse();
|
|
122
|
-
// number, string, and Roblox datatypes (Vector3, CFrame, …) are never
|
|
123
|
-
// nil and never the literal `false` in Lua, so Lua truthiness is always
|
|
124
|
-
// `true`. Side-effect-free expressions fold to a boolean literal.
|
|
125
|
-
const isAlwaysTruthy = staticType === 'number'
|
|
126
|
-
|| staticType === 'string'
|
|
127
|
-
|| (typeof staticType === 'string' && staticType.startsWith('datatype:'));
|
|
128
|
-
if (isAlwaysTruthy && isRepeatableExpression(expr)) {
|
|
129
|
-
return factory.createTrue();
|
|
130
|
-
}
|
|
131
|
-
// Quick literal folds — match `inlineTruthy`'s special cases without
|
|
132
|
-
// emitting the 6-clause inline check.
|
|
133
|
-
if (expr.kind === ts.SyntaxKind.TrueKeyword)
|
|
134
|
-
return factory.createTrue();
|
|
135
|
-
if (expr.kind === ts.SyntaxKind.FalseKeyword || isUndefinedIdentifier(expr)) {
|
|
136
|
-
return factory.createFalse();
|
|
137
|
-
}
|
|
138
|
-
if (ts.isNumericLiteral(expr) || ts.isStringLiteral(expr))
|
|
139
|
-
return factory.createTrue();
|
|
140
|
-
const fn = ctx.use('isTruthy');
|
|
141
|
-
return factory.createCallExpression(factory.createIdentifier(fn), undefined, [expr]);
|
|
142
|
-
}
|
|
143
|
-
/** `throw new Error(message)` — used for unsupported AST nodes. */
|
|
144
|
-
export function throwUnsupported(message) {
|
|
145
|
-
return factory.createThrowStatement(factory.createNewExpression(factory.createIdentifier('Error'), undefined, [
|
|
146
|
-
factory.createStringLiteral(message),
|
|
147
|
-
]));
|
|
148
|
-
}
|
|
149
|
-
/** As an expression: `(() => { throw new Error(message) })()`. */
|
|
150
|
-
export function unsupportedExpr(message) {
|
|
151
|
-
return factory.createCallExpression(factory.createParenthesizedExpression(factory.createArrowFunction(undefined, undefined, [], undefined, factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), factory.createBlock([throwUnsupported(message)], true))), undefined, []);
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=util.js.map
|
package/dist/compile/util.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/compile/util.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,OAAO,EACP,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Browser-safe public surface. Pulls only the compiler and the
|
|
2
|
-
// inlined WASM parser. The Rojo project reader (which needs Node's
|
|
3
|
-
// `fs/promises`) lives at the `luau2ts/rojo` subpath so this entry
|
|
4
|
-
// point can be bundled for the browser without dragging Node modules
|
|
5
|
-
// into the bundle graph.
|
|
6
|
-
export { compile, } from './compile/index.js';
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,mEAAmE;AACnE,mEAAmE;AACnE,qEAAqE;AACrE,yBAAyB;AACzB,OAAO,EACL,OAAO,GAGR,MAAM,oBAAoB,CAAC"}
|
package/dist/parser/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,cAAc,YAAY,CAAC;AA8K3B,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BhE"}
|
package/dist/parser/index.js
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import createLuauParserModule, {} from './wasm/luau-parser.mjs';
|
|
2
|
-
export * from './types.js';
|
|
3
|
-
let modulePromise = null;
|
|
4
|
-
function loadModule() {
|
|
5
|
-
modulePromise ??= createLuauParserModule();
|
|
6
|
-
return modulePromise;
|
|
7
|
-
}
|
|
8
|
-
/** Strip the experimental Luau native-integer suffix `i` from numeric
|
|
9
|
-
* literals (e.g. `123i` → `123`). Released Luau parsers gate this on an
|
|
10
|
-
* FFlag; our prebuilt WASM rejects it as "Malformed number". JavaScript
|
|
11
|
-
* numbers don't distinguish int from float, so the runtime semantics are
|
|
12
|
-
* unchanged once stripped. We rewrite outside string and comment regions
|
|
13
|
-
* to avoid clobbering identifiers that happen to end in a digit-then-i. */
|
|
14
|
-
function stripNativeIntegerSuffix(source) {
|
|
15
|
-
let out = '';
|
|
16
|
-
let i = 0;
|
|
17
|
-
const n = source.length;
|
|
18
|
-
while (i < n) {
|
|
19
|
-
const ch = source[i];
|
|
20
|
-
// Single-line comment `-- ...`
|
|
21
|
-
if (ch === '-' && source[i + 1] === '-') {
|
|
22
|
-
// Detect long bracket level for block comment `--[==[ ... ]==]`
|
|
23
|
-
if (source[i + 2] === '[') {
|
|
24
|
-
let j = i + 3;
|
|
25
|
-
let level = 0;
|
|
26
|
-
while (source[j] === '=') {
|
|
27
|
-
level++;
|
|
28
|
-
j++;
|
|
29
|
-
}
|
|
30
|
-
if (source[j] === '[') {
|
|
31
|
-
// Long-bracket comment.
|
|
32
|
-
const close = ']' + '='.repeat(level) + ']';
|
|
33
|
-
const end = source.indexOf(close, j + 1);
|
|
34
|
-
const stop = end < 0 ? n : end + close.length;
|
|
35
|
-
out += source.slice(i, stop);
|
|
36
|
-
i = stop;
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const eol = source.indexOf('\n', i);
|
|
41
|
-
const stop = eol < 0 ? n : eol;
|
|
42
|
-
out += source.slice(i, stop);
|
|
43
|
-
i = stop;
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
// Long-bracket string `[=*[ ... ]=*]`
|
|
47
|
-
if (ch === '[') {
|
|
48
|
-
let j = i + 1;
|
|
49
|
-
let level = 0;
|
|
50
|
-
while (source[j] === '=') {
|
|
51
|
-
level++;
|
|
52
|
-
j++;
|
|
53
|
-
}
|
|
54
|
-
if (source[j] === '[') {
|
|
55
|
-
const close = ']' + '='.repeat(level) + ']';
|
|
56
|
-
const end = source.indexOf(close, j + 1);
|
|
57
|
-
const stop = end < 0 ? n : end + close.length;
|
|
58
|
-
out += source.slice(i, stop);
|
|
59
|
-
i = stop;
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// Short string literals `"..."` / `'...'`
|
|
64
|
-
if (ch === '"' || ch === "'") {
|
|
65
|
-
const quote = ch;
|
|
66
|
-
let j = i + 1;
|
|
67
|
-
while (j < n) {
|
|
68
|
-
const c = source[j];
|
|
69
|
-
if (c === '\\') {
|
|
70
|
-
j += 2;
|
|
71
|
-
continue;
|
|
72
|
-
}
|
|
73
|
-
if (c === quote || c === '\n') {
|
|
74
|
-
j++;
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
j++;
|
|
78
|
-
}
|
|
79
|
-
out += source.slice(i, j);
|
|
80
|
-
i = j;
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
// Backtick interpolated string — `...{expr}...`. Recurse on `expr`s
|
|
84
|
-
// by simply scanning until matching backtick respecting brace depth.
|
|
85
|
-
if (ch === '`') {
|
|
86
|
-
let j = i + 1;
|
|
87
|
-
let depth = 0;
|
|
88
|
-
while (j < n) {
|
|
89
|
-
const c = source[j];
|
|
90
|
-
if (c === '\\') {
|
|
91
|
-
j += 2;
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
if (depth === 0 && c === '`') {
|
|
95
|
-
j++;
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
if (c === '{')
|
|
99
|
-
depth++;
|
|
100
|
-
else if (c === '}')
|
|
101
|
-
depth--;
|
|
102
|
-
j++;
|
|
103
|
-
}
|
|
104
|
-
out += source.slice(i, j);
|
|
105
|
-
i = j;
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
// Numeric literal followed by `i` suffix. Match Luau-style numbers
|
|
109
|
-
// (decimal, hex, binary), then drop a trailing `i` if it's not part
|
|
110
|
-
// of a longer identifier.
|
|
111
|
-
const numMatch = /^(?:0[xX][0-9a-fA-F_]+|0[bB][01_]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[eE][+-]?\d+)?)/.exec(source.slice(i));
|
|
112
|
-
if (numMatch && /[a-zA-Z_]/.test(source[Math.max(0, i - 1)] ?? '') === false) {
|
|
113
|
-
const lit = numMatch[0];
|
|
114
|
-
const after = source[i + lit.length];
|
|
115
|
-
if (after === 'i' && !/[a-zA-Z0-9_]/.test(source[i + lit.length + 1] ?? '')) {
|
|
116
|
-
out += lit;
|
|
117
|
-
i += lit.length + 1;
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
out += ch;
|
|
122
|
-
i++;
|
|
123
|
-
}
|
|
124
|
-
return out;
|
|
125
|
-
}
|
|
126
|
-
// Old Roblox scripts often contain backslash escapes that modern Luau rejects
|
|
127
|
-
// as invalid (e.g. `"rbxasset://textures\GunCursor.png"` — `\G` is not a
|
|
128
|
-
// recognized escape). The legacy parser silently dropped the backslash.
|
|
129
|
-
// Replace `\<unrecognized>` inside short string literals with just the
|
|
130
|
-
// character so these scripts continue to parse. Long-bracket strings don't
|
|
131
|
-
// process escapes at all, so they're left alone.
|
|
132
|
-
function normalizeStringEscapes(source) {
|
|
133
|
-
const VALID = /[abfnrtvxzu\\"'\r\n0-9]/;
|
|
134
|
-
let out = '';
|
|
135
|
-
let i = 0;
|
|
136
|
-
const n = source.length;
|
|
137
|
-
while (i < n) {
|
|
138
|
-
const ch = source[i];
|
|
139
|
-
if (ch === '-' && source[i + 1] === '-') {
|
|
140
|
-
const eol = source.indexOf('\n', i);
|
|
141
|
-
const stop = eol < 0 ? n : eol;
|
|
142
|
-
out += source.slice(i, stop);
|
|
143
|
-
i = stop;
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
if (ch === '[') {
|
|
147
|
-
let j = i + 1;
|
|
148
|
-
while (source[j] === '=')
|
|
149
|
-
j++;
|
|
150
|
-
if (source[j] === '[') {
|
|
151
|
-
const level = j - i - 1;
|
|
152
|
-
const close = ']' + '='.repeat(level) + ']';
|
|
153
|
-
const end = source.indexOf(close, j + 1);
|
|
154
|
-
const stop = end < 0 ? n : end + close.length;
|
|
155
|
-
out += source.slice(i, stop);
|
|
156
|
-
i = stop;
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (ch === '"' || ch === "'") {
|
|
161
|
-
const quote = ch;
|
|
162
|
-
out += ch;
|
|
163
|
-
i++;
|
|
164
|
-
while (i < n) {
|
|
165
|
-
const c = source[i];
|
|
166
|
-
if (c === '\\') {
|
|
167
|
-
const nx = source[i + 1] ?? '';
|
|
168
|
-
if (VALID.test(nx)) {
|
|
169
|
-
out += c + nx;
|
|
170
|
-
i += 2;
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
out += nx;
|
|
174
|
-
i += 2;
|
|
175
|
-
}
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
if (c === quote || c === '\n') {
|
|
179
|
-
out += c;
|
|
180
|
-
i++;
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
out += c;
|
|
184
|
-
i++;
|
|
185
|
-
}
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
out += ch;
|
|
189
|
-
i++;
|
|
190
|
-
}
|
|
191
|
-
return out;
|
|
192
|
-
}
|
|
193
|
-
export async function parse(source) {
|
|
194
|
-
const m = await loadModule();
|
|
195
|
-
source = stripNativeIntegerSuffix(source);
|
|
196
|
-
source = normalizeStringEscapes(source);
|
|
197
|
-
const bytes = new TextEncoder().encode(source);
|
|
198
|
-
const ptr = m._malloc(bytes.length);
|
|
199
|
-
if (!ptr) {
|
|
200
|
-
throw new Error('luau-parser: malloc failed');
|
|
201
|
-
}
|
|
202
|
-
let resultPtr = 0;
|
|
203
|
-
try {
|
|
204
|
-
m.HEAPU8.set(bytes, ptr);
|
|
205
|
-
resultPtr = m._luau_parse(ptr, bytes.length);
|
|
206
|
-
if (!resultPtr) {
|
|
207
|
-
throw new Error('luau-parser: parse returned null');
|
|
208
|
-
}
|
|
209
|
-
const json = m.UTF8ToString(resultPtr);
|
|
210
|
-
// The WASM glue serializes numbers via std::ostream, which emits `inf`,
|
|
211
|
-
// `-inf`, `nan`, `-nan` for non-finite floats — none of which are valid
|
|
212
|
-
// JSON. Substitute IEEE 754-equivalent literals so JSON.parse succeeds
|
|
213
|
-
// (1e9999 overflows to Infinity in JS; null is the closest stand-in for
|
|
214
|
-
// NaN since JSON has no distinct NaN literal).
|
|
215
|
-
const sanitized = json
|
|
216
|
-
.replace(/:\s*-inf\b/g, ':-1e9999')
|
|
217
|
-
.replace(/:\s*inf\b/g, ':1e9999')
|
|
218
|
-
.replace(/:\s*-?nan\b/g, ':null');
|
|
219
|
-
return JSON.parse(sanitized);
|
|
220
|
-
}
|
|
221
|
-
finally {
|
|
222
|
-
if (resultPtr)
|
|
223
|
-
m._luau_free(resultPtr);
|
|
224
|
-
m._free(ptr);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
//# sourceMappingURL=index.js.map
|
package/dist/parser/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"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"}
|