@fluixi/compiler 1.0.0-alpha.92 → 1.0.0-alpha.94
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/analyze/intrinsics.cjs +31 -1
- package/dist/analyze/intrinsics.d.cts +14 -0
- package/dist/analyze/intrinsics.d.ts +14 -0
- package/dist/analyze/intrinsics.d.ts.map +1 -1
- package/dist/analyze/intrinsics.js +35 -0
- package/dist/analyze/intrinsics.mjs +31 -1
- package/dist/analyze/reactive-bindings.cjs +18 -0
- package/dist/analyze/reactive-bindings.mjs +18 -0
- package/dist/analyze/static-graph.cjs +22 -4
- package/dist/analyze/static-graph.d.ts.map +1 -1
- package/dist/analyze/static-graph.js +6 -4
- package/dist/analyze/static-graph.mjs +22 -4
- package/dist/{babel-GI375YZ2.mjs → babel-RJFQVFJW.mjs} +4 -4
- package/dist/{chunk-QZ4CJPYP.mjs → chunk-DP2QDWWH.mjs} +1 -1
- package/dist/{chunk-DWNWN5RH.mjs → chunk-E2RWTIYE.mjs} +21 -15
- package/dist/{chunk-XJ5H2MXY.mjs → chunk-HCCBEJEZ.mjs} +31 -1
- package/dist/{chunk-VOUI6XPV.mjs → chunk-HIZU7WI2.mjs} +1 -1
- package/dist/{chunk-VC6X44FS.mjs → chunk-ZR2QHTEX.mjs} +505 -68
- package/dist/codegen/backends/imperative.cjs +24 -6
- package/dist/codegen/backends/imperative.d.ts.map +1 -1
- package/dist/codegen/backends/imperative.js +20 -4
- package/dist/codegen/backends/imperative.mjs +24 -6
- package/dist/frontend/babel/build-ir-lit.cjs +470 -63
- package/dist/frontend/babel/build-ir-lit.mjs +470 -63
- package/dist/frontend/babel/build-ir.cjs +470 -63
- package/dist/frontend/babel/build-ir.mjs +470 -63
- package/dist/frontend/babel/index.cjs +471 -64
- package/dist/frontend/babel/index.mjs +471 -64
- package/dist/frontend/babel/lower-template.cjs +470 -63
- package/dist/frontend/babel/lower-template.mjs +470 -63
- package/dist/frontend/babel/plugin.cjs +470 -63
- package/dist/frontend/babel/plugin.mjs +470 -63
- package/dist/index.cjs +360 -58
- package/dist/index.mjs +372 -58
- package/dist/integrations.cjs +1347 -98
- package/dist/integrations.d.ts.map +1 -1
- package/dist/integrations.js +44 -2
- package/dist/integrations.mjs +205 -19
- package/dist/lower/compile-template.cjs +354 -57
- package/dist/lower/compile-template.d.cts +13 -0
- package/dist/lower/compile-template.d.ts +13 -0
- package/dist/lower/compile-template.d.ts.map +1 -1
- package/dist/lower/compile-template.js +3 -0
- package/dist/lower/compile-template.mjs +366 -57
- package/dist/lower/entities.cjs +288 -0
- package/dist/lower/entities.d.cts +1 -0
- package/dist/lower/entities.d.ts +2 -0
- package/dist/lower/entities.d.ts.map +1 -0
- package/dist/lower/entities.js +54 -0
- package/dist/lower/entities.mjs +267 -0
- package/dist/lower/jsx.cjs +567 -7
- package/dist/lower/jsx.d.cts +8 -0
- package/dist/lower/jsx.d.ts +8 -0
- package/dist/lower/jsx.d.ts.map +1 -1
- package/dist/lower/jsx.js +205 -7
- package/dist/lower/jsx.mjs +567 -7
- package/dist/lower/template.cjs +332 -56
- package/dist/lower/template.d.ts.map +1 -1
- package/dist/lower/template.js +57 -49
- package/dist/lower/template.mjs +332 -56
- package/dist/resolve/builtins.cjs +1 -1
- package/dist/resolve/builtins.mjs +1 -1
- package/dist/resolve/component-globals.cjs +20 -1
- package/dist/resolve/component-globals.js +2 -2
- package/dist/resolve/component-globals.mjs +20 -1
- package/dist/resolve/write-globals.cjs +20 -1
- package/dist/resolve/write-globals.mjs +20 -1
- package/dist/{server-fns-BBZRZUPP.mjs → server-fns-JLSTKWPS.mjs} +4 -4
- package/dist/{server-functions-VEGLIFCE.mjs → server-functions-BGY3RD4R.mjs} +3 -3
- package/dist/transform/index.cjs +1123 -77
- package/dist/transform/index.mjs +1141 -91
- package/dist/transform/intrinsics.cjs +18 -0
- package/dist/transform/intrinsics.mjs +18 -0
- package/dist/transform/props.mjs +19 -14
- package/dist/transform/server-fns.mjs +19 -14
- package/dist/transform/source-locations.cjs +64 -3
- package/dist/transform/source-locations.d.cts +7 -2
- package/dist/transform/source-locations.d.ts +7 -2
- package/dist/transform/source-locations.d.ts.map +1 -1
- package/dist/transform/source-locations.js +68 -3
- package/dist/transform/source-locations.mjs +64 -3
- package/dist/transform/styles.cjs +588 -0
- package/dist/transform/styles.d.cts +211 -0
- package/dist/transform/styles.d.ts +212 -0
- package/dist/transform/styles.d.ts.map +1 -0
- package/dist/transform/styles.js +714 -0
- package/dist/transform/styles.mjs +653 -0
- package/dist/transform/templates.cjs +1122 -76
- package/dist/transform/templates.d.cts +13 -0
- package/dist/transform/templates.d.ts +13 -0
- package/dist/transform/templates.d.ts.map +1 -1
- package/dist/transform/templates.js +51 -14
- package/dist/transform/templates.mjs +1140 -90
- package/dist/{transform-UWZ7ZGJ2.mjs → transform-GBP6Y4UI.mjs} +603 -19
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/vite-styles.cjs +180 -0
- package/dist/vite-styles.d.cts +59 -0
- package/dist/vite-styles.d.ts +60 -0
- package/dist/vite-styles.d.ts.map +1 -0
- package/dist/vite-styles.js +198 -0
- package/dist/vite-styles.mjs +159 -0
- package/package.json +10 -3
|
@@ -6,6 +6,7 @@ var INTRINSICS = {
|
|
|
6
6
|
$effect: { export: "effect", module: REACTIVE_MODULE, returns: "effect" },
|
|
7
7
|
$store: { export: "store", module: "@fluixi/reactive/store", returns: "store-handle" },
|
|
8
8
|
$resource: { export: "resource", module: REACTIVE_MODULE, returns: "resource-handle" },
|
|
9
|
+
$cachedResource: { export: "cachedResource", module: "@fluixi/reactive/cached-resource", returns: "resource-handle" },
|
|
9
10
|
// No short runtime form for these yet, so the intrinsic stands for the `create*`
|
|
10
11
|
// name. Still worth having: no import to write, and when a shorter form is
|
|
11
12
|
// designed, the change is this line rather than a compiler pass.
|
|
@@ -16,6 +17,19 @@ var INTRINSICS = {
|
|
|
16
17
|
// dependency analysis must not guess at.
|
|
17
18
|
$untrack: { export: "untrack", module: REACTIVE_MODULE, returns: "plain" },
|
|
18
19
|
$untrackStore: { export: "untrackStore", module: "@fluixi/reactive/store", returns: "plain" },
|
|
20
|
+
// Scopes, scheduling and lifecycle: no value to classify, but the same authoring promise,
|
|
21
|
+
// no import to write. `$cleanup` registers a callback on the current owner (`onCleanup`).
|
|
22
|
+
$batch: { export: "batch", module: REACTIVE_MODULE, returns: "plain" },
|
|
23
|
+
$cleanup: { export: "onCleanup", module: REACTIVE_MODULE, returns: "plain" },
|
|
24
|
+
$root: { export: "root", module: REACTIVE_MODULE, returns: "plain" },
|
|
25
|
+
$context: { export: "context", module: REACTIVE_MODULE, returns: "plain" },
|
|
26
|
+
$renderEffect: { export: "renderEffect", module: REACTIVE_MODULE, returns: "effect" },
|
|
27
|
+
$computed: { export: "computed", module: REACTIVE_MODULE, returns: "effect" },
|
|
28
|
+
// Storage for where the code runs, and a signal kept in it. `$persisted` is a signal
|
|
29
|
+
// handle as far as reads go: the same accessor with `set` on it.
|
|
30
|
+
$storage: { export: "useStorage", module: "@fluixi/core/storage", returns: "plain" },
|
|
31
|
+
$asyncStorage: { export: "useAsyncStorage", module: "@fluixi/core/storage", returns: "plain" },
|
|
32
|
+
$persisted: { export: "persisted", module: "@fluixi/core/storage", returns: "signal-handle" },
|
|
19
33
|
// An environment variable, public or server-only; the browser build refuses a secret.
|
|
20
34
|
$env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
|
|
21
35
|
};
|
|
@@ -28,8 +42,11 @@ var RUNTIME_PRIMITIVES = {
|
|
|
28
42
|
createMemo: "memo-accessor",
|
|
29
43
|
createEffect: "effect",
|
|
30
44
|
createRenderEffect: "effect",
|
|
45
|
+
renderEffect: "effect",
|
|
46
|
+
computed: "effect",
|
|
31
47
|
createStore: "reactive-object",
|
|
32
48
|
resource: "resource-handle",
|
|
49
|
+
cachedResource: "resource-handle",
|
|
33
50
|
createResource: "reactive-object",
|
|
34
51
|
createSelector: "memo-accessor",
|
|
35
52
|
createDeferred: "memo-accessor"
|
|
@@ -38,6 +55,7 @@ var PRIMITIVE_MODULES = [
|
|
|
38
55
|
"@fluixi/reactive",
|
|
39
56
|
"@fluixi/reactive/signal",
|
|
40
57
|
"@fluixi/reactive/store",
|
|
58
|
+
"@fluixi/reactive/cached-resource",
|
|
41
59
|
"@fluixi/core"
|
|
42
60
|
];
|
|
43
61
|
var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
|
|
@@ -141,6 +159,7 @@ function resolveReactiveBindings(program) {
|
|
|
141
159
|
// src/transform/source-locations.ts
|
|
142
160
|
var SOURCE_MARKER = "__fx_source";
|
|
143
161
|
var COMPONENT_MARKER = "__fx_component";
|
|
162
|
+
var CLASS_MARKER = "__fx_class";
|
|
144
163
|
var HOLE_MARKER = "__fx_hole";
|
|
145
164
|
var markHole = (accessor, line, column, name) => `(globalThis.${HOLE_MARKER} ?? ((f) => f))(${accessor},${line},${column}${name === void 0 ? "" : `,${JSON.stringify(name)}`})`;
|
|
146
165
|
var PROPS_MARKER = "__fx_props";
|
|
@@ -158,11 +177,12 @@ var RUNTIME_PRIMITIVES2 = /* @__PURE__ */ new Set([
|
|
|
158
177
|
"createStore",
|
|
159
178
|
"createResource"
|
|
160
179
|
]);
|
|
161
|
-
function
|
|
180
|
+
function mayHaveSourceMarks(code) {
|
|
162
181
|
for (const name of RUNTIME_PRIMITIVES2) {
|
|
163
182
|
if (code.includes(name)) return true;
|
|
164
183
|
}
|
|
165
|
-
|
|
184
|
+
if (code.includes("$signal") || code.includes("$memo") || code.includes("$effect") || code.includes("$store")) return true;
|
|
185
|
+
return /\bclass\b[^{;]*\bextends\b/.test(code);
|
|
166
186
|
}
|
|
167
187
|
var SINGLE_STATEMENT_PARENTS = /* @__PURE__ */ new Set([
|
|
168
188
|
"IfStatement",
|
|
@@ -181,6 +201,7 @@ function isLoneBranch(statement, parent) {
|
|
|
181
201
|
function isExport(node) {
|
|
182
202
|
return node.type === "ExportNamedDeclaration" || node.type === "ExportDefaultDeclaration";
|
|
183
203
|
}
|
|
204
|
+
var CLASS_FIELDS = /* @__PURE__ */ new Set(["PropertyDefinition", "ClassProperty", "ClassPrivateProperty", "AccessorProperty"]);
|
|
184
205
|
function isStatement(node) {
|
|
185
206
|
return node.type.endsWith("Statement") || node.type === "VariableDeclaration";
|
|
186
207
|
}
|
|
@@ -201,6 +222,14 @@ function walk2(node, visit, stack = []) {
|
|
|
201
222
|
}
|
|
202
223
|
function nameFor(stack) {
|
|
203
224
|
const declarator = stack[stack.length - 1];
|
|
225
|
+
if (declarator && CLASS_FIELDS.has(declarator.type)) {
|
|
226
|
+
const key = declarator.key;
|
|
227
|
+
if (key?.type === "Identifier" || key?.type === "PrivateIdentifier" || key?.type === "PrivateName") {
|
|
228
|
+
const name = key.name ?? key.id?.name;
|
|
229
|
+
return name;
|
|
230
|
+
}
|
|
231
|
+
return void 0;
|
|
232
|
+
}
|
|
204
233
|
if (declarator?.type !== "VariableDeclarator") return void 0;
|
|
205
234
|
const id = declarator.id;
|
|
206
235
|
if (id?.type === "Identifier") return id.name;
|
|
@@ -249,6 +278,17 @@ function collectSourceEdits(program, filename) {
|
|
|
249
278
|
});
|
|
250
279
|
}
|
|
251
280
|
}
|
|
281
|
+
if ((node.type === "ClassDeclaration" || node.type === "ClassExpression") && node.superClass && !node.declare) {
|
|
282
|
+
const at = node.loc?.start;
|
|
283
|
+
const body = node.body;
|
|
284
|
+
if (at && body) {
|
|
285
|
+
edits.push({
|
|
286
|
+
start: body.start + 1,
|
|
287
|
+
end: body.start + 1,
|
|
288
|
+
code: `static{globalThis.${CLASS_MARKER}?.(this,${JSON.stringify(filename)},${at.line},${at.column});}`
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
252
292
|
if (node.type !== "CallExpression") return;
|
|
253
293
|
const callee = node.callee;
|
|
254
294
|
if (callee?.type !== "Identifier") return;
|
|
@@ -258,6 +298,26 @@ function collectSourceEdits(program, filename) {
|
|
|
258
298
|
if (!intrinsic && !imported) return;
|
|
259
299
|
const position = node.loc?.start;
|
|
260
300
|
if (!position) return;
|
|
301
|
+
for (let i = stack.length - 1; i >= 0; i--) {
|
|
302
|
+
const up = stack[i];
|
|
303
|
+
if (isStatement(up)) break;
|
|
304
|
+
if (CLASS_FIELDS.has(up.type)) {
|
|
305
|
+
if (claimed.has(node.start)) return;
|
|
306
|
+
claimed.add(node.start);
|
|
307
|
+
const label2 = nameFor(stack);
|
|
308
|
+
const own = !up.static;
|
|
309
|
+
const args2 = [
|
|
310
|
+
JSON.stringify(filename),
|
|
311
|
+
String(position.line),
|
|
312
|
+
String(position.column),
|
|
313
|
+
label2 ? JSON.stringify(label2) : own ? "undefined" : void 0,
|
|
314
|
+
own ? "this" : void 0
|
|
315
|
+
].filter((a) => a !== void 0).join(",");
|
|
316
|
+
edits.push({ start: node.start, end: node.start, code: `(globalThis.${SOURCE_MARKER}?.(${args2}),` });
|
|
317
|
+
edits.push({ start: node.end, end: node.end, code: ")" });
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
261
321
|
let statement;
|
|
262
322
|
let parent;
|
|
263
323
|
let index = -1;
|
|
@@ -298,6 +358,7 @@ function collectSourceEdits(program, filename) {
|
|
|
298
358
|
return { edits, marked: edits.length };
|
|
299
359
|
}
|
|
300
360
|
export {
|
|
361
|
+
CLASS_MARKER,
|
|
301
362
|
COMPONENT_MARKER,
|
|
302
363
|
HOLE_MARKER,
|
|
303
364
|
PROPS_MARKER,
|
|
@@ -305,5 +366,5 @@ export {
|
|
|
305
366
|
collectSourceEdits,
|
|
306
367
|
markHole,
|
|
307
368
|
markProps,
|
|
308
|
-
|
|
369
|
+
mayHaveSourceMarks
|
|
309
370
|
};
|