@fluixi/compiler 1.0.0-alpha.92 → 1.0.0-alpha.93

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.
Files changed (68) hide show
  1. package/dist/analyze/intrinsics.cjs +18 -0
  2. package/dist/analyze/intrinsics.d.ts.map +1 -1
  3. package/dist/analyze/intrinsics.js +18 -0
  4. package/dist/analyze/intrinsics.mjs +18 -0
  5. package/dist/analyze/reactive-bindings.cjs +18 -0
  6. package/dist/analyze/reactive-bindings.mjs +18 -0
  7. package/dist/analyze/static-graph.cjs +22 -4
  8. package/dist/analyze/static-graph.d.ts.map +1 -1
  9. package/dist/analyze/static-graph.js +6 -4
  10. package/dist/analyze/static-graph.mjs +22 -4
  11. package/dist/{babel-GI375YZ2.mjs → babel-RJHJQVEM.mjs} +4 -4
  12. package/dist/{chunk-QZ4CJPYP.mjs → chunk-56QSOVVL.mjs} +1 -1
  13. package/dist/{chunk-XJ5H2MXY.mjs → chunk-OD53TMER.mjs} +19 -1
  14. package/dist/{chunk-DWNWN5RH.mjs → chunk-R7PPFBCL.mjs} +1 -1
  15. package/dist/{chunk-VOUI6XPV.mjs → chunk-TJIH7TLX.mjs} +1 -1
  16. package/dist/{chunk-VC6X44FS.mjs → chunk-U7HCFLZ2.mjs} +153 -48
  17. package/dist/codegen/backends/imperative.cjs +24 -6
  18. package/dist/codegen/backends/imperative.d.ts.map +1 -1
  19. package/dist/codegen/backends/imperative.js +19 -4
  20. package/dist/codegen/backends/imperative.mjs +24 -6
  21. package/dist/frontend/babel/build-ir-lit.cjs +120 -43
  22. package/dist/frontend/babel/build-ir-lit.mjs +120 -43
  23. package/dist/frontend/babel/build-ir.cjs +120 -43
  24. package/dist/frontend/babel/build-ir.mjs +120 -43
  25. package/dist/frontend/babel/index.cjs +121 -44
  26. package/dist/frontend/babel/index.mjs +121 -44
  27. package/dist/frontend/babel/lower-template.cjs +120 -43
  28. package/dist/frontend/babel/lower-template.mjs +120 -43
  29. package/dist/frontend/babel/plugin.cjs +120 -43
  30. package/dist/frontend/babel/plugin.mjs +120 -43
  31. package/dist/index.cjs +41 -38
  32. package/dist/index.mjs +41 -38
  33. package/dist/integrations.cjs +176 -52
  34. package/dist/integrations.mjs +8 -8
  35. package/dist/lower/compile-template.cjs +41 -38
  36. package/dist/lower/compile-template.mjs +41 -38
  37. package/dist/lower/jsx.cjs +509 -6
  38. package/dist/lower/jsx.d.ts.map +1 -1
  39. package/dist/lower/jsx.js +114 -6
  40. package/dist/lower/jsx.mjs +509 -6
  41. package/dist/lower/template.cjs +40 -37
  42. package/dist/lower/template.d.ts.map +1 -1
  43. package/dist/lower/template.js +22 -30
  44. package/dist/lower/template.mjs +40 -37
  45. package/dist/resolve/builtins.cjs +1 -1
  46. package/dist/resolve/builtins.mjs +1 -1
  47. package/dist/resolve/component-globals.cjs +14 -0
  48. package/dist/resolve/component-globals.mjs +14 -0
  49. package/dist/resolve/write-globals.cjs +14 -0
  50. package/dist/resolve/write-globals.mjs +14 -0
  51. package/dist/{server-fns-BBZRZUPP.mjs → server-fns-ZFRDIQ2X.mjs} +4 -4
  52. package/dist/{server-functions-VEGLIFCE.mjs → server-functions-CTDXX67X.mjs} +3 -3
  53. package/dist/transform/index.cjs +170 -47
  54. package/dist/transform/index.mjs +170 -47
  55. package/dist/transform/intrinsics.cjs +18 -0
  56. package/dist/transform/intrinsics.mjs +18 -0
  57. package/dist/transform/source-locations.cjs +64 -3
  58. package/dist/transform/source-locations.d.cts +7 -2
  59. package/dist/transform/source-locations.d.ts +7 -2
  60. package/dist/transform/source-locations.d.ts.map +1 -1
  61. package/dist/transform/source-locations.js +68 -3
  62. package/dist/transform/source-locations.mjs +64 -3
  63. package/dist/transform/templates.cjs +169 -46
  64. package/dist/transform/templates.js +2 -2
  65. package/dist/transform/templates.mjs +169 -46
  66. package/dist/{transform-UWZ7ZGJ2.mjs → transform-QWWQDCXE.mjs} +7 -7
  67. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  68. package/package.json +9 -3
@@ -36,6 +36,7 @@ var INTRINSICS = {
36
36
  $effect: { export: "effect", module: REACTIVE_MODULE, returns: "effect" },
37
37
  $store: { export: "store", module: "@fluixi/reactive/store", returns: "store-handle" },
38
38
  $resource: { export: "resource", module: REACTIVE_MODULE, returns: "resource-handle" },
39
+ $cachedResource: { export: "cachedResource", module: "@fluixi/reactive/cached-resource", returns: "resource-handle" },
39
40
  // No short runtime form for these yet, so the intrinsic stands for the `create*`
40
41
  // name. Still worth having: no import to write, and when a shorter form is
41
42
  // designed, the change is this line rather than a compiler pass.
@@ -46,6 +47,19 @@ var INTRINSICS = {
46
47
  // dependency analysis must not guess at.
47
48
  $untrack: { export: "untrack", module: REACTIVE_MODULE, returns: "plain" },
48
49
  $untrackStore: { export: "untrackStore", module: "@fluixi/reactive/store", returns: "plain" },
50
+ // Scopes, scheduling and lifecycle: no value to classify, but the same authoring promise,
51
+ // no import to write. `$cleanup` registers a callback on the current owner (`onCleanup`).
52
+ $batch: { export: "batch", module: REACTIVE_MODULE, returns: "plain" },
53
+ $cleanup: { export: "onCleanup", module: REACTIVE_MODULE, returns: "plain" },
54
+ $root: { export: "root", module: REACTIVE_MODULE, returns: "plain" },
55
+ $context: { export: "context", module: REACTIVE_MODULE, returns: "plain" },
56
+ $renderEffect: { export: "renderEffect", module: REACTIVE_MODULE, returns: "effect" },
57
+ $computed: { export: "computed", module: REACTIVE_MODULE, returns: "effect" },
58
+ // Storage for where the code runs, and a signal kept in it. `$persisted` is a signal
59
+ // handle as far as reads go: the same accessor with `set` on it.
60
+ $storage: { export: "useStorage", module: "@fluixi/core/storage", returns: "plain" },
61
+ $asyncStorage: { export: "useAsyncStorage", module: "@fluixi/core/storage", returns: "plain" },
62
+ $persisted: { export: "persisted", module: "@fluixi/core/storage", returns: "signal-handle" },
49
63
  // An environment variable, public or server-only; the browser build refuses a secret.
50
64
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
51
65
  };
@@ -58,8 +72,11 @@ var RUNTIME_PRIMITIVES = {
58
72
  createMemo: "memo-accessor",
59
73
  createEffect: "effect",
60
74
  createRenderEffect: "effect",
75
+ renderEffect: "effect",
76
+ computed: "effect",
61
77
  createStore: "reactive-object",
62
78
  resource: "resource-handle",
79
+ cachedResource: "resource-handle",
63
80
  createResource: "reactive-object",
64
81
  createSelector: "memo-accessor",
65
82
  createDeferred: "memo-accessor"
@@ -68,6 +85,7 @@ var PRIMITIVE_MODULES = [
68
85
  "@fluixi/reactive",
69
86
  "@fluixi/reactive/signal",
70
87
  "@fluixi/reactive/store",
88
+ "@fluixi/reactive/cached-resource",
71
89
  "@fluixi/core"
72
90
  ];
73
91
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
@@ -1 +1 @@
1
- {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../src/analyze/intrinsics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GACpB,OAAO;AACT,6EAA6E;GAC3E,eAAe;AACjB,+CAA+C;GAC7C,aAAa;AACf,+DAA+D;GAC7D,cAAc;AAChB,oFAAoF;GAClF,iBAAiB;AACnB,8EAA8E;GAC5E,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,QAAQ,GACR,iBAAiB,CAAC;AAEtB,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,CAAC;CACjD;AAED,0FAA0F;AAC1F,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAsB1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAc7E,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAK9C,CAAC;AAQF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD"}
1
+ {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../src/analyze/intrinsics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GACpB,OAAO;AACT,6EAA6E;GAC3E,eAAe;AACjB,+CAA+C;GAC7C,aAAa;AACf,+DAA+D;GAC7D,cAAc;AAChB,oFAAoF;GAClF,iBAAiB;AACnB,8EAA8E;GAC5E,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,QAAQ,GACR,iBAAiB,CAAC;AAEtB,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,CAAC;CACjD;AAED,0FAA0F;AAC1F,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAsC1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAiB7E,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAM9C,CAAC;AAQF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -34,6 +34,7 @@ export const INTRINSICS = {
34
34
  $effect: { export: 'effect', module: REACTIVE_MODULE, returns: 'effect' },
35
35
  $store: { export: 'store', module: '@fluixi/reactive/store', returns: 'store-handle' },
36
36
  $resource: { export: 'resource', module: REACTIVE_MODULE, returns: 'resource-handle' },
37
+ $cachedResource: { export: 'cachedResource', module: '@fluixi/reactive/cached-resource', returns: 'resource-handle' },
37
38
  // No short runtime form for these yet, so the intrinsic stands for the `create*`
38
39
  // name. Still worth having: no import to write, and when a shorter form is
39
40
  // designed, the change is this line rather than a compiler pass.
@@ -44,6 +45,19 @@ export const INTRINSICS = {
44
45
  // dependency analysis must not guess at.
45
46
  $untrack: { export: 'untrack', module: REACTIVE_MODULE, returns: 'plain' },
46
47
  $untrackStore: { export: 'untrackStore', module: '@fluixi/reactive/store', returns: 'plain' },
48
+ // Scopes, scheduling and lifecycle: no value to classify, but the same authoring promise,
49
+ // no import to write. `$cleanup` registers a callback on the current owner (`onCleanup`).
50
+ $batch: { export: 'batch', module: REACTIVE_MODULE, returns: 'plain' },
51
+ $cleanup: { export: 'onCleanup', module: REACTIVE_MODULE, returns: 'plain' },
52
+ $root: { export: 'root', module: REACTIVE_MODULE, returns: 'plain' },
53
+ $context: { export: 'context', module: REACTIVE_MODULE, returns: 'plain' },
54
+ $renderEffect: { export: 'renderEffect', module: REACTIVE_MODULE, returns: 'effect' },
55
+ $computed: { export: 'computed', module: REACTIVE_MODULE, returns: 'effect' },
56
+ // Storage for where the code runs, and a signal kept in it. `$persisted` is a signal
57
+ // handle as far as reads go: the same accessor with `set` on it.
58
+ $storage: { export: 'useStorage', module: '@fluixi/core/storage', returns: 'plain' },
59
+ $asyncStorage: { export: 'useAsyncStorage', module: '@fluixi/core/storage', returns: 'plain' },
60
+ $persisted: { export: 'persisted', module: '@fluixi/core/storage', returns: 'signal-handle' },
47
61
  // An environment variable, public or server-only; the browser build refuses a secret.
48
62
  $env: { export: 'env', module: '@fluixi/start/env', returns: 'plain' },
49
63
  };
@@ -61,8 +75,11 @@ export const RUNTIME_PRIMITIVES = {
61
75
  createMemo: 'memo-accessor',
62
76
  createEffect: 'effect',
63
77
  createRenderEffect: 'effect',
78
+ renderEffect: 'effect',
79
+ computed: 'effect',
64
80
  createStore: 'reactive-object',
65
81
  resource: 'resource-handle',
82
+ cachedResource: 'resource-handle',
66
83
  createResource: 'reactive-object',
67
84
  createSelector: 'memo-accessor',
68
85
  createDeferred: 'memo-accessor',
@@ -72,6 +89,7 @@ export const PRIMITIVE_MODULES = [
72
89
  '@fluixi/reactive',
73
90
  '@fluixi/reactive/signal',
74
91
  '@fluixi/reactive/store',
92
+ '@fluixi/reactive/cached-resource',
75
93
  '@fluixi/core',
76
94
  ];
77
95
  /**
@@ -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*\\(`);
@@ -33,6 +33,7 @@ var INTRINSICS = {
33
33
  $effect: { export: "effect", module: REACTIVE_MODULE, returns: "effect" },
34
34
  $store: { export: "store", module: "@fluixi/reactive/store", returns: "store-handle" },
35
35
  $resource: { export: "resource", module: REACTIVE_MODULE, returns: "resource-handle" },
36
+ $cachedResource: { export: "cachedResource", module: "@fluixi/reactive/cached-resource", returns: "resource-handle" },
36
37
  // No short runtime form for these yet, so the intrinsic stands for the `create*`
37
38
  // name. Still worth having: no import to write, and when a shorter form is
38
39
  // designed, the change is this line rather than a compiler pass.
@@ -43,6 +44,19 @@ var INTRINSICS = {
43
44
  // dependency analysis must not guess at.
44
45
  $untrack: { export: "untrack", module: REACTIVE_MODULE, returns: "plain" },
45
46
  $untrackStore: { export: "untrackStore", module: "@fluixi/reactive/store", returns: "plain" },
47
+ // Scopes, scheduling and lifecycle: no value to classify, but the same authoring promise,
48
+ // no import to write. `$cleanup` registers a callback on the current owner (`onCleanup`).
49
+ $batch: { export: "batch", module: REACTIVE_MODULE, returns: "plain" },
50
+ $cleanup: { export: "onCleanup", module: REACTIVE_MODULE, returns: "plain" },
51
+ $root: { export: "root", module: REACTIVE_MODULE, returns: "plain" },
52
+ $context: { export: "context", module: REACTIVE_MODULE, returns: "plain" },
53
+ $renderEffect: { export: "renderEffect", module: REACTIVE_MODULE, returns: "effect" },
54
+ $computed: { export: "computed", module: REACTIVE_MODULE, returns: "effect" },
55
+ // Storage for where the code runs, and a signal kept in it. `$persisted` is a signal
56
+ // handle as far as reads go: the same accessor with `set` on it.
57
+ $storage: { export: "useStorage", module: "@fluixi/core/storage", returns: "plain" },
58
+ $asyncStorage: { export: "useAsyncStorage", module: "@fluixi/core/storage", returns: "plain" },
59
+ $persisted: { export: "persisted", module: "@fluixi/core/storage", returns: "signal-handle" },
46
60
  // An environment variable, public or server-only; the browser build refuses a secret.
47
61
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
48
62
  };
@@ -55,8 +69,11 @@ var RUNTIME_PRIMITIVES = {
55
69
  createMemo: "memo-accessor",
56
70
  createEffect: "effect",
57
71
  createRenderEffect: "effect",
72
+ renderEffect: "effect",
73
+ computed: "effect",
58
74
  createStore: "reactive-object",
59
75
  resource: "resource-handle",
76
+ cachedResource: "resource-handle",
60
77
  createResource: "reactive-object",
61
78
  createSelector: "memo-accessor",
62
79
  createDeferred: "memo-accessor"
@@ -65,6 +82,7 @@ var PRIMITIVE_MODULES = [
65
82
  "@fluixi/reactive",
66
83
  "@fluixi/reactive/signal",
67
84
  "@fluixi/reactive/store",
85
+ "@fluixi/reactive/cached-resource",
68
86
  "@fluixi/core"
69
87
  ];
70
88
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
@@ -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*\\(`);
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.92 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  "use strict";
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -35,6 +35,7 @@ var INTRINSICS = {
35
35
  $effect: { export: "effect", module: REACTIVE_MODULE, returns: "effect" },
36
36
  $store: { export: "store", module: "@fluixi/reactive/store", returns: "store-handle" },
37
37
  $resource: { export: "resource", module: REACTIVE_MODULE, returns: "resource-handle" },
38
+ $cachedResource: { export: "cachedResource", module: "@fluixi/reactive/cached-resource", returns: "resource-handle" },
38
39
  // No short runtime form for these yet, so the intrinsic stands for the `create*`
39
40
  // name. Still worth having: no import to write, and when a shorter form is
40
41
  // designed, the change is this line rather than a compiler pass.
@@ -45,6 +46,19 @@ var INTRINSICS = {
45
46
  // dependency analysis must not guess at.
46
47
  $untrack: { export: "untrack", module: REACTIVE_MODULE, returns: "plain" },
47
48
  $untrackStore: { export: "untrackStore", module: "@fluixi/reactive/store", returns: "plain" },
49
+ // Scopes, scheduling and lifecycle: no value to classify, but the same authoring promise,
50
+ // no import to write. `$cleanup` registers a callback on the current owner (`onCleanup`).
51
+ $batch: { export: "batch", module: REACTIVE_MODULE, returns: "plain" },
52
+ $cleanup: { export: "onCleanup", module: REACTIVE_MODULE, returns: "plain" },
53
+ $root: { export: "root", module: REACTIVE_MODULE, returns: "plain" },
54
+ $context: { export: "context", module: REACTIVE_MODULE, returns: "plain" },
55
+ $renderEffect: { export: "renderEffect", module: REACTIVE_MODULE, returns: "effect" },
56
+ $computed: { export: "computed", module: REACTIVE_MODULE, returns: "effect" },
57
+ // Storage for where the code runs, and a signal kept in it. `$persisted` is a signal
58
+ // handle as far as reads go: the same accessor with `set` on it.
59
+ $storage: { export: "useStorage", module: "@fluixi/core/storage", returns: "plain" },
60
+ $asyncStorage: { export: "useAsyncStorage", module: "@fluixi/core/storage", returns: "plain" },
61
+ $persisted: { export: "persisted", module: "@fluixi/core/storage", returns: "signal-handle" },
48
62
  // An environment variable, public or server-only; the browser build refuses a secret.
49
63
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
50
64
  };
@@ -57,8 +71,11 @@ var RUNTIME_PRIMITIVES = {
57
71
  createMemo: "memo-accessor",
58
72
  createEffect: "effect",
59
73
  createRenderEffect: "effect",
74
+ renderEffect: "effect",
75
+ computed: "effect",
60
76
  createStore: "reactive-object",
61
77
  resource: "resource-handle",
78
+ cachedResource: "resource-handle",
62
79
  createResource: "reactive-object",
63
80
  createSelector: "memo-accessor",
64
81
  createDeferred: "memo-accessor"
@@ -67,6 +84,7 @@ var PRIMITIVE_MODULES = [
67
84
  "@fluixi/reactive",
68
85
  "@fluixi/reactive/signal",
69
86
  "@fluixi/reactive/store",
87
+ "@fluixi/reactive/cached-resource",
70
88
  "@fluixi/core"
71
89
  ];
72
90
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
@@ -643,10 +661,10 @@ function analyzeReactiveGraph(files, options = {}) {
643
661
  const ifDir = child.attributes.find((a) => a.kind === "IfDirective");
644
662
  const eachDir = child.attributes.find((a) => a.kind === "EachDirective");
645
663
  let inner = owner2;
646
- if (ifDir?.kind === "IfDirective") inner = addControl("Show", child.loc?.start, ifDir.hole, owner2) ?? owner2;
647
- else if (eachDir?.kind === "EachDirective") inner = addControl("For", child.loc?.start, eachDir.hole, owner2) ?? owner2;
664
+ if (ifDir?.kind === "IfDirective") inner = addControl("Show", child.loc?.start, ifDir.hole, inner) ?? inner;
665
+ if (eachDir?.kind === "EachDirective") inner = addControl("For", child.loc?.start, eachDir.hole, inner) ?? inner;
648
666
  elementTargets(child);
649
- visit(child.children, inner, describeTemplateElement(child));
667
+ visit(child.children, inner, child.tag === "container" ? holder : describeTemplateElement(child));
650
668
  break;
651
669
  }
652
670
  case "Component": {
@@ -1 +1 @@
1
- {"version":3,"file":"static-graph.d.ts","sourceRoot":"","sources":["../../src/analyze/static-graph.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,OAAO,GACP,UAAU,GACV,WAAW;AACb,yFAAyF;GACvF,SAAS;AACX,qEAAqE;GACnE,QAAQ;AACV,6EAA6E;GAC3E,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,sCAAsC;IACtC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B;;;OAGG;IACH,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,EAAE,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD;AAED,6FAA6F;AAC7F,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IAC9B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,kEAAkE;IAClE,MAAM,EAAE,IAAI,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+PD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,OAAO,GAAE,cAAmB,GAC3B,WAAW,CAimBb"}
1
+ {"version":3,"file":"static-graph.d.ts","sourceRoot":"","sources":["../../src/analyze/static-graph.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,OAAO,GACP,UAAU,GACV,WAAW;AACb,yFAAyF;GACvF,SAAS;AACX,qEAAqE;GACnE,QAAQ;AACV,6EAA6E;GAC3E,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,sCAAsC;IACtC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B;;;OAGG;IACH,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,EAAE,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD;AAED,6FAA6F;AAC7F,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IAC9B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,kEAAkE;IAClE,MAAM,EAAE,IAAI,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+PD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,OAAO,GAAE,cAAmB,GAC3B,WAAW,CAmmBb"}
@@ -629,13 +629,15 @@ export function analyzeReactiveGraph(files, options = {}) {
629
629
  // `if=`/`each=` are `<Show>`/`<For>` once lowered, so they are nodes here too.
630
630
  const ifDir = child.attributes.find((a) => a.kind === 'IfDirective');
631
631
  const eachDir = child.attributes.find((a) => a.kind === 'EachDirective');
632
+ // Both can sit on one element: the condition around it, the list inside it.
632
633
  let inner = owner;
633
634
  if (ifDir?.kind === 'IfDirective')
634
- inner = addControl('Show', child.loc?.start, ifDir.hole, owner) ?? owner;
635
- else if (eachDir?.kind === 'EachDirective')
636
- inner = addControl('For', child.loc?.start, eachDir.hole, owner) ?? owner;
635
+ inner = addControl('Show', child.loc?.start, ifDir.hole, inner) ?? inner;
636
+ if (eachDir?.kind === 'EachDirective')
637
+ inner = addControl('For', child.loc?.start, eachDir.hole, inner) ?? inner;
637
638
  elementTargets(child);
638
- visit(child.children, inner, describeTemplateElement(child));
639
+ // A <container> renders only its content, so what is inside it belongs to the parent's element.
640
+ visit(child.children, inner, child.tag === 'container' ? holder : describeTemplateElement(child));
639
641
  break;
640
642
  }
641
643
  case 'Component': {
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.92 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/analyze/static-graph.ts
4
4
  import { parse } from "@babel/parser";
@@ -14,6 +14,7 @@ var INTRINSICS = {
14
14
  $effect: { export: "effect", module: REACTIVE_MODULE, returns: "effect" },
15
15
  $store: { export: "store", module: "@fluixi/reactive/store", returns: "store-handle" },
16
16
  $resource: { export: "resource", module: REACTIVE_MODULE, returns: "resource-handle" },
17
+ $cachedResource: { export: "cachedResource", module: "@fluixi/reactive/cached-resource", returns: "resource-handle" },
17
18
  // No short runtime form for these yet, so the intrinsic stands for the `create*`
18
19
  // name. Still worth having: no import to write, and when a shorter form is
19
20
  // designed, the change is this line rather than a compiler pass.
@@ -24,6 +25,19 @@ var INTRINSICS = {
24
25
  // dependency analysis must not guess at.
25
26
  $untrack: { export: "untrack", module: REACTIVE_MODULE, returns: "plain" },
26
27
  $untrackStore: { export: "untrackStore", module: "@fluixi/reactive/store", returns: "plain" },
28
+ // Scopes, scheduling and lifecycle: no value to classify, but the same authoring promise,
29
+ // no import to write. `$cleanup` registers a callback on the current owner (`onCleanup`).
30
+ $batch: { export: "batch", module: REACTIVE_MODULE, returns: "plain" },
31
+ $cleanup: { export: "onCleanup", module: REACTIVE_MODULE, returns: "plain" },
32
+ $root: { export: "root", module: REACTIVE_MODULE, returns: "plain" },
33
+ $context: { export: "context", module: REACTIVE_MODULE, returns: "plain" },
34
+ $renderEffect: { export: "renderEffect", module: REACTIVE_MODULE, returns: "effect" },
35
+ $computed: { export: "computed", module: REACTIVE_MODULE, returns: "effect" },
36
+ // Storage for where the code runs, and a signal kept in it. `$persisted` is a signal
37
+ // handle as far as reads go: the same accessor with `set` on it.
38
+ $storage: { export: "useStorage", module: "@fluixi/core/storage", returns: "plain" },
39
+ $asyncStorage: { export: "useAsyncStorage", module: "@fluixi/core/storage", returns: "plain" },
40
+ $persisted: { export: "persisted", module: "@fluixi/core/storage", returns: "signal-handle" },
27
41
  // An environment variable, public or server-only; the browser build refuses a secret.
28
42
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
29
43
  };
@@ -36,8 +50,11 @@ var RUNTIME_PRIMITIVES = {
36
50
  createMemo: "memo-accessor",
37
51
  createEffect: "effect",
38
52
  createRenderEffect: "effect",
53
+ renderEffect: "effect",
54
+ computed: "effect",
39
55
  createStore: "reactive-object",
40
56
  resource: "resource-handle",
57
+ cachedResource: "resource-handle",
41
58
  createResource: "reactive-object",
42
59
  createSelector: "memo-accessor",
43
60
  createDeferred: "memo-accessor"
@@ -46,6 +63,7 @@ var PRIMITIVE_MODULES = [
46
63
  "@fluixi/reactive",
47
64
  "@fluixi/reactive/signal",
48
65
  "@fluixi/reactive/store",
66
+ "@fluixi/reactive/cached-resource",
49
67
  "@fluixi/core"
50
68
  ];
51
69
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
@@ -622,10 +640,10 @@ function analyzeReactiveGraph(files, options = {}) {
622
640
  const ifDir = child.attributes.find((a) => a.kind === "IfDirective");
623
641
  const eachDir = child.attributes.find((a) => a.kind === "EachDirective");
624
642
  let inner = owner2;
625
- if (ifDir?.kind === "IfDirective") inner = addControl("Show", child.loc?.start, ifDir.hole, owner2) ?? owner2;
626
- else if (eachDir?.kind === "EachDirective") inner = addControl("For", child.loc?.start, eachDir.hole, owner2) ?? owner2;
643
+ if (ifDir?.kind === "IfDirective") inner = addControl("Show", child.loc?.start, ifDir.hole, inner) ?? inner;
644
+ if (eachDir?.kind === "EachDirective") inner = addControl("For", child.loc?.start, eachDir.hole, inner) ?? inner;
627
645
  elementTargets(child);
628
- visit(child.children, inner, describeTemplateElement(child));
646
+ visit(child.children, inner, child.tag === "container" ? holder : describeTemplateElement(child));
629
647
  break;
630
648
  }
631
649
  case "Component": {
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.92 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  import {
3
3
  analyzeStatic,
4
4
  buildJsxIR,
@@ -10,13 +10,13 @@ import {
10
10
  lowerTemplate,
11
11
  resolveComponentSources,
12
12
  shapeOf
13
- } from "./chunk-VC6X44FS.mjs";
13
+ } from "./chunk-U7HCFLZ2.mjs";
14
14
  import {
15
15
  CORE_CONTROL_FLOW,
16
16
  ROUTER_COMPONENTS,
17
17
  createComponentResolver
18
- } from "./chunk-XJ5H2MXY.mjs";
19
- import "./chunk-VOUI6XPV.mjs";
18
+ } from "./chunk-OD53TMER.mjs";
19
+ import "./chunk-TJIH7TLX.mjs";
20
20
 
21
21
  // src/frontend/babel/plugin.ts
22
22
  import { declare } from "@babel/helper-plugin-utils";
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.92 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/transform/server-fn-id.ts
4
4
  function hash(s) {
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.92 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/resolve/component-resolver.ts
4
4
  var isMapRule = (rule) => "components" in rule;
@@ -100,6 +100,7 @@ var INTRINSICS = {
100
100
  $effect: { export: "effect", module: REACTIVE_MODULE, returns: "effect" },
101
101
  $store: { export: "store", module: "@fluixi/reactive/store", returns: "store-handle" },
102
102
  $resource: { export: "resource", module: REACTIVE_MODULE, returns: "resource-handle" },
103
+ $cachedResource: { export: "cachedResource", module: "@fluixi/reactive/cached-resource", returns: "resource-handle" },
103
104
  // No short runtime form for these yet, so the intrinsic stands for the `create*`
104
105
  // name. Still worth having: no import to write, and when a shorter form is
105
106
  // designed, the change is this line rather than a compiler pass.
@@ -110,6 +111,19 @@ var INTRINSICS = {
110
111
  // dependency analysis must not guess at.
111
112
  $untrack: { export: "untrack", module: REACTIVE_MODULE, returns: "plain" },
112
113
  $untrackStore: { export: "untrackStore", module: "@fluixi/reactive/store", returns: "plain" },
114
+ // Scopes, scheduling and lifecycle: no value to classify, but the same authoring promise,
115
+ // no import to write. `$cleanup` registers a callback on the current owner (`onCleanup`).
116
+ $batch: { export: "batch", module: REACTIVE_MODULE, returns: "plain" },
117
+ $cleanup: { export: "onCleanup", module: REACTIVE_MODULE, returns: "plain" },
118
+ $root: { export: "root", module: REACTIVE_MODULE, returns: "plain" },
119
+ $context: { export: "context", module: REACTIVE_MODULE, returns: "plain" },
120
+ $renderEffect: { export: "renderEffect", module: REACTIVE_MODULE, returns: "effect" },
121
+ $computed: { export: "computed", module: REACTIVE_MODULE, returns: "effect" },
122
+ // Storage for where the code runs, and a signal kept in it. `$persisted` is a signal
123
+ // handle as far as reads go: the same accessor with `set` on it.
124
+ $storage: { export: "useStorage", module: "@fluixi/core/storage", returns: "plain" },
125
+ $asyncStorage: { export: "useAsyncStorage", module: "@fluixi/core/storage", returns: "plain" },
126
+ $persisted: { export: "persisted", module: "@fluixi/core/storage", returns: "signal-handle" },
113
127
  // An environment variable, public or server-only; the browser build refuses a secret.
114
128
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
115
129
  };
@@ -122,8 +136,11 @@ var RUNTIME_PRIMITIVES = {
122
136
  createMemo: "memo-accessor",
123
137
  createEffect: "effect",
124
138
  createRenderEffect: "effect",
139
+ renderEffect: "effect",
140
+ computed: "effect",
125
141
  createStore: "reactive-object",
126
142
  resource: "resource-handle",
143
+ cachedResource: "resource-handle",
127
144
  createResource: "reactive-object",
128
145
  createSelector: "memo-accessor",
129
146
  createDeferred: "memo-accessor"
@@ -132,6 +149,7 @@ var PRIMITIVE_MODULES = [
132
149
  "@fluixi/reactive",
133
150
  "@fluixi/reactive/signal",
134
151
  "@fluixi/reactive/store",
152
+ "@fluixi/reactive/cached-resource",
135
153
  "@fluixi/core"
136
154
  ];
137
155
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.92 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
4
4
  var comma = ",".charCodeAt(0);
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.92 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
3
3
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
4
4
  }) : x)(function(x) {