@fluixi/compiler 1.0.0-alpha.83 → 1.0.0-alpha.84
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/expr-shape.cjs +62 -1
- package/dist/analyze/expr-shape.d.cts +14 -0
- package/dist/analyze/expr-shape.mjs +41 -1
- package/dist/analyze/intrinsics.cjs +80 -1
- package/dist/analyze/intrinsics.d.cts +66 -0
- package/dist/analyze/intrinsics.mjs +59 -1
- package/dist/analyze/paren.cjs +134 -0
- package/dist/analyze/paren.d.cts +23 -0
- package/dist/analyze/paren.d.ts +24 -0
- package/dist/analyze/paren.d.ts.map +1 -0
- package/dist/analyze/paren.js +168 -0
- package/dist/analyze/paren.mjs +113 -0
- package/dist/analyze/props-destructure.cjs +226 -1
- package/dist/analyze/props-destructure.d.cts +83 -0
- package/dist/analyze/props-destructure.mjs +205 -1
- package/dist/analyze/reactive-bindings.cjs +190 -1
- package/dist/analyze/reactive-bindings.d.cts +42 -0
- package/dist/analyze/reactive-bindings.mjs +167 -1
- package/dist/analyze/reactive-expr.cjs +38 -1
- package/dist/analyze/reactive-expr.d.cts +38 -0
- package/dist/analyze/reactive-expr.mjs +17 -1
- package/dist/analyze/static-graph.cjs +811 -1
- package/dist/analyze/static-graph.d.cts +102 -0
- package/dist/analyze/static-graph.mjs +793 -1
- package/dist/babel-NRW4EFTG.mjs +636 -0
- package/dist/chunk-3YKZ4GNH.mjs +11 -0
- package/dist/chunk-EZR7NZOY.mjs +1718 -0
- package/dist/chunk-FSSWUXUR.mjs +16 -0
- package/dist/chunk-MJV3UXIL.mjs +158 -0
- package/dist/chunk-R2VHAZAX.mjs +1078 -0
- package/dist/codegen/backend.cjs +18 -1
- package/dist/codegen/backend.d.cts +35 -0
- package/dist/codegen/backends/imperative.cjs +542 -1
- package/dist/codegen/backends/imperative.d.cts +11 -0
- package/dist/codegen/backends/imperative.d.ts.map +1 -1
- package/dist/codegen/backends/imperative.js +12 -8
- package/dist/codegen/backends/imperative.mjs +519 -1
- package/dist/codegen/contract.cjs +52 -1
- package/dist/codegen/contract.d.cts +24 -0
- package/dist/codegen/contract.mjs +31 -1
- package/dist/codegen/partial-template.cjs +176 -1
- package/dist/codegen/partial-template.d.cts +61 -0
- package/dist/codegen/partial-template.mjs +153 -1
- package/dist/codegen/serialize-static.cjs +125 -1
- package/dist/codegen/serialize-static.d.cts +38 -0
- package/dist/codegen/serialize-static.mjs +104 -1
- package/dist/frontend/babel/build-ir-lit.cjs +1509 -1
- package/dist/frontend/babel/build-ir-lit.d.cts +26 -0
- package/dist/frontend/babel/build-ir-lit.mjs +1478 -1
- package/dist/frontend/babel/build-ir.cjs +1524 -1
- package/dist/frontend/babel/build-ir.d.cts +35 -0
- package/dist/frontend/babel/build-ir.mjs +1495 -1
- package/dist/frontend/babel/index.cjs +2186 -1
- package/dist/frontend/babel/index.d.cts +33 -0
- package/dist/frontend/babel/index.mjs +2156 -1
- package/dist/frontend/babel/lower-template.cjs +1507 -1
- package/dist/frontend/babel/lower-template.d.cts +23 -0
- package/dist/frontend/babel/lower-template.mjs +1478 -1
- package/dist/frontend/babel/plugin.cjs +2132 -1
- package/dist/frontend/babel/plugin.d.cts +95 -0
- package/dist/frontend/babel/plugin.mjs +2103 -1
- package/dist/frontend/babel/server-functions.cjs +110 -1
- package/dist/frontend/babel/server-functions.d.cts +10 -0
- package/dist/frontend/babel/server-functions.mjs +89 -1
- package/dist/frontend/babel/types.cjs +18 -1
- package/dist/frontend/babel/types.d.cts +33 -0
- package/dist/frontend/types.cjs +18 -1
- package/dist/frontend/types.d.cts +25 -0
- package/dist/frontend/vocabulary.cjs +98 -0
- package/dist/frontend/vocabulary.d.cts +79 -0
- package/dist/frontend/vocabulary.d.ts +80 -0
- package/dist/frontend/vocabulary.d.ts.map +1 -0
- package/dist/frontend/vocabulary.js +124 -0
- package/dist/frontend/vocabulary.mjs +77 -0
- package/dist/index.cjs +1594 -13
- package/dist/index.d.cts +27 -0
- package/dist/index.mjs +1574 -13
- package/dist/integrations.cjs +4307 -25
- package/dist/integrations.d.cts +215 -0
- package/dist/integrations.mjs +531 -17
- package/dist/ir/nodes.cjs +18 -1
- package/dist/ir/nodes.d.cts +168 -0
- package/dist/lower/compile-template.cjs +1356 -1
- package/dist/lower/compile-template.d.cts +69 -0
- package/dist/lower/compile-template.mjs +1336 -1
- package/dist/lower/jsx.cjs +529 -1
- package/dist/lower/jsx.d.cts +25 -0
- package/dist/lower/jsx.d.ts.map +1 -1
- package/dist/lower/jsx.js +2 -1
- package/dist/lower/jsx.mjs +506 -1
- package/dist/lower/template.cjs +1061 -1
- package/dist/lower/template.d.cts +53 -0
- package/dist/lower/template.d.ts.map +1 -1
- package/dist/lower/template.js +5 -4
- package/dist/lower/template.mjs +1042 -1
- package/dist/lower/text.cjs +42 -1
- package/dist/lower/text.d.cts +10 -0
- package/dist/lower/text.mjs +21 -1
- package/dist/optimize/analyze-static.cjs +112 -1
- package/dist/optimize/analyze-static.d.cts +39 -0
- package/dist/optimize/analyze-static.mjs +91 -1
- package/dist/optimize/collapse-strategies.cjs +90 -1
- package/dist/optimize/collapse-strategies.d.cts +30 -0
- package/dist/optimize/collapse-strategies.mjs +67 -1
- package/dist/options.cjs +33 -1
- package/dist/options.d.cts +39 -0
- package/dist/options.mjs +12 -1
- package/dist/resolve/builtins.cjs +73 -1
- package/dist/resolve/builtins.d.cts +68 -0
- package/dist/resolve/builtins.mjs +53 -1
- package/dist/resolve/component-globals.cjs +233 -13
- package/dist/resolve/component-globals.d.cts +80 -0
- package/dist/resolve/component-globals.mjs +210 -13
- package/dist/resolve/component-resolver.cjs +80 -1
- package/dist/resolve/component-resolver.d.cts +68 -0
- package/dist/resolve/component-resolver.mjs +59 -1
- package/dist/resolve/load-directive.cjs +93 -1
- package/dist/resolve/load-directive.d.cts +53 -0
- package/dist/resolve/load-directive.mjs +72 -1
- package/dist/resolve/resolve-ir.cjs +108 -1
- package/dist/resolve/resolve-ir.d.cts +53 -0
- package/dist/resolve/resolve-ir.mjs +85 -1
- package/dist/resolve/write-globals.cjs +318 -13
- package/dist/resolve/write-globals.d.cts +30 -0
- package/dist/resolve/write-globals.mjs +297 -13
- package/dist/server-fns-4ZXN6DYU.mjs +78 -0
- package/dist/server-functions-V6D6DRIA.mjs +82 -0
- package/dist/transform/bindings.cjs +71 -1
- package/dist/transform/bindings.d.cts +16 -0
- package/dist/transform/bindings.mjs +50 -1
- package/dist/transform/index.cjs +2732 -8
- package/dist/transform/index.d.cts +15 -0
- package/dist/transform/index.mjs +3773 -17
- package/dist/transform/intrinsics.cjs +216 -3
- package/dist/transform/intrinsics.d.cts +21 -0
- package/dist/transform/intrinsics.mjs +193 -3
- package/dist/transform/props.cjs +441 -3
- package/dist/transform/props.d.cts +45 -0
- package/dist/transform/props.mjs +1482 -12
- package/dist/transform/server-fn-id.cjs +35 -1
- package/dist/transform/server-fn-id.d.cts +9 -0
- package/dist/transform/server-fn-id.mjs +14 -1
- package/dist/transform/server-fns.cjs +114 -2
- package/dist/transform/server-fns.d.cts +12 -0
- package/dist/transform/server-fns.mjs +1155 -11
- package/dist/transform/source-locations.cjs +330 -1
- package/dist/transform/source-locations.d.cts +43 -0
- package/dist/transform/source-locations.mjs +307 -1
- package/dist/transform/templates.cjs +2701 -7
- package/dist/transform/templates.d.cts +69 -0
- package/dist/transform/templates.mjs +3743 -16
- package/dist/transform-BT4MMASR.mjs +893 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +6 -5
- package/dist/babel-VXKH6MRQ.mjs +0 -1
- package/dist/chunk-3SAEGOMQ.mjs +0 -1
- package/dist/chunk-5KMMN5QP.mjs +0 -1
- package/dist/chunk-IBRM4W7I.mjs +0 -10
- package/dist/chunk-OHHZCYIQ.mjs +0 -1
- package/dist/chunk-YKZ54NVE.mjs +0 -1
- package/dist/server-fns-6QM243HC.mjs +0 -2
- package/dist/server-functions-E3LKCZ4R.mjs +0 -1
- package/dist/transform-C4ZXRVGP.mjs +0 -8
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*! @fluixi/compiler v1.0.0-alpha.84 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
|
+
|
|
3
|
+
// src/transform/server-fn-id.ts
|
|
4
|
+
function hash(s) {
|
|
5
|
+
let h = 5381;
|
|
6
|
+
for (let i = 0; i < s.length; i++) h = h * 33 ^ s.charCodeAt(i);
|
|
7
|
+
return (h >>> 0).toString(16);
|
|
8
|
+
}
|
|
9
|
+
function serverFnId(filename, root, index) {
|
|
10
|
+
const rel = (filename || "unknown").replace(root ? root + "/" : "", "");
|
|
11
|
+
return `${hash(rel)}:${index}`;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
serverFnId
|
|
16
|
+
};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/*! @fluixi/compiler v1.0.0-alpha.84 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
|
+
|
|
3
|
+
// src/resolve/component-resolver.ts
|
|
4
|
+
var isMapRule = (rule) => "components" in rule;
|
|
5
|
+
function substitute(template, match) {
|
|
6
|
+
return template.replace(/\$(\d+)/g, (whole, index) => {
|
|
7
|
+
const group = match[Number(index)];
|
|
8
|
+
return group ?? whole;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function normalise(name, entry) {
|
|
12
|
+
return typeof entry === "string" ? { module: entry, export: name } : entry;
|
|
13
|
+
}
|
|
14
|
+
function createComponentResolver(rules = []) {
|
|
15
|
+
const exact = /* @__PURE__ */ new Map();
|
|
16
|
+
const conflicts = [];
|
|
17
|
+
const patterns = [];
|
|
18
|
+
for (const rule of rules) {
|
|
19
|
+
if (!isMapRule(rule)) {
|
|
20
|
+
patterns.push(rule);
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
for (const [name, entry] of Object.entries(rule.components)) {
|
|
24
|
+
const resolved = normalise(name, entry);
|
|
25
|
+
const existing = exact.get(name);
|
|
26
|
+
if (existing && existing.module !== resolved.module) {
|
|
27
|
+
const conflict = conflicts.find((c) => c.name === name);
|
|
28
|
+
if (conflict) conflict.modules.push(resolved.module);
|
|
29
|
+
else conflicts.push({ name, modules: [existing.module, resolved.module] });
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
exact.set(name, resolved);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const cache = /* @__PURE__ */ new Map();
|
|
36
|
+
const resolve = (name) => {
|
|
37
|
+
if (cache.has(name)) return cache.get(name);
|
|
38
|
+
let result = exact.get(name);
|
|
39
|
+
if (!result) {
|
|
40
|
+
for (const rule of patterns) {
|
|
41
|
+
const match = name.match(new RegExp(rule.match.source, rule.match.flags.replace("g", "")));
|
|
42
|
+
if (!match) continue;
|
|
43
|
+
result = {
|
|
44
|
+
module: substitute(rule.module, match),
|
|
45
|
+
export: rule.export ? substitute(rule.export, match) : name
|
|
46
|
+
};
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
cache.set(name, result);
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
resolve,
|
|
55
|
+
names: () => [...exact.keys()],
|
|
56
|
+
conflicts: () => conflicts
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// src/resolve/builtins.ts
|
|
61
|
+
var DOM_CONTROL_FLOW = [
|
|
62
|
+
"Show",
|
|
63
|
+
"For",
|
|
64
|
+
"Index",
|
|
65
|
+
"Switch",
|
|
66
|
+
"Match",
|
|
67
|
+
"Portal",
|
|
68
|
+
"Dynamic",
|
|
69
|
+
"ErrorBoundary"
|
|
70
|
+
];
|
|
71
|
+
var CORE_CONTROL_FLOW = ["Suspense", "SuspenseList", "Await"];
|
|
72
|
+
var ROUTER_COMPONENTS = ["Router", "Outlet", "Redirect", "Link"];
|
|
73
|
+
var BUILTIN_COMPONENTS = [
|
|
74
|
+
...DOM_CONTROL_FLOW,
|
|
75
|
+
...CORE_CONTROL_FLOW,
|
|
76
|
+
...ROUTER_COMPONENTS
|
|
77
|
+
];
|
|
78
|
+
var RESERVED_COMPONENTS = /* @__PURE__ */ new Set([
|
|
79
|
+
...DOM_CONTROL_FLOW,
|
|
80
|
+
...CORE_CONTROL_FLOW
|
|
81
|
+
]);
|
|
82
|
+
function builtinComponentMap(modules = {}) {
|
|
83
|
+
const {
|
|
84
|
+
controlFlowModule = "@fluixi/dom",
|
|
85
|
+
coreModule = "@fluixi/core",
|
|
86
|
+
routerModule = "@fluixi/core/router"
|
|
87
|
+
} = modules;
|
|
88
|
+
const map = {};
|
|
89
|
+
for (const name of DOM_CONTROL_FLOW) map[name] = controlFlowModule;
|
|
90
|
+
for (const name of CORE_CONTROL_FLOW) map[name] = coreModule;
|
|
91
|
+
for (const name of ROUTER_COMPONENTS) map[name] = routerModule;
|
|
92
|
+
return map;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// src/analyze/intrinsics.ts
|
|
96
|
+
var REACTIVE_MODULE = "@fluixi/reactive/signal";
|
|
97
|
+
var INTRINSICS = {
|
|
98
|
+
$signal: { export: "signal", module: REACTIVE_MODULE, returns: "signal-handle" },
|
|
99
|
+
$memo: { export: "memo", module: REACTIVE_MODULE, returns: "memo-handle" },
|
|
100
|
+
$effect: { export: "effect", module: REACTIVE_MODULE, returns: "effect" },
|
|
101
|
+
$store: { export: "store", module: "@fluixi/reactive/store", returns: "store-handle" },
|
|
102
|
+
$resource: { export: "resource", module: REACTIVE_MODULE, returns: "resource-handle" },
|
|
103
|
+
// No short runtime form for these yet, so the intrinsic stands for the `create*`
|
|
104
|
+
// name. Still worth having — no import to write — and when a shorter form is
|
|
105
|
+
// designed, the change is this line rather than a compiler pass.
|
|
106
|
+
$selector: { export: "createSelector", module: REACTIVE_MODULE, returns: "memo-accessor" },
|
|
107
|
+
$deferred: { export: "createDeferred", module: REACTIVE_MODULE, returns: "memo-accessor" },
|
|
108
|
+
// Not value constructors, but the compiler has to know them: they change what a read
|
|
109
|
+
// does. `untrack` suppresses dependency collection, which is exactly the kind of thing
|
|
110
|
+
// dependency analysis must not guess at.
|
|
111
|
+
$untrack: { export: "untrack", module: REACTIVE_MODULE, returns: "plain" },
|
|
112
|
+
$untrackStore: { export: "untrackStore", module: "@fluixi/reactive/store", returns: "plain" }
|
|
113
|
+
};
|
|
114
|
+
var RUNTIME_PRIMITIVES = {
|
|
115
|
+
signal: "signal-handle",
|
|
116
|
+
memo: "memo-handle",
|
|
117
|
+
effect: "effect",
|
|
118
|
+
store: "store-handle",
|
|
119
|
+
createSignal: ["signal-accessor", "signal-setter"],
|
|
120
|
+
createMemo: "memo-accessor",
|
|
121
|
+
createEffect: "effect",
|
|
122
|
+
createRenderEffect: "effect",
|
|
123
|
+
createStore: "reactive-object",
|
|
124
|
+
resource: "resource-handle",
|
|
125
|
+
createResource: "reactive-object",
|
|
126
|
+
createSelector: "memo-accessor",
|
|
127
|
+
createDeferred: "memo-accessor"
|
|
128
|
+
};
|
|
129
|
+
var PRIMITIVE_MODULES = [
|
|
130
|
+
"@fluixi/reactive",
|
|
131
|
+
"@fluixi/reactive/signal",
|
|
132
|
+
"@fluixi/reactive/store",
|
|
133
|
+
"@fluixi/core"
|
|
134
|
+
];
|
|
135
|
+
var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
|
|
136
|
+
function mayHaveIntrinsic(code) {
|
|
137
|
+
return INTRINSIC_CALL.test(code);
|
|
138
|
+
}
|
|
139
|
+
function isIntrinsicName(name) {
|
|
140
|
+
return Object.prototype.hasOwnProperty.call(INTRINSICS, name);
|
|
141
|
+
}
|
|
142
|
+
function isPrimitiveModule(source) {
|
|
143
|
+
return PRIMITIVE_MODULES.includes(source);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export {
|
|
147
|
+
createComponentResolver,
|
|
148
|
+
DOM_CONTROL_FLOW,
|
|
149
|
+
CORE_CONTROL_FLOW,
|
|
150
|
+
ROUTER_COMPONENTS,
|
|
151
|
+
RESERVED_COMPONENTS,
|
|
152
|
+
builtinComponentMap,
|
|
153
|
+
INTRINSICS,
|
|
154
|
+
RUNTIME_PRIMITIVES,
|
|
155
|
+
mayHaveIntrinsic,
|
|
156
|
+
isIntrinsicName,
|
|
157
|
+
isPrimitiveModule
|
|
158
|
+
};
|