@backtickjs/compiler 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/parseFile.js +14 -12
- package/dist/parseFile.js.map +1 -1
- package/dist/printVirtualCode.js +31 -14
- package/dist/printVirtualCode.js.map +1 -1
- package/dist/rewriteScript.d.ts +3 -2
- package/dist/rewriteScript.js +28 -24
- package/dist/rewriteScript.js.map +1 -1
- package/dist/virtualScript.d.ts +1 -1
- package/dist/virtualScript.js +8 -13
- package/dist/virtualScript.js.map +1 -1
- package/package.json +2 -2
- package/src/parseFile.ts +16 -14
- package/src/printVirtualCode.ts +40 -20
- package/src/rewriteScript.ts +38 -31
- package/src/virtualScript.ts +9 -15
package/dist/parseFile.js
CHANGED
|
@@ -45,13 +45,14 @@ function getDirectScripts(ts, parent, sourceFile) {
|
|
|
45
45
|
});
|
|
46
46
|
return scripts;
|
|
47
47
|
}
|
|
48
|
-
// A splice per
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
// splice,
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
// only the script's
|
|
48
|
+
// A splice per reference in the placeholder text, in source order: a
|
|
49
|
+
// `$0splice<n>` placeholder resolves to its template span's braced splice, and
|
|
50
|
+
// any other `$x` identifier mints an unbraced splice of its own, as each
|
|
51
|
+
// `${x}` is its own splice, so the two spellings mean the same. Property,
|
|
52
|
+
// attribute, closing-tag and declaration names are not references (a
|
|
53
|
+
// `$`-prefixed declaration is rejected at rewrite time), and nested scripts
|
|
54
|
+
// are already placeholders in this text, so the walk scans only the script's
|
|
55
|
+
// own body.
|
|
55
56
|
function getDirectSplices(ts, taggedTemplate, sourceFile, fileWithPlaceholders) {
|
|
56
57
|
// No prototype: a script's `valueOf` or `constructor` is no splice.
|
|
57
58
|
const splices = Object.create(null);
|
|
@@ -87,9 +88,8 @@ function getDirectSplices(ts, taggedTemplate, sourceFile, fileWithPlaceholders)
|
|
|
87
88
|
visit(node.block); // the catch binding is not a reference
|
|
88
89
|
return;
|
|
89
90
|
}
|
|
90
|
-
if (ts.
|
|
91
|
-
|
|
92
|
-
return;
|
|
91
|
+
if (ts.isJsxClosingElement(node)) {
|
|
92
|
+
return; // it names the element its opening tag did
|
|
93
93
|
}
|
|
94
94
|
if (ts.isIdentifier(node) &&
|
|
95
95
|
node.text.startsWith("$") &&
|
|
@@ -115,10 +115,12 @@ function getDirectSplices(ts, taggedTemplate, sourceFile, fileWithPlaceholders)
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
else {
|
|
118
|
-
|
|
118
|
+
// Keyed by where it stands, as the spelling repeats.
|
|
119
|
+
const at = `${key}@${node.getStart(fileWithPlaceholders)}`;
|
|
120
|
+
splices[at] = {
|
|
119
121
|
kind: "unbraced",
|
|
120
122
|
expression: ts.factory.createIdentifier(key.slice(1)),
|
|
121
|
-
key,
|
|
123
|
+
key: at,
|
|
122
124
|
scripts: [],
|
|
123
125
|
refs: [node],
|
|
124
126
|
};
|
package/dist/parseFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseFile.js","sourceRoot":"","sources":["../src/parseFile.ts"],"names":[],"mappings":"AA0DA,MAAM,UAAU,eAAe,CAC7B,EAA+B,EAC/B,QAAgB,EAChB,UAAkB;IAElB,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,UAAU,EACV,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;IACF,OAAO,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAA+B,EAC/B,UAAyB;IAEzB,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,gBAAgB,CACvB,EAA+B,EAC/B,MAAqB,EACrB,UAAyB;IAEzB,MAAM,IAAI,GAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9D,MAAM,eAAe,GAAkC,EAAE,CAAC;IAE1D,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAQ,EAAE;QACvC,IACE,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC;YACtC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,EACzB,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;QACzC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,sBAAsB,CAC/D,EAAE,EACF,cAAc,EACd,UAAU,CACX,CAAC;QACF,MAAM,oBAAoB,GAAG,EAAE,CAAC,gBAAgB,CAC9C,UAAU,CAAC,QAAQ,EACnB,oBAAoB,EACpB,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;QACF,uEAAuE;QACvE,qEAAqE;QACrE,oEAAoE;QACpE,+DAA+D;QAC/D,MAAM,OAAO,GAAG,gBAAgB,CAC9B,EAAE,EACF,cAAc,EACd,UAAU,EACV,oBAAoB,CACrB,CAAC;QACF,MAAM,aAAa,GAAG,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC;YACrD,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YACpE,GAAG,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7C,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,UAAU;YACV,UAAU,EAAE,cAAc;YAC1B,oBAAoB;YACpB,oBAAoB;YACpB,aAAa;YACb,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC5D,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"parseFile.js","sourceRoot":"","sources":["../src/parseFile.ts"],"names":[],"mappings":"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"}
|
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
|
@@ -7,6 +7,7 @@ import type { BindingResolution, ResolvedParam } from "./resolveBindings.js";
|
|
|
7
7
|
/** What `cs.create` is handed for a script: which it is, and what it runs. */
|
|
8
8
|
export interface RuntimeScript {
|
|
9
9
|
id: string;
|
|
10
|
+
kind: "function" | "expression" | "block";
|
|
10
11
|
params: ts.Expression;
|
|
11
12
|
args: ts.Expression;
|
|
12
13
|
emitted: EmittedScript;
|
|
@@ -15,13 +16,13 @@ export interface RuntimeScript {
|
|
|
15
16
|
* A script's module, declared once at the top of its host file, every run of
|
|
16
17
|
* the script sharing it: `const $module0 = { id, code, … };`.
|
|
17
18
|
*/
|
|
18
|
-
export declare function moduleDeclaration(ts: typeof import("typescript"), name: string, { id, params }: RuntimeScript, { code, map, dependencies }: CompiledScript): ts.VariableStatement;
|
|
19
|
+
export declare function moduleDeclaration(ts: typeof import("typescript"), name: string, { id, kind, params }: RuntimeScript, { code, map, dependencies }: CompiledScript): ts.VariableStatement;
|
|
19
20
|
/** A script as the client gets it, `cs.create($module0, [...args])`. */
|
|
20
21
|
export declare function createCall(ts: typeof import("typescript"), moduleName: string, { args }: RuntimeScript): ts.Expression;
|
|
21
22
|
export interface RewrittenScript {
|
|
22
23
|
runtime: RuntimeScript | null;
|
|
23
|
-
awaits: boolean;
|
|
24
24
|
leftAsWritten: boolean;
|
|
25
25
|
diagnostics: Diagnostic[];
|
|
26
26
|
}
|
|
27
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
|
@@ -6,7 +6,7 @@ import { tagRoot } from "./tagRoot.js";
|
|
|
6
6
|
* A script's module, declared once at the top of its host file, every run of
|
|
7
7
|
* the script sharing it: `const $module0 = { id, code, … };`.
|
|
8
8
|
*/
|
|
9
|
-
export function moduleDeclaration(ts, name, { id, params }, { code, map, dependencies }) {
|
|
9
|
+
export function moduleDeclaration(ts, name, { id, kind, params }, { code, map, dependencies }) {
|
|
10
10
|
const f = ts.factory;
|
|
11
11
|
const string = (text) => f.createStringLiteral(text);
|
|
12
12
|
return f.createVariableStatement(undefined, f.createVariableDeclarationList([
|
|
@@ -16,6 +16,7 @@ export function moduleDeclaration(ts, name, { id, params }, { code, map, depende
|
|
|
16
16
|
f.createPropertyAssignment("map", string(map)),
|
|
17
17
|
f.createPropertyAssignment("dependencies", f.createArrayLiteralExpression(dependencies.map(string))),
|
|
18
18
|
f.createPropertyAssignment("params", params),
|
|
19
|
+
f.createPropertyAssignment("kind", string(kind)),
|
|
19
20
|
], true)),
|
|
20
21
|
], ts.NodeFlags.Const));
|
|
21
22
|
}
|
|
@@ -32,7 +33,6 @@ export function rewriteScript(ts, clientScript, fileHash, bindings, params = [])
|
|
|
32
33
|
// checked as nothing, so nothing else is reported for it.
|
|
33
34
|
const leftAsWritten = (diagnostics) => ({
|
|
34
35
|
runtime: null,
|
|
35
|
-
awaits: false,
|
|
36
36
|
leftAsWritten: true,
|
|
37
37
|
diagnostics,
|
|
38
38
|
});
|
|
@@ -67,6 +67,12 @@ export function rewriteScript(ts, clientScript, fileHash, bindings, params = [])
|
|
|
67
67
|
},
|
|
68
68
|
]);
|
|
69
69
|
}
|
|
70
|
+
const kind = ts.isBlock(statement)
|
|
71
|
+
? "block"
|
|
72
|
+
: ts.isArrowFunction(skipParentheses(ts, statement.expression)) ||
|
|
73
|
+
ts.isFunctionExpression(skipParentheses(ts, statement.expression))
|
|
74
|
+
? "function"
|
|
75
|
+
: "expression";
|
|
70
76
|
// A `${…}` written where the script has text rather than code is no splice.
|
|
71
77
|
const unspliced = unsplicedSpans(ts, clientScript);
|
|
72
78
|
if (unspliced.length > 0) {
|
|
@@ -104,43 +110,35 @@ export function rewriteScript(ts, clientScript, fileHash, bindings, params = [])
|
|
|
104
110
|
const argsLiteral = ts.factory.createArrayLiteralExpression(params.flatMap((param) => param.kind === "capture"
|
|
105
111
|
? []
|
|
106
112
|
: [clientScript.splices[param.key].expression]), false);
|
|
107
|
-
// A splice that awaits is the host's `await`, where the template is: where
|
|
108
|
-
// the host may await, the script's function is async, and awaited there;
|
|
109
|
-
// elsewhere it isn't, so the splice's own `await` is refused where written.
|
|
110
|
-
const awaits = mayAwait(ts, sourceNode) &&
|
|
111
|
-
Object.values(clientScript.splices).some((splice) => splice.kind === "braced" && hasAwait(ts, splice.expression));
|
|
112
113
|
const emitted = emitScript(ts, clientScript, params.map(paramName), scriptEdits(clientScript, bindings, params));
|
|
113
114
|
return {
|
|
114
|
-
runtime: { id, params: paramsLiteral, args: argsLiteral, emitted },
|
|
115
|
-
awaits,
|
|
115
|
+
runtime: { id, kind, params: paramsLiteral, args: argsLiteral, emitted },
|
|
116
116
|
leftAsWritten: false,
|
|
117
117
|
diagnostics: [],
|
|
118
118
|
};
|
|
119
119
|
}
|
|
120
|
-
// Whether host code at `node` may `await`: in an async function, or at
|
|
121
|
-
// module's top level
|
|
122
|
-
|
|
123
|
-
|
|
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
|
+
}
|
|
124
131
|
if (ts.isFunctionLike(parent)) {
|
|
125
132
|
return (ts
|
|
126
133
|
.getModifiers(parent)
|
|
127
134
|
?.some((modifier) => modifier.kind === ts.SyntaxKind.AsyncKeyword) ??
|
|
128
135
|
false);
|
|
129
136
|
}
|
|
137
|
+
child = parent;
|
|
138
|
+
parent = parent.parent;
|
|
130
139
|
}
|
|
131
140
|
return true;
|
|
132
141
|
}
|
|
133
|
-
// An `await` in host code, but not one inside a function it holds, which is
|
|
134
|
-
// that function's own, nor in a nested script, which is checked as its own.
|
|
135
|
-
function hasAwait(ts, node) {
|
|
136
|
-
if (ts.isAwaitExpression(node)) {
|
|
137
|
-
return true;
|
|
138
|
-
}
|
|
139
|
-
if (ts.isFunctionLike(node) || ts.isTaggedTemplateExpression(node)) {
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
return ts.forEachChild(node, (child) => hasAwait(ts, child)) ?? false;
|
|
143
|
-
}
|
|
144
142
|
// Each `${…}` that isn't a splice: written in text (JSX text, a string, a
|
|
145
143
|
// comment) rather than code, where nothing reads its placeholder.
|
|
146
144
|
function unsplicedSpans(ts, { sourceFile, sourceNode, splices }) {
|
|
@@ -265,4 +263,10 @@ function parseDiagnostics(file) {
|
|
|
265
263
|
return file
|
|
266
264
|
.parseDiagnostics;
|
|
267
265
|
}
|
|
266
|
+
function skipParentheses(ts, node) {
|
|
267
|
+
while (ts.isParenthesizedExpression(node)) {
|
|
268
|
+
node = node.expression;
|
|
269
|
+
}
|
|
270
|
+
return node;
|
|
271
|
+
}
|
|
268
272
|
//# sourceMappingURL=rewriteScript.js.map
|
|
@@ -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;
|
|
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 = [];
|
|
@@ -79,13 +79,15 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
79
79
|
}
|
|
80
80
|
verbatim(at, node.getEnd());
|
|
81
81
|
};
|
|
82
|
+
// The splice an identifier is, if it's one.
|
|
83
|
+
const spliceAt = (node) => Object.values(script.splices).find((splice) => splice.refs.includes(node));
|
|
82
84
|
const identifier = (node) => {
|
|
83
85
|
if (inTypePosition(ts, node)) {
|
|
84
86
|
verbatim(node.getStart(file), node.getEnd());
|
|
85
87
|
return;
|
|
86
88
|
}
|
|
87
|
-
const splice =
|
|
88
|
-
if (splice !== undefined
|
|
89
|
+
const splice = spliceAt(node);
|
|
90
|
+
if (splice !== undefined) {
|
|
89
91
|
// Parenthesized whole, so what it stands in reads it as one value: in
|
|
90
92
|
// `new $Animated.Value(0)`, `new` takes `$Animated.Value`, not the call.
|
|
91
93
|
const range = script.toSourceRange(node);
|
|
@@ -134,8 +136,7 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
134
136
|
// as a component.
|
|
135
137
|
const isHostTag = (node) => {
|
|
136
138
|
const root = tagRoot(ts, ts.isJsxElement(node) ? node.openingElement.tagName : node.tagName);
|
|
137
|
-
return
|
|
138
|
-
script.splices[root.text]?.refs.includes(root) === true);
|
|
139
|
+
return root !== undefined && spliceAt(root) !== undefined;
|
|
139
140
|
};
|
|
140
141
|
// A host tag is checked as JSX, as a tag is anywhere: on a parameter the
|
|
141
142
|
// host value is handed to, `(($Card) => <$Card …>…</$Card>)(cs.splice((Card)))`.
|
|
@@ -155,7 +156,7 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
155
156
|
const root = tagRoot(ts, tagName);
|
|
156
157
|
const tag = script.toSourceRange(root);
|
|
157
158
|
// The binding's name, parenthesized over its `$` as an unbraced splice is.
|
|
158
|
-
const name = `(${
|
|
159
|
+
const name = `(${spliceAt(root).expression.text})`;
|
|
159
160
|
// Where JSX stands, an expression is written in braces: a child of an
|
|
160
161
|
// element or fragment, or an attribute's value.
|
|
161
162
|
const parent = node.parent;
|
|
@@ -226,13 +227,7 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
226
227
|
const tag = script.sourceNode.getStart(script.sourceFile);
|
|
227
228
|
const opened = script.sourceNode.template.getStart(script.sourceFile) + 1;
|
|
228
229
|
const closed = script.sourceNode.getEnd() - 1;
|
|
229
|
-
out.push([
|
|
230
|
-
awaits ? "cs.lift(await (async () => " : "cs.lift((() => ",
|
|
231
|
-
undefined,
|
|
232
|
-
tag,
|
|
233
|
-
opened - tag,
|
|
234
|
-
WRAPPER,
|
|
235
|
-
]);
|
|
230
|
+
out.push(["cs.lift((() => ", undefined, tag, opened - tag, WRAPPER]);
|
|
236
231
|
emit(file, 0);
|
|
237
232
|
out.push([")())", undefined, closed, 1, WRAPPER]);
|
|
238
233
|
return out;
|
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backtickjs/compiler",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
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.4"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "tsc -b",
|
package/src/parseFile.ts
CHANGED
|
@@ -47,8 +47,8 @@ export interface UnbracedSplice {
|
|
|
47
47
|
kind: "unbraced";
|
|
48
48
|
// the host binding the shorthand names (synthesized, e.g. `x` for `$x`)
|
|
49
49
|
expression: ts.Identifier;
|
|
50
|
-
// the param's key
|
|
51
|
-
// placeholder text,
|
|
50
|
+
// the param's key, which also keys the splice dictionary: the `$x` spelling
|
|
51
|
+
// the shorthand stands as in the placeholder text, and where it stands
|
|
52
52
|
key: string;
|
|
53
53
|
// a shorthand names a single binding, so it nests no scripts
|
|
54
54
|
scripts: [];
|
|
@@ -141,13 +141,14 @@ function getDirectScripts(
|
|
|
141
141
|
return scripts;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
// A splice per
|
|
145
|
-
//
|
|
146
|
-
//
|
|
147
|
-
// splice,
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
// only the script's
|
|
144
|
+
// A splice per reference in the placeholder text, in source order: a
|
|
145
|
+
// `$0splice<n>` placeholder resolves to its template span's braced splice, and
|
|
146
|
+
// any other `$x` identifier mints an unbraced splice of its own, as each
|
|
147
|
+
// `${x}` is its own splice, so the two spellings mean the same. Property,
|
|
148
|
+
// attribute, closing-tag and declaration names are not references (a
|
|
149
|
+
// `$`-prefixed declaration is rejected at rewrite time), and nested scripts
|
|
150
|
+
// are already placeholders in this text, so the walk scans only the script's
|
|
151
|
+
// own body.
|
|
151
152
|
function getDirectSplices(
|
|
152
153
|
ts: typeof import("typescript"),
|
|
153
154
|
taggedTemplate: ts.TaggedTemplateExpression,
|
|
@@ -192,9 +193,8 @@ function getDirectSplices(
|
|
|
192
193
|
visit(node.block); // the catch binding is not a reference
|
|
193
194
|
return;
|
|
194
195
|
}
|
|
195
|
-
if (ts.
|
|
196
|
-
|
|
197
|
-
return;
|
|
196
|
+
if (ts.isJsxClosingElement(node)) {
|
|
197
|
+
return; // it names the element its opening tag did
|
|
198
198
|
}
|
|
199
199
|
if (
|
|
200
200
|
ts.isIdentifier(node) &&
|
|
@@ -221,10 +221,12 @@ function getDirectSplices(
|
|
|
221
221
|
splice.scripts = getDirectScripts(ts, splice, sourceFile);
|
|
222
222
|
}
|
|
223
223
|
} else {
|
|
224
|
-
|
|
224
|
+
// Keyed by where it stands, as the spelling repeats.
|
|
225
|
+
const at = `${key}@${node.getStart(fileWithPlaceholders)}`;
|
|
226
|
+
splices[at] = {
|
|
225
227
|
kind: "unbraced",
|
|
226
228
|
expression: ts.factory.createIdentifier(key.slice(1)),
|
|
227
|
-
key,
|
|
229
|
+
key: at,
|
|
228
230
|
scripts: [],
|
|
229
231
|
refs: [node],
|
|
230
232
|
};
|
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
|
@@ -17,6 +17,8 @@ import { tagRoot } from "./tagRoot.js";
|
|
|
17
17
|
/** What `cs.create` is handed for a script: which it is, and what it runs. */
|
|
18
18
|
export interface RuntimeScript {
|
|
19
19
|
id: string;
|
|
20
|
+
// the module's `kind`
|
|
21
|
+
kind: "function" | "expression" | "block";
|
|
20
22
|
// the module's `params`, an array literal of literals
|
|
21
23
|
params: ts.Expression;
|
|
22
24
|
// the script's `args`, an array literal of host expressions
|
|
@@ -31,7 +33,7 @@ export interface RuntimeScript {
|
|
|
31
33
|
export function moduleDeclaration(
|
|
32
34
|
ts: typeof import("typescript"),
|
|
33
35
|
name: string,
|
|
34
|
-
{ id, params }: RuntimeScript,
|
|
36
|
+
{ id, kind, params }: RuntimeScript,
|
|
35
37
|
{ code, map, dependencies }: CompiledScript,
|
|
36
38
|
): ts.VariableStatement {
|
|
37
39
|
const f = ts.factory;
|
|
@@ -54,6 +56,7 @@ export function moduleDeclaration(
|
|
|
54
56
|
f.createArrayLiteralExpression(dependencies.map(string)),
|
|
55
57
|
),
|
|
56
58
|
f.createPropertyAssignment("params", params),
|
|
59
|
+
f.createPropertyAssignment("kind", string(kind)),
|
|
57
60
|
],
|
|
58
61
|
true,
|
|
59
62
|
),
|
|
@@ -80,8 +83,6 @@ export interface RewrittenScript {
|
|
|
80
83
|
// what the client runs (null where the script did not parse, which is left
|
|
81
84
|
// as written)
|
|
82
85
|
runtime: RuntimeScript | null;
|
|
83
|
-
// whether its splices `await`, so the wrapper it is checked in does too
|
|
84
|
-
awaits: boolean;
|
|
85
86
|
// left as written: checked as nothing, its errors already said
|
|
86
87
|
leftAsWritten: boolean;
|
|
87
88
|
diagnostics: Diagnostic[];
|
|
@@ -100,7 +101,6 @@ export function rewriteScript(
|
|
|
100
101
|
// checked as nothing, so nothing else is reported for it.
|
|
101
102
|
const leftAsWritten = (diagnostics: Diagnostic[]): RewrittenScript => ({
|
|
102
103
|
runtime: null,
|
|
103
|
-
awaits: false,
|
|
104
104
|
leftAsWritten: true,
|
|
105
105
|
diagnostics,
|
|
106
106
|
});
|
|
@@ -146,6 +146,13 @@ export function rewriteScript(
|
|
|
146
146
|
]);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
+
const kind = ts.isBlock(statement!)
|
|
150
|
+
? "block"
|
|
151
|
+
: ts.isArrowFunction(skipParentheses(ts, statement.expression)) ||
|
|
152
|
+
ts.isFunctionExpression(skipParentheses(ts, statement.expression))
|
|
153
|
+
? "function"
|
|
154
|
+
: "expression";
|
|
155
|
+
|
|
149
156
|
// A `${…}` written where the script has text rather than code is no splice.
|
|
150
157
|
const unspliced = unsplicedSpans(ts, clientScript);
|
|
151
158
|
if (unspliced.length > 0) {
|
|
@@ -206,15 +213,6 @@ export function rewriteScript(
|
|
|
206
213
|
false,
|
|
207
214
|
);
|
|
208
215
|
|
|
209
|
-
// A splice that awaits is the host's `await`, where the template is: where
|
|
210
|
-
// the host may await, the script's function is async, and awaited there;
|
|
211
|
-
// elsewhere it isn't, so the splice's own `await` is refused where written.
|
|
212
|
-
const awaits =
|
|
213
|
-
mayAwait(ts, sourceNode) &&
|
|
214
|
-
Object.values(clientScript.splices).some(
|
|
215
|
-
(splice) => splice.kind === "braced" && hasAwait(ts, splice.expression),
|
|
216
|
-
);
|
|
217
|
-
|
|
218
216
|
const emitted = emitScript(
|
|
219
217
|
ts,
|
|
220
218
|
clientScript,
|
|
@@ -223,17 +221,26 @@ export function rewriteScript(
|
|
|
223
221
|
);
|
|
224
222
|
|
|
225
223
|
return {
|
|
226
|
-
runtime: { id, params: paramsLiteral, args: argsLiteral, emitted },
|
|
227
|
-
awaits,
|
|
224
|
+
runtime: { id, kind, params: paramsLiteral, args: argsLiteral, emitted },
|
|
228
225
|
leftAsWritten: false,
|
|
229
226
|
diagnostics: [],
|
|
230
227
|
};
|
|
231
228
|
}
|
|
232
229
|
|
|
233
|
-
// Whether host code at `node` may `await`: in an async function, or at
|
|
234
|
-
// module's top level
|
|
235
|
-
|
|
236
|
-
|
|
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
|
+
}
|
|
237
244
|
if (ts.isFunctionLike(parent)) {
|
|
238
245
|
return (
|
|
239
246
|
ts
|
|
@@ -242,22 +249,12 @@ function mayAwait(ts: typeof import("typescript"), node: ts.Node): boolean {
|
|
|
242
249
|
false
|
|
243
250
|
);
|
|
244
251
|
}
|
|
252
|
+
child = parent;
|
|
253
|
+
parent = parent.parent;
|
|
245
254
|
}
|
|
246
255
|
return true;
|
|
247
256
|
}
|
|
248
257
|
|
|
249
|
-
// An `await` in host code, but not one inside a function it holds, which is
|
|
250
|
-
// that function's own, nor in a nested script, which is checked as its own.
|
|
251
|
-
function hasAwait(ts: typeof import("typescript"), node: ts.Node): boolean {
|
|
252
|
-
if (ts.isAwaitExpression(node)) {
|
|
253
|
-
return true;
|
|
254
|
-
}
|
|
255
|
-
if (ts.isFunctionLike(node) || ts.isTaggedTemplateExpression(node)) {
|
|
256
|
-
return false;
|
|
257
|
-
}
|
|
258
|
-
return ts.forEachChild(node, (child) => hasAwait(ts, child)) ?? false;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
258
|
// Each `${…}` that isn't a splice: written in text (JSX text, a string, a
|
|
262
259
|
// comment) rather than code, where nothing reads its placeholder.
|
|
263
260
|
function unsplicedSpans(
|
|
@@ -411,3 +408,13 @@ function parseDiagnostics(file: ts.SourceFile): readonly ts.Diagnostic[] {
|
|
|
411
408
|
return (file as unknown as { parseDiagnostics: ts.Diagnostic[] })
|
|
412
409
|
.parseDiagnostics;
|
|
413
410
|
}
|
|
411
|
+
|
|
412
|
+
function skipParentheses(
|
|
413
|
+
ts: typeof import("typescript"),
|
|
414
|
+
node: ts.Expression,
|
|
415
|
+
): ts.Expression {
|
|
416
|
+
while (ts.isParenthesizedExpression(node)) {
|
|
417
|
+
node = node.expression;
|
|
418
|
+
}
|
|
419
|
+
return node;
|
|
420
|
+
}
|
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;
|
|
@@ -103,13 +102,17 @@ export function virtualScript(
|
|
|
103
102
|
verbatim(at, node.getEnd());
|
|
104
103
|
};
|
|
105
104
|
|
|
105
|
+
// The splice an identifier is, if it's one.
|
|
106
|
+
const spliceAt = (node: ts.Identifier): Splice | undefined =>
|
|
107
|
+
Object.values(script.splices).find((splice) => splice.refs.includes(node));
|
|
108
|
+
|
|
106
109
|
const identifier = (node: ts.Identifier): void => {
|
|
107
110
|
if (inTypePosition(ts, node)) {
|
|
108
111
|
verbatim(node.getStart(file), node.getEnd());
|
|
109
112
|
return;
|
|
110
113
|
}
|
|
111
|
-
const splice =
|
|
112
|
-
if (splice !== undefined
|
|
114
|
+
const splice = spliceAt(node);
|
|
115
|
+
if (splice !== undefined) {
|
|
113
116
|
// Parenthesized whole, so what it stands in reads it as one value: in
|
|
114
117
|
// `new $Animated.Value(0)`, `new` takes `$Animated.Value`, not the call.
|
|
115
118
|
const range = script.toSourceRange(node);
|
|
@@ -164,10 +167,7 @@ export function virtualScript(
|
|
|
164
167
|
ts,
|
|
165
168
|
ts.isJsxElement(node) ? node.openingElement.tagName : node.tagName,
|
|
166
169
|
);
|
|
167
|
-
return (
|
|
168
|
-
root !== undefined &&
|
|
169
|
-
script.splices[root.text]?.refs.includes(root) === true
|
|
170
|
-
);
|
|
170
|
+
return root !== undefined && spliceAt(root) !== undefined;
|
|
171
171
|
};
|
|
172
172
|
|
|
173
173
|
// A host tag is checked as JSX, as a tag is anywhere: on a parameter the
|
|
@@ -188,7 +188,7 @@ export function virtualScript(
|
|
|
188
188
|
const root = tagRoot(ts, tagName)!;
|
|
189
189
|
const tag = script.toSourceRange(root);
|
|
190
190
|
// The binding's name, parenthesized over its `$` as an unbraced splice is.
|
|
191
|
-
const name = `(${(
|
|
191
|
+
const name = `(${(spliceAt(root)!.expression as ts.Identifier).text})`;
|
|
192
192
|
// Where JSX stands, an expression is written in braces: a child of an
|
|
193
193
|
// element or fragment, or an attribute's value.
|
|
194
194
|
const parent = node.parent;
|
|
@@ -259,13 +259,7 @@ export function virtualScript(
|
|
|
259
259
|
const tag = script.sourceNode.getStart(script.sourceFile);
|
|
260
260
|
const opened = script.sourceNode.template.getStart(script.sourceFile) + 1;
|
|
261
261
|
const closed = script.sourceNode.getEnd() - 1;
|
|
262
|
-
out.push([
|
|
263
|
-
awaits ? "cs.lift(await (async () => " : "cs.lift((() => ",
|
|
264
|
-
undefined,
|
|
265
|
-
tag,
|
|
266
|
-
opened - tag,
|
|
267
|
-
WRAPPER,
|
|
268
|
-
]);
|
|
262
|
+
out.push(["cs.lift((() => ", undefined, tag, opened - tag, WRAPPER]);
|
|
269
263
|
emit(file, 0);
|
|
270
264
|
out.push([")())", undefined, closed, 1, WRAPPER]);
|
|
271
265
|
return out;
|