@backtickjs/compiler 0.1.1 → 0.1.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.
- package/dist/parseFile.js +14 -12
- package/dist/parseFile.js.map +1 -1
- package/dist/rewriteScript.d.ts +2 -1
- package/dist/rewriteScript.js +15 -2
- package/dist/rewriteScript.js.map +1 -1
- package/dist/virtualScript.js +27 -6
- package/dist/virtualScript.js.map +1 -1
- package/package.json +2 -2
- package/src/parseFile.ts +16 -14
- package/src/rewriteScript.ts +22 -2
- package/src/virtualScript.ts +36 -8
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/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,7 +16,7 @@ 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 {
|
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
|
}
|
|
@@ -67,6 +68,12 @@ export function rewriteScript(ts, clientScript, fileHash, bindings, params = [])
|
|
|
67
68
|
},
|
|
68
69
|
]);
|
|
69
70
|
}
|
|
71
|
+
const kind = ts.isBlock(statement)
|
|
72
|
+
? "block"
|
|
73
|
+
: ts.isArrowFunction(skipParentheses(ts, statement.expression)) ||
|
|
74
|
+
ts.isFunctionExpression(skipParentheses(ts, statement.expression))
|
|
75
|
+
? "function"
|
|
76
|
+
: "expression";
|
|
70
77
|
// A `${…}` written where the script has text rather than code is no splice.
|
|
71
78
|
const unspliced = unsplicedSpans(ts, clientScript);
|
|
72
79
|
if (unspliced.length > 0) {
|
|
@@ -111,7 +118,7 @@ export function rewriteScript(ts, clientScript, fileHash, bindings, params = [])
|
|
|
111
118
|
Object.values(clientScript.splices).some((splice) => splice.kind === "braced" && hasAwait(ts, splice.expression));
|
|
112
119
|
const emitted = emitScript(ts, clientScript, params.map(paramName), scriptEdits(clientScript, bindings, params));
|
|
113
120
|
return {
|
|
114
|
-
runtime: { id, params: paramsLiteral, args: argsLiteral, emitted },
|
|
121
|
+
runtime: { id, kind, params: paramsLiteral, args: argsLiteral, emitted },
|
|
115
122
|
awaits,
|
|
116
123
|
leftAsWritten: false,
|
|
117
124
|
diagnostics: [],
|
|
@@ -265,4 +272,10 @@ function parseDiagnostics(file) {
|
|
|
265
272
|
return file
|
|
266
273
|
.parseDiagnostics;
|
|
267
274
|
}
|
|
275
|
+
function skipParentheses(ts, node) {
|
|
276
|
+
while (ts.isParenthesizedExpression(node)) {
|
|
277
|
+
node = node.expression;
|
|
278
|
+
}
|
|
279
|
+
return node;
|
|
280
|
+
}
|
|
268
281
|
//# 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.js
CHANGED
|
@@ -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)))`.
|
|
@@ -147,7 +148,14 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
147
148
|
// itself is read through `(Card)`, mapped to it, so definition, rename and
|
|
148
149
|
// references reach the host binding. Where the tag closes, `void (Card)`
|
|
149
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.
|
|
150
157
|
const hostTag = (node) => {
|
|
158
|
+
const awaited = awaits && !inFunction(ts, node, file);
|
|
151
159
|
const opening = ts.isJsxElement(node) ? node.openingElement : node;
|
|
152
160
|
const tagName = opening.tagName;
|
|
153
161
|
// What the tag starts with, `$Card`, or `$Animated` in `<$Animated.View>`:
|
|
@@ -155,7 +163,7 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
155
163
|
const root = tagRoot(ts, tagName);
|
|
156
164
|
const tag = script.toSourceRange(root);
|
|
157
165
|
// The binding's name, parenthesized over its `$` as an unbraced splice is.
|
|
158
|
-
const name = `(${
|
|
166
|
+
const name = `(${spliceAt(root).expression.text})`;
|
|
159
167
|
// Where JSX stands, an expression is written in braces: a child of an
|
|
160
168
|
// element or fragment, or an attribute's value.
|
|
161
169
|
const parent = node.parent;
|
|
@@ -173,7 +181,7 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
173
181
|
mapped(name, closing, TAG_NAME);
|
|
174
182
|
added(", ");
|
|
175
183
|
}
|
|
176
|
-
added(`((${root.text}) => <`);
|
|
184
|
+
added(awaited ? `(await (async (${root.text}) => <` : `((${root.text}) => <`);
|
|
177
185
|
mapped(root.text, root, REPORTED);
|
|
178
186
|
verbatim(root.getEnd(), tagName.getEnd());
|
|
179
187
|
// Its attributes and the opening's end, as written. What stands between
|
|
@@ -212,6 +220,9 @@ export function virtualScript(ts, script, bindings, awaits, renderSplice) {
|
|
|
212
220
|
added(")(cs.splice(", tag.start);
|
|
213
221
|
mapped(name, tagName, TAG_NAME);
|
|
214
222
|
added("))", tag.end);
|
|
223
|
+
if (awaited) {
|
|
224
|
+
added(")");
|
|
225
|
+
}
|
|
215
226
|
if (ts.isJsxElement(node)) {
|
|
216
227
|
added(")");
|
|
217
228
|
}
|
|
@@ -302,4 +313,14 @@ function inTypePosition(ts, node) {
|
|
|
302
313
|
}
|
|
303
314
|
return false;
|
|
304
315
|
}
|
|
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
|
+
}
|
|
305
326
|
//# 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":"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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.3",
|
|
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.3"
|
|
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/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
|
),
|
|
@@ -146,6 +149,13 @@ export function rewriteScript(
|
|
|
146
149
|
]);
|
|
147
150
|
}
|
|
148
151
|
|
|
152
|
+
const kind = ts.isBlock(statement!)
|
|
153
|
+
? "block"
|
|
154
|
+
: ts.isArrowFunction(skipParentheses(ts, statement.expression)) ||
|
|
155
|
+
ts.isFunctionExpression(skipParentheses(ts, statement.expression))
|
|
156
|
+
? "function"
|
|
157
|
+
: "expression";
|
|
158
|
+
|
|
149
159
|
// A `${…}` written where the script has text rather than code is no splice.
|
|
150
160
|
const unspliced = unsplicedSpans(ts, clientScript);
|
|
151
161
|
if (unspliced.length > 0) {
|
|
@@ -223,7 +233,7 @@ export function rewriteScript(
|
|
|
223
233
|
);
|
|
224
234
|
|
|
225
235
|
return {
|
|
226
|
-
runtime: { id, params: paramsLiteral, args: argsLiteral, emitted },
|
|
236
|
+
runtime: { id, kind, params: paramsLiteral, args: argsLiteral, emitted },
|
|
227
237
|
awaits,
|
|
228
238
|
leftAsWritten: false,
|
|
229
239
|
diagnostics: [],
|
|
@@ -411,3 +421,13 @@ function parseDiagnostics(file: ts.SourceFile): readonly ts.Diagnostic[] {
|
|
|
411
421
|
return (file as unknown as { parseDiagnostics: ts.Diagnostic[] })
|
|
412
422
|
.parseDiagnostics;
|
|
413
423
|
}
|
|
424
|
+
|
|
425
|
+
function skipParentheses(
|
|
426
|
+
ts: typeof import("typescript"),
|
|
427
|
+
node: ts.Expression,
|
|
428
|
+
): ts.Expression {
|
|
429
|
+
while (ts.isParenthesizedExpression(node)) {
|
|
430
|
+
node = node.expression;
|
|
431
|
+
}
|
|
432
|
+
return node;
|
|
433
|
+
}
|
package/src/virtualScript.ts
CHANGED
|
@@ -103,13 +103,17 @@ export function virtualScript(
|
|
|
103
103
|
verbatim(at, node.getEnd());
|
|
104
104
|
};
|
|
105
105
|
|
|
106
|
+
// The splice an identifier is, if it's one.
|
|
107
|
+
const spliceAt = (node: ts.Identifier): Splice | undefined =>
|
|
108
|
+
Object.values(script.splices).find((splice) => splice.refs.includes(node));
|
|
109
|
+
|
|
106
110
|
const identifier = (node: ts.Identifier): void => {
|
|
107
111
|
if (inTypePosition(ts, node)) {
|
|
108
112
|
verbatim(node.getStart(file), node.getEnd());
|
|
109
113
|
return;
|
|
110
114
|
}
|
|
111
|
-
const splice =
|
|
112
|
-
if (splice !== undefined
|
|
115
|
+
const splice = spliceAt(node);
|
|
116
|
+
if (splice !== undefined) {
|
|
113
117
|
// Parenthesized whole, so what it stands in reads it as one value: in
|
|
114
118
|
// `new $Animated.Value(0)`, `new` takes `$Animated.Value`, not the call.
|
|
115
119
|
const range = script.toSourceRange(node);
|
|
@@ -164,10 +168,7 @@ export function virtualScript(
|
|
|
164
168
|
ts,
|
|
165
169
|
ts.isJsxElement(node) ? node.openingElement.tagName : node.tagName,
|
|
166
170
|
);
|
|
167
|
-
return (
|
|
168
|
-
root !== undefined &&
|
|
169
|
-
script.splices[root.text]?.refs.includes(root) === true
|
|
170
|
-
);
|
|
171
|
+
return root !== undefined && spliceAt(root) !== undefined;
|
|
171
172
|
};
|
|
172
173
|
|
|
173
174
|
// A host tag is checked as JSX, as a tag is anywhere: on a parameter the
|
|
@@ -180,7 +181,14 @@ export function virtualScript(
|
|
|
180
181
|
// itself is read through `(Card)`, mapped to it, so definition, rename and
|
|
181
182
|
// references reach the host binding. Where the tag closes, `void (Card)`
|
|
182
183
|
// 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.
|
|
183
190
|
const hostTag = (node: ts.JsxElement | ts.JsxSelfClosingElement): void => {
|
|
191
|
+
const awaited = awaits && !inFunction(ts, node, file);
|
|
184
192
|
const opening = ts.isJsxElement(node) ? node.openingElement : node;
|
|
185
193
|
const tagName = opening.tagName;
|
|
186
194
|
// What the tag starts with, `$Card`, or `$Animated` in `<$Animated.View>`:
|
|
@@ -188,7 +196,7 @@ export function virtualScript(
|
|
|
188
196
|
const root = tagRoot(ts, tagName)!;
|
|
189
197
|
const tag = script.toSourceRange(root);
|
|
190
198
|
// The binding's name, parenthesized over its `$` as an unbraced splice is.
|
|
191
|
-
const name = `(${(
|
|
199
|
+
const name = `(${(spliceAt(root)!.expression as ts.Identifier).text})`;
|
|
192
200
|
// Where JSX stands, an expression is written in braces: a child of an
|
|
193
201
|
// element or fragment, or an attribute's value.
|
|
194
202
|
const parent = node.parent;
|
|
@@ -207,7 +215,9 @@ export function virtualScript(
|
|
|
207
215
|
mapped(name, closing, TAG_NAME);
|
|
208
216
|
added(", ");
|
|
209
217
|
}
|
|
210
|
-
added(
|
|
218
|
+
added(
|
|
219
|
+
awaited ? `(await (async (${root.text}) => <` : `((${root.text}) => <`,
|
|
220
|
+
);
|
|
211
221
|
mapped(root.text, root, REPORTED);
|
|
212
222
|
verbatim(root.getEnd(), tagName.getEnd());
|
|
213
223
|
// Its attributes and the opening's end, as written. What stands between
|
|
@@ -244,6 +254,9 @@ export function virtualScript(
|
|
|
244
254
|
added(")(cs.splice(", tag.start);
|
|
245
255
|
mapped(name, tagName, TAG_NAME);
|
|
246
256
|
added("))", tag.end);
|
|
257
|
+
if (awaited) {
|
|
258
|
+
added(")");
|
|
259
|
+
}
|
|
247
260
|
if (ts.isJsxElement(node)) {
|
|
248
261
|
added(")");
|
|
249
262
|
}
|
|
@@ -353,3 +366,18 @@ function inTypePosition(
|
|
|
353
366
|
}
|
|
354
367
|
return false;
|
|
355
368
|
}
|
|
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
|
+
}
|