@backtickjs/compiler 0.1.3 → 0.1.5
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/dist/printVirtualCode.js +31 -14
- package/dist/printVirtualCode.js.map +1 -1
- package/dist/rewriteScript.d.ts +1 -1
- package/dist/rewriteScript.js +13 -22
- package/dist/rewriteScript.js.map +1 -1
- package/dist/virtualScript.d.ts +1 -1
- package/dist/virtualScript.js +3 -29
- package/dist/virtualScript.js.map +1 -1
- package/package.json +2 -2
- package/src/printVirtualCode.ts +40 -20
- package/src/rewriteScript.ts +16 -29
- package/src/virtualScript.ts +2 -36
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ It finds each script in a source file, resolves its splices, compiles the script
|
|
|
19
19
|
|
|
20
20
|
- [`@backtickjs/core`](https://github.com/backtickjs/backtick/tree/main/packages/core): the `cs` tag
|
|
21
21
|
- [`@backtickjs/tsc`](https://github.com/backtickjs/backtick/tree/main/packages/tsc), [`@backtickjs/node-plugin`](https://github.com/backtickjs/backtick/tree/main/packages/node-plugin), [`@backtickjs/bun-plugin`](https://github.com/backtickjs/backtick/tree/main/packages/bun-plugin): packages that use it
|
|
22
|
-
- [
|
|
22
|
+
- [How it works](https://backtickjs.com/docs/how-it-works)
|
|
23
23
|
|
|
24
24
|
## License
|
|
25
25
|
|
package/dist/printVirtualCode.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { buildMappings } from "./buildMappings.js";
|
|
2
|
+
import { mayAwait } from "./rewriteScript.js";
|
|
2
3
|
import { segmentsToString } from "./segmentsToString.js";
|
|
3
4
|
import { virtualScript } from "./virtualScript.js";
|
|
4
5
|
export function printVirtualCode(ts, parsedFile, rewrittenFile) {
|
|
@@ -27,21 +28,37 @@ function renderScript(ts, sourceFile, rewrittenFile, script) {
|
|
|
27
28
|
if (rewritten.leftAsWritten) {
|
|
28
29
|
return ["cs.lift(undefined as never)"];
|
|
29
30
|
}
|
|
30
|
-
return virtualScript(ts, script, rewrittenFile.bindings,
|
|
31
|
+
return virtualScript(ts, script, rewrittenFile.bindings, (splice) => renderSplice(ts, sourceFile, rewrittenFile, splice, mayAwait(ts, script.sourceNode)));
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
// A splice's host code, each nested script rendered as a script wherever it's
|
|
34
|
+
// written. Where the host may await, an `await x` of its own is
|
|
35
|
+
// `cs.awaited(x)`: what the host's `await` gives, legal wherever in the script
|
|
36
|
+
// the splice stands. Elsewhere it's left as written, for the typechecker to
|
|
37
|
+
// refuse. An `await` in a function the splice holds is that function's own.
|
|
38
|
+
function renderSplice(ts, sourceFile, rewrittenFile, splice, awaitable) {
|
|
39
|
+
const nested = new Map(splice.scripts.map((script) => [script.sourceNode, script]));
|
|
40
|
+
const render = (node, own) => {
|
|
41
|
+
const script = nested.get(node);
|
|
42
|
+
if (script !== undefined) {
|
|
43
|
+
return renderScript(ts, sourceFile, rewrittenFile, script);
|
|
44
|
+
}
|
|
45
|
+
if (own && awaitable && ts.isAwaitExpression(node)) {
|
|
46
|
+
return ["cs.awaited(", ...render(node.expression, own), ")"];
|
|
47
|
+
}
|
|
48
|
+
// As written, each child rendered in place.
|
|
49
|
+
const inner = own && !ts.isFunctionLike(node);
|
|
50
|
+
const segments = [];
|
|
51
|
+
let at = node.getStart(sourceFile);
|
|
52
|
+
ts.forEachChild(node, (child) => {
|
|
53
|
+
const start = child.getStart(sourceFile);
|
|
54
|
+
segments.push(...renderVerbatim(sourceFile.text, at, start - at));
|
|
55
|
+
segments.push(...render(child, inner));
|
|
56
|
+
at = child.getEnd();
|
|
57
|
+
});
|
|
58
|
+
segments.push(...renderVerbatim(sourceFile.text, at, node.getEnd() - at));
|
|
59
|
+
return segments;
|
|
60
|
+
};
|
|
61
|
+
return render(splice.expression, true);
|
|
45
62
|
}
|
|
46
63
|
function renderVerbatim(sourceText, start, length) {
|
|
47
64
|
if (length <= 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printVirtualCode.js","sourceRoot":"","sources":["../src/printVirtualCode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAgB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,MAAM,UAAU,gBAAgB,CAC9B,EAA+B,EAC/B,UAAsB,EACtB,aAA4B;IAE5B,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC;IAClC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IACD,QAAQ,CAAC,IAAI,CACX,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAC5E,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC;QACvC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,EAA+B,EAC/B,UAAyB,EACzB,aAA4B,EAC5B,MAAoB;IAEpB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,qEAAqE;IACrE,8CAA8C;IAC9C,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;QAC5B,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,aAAa,
|
|
1
|
+
{"version":3,"file":"printVirtualCode.js","sourceRoot":"","sources":["../src/printVirtualCode.ts"],"names":[],"mappings":"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"}
|
package/dist/rewriteScript.d.ts
CHANGED
|
@@ -21,8 +21,8 @@ export declare function moduleDeclaration(ts: typeof import("typescript"), name:
|
|
|
21
21
|
export declare function createCall(ts: typeof import("typescript"), moduleName: string, { args }: RuntimeScript): ts.Expression;
|
|
22
22
|
export interface RewrittenScript {
|
|
23
23
|
runtime: RuntimeScript | null;
|
|
24
|
-
awaits: boolean;
|
|
25
24
|
leftAsWritten: boolean;
|
|
26
25
|
diagnostics: Diagnostic[];
|
|
27
26
|
}
|
|
28
27
|
export declare function rewriteScript(ts: typeof import("typescript"), clientScript: ClientScript, fileHash: string, bindings: BindingResolution, params?: readonly ResolvedParam[]): RewrittenScript;
|
|
28
|
+
export declare function mayAwait(ts: typeof import("typescript"), node: ts.Node): boolean;
|
package/dist/rewriteScript.js
CHANGED
|
@@ -33,7 +33,6 @@ export function rewriteScript(ts, clientScript, fileHash, bindings, params = [])
|
|
|
33
33
|
// checked as nothing, so nothing else is reported for it.
|
|
34
34
|
const leftAsWritten = (diagnostics) => ({
|
|
35
35
|
runtime: null,
|
|
36
|
-
awaits: false,
|
|
37
36
|
leftAsWritten: true,
|
|
38
37
|
diagnostics,
|
|
39
38
|
});
|
|
@@ -111,43 +110,35 @@ export function rewriteScript(ts, clientScript, fileHash, bindings, params = [])
|
|
|
111
110
|
const argsLiteral = ts.factory.createArrayLiteralExpression(params.flatMap((param) => param.kind === "capture"
|
|
112
111
|
? []
|
|
113
112
|
: [clientScript.splices[param.key].expression]), false);
|
|
114
|
-
// A splice that awaits is the host's `await`, where the template is: where
|
|
115
|
-
// the host may await, the script's function is async, and awaited there;
|
|
116
|
-
// elsewhere it isn't, so the splice's own `await` is refused where written.
|
|
117
|
-
const awaits = mayAwait(ts, sourceNode) &&
|
|
118
|
-
Object.values(clientScript.splices).some((splice) => splice.kind === "braced" && hasAwait(ts, splice.expression));
|
|
119
113
|
const emitted = emitScript(ts, clientScript, params.map(paramName), scriptEdits(clientScript, bindings, params));
|
|
120
114
|
return {
|
|
121
115
|
runtime: { id, kind, params: paramsLiteral, args: argsLiteral, emitted },
|
|
122
|
-
awaits,
|
|
123
116
|
leftAsWritten: false,
|
|
124
117
|
diagnostics: [],
|
|
125
118
|
};
|
|
126
119
|
}
|
|
127
|
-
// Whether host code at `node` may `await`: in an async function, or at
|
|
128
|
-
// module's top level
|
|
129
|
-
|
|
130
|
-
|
|
120
|
+
// Whether host code at `node` may `await`: in an async function's body, or at
|
|
121
|
+
// a module's top level, but not in a parameter's default, a class field's
|
|
122
|
+
// initializer or a static block, where JavaScript refuses it.
|
|
123
|
+
export function mayAwait(ts, node) {
|
|
124
|
+
for (let child = node, parent = node.parent; parent;) {
|
|
125
|
+
if (ts.isParameter(child) || ts.isClassStaticBlockDeclaration(child)) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
if (ts.isPropertyDeclaration(parent) && parent.initializer === child) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
131
|
if (ts.isFunctionLike(parent)) {
|
|
132
132
|
return (ts
|
|
133
133
|
.getModifiers(parent)
|
|
134
134
|
?.some((modifier) => modifier.kind === ts.SyntaxKind.AsyncKeyword) ??
|
|
135
135
|
false);
|
|
136
136
|
}
|
|
137
|
+
child = parent;
|
|
138
|
+
parent = parent.parent;
|
|
137
139
|
}
|
|
138
140
|
return true;
|
|
139
141
|
}
|
|
140
|
-
// An `await` in host code, but not one inside a function it holds, which is
|
|
141
|
-
// that function's own, nor in a nested script, which is checked as its own.
|
|
142
|
-
function hasAwait(ts, node) {
|
|
143
|
-
if (ts.isAwaitExpression(node)) {
|
|
144
|
-
return true;
|
|
145
|
-
}
|
|
146
|
-
if (ts.isFunctionLike(node) || ts.isTaggedTemplateExpression(node)) {
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
return ts.forEachChild(node, (child) => hasAwait(ts, child)) ?? false;
|
|
150
|
-
}
|
|
151
142
|
// Each `${…}` that isn't a splice: written in text (JSX text, a string, a
|
|
152
143
|
// comment) rather than code, where nothing reads its placeholder.
|
|
153
144
|
function unsplicedSpans(ts, { sourceFile, sourceNode, splices }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewriteScript.js","sourceRoot":"","sources":["../src/rewriteScript.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,UAAU,EACV,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAcvC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAA+B,EAC/B,IAAY,EACZ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAiB,EACnC,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAkB;IAE3C,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC,uBAAuB,CAC9B,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;QACE,CAAC,CAAC,yBAAyB,CACzB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;YACE,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,CAAC,wBAAwB,CACxB,cAAc,EACd,CAAC,CAAC,4BAA4B,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CACzD;YACD,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC5C,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;SACjD,EACD,IAAI,CACL,CACF;KACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CACxB,EAA+B,EAC/B,UAAkB,EAClB,EAAE,IAAI,EAAiB;IAEvB,OAAO,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACvC,IAAI;KACL,CAAC,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"rewriteScript.js","sourceRoot":"","sources":["../src/rewriteScript.ts"],"names":[],"mappings":"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"}
|
package/dist/virtualScript.d.ts
CHANGED
|
@@ -19,4 +19,4 @@ import type { Segment } from "./segmentsToString.js";
|
|
|
19
19
|
* piece maps back to the text it came from; what the wrapper adds maps to no
|
|
20
20
|
* editor feature.
|
|
21
21
|
*/
|
|
22
|
-
export declare function virtualScript(ts: typeof import("typescript"), script: ClientScript, bindings: BindingResolution,
|
|
22
|
+
export declare function virtualScript(ts: typeof import("typescript"), script: ClientScript, bindings: BindingResolution, renderSplice: (splice: Splice) => Segment[]): Segment[];
|
package/dist/virtualScript.js
CHANGED
|
@@ -29,7 +29,7 @@ const TAG_NAME = {
|
|
|
29
29
|
* piece maps back to the text it came from; what the wrapper adds maps to no
|
|
30
30
|
* editor feature.
|
|
31
31
|
*/
|
|
32
|
-
export function virtualScript(ts, script, bindings,
|
|
32
|
+
export function virtualScript(ts, script, bindings, renderSplice) {
|
|
33
33
|
const file = script.fileWithPlaceholders;
|
|
34
34
|
const text = script.textWithPlaceholders;
|
|
35
35
|
const out = [];
|
|
@@ -148,14 +148,7 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
148
148
|
// itself is read through `(Card)`, mapped to it, so definition, rename and
|
|
149
149
|
// references reach the host binding. Where the tag closes, `void (Card)`
|
|
150
150
|
// beside it does the same for the closing tag's name.
|
|
151
|
-
//
|
|
152
|
-
// In a script that awaits, the function is async and awaited, so a splice's
|
|
153
|
-
// `await` among the tag's children is the host's, as it is anywhere else in
|
|
154
|
-
// the script: `(await (async ($Card) => <$Card …>…</$Card>)(…))`. Not inside
|
|
155
|
-
// a function the script writes, which isn't async, so an `await` there
|
|
156
|
-
// would be an error of its own.
|
|
157
151
|
const hostTag = (node) => {
|
|
158
|
-
const awaited = awaits && !inFunction(ts, node, file);
|
|
159
152
|
const opening = ts.isJsxElement(node) ? node.openingElement : node;
|
|
160
153
|
const tagName = opening.tagName;
|
|
161
154
|
// What the tag starts with, `$Card`, or `$Animated` in `<$Animated.View>`:
|
|
@@ -181,7 +174,7 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
181
174
|
mapped(name, closing, TAG_NAME);
|
|
182
175
|
added(", ");
|
|
183
176
|
}
|
|
184
|
-
added(
|
|
177
|
+
added(`((${root.text}) => <`);
|
|
185
178
|
mapped(root.text, root, REPORTED);
|
|
186
179
|
verbatim(root.getEnd(), tagName.getEnd());
|
|
187
180
|
// Its attributes and the opening's end, as written. What stands between
|
|
@@ -220,9 +213,6 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
220
213
|
added(")(cs.splice(", tag.start);
|
|
221
214
|
mapped(name, tagName, TAG_NAME);
|
|
222
215
|
added("))", tag.end);
|
|
223
|
-
if (awaited) {
|
|
224
|
-
added(")");
|
|
225
|
-
}
|
|
226
216
|
if (ts.isJsxElement(node)) {
|
|
227
217
|
added(")");
|
|
228
218
|
}
|
|
@@ -237,13 +227,7 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
237
227
|
const tag = script.sourceNode.getStart(script.sourceFile);
|
|
238
228
|
const opened = script.sourceNode.template.getStart(script.sourceFile) + 1;
|
|
239
229
|
const closed = script.sourceNode.getEnd() - 1;
|
|
240
|
-
out.push([
|
|
241
|
-
awaits ? "cs.lift(await (async () => " : "cs.lift((() => ",
|
|
242
|
-
undefined,
|
|
243
|
-
tag,
|
|
244
|
-
opened - tag,
|
|
245
|
-
WRAPPER,
|
|
246
|
-
]);
|
|
230
|
+
out.push(["cs.lift((() => ", undefined, tag, opened - tag, WRAPPER]);
|
|
247
231
|
emit(file, 0);
|
|
248
232
|
out.push([")())", undefined, closed, 1, WRAPPER]);
|
|
249
233
|
return out;
|
|
@@ -313,14 +297,4 @@ function inTypePosition(ts, node) {
|
|
|
313
297
|
}
|
|
314
298
|
return false;
|
|
315
299
|
}
|
|
316
|
-
// Whether `node` is inside a function the script writes, rather than directly
|
|
317
|
-
// in the script's own body.
|
|
318
|
-
function inFunction(ts, node, file) {
|
|
319
|
-
for (let parent = node.parent; parent !== file; parent = parent.parent) {
|
|
320
|
-
if (ts.isFunctionLike(parent)) {
|
|
321
|
-
return true;
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return false;
|
|
325
|
-
}
|
|
326
300
|
//# sourceMappingURL=virtualScript.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualScript.js","sourceRoot":"","sources":["../src/virtualScript.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"virtualScript.js","sourceRoot":"","sources":["../src/virtualScript.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,0EAA0E;AAC1E,MAAM,OAAO,GAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACxE,wEAAwE;AACxE,0EAA0E;AAC1E,gCAAgC;AAChC,MAAM,QAAQ,GAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACzE,+EAA+E;AAC/E,+BAA+B;AAC/B,MAAM,QAAQ,GAAoB;IAChC,QAAQ,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;CAC3C,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAC3B,EAA+B,EAC/B,MAAoB,EACpB,QAA2B,EAC3B,YAA2C;IAE3C,MAAM,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC;IACzC,MAAM,GAAG,GAAc,EAAE,CAAC;IAE1B,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAU,EAAQ,EAAE;QAClD,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpB,SAAS;gBACT,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC3B,EAAE,GAAG,IAAI;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CACb,OAAe,EACf,IAAa,EACb,IAAsB,EAChB,EAAE;QACR,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,CACN,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;YAC1C,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,IAAI,CAAC,CACnD,CAAC;IACJ,CAAC,CAAC;IACF,2EAA2E;IAC3E,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAW,EAAE,IAAI,GAAG,OAAO,EAAQ,EAAE;QACnE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAQ,EAAE;QAC/D,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IACE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC3D,SAAS,CAAC,IAAI,CAAC,EACf,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC;YACZ,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;QACD,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,CAAC,IAAmB,EAAsB,EAAE,CAC3D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7E,MAAM,UAAU,GAAG,CAAC,IAAmB,EAAQ,EAAE;QAC/C,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,sEAAsE;YACtE,yEAAyE;YACzE,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gBACpE,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,mEAAmE;gBACnE,4DAA4D;gBAC5D,8DAA8D;gBAC9D,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC5C,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,SAAS,GACb,CAAC,EAAE,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;YAClE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;gBAC1B,MAAM,CAAC,IAAI,KAAK,IAAI;gBACpB,MAAM,CAAC,YAAY,KAAK,SAAS;gBACjC,MAAM,CAAC,cAAc,KAAK,SAAS;gBACnC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;YACD,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,yEAAyE;IACzE,kBAAkB;IAClB,MAAM,SAAS,GAAG,CAChB,IAA8C,EACrC,EAAE;QACX,MAAM,IAAI,GAAG,OAAO,CAClB,EAAE,EACF,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CACnE,CAAC;QACF,OAAO,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IAC5D,CAAC,CAAC;IAEF,yEAAyE;IACzE,iFAAiF;IACjF,0EAA0E;IAC1E,uEAAuE;IACvE,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,IAA8C,EAAQ,EAAE;QACvE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,2EAA2E;QAC3E,uDAAuD;QACvD,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,OAAO,CAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,2EAA2E;QAC3E,MAAM,IAAI,GAAG,IAAK,QAAQ,CAAC,IAAI,CAAE,CAAC,UAA4B,CAAC,IAAI,GAAG,CAAC;QACvE,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,GACV,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;YACzB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;YACvB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;YACnC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAE;YAC3C,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,CAAC;QACd,CAAC;QACD,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,wEAAwE;QACxE,2EAA2E;QAC3E,mCAAmC;QACnC,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YACzE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,CAAC;YAChB,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACZ,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC;YACD,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAQ,EAAE,QAAQ,CAAC,CAAC;YACtC,QAAQ,CAAC,OAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QACD,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;IACH,CAAC,CAAC;IAEF,0EAA0E;IAC1E,8EAA8E;IAC9E,sEAAsE;IACtE,cAAc;IACd,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0EAA0E;AAC1E,kEAAkE;AAClE,SAAS,WAAW,CAClB,EAA+B,EAC/B,IAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IACE,CAAC,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC;QACpC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAC/B,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC9B,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAChC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC;QACnC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC;QACnC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC9B,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC5B,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;QACvB,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;QACzB,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAChC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;QACtB,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAChC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAC/B,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC7B,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC5B,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC;QACjC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC;QACjC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC5B,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,KAAK,IAAI,EACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,CAAC,wDAAwD;IACxE,CAAC;IACD,IACE,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC5B,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC3B,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,KAAK,IAAI,EACrB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC7B,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC;QAClC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,OAAO,KAAK,IAAI,EACvB,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,uDAAuD;IACvE,CAAC;IACD,OAAO,CAAC,CACN,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC;QAC1B,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;QACzB,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,sDAAsD;AACtD,SAAS,cAAc,CACrB,EAA+B,EAC/B,IAAmB;IAEnB,KAAK,IAAI,EAAE,GAAY,IAAI,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IACE,EAAE,CAAC,6BAA6B,CAAC,MAAM,CAAC;YACxC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;YAClC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EACpC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backtickjs/compiler",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Internal: the compiler for Backtick client scripts, used by the build plugins, backtick-tsc and the editor tooling",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"backtick",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"prettier": "^3.6.2",
|
|
50
50
|
"typescript": "^6.0.3",
|
|
51
|
-
"@backtickjs/core": "0.1.
|
|
51
|
+
"@backtickjs/core": "0.1.5"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "tsc -b",
|
package/src/printVirtualCode.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type ts from "typescript";
|
|
|
2
2
|
import { buildMappings, type SourceMapping } from "./buildMappings.js";
|
|
3
3
|
import type { ClientScript, ParsedFile, Splice } from "./parseFile.js";
|
|
4
4
|
import type { RewrittenFile } from "./rewriteFile.js";
|
|
5
|
+
import { mayAwait } from "./rewriteScript.js";
|
|
5
6
|
import { type Segment, segmentsToString } from "./segmentsToString.js";
|
|
6
7
|
import { virtualScript } from "./virtualScript.js";
|
|
7
8
|
|
|
@@ -50,35 +51,54 @@ function renderScript(
|
|
|
50
51
|
if (rewritten.leftAsWritten) {
|
|
51
52
|
return ["cs.lift(undefined as never)"];
|
|
52
53
|
}
|
|
53
|
-
return virtualScript(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
return virtualScript(ts, script, rewrittenFile.bindings, (splice) =>
|
|
55
|
+
renderSplice(
|
|
56
|
+
ts,
|
|
57
|
+
sourceFile,
|
|
58
|
+
rewrittenFile,
|
|
59
|
+
splice,
|
|
60
|
+
mayAwait(ts, script.sourceNode),
|
|
61
|
+
),
|
|
59
62
|
);
|
|
60
63
|
}
|
|
61
64
|
|
|
65
|
+
// A splice's host code, each nested script rendered as a script wherever it's
|
|
66
|
+
// written. Where the host may await, an `await x` of its own is
|
|
67
|
+
// `cs.awaited(x)`: what the host's `await` gives, legal wherever in the script
|
|
68
|
+
// the splice stands. Elsewhere it's left as written, for the typechecker to
|
|
69
|
+
// refuse. An `await` in a function the splice holds is that function's own.
|
|
62
70
|
function renderSplice(
|
|
63
71
|
ts: typeof import("typescript"),
|
|
64
72
|
sourceFile: ts.SourceFile,
|
|
65
73
|
rewrittenFile: RewrittenFile,
|
|
66
74
|
splice: Splice,
|
|
75
|
+
awaitable: boolean,
|
|
67
76
|
): Segment[] {
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
const nested = new Map<ts.Node, ClientScript>(
|
|
78
|
+
splice.scripts.map((script) => [script.sourceNode, script]),
|
|
79
|
+
);
|
|
80
|
+
const render = (node: ts.Node, own: boolean): Segment[] => {
|
|
81
|
+
const script = nested.get(node);
|
|
82
|
+
if (script !== undefined) {
|
|
83
|
+
return renderScript(ts, sourceFile, rewrittenFile, script);
|
|
84
|
+
}
|
|
85
|
+
if (own && awaitable && ts.isAwaitExpression(node)) {
|
|
86
|
+
return ["cs.awaited(", ...render(node.expression, own), ")"];
|
|
87
|
+
}
|
|
88
|
+
// As written, each child rendered in place.
|
|
89
|
+
const inner = own && !ts.isFunctionLike(node);
|
|
90
|
+
const segments: Segment[] = [];
|
|
91
|
+
let at = node.getStart(sourceFile);
|
|
92
|
+
ts.forEachChild(node, (child) => {
|
|
93
|
+
const start = child.getStart(sourceFile);
|
|
94
|
+
segments.push(...renderVerbatim(sourceFile.text, at, start - at));
|
|
95
|
+
segments.push(...render(child, inner));
|
|
96
|
+
at = child.getEnd();
|
|
97
|
+
});
|
|
98
|
+
segments.push(...renderVerbatim(sourceFile.text, at, node.getEnd() - at));
|
|
99
|
+
return segments;
|
|
100
|
+
};
|
|
101
|
+
return render(splice.expression, true);
|
|
82
102
|
}
|
|
83
103
|
|
|
84
104
|
function renderVerbatim(
|
package/src/rewriteScript.ts
CHANGED
|
@@ -83,8 +83,6 @@ export interface RewrittenScript {
|
|
|
83
83
|
// what the client runs (null where the script did not parse, which is left
|
|
84
84
|
// as written)
|
|
85
85
|
runtime: RuntimeScript | null;
|
|
86
|
-
// whether its splices `await`, so the wrapper it is checked in does too
|
|
87
|
-
awaits: boolean;
|
|
88
86
|
// left as written: checked as nothing, its errors already said
|
|
89
87
|
leftAsWritten: boolean;
|
|
90
88
|
diagnostics: Diagnostic[];
|
|
@@ -103,7 +101,6 @@ export function rewriteScript(
|
|
|
103
101
|
// checked as nothing, so nothing else is reported for it.
|
|
104
102
|
const leftAsWritten = (diagnostics: Diagnostic[]): RewrittenScript => ({
|
|
105
103
|
runtime: null,
|
|
106
|
-
awaits: false,
|
|
107
104
|
leftAsWritten: true,
|
|
108
105
|
diagnostics,
|
|
109
106
|
});
|
|
@@ -216,15 +213,6 @@ export function rewriteScript(
|
|
|
216
213
|
false,
|
|
217
214
|
);
|
|
218
215
|
|
|
219
|
-
// A splice that awaits is the host's `await`, where the template is: where
|
|
220
|
-
// the host may await, the script's function is async, and awaited there;
|
|
221
|
-
// elsewhere it isn't, so the splice's own `await` is refused where written.
|
|
222
|
-
const awaits =
|
|
223
|
-
mayAwait(ts, sourceNode) &&
|
|
224
|
-
Object.values(clientScript.splices).some(
|
|
225
|
-
(splice) => splice.kind === "braced" && hasAwait(ts, splice.expression),
|
|
226
|
-
);
|
|
227
|
-
|
|
228
216
|
const emitted = emitScript(
|
|
229
217
|
ts,
|
|
230
218
|
clientScript,
|
|
@@ -234,16 +222,25 @@ export function rewriteScript(
|
|
|
234
222
|
|
|
235
223
|
return {
|
|
236
224
|
runtime: { id, kind, params: paramsLiteral, args: argsLiteral, emitted },
|
|
237
|
-
awaits,
|
|
238
225
|
leftAsWritten: false,
|
|
239
226
|
diagnostics: [],
|
|
240
227
|
};
|
|
241
228
|
}
|
|
242
229
|
|
|
243
|
-
// Whether host code at `node` may `await`: in an async function, or at
|
|
244
|
-
// module's top level
|
|
245
|
-
|
|
246
|
-
|
|
230
|
+
// Whether host code at `node` may `await`: in an async function's body, or at
|
|
231
|
+
// a module's top level, but not in a parameter's default, a class field's
|
|
232
|
+
// initializer or a static block, where JavaScript refuses it.
|
|
233
|
+
export function mayAwait(
|
|
234
|
+
ts: typeof import("typescript"),
|
|
235
|
+
node: ts.Node,
|
|
236
|
+
): boolean {
|
|
237
|
+
for (let child = node, parent = node.parent; parent; ) {
|
|
238
|
+
if (ts.isParameter(child) || ts.isClassStaticBlockDeclaration(child)) {
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
if (ts.isPropertyDeclaration(parent) && parent.initializer === child) {
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
247
244
|
if (ts.isFunctionLike(parent)) {
|
|
248
245
|
return (
|
|
249
246
|
ts
|
|
@@ -252,22 +249,12 @@ function mayAwait(ts: typeof import("typescript"), node: ts.Node): boolean {
|
|
|
252
249
|
false
|
|
253
250
|
);
|
|
254
251
|
}
|
|
252
|
+
child = parent;
|
|
253
|
+
parent = parent.parent;
|
|
255
254
|
}
|
|
256
255
|
return true;
|
|
257
256
|
}
|
|
258
257
|
|
|
259
|
-
// An `await` in host code, but not one inside a function it holds, which is
|
|
260
|
-
// that function's own, nor in a nested script, which is checked as its own.
|
|
261
|
-
function hasAwait(ts: typeof import("typescript"), node: ts.Node): boolean {
|
|
262
|
-
if (ts.isAwaitExpression(node)) {
|
|
263
|
-
return true;
|
|
264
|
-
}
|
|
265
|
-
if (ts.isFunctionLike(node) || ts.isTaggedTemplateExpression(node)) {
|
|
266
|
-
return false;
|
|
267
|
-
}
|
|
268
|
-
return ts.forEachChild(node, (child) => hasAwait(ts, child)) ?? false;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
258
|
// Each `${…}` that isn't a splice: written in text (JSX text, a string, a
|
|
272
259
|
// comment) rather than code, where nothing reads its placeholder.
|
|
273
260
|
function unsplicedSpans(
|
package/src/virtualScript.ts
CHANGED
|
@@ -40,7 +40,6 @@ export function virtualScript(
|
|
|
40
40
|
ts: typeof import("typescript"),
|
|
41
41
|
script: ClientScript,
|
|
42
42
|
bindings: BindingResolution,
|
|
43
|
-
awaits: boolean,
|
|
44
43
|
renderSplice: (splice: Splice) => Segment[],
|
|
45
44
|
): Segment[] {
|
|
46
45
|
const file = script.fileWithPlaceholders;
|
|
@@ -181,14 +180,7 @@ export function virtualScript(
|
|
|
181
180
|
// itself is read through `(Card)`, mapped to it, so definition, rename and
|
|
182
181
|
// references reach the host binding. Where the tag closes, `void (Card)`
|
|
183
182
|
// beside it does the same for the closing tag's name.
|
|
184
|
-
//
|
|
185
|
-
// In a script that awaits, the function is async and awaited, so a splice's
|
|
186
|
-
// `await` among the tag's children is the host's, as it is anywhere else in
|
|
187
|
-
// the script: `(await (async ($Card) => <$Card …>…</$Card>)(…))`. Not inside
|
|
188
|
-
// a function the script writes, which isn't async, so an `await` there
|
|
189
|
-
// would be an error of its own.
|
|
190
183
|
const hostTag = (node: ts.JsxElement | ts.JsxSelfClosingElement): void => {
|
|
191
|
-
const awaited = awaits && !inFunction(ts, node, file);
|
|
192
184
|
const opening = ts.isJsxElement(node) ? node.openingElement : node;
|
|
193
185
|
const tagName = opening.tagName;
|
|
194
186
|
// What the tag starts with, `$Card`, or `$Animated` in `<$Animated.View>`:
|
|
@@ -215,9 +207,7 @@ export function virtualScript(
|
|
|
215
207
|
mapped(name, closing, TAG_NAME);
|
|
216
208
|
added(", ");
|
|
217
209
|
}
|
|
218
|
-
added(
|
|
219
|
-
awaited ? `(await (async (${root.text}) => <` : `((${root.text}) => <`,
|
|
220
|
-
);
|
|
210
|
+
added(`((${root.text}) => <`);
|
|
221
211
|
mapped(root.text, root, REPORTED);
|
|
222
212
|
verbatim(root.getEnd(), tagName.getEnd());
|
|
223
213
|
// Its attributes and the opening's end, as written. What stands between
|
|
@@ -254,9 +244,6 @@ export function virtualScript(
|
|
|
254
244
|
added(")(cs.splice(", tag.start);
|
|
255
245
|
mapped(name, tagName, TAG_NAME);
|
|
256
246
|
added("))", tag.end);
|
|
257
|
-
if (awaited) {
|
|
258
|
-
added(")");
|
|
259
|
-
}
|
|
260
247
|
if (ts.isJsxElement(node)) {
|
|
261
248
|
added(")");
|
|
262
249
|
}
|
|
@@ -272,13 +259,7 @@ export function virtualScript(
|
|
|
272
259
|
const tag = script.sourceNode.getStart(script.sourceFile);
|
|
273
260
|
const opened = script.sourceNode.template.getStart(script.sourceFile) + 1;
|
|
274
261
|
const closed = script.sourceNode.getEnd() - 1;
|
|
275
|
-
out.push([
|
|
276
|
-
awaits ? "cs.lift(await (async () => " : "cs.lift((() => ",
|
|
277
|
-
undefined,
|
|
278
|
-
tag,
|
|
279
|
-
opened - tag,
|
|
280
|
-
WRAPPER,
|
|
281
|
-
]);
|
|
262
|
+
out.push(["cs.lift((() => ", undefined, tag, opened - tag, WRAPPER]);
|
|
282
263
|
emit(file, 0);
|
|
283
264
|
out.push([")())", undefined, closed, 1, WRAPPER]);
|
|
284
265
|
return out;
|
|
@@ -366,18 +347,3 @@ function inTypePosition(
|
|
|
366
347
|
}
|
|
367
348
|
return false;
|
|
368
349
|
}
|
|
369
|
-
|
|
370
|
-
// Whether `node` is inside a function the script writes, rather than directly
|
|
371
|
-
// in the script's own body.
|
|
372
|
-
function inFunction(
|
|
373
|
-
ts: typeof import("typescript"),
|
|
374
|
-
node: ts.Node,
|
|
375
|
-
file: ts.SourceFile,
|
|
376
|
-
): boolean {
|
|
377
|
-
for (let parent = node.parent; parent !== file; parent = parent.parent) {
|
|
378
|
-
if (ts.isFunctionLike(parent)) {
|
|
379
|
-
return true;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
return false;
|
|
383
|
-
}
|