luau2ts 0.2.1 → 0.2.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.
Files changed (140) hide show
  1. package/dist/cli/args.d.ts +23 -0
  2. package/dist/cli/args.d.ts.map +1 -0
  3. package/dist/cli/args.js +177 -0
  4. package/dist/cli/args.js.map +1 -0
  5. package/dist/cli/bin.d.ts +3 -0
  6. package/dist/cli/bin.d.ts.map +1 -0
  7. package/dist/cli/bin.js +71 -0
  8. package/dist/cli/bin.js.map +1 -0
  9. package/dist/cli/modes.d.ts +20 -0
  10. package/dist/cli/modes.d.ts.map +1 -0
  11. package/dist/cli/modes.js +145 -0
  12. package/dist/cli/modes.js.map +1 -0
  13. package/dist/compile/class-shape.d.ts +31 -0
  14. package/dist/compile/class-shape.d.ts.map +1 -0
  15. package/dist/compile/class-shape.js +291 -0
  16. package/dist/compile/class-shape.js.map +1 -0
  17. package/dist/compile/context.d.ts +86 -0
  18. package/dist/compile/context.d.ts.map +1 -0
  19. package/dist/compile/context.js +144 -0
  20. package/dist/compile/context.js.map +1 -0
  21. package/dist/compile/index.d.ts +58 -0
  22. package/dist/compile/index.d.ts.map +1 -0
  23. package/dist/compile/index.js +2155 -0
  24. package/dist/compile/index.js.map +1 -0
  25. package/dist/compile/macros/datatypes.d.ts +2 -0
  26. package/dist/compile/macros/datatypes.d.ts.map +1 -0
  27. package/dist/compile/macros/datatypes.js +76 -0
  28. package/dist/compile/macros/datatypes.js.map +1 -0
  29. package/dist/compile/macros/index.d.ts +33 -0
  30. package/dist/compile/macros/index.d.ts.map +1 -0
  31. package/dist/compile/macros/index.js +71 -0
  32. package/dist/compile/macros/index.js.map +1 -0
  33. package/dist/compile/macros/instance.d.ts +2 -0
  34. package/dist/compile/macros/instance.d.ts.map +1 -0
  35. package/dist/compile/macros/instance.js +58 -0
  36. package/dist/compile/macros/instance.js.map +1 -0
  37. package/dist/compile/macros/stdlib.d.ts +2 -0
  38. package/dist/compile/macros/stdlib.d.ts.map +1 -0
  39. package/dist/compile/macros/stdlib.js +140 -0
  40. package/dist/compile/macros/stdlib.js.map +1 -0
  41. package/dist/compile/rbxts-runtime.d.ts +2 -0
  42. package/dist/compile/rbxts-runtime.d.ts.map +1 -0
  43. package/dist/compile/rbxts-runtime.js +163 -0
  44. package/dist/compile/rbxts-runtime.js.map +1 -0
  45. package/dist/compile/sourcemap.d.ts +25 -0
  46. package/dist/compile/sourcemap.d.ts.map +1 -0
  47. package/dist/compile/sourcemap.js +71 -0
  48. package/dist/compile/sourcemap.js.map +1 -0
  49. package/dist/compile/type.d.ts +6 -0
  50. package/dist/compile/type.d.ts.map +1 -0
  51. package/dist/compile/type.js +122 -0
  52. package/dist/compile/type.js.map +1 -0
  53. package/dist/compile/util.d.ts +38 -0
  54. package/dist/compile/util.d.ts.map +1 -0
  55. package/dist/compile/util.js +153 -0
  56. package/dist/compile/util.js.map +1 -0
  57. package/dist/index.d.ts +3 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +7 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/parser/index.d.ts +4 -0
  62. package/dist/parser/index.d.ts.map +1 -0
  63. package/dist/parser/index.js +227 -0
  64. package/dist/parser/index.js.map +1 -0
  65. package/dist/parser/types.d.ts +430 -0
  66. package/dist/parser/types.d.ts.map +1 -0
  67. package/dist/parser/types.js +14 -0
  68. package/dist/parser/types.js.map +1 -0
  69. package/dist/parser/wasm/luau-parser.d.mts +21 -0
  70. package/dist/parser/wasm/luau-parser.mjs +2 -0
  71. package/dist/parser/wasm/luau-parser.wasm +0 -0
  72. package/dist/rojo/index.d.ts +4 -0
  73. package/dist/rojo/index.d.ts.map +1 -0
  74. package/dist/rojo/index.js +3 -0
  75. package/dist/rojo/index.js.map +1 -0
  76. package/dist/rojo/load-project.d.ts +12 -0
  77. package/dist/rojo/load-project.d.ts.map +1 -0
  78. package/dist/rojo/load-project.js +35 -0
  79. package/dist/rojo/load-project.js.map +1 -0
  80. package/dist/rojo/types.d.ts +39 -0
  81. package/dist/rojo/types.d.ts.map +1 -0
  82. package/dist/rojo/types.js +2 -0
  83. package/dist/rojo/types.js.map +1 -0
  84. package/dist/rojo/walk-tree.d.ts +40 -0
  85. package/dist/rojo/walk-tree.d.ts.map +1 -0
  86. package/dist/rojo/walk-tree.js +164 -0
  87. package/dist/rojo/walk-tree.js.map +1 -0
  88. package/dist/runtime/arith.d.ts +13 -0
  89. package/dist/runtime/arith.d.ts.map +1 -0
  90. package/dist/runtime/arith.js +151 -0
  91. package/dist/runtime/arith.js.map +1 -0
  92. package/dist/runtime/index-helper.d.ts +3 -0
  93. package/dist/runtime/index-helper.d.ts.map +1 -0
  94. package/dist/runtime/index-helper.js +40 -0
  95. package/dist/runtime/index-helper.js.map +1 -0
  96. package/dist/runtime/index.d.ts +13 -0
  97. package/dist/runtime/index.d.ts.map +1 -0
  98. package/dist/runtime/index.js +13 -0
  99. package/dist/runtime/index.js.map +1 -0
  100. package/dist/runtime/iterator.d.ts +58 -0
  101. package/dist/runtime/iterator.d.ts.map +1 -0
  102. package/dist/runtime/iterator.js +181 -0
  103. package/dist/runtime/iterator.js.map +1 -0
  104. package/dist/runtime/length.d.ts +2 -0
  105. package/dist/runtime/length.d.ts.map +1 -0
  106. package/dist/runtime/length.js +15 -0
  107. package/dist/runtime/length.js.map +1 -0
  108. package/dist/runtime/lua-stdlib.d.ts +186 -0
  109. package/dist/runtime/lua-stdlib.d.ts.map +1 -0
  110. package/dist/runtime/lua-stdlib.js +502 -0
  111. package/dist/runtime/lua-stdlib.js.map +1 -0
  112. package/dist/runtime/metatable.d.ts +16 -0
  113. package/dist/runtime/metatable.d.ts.map +1 -0
  114. package/dist/runtime/metatable.js +129 -0
  115. package/dist/runtime/metatable.js.map +1 -0
  116. package/dist/runtime/pattern.d.ts +21 -0
  117. package/dist/runtime/pattern.d.ts.map +1 -0
  118. package/dist/runtime/pattern.js +375 -0
  119. package/dist/runtime/pattern.js.map +1 -0
  120. package/dist/runtime/pcall.d.ts +12 -0
  121. package/dist/runtime/pcall.d.ts.map +1 -0
  122. package/dist/runtime/pcall.js +54 -0
  123. package/dist/runtime/pcall.js.map +1 -0
  124. package/dist/runtime/string-lib.d.ts +31 -0
  125. package/dist/runtime/string-lib.d.ts.map +1 -0
  126. package/dist/runtime/string-lib.js +296 -0
  127. package/dist/runtime/string-lib.js.map +1 -0
  128. package/dist/runtime/table-lib.d.ts +18 -0
  129. package/dist/runtime/table-lib.d.ts.map +1 -0
  130. package/dist/runtime/table-lib.js +133 -0
  131. package/dist/runtime/table-lib.js.map +1 -0
  132. package/dist/runtime/tostring.d.ts +3 -0
  133. package/dist/runtime/tostring.d.ts.map +1 -0
  134. package/dist/runtime/tostring.js +82 -0
  135. package/dist/runtime/tostring.js.map +1 -0
  136. package/dist/runtime/truthy.d.ts +13 -0
  137. package/dist/runtime/truthy.d.ts.map +1 -0
  138. package/dist/runtime/truthy.js +26 -0
  139. package/dist/runtime/truthy.js.map +1 -0
  140. package/package.json +10 -10
@@ -0,0 +1,140 @@
1
+ import ts from 'typescript';
2
+ import { registerMacro } from './index.js';
3
+ const { factory } = ts;
4
+ // ─── table.* ───────────────────────────────────────────────────────────────
5
+ // `table.insert(t, v)` → `t.push(v)`
6
+ // `table.insert(t, i, v)` → `t.splice(i-1, 0, v)` (1-indexed → 0-indexed)
7
+ registerMacro('table.insert', ({ compiledArgs }) => {
8
+ const [target, second, third] = compiledArgs;
9
+ if (!target)
10
+ return undefined;
11
+ if (third !== undefined) {
12
+ // 3-arg form: insert at position.
13
+ const indexExpr = factory.createBinaryExpression(second, factory.createToken(ts.SyntaxKind.MinusToken), factory.createNumericLiteral(1));
14
+ return factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier('splice')), undefined, [indexExpr, factory.createNumericLiteral(0), third]);
15
+ }
16
+ if (second === undefined)
17
+ return undefined;
18
+ return factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier('push')), undefined, [second]);
19
+ }, 'rbxts');
20
+ // `table.remove(t)` → `t.pop()`
21
+ // `table.remove(t, i)` → `t.splice(i-1, 1)[0]`
22
+ registerMacro('table.remove', ({ compiledArgs }) => {
23
+ const [target, idx] = compiledArgs;
24
+ if (!target)
25
+ return undefined;
26
+ if (idx === undefined) {
27
+ return factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier('pop')), undefined, []);
28
+ }
29
+ const indexExpr = factory.createBinaryExpression(idx, factory.createToken(ts.SyntaxKind.MinusToken), factory.createNumericLiteral(1));
30
+ return factory.createElementAccessExpression(factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier('splice')), undefined, [indexExpr, factory.createNumericLiteral(1)]), factory.createNumericLiteral(0));
31
+ }, 'rbxts');
32
+ // `table.concat(t, sep)` → `t.join(sep)`
33
+ registerMacro('table.concat', ({ compiledArgs }) => {
34
+ const [target, sep] = compiledArgs;
35
+ if (!target)
36
+ return undefined;
37
+ return factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier('join')), undefined, sep ? [sep] : []);
38
+ }, 'rbxts');
39
+ // `table.sort(t, cmp?)` → `t.sort(cmp)`
40
+ registerMacro('table.sort', ({ compiledArgs }) => {
41
+ const [target, cmp] = compiledArgs;
42
+ if (!target)
43
+ return undefined;
44
+ return factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier('sort')), undefined, cmp ? [cmp] : []);
45
+ }, 'rbxts');
46
+ // `table.find(t, v)` → `t.indexOf(v) + 1` (Lua returns 1-indexed; nil → 0+1 = 1
47
+ // would clash, so the conversion is approximate. Use `t.indexOf(v) !== -1`
48
+ // idioms in TS instead. We emit `t.indexOf(v) + 1` which gives 0 on miss
49
+ // — matching the Lua semantics shape since 0 is falsy in Luau but TRUTHY
50
+ // in JS. This divergence is documented; users who rely on the falsy-on-
51
+ // miss should rewrite to `t.indexOf(v) !== -1`).
52
+ registerMacro('table.find', ({ compiledArgs }) => {
53
+ const [target, value] = compiledArgs;
54
+ if (!target || !value)
55
+ return undefined;
56
+ return factory.createBinaryExpression(factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier('indexOf')), undefined, [value]), factory.createToken(ts.SyntaxKind.PlusToken), factory.createNumericLiteral(1));
57
+ }, 'rbxts');
58
+ // `table.create(n, v)` → `new Array(n).fill(v)` (or `new Array(n)` when v is omitted)
59
+ registerMacro('table.create', ({ compiledArgs }) => {
60
+ const [n, v] = compiledArgs;
61
+ if (!n)
62
+ return undefined;
63
+ const arr = factory.createNewExpression(factory.createIdentifier('Array'), undefined, [n]);
64
+ if (v === undefined)
65
+ return arr;
66
+ return factory.createCallExpression(factory.createPropertyAccessExpression(arr, factory.createIdentifier('fill')), undefined, [v]);
67
+ }, 'rbxts');
68
+ // `table.clone(t)` → `[...t]` (shallow)
69
+ registerMacro('table.clone', ({ compiledArgs }) => {
70
+ const [target] = compiledArgs;
71
+ if (!target)
72
+ return undefined;
73
+ return factory.createArrayLiteralExpression([factory.createSpreadElement(target)], false);
74
+ }, 'rbxts');
75
+ // `table.unpack(t)` → `...t`. The spread element only makes sense in a
76
+ // call-position context, so emit `[...t]` to give a plain expression we can
77
+ // reuse. Users who need actual unpacking write multi-return destructuring.
78
+ registerMacro('table.unpack', ({ compiledArgs }) => {
79
+ const [target] = compiledArgs;
80
+ if (!target)
81
+ return undefined;
82
+ return factory.createArrayLiteralExpression([factory.createSpreadElement(target)], false);
83
+ }, 'rbxts');
84
+ // ─── string.* method-form rewrites ─────────────────────────────────────────
85
+ // `string.split(s, sep)` → `s.split(sep)`
86
+ // `string.upper(s)` → `s.toUpperCase()`
87
+ // `string.lower(s)` → `s.toLowerCase()`
88
+ // `string.reverse(s)` → `[...s].reverse().join('')`
89
+ // `string.len(s)` → `s.length`
90
+ // `string.rep(s, n)` → `s.repeat(n)`
91
+ function emitStringMethod(method, argsAfterTarget = 0) {
92
+ return ({ compiledArgs }) => {
93
+ const [target, ...rest] = compiledArgs;
94
+ if (!target)
95
+ return undefined;
96
+ return factory.createCallExpression(factory.createPropertyAccessExpression(target, factory.createIdentifier(method)), undefined, rest.slice(0, argsAfterTarget));
97
+ };
98
+ }
99
+ registerMacro('string.split', emitStringMethod('split', 1), 'rbxts');
100
+ registerMacro('string.upper', emitStringMethod('toUpperCase', 0), 'rbxts');
101
+ registerMacro('string.lower', emitStringMethod('toLowerCase', 0), 'rbxts');
102
+ registerMacro('string.rep', emitStringMethod('repeat', 1), 'rbxts');
103
+ registerMacro('string.len', ({ compiledArgs }) => {
104
+ if (!compiledArgs[0])
105
+ return undefined;
106
+ return factory.createPropertyAccessExpression(compiledArgs[0], factory.createIdentifier('length'));
107
+ }, 'rbxts');
108
+ registerMacro('string.reverse', ({ compiledArgs }) => {
109
+ const [target] = compiledArgs;
110
+ if (!target)
111
+ return undefined;
112
+ // [...s].reverse().join('')
113
+ return factory.createCallExpression(factory.createPropertyAccessExpression(factory.createCallExpression(factory.createPropertyAccessExpression(factory.createArrayLiteralExpression([factory.createSpreadElement(target)], false), factory.createIdentifier('reverse')), undefined, []), factory.createIdentifier('join')), undefined, [factory.createStringLiteral('')]);
114
+ }, 'rbxts');
115
+ // ─── math.* — direct JS Math passthrough ──────────────────────────────────
116
+ function emitMathPassthrough(name) {
117
+ return ({ compiledArgs }) => factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Math'), factory.createIdentifier(name)), undefined, compiledArgs);
118
+ }
119
+ for (const m of [
120
+ 'floor', 'ceil', 'abs', 'sqrt', 'max', 'min',
121
+ 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
122
+ 'sinh', 'cosh', 'tanh', 'exp', 'log', 'log2', 'log10',
123
+ 'sign', 'round', 'random',
124
+ ]) {
125
+ registerMacro(`math.${m}`, emitMathPassthrough(m), 'rbxts');
126
+ }
127
+ // `math.huge` and `math.pi` are property accesses, not calls — handled
128
+ // separately as expression-level rewrites would need a different hook. Our
129
+ // `math` namespace export already exposes them, so they pass through.
130
+ // `math.clamp(x, lo, hi)` → `Math.min(Math.max(x, lo), hi)`
131
+ registerMacro('math.clamp', ({ compiledArgs }) => {
132
+ const [x, lo, hi] = compiledArgs;
133
+ if (!x || !lo || !hi)
134
+ return undefined;
135
+ return factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Math'), factory.createIdentifier('min')), undefined, [
136
+ factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Math'), factory.createIdentifier('max')), undefined, [x, lo]),
137
+ hi,
138
+ ]);
139
+ }, 'rbxts');
140
+ //# sourceMappingURL=stdlib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdlib.js","sourceRoot":"","sources":["../../../src/compile/macros/stdlib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAkB,MAAM,YAAY,CAAC;AAE3D,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAEvB,8EAA8E;AAE9E,qCAAqC;AACrC,0EAA0E;AAC1E,aAAa,CACX,cAAc,EACd,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,kCAAkC;QAClC,MAAM,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAC9C,MAAO,EACP,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAC7C,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAChC,CAAC;QACF,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAClF,SAAS,EACT,CAAC,SAAS,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CACpD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAChF,SAAS,EACT,CAAC,MAAM,CAAC,CACT,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,gCAAgC;AAChC,+CAA+C;AAC/C,aAAa,CACX,cAAc,EACd,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAC/E,SAAS,EACT,EAAE,CACH,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAC9C,GAAG,EACH,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAC7C,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAChC,CAAC;IACF,OAAO,OAAO,CAAC,6BAA6B,CAC1C,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAClF,SAAS,EACT,CAAC,SAAS,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAC7C,EACD,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAChC,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,yCAAyC;AACzC,aAAa,CACX,cAAc,EACd,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAChF,SAAS,EACT,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CACjB,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,wCAAwC;AACxC,aAAa,CACX,YAAY,EACZ,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAChF,SAAS,EACT,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CACjB,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,gFAAgF;AAChF,2EAA2E;AAC3E,yEAAyE;AACzE,yEAAyE;AACzE,wEAAwE;AACxE,iDAAiD;AACjD,aAAa,CACX,YAAY,EACZ,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC;IACrC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,OAAO,CAAC,sBAAsB,CACnC,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EACnF,SAAS,EACT,CAAC,KAAK,CAAC,CACR,EACD,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAC5C,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAChC,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,sFAAsF;AACtF,aAAa,CACX,cAAc,EACd,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC;IAC5B,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CACrC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,EACjC,SAAS,EACT,CAAC,CAAC,CAAC,CACJ,CAAC;IACF,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAChC,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,GAAG,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAC7E,SAAS,EACT,CAAC,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,wCAAwC;AACxC,aAAa,CACX,aAAa,EACb,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC,4BAA4B,CACzC,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EACrC,KAAK,CACN,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,aAAa,CACX,cAAc,EACd,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC,4BAA4B,CACzC,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EACrC,KAAK,CACN,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,8EAA8E;AAE9E,0CAA0C;AAC1C,wCAAwC;AACxC,wCAAwC;AACxC,oDAAoD;AACpD,+BAA+B;AAC/B,qCAAqC;AAErC,SAAS,gBAAgB,CAAC,MAAc,EAAE,eAAe,GAAG,CAAC;IAC3D,OAAO,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;QACrC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,YAAY,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAChF,SAAS,EACT,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAC/B,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,aAAa,CAAC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAEpE,aAAa,CACX,YAAY,EACZ,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,OAAO,CAAC,8BAA8B,CAC3C,YAAY,CAAC,CAAC,CAAC,EACf,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CACnC,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,aAAa,CACX,gBAAgB,EAChB,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,4BAA4B;IAC5B,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,4BAA4B,CAClC,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EACrC,KAAK,CACN,EACD,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CACpC,EACD,SAAS,EACT,EAAE,CACH,EACD,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CACjC,EACD,SAAS,EACT,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAClC,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC;AAEF,6EAA6E;AAE7E,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE,CACrC,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAChC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAC/B,EACD,SAAS,EACT,YAAY,CACb,CAAC;AACN,CAAC;AAED,KAAK,MAAM,CAAC,IAAI;IACd,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAC5C,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACpD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO;IACrD,MAAM,EAAE,OAAO,EAAE,QAAQ;CAC1B,EAAE,CAAC;IACF,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,uEAAuE;AACvE,2EAA2E;AAC3E,sEAAsE;AAEtE,4DAA4D;AAC5D,aAAa,CACX,YAAY,EACZ,CAAC,EAAE,YAAY,EAAa,EAAE,EAAE;IAC9B,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC;IACjC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,OAAO,CAAC,oBAAoB,CACjC,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAChC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAChC,EACD,SAAS,EACT;QACE,OAAO,CAAC,oBAAoB,CAC1B,OAAO,CAAC,8BAA8B,CACpC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAChC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAChC,EACD,SAAS,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,CACR;QACD,EAAE;KACH,CACF,CAAC;AACJ,CAAC,EACD,OAAO,CACR,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rbxts-runtime.d.ts.map
@@ -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":"AAoBA,MAAM,YAAY,GAAG,kEAAkE,CAAC;AAExF,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,CAAC;QACF,IAAI,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC;QACxB,CAAC,MAAM,CAAC,CAAC;QACT,IAAI,CAAC,GAAG,CAAC;YAAE,KAAK,IAAI,QAAQ,CAAC,CAAC,mBAAmB;QACjD,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAChB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,aAAqB,EACrB,YAAoB,EACpB,eAAuB,EACvB,QAA4B;IAE5B,2BAA2B;IAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACpD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,aAAa,GAAG,OAAO;YAAE,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC;QACzD,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,6DAA6D;IAC7D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,GAAG,CAAC;YAAE,UAAU,GAAG,CAAC,CAAC,CAAC,gCAAgC;QAC9D,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,eAAe,GAAG,UAAU,CAAC,CAAC;YACrD,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC;YAC1D,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC;YACpD,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,UAAU,GAAG,CAAC,CAAC,eAAe,CAAC;YAC/B,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;YAC9B,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,YAAY,CAAC;QACvB,cAAc,EAAE,CAAC,eAAe,CAAC;QACjC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KACxB,CAAC;AACJ,CAAC;AAED;;;sCAGsC;AACtC,MAAM,UAAU,kBAAkB,CAAC,GAAc;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GACV,OAAO,MAAM,KAAK,WAAW;QAC3B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,OAAO,qDAAqD,MAAM,IAAI,CAAC;AACzE,CAAC"}
@@ -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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"}