@elurjs/core 3.5.0
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/LICENSE +21 -0
- package/README.md +157 -0
- package/dist/lib/async.cjs +16 -0
- package/dist/lib/async.js +123 -0
- package/dist/lib/component.cjs +2 -0
- package/dist/lib/component.js +66 -0
- package/dist/lib/context.cjs +2 -0
- package/dist/lib/context.js +52 -0
- package/dist/lib/devtools.cjs +59 -0
- package/dist/lib/devtools.js +419 -0
- package/dist/lib/elur/async.cjs +16 -0
- package/dist/lib/elur/async.cjs.map +1 -0
- package/dist/lib/elur/async.d.cts +32 -0
- package/dist/lib/elur/async.d.ts +32 -0
- package/dist/lib/elur/async.js +123 -0
- package/dist/lib/elur/async.js.map +1 -0
- package/dist/lib/elur/component.cjs +2 -0
- package/dist/lib/elur/component.cjs.map +1 -0
- package/dist/lib/elur/component.d.cts +17 -0
- package/dist/lib/elur/component.d.ts +17 -0
- package/dist/lib/elur/component.js +66 -0
- package/dist/lib/elur/component.js.map +1 -0
- package/dist/lib/elur/context.cjs +2 -0
- package/dist/lib/elur/context.cjs.map +1 -0
- package/dist/lib/elur/context.d.cts +29 -0
- package/dist/lib/elur/context.d.ts +29 -0
- package/dist/lib/elur/context.js +52 -0
- package/dist/lib/elur/context.js.map +1 -0
- package/dist/lib/elur/devtools.cjs +59 -0
- package/dist/lib/elur/devtools.cjs.map +1 -0
- package/dist/lib/elur/devtools.d.cts +24 -0
- package/dist/lib/elur/devtools.d.ts +24 -0
- package/dist/lib/elur/devtools.js +419 -0
- package/dist/lib/elur/devtools.js.map +1 -0
- package/dist/lib/elur/form.cjs +2 -0
- package/dist/lib/elur/form.cjs.map +1 -0
- package/dist/lib/elur/form.d.cts +283 -0
- package/dist/lib/elur/form.d.ts +283 -0
- package/dist/lib/elur/form.js +315 -0
- package/dist/lib/elur/form.js.map +1 -0
- package/dist/lib/elur/hydrate/index.cjs +2 -0
- package/dist/lib/elur/hydrate/index.cjs.map +1 -0
- package/dist/lib/elur/hydrate/index.d.cts +13 -0
- package/dist/lib/elur/hydrate/index.d.ts +13 -0
- package/dist/lib/elur/hydrate/index.js +410 -0
- package/dist/lib/elur/hydrate/index.js.map +1 -0
- package/dist/lib/elur/index.d.cts +19 -0
- package/dist/lib/elur/index.d.ts +19 -0
- package/dist/lib/elur/lifecycle.cjs +2 -0
- package/dist/lib/elur/lifecycle.cjs.map +1 -0
- package/dist/lib/elur/lifecycle.d.cts +45 -0
- package/dist/lib/elur/lifecycle.d.ts +45 -0
- package/dist/lib/elur/lifecycle.js +39 -0
- package/dist/lib/elur/lifecycle.js.map +1 -0
- package/dist/lib/elur/plugins.cjs +2 -0
- package/dist/lib/elur/plugins.cjs.map +1 -0
- package/dist/lib/elur/plugins.d.cts +48 -0
- package/dist/lib/elur/plugins.d.ts +48 -0
- package/dist/lib/elur/plugins.js +59 -0
- package/dist/lib/elur/plugins.js.map +1 -0
- package/dist/lib/elur/reactivity.cjs +2 -0
- package/dist/lib/elur/reactivity.cjs.map +1 -0
- package/dist/lib/elur/reactivity.d.cts +60 -0
- package/dist/lib/elur/reactivity.d.ts +60 -0
- package/dist/lib/elur/reactivity.js +188 -0
- package/dist/lib/elur/reactivity.js.map +1 -0
- package/dist/lib/elur/router.cjs +12 -0
- package/dist/lib/elur/router.cjs.map +1 -0
- package/dist/lib/elur/router.d.cts +137 -0
- package/dist/lib/elur/router.d.ts +137 -0
- package/dist/lib/elur/router.js +513 -0
- package/dist/lib/elur/router.js.map +1 -0
- package/dist/lib/elur/server/index.cjs +2 -0
- package/dist/lib/elur/server/index.cjs.map +1 -0
- package/dist/lib/elur/server/index.d.cts +44 -0
- package/dist/lib/elur/server/index.d.ts +44 -0
- package/dist/lib/elur/server/index.js +307 -0
- package/dist/lib/elur/server/index.js.map +1 -0
- package/dist/lib/elur/store.cjs +2 -0
- package/dist/lib/elur/store.cjs.map +1 -0
- package/dist/lib/elur/store.d.cts +137 -0
- package/dist/lib/elur/store.d.ts +137 -0
- package/dist/lib/elur/store.js +143 -0
- package/dist/lib/elur/store.js.map +1 -0
- package/dist/lib/elur/template/bindings.cjs +2 -0
- package/dist/lib/elur/template/bindings.cjs.map +1 -0
- package/dist/lib/elur/template/bindings.d.cts +40 -0
- package/dist/lib/elur/template/bindings.d.ts +40 -0
- package/dist/lib/elur/template/bindings.js +214 -0
- package/dist/lib/elur/template/bindings.js.map +1 -0
- package/dist/lib/elur/template/dom-write.cjs +2 -0
- package/dist/lib/elur/template/dom-write.cjs.map +1 -0
- package/dist/lib/elur/template/dom-write.d.cts +5 -0
- package/dist/lib/elur/template/dom-write.d.ts +5 -0
- package/dist/lib/elur/template/dom-write.js +16 -0
- package/dist/lib/elur/template/dom-write.js.map +1 -0
- package/dist/lib/elur/template/error-boundary.cjs +2 -0
- package/dist/lib/elur/template/error-boundary.cjs.map +1 -0
- package/dist/lib/elur/template/error-boundary.d.cts +7 -0
- package/dist/lib/elur/template/error-boundary.d.ts +7 -0
- package/dist/lib/elur/template/error-boundary.js +90 -0
- package/dist/lib/elur/template/error-boundary.js.map +1 -0
- package/dist/lib/elur/template/html.cjs +2 -0
- package/dist/lib/elur/template/html.cjs.map +1 -0
- package/dist/lib/elur/template/html.d.cts +8 -0
- package/dist/lib/elur/template/html.d.ts +8 -0
- package/dist/lib/elur/template/html.js +104 -0
- package/dist/lib/elur/template/html.js.map +1 -0
- package/dist/lib/elur/template/index.cjs +1 -0
- package/dist/lib/elur/template/index.d.cts +15 -0
- package/dist/lib/elur/template/index.d.ts +15 -0
- package/dist/lib/elur/template/index.js +13 -0
- package/dist/lib/elur/template/keyed-diff.cjs +2 -0
- package/dist/lib/elur/template/keyed-diff.cjs.map +1 -0
- package/dist/lib/elur/template/keyed-diff.d.cts +32 -0
- package/dist/lib/elur/template/keyed-diff.d.ts +32 -0
- package/dist/lib/elur/template/keyed-diff.js +100 -0
- package/dist/lib/elur/template/keyed-diff.js.map +1 -0
- package/dist/lib/elur/template/keyed.cjs +2 -0
- package/dist/lib/elur/template/keyed.cjs.map +1 -0
- package/dist/lib/elur/template/keyed.d.cts +27 -0
- package/dist/lib/elur/template/keyed.d.ts +27 -0
- package/dist/lib/elur/template/keyed.js +52 -0
- package/dist/lib/elur/template/keyed.js.map +1 -0
- package/dist/lib/elur/template/mount-helpers.cjs +2 -0
- package/dist/lib/elur/template/mount-helpers.cjs.map +1 -0
- package/dist/lib/elur/template/mount-helpers.d.cts +29 -0
- package/dist/lib/elur/template/mount-helpers.d.ts +29 -0
- package/dist/lib/elur/template/mount-helpers.js +132 -0
- package/dist/lib/elur/template/mount-helpers.js.map +1 -0
- package/dist/lib/elur/template/node-binding.cjs +2 -0
- package/dist/lib/elur/template/node-binding.cjs.map +1 -0
- package/dist/lib/elur/template/node-binding.d.cts +6 -0
- package/dist/lib/elur/template/node-binding.d.ts +6 -0
- package/dist/lib/elur/template/node-binding.js +95 -0
- package/dist/lib/elur/template/node-binding.js.map +1 -0
- package/dist/lib/elur/template/portal.cjs +2 -0
- package/dist/lib/elur/template/portal.cjs.map +1 -0
- package/dist/lib/elur/template/portal.d.cts +19 -0
- package/dist/lib/elur/template/portal.d.ts +19 -0
- package/dist/lib/elur/template/portal.js +49 -0
- package/dist/lib/elur/template/portal.js.map +1 -0
- package/dist/lib/elur/template/raw.cjs +2 -0
- package/dist/lib/elur/template/raw.cjs.map +1 -0
- package/dist/lib/elur/template/raw.d.cts +9 -0
- package/dist/lib/elur/template/raw.d.ts +9 -0
- package/dist/lib/elur/template/raw.js +29 -0
- package/dist/lib/elur/template/raw.js.map +1 -0
- package/dist/lib/elur/template/sanitize.cjs +2 -0
- package/dist/lib/elur/template/sanitize.cjs.map +1 -0
- package/dist/lib/elur/template/sanitize.d.cts +16 -0
- package/dist/lib/elur/template/sanitize.d.ts +16 -0
- package/dist/lib/elur/template/sanitize.js +29 -0
- package/dist/lib/elur/template/sanitize.js.map +1 -0
- package/dist/lib/elur/template/transitions.cjs +2 -0
- package/dist/lib/elur/template/transitions.cjs.map +1 -0
- package/dist/lib/elur/template/transitions.d.cts +43 -0
- package/dist/lib/elur/template/transitions.d.ts +43 -0
- package/dist/lib/elur/template/transitions.js +96 -0
- package/dist/lib/elur/template/transitions.js.map +1 -0
- package/dist/lib/elur/template/types.cjs +2 -0
- package/dist/lib/elur/template/types.cjs.map +1 -0
- package/dist/lib/elur/template/types.d.cts +114 -0
- package/dist/lib/elur/template/types.d.ts +114 -0
- package/dist/lib/elur/template/types.js +23 -0
- package/dist/lib/elur/template/types.js.map +1 -0
- package/dist/lib/elur.cjs +1 -0
- package/dist/lib/elur.js +18 -0
- package/dist/lib/form.cjs +2 -0
- package/dist/lib/form.js +315 -0
- package/dist/lib/hydrate.cjs +2 -0
- package/dist/lib/hydrate.js +410 -0
- package/dist/lib/index.cjs +1 -0
- package/dist/lib/index.d.cts +2 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +18 -0
- package/dist/lib/lifecycle.cjs +2 -0
- package/dist/lib/lifecycle.js +39 -0
- package/dist/lib/plugins.cjs +2 -0
- package/dist/lib/plugins.js +59 -0
- package/dist/lib/router.cjs +12 -0
- package/dist/lib/router.js +513 -0
- package/dist/lib/server.cjs +2 -0
- package/dist/lib/server.js +307 -0
- package/dist/lib/signals.cjs +2 -0
- package/dist/lib/signals.js +188 -0
- package/dist/lib/store.cjs +2 -0
- package/dist/lib/store.js +143 -0
- package/dist/lib/template.cjs +1 -0
- package/dist/lib/template.js +13 -0
- package/package.json +216 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { ELUR_RENDER_PROTOCOL as e, ELUR_TEMPLATE_DESCRIPTOR as t, isElurTemplate as n, isKeyedList as r } from "./elur/template/types.js";
|
|
2
|
+
import { isElurComponent as i } from "./lifecycle.js";
|
|
3
|
+
import { _popComponentContext as a, _pushComponentContext as o, _setContextScopeResolver as s } from "./context.js";
|
|
4
|
+
import { normalizeRepeatKey as c, serializeRepeatKey as l } from "./elur/template/keyed.js";
|
|
5
|
+
import { sanitizeUrl as u } from "./elur/template/sanitize.js";
|
|
6
|
+
import { AsyncLocalStorage as d } from "node:async_hooks";
|
|
7
|
+
//#region src/elur/server/index.ts
|
|
8
|
+
var f = n, p = r, m = new d();
|
|
9
|
+
s(() => m.getStore());
|
|
10
|
+
function h(e = {}) {
|
|
11
|
+
let t = new AbortController(), n = {
|
|
12
|
+
markers: e.markers === "hydration",
|
|
13
|
+
context: e.context,
|
|
14
|
+
onError: e.onError
|
|
15
|
+
}, r = (e) => Promise.resolve(m.run([], e));
|
|
16
|
+
return {
|
|
17
|
+
signal: t.signal,
|
|
18
|
+
async render(e, i) {
|
|
19
|
+
let a = {
|
|
20
|
+
...n,
|
|
21
|
+
markers: i?.markers ?? n.markers,
|
|
22
|
+
signal: t.signal
|
|
23
|
+
}, o = "";
|
|
24
|
+
return await r(() => (async () => {
|
|
25
|
+
for await (let t of y(e, a)) o += t.value;
|
|
26
|
+
})()), o;
|
|
27
|
+
},
|
|
28
|
+
renderToChunks(e, r) {
|
|
29
|
+
return g(e, {
|
|
30
|
+
...n,
|
|
31
|
+
markers: r?.markers ?? n.markers,
|
|
32
|
+
signal: t.signal
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
abort(e) {
|
|
36
|
+
t.abort(e);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function g(e, t) {
|
|
41
|
+
return { async *[Symbol.asyncIterator]() {
|
|
42
|
+
let n = [], r = [], i = !1, a, o = () => {
|
|
43
|
+
r.shift()?.();
|
|
44
|
+
}, s = m.run([], async () => {
|
|
45
|
+
try {
|
|
46
|
+
for await (let r of y(e, t)) n.push(r), o();
|
|
47
|
+
} catch (e) {
|
|
48
|
+
a = e;
|
|
49
|
+
} finally {
|
|
50
|
+
i = !0, o();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
for (;;) {
|
|
54
|
+
for (; n.length === 0 && !i;) await new Promise((e) => r.push(e));
|
|
55
|
+
if (n.length === 0) break;
|
|
56
|
+
let e = n.shift();
|
|
57
|
+
e && (yield e);
|
|
58
|
+
}
|
|
59
|
+
if (a) throw a;
|
|
60
|
+
yield {
|
|
61
|
+
type: "done",
|
|
62
|
+
value: "",
|
|
63
|
+
index: -1
|
|
64
|
+
}, await s;
|
|
65
|
+
} };
|
|
66
|
+
}
|
|
67
|
+
async function _(e, t = {}) {
|
|
68
|
+
let n = {
|
|
69
|
+
markers: t.markers === "hydration",
|
|
70
|
+
signal: t.signal,
|
|
71
|
+
context: t.context,
|
|
72
|
+
onError: t.onError
|
|
73
|
+
}, r = "";
|
|
74
|
+
return await Promise.resolve(m.run([], async () => {
|
|
75
|
+
for await (let t of y(e, n)) r += t.value;
|
|
76
|
+
})), r;
|
|
77
|
+
}
|
|
78
|
+
function v(e, t = {}) {
|
|
79
|
+
return g(e, {
|
|
80
|
+
markers: t.markers === "hydration",
|
|
81
|
+
signal: t.signal,
|
|
82
|
+
context: t.context,
|
|
83
|
+
onError: t.onError
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
async function* y(n, r) {
|
|
87
|
+
if (C(r), n instanceof Promise) {
|
|
88
|
+
yield* y(await n, r);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (!(n == null || n === !1 || n === !0)) {
|
|
92
|
+
if (typeof n == "string" || typeof n == "number" || typeof n == "bigint") {
|
|
93
|
+
yield {
|
|
94
|
+
type: "markup",
|
|
95
|
+
value: E(String(n)),
|
|
96
|
+
index: -1
|
|
97
|
+
};
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (Array.isArray(n)) {
|
|
101
|
+
let e = await Promise.all(n.map((e) => w(e)));
|
|
102
|
+
C(r);
|
|
103
|
+
for (let t of e) r.markers && (yield {
|
|
104
|
+
type: "markup",
|
|
105
|
+
value: "<!--elur-ai-->",
|
|
106
|
+
index: -1
|
|
107
|
+
}), yield* y(t, r), r.markers && (yield {
|
|
108
|
+
type: "markup",
|
|
109
|
+
value: "<!--elur-aiend-->",
|
|
110
|
+
index: -1
|
|
111
|
+
});
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if ((typeof n == "object" || typeof n == "function") && n !== null) {
|
|
115
|
+
let t = n[e];
|
|
116
|
+
if (t?.renderServer) {
|
|
117
|
+
let e = await t.renderServer({
|
|
118
|
+
markers: r.markers,
|
|
119
|
+
signal: r.signal,
|
|
120
|
+
context: r.context,
|
|
121
|
+
render: (e, t) => S(e, {
|
|
122
|
+
...r,
|
|
123
|
+
markers: t?.markers ?? r.markers
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
C(r), yield {
|
|
127
|
+
type: "markup",
|
|
128
|
+
value: e,
|
|
129
|
+
index: -1
|
|
130
|
+
};
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (i(n)) {
|
|
135
|
+
yield* b(n, r);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (p(n)) {
|
|
139
|
+
if (!r.markers) {
|
|
140
|
+
yield {
|
|
141
|
+
type: "markup",
|
|
142
|
+
value: (await Promise.all(n.items.map((e, t) => S(n.renderFn(e, t), r)))).join(""),
|
|
143
|
+
index: -1
|
|
144
|
+
};
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
let e = /* @__PURE__ */ new Set();
|
|
148
|
+
for (let t = 0; t < n.items.length; t++) {
|
|
149
|
+
let i = n.items[t], a = c(n.keyFn(i, t), t), o = l(a);
|
|
150
|
+
e.has(o) && console.warn(`[elur] repeat(): duplicate key "${a}" during server render. Keys must be unique; entries after the first will leak during hydration.`), e.add(o), yield {
|
|
151
|
+
type: "markup",
|
|
152
|
+
value: `<!--elur-ki:${o}-->`,
|
|
153
|
+
index: -1
|
|
154
|
+
}, yield* y(n.renderFn(i, t), r), yield {
|
|
155
|
+
type: "markup",
|
|
156
|
+
value: "<!--elur-ke-->",
|
|
157
|
+
index: -1
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (f(n)) {
|
|
163
|
+
let e = n[t];
|
|
164
|
+
if (!e) throw TypeError("[elur] Template does not support server rendering");
|
|
165
|
+
yield* x(e, r);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
yield {
|
|
169
|
+
type: "markup",
|
|
170
|
+
value: E(String(n)),
|
|
171
|
+
index: -1
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async function* b(e, t) {
|
|
176
|
+
o();
|
|
177
|
+
let n = {
|
|
178
|
+
index: -1,
|
|
179
|
+
context: "component",
|
|
180
|
+
cause: void 0,
|
|
181
|
+
component: e._debugName
|
|
182
|
+
};
|
|
183
|
+
try {
|
|
184
|
+
try {
|
|
185
|
+
e.onInit?.(), e.onServerRender?.();
|
|
186
|
+
} catch (t) {
|
|
187
|
+
if (e.onError) e.onError(t);
|
|
188
|
+
else throw t;
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
yield* y(e.render(), t);
|
|
192
|
+
} catch (t) {
|
|
193
|
+
if (e.onError) {
|
|
194
|
+
e.onError(t);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
throw t;
|
|
198
|
+
}
|
|
199
|
+
} catch (e) {
|
|
200
|
+
throw t.onError?.(e, {
|
|
201
|
+
...n,
|
|
202
|
+
cause: e
|
|
203
|
+
}), e;
|
|
204
|
+
} finally {
|
|
205
|
+
a();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
async function* x(e, t) {
|
|
209
|
+
let n = new Uint8Array(e.strings.length);
|
|
210
|
+
for (let r = 0; r < e.strings.length; r++) {
|
|
211
|
+
if (t.signal?.aborted) throw t.signal.reason ?? new DOMException("Render aborted", "AbortError");
|
|
212
|
+
let i = e.strings[r];
|
|
213
|
+
if (n[r] === 1 && (i[0] === "\"" || i[0] === "'") && (i = i.slice(1)), r >= e.contexts.length) {
|
|
214
|
+
yield {
|
|
215
|
+
type: "markup",
|
|
216
|
+
value: i,
|
|
217
|
+
index: r
|
|
218
|
+
};
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
let a = e.contexts[r], o = e.values[r];
|
|
222
|
+
if (a.type === "node") {
|
|
223
|
+
yield {
|
|
224
|
+
type: "markup",
|
|
225
|
+
value: i,
|
|
226
|
+
index: r
|
|
227
|
+
}, t.markers && (yield {
|
|
228
|
+
type: "boundary-start",
|
|
229
|
+
value: `<!--elur-${r}-->`,
|
|
230
|
+
index: r
|
|
231
|
+
});
|
|
232
|
+
try {
|
|
233
|
+
let e = await w(o);
|
|
234
|
+
C(t), yield* y(e, t);
|
|
235
|
+
} catch (e) {
|
|
236
|
+
throw t.onError?.(e, {
|
|
237
|
+
index: r,
|
|
238
|
+
context: "node",
|
|
239
|
+
cause: e
|
|
240
|
+
}), e;
|
|
241
|
+
}
|
|
242
|
+
t.markers && (yield {
|
|
243
|
+
type: "boundary-end",
|
|
244
|
+
value: `<!--elur-end-${r}-->`,
|
|
245
|
+
index: r
|
|
246
|
+
});
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
let s = T(a), c = i.slice(0, -s);
|
|
250
|
+
if (a.hadOpenQuote && (n[r + 1] = 1), a.type === "event") {
|
|
251
|
+
t.markers ? yield {
|
|
252
|
+
type: "markup",
|
|
253
|
+
value: `${c}${/\s$/.test(c) ? "" : " "}data-elur-e-${r}="${D(a.eventName)}"`,
|
|
254
|
+
index: r
|
|
255
|
+
} : yield {
|
|
256
|
+
type: "markup",
|
|
257
|
+
value: c.replace(/\s+$/, ""),
|
|
258
|
+
index: r
|
|
259
|
+
};
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
yield {
|
|
263
|
+
type: "markup",
|
|
264
|
+
value: c,
|
|
265
|
+
index: r
|
|
266
|
+
};
|
|
267
|
+
let l = await w(o);
|
|
268
|
+
if (C(t), a.attrName !== "ref" && l != null && l !== !1) {
|
|
269
|
+
let e = a.url ? u(String(l)) : String(l);
|
|
270
|
+
yield {
|
|
271
|
+
type: "markup",
|
|
272
|
+
value: `${/\s$/.test(c) ? "" : " "}${a.attrName}="${D(e)}"`,
|
|
273
|
+
index: r
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
t.markers && (yield {
|
|
277
|
+
type: "markup",
|
|
278
|
+
value: ` data-elur-a-${r}="${D(a.attrName)}"`,
|
|
279
|
+
index: r
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
async function S(e, t) {
|
|
284
|
+
let n = "";
|
|
285
|
+
for await (let r of y(e, t)) n += r.value;
|
|
286
|
+
return n;
|
|
287
|
+
}
|
|
288
|
+
function C(e) {
|
|
289
|
+
if (e.signal?.aborted) throw e.signal.reason ?? new DOMException("Render aborted", "AbortError");
|
|
290
|
+
}
|
|
291
|
+
async function w(e) {
|
|
292
|
+
let t = typeof e == "function" ? e() : e;
|
|
293
|
+
return t instanceof Promise ? await t : t;
|
|
294
|
+
}
|
|
295
|
+
function T(e) {
|
|
296
|
+
return e.type === "event" ? `@${e.modifiers.length ? `${e.eventName}.${e.modifiers.join(".")}` : e.eventName}=`.length + +!!e.hadOpenQuote : `${e.attrName}=`.length + +!!e.hadOpenQuote;
|
|
297
|
+
}
|
|
298
|
+
function E(e) {
|
|
299
|
+
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
300
|
+
}
|
|
301
|
+
function D(e) {
|
|
302
|
+
return E(e).replace(/"/g, """);
|
|
303
|
+
}
|
|
304
|
+
//#endregion
|
|
305
|
+
export { h as createServerRenderScope, v as renderToChunks, _ as renderToString };
|
|
306
|
+
|
|
307
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(){return{ctxPool:[],ctxStack:[],activeEffect:null,activeDeps:null,activeErrorHandler:null,errorHandlerStack:[],batchLevel:0,pendingEffectsSet:new Set,pendingEffectsArr:[],effectDepth:0,notifyBuf:[],notifyBase:0,signalDebugHooks:null}}var t=Symbol.for(`elur/reactivity-state`),n=globalThis,r=(()=>{let r=n[t];if(r)return r;let i=e();return n[t]=i,i})();function i(e){r.errorHandlerStack.push(r.activeErrorHandler),r.activeErrorHandler=e}function a(){r.activeErrorHandler=r.errorHandlerStack.pop()??null}var o=100,s=64,c=16,l=32;function u(e){r.signalDebugHooks=e}function d(){return r.notifyBuf.length}var f=class{_value;_subs=new Set;constructor(e){this._value=e,r.signalDebugHooks?.onCreate?.(this,e)}get value(){return r.activeEffect&&(this._subs.add(r.activeEffect),r.activeDeps?.add(this)),this._value}set value(e){Object.is(this._value,e)||(this._value=e,r.signalDebugHooks?.onWrite?.(this,e),this._notify())}update(e){this.value=e(this._value)}peek(){return this._value}_removeSub(e){this._subs.delete(e)}_notify(){if(r.batchLevel>0){for(let e of this._subs)r.pendingEffectsSet.has(e)||(r.pendingEffectsSet.add(e),r.pendingEffectsArr.push(e));return}let e=r.notifyBase,t=0;for(let n of this._subs)r.notifyBuf[e+ t++]=n;r.notifyBase=e+t;try{for(let n=0;n<t;n++){let t=r.notifyBuf[e+n];r.notifyBuf[e+n]=null,t?.()}}finally{r.notifyBase=e,e===0&&r.notifyBuf.length>s&&t<c&&(r.notifyBuf.length=l)}}dispose(){this._subs.clear()}};function p(e){return new f(e)}function m(e){let t=!1,n,i=new Set,a=new Set,s=r.activeErrorHandler,c=()=>{if(t)return;typeof n==`function`&&n();let l=i;i=a,a=l,a.clear();let u=r.ctxPool.length>0?r.ctxPool.pop():{effect:null,deps:null};if(u.effect=r.activeEffect,u.deps=r.activeDeps,r.ctxStack.push(u),r.activeEffect=c,r.activeDeps=a,r.effectDepth++,r.effectDepth>o){r.effectDepth=0;let e=r.ctxStack.pop();throw r.activeEffect=e.effect,r.activeDeps=e.deps,e.effect=null,e.deps=null,r.ctxPool.push(e),Error(`[elur] Maximum effect re-execution depth exceeded (possible infinite loop).`)}try{n=e()}catch(e){if(s)s(e);else throw e}finally{r.effectDepth--;let e=r.ctxStack.pop();r.activeEffect=e.effect,r.activeDeps=e.deps,e.effect=null,e.deps=null,r.ctxPool.push(e);for(let e of i)a.has(e)||e._removeSub(c)}};return c(),()=>{t=!0,typeof n==`function`&&n();for(let e of a)e._removeSub(c);a.clear(),i.clear()}}var h=Symbol(`elur-computed-uninitialized`);function g(e,t=Object.is){let n=new f(h),r=null,i=!1,a=!1,o=()=>{i||a||(i=!0,v(()=>{r=m(()=>{let r=e(),i=n.peek();(i===h||!t(r,i))&&(n.value=r)})}))},s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(n),`value`);if(!s?.get||!s?.set)throw Error(`[elur] Internal error: Signal.value descriptor not found.`);Object.defineProperty(n,`value`,{get(){return o(),s.get.call(this)},set(e){s.set.call(this,e)},configurable:!0});let c=n.dispose;return n.dispose=()=>{a=!0,r?.(),r=null,c.call(n)},n}function _(e){r.batchLevel++;try{e()}finally{if(r.batchLevel--,r.batchLevel===0&&r.pendingEffectsArr.length>0){let e=r.pendingEffectsArr.length;for(let t=0;t<e;t++)r.pendingEffectsArr[t]();r.pendingEffectsArr.length=0,r.pendingEffectsSet.clear()}}}function v(e){let t=r.activeEffect,n=r.activeDeps;r.activeEffect=null,r.activeDeps=null;try{return e()}finally{r.activeEffect=t,r.activeDeps=n}}function y(e,t,n={}){let{immediate:r=!1,once:i=!1}=n,a=e instanceof f?()=>e.value:e,o,s=!0,c=!1,l=m(()=>{let e=a();if(s){if(s=!1,r&&!c){let n=e;v(()=>t(n,void 0)),i&&(c=!0,Promise.resolve().then(l))}o=e;return}if(!c){let n=e,r=o;o=e,v(()=>t(n,r)),i&&(c=!0,Promise.resolve().then(l))}});return()=>{c=!0,l()}}function b(e){return e?Promise.resolve().then(e):Promise.resolve()}exports.Signal=f,exports._getNotifyBufSize=d,exports._popErrorHandler=a,exports._pushErrorHandler=i,exports._setSignalDebugHooks=u,exports.batch=_,exports.computed=g,exports.effect=m,exports.nextTick=b,exports.signal=p,exports.untrack=v,exports.watch=y;
|
|
2
|
+
//# sourceMappingURL=signals.cjs.map
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
//#region src/elur/reactivity.ts
|
|
2
|
+
function e() {
|
|
3
|
+
return {
|
|
4
|
+
ctxPool: [],
|
|
5
|
+
ctxStack: [],
|
|
6
|
+
activeEffect: null,
|
|
7
|
+
activeDeps: null,
|
|
8
|
+
activeErrorHandler: null,
|
|
9
|
+
errorHandlerStack: [],
|
|
10
|
+
batchLevel: 0,
|
|
11
|
+
pendingEffectsSet: /* @__PURE__ */ new Set(),
|
|
12
|
+
pendingEffectsArr: [],
|
|
13
|
+
effectDepth: 0,
|
|
14
|
+
notifyBuf: [],
|
|
15
|
+
notifyBase: 0,
|
|
16
|
+
signalDebugHooks: null
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var t = Symbol.for("elur/reactivity-state"), n = globalThis, r = (() => {
|
|
20
|
+
let r = n[t];
|
|
21
|
+
if (r) return r;
|
|
22
|
+
let i = e();
|
|
23
|
+
return n[t] = i, i;
|
|
24
|
+
})();
|
|
25
|
+
function i(e) {
|
|
26
|
+
r.errorHandlerStack.push(r.activeErrorHandler), r.activeErrorHandler = e;
|
|
27
|
+
}
|
|
28
|
+
function a() {
|
|
29
|
+
r.activeErrorHandler = r.errorHandlerStack.pop() ?? null;
|
|
30
|
+
}
|
|
31
|
+
var o = 100, s = 64, c = 16, l = 32;
|
|
32
|
+
function u(e) {
|
|
33
|
+
r.signalDebugHooks = e;
|
|
34
|
+
}
|
|
35
|
+
function d() {
|
|
36
|
+
return r.notifyBuf.length;
|
|
37
|
+
}
|
|
38
|
+
var f = class {
|
|
39
|
+
_value;
|
|
40
|
+
_subs = /* @__PURE__ */ new Set();
|
|
41
|
+
constructor(e) {
|
|
42
|
+
this._value = e, r.signalDebugHooks?.onCreate?.(this, e);
|
|
43
|
+
}
|
|
44
|
+
get value() {
|
|
45
|
+
return r.activeEffect && (this._subs.add(r.activeEffect), r.activeDeps?.add(this)), this._value;
|
|
46
|
+
}
|
|
47
|
+
set value(e) {
|
|
48
|
+
Object.is(this._value, e) || (this._value = e, r.signalDebugHooks?.onWrite?.(this, e), this._notify());
|
|
49
|
+
}
|
|
50
|
+
update(e) {
|
|
51
|
+
this.value = e(this._value);
|
|
52
|
+
}
|
|
53
|
+
peek() {
|
|
54
|
+
return this._value;
|
|
55
|
+
}
|
|
56
|
+
_removeSub(e) {
|
|
57
|
+
this._subs.delete(e);
|
|
58
|
+
}
|
|
59
|
+
_notify() {
|
|
60
|
+
if (r.batchLevel > 0) {
|
|
61
|
+
for (let e of this._subs) r.pendingEffectsSet.has(e) || (r.pendingEffectsSet.add(e), r.pendingEffectsArr.push(e));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
let e = r.notifyBase, t = 0;
|
|
65
|
+
for (let n of this._subs) r.notifyBuf[e + t++] = n;
|
|
66
|
+
r.notifyBase = e + t;
|
|
67
|
+
try {
|
|
68
|
+
for (let n = 0; n < t; n++) {
|
|
69
|
+
let t = r.notifyBuf[e + n];
|
|
70
|
+
r.notifyBuf[e + n] = null, t?.();
|
|
71
|
+
}
|
|
72
|
+
} finally {
|
|
73
|
+
r.notifyBase = e, e === 0 && r.notifyBuf.length > s && t < c && (r.notifyBuf.length = l);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
dispose() {
|
|
77
|
+
this._subs.clear();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
function p(e) {
|
|
81
|
+
return new f(e);
|
|
82
|
+
}
|
|
83
|
+
function m(e) {
|
|
84
|
+
let t = !1, n, i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), s = r.activeErrorHandler, c = () => {
|
|
85
|
+
if (t) return;
|
|
86
|
+
typeof n == "function" && n();
|
|
87
|
+
let l = i;
|
|
88
|
+
i = a, a = l, a.clear();
|
|
89
|
+
let u = r.ctxPool.length > 0 ? r.ctxPool.pop() : {
|
|
90
|
+
effect: null,
|
|
91
|
+
deps: null
|
|
92
|
+
};
|
|
93
|
+
if (u.effect = r.activeEffect, u.deps = r.activeDeps, r.ctxStack.push(u), r.activeEffect = c, r.activeDeps = a, r.effectDepth++, r.effectDepth > o) {
|
|
94
|
+
r.effectDepth = 0;
|
|
95
|
+
let e = r.ctxStack.pop();
|
|
96
|
+
throw r.activeEffect = e.effect, r.activeDeps = e.deps, e.effect = null, e.deps = null, r.ctxPool.push(e), Error("[elur] Maximum effect re-execution depth exceeded (possible infinite loop).");
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
n = e();
|
|
100
|
+
} catch (e) {
|
|
101
|
+
if (s) s(e);
|
|
102
|
+
else throw e;
|
|
103
|
+
} finally {
|
|
104
|
+
r.effectDepth--;
|
|
105
|
+
let e = r.ctxStack.pop();
|
|
106
|
+
r.activeEffect = e.effect, r.activeDeps = e.deps, e.effect = null, e.deps = null, r.ctxPool.push(e);
|
|
107
|
+
for (let e of i) a.has(e) || e._removeSub(c);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
return c(), () => {
|
|
111
|
+
t = !0, typeof n == "function" && n();
|
|
112
|
+
for (let e of a) e._removeSub(c);
|
|
113
|
+
a.clear(), i.clear();
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
var h = Symbol("elur-computed-uninitialized");
|
|
117
|
+
function g(e, t = Object.is) {
|
|
118
|
+
let n = new f(h), r = null, i = !1, a = !1, o = () => {
|
|
119
|
+
i || a || (i = !0, v(() => {
|
|
120
|
+
r = m(() => {
|
|
121
|
+
let r = e(), i = n.peek();
|
|
122
|
+
(i === h || !t(r, i)) && (n.value = r);
|
|
123
|
+
});
|
|
124
|
+
}));
|
|
125
|
+
}, s = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(n), "value");
|
|
126
|
+
if (!s?.get || !s?.set) throw Error("[elur] Internal error: Signal.value descriptor not found.");
|
|
127
|
+
Object.defineProperty(n, "value", {
|
|
128
|
+
get() {
|
|
129
|
+
return o(), s.get.call(this);
|
|
130
|
+
},
|
|
131
|
+
set(e) {
|
|
132
|
+
s.set.call(this, e);
|
|
133
|
+
},
|
|
134
|
+
configurable: !0
|
|
135
|
+
});
|
|
136
|
+
let c = n.dispose;
|
|
137
|
+
return n.dispose = () => {
|
|
138
|
+
a = !0, r?.(), r = null, c.call(n);
|
|
139
|
+
}, n;
|
|
140
|
+
}
|
|
141
|
+
function _(e) {
|
|
142
|
+
r.batchLevel++;
|
|
143
|
+
try {
|
|
144
|
+
e();
|
|
145
|
+
} finally {
|
|
146
|
+
if (r.batchLevel--, r.batchLevel === 0 && r.pendingEffectsArr.length > 0) {
|
|
147
|
+
let e = r.pendingEffectsArr.length;
|
|
148
|
+
for (let t = 0; t < e; t++) r.pendingEffectsArr[t]();
|
|
149
|
+
r.pendingEffectsArr.length = 0, r.pendingEffectsSet.clear();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function v(e) {
|
|
154
|
+
let t = r.activeEffect, n = r.activeDeps;
|
|
155
|
+
r.activeEffect = null, r.activeDeps = null;
|
|
156
|
+
try {
|
|
157
|
+
return e();
|
|
158
|
+
} finally {
|
|
159
|
+
r.activeEffect = t, r.activeDeps = n;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function y(e, t, n = {}) {
|
|
163
|
+
let { immediate: r = !1, once: i = !1 } = n, a = e instanceof f ? () => e.value : e, o, s = !0, c = !1, l = m(() => {
|
|
164
|
+
let e = a();
|
|
165
|
+
if (s) {
|
|
166
|
+
if (s = !1, r && !c) {
|
|
167
|
+
let n = e;
|
|
168
|
+
v(() => t(n, void 0)), i && (c = !0, Promise.resolve().then(l));
|
|
169
|
+
}
|
|
170
|
+
o = e;
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (!c) {
|
|
174
|
+
let n = e, r = o;
|
|
175
|
+
o = e, v(() => t(n, r)), i && (c = !0, Promise.resolve().then(l));
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
return () => {
|
|
179
|
+
c = !0, l();
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
function b(e) {
|
|
183
|
+
return e ? Promise.resolve().then(e) : Promise.resolve();
|
|
184
|
+
}
|
|
185
|
+
//#endregion
|
|
186
|
+
export { f as Signal, d as _getNotifyBufSize, a as _popErrorHandler, i as _pushErrorHandler, u as _setSignalDebugHooks, _ as batch, g as computed, m as effect, b as nextTick, p as signal, v as untrack, y as watch };
|
|
187
|
+
|
|
188
|
+
//# sourceMappingURL=signals.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./signals.cjs`);var t=class extends e.Signal{label;constructor(e,t=`ReadonlySignal`){super(e.peek()),this.label=t,Object.defineProperty(this,`value`,{get:()=>e.value,set:()=>{throw Error(`[elur] "${this.label}" is read-only.`)},configurable:!1}),this.update=()=>{throw Error(`[elur] "${this.label}" is read-only.`)},this.dispose=()=>{throw Error(`[elur] Cannot dispose "${this.label}" directly.`)}}},n=new Set([`$id`,`$state`,`$stateSignal`,`$snapshot`,`$reset`,`$patch`,`$watch`,`$dispose`]);function r(e){if(e===`__proto__`||e===`constructor`||e===`prototype`)throw Error(`[elur] Store key "${e}" is not allowed for security reasons.`);if(n.has(e))throw Error(`[elur] Store key "${e}" is reserved.`)}function i(e,t){return n.has(e)?(console.warn(`[elur] Store ${t} "${e}" is reserved and will be ignored.`),!1):!0}function a(e,n){return new t(e,n)}function o(t,o){let{name:s=`store`,actions:c,getters:l,plugins:u=[],serialize:d}=o??{},f=Object.keys(t),p={};for(let n of f)r(n),p[n]=e.signal(t[n]);let m=p,h=e.computed(()=>{let e={};for(let t of f)e[t]=p[t].value;return e}),g=a(h,`store "${s}".$stateSignal`),_;try{_=d?d(t):structuredClone(t)}catch(e){throw Error(`[elur] Store "${s}" initialState contains non-serializable data (functions, DOM nodes, Symbols, or WeakRefs). Provide a custom \`serialize\` option or remove these before creating the store. Original error: ${e}`)}let v=[];function y(){let t=x();for(let e of v)e(t,t);e.batch(()=>{for(let e of f)p[e].value=_[e]})}function b(t){let n=t,r=x();for(let e of v){let t=e(n,r);t!==void 0&&(n=t)}e.batch(()=>{for(let e of Object.keys(n))Object.prototype.hasOwnProperty.call(p,e)&&(p[e].value=n[e])})}function x(){let e={};for(let t of f)e[t]=p[t].peek();return e}function S(t,n){return e.watch(h,t,n)}let C=Object.assign(Object.create(null),m,{$reset:y,$patch:b,$watch:S,$snapshot:x});Object.defineProperty(C,`$id`,{value:s,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(C,`$state`,{get(){return h.value},enumerable:!0,configurable:!1}),Object.defineProperty(C,`$stateSignal`,{value:g,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(C,`_guardFns`,{value:v,writable:!1,enumerable:!1,configurable:!1});let w=new Set([...f,...Array.from(n)]);if(c){let e=c(m);for(let t of Object.keys(e))if(i(t,`action`)){if(w.has(t)){console.warn(`[elur] Store "${s}": action "${t}" collides with an existing signal or getter and will be ignored.`);continue}w.add(t),C[t]=e[t]}}if(l){let t=l(m);for(let n of Object.keys(t)){if(!i(n,`getter`))continue;if(w.has(n)){console.warn(`[elur] Store "${s}": getter "${n}" collides with an existing signal or action and will be ignored.`);continue}let r=t[n];if(!(r instanceof e.Signal))throw TypeError(`[elur] Store "${s}": getter "${n}" must return a Signal (wrap it with computed()). Got: ${typeof r}`);w.add(n),C[n]=a(r,`getter "${n}" in store "${s}"`)}}let T=[()=>h.dispose()];for(let e of u)try{let t=e(C);typeof t==`function`&&T.push(t)}catch(e){console.error(`[elur] Plugin initialization failed for store "${s}":`,e)}return C.$dispose=()=>{for(let e of T)e()},C}exports.ReadonlySignal=t,exports.createStore=o;
|
|
2
|
+
//# sourceMappingURL=store.cjs.map
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Signal as e, batch as t, computed as n, signal as r, watch as i } from "./signals.js";
|
|
2
|
+
//#region src/elur/store.ts
|
|
3
|
+
var a = class extends e {
|
|
4
|
+
label;
|
|
5
|
+
constructor(e, t = "ReadonlySignal") {
|
|
6
|
+
super(e.peek()), this.label = t, Object.defineProperty(this, "value", {
|
|
7
|
+
get: () => e.value,
|
|
8
|
+
set: () => {
|
|
9
|
+
throw Error(`[elur] "${this.label}" is read-only.`);
|
|
10
|
+
},
|
|
11
|
+
configurable: !1
|
|
12
|
+
}), this.update = () => {
|
|
13
|
+
throw Error(`[elur] "${this.label}" is read-only.`);
|
|
14
|
+
}, this.dispose = () => {
|
|
15
|
+
throw Error(`[elur] Cannot dispose "${this.label}" directly.`);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}, o = new Set([
|
|
19
|
+
"$id",
|
|
20
|
+
"$state",
|
|
21
|
+
"$stateSignal",
|
|
22
|
+
"$snapshot",
|
|
23
|
+
"$reset",
|
|
24
|
+
"$patch",
|
|
25
|
+
"$watch",
|
|
26
|
+
"$dispose"
|
|
27
|
+
]);
|
|
28
|
+
function s(e) {
|
|
29
|
+
if (e === "__proto__" || e === "constructor" || e === "prototype") throw Error(`[elur] Store key "${e}" is not allowed for security reasons.`);
|
|
30
|
+
if (o.has(e)) throw Error(`[elur] Store key "${e}" is reserved.`);
|
|
31
|
+
}
|
|
32
|
+
function c(e, t) {
|
|
33
|
+
return o.has(e) ? (console.warn(`[elur] Store ${t} "${e}" is reserved and will be ignored.`), !1) : !0;
|
|
34
|
+
}
|
|
35
|
+
function l(e, t) {
|
|
36
|
+
return new a(e, t);
|
|
37
|
+
}
|
|
38
|
+
function u(a, u) {
|
|
39
|
+
let { name: d = "store", actions: f, getters: p, plugins: m = [], serialize: h } = u ?? {}, g = Object.keys(a), _ = {};
|
|
40
|
+
for (let e of g) s(e), _[e] = r(a[e]);
|
|
41
|
+
let v = _, y = n(() => {
|
|
42
|
+
let e = {};
|
|
43
|
+
for (let t of g) e[t] = _[t].value;
|
|
44
|
+
return e;
|
|
45
|
+
}), b = l(y, `store "${d}".$stateSignal`), x;
|
|
46
|
+
try {
|
|
47
|
+
x = h ? h(a) : structuredClone(a);
|
|
48
|
+
} catch (e) {
|
|
49
|
+
throw Error(`[elur] Store "${d}" initialState contains non-serializable data (functions, DOM nodes, Symbols, or WeakRefs). Provide a custom \`serialize\` option or remove these before creating the store. Original error: ${e}`);
|
|
50
|
+
}
|
|
51
|
+
let S = [];
|
|
52
|
+
function C() {
|
|
53
|
+
let e = T();
|
|
54
|
+
for (let t of S) t(e, e);
|
|
55
|
+
t(() => {
|
|
56
|
+
for (let e of g) _[e].value = x[e];
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function w(e) {
|
|
60
|
+
let n = e, r = T();
|
|
61
|
+
for (let e of S) {
|
|
62
|
+
let t = e(n, r);
|
|
63
|
+
t !== void 0 && (n = t);
|
|
64
|
+
}
|
|
65
|
+
t(() => {
|
|
66
|
+
for (let e of Object.keys(n)) Object.prototype.hasOwnProperty.call(_, e) && (_[e].value = n[e]);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function T() {
|
|
70
|
+
let e = {};
|
|
71
|
+
for (let t of g) e[t] = _[t].peek();
|
|
72
|
+
return e;
|
|
73
|
+
}
|
|
74
|
+
function E(e, t) {
|
|
75
|
+
return i(y, e, t);
|
|
76
|
+
}
|
|
77
|
+
let D = Object.assign(Object.create(null), v, {
|
|
78
|
+
$reset: C,
|
|
79
|
+
$patch: w,
|
|
80
|
+
$watch: E,
|
|
81
|
+
$snapshot: T
|
|
82
|
+
});
|
|
83
|
+
Object.defineProperty(D, "$id", {
|
|
84
|
+
value: d,
|
|
85
|
+
writable: !1,
|
|
86
|
+
enumerable: !1,
|
|
87
|
+
configurable: !1
|
|
88
|
+
}), Object.defineProperty(D, "$state", {
|
|
89
|
+
get() {
|
|
90
|
+
return y.value;
|
|
91
|
+
},
|
|
92
|
+
enumerable: !0,
|
|
93
|
+
configurable: !1
|
|
94
|
+
}), Object.defineProperty(D, "$stateSignal", {
|
|
95
|
+
value: b,
|
|
96
|
+
writable: !1,
|
|
97
|
+
enumerable: !1,
|
|
98
|
+
configurable: !1
|
|
99
|
+
}), Object.defineProperty(D, "_guardFns", {
|
|
100
|
+
value: S,
|
|
101
|
+
writable: !1,
|
|
102
|
+
enumerable: !1,
|
|
103
|
+
configurable: !1
|
|
104
|
+
});
|
|
105
|
+
let O = new Set([...g, ...Array.from(o)]);
|
|
106
|
+
if (f) {
|
|
107
|
+
let e = f(v);
|
|
108
|
+
for (let t of Object.keys(e)) if (c(t, "action")) {
|
|
109
|
+
if (O.has(t)) {
|
|
110
|
+
console.warn(`[elur] Store "${d}": action "${t}" collides with an existing signal or getter and will be ignored.`);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
O.add(t), D[t] = e[t];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (p) {
|
|
117
|
+
let t = p(v);
|
|
118
|
+
for (let n of Object.keys(t)) {
|
|
119
|
+
if (!c(n, "getter")) continue;
|
|
120
|
+
if (O.has(n)) {
|
|
121
|
+
console.warn(`[elur] Store "${d}": getter "${n}" collides with an existing signal or action and will be ignored.`);
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
let r = t[n];
|
|
125
|
+
if (!(r instanceof e)) throw TypeError(`[elur] Store "${d}": getter "${n}" must return a Signal (wrap it with computed()). Got: ${typeof r}`);
|
|
126
|
+
O.add(n), D[n] = l(r, `getter "${n}" in store "${d}"`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
let k = [() => y.dispose()];
|
|
130
|
+
for (let e of m) try {
|
|
131
|
+
let t = e(D);
|
|
132
|
+
typeof t == "function" && k.push(t);
|
|
133
|
+
} catch (e) {
|
|
134
|
+
console.error(`[elur] Plugin initialization failed for store "${d}":`, e);
|
|
135
|
+
}
|
|
136
|
+
return D.$dispose = () => {
|
|
137
|
+
for (let e of k) e();
|
|
138
|
+
}, D;
|
|
139
|
+
}
|
|
140
|
+
//#endregion
|
|
141
|
+
export { a as ReadonlySignal, u as createStore };
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./elur/template/types.cjs`),t=require(`./elur/template/keyed.cjs`),n=require(`./elur/template/keyed-diff.cjs`),r=require(`./elur/template/dom-write.cjs`),i=require(`./elur/template/node-binding.cjs`),a=require(`./elur/template/sanitize.cjs`),o=require(`./elur/template/bindings.cjs`),s=require(`./elur/template/html.cjs`),c=require(`./elur/template/raw.cjs`),l=require(`./elur/template/transitions.cjs`),u=require(`./elur/template/portal.cjs`),d=require(`./elur/template/error-boundary.cjs`);exports.COMMENT=e.COMMENT,exports.ELUR_RENDER_PROTOCOL=e.ELUR_RENDER_PROTOCOL,exports.ELUR_TEMPLATE_DESCRIPTOR=e.ELUR_TEMPLATE_DESCRIPTOR,exports._activateBindingsWithNodes=o._activateBindingsWithNodes,exports._activateDelegatedEvent=o.activateDelegatedEvent,exports._activateNodeBinding=i.activateNodeBinding,exports._createKeyedMount=n.createKeyedMount,exports._ensureDelegatedEvent=o._ensureDelegatedEvent,exports._getKeyedSequence=t.getSequence,exports._queueDOMWrite=r.queueDOMWrite,exports._reconcileKeyedList=n.reconcileKeyedList,exports._setDelegatedEvent=o._setDelegatedEvent,exports.buildHTML=s.buildHTML,exports.createErrorBoundary=d.createErrorBoundary,exports.createPortalOutlet=u.createPortalOutlet,exports.html=s.html,exports.injectOutlet=u.injectOutlet,exports.isElurTemplate=e.isElurTemplate,exports.isExecutableAttrName=a.isExecutableAttrName,exports.isKeyedList=e.isKeyedList,exports.isUrlAttrName=a.isUrlAttrName,exports.portal=u.portal,exports.portalOutlet=u.portalOutlet,exports.provideOutlet=u.provideOutlet,exports.raw=c.raw,exports.ref=e.ref,exports.repeat=t.repeat,exports.sanitizeUrl=a.sanitizeUrl,exports.showWhen=o.showWhen,exports.templateFeatures=e.templateFeatures,exports.transition=l.transition;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { COMMENT as e, ELUR_RENDER_PROTOCOL as t, ELUR_TEMPLATE_DESCRIPTOR as n, isElurTemplate as r, isKeyedList as i, ref as a, templateFeatures as o } from "./elur/template/types.js";
|
|
2
|
+
import { getSequence as s, repeat as c } from "./elur/template/keyed.js";
|
|
3
|
+
import { createKeyedMount as l, reconcileKeyedList as u } from "./elur/template/keyed-diff.js";
|
|
4
|
+
import { queueDOMWrite as d } from "./elur/template/dom-write.js";
|
|
5
|
+
import { activateNodeBinding as f } from "./elur/template/node-binding.js";
|
|
6
|
+
import { isExecutableAttrName as p, isUrlAttrName as m, sanitizeUrl as h } from "./elur/template/sanitize.js";
|
|
7
|
+
import { _activateBindingsWithNodes as g, _ensureDelegatedEvent as _, _setDelegatedEvent as v, activateDelegatedEvent as y, showWhen as b } from "./elur/template/bindings.js";
|
|
8
|
+
import { buildHTML as x, html as S } from "./elur/template/html.js";
|
|
9
|
+
import { raw as C } from "./elur/template/raw.js";
|
|
10
|
+
import { transition as w } from "./elur/template/transitions.js";
|
|
11
|
+
import { createPortalOutlet as T, injectOutlet as E, portal as D, portalOutlet as O, provideOutlet as k } from "./elur/template/portal.js";
|
|
12
|
+
import { createErrorBoundary as A } from "./elur/template/error-boundary.js";
|
|
13
|
+
export { e as COMMENT, t as ELUR_RENDER_PROTOCOL, n as ELUR_TEMPLATE_DESCRIPTOR, g as _activateBindingsWithNodes, y as _activateDelegatedEvent, f as _activateNodeBinding, l as _createKeyedMount, _ as _ensureDelegatedEvent, s as _getKeyedSequence, d as _queueDOMWrite, u as _reconcileKeyedList, v as _setDelegatedEvent, x as buildHTML, A as createErrorBoundary, T as createPortalOutlet, S as html, E as injectOutlet, r as isElurTemplate, p as isExecutableAttrName, i as isKeyedList, m as isUrlAttrName, D as portal, O as portalOutlet, k as provideOutlet, C as raw, a as ref, c as repeat, h as sanitizeUrl, b as showWhen, o as templateFeatures, w as transition };
|