@manyducks.co/dolla 2.0.0-alpha.8 → 2.0.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/README.md +222 -512
- package/dist/core/app.d.ts +24 -0
- package/dist/core/context.d.ts +147 -0
- package/dist/core/env.d.ts +3 -0
- package/dist/core/hooks.d.ts +70 -0
- package/dist/core/hooks.test.d.ts +1 -0
- package/dist/core/index.d.ts +25 -0
- package/dist/core/logger.d.ts +42 -0
- package/dist/core/logger.test.d.ts +0 -0
- package/dist/core/markup.d.ts +82 -0
- package/dist/core/markup.test.d.ts +0 -0
- package/dist/core/nodes/_markup.d.ts +36 -0
- package/dist/core/nodes/dom.d.ts +13 -0
- package/dist/core/nodes/dynamic.d.ts +22 -0
- package/dist/core/nodes/element.d.ts +27 -0
- package/dist/core/nodes/portal.d.ts +18 -0
- package/dist/core/nodes/repeat.d.ts +27 -0
- package/dist/core/nodes/view.d.ts +25 -0
- package/dist/core/ref.d.ts +19 -0
- package/dist/core/ref.test.d.ts +1 -0
- package/dist/core/signals.d.ts +100 -0
- package/dist/core/signals.test.d.ts +1 -0
- package/dist/{views → core/views}/default-crash-view.d.ts +11 -4
- package/dist/core/views/for.d.ts +21 -0
- package/dist/core/views/fragment.d.ts +7 -0
- package/dist/core/views/portal.d.ts +16 -0
- package/dist/core/views/show.d.ts +25 -0
- package/dist/fragment-BahD_BJA.js +7 -0
- package/dist/fragment-BahD_BJA.js.map +1 -0
- package/dist/{modules/http.d.ts → http/index.d.ts} +3 -5
- package/dist/http.js +150 -0
- package/dist/http.js.map +1 -0
- package/dist/i18n/index.d.ts +134 -0
- package/dist/i18n.js +309 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index-DRJlxs-Q.js +535 -0
- package/dist/index-DRJlxs-Q.js.map +1 -0
- package/dist/index.js +160 -1386
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.d.ts +3 -2
- package/dist/jsx-dev-runtime.js +5 -12
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-runtime.d.ts +4 -3
- package/dist/jsx-runtime.js +9 -15
- package/dist/jsx-runtime.js.map +1 -1
- package/dist/logger-Aqi9m1CF.js +565 -0
- package/dist/logger-Aqi9m1CF.js.map +1 -0
- package/dist/markup-8jNhoqDe.js +1089 -0
- package/dist/markup-8jNhoqDe.js.map +1 -0
- package/dist/router/hooks.d.ts +2 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/router.d.ts +166 -0
- package/dist/{routing.d.ts → router/router.utils.d.ts} +17 -3
- package/dist/router/router.utils.test.d.ts +1 -0
- package/dist/router.js +6 -0
- package/dist/router.js.map +1 -0
- package/dist/typeChecking-5kmX0ulW.js +65 -0
- package/dist/typeChecking-5kmX0ulW.js.map +1 -0
- package/dist/typeChecking.d.ts +2 -98
- package/dist/typeChecking.test.d.ts +1 -0
- package/dist/types.d.ts +97 -25
- package/dist/utils.d.ts +25 -3
- package/docs/buildless.md +132 -0
- package/docs/components.md +238 -0
- package/docs/hooks.md +356 -0
- package/docs/http.md +178 -0
- package/docs/i18n.md +220 -0
- package/docs/index.md +10 -0
- package/docs/markup.md +136 -0
- package/docs/mixins.md +176 -0
- package/docs/ref.md +77 -0
- package/docs/router.md +281 -0
- package/docs/setup.md +137 -0
- package/docs/signals.md +262 -0
- package/docs/stores.md +113 -0
- package/docs/views.md +356 -0
- package/index.d.ts +2 -2
- package/notes/atomic.md +452 -0
- package/notes/elimination.md +33 -0
- package/notes/observable.md +180 -0
- package/notes/scratch.md +350 -18
- package/notes/splitting.md +5 -0
- package/package.json +29 -15
- package/vite.config.js +5 -11
- package/build.js +0 -34
- package/dist/index.d.ts +0 -21
- package/dist/markup.d.ts +0 -108
- package/dist/modules/dolla.d.ts +0 -111
- package/dist/modules/language.d.ts +0 -41
- package/dist/modules/render.d.ts +0 -17
- package/dist/modules/router.d.ts +0 -152
- package/dist/nodes/cond.d.ts +0 -26
- package/dist/nodes/html.d.ts +0 -31
- package/dist/nodes/observer.d.ts +0 -29
- package/dist/nodes/outlet.d.ts +0 -22
- package/dist/nodes/portal.d.ts +0 -19
- package/dist/nodes/repeat.d.ts +0 -34
- package/dist/nodes/text.d.ts +0 -19
- package/dist/passthrough-9kwwjgWk.js +0 -1279
- package/dist/passthrough-9kwwjgWk.js.map +0 -1
- package/dist/state.d.ts +0 -101
- package/dist/view.d.ts +0 -65
- package/dist/views/passthrough.d.ts +0 -5
- package/notes/context-vars.md +0 -21
- package/notes/readme-scratch.md +0 -222
- package/notes/route-middleware.md +0 -42
- package/tests/state.test.js +0 -135
- /package/dist/{routing.test.d.ts → core/context.test.d.ts} +0 -0
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
import { t as M, b, i as ne } from "./typeChecking-5kmX0ulW.js";
|
|
2
|
+
const re = () => {
|
|
3
|
+
};
|
|
4
|
+
let D = 1;
|
|
5
|
+
function de() {
|
|
6
|
+
return D = D % Number.MAX_SAFE_INTEGER + 1, D.toString(36) + Date.now().toString(36);
|
|
7
|
+
}
|
|
8
|
+
let T = 0;
|
|
9
|
+
function pe() {
|
|
10
|
+
return T = T % Number.MAX_SAFE_INTEGER + 1, T;
|
|
11
|
+
}
|
|
12
|
+
function N(e, t) {
|
|
13
|
+
return Object.is(e, t);
|
|
14
|
+
}
|
|
15
|
+
function ge(e, t) {
|
|
16
|
+
if (Object.is(e, t)) return !0;
|
|
17
|
+
const r = M(e);
|
|
18
|
+
if (r !== M(t))
|
|
19
|
+
return !1;
|
|
20
|
+
switch (r) {
|
|
21
|
+
case "object":
|
|
22
|
+
let n = 0;
|
|
23
|
+
for (const i in e) {
|
|
24
|
+
if (e[i] !== t[i]) return !1;
|
|
25
|
+
n++;
|
|
26
|
+
}
|
|
27
|
+
return Object.keys(t).length === n;
|
|
28
|
+
case "array":
|
|
29
|
+
if (e.length !== t.length) return !1;
|
|
30
|
+
for (let i = 0; i < e.length; i++)
|
|
31
|
+
if (e[i] !== t[i]) return !1;
|
|
32
|
+
return !0;
|
|
33
|
+
case "map":
|
|
34
|
+
if (e.size !== t.size) return !1;
|
|
35
|
+
for (const i of e.keys())
|
|
36
|
+
if (e[i] !== t[i]) return !1;
|
|
37
|
+
return !0;
|
|
38
|
+
case "set":
|
|
39
|
+
if (b(e.symmetricDifference))
|
|
40
|
+
return e.symmetricDifference(t).size === 0;
|
|
41
|
+
for (const i of e.keys())
|
|
42
|
+
if (e[i] !== t.get(i)) return !1;
|
|
43
|
+
return !0;
|
|
44
|
+
}
|
|
45
|
+
return !1;
|
|
46
|
+
}
|
|
47
|
+
function C(e, t) {
|
|
48
|
+
if (e === t) return !0;
|
|
49
|
+
if (e && t && typeof e == "object" && typeof t == "object") {
|
|
50
|
+
if (e.constructor !== t.constructor) return !1;
|
|
51
|
+
var r, n, i;
|
|
52
|
+
if (Array.isArray(e)) {
|
|
53
|
+
if (r = e.length, r != t.length) return !1;
|
|
54
|
+
for (n = r; n-- !== 0; ) if (!C(e[n], t[n])) return !1;
|
|
55
|
+
return !0;
|
|
56
|
+
}
|
|
57
|
+
if (e instanceof Map && t instanceof Map) {
|
|
58
|
+
if (e.size !== t.size) return !1;
|
|
59
|
+
for (n of e.entries()) if (!t.has(n[0])) return !1;
|
|
60
|
+
for (n of e.entries()) if (!C(n[1], t.get(n[0]))) return !1;
|
|
61
|
+
return !0;
|
|
62
|
+
}
|
|
63
|
+
if (e instanceof Set && t instanceof Set) {
|
|
64
|
+
if (e.size !== t.size) return !1;
|
|
65
|
+
for (n of e.entries()) if (!t.has(n[0])) return !1;
|
|
66
|
+
return !0;
|
|
67
|
+
}
|
|
68
|
+
if (ArrayBuffer.isView(e) && ArrayBuffer.isView(t)) {
|
|
69
|
+
if (r = e.length, r != t.length) return !1;
|
|
70
|
+
for (n = r; n-- !== 0; ) if (e[n] !== t[n]) return !1;
|
|
71
|
+
return !0;
|
|
72
|
+
}
|
|
73
|
+
if (e.constructor === RegExp) return e.source === t.source && e.flags === t.flags;
|
|
74
|
+
if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === t.valueOf();
|
|
75
|
+
if (e.toString !== Object.prototype.toString) return e.toString() === t.toString();
|
|
76
|
+
if (i = Object.keys(e), r = i.length, r !== Object.keys(t).length) return !1;
|
|
77
|
+
for (n = r; n-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(t, i[n])) return !1;
|
|
78
|
+
for (n = r; n-- !== 0; ) {
|
|
79
|
+
var d = i[n];
|
|
80
|
+
if (!C(e[d], t[d])) return !1;
|
|
81
|
+
}
|
|
82
|
+
return !0;
|
|
83
|
+
}
|
|
84
|
+
return e !== e && t !== t;
|
|
85
|
+
}
|
|
86
|
+
function ve(e, t) {
|
|
87
|
+
const r = {};
|
|
88
|
+
for (const n in t)
|
|
89
|
+
e.includes(n) || (r[n] = t[n]);
|
|
90
|
+
return r;
|
|
91
|
+
}
|
|
92
|
+
function he(e) {
|
|
93
|
+
return Array.isArray(e) ? e : [e];
|
|
94
|
+
}
|
|
95
|
+
function be(e) {
|
|
96
|
+
return e.replace(/-./g, (t) => t[1].toUpperCase());
|
|
97
|
+
}
|
|
98
|
+
function xe(e, t, r) {
|
|
99
|
+
"moveBefore" in e ? e.moveBefore(t, r) : e.insertBefore(t, r);
|
|
100
|
+
}
|
|
101
|
+
function se(e) {
|
|
102
|
+
let t = 0;
|
|
103
|
+
for (let r = 0; r < e.length; r++)
|
|
104
|
+
t = (t + e.charCodeAt(r) * 10) % 360;
|
|
105
|
+
return `oklch(0.68 0.15 ${t}deg)`;
|
|
106
|
+
}
|
|
107
|
+
function I(e) {
|
|
108
|
+
if (e instanceof RegExp)
|
|
109
|
+
return (n) => e.test(n);
|
|
110
|
+
const t = {
|
|
111
|
+
positive: [],
|
|
112
|
+
negative: []
|
|
113
|
+
}, r = e.split(",").map((n) => n.trim()).filter((n) => n !== "");
|
|
114
|
+
for (let n of r) {
|
|
115
|
+
let i = "positive";
|
|
116
|
+
n.startsWith("-") && (i = "negative", n = n.slice(1)), n === "*" ? t[i].push(function() {
|
|
117
|
+
return !0;
|
|
118
|
+
}) : n.endsWith("*") ? t[i].push(function(d) {
|
|
119
|
+
return d.startsWith(n.slice(0, n.length - 1));
|
|
120
|
+
}) : t[i].push(function(d) {
|
|
121
|
+
return d === n;
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return function(n) {
|
|
125
|
+
const { positive: i, negative: d } = t;
|
|
126
|
+
return !(d.some((p) => p(n)) || i.length > 0 && !i.some((p) => p(n)));
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
let $ = "production";
|
|
130
|
+
function ie() {
|
|
131
|
+
return $;
|
|
132
|
+
}
|
|
133
|
+
function Se(e) {
|
|
134
|
+
$ = e;
|
|
135
|
+
}
|
|
136
|
+
var V;
|
|
137
|
+
(function(e) {
|
|
138
|
+
e[e.None = 0] = "None", e[e.Mutable = 1] = "Mutable", e[e.Watching = 2] = "Watching", e[e.RecursedCheck = 4] = "RecursedCheck", e[e.Recursed = 8] = "Recursed", e[e.Dirty = 16] = "Dirty", e[e.Pending = 32] = "Pending";
|
|
139
|
+
})(V || (V = {}));
|
|
140
|
+
function ue({ update: e, notify: t, unwatched: r }) {
|
|
141
|
+
return {
|
|
142
|
+
link: n,
|
|
143
|
+
unlink: i,
|
|
144
|
+
propagate: d,
|
|
145
|
+
checkDirty: te,
|
|
146
|
+
endTracking: ee,
|
|
147
|
+
startTracking: p,
|
|
148
|
+
shallowPropagate: m
|
|
149
|
+
};
|
|
150
|
+
function n(s, u) {
|
|
151
|
+
const o = u.depsTail;
|
|
152
|
+
if (o !== void 0 && o.dep === s)
|
|
153
|
+
return;
|
|
154
|
+
let f;
|
|
155
|
+
const l = u.flags & 4;
|
|
156
|
+
if (l && (f = o !== void 0 ? o.nextDep : u.deps, f !== void 0 && f.dep === s)) {
|
|
157
|
+
u.depsTail = f;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const c = s.subsTail;
|
|
161
|
+
if (c !== void 0 && c.sub === u && (!l || L(c, u)))
|
|
162
|
+
return;
|
|
163
|
+
const a = u.depsTail = s.subsTail = {
|
|
164
|
+
dep: s,
|
|
165
|
+
sub: u,
|
|
166
|
+
prevDep: o,
|
|
167
|
+
nextDep: f,
|
|
168
|
+
prevSub: c,
|
|
169
|
+
nextSub: void 0
|
|
170
|
+
};
|
|
171
|
+
f !== void 0 && (f.prevDep = a), o !== void 0 ? o.nextDep = a : u.deps = a, c !== void 0 ? c.nextSub = a : s.subs = a;
|
|
172
|
+
}
|
|
173
|
+
function i(s, u = s.sub) {
|
|
174
|
+
const o = s.dep, f = s.prevDep, l = s.nextDep, c = s.nextSub, a = s.prevSub;
|
|
175
|
+
return l !== void 0 ? l.prevDep = f : u.depsTail = f, f !== void 0 ? f.nextDep = l : u.deps = l, c !== void 0 ? c.prevSub = a : o.subsTail = a, a !== void 0 ? a.nextSub = c : (o.subs = c) === void 0 && r(o), l;
|
|
176
|
+
}
|
|
177
|
+
function d(s) {
|
|
178
|
+
let u = s.nextSub, o;
|
|
179
|
+
e: do {
|
|
180
|
+
const f = s.sub;
|
|
181
|
+
let l = f.flags;
|
|
182
|
+
if (l & 3 && (l & 60 ? l & 12 ? l & 4 ? !(l & 48) && L(s, f) ? (f.flags = l | 40, l &= 1) : l = 0 : f.flags = l & -9 | 32 : l = 0 : f.flags = l | 32, l & 2 && t(f), l & 1)) {
|
|
183
|
+
const c = f.subs;
|
|
184
|
+
if (c !== void 0) {
|
|
185
|
+
s = c, c.nextSub !== void 0 && (o = { value: u, prev: o }, u = s.nextSub);
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if ((s = u) !== void 0) {
|
|
190
|
+
u = s.nextSub;
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
for (; o !== void 0; )
|
|
194
|
+
if (s = o.value, o = o.prev, s !== void 0) {
|
|
195
|
+
u = s.nextSub;
|
|
196
|
+
continue e;
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
} while (!0);
|
|
200
|
+
}
|
|
201
|
+
function p(s) {
|
|
202
|
+
s.depsTail = void 0, s.flags = s.flags & -57 | 4;
|
|
203
|
+
}
|
|
204
|
+
function ee(s) {
|
|
205
|
+
const u = s.depsTail;
|
|
206
|
+
let o = u !== void 0 ? u.nextDep : s.deps;
|
|
207
|
+
for (; o !== void 0; )
|
|
208
|
+
o = i(o, s);
|
|
209
|
+
s.flags &= -5;
|
|
210
|
+
}
|
|
211
|
+
function te(s, u) {
|
|
212
|
+
let o, f = 0;
|
|
213
|
+
e: do {
|
|
214
|
+
const l = s.dep, c = l.flags;
|
|
215
|
+
let a = !1;
|
|
216
|
+
if (u.flags & 16)
|
|
217
|
+
a = !0;
|
|
218
|
+
else if ((c & 17) === 17) {
|
|
219
|
+
if (e(l)) {
|
|
220
|
+
const h = l.subs;
|
|
221
|
+
h.nextSub !== void 0 && m(h), a = !0;
|
|
222
|
+
}
|
|
223
|
+
} else if ((c & 33) === 33) {
|
|
224
|
+
(s.nextSub !== void 0 || s.prevSub !== void 0) && (o = { value: s, prev: o }), s = l.deps, u = l, ++f;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (!a && s.nextDep !== void 0) {
|
|
228
|
+
s = s.nextDep;
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
for (; f; ) {
|
|
232
|
+
--f;
|
|
233
|
+
const h = u.subs, z = h.nextSub !== void 0;
|
|
234
|
+
if (z ? (s = o.value, o = o.prev) : s = h, a) {
|
|
235
|
+
if (e(u)) {
|
|
236
|
+
z && m(h), u = s.sub;
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
} else
|
|
240
|
+
u.flags &= -33;
|
|
241
|
+
if (u = s.sub, s.nextDep !== void 0) {
|
|
242
|
+
s = s.nextDep;
|
|
243
|
+
continue e;
|
|
244
|
+
}
|
|
245
|
+
a = !1;
|
|
246
|
+
}
|
|
247
|
+
return a;
|
|
248
|
+
} while (!0);
|
|
249
|
+
}
|
|
250
|
+
function m(s) {
|
|
251
|
+
do {
|
|
252
|
+
const u = s.sub, o = s.nextSub, f = u.flags;
|
|
253
|
+
(f & 48) === 32 && (u.flags = f | 16, f & 2 && t(u)), s = o;
|
|
254
|
+
} while (s !== void 0);
|
|
255
|
+
}
|
|
256
|
+
function L(s, u) {
|
|
257
|
+
const o = u.depsTail;
|
|
258
|
+
if (o !== void 0) {
|
|
259
|
+
let f = u.deps;
|
|
260
|
+
do {
|
|
261
|
+
if (f === s)
|
|
262
|
+
return !0;
|
|
263
|
+
if (f === o)
|
|
264
|
+
break;
|
|
265
|
+
f = f.nextDep;
|
|
266
|
+
} while (f !== void 0);
|
|
267
|
+
}
|
|
268
|
+
return !1;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
const O = [], { link: _, unlink: q, propagate: fe, checkDirty: P, endTracking: W, startTracking: G, shallowPropagate: U } = ue({
|
|
272
|
+
update(e) {
|
|
273
|
+
return "getter" in e ? X(e) : k(e, e.value);
|
|
274
|
+
},
|
|
275
|
+
notify: H,
|
|
276
|
+
unwatched(e) {
|
|
277
|
+
if ("getter" in e) {
|
|
278
|
+
let t = e.deps;
|
|
279
|
+
if (t !== void 0) {
|
|
280
|
+
e.flags = 17;
|
|
281
|
+
do
|
|
282
|
+
t = q(t, e);
|
|
283
|
+
while (t !== void 0);
|
|
284
|
+
}
|
|
285
|
+
} else "previousValue" in e || Z.call(e);
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
let E = 0, S = 0, j = 0, g, A;
|
|
289
|
+
function v(e) {
|
|
290
|
+
const t = g;
|
|
291
|
+
return g = e, t;
|
|
292
|
+
}
|
|
293
|
+
function ye() {
|
|
294
|
+
return A;
|
|
295
|
+
}
|
|
296
|
+
function we(e) {
|
|
297
|
+
const t = A;
|
|
298
|
+
return A = e, t;
|
|
299
|
+
}
|
|
300
|
+
function X(e) {
|
|
301
|
+
const t = v(e);
|
|
302
|
+
G(e);
|
|
303
|
+
try {
|
|
304
|
+
const r = e.value, n = { value: e.value };
|
|
305
|
+
return !e.equals(r, e.value = e.getter.call(n));
|
|
306
|
+
} finally {
|
|
307
|
+
v(t), W(e);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
function k(e, t) {
|
|
311
|
+
return e.flags = 1, !e.equals(e.previousValue, e.previousValue = t);
|
|
312
|
+
}
|
|
313
|
+
function H(e) {
|
|
314
|
+
const t = e.flags;
|
|
315
|
+
if (!(t & 64)) {
|
|
316
|
+
e.flags = t | 64;
|
|
317
|
+
const r = e.subs;
|
|
318
|
+
r !== void 0 ? H(r.sub) : O[j++] = e;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function J(e, t) {
|
|
322
|
+
if (t & 16 || t & 32 && P(e.deps, e)) {
|
|
323
|
+
const n = v(e);
|
|
324
|
+
G(e);
|
|
325
|
+
try {
|
|
326
|
+
"cleanup" in e && e.cleanup !== void 0 && e.cleanup();
|
|
327
|
+
const i = e.fn();
|
|
328
|
+
"cleanup" in e && b(i) && (e.cleanup = i);
|
|
329
|
+
} finally {
|
|
330
|
+
v(n), W(e);
|
|
331
|
+
}
|
|
332
|
+
return;
|
|
333
|
+
} else t & 32 && (e.flags = t & -33);
|
|
334
|
+
let r = e.deps;
|
|
335
|
+
for (; r !== void 0; ) {
|
|
336
|
+
const n = r.dep, i = n.flags;
|
|
337
|
+
i & 64 && J(
|
|
338
|
+
n,
|
|
339
|
+
n.flags = i & -65
|
|
340
|
+
/* Queued */
|
|
341
|
+
), r = r.nextDep;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
function K() {
|
|
345
|
+
for (; S < j; ) {
|
|
346
|
+
const e = O[S];
|
|
347
|
+
O[S++] = void 0, J(
|
|
348
|
+
e,
|
|
349
|
+
e.flags &= -65
|
|
350
|
+
/* Queued */
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
S = 0, j = 0;
|
|
354
|
+
}
|
|
355
|
+
function oe() {
|
|
356
|
+
const e = this.flags;
|
|
357
|
+
if (e & 16 || e & 32 && P(this.deps, this)) {
|
|
358
|
+
if (X(this)) {
|
|
359
|
+
const t = this.subs;
|
|
360
|
+
t !== void 0 && U(t);
|
|
361
|
+
}
|
|
362
|
+
} else e & 32 && (this.flags = e & -33);
|
|
363
|
+
return g !== void 0 && _(this, g), this.value;
|
|
364
|
+
}
|
|
365
|
+
function Q() {
|
|
366
|
+
const e = this.value;
|
|
367
|
+
if (this.flags & 16 && k(this, e)) {
|
|
368
|
+
const t = this.subs;
|
|
369
|
+
t !== void 0 && U(t);
|
|
370
|
+
}
|
|
371
|
+
return g !== void 0 && _(this, g), e;
|
|
372
|
+
}
|
|
373
|
+
function Y(e) {
|
|
374
|
+
let t = b(e) ? x(e(this.value)) : e;
|
|
375
|
+
if (!this.equals(this.value, t)) {
|
|
376
|
+
this.value = t, this.flags = 17;
|
|
377
|
+
const r = this.subs;
|
|
378
|
+
r !== void 0 && (fe(r), E || K());
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
function Z() {
|
|
382
|
+
let e = this.deps;
|
|
383
|
+
for (; e !== void 0; )
|
|
384
|
+
e = q(e, this);
|
|
385
|
+
const t = this.subs;
|
|
386
|
+
t !== void 0 && q(t), this.flags = 0, "cleanup" in this && this.cleanup != null && this.cleanup();
|
|
387
|
+
}
|
|
388
|
+
function me(e, t) {
|
|
389
|
+
const r = {
|
|
390
|
+
previousValue: e,
|
|
391
|
+
value: e,
|
|
392
|
+
equals: t?.equals ?? N,
|
|
393
|
+
subs: void 0,
|
|
394
|
+
subsTail: void 0,
|
|
395
|
+
flags: 1
|
|
396
|
+
}, n = Q.bind(r);
|
|
397
|
+
return n.set = Y.bind(r), n;
|
|
398
|
+
}
|
|
399
|
+
function De(e) {
|
|
400
|
+
return le(() => e);
|
|
401
|
+
}
|
|
402
|
+
function Te(e, t) {
|
|
403
|
+
const r = {
|
|
404
|
+
previousValue: e,
|
|
405
|
+
value: e,
|
|
406
|
+
equals: t?.equals ?? N,
|
|
407
|
+
subs: void 0,
|
|
408
|
+
subsTail: void 0,
|
|
409
|
+
flags: 1
|
|
410
|
+
};
|
|
411
|
+
return [Q.bind(r), Y.bind(r)];
|
|
412
|
+
}
|
|
413
|
+
function le(e, t) {
|
|
414
|
+
return oe.bind({
|
|
415
|
+
value: void 0,
|
|
416
|
+
subs: void 0,
|
|
417
|
+
subsTail: void 0,
|
|
418
|
+
deps: void 0,
|
|
419
|
+
depsTail: void 0,
|
|
420
|
+
flags: 17,
|
|
421
|
+
getter: function() {
|
|
422
|
+
if (t?.deps) {
|
|
423
|
+
for (let r of t.deps) x(r);
|
|
424
|
+
return x(R(() => e(this.value)));
|
|
425
|
+
}
|
|
426
|
+
return x(e(this.value));
|
|
427
|
+
},
|
|
428
|
+
equals: t?.equals ?? N
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
function Ce(e) {
|
|
432
|
+
++E, e(), --E || K();
|
|
433
|
+
}
|
|
434
|
+
function R(e) {
|
|
435
|
+
if (b(e)) {
|
|
436
|
+
let t;
|
|
437
|
+
const r = v(void 0);
|
|
438
|
+
return t = e(), v(r), t;
|
|
439
|
+
} else
|
|
440
|
+
return e;
|
|
441
|
+
}
|
|
442
|
+
function x(e) {
|
|
443
|
+
return b(e) ? e() : e;
|
|
444
|
+
}
|
|
445
|
+
function Oe(e) {
|
|
446
|
+
const t = {
|
|
447
|
+
fn: e,
|
|
448
|
+
subs: void 0,
|
|
449
|
+
subsTail: void 0,
|
|
450
|
+
deps: void 0,
|
|
451
|
+
depsTail: void 0,
|
|
452
|
+
flags: 2
|
|
453
|
+
};
|
|
454
|
+
g !== void 0 && _(t, g);
|
|
455
|
+
const r = v(t);
|
|
456
|
+
try {
|
|
457
|
+
t.cleanup?.();
|
|
458
|
+
const n = t.fn();
|
|
459
|
+
t.cleanup = b(n) ? n : void 0;
|
|
460
|
+
} finally {
|
|
461
|
+
v(r);
|
|
462
|
+
}
|
|
463
|
+
return Z.bind(t);
|
|
464
|
+
}
|
|
465
|
+
let y = {
|
|
466
|
+
info: "development",
|
|
467
|
+
log: "development",
|
|
468
|
+
warn: "development",
|
|
469
|
+
error: !0
|
|
470
|
+
}, F = I("*,-dolla.*"), w = [], B = !1;
|
|
471
|
+
function qe(e) {
|
|
472
|
+
return w.push(e), function() {
|
|
473
|
+
w.splice(w.indexOf(e), 1);
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
function Ee(e, t) {
|
|
477
|
+
const r = t?.console ?? ce(), n = (i) => {
|
|
478
|
+
let d = R(e);
|
|
479
|
+
if (y[i] === !1 || ne(y[i]) && y[i] !== ie() || !F(d))
|
|
480
|
+
return re;
|
|
481
|
+
{
|
|
482
|
+
let p = `%c${d}`;
|
|
483
|
+
return t?.tag ? t.tagName ? p += ` %c[${t.tagName}: %c${t.tag}%c]` : p += ` %c[%c${t.tag}%c]` : p += "%c%c%c", r[i].bind(
|
|
484
|
+
r,
|
|
485
|
+
p,
|
|
486
|
+
`color:${se(p)};font-weight:bold`,
|
|
487
|
+
"color:#777",
|
|
488
|
+
"color:#aaa",
|
|
489
|
+
"color:#777"
|
|
490
|
+
);
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
return {
|
|
494
|
+
get info() {
|
|
495
|
+
return n("info");
|
|
496
|
+
},
|
|
497
|
+
get log() {
|
|
498
|
+
return n("log");
|
|
499
|
+
},
|
|
500
|
+
get warn() {
|
|
501
|
+
return n("warn");
|
|
502
|
+
},
|
|
503
|
+
get error() {
|
|
504
|
+
return n("error");
|
|
505
|
+
},
|
|
506
|
+
crash(i) {
|
|
507
|
+
if (!B) {
|
|
508
|
+
B = !0;
|
|
509
|
+
const d = {
|
|
510
|
+
error: i,
|
|
511
|
+
loggerName: x(e),
|
|
512
|
+
tag: t?.tag,
|
|
513
|
+
tagName: t?.tagName
|
|
514
|
+
};
|
|
515
|
+
for (const p of w)
|
|
516
|
+
p(d);
|
|
517
|
+
throw i;
|
|
518
|
+
}
|
|
519
|
+
return i;
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
function je(e) {
|
|
524
|
+
F = I(e);
|
|
525
|
+
}
|
|
526
|
+
function Ae(e) {
|
|
527
|
+
for (const t in e) {
|
|
528
|
+
const r = e[t];
|
|
529
|
+
r && (y[t] = r);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
function ce() {
|
|
533
|
+
if (typeof window < "u" && window.console)
|
|
534
|
+
return window.console;
|
|
535
|
+
if (typeof global < "u" && global.console)
|
|
536
|
+
return global.console;
|
|
537
|
+
}
|
|
538
|
+
export {
|
|
539
|
+
ge as a,
|
|
540
|
+
Ce as b,
|
|
541
|
+
N as c,
|
|
542
|
+
C as d,
|
|
543
|
+
Oe as e,
|
|
544
|
+
ie as f,
|
|
545
|
+
x as g,
|
|
546
|
+
Se as h,
|
|
547
|
+
Ee as i,
|
|
548
|
+
je as j,
|
|
549
|
+
Ae as k,
|
|
550
|
+
ye as l,
|
|
551
|
+
le as m,
|
|
552
|
+
de as n,
|
|
553
|
+
qe as o,
|
|
554
|
+
we as p,
|
|
555
|
+
xe as q,
|
|
556
|
+
De as r,
|
|
557
|
+
Te as s,
|
|
558
|
+
he as t,
|
|
559
|
+
R as u,
|
|
560
|
+
pe as v,
|
|
561
|
+
me as w,
|
|
562
|
+
ve as x,
|
|
563
|
+
be as y
|
|
564
|
+
};
|
|
565
|
+
//# sourceMappingURL=logger-Aqi9m1CF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-Aqi9m1CF.js","sources":["../src/utils.ts","../src/core/env.ts","../node_modules/alien-signals/esm/system.mjs","../src/core/signals.ts","../src/core/logger.ts"],"sourcesContent":["import { isFunction, isObject, typeOf } from \"./typeChecking.js\";\n\nexport const noOp = () => {};\n\n// Guarantee unique ID by incrementing a global counter.\nlet idCounter = 1;\nexport function getUniqueId(): string {\n idCounter = (idCounter % Number.MAX_SAFE_INTEGER) + 1;\n return idCounter.toString(36) + Date.now().toString(36);\n}\n\nlet intCounter = 0;\nexport function getIntegerId(): number {\n intCounter = (intCounter % Number.MAX_SAFE_INTEGER) + 1;\n return intCounter;\n}\n\n/*=============================*\\\n|| Object Equality ||\n\\*=============================*/\n\n/**\n * Equality check that passes if both values are the same object.\n * This is the default equality check for states.\n */\nexport function strictEqual(a: any, b: any): boolean {\n return Object.is(a, b);\n}\n\n/**\n * Equality check that passes if both values are the same object, or if both are objects or arrays with equal keys and values.\n */\nexport function shallowEqual(a: any, b: any): boolean {\n if (Object.is(a, b)) return true;\n\n // Must be same type\n const t = typeOf(a);\n if (t !== typeOf(b)) {\n return false;\n }\n\n switch (t) {\n case \"object\":\n // Objects must have same number of keys with strict equal values\n let size = 0;\n for (const key in a) {\n if (a[key] !== b[key]) return false;\n size++;\n }\n return Object.keys(b).length === size;\n case \"array\":\n // Arrays must be the same length with strict equal values\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n case \"map\":\n if (a.size !== b.size) return false;\n for (const key of a.keys()) {\n if (a[key] !== b[key]) return false;\n }\n return true;\n case \"set\":\n if (isFunction(a.symmetricDifference)) {\n return a.symmetricDifference(b).size === 0;\n } else {\n for (const key of a.keys()) {\n if (a[key] !== b.get(key)) return false;\n }\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Equality check that passes if two objects have equal values, even if they are not the same object.\n */\n// NOTE: This code is https://github.com/epoberezkin/fast-deep-equal licensed under MIT.\n// I imported it because I couldn't get the old school module to play nice with my modern ES code as an external dependency.\nexport function deepEqual(a: any, b: any): boolean {\n if (a === b) return true;\n\n if (a && b && typeof a == \"object\" && typeof b == \"object\") {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0; ) if (!deepEqual(a[i], b[i])) return false;\n return true;\n }\n\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n for (i of a.entries()) if (!b.has(i[0])) return false;\n for (i of a.entries()) if (!deepEqual(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n for (i of a.entries()) if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = (a as any).length;\n if (length != (b as any).length) return false;\n for (i = length; i-- !== 0; ) if ((a as any)[i] !== (b as any)[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0; ) {\n var key = keys[i];\n\n if (!deepEqual(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b;\n}\n\n/*=============================*\\\n|| Object Utils ||\n\\*=============================*/\n\n/**\n * Takes an old value and a new value. Returns a merged copy if both are objects, otherwise returns the new value.\n */\nexport function merge(one: unknown, two: unknown) {\n if (isObject(one)) {\n if (!isObject(two)) {\n return two;\n }\n\n const merged = Object.assign({}, one) as any;\n\n for (const key in two) {\n merged[key] = merge(merged[key], two[key]);\n }\n\n return merged;\n } else {\n return two;\n }\n}\n\n/**\n * Returns a new object without the specified keys.\n * If called without object, returns a function that takes an object\n * and returns a version with the original keys omitted.\n *\n * @param keys - An array of keys to omit.\n * @param object - An object to clone without the omitted keys.\n */\nexport function omit<O extends Record<any, any>>(keys: (keyof O)[], object: O): Record<any, any> {\n const newObject: Record<any, any> = {};\n\n for (const key in object) {\n if (!keys.includes(key)) {\n newObject[key] = object[key];\n }\n }\n\n return newObject;\n}\n\n/*=============================*\\\n|| Misc Utils ||\n\\*=============================*/\n\nexport function toArray<T>(value: T | T[]): T[] {\n if (Array.isArray(value)) {\n return value;\n } else {\n return [value];\n }\n}\n\nexport function toCamelCase(s: string) {\n return s.replace(/-./g, (x) => x[1].toUpperCase());\n}\n\n// export function deepFreeze<T>(obj: T): T {\n\n// }\n\n/**\n * Moves an element using `moveBefore` if the browser supports it, otherwise falls back to `insertBefore`.\n */\nexport function moveBefore(parent: Node, node: Node, child: Node | null) {\n if (\"moveBefore\" in parent) {\n (parent as any).moveBefore(node, child);\n } else {\n parent.insertBefore(node, child);\n }\n}\n\n/**\n * Takes any string and returns an OKLCH color.\n */\nexport function okhash(value: string) {\n let hue = 0;\n for (let i = 0; i < value.length; i++) {\n hue = (hue + value.charCodeAt(i) * 10) % 360;\n }\n return `oklch(0.68 0.15 ${hue}deg)`;\n}\n\nexport type MatcherFunction = (value: string) => boolean;\n\n/**\n * Parses a filter string into a matcher function.\n *\n * @param pattern - A string or regular expression that specifies a pattern for names of loggers whose messages you want to display.\n */\nexport function createMatcher(pattern: string | RegExp): MatcherFunction {\n if (pattern instanceof RegExp) {\n return (value: string) => pattern.test(value);\n }\n\n const matchers: Record<\"positive\" | \"negative\", MatcherFunction[]> = {\n positive: [],\n negative: [],\n };\n\n const parts = pattern\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p !== \"\");\n\n for (let part of parts) {\n let section: \"positive\" | \"negative\" = \"positive\";\n\n if (part.startsWith(\"-\")) {\n section = \"negative\";\n part = part.slice(1);\n }\n\n if (part === \"*\") {\n matchers[section].push(function () {\n return true;\n });\n } else if (part.endsWith(\"*\")) {\n matchers[section].push(function (value) {\n return value.startsWith(part.slice(0, part.length - 1));\n });\n } else {\n matchers[section].push(function (value) {\n return value === part;\n });\n }\n }\n\n return function (name: string) {\n const { positive, negative } = matchers;\n\n // Matching any negative matcher disqualifies.\n if (negative.some((fn) => fn(name))) {\n return false;\n }\n\n // Matching at least one positive matcher is required if any are specified.\n if (positive.length > 0 && !positive.some((fn) => fn(name))) {\n return false;\n }\n\n return true;\n };\n}\n","import type { Env } from \"../types\";\n\nlet currentEnv = \"production\";\n\nexport function getEnv() {\n return currentEnv;\n}\n\nexport function setEnv(value: Env) {\n currentEnv = value;\n}\n","export var ReactiveFlags;\n(function (ReactiveFlags) {\n ReactiveFlags[ReactiveFlags[\"None\"] = 0] = \"None\";\n ReactiveFlags[ReactiveFlags[\"Mutable\"] = 1] = \"Mutable\";\n ReactiveFlags[ReactiveFlags[\"Watching\"] = 2] = \"Watching\";\n ReactiveFlags[ReactiveFlags[\"RecursedCheck\"] = 4] = \"RecursedCheck\";\n ReactiveFlags[ReactiveFlags[\"Recursed\"] = 8] = \"Recursed\";\n ReactiveFlags[ReactiveFlags[\"Dirty\"] = 16] = \"Dirty\";\n ReactiveFlags[ReactiveFlags[\"Pending\"] = 32] = \"Pending\";\n})(ReactiveFlags || (ReactiveFlags = {}));\nexport function createReactiveSystem({ update, notify, unwatched, }) {\n return {\n link,\n unlink,\n propagate,\n checkDirty,\n endTracking,\n startTracking,\n shallowPropagate,\n };\n function link(dep, sub) {\n const prevDep = sub.depsTail;\n if (prevDep !== undefined && prevDep.dep === dep) {\n return;\n }\n let nextDep = undefined;\n const recursedCheck = sub.flags & 4;\n if (recursedCheck) {\n nextDep = prevDep !== undefined ? prevDep.nextDep : sub.deps;\n if (nextDep !== undefined && nextDep.dep === dep) {\n sub.depsTail = nextDep;\n return;\n }\n }\n const prevSub = dep.subsTail;\n if (prevSub !== undefined\n && prevSub.sub === sub\n && (!recursedCheck || isValidLink(prevSub, sub))) {\n return;\n }\n const newLink = sub.depsTail\n = dep.subsTail\n = {\n dep,\n sub,\n prevDep,\n nextDep,\n prevSub,\n nextSub: undefined,\n };\n if (nextDep !== undefined) {\n nextDep.prevDep = newLink;\n }\n if (prevDep !== undefined) {\n prevDep.nextDep = newLink;\n }\n else {\n sub.deps = newLink;\n }\n if (prevSub !== undefined) {\n prevSub.nextSub = newLink;\n }\n else {\n dep.subs = newLink;\n }\n }\n function unlink(link, sub = link.sub) {\n const dep = link.dep;\n const prevDep = link.prevDep;\n const nextDep = link.nextDep;\n const nextSub = link.nextSub;\n const prevSub = link.prevSub;\n if (nextDep !== undefined) {\n nextDep.prevDep = prevDep;\n }\n else {\n sub.depsTail = prevDep;\n }\n if (prevDep !== undefined) {\n prevDep.nextDep = nextDep;\n }\n else {\n sub.deps = nextDep;\n }\n if (nextSub !== undefined) {\n nextSub.prevSub = prevSub;\n }\n else {\n dep.subsTail = prevSub;\n }\n if (prevSub !== undefined) {\n prevSub.nextSub = nextSub;\n }\n else if ((dep.subs = nextSub) === undefined) {\n unwatched(dep);\n }\n return nextDep;\n }\n function propagate(link) {\n let next = link.nextSub;\n let stack;\n top: do {\n const sub = link.sub;\n let flags = sub.flags;\n if (flags & 3) {\n if (!(flags & 60)) {\n sub.flags = flags | 32;\n }\n else if (!(flags & 12)) {\n flags = 0;\n }\n else if (!(flags & 4)) {\n sub.flags = (flags & ~8) | 32;\n }\n else if (!(flags & 48) && isValidLink(link, sub)) {\n sub.flags = flags | 40;\n flags &= 1;\n }\n else {\n flags = 0;\n }\n if (flags & 2) {\n notify(sub);\n }\n if (flags & 1) {\n const subSubs = sub.subs;\n if (subSubs !== undefined) {\n link = subSubs;\n if (subSubs.nextSub !== undefined) {\n stack = { value: next, prev: stack };\n next = link.nextSub;\n }\n continue;\n }\n }\n }\n if ((link = next) !== undefined) {\n next = link.nextSub;\n continue;\n }\n while (stack !== undefined) {\n link = stack.value;\n stack = stack.prev;\n if (link !== undefined) {\n next = link.nextSub;\n continue top;\n }\n }\n break;\n } while (true);\n }\n function startTracking(sub) {\n sub.depsTail = undefined;\n sub.flags = (sub.flags & ~56) | 4;\n }\n function endTracking(sub) {\n const depsTail = sub.depsTail;\n let toRemove = depsTail !== undefined ? depsTail.nextDep : sub.deps;\n while (toRemove !== undefined) {\n toRemove = unlink(toRemove, sub);\n }\n sub.flags &= ~4;\n }\n function checkDirty(link, sub) {\n let stack;\n let checkDepth = 0;\n top: do {\n const dep = link.dep;\n const depFlags = dep.flags;\n let dirty = false;\n if (sub.flags & 16) {\n dirty = true;\n }\n else if ((depFlags & 17) === 17) {\n if (update(dep)) {\n const subs = dep.subs;\n if (subs.nextSub !== undefined) {\n shallowPropagate(subs);\n }\n dirty = true;\n }\n }\n else if ((depFlags & 33) === 33) {\n if (link.nextSub !== undefined || link.prevSub !== undefined) {\n stack = { value: link, prev: stack };\n }\n link = dep.deps;\n sub = dep;\n ++checkDepth;\n continue;\n }\n if (!dirty && link.nextDep !== undefined) {\n link = link.nextDep;\n continue;\n }\n while (checkDepth) {\n --checkDepth;\n const firstSub = sub.subs;\n const hasMultipleSubs = firstSub.nextSub !== undefined;\n if (hasMultipleSubs) {\n link = stack.value;\n stack = stack.prev;\n }\n else {\n link = firstSub;\n }\n if (dirty) {\n if (update(sub)) {\n if (hasMultipleSubs) {\n shallowPropagate(firstSub);\n }\n sub = link.sub;\n continue;\n }\n }\n else {\n sub.flags &= ~32;\n }\n sub = link.sub;\n if (link.nextDep !== undefined) {\n link = link.nextDep;\n continue top;\n }\n dirty = false;\n }\n return dirty;\n } while (true);\n }\n function shallowPropagate(link) {\n do {\n const sub = link.sub;\n const nextSub = link.nextSub;\n const subFlags = sub.flags;\n if ((subFlags & 48) === 32) {\n sub.flags = subFlags | 16;\n if (subFlags & 2) {\n notify(sub);\n }\n }\n link = nextSub;\n } while (link !== undefined);\n }\n function isValidLink(checkLink, sub) {\n const depsTail = sub.depsTail;\n if (depsTail !== undefined) {\n let link = sub.deps;\n do {\n if (link === checkLink) {\n return true;\n }\n if (link === depsTail) {\n break;\n }\n link = link.nextDep;\n } while (link !== undefined);\n }\n return false;\n }\n}\n","import type { ReactiveFlags, ReactiveNode } from \"alien-signals\";\nimport { createReactiveSystem } from \"alien-signals/system\";\nimport { isFunction } from \"../typeChecking\";\nimport { strictEqual } from \"../utils\";\nimport { Context } from \"./context\";\n\nconst enum EffectFlags {\n Queued = 1 << 6,\n}\n\ninterface EffectScope extends ReactiveNode {}\n\ninterface Effect extends ReactiveNode {\n fn(): void | (() => void);\n cleanup?: () => void;\n}\n\ninterface ComputedGetterState<T> {\n value?: T;\n}\n\ninterface Computed<T = any> extends ReactiveNode {\n value: T | undefined;\n getter: (this: ComputedGetterState<T>) => T;\n equals: EqualityFn<T>;\n}\n\ninterface Value<T = any> extends ReactiveNode {\n previousValue: T;\n value: T;\n equals: EqualityFn<T>;\n}\n\nconst queuedEffects: (Effect | EffectScope | undefined)[] = [];\nconst { link, unlink, propagate, checkDirty, endTracking, startTracking, shallowPropagate } = createReactiveSystem({\n update(signal: Value | Computed): boolean {\n if (\"getter\" in signal) {\n return updateComputed(signal);\n } else {\n return updateSignal(signal, signal.value);\n }\n },\n notify,\n unwatched(node: Value | Computed | Effect | EffectScope) {\n if (\"getter\" in node) {\n let toRemove = node.deps;\n if (toRemove !== undefined) {\n node.flags = 17 as ReactiveFlags.Mutable | ReactiveFlags.Dirty;\n do {\n toRemove = unlink(toRemove, node);\n } while (toRemove !== undefined);\n }\n } else if (!(\"previousValue\" in node)) {\n _effect.call(node);\n }\n },\n});\n\nlet batchDepth = 0;\n\nlet notifyIndex = 0;\nlet queuedEffectsLength = 0;\nlet activeSub: ReactiveNode | undefined;\nlet activeScope: EffectScope | undefined;\nlet activeContext: Context | undefined;\n\nfunction getCurrentSub(): ReactiveNode | undefined {\n return activeSub;\n}\n\nfunction setCurrentSub(sub: ReactiveNode | undefined) {\n const prevSub = activeSub;\n activeSub = sub;\n return prevSub;\n}\n\nexport function getCurrentContext(): Context | undefined {\n return activeContext;\n}\n\nexport function setCurrentContext(context: Context | undefined) {\n const prevContext = activeContext;\n activeContext = context;\n return prevContext;\n}\n\nfunction updateComputed(c: Computed): boolean {\n const prevSub = setCurrentSub(c);\n startTracking(c);\n try {\n const oldValue = c.value;\n const state: ComputedGetterState<any> = { value: c.value };\n // return oldValue !== (c.value = c.getter.call(state));\n return !c.equals(oldValue, (c.value = c.getter.call(state)));\n } finally {\n setCurrentSub(prevSub);\n endTracking(c);\n }\n}\n\nfunction updateSignal(s: Value, value: any): boolean {\n s.flags = 1 satisfies ReactiveFlags.Mutable;\n // return s.previousValue !== (s.previousValue = value);\n return !s.equals(s.previousValue, (s.previousValue = value));\n}\n\nfunction notify(e: Effect | EffectScope) {\n const flags = e.flags;\n if (!(flags & EffectFlags.Queued)) {\n e.flags = flags | EffectFlags.Queued;\n const subs = e.subs;\n if (subs !== undefined) {\n notify(subs.sub as Effect | EffectScope);\n } else {\n queuedEffects[queuedEffectsLength++] = e;\n }\n }\n}\n\nfunction run(e: Effect | EffectScope, flags: ReactiveFlags): void {\n if (\n flags & (16 satisfies ReactiveFlags.Dirty) ||\n (flags & (32 satisfies ReactiveFlags.Pending) && checkDirty(e.deps!, e))\n ) {\n const prev = setCurrentSub(e);\n startTracking(e);\n try {\n if (\"cleanup\" in e && e.cleanup !== undefined) {\n e.cleanup();\n }\n const result = (e as Effect).fn();\n if (\"cleanup\" in e && isFunction(result)) {\n e.cleanup = result;\n }\n } finally {\n setCurrentSub(prev);\n endTracking(e);\n }\n return;\n } else if (flags & (32 satisfies ReactiveFlags.Pending)) {\n e.flags = flags & ~(32 satisfies ReactiveFlags.Pending);\n }\n let link = e.deps;\n while (link !== undefined) {\n const dep = link.dep;\n const depFlags = dep.flags;\n if (depFlags & EffectFlags.Queued) {\n run(dep, (dep.flags = depFlags & ~EffectFlags.Queued));\n }\n link = link.nextDep;\n }\n}\n\nfunction flush(): void {\n while (notifyIndex < queuedEffectsLength) {\n const effect = queuedEffects[notifyIndex]!;\n queuedEffects[notifyIndex++] = undefined;\n run(effect, (effect.flags &= ~EffectFlags.Queued));\n }\n notifyIndex = 0;\n queuedEffectsLength = 0;\n}\n\nfunction _computed<T>(this: Computed<T>): T {\n const flags = this.flags;\n if (\n flags & (16 satisfies ReactiveFlags.Dirty) ||\n (flags & (32 satisfies ReactiveFlags.Pending) && checkDirty(this.deps!, this))\n ) {\n if (updateComputed(this)) {\n const subs = this.subs;\n if (subs !== undefined) {\n shallowPropagate(subs);\n }\n }\n } else if (flags & (32 satisfies ReactiveFlags.Pending)) {\n this.flags = flags & ~(32 satisfies ReactiveFlags.Pending);\n }\n if (activeSub !== undefined) {\n link(this, activeSub);\n } else if (activeScope !== undefined) {\n link(this, activeScope);\n }\n return this.value!;\n}\n\nfunction _getter<T>(this: Value<T>): T {\n const value = this.value;\n if (this.flags & (16 satisfies ReactiveFlags.Dirty)) {\n if (updateSignal(this, value)) {\n const subs = this.subs;\n if (subs !== undefined) {\n shallowPropagate(subs);\n }\n }\n }\n if (activeSub !== undefined) {\n link(this, activeSub);\n }\n return value;\n}\n\nfunction _setter<T>(this: Value<T>, value: T | ((current: T) => T)): void {\n let next = isFunction(value) ? (get(value(this.value)) as T) : (value as T);\n if (!this.equals(this.value, next)) {\n this.value = next;\n this.flags = 17 as ReactiveFlags.Mutable | ReactiveFlags.Dirty;\n const subs = this.subs;\n if (subs !== undefined) {\n propagate(subs);\n if (!batchDepth) {\n flush();\n }\n }\n }\n}\n\nfunction _effect(this: Effect | EffectScope): void {\n let dep = this.deps;\n while (dep !== undefined) {\n dep = unlink(dep, this);\n }\n const sub = this.subs;\n if (sub !== undefined) {\n unlink(sub);\n }\n this.flags = 0 satisfies ReactiveFlags.None;\n\n if (\"cleanup\" in this && this.cleanup != null) {\n this.cleanup();\n }\n}\n\n/*===================================*\\\n|| API ||\n\\*===================================*/\n\n/* -------------- TYPES --------------- */\n\n/**\n * A function that returns the current value of a signal.\n * Automatically tracked as a dependency when called within a tracking scope (such as `memo` or `effect` functions).\n */\nexport interface Signal<T> {\n (): T;\n}\n\n/**\n * A function that sets the value of the signal.\n */\nexport interface Setter<T> {\n // This signature is required for Immer `produce` to infer types correctly.\n (value: T | ((previousValue: T) => T)): void;\n\n // (value: T): void;\n // (update: (current: T) => T): void;\n}\n\n/**\n * A getter and setter in a single object. Callable like a getter, but includes a `set` method for updating the signal's value.\n */\nexport interface Writable<T> extends Signal<T> {\n set: Setter<T>;\n}\n\n/**\n * Utility type for a value that may be a getter or a plain value.\n * This value can be unwrapped to a plain value with `get` or `untracked` (depending on whether you're in a tracking context and need to track it).\n */\nexport type MaybeSignal<T> = Signal<T> | T;\n\nexport type EqualityFn<T> = (previousValue: T, nextValue: T) => boolean;\n\nexport interface SignalOptions<T> {\n /**\n * A function to compare the current and next values. Returning `true` means the value has changed.\n */\n equals?: EqualityFn<T>;\n}\n\n/* -------------- PUBLIC API --------------- */\n\nexport function writable<T>(): Writable<T | undefined>;\nexport function writable<T>(initialValue: undefined, options: SignalOptions<T | undefined>): Writable<T | undefined>;\nexport function writable<T>(initialValue: T, options?: SignalOptions<T>): Writable<T>;\n\nexport function writable<T>(initialValue?: T, options?: SignalOptions<T>): Writable<T> {\n const v: Value<unknown> = {\n previousValue: initialValue as T,\n value: initialValue as T,\n equals: (options?.equals as EqualityFn<unknown>) ?? strictEqual,\n subs: undefined,\n subsTail: undefined,\n flags: 1 satisfies ReactiveFlags.Mutable,\n };\n const fn = _getter.bind(v) as Writable<T>;\n fn.set = _setter.bind(v);\n return fn;\n}\n\n/**\n * Ensures that a value is a read-only signal.\n *\n * @example\n * const $number = readable(5); // converts plain values to signals\n *\n * const $number = writable(5);\n * const $value = readable($number);\n * $number(); // 5\n * $value(); // 5\n * $number.set(6);\n * $number(); // 6\n * $value(); // 6 (tracks value but can't be written)\n */\nexport function readable<T>(signal: MaybeSignal<T>): Signal<T> {\n return memo(() => signal);\n}\n\n/**\n * Creates a new signal, returning a getter and setter pair.\n *\n * @example\n * const [$count, setCount] = signal(0);\n */\nexport function signal<T>(initialValue: T, options?: SignalOptions<T>): [Signal<T>, Setter<T>];\n\nexport function signal<T>(\n initialValue: undefined,\n options: SignalOptions<T>,\n): [Signal<T | undefined>, Setter<T | undefined>];\n\nexport function signal<T>(): [Signal<T | undefined>, Setter<T | undefined>];\n\nexport function signal<T>(initialValue?: T, options?: SignalOptions<T>): [Signal<T>, Setter<T>] {\n const v: Value<unknown> = {\n previousValue: initialValue as T,\n value: initialValue as T,\n equals: (options?.equals as EqualityFn<unknown>) ?? strictEqual,\n subs: undefined,\n subsTail: undefined,\n flags: 1 satisfies ReactiveFlags.Mutable,\n };\n return [_getter.bind(v) as Signal<T>, _setter.bind(v)];\n}\n\nexport interface MemoOptions<T> extends SignalOptions<T> {\n /**\n * An array of signals this `memo` depends on. If this is passed, calls to signals within `fn` will NOT be tracked.\n * Instead the `deps` array will be tracked and `fn` will re-run when any value in `deps` changes.\n */\n deps?: Signal<any>[];\n}\n\n/**\n * Creates a derived signal that recomputes its value only when its dependencies change.\n * Subsequent calls will return a cached value.\n * Dependencies are tracked when called inside `fn` by default,\n * but can be overridden by passing a `deps` array in the options object.\n */\nexport function memo<T>(compute: (previousValue?: T) => MaybeSignal<T>, options?: MemoOptions<T>): Signal<T> {\n return _computed.bind({\n value: undefined,\n subs: undefined,\n subsTail: undefined,\n deps: undefined,\n depsTail: undefined,\n flags: 17 as ReactiveFlags.Mutable | ReactiveFlags.Dirty,\n getter: function (this: ComputedGetterState<any>) {\n if (options?.deps) {\n for (let dep of options.deps) get(dep);\n return get(untracked(() => compute(this.value)));\n }\n return get(compute(this.value));\n },\n equals: (options?.equals as EqualityFn<unknown>) ?? strictEqual,\n }) as () => T;\n}\n\n/**\n * Suspends effects during `fn`. Effects for all updated Signal values are called at the end of the batch.\n */\nexport function batch(fn: () => void): void {\n ++batchDepth;\n fn();\n if (!--batchDepth) flush();\n}\n\n/**\n * Call a Signal function without tracking its value.\n */\nexport function untracked<T>(value: MaybeSignal<T>): T {\n if (isFunction(value)) {\n let result: T;\n const pausedSub = setCurrentSub(undefined);\n result = value();\n setCurrentSub(pausedSub);\n return result;\n } else {\n return value;\n }\n}\n\n/**\n * Unwraps the plain value from a Signal. If the value is not a Signal it is returned as-is.\n */\nexport function get<T>(value: MaybeSignal<T>): T {\n if (isFunction(value)) {\n return (value as () => T)();\n } else {\n return value;\n }\n}\n\n/**\n * Function to be invoked for the effect. Can return an optional cleanup function to be called between invocations.\n */\nexport type EffectFn = () => void | (() => void);\n\nexport type UnsubscribeFn = () => void;\n\n/**\n * Creates a tracked scope that re-runs whenever the values of any tracked reactives changes.\n * Reactives are tracked by accessing their `value` within the body of the function.\n *\n * NOTE: You must call the unsubscribe function to clean up the effect.\n * If you are using an effect inside a View or Store, try the `useEffect` hook instead, which cleans up automatically when the component unmounts.\n */\nexport function effect(fn: EffectFn): UnsubscribeFn {\n const e: Effect = {\n fn,\n subs: undefined,\n subsTail: undefined,\n deps: undefined,\n depsTail: undefined,\n flags: 2 satisfies ReactiveFlags.Watching,\n };\n if (activeSub !== undefined) {\n link(e, activeSub);\n } else if (activeScope !== undefined) {\n link(e, activeScope);\n }\n const prev = setCurrentSub(e);\n try {\n e.cleanup?.();\n const result = e.fn();\n e.cleanup = isFunction(result) ? result : undefined;\n } finally {\n setCurrentSub(prev);\n }\n return _effect.bind(e);\n}\n","import { isString } from \"../typeChecking.js\";\nimport type { Env } from \"../types.js\";\nimport { createMatcher, noOp, okhash, type MatcherFunction } from \"../utils.js\";\nimport { getEnv } from \"./env.js\";\nimport { get, untracked, type MaybeSignal } from \"./signals.js\";\n\nexport interface LogLevels {\n info: boolean | Env;\n log: boolean | Env;\n warn: boolean | Env;\n error: boolean | Env;\n}\n\nexport interface Logger {\n info(...args: any[]): void;\n log(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n crash(error: Error): Error;\n}\n\nexport interface LoggerOptions {\n /**\n * Tag value to print with logs.\n */\n tag?: string;\n\n /**\n * Label for tag value. Will be printed without a label if not specified.\n */\n tagName?: string;\n\n /**\n * Console object to use for logging (mostly for testing). Uses window.console by default.\n */\n console?: any;\n}\n\nexport interface LoggerCrashProps {\n error: Error;\n loggerName: string;\n tag?: string;\n tagName?: string;\n}\n\nlet levels: LogLevels = {\n info: \"development\",\n log: \"development\",\n warn: \"development\",\n error: true,\n};\nlet match: MatcherFunction = createMatcher(\"*,-dolla.*\");\nlet crashListeners: ((context: LoggerCrashProps) => void)[] = [];\nlet isCrashed = false;\n\n/**\n * Listen for logged crashes.\n */\nexport function onLoggerCrash(listener: (context: LoggerCrashProps) => void) {\n crashListeners.push(listener);\n\n return function cancel() {\n crashListeners.splice(crashListeners.indexOf(listener), 1);\n };\n}\n\nexport function createLogger(name: MaybeSignal<string>, options?: LoggerOptions): Logger {\n const _console = options?.console ?? _getDefaultConsole();\n\n const bind = (method: keyof LogLevels) => {\n let _name = untracked(name);\n if (levels[method] === false || (isString(levels[method]) && levels[method] !== getEnv()) || !match(_name)) {\n return noOp;\n } else {\n let label = `%c${_name}`;\n if (options?.tag) {\n if (options.tagName) {\n label += ` %c[${options.tagName}: %c${options.tag}%c]`;\n } else {\n label += ` %c[%c${options.tag}%c]`;\n }\n } else {\n label += `%c%c%c`;\n }\n return _console[method].bind(\n _console,\n label,\n `color:${okhash(label)};font-weight:bold`,\n `color:#777`,\n `color:#aaa`,\n `color:#777`,\n );\n }\n };\n\n return {\n get info() {\n return bind(\"info\");\n },\n get log() {\n return bind(\"log\");\n },\n get warn() {\n return bind(\"warn\");\n },\n get error() {\n return bind(\"error\");\n },\n crash(error: Error) {\n if (!isCrashed) {\n isCrashed = true;\n const ctx: LoggerCrashProps = {\n error,\n loggerName: get(name),\n tag: options?.tag,\n tagName: options?.tagName,\n };\n\n for (const listener of crashListeners) {\n listener(ctx);\n }\n\n throw error;\n }\n\n return error;\n },\n };\n}\n\nexport function setLogFilter(filter: string | RegExp) {\n match = createMatcher(filter);\n}\n\nexport function setLogLevels(options: Partial<LogLevels>) {\n for (const key in options) {\n const value = options[key as keyof LogLevels];\n if (value) {\n levels[key as keyof LogLevels] = value;\n }\n }\n}\n\nfunction _getDefaultConsole() {\n if (typeof window !== \"undefined\" && window.console) {\n return window.console;\n }\n if (typeof global !== \"undefined\" && global.console) {\n return global.console;\n }\n}\n"],"names":["noOp","idCounter","getUniqueId","intCounter","getIntegerId","strictEqual","a","b","shallowEqual","t","typeOf","size","key","isFunction","deepEqual","length","i","keys","omit","object","newObject","toArray","value","toCamelCase","s","x","moveBefore","parent","node","child","okhash","hue","createMatcher","pattern","matchers","parts","p","part","section","name","positive","negative","fn","currentEnv","getEnv","setEnv","ReactiveFlags","createReactiveSystem","update","notify","unwatched","link","unlink","propagate","checkDirty","endTracking","startTracking","shallowPropagate","dep","sub","prevDep","nextDep","recursedCheck","prevSub","isValidLink","newLink","nextSub","next","stack","top","flags","subSubs","depsTail","toRemove","checkDepth","depFlags","dirty","subs","firstSub","hasMultipleSubs","subFlags","checkLink","queuedEffects","signal","updateComputed","updateSignal","_effect","batchDepth","notifyIndex","queuedEffectsLength","activeSub","activeContext","setCurrentSub","getCurrentContext","setCurrentContext","context","prevContext","c","oldValue","state","run","prev","result","flush","effect","_computed","_getter","_setter","get","writable","initialValue","options","v","readable","memo","compute","untracked","batch","pausedSub","e","levels","match","crashListeners","isCrashed","onLoggerCrash","listener","createLogger","_console","_getDefaultConsole","bind","method","_name","isString","label","error","ctx","setLogFilter","filter","setLogLevels"],"mappings":"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","x_google_ignoreList":[2]}
|