@manyducks.co/dolla 2.0.0-alpha.54 → 2.0.0-alpha.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +1 -12
  2. package/dist/core/context.d.ts +80 -54
  3. package/dist/core/index.d.ts +8 -8
  4. package/dist/core/logger.d.ts +1 -1
  5. package/dist/core/markup.d.ts +10 -10
  6. package/dist/core/mount.d.ts +11 -6
  7. package/dist/core/nodes/dynamic.d.ts +3 -3
  8. package/dist/core/nodes/html.d.ts +5 -5
  9. package/dist/core/nodes/outlet.d.ts +3 -4
  10. package/dist/core/nodes/portal.d.ts +2 -2
  11. package/dist/core/nodes/repeat.d.ts +6 -6
  12. package/dist/core/nodes/view.d.ts +13 -81
  13. package/dist/core/symbols.d.ts +0 -2
  14. package/dist/core/views/fragment.d.ts +2 -2
  15. package/dist/fragment-VXM-P2tT.js +7 -0
  16. package/dist/fragment-VXM-P2tT.js.map +1 -0
  17. package/dist/http.js +1 -1
  18. package/dist/i18n.js +14 -14
  19. package/dist/i18n.js.map +1 -1
  20. package/dist/index.js +45 -59
  21. package/dist/index.js.map +1 -1
  22. package/dist/jsx-dev-runtime.js +8 -8
  23. package/dist/jsx-dev-runtime.js.map +1 -1
  24. package/dist/jsx-runtime.js +9 -9
  25. package/dist/jsx-runtime.js.map +1 -1
  26. package/dist/{logger-CBfhf3fA.js → logger-CXdzxt1e.js} +74 -73
  27. package/dist/{logger-CBfhf3fA.js.map → logger-CXdzxt1e.js.map} +1 -1
  28. package/dist/markup-yTuFdC0t.js +923 -0
  29. package/dist/markup-yTuFdC0t.js.map +1 -0
  30. package/dist/router/router.d.ts +9 -6
  31. package/dist/router-B-rtBG7i.js +488 -0
  32. package/dist/router-B-rtBG7i.js.map +1 -0
  33. package/dist/router.js +1 -1
  34. package/dist/router.js.map +1 -1
  35. package/dist/{typeChecking-EAVNeFyB.js → typeChecking-lgllKIVq.js} +5 -5
  36. package/dist/{typeChecking-EAVNeFyB.js.map → typeChecking-lgllKIVq.js.map} +1 -1
  37. package/dist/types.d.ts +1 -1
  38. package/docs/mixins.md +1 -1
  39. package/docs/ref.md +93 -0
  40. package/notes/scratch.md +24 -0
  41. package/package.json +2 -2
  42. package/dist/core/mixin.d.ts +0 -62
  43. package/dist/core/store.d.ts +0 -57
  44. package/dist/core/views/passthrough.d.ts +0 -5
  45. package/dist/fragment-CmWsN-4Y.js +0 -8
  46. package/dist/fragment-CmWsN-4Y.js.map +0 -1
  47. package/dist/router-BoJac1lD.js +0 -482
  48. package/dist/router-BoJac1lD.js.map +0 -1
  49. package/dist/view-BKpHFpWG.js +0 -1044
  50. package/dist/view-BKpHFpWG.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { c as T, t as q, i as B } from "./typeChecking-EAVNeFyB.js";
1
+ import { c as D, t as q, b as B } from "./typeChecking-lgllKIVq.js";
2
2
  var v = /* @__PURE__ */ ((e) => (e[e.Computed = 1] = "Computed", e[e.Effect = 2] = "Effect", e[e.Tracking = 4] = "Tracking", e[e.Notified = 8] = "Notified", e[e.Recursed = 16] = "Recursed", e[e.Dirty = 32] = "Dirty", e[e.PendingComputed = 64] = "PendingComputed", e[e.PendingEffect = 128] = "PendingEffect", e[e.Propagated = 224] = "Propagated", e))(v || {});
3
3
  function _({
4
4
  updateComputed: e,
@@ -22,9 +22,9 @@ function _({
22
22
  s.depsTail = c;
23
23
  return;
24
24
  }
25
- const o = n.subsTail;
26
- if (!(o !== void 0 && o.sub === s && E(o, s)))
27
- return u(n, s, c, i);
25
+ const u = n.subsTail;
26
+ if (!(u !== void 0 && u.sub === s && E(u, s)))
27
+ return o(n, s, c, i);
28
28
  },
29
29
  /**
30
30
  * Traverses and marks subscribers starting from the provided link.
@@ -38,15 +38,15 @@ function _({
38
38
  propagate(n) {
39
39
  let s = 32, i = n, c = 0;
40
40
  e: do {
41
- const o = n.sub, a = o.flags;
42
- if (!(a & 244) && (o.flags = a | s | 8, !0) || a & 16 && !(a & 4) && (o.flags = a & -17 | s | 8, !0) || !(a & 224) && E(n, o) && (o.flags = a | 16 | s | 8, o.subs !== void 0)) {
43
- const g = o.subs;
41
+ const u = n.sub, a = u.flags;
42
+ if (!(a & 244) && (u.flags = a | s | 8, !0) || a & 16 && !(a & 4) && (u.flags = a & -17 | s | 8, !0) || !(a & 224) && E(n, u) && (u.flags = a | 16 | s | 8, u.subs !== void 0)) {
43
+ const g = u.subs;
44
44
  if (g !== void 0) {
45
45
  g.nextSub !== void 0 ? (g.prevSub = i, n = i = g, s = 64, ++c) : (n = g, s = a & 2 ? 128 : 64);
46
46
  continue;
47
47
  }
48
- a & 2 && (r !== void 0 ? r.depsTail.nextDep = o.deps : f = o, r = o);
49
- } else a & (4 | s) ? !(a & s) && a & 224 && E(n, o) && (o.flags = a | s) : (o.flags = a | s | 8, (a & 10) === 2 && (r !== void 0 ? r.depsTail.nextDep = o.deps : f = o, r = o));
48
+ a & 2 && (r !== void 0 ? r.depsTail.nextDep = u.deps : f = u, r = u);
49
+ } else a & (4 | s) ? !(a & s) && a & 224 && E(n, u) && (u.flags = a | s) : (u.flags = a | s | 8, (a & 10) === 2 && (r !== void 0 ? r.depsTail.nextDep = u.deps : f = u, r = u));
50
50
  if ((n = i.nextSub) !== void 0) {
51
51
  i = n, s = c ? 64 : 32;
52
52
  continue;
@@ -153,21 +153,21 @@ function _({
153
153
  }
154
154
  }
155
155
  };
156
- function u(n, s, i, c) {
157
- const o = {
156
+ function o(n, s, i, c) {
157
+ const u = {
158
158
  dep: n,
159
159
  sub: s,
160
160
  nextDep: i,
161
161
  prevSub: void 0,
162
162
  nextSub: void 0
163
163
  };
164
- if (c === void 0 ? s.deps = o : c.nextDep = o, n.subs === void 0)
165
- n.subs = o;
164
+ if (c === void 0 ? s.deps = u : c.nextDep = u, n.subs === void 0)
165
+ n.subs = u;
166
166
  else {
167
167
  const a = n.subsTail;
168
- o.prevSub = a, a.nextSub = o;
168
+ u.prevSub = a, a.nextSub = u;
169
169
  }
170
- return s.depsTail = o, n.subsTail = o, o;
170
+ return s.depsTail = u, n.subsTail = u, u;
171
171
  }
172
172
  function l(n) {
173
173
  let s = 0, i;
@@ -175,13 +175,13 @@ function _({
175
175
  i = !1;
176
176
  const c = n.dep;
177
177
  if ("flags" in c) {
178
- const o = c.flags;
179
- if ((o & 33) === 33) {
178
+ const u = c.flags;
179
+ if ((u & 33) === 33) {
180
180
  if (e(c)) {
181
181
  const a = c.subs;
182
182
  a.nextSub !== void 0 && d(a), i = !0;
183
183
  }
184
- } else if ((o & 65) === 65) {
184
+ } else if ((u & 65) === 65) {
185
185
  const a = c.subs;
186
186
  a.nextSub !== void 0 && (a.prevSub = n), n = c.deps, ++s;
187
187
  continue;
@@ -192,27 +192,27 @@ function _({
192
192
  continue;
193
193
  }
194
194
  if (s) {
195
- let o = n.sub;
195
+ let u = n.sub;
196
196
  do {
197
197
  --s;
198
- const a = o.subs;
198
+ const a = u.subs;
199
199
  if (i) {
200
- if (e(o)) {
201
- (n = a.prevSub) !== void 0 ? (a.prevSub = void 0, d(o.subs), o = n.sub) : o = a.sub;
200
+ if (e(u)) {
201
+ (n = a.prevSub) !== void 0 ? (a.prevSub = void 0, d(u.subs), u = n.sub) : u = a.sub;
202
202
  continue;
203
203
  }
204
204
  } else
205
- o.flags &= -65;
205
+ u.flags &= -65;
206
206
  if ((n = a.prevSub) !== void 0) {
207
207
  if (a.prevSub = void 0, n.nextDep !== void 0) {
208
208
  n = n.nextDep;
209
209
  continue e;
210
210
  }
211
- o = n.sub;
211
+ u = n.sub;
212
212
  } else {
213
213
  if ((n = a.nextDep) !== void 0)
214
214
  continue e;
215
- o = a.sub;
215
+ u = a.sub;
216
216
  }
217
217
  i = !1;
218
218
  } while (s);
@@ -242,8 +242,8 @@ function _({
242
242
  }
243
243
  function C(n) {
244
244
  do {
245
- const s = n.dep, i = n.nextDep, c = n.nextSub, o = n.prevSub;
246
- if (c !== void 0 ? c.prevSub = o : s.subsTail = o, o !== void 0 ? o.nextSub = c : s.subs = c, s.subs === void 0 && "deps" in s) {
245
+ const s = n.dep, i = n.nextDep, c = n.nextSub, u = n.prevSub;
246
+ if (c !== void 0 ? c.prevSub = u : s.subsTail = u, u !== void 0 ? u.nextSub = c : s.subs = c, s.subs === void 0 && "deps" in s) {
247
247
  const a = s.flags;
248
248
  a & 32 || (s.flags = a | 32);
249
249
  const g = s.deps;
@@ -355,10 +355,10 @@ function R() {
355
355
  const $ = Symbol("SIGNAL"), U = Symbol("SOURCE");
356
356
  function pe(e) {
357
357
  let t;
358
- return z(), t = D(e), R(), t;
358
+ return z(), t = T(e), R(), t;
359
359
  }
360
- function D(e) {
361
- return T(e) ? e() : e;
360
+ function T(e) {
361
+ return D(e) ? e() : e;
362
362
  }
363
363
  function ge(e) {
364
364
  const t = {
@@ -372,14 +372,14 @@ function ge(e) {
372
372
  return p !== void 0 && O(t, p), V(t), ne.bind(t);
373
373
  }
374
374
  function ve(e, t) {
375
- return T(e) ? re(e, t) : j(e === void 0 ? void 0 : e, t);
375
+ return D(e) ? re(e, t) : j(e === void 0 ? void 0 : e, t);
376
376
  }
377
377
  function j(e, t) {
378
378
  const f = {
379
379
  current: e,
380
380
  subs: void 0,
381
381
  subsTail: void 0
382
- }, r = (t == null ? void 0 : t.equals) ?? Object.is, u = function() {
382
+ }, r = (t == null ? void 0 : t.equals) ?? Object.is, o = function() {
383
383
  if (arguments.length > 0) {
384
384
  let l = arguments[0];
385
385
  if (typeof l == "function" && (l = l(f.current)), !r(f.current, l)) {
@@ -390,10 +390,10 @@ function j(e, t) {
390
390
  } else
391
391
  return p !== void 0 && O(f, p), f.current;
392
392
  };
393
- return u._type = U, u;
393
+ return o._type = U, o;
394
394
  }
395
395
  function re(e, t) {
396
- if (T(e) && e._type === $)
396
+ if (D(e) && e._type === $)
397
397
  return e._type === U ? () => e() : e;
398
398
  const f = {
399
399
  current: void 0,
@@ -403,16 +403,16 @@ function re(e, t) {
403
403
  deps: void 0,
404
404
  depsTail: void 0,
405
405
  flags: v.Computed | v.Dirty,
406
- getter: (u) => {
407
- const l = e(u);
408
- return D(l);
406
+ getter: (o) => {
407
+ const l = e(o);
408
+ return T(l);
409
409
  }
410
410
  }, r = function() {
411
411
  if (arguments.length > 0)
412
412
  throw new Error("Signals cannot be set as their values are derived from the sources they depend on.");
413
413
  p !== void 0 && O(f, p);
414
- const u = f.flags;
415
- return u & (v.Dirty | v.PendingComputed) && F(f, u), f.current;
414
+ const o = f.flags;
415
+ return o & (v.Dirty | v.PendingComputed) && F(f, o), f.current;
416
416
  };
417
417
  return r._type = $, r;
418
418
  }
@@ -433,26 +433,26 @@ function xe(e, t) {
433
433
  switch (f) {
434
434
  case "object":
435
435
  let r = 0;
436
- for (const u in e) {
437
- if (e[u] !== t[u]) return !1;
436
+ for (const o in e) {
437
+ if (e[o] !== t[o]) return !1;
438
438
  r++;
439
439
  }
440
440
  return Object.keys(t).length === r;
441
441
  case "array":
442
442
  if (e.length !== t.length) return !1;
443
- for (let u = 0; u < e.length; u++)
444
- if (e[u] !== t[u]) return !1;
443
+ for (let o = 0; o < e.length; o++)
444
+ if (e[o] !== t[o]) return !1;
445
445
  return !0;
446
446
  case "map":
447
447
  if (e.size !== t.size) return !1;
448
- for (const u of e.keys())
449
- if (e[u] !== t[u]) return !1;
448
+ for (const o of e.keys())
449
+ if (e[o] !== t[o]) return !1;
450
450
  return !0;
451
451
  case "set":
452
- if (T(e.symmetricDifference))
452
+ if (D(e.symmetricDifference))
453
453
  return e.symmetricDifference(t).size === 0;
454
- for (const u of e.keys())
455
- if (e[u] !== t.get(u)) return !1;
454
+ for (const o of e.keys())
455
+ if (e[o] !== t.get(o)) return !1;
456
456
  return !0;
457
457
  }
458
458
  return !1;
@@ -461,7 +461,7 @@ function m(e, t) {
461
461
  if (e === t) return !0;
462
462
  if (e && t && typeof e == "object" && typeof t == "object") {
463
463
  if (e.constructor !== t.constructor) return !1;
464
- var f, r, u;
464
+ var f, r, o;
465
465
  if (Array.isArray(e)) {
466
466
  if (f = e.length, f != t.length) return !1;
467
467
  for (r = f; r-- !== 0; ) if (!m(e[r], t[r])) return !1;
@@ -486,17 +486,17 @@ function m(e, t) {
486
486
  if (e.constructor === RegExp) return e.source === t.source && e.flags === t.flags;
487
487
  if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === t.valueOf();
488
488
  if (e.toString !== Object.prototype.toString) return e.toString() === t.toString();
489
- if (u = Object.keys(e), f = u.length, f !== Object.keys(t).length) return !1;
490
- for (r = f; r-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(t, u[r])) return !1;
489
+ if (o = Object.keys(e), f = o.length, f !== Object.keys(t).length) return !1;
490
+ for (r = f; r-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(t, o[r])) return !1;
491
491
  for (r = f; r-- !== 0; ) {
492
- var l = u[r];
492
+ var l = o[r];
493
493
  if (!m(e[l], t[l])) return !1;
494
494
  }
495
495
  return !0;
496
496
  }
497
497
  return e !== e && t !== t;
498
498
  }
499
- function De(e, t) {
499
+ function Te(e, t) {
500
500
  const f = {};
501
501
  for (const r in t)
502
502
  e.includes(r) || (f[r] = t[r]);
@@ -516,25 +516,25 @@ function M(e) {
516
516
  negative: []
517
517
  }, f = e.split(",").map((r) => r.trim()).filter((r) => r !== "");
518
518
  for (let r of f) {
519
- let u = "positive";
520
- r.startsWith("-") && (u = "negative", r = r.slice(1)), r === "*" ? t[u].push(function() {
519
+ let o = "positive";
520
+ r.startsWith("-") && (o = "negative", r = r.slice(1)), r === "*" ? t[o].push(function() {
521
521
  return !0;
522
- }) : r.endsWith("*") ? t[u].push(function(l) {
522
+ }) : r.endsWith("*") ? t[o].push(function(l) {
523
523
  return l.startsWith(r.slice(0, r.length - 1));
524
- }) : t[u].push(function(l) {
524
+ }) : t[o].push(function(l) {
525
525
  return l === r;
526
526
  });
527
527
  }
528
528
  return function(r) {
529
- const { positive: u, negative: l } = t;
530
- return !(l.some((d) => d(r)) || u.length > 0 && !u.some((d) => d(r)));
529
+ const { positive: o, negative: l } = t;
530
+ return !(l.some((d) => d(r)) || o.length > 0 && !o.some((d) => d(r)));
531
531
  };
532
532
  }
533
533
  let G = "production";
534
534
  function ie() {
535
535
  return G;
536
536
  }
537
- function Te(e) {
537
+ function De(e) {
538
538
  G = e;
539
539
  }
540
540
  let y = {
@@ -542,20 +542,20 @@ let y = {
542
542
  log: "development",
543
543
  warn: "development",
544
544
  error: !0
545
- }, W = M("*,-Dolla.*"), x = [];
545
+ }, W = M("*,-dolla.*"), x = [];
546
546
  function Ee(e) {
547
547
  return x.push(e), function() {
548
548
  x.splice(x.indexOf(e), 1);
549
549
  };
550
550
  }
551
551
  function Se(e, t) {
552
- const f = (t == null ? void 0 : t.console) ?? oe(), r = (u) => {
553
- let l = D(e);
554
- if (y[u] === !1 || B(y[u]) && y[u] !== ie() || !W(l))
552
+ const f = (t == null ? void 0 : t.console) ?? ue(), r = (o) => {
553
+ let l = T(e);
554
+ if (y[o] === !1 || B(y[o]) && y[o] !== ie() || !W(l))
555
555
  return se;
556
556
  {
557
557
  let d = `%c${l}`;
558
- return t != null && t.tag ? t.tagName ? d += ` %c[${t.tagName}: %c${t.tag}%c]` : d += ` %c[%c${t.tag}%c]` : d += "%c%c%c", f[u].bind(
558
+ return t != null && t.tag ? t.tagName ? d += ` %c[${t.tagName}: %c${t.tag}%c]` : d += ` %c[%c${t.tag}%c]` : d += "%c%c%c", f[o].bind(
559
559
  f,
560
560
  d,
561
561
  `color:${fe(d)};font-weight:bold`,
@@ -578,15 +578,16 @@ function Se(e, t) {
578
578
  get error() {
579
579
  return r("error");
580
580
  },
581
- crash(u) {
581
+ crash(o) {
582
582
  const l = {
583
- error: u,
584
- loggerName: D(e),
583
+ error: o,
584
+ loggerName: T(e),
585
585
  tag: t == null ? void 0 : t.tag,
586
586
  tagName: t == null ? void 0 : t.tagName
587
587
  };
588
588
  for (const d of x)
589
589
  d(l);
590
+ return o;
590
591
  }
591
592
  };
592
593
  }
@@ -599,7 +600,7 @@ function me(e) {
599
600
  f && (y[t] = f);
600
601
  }
601
602
  }
602
- function oe() {
603
+ function ue() {
603
604
  if (typeof window < "u" && window.console)
604
605
  return window.console;
605
606
  if (typeof global < "u" && global.console)
@@ -609,17 +610,17 @@ export {
609
610
  ve as $,
610
611
  ye as a,
611
612
  ie as b,
612
- Te as c,
613
+ De as c,
613
614
  m as d,
614
615
  ge as e,
615
616
  Se as f,
616
- D as g,
617
+ T as g,
617
618
  we as h,
618
619
  me as i,
619
620
  he as j,
620
- De as k,
621
+ Te as k,
621
622
  Ee as o,
622
623
  pe as p,
623
624
  xe as s
624
625
  };
625
- //# sourceMappingURL=logger-CBfhf3fA.js.map
626
+ //# sourceMappingURL=logger-CXdzxt1e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger-CBfhf3fA.js","sources":["../node_modules/alien-signals/esm/index.mjs","../src/core/signals.ts","../src/utils.ts","../src/core/env.ts","../src/core/logger.ts"],"sourcesContent":["// src/system.ts\nvar SubscriberFlags = /* @__PURE__ */ ((SubscriberFlags2) => {\n SubscriberFlags2[SubscriberFlags2[\"Computed\"] = 1] = \"Computed\";\n SubscriberFlags2[SubscriberFlags2[\"Effect\"] = 2] = \"Effect\";\n SubscriberFlags2[SubscriberFlags2[\"Tracking\"] = 4] = \"Tracking\";\n SubscriberFlags2[SubscriberFlags2[\"Notified\"] = 8] = \"Notified\";\n SubscriberFlags2[SubscriberFlags2[\"Recursed\"] = 16] = \"Recursed\";\n SubscriberFlags2[SubscriberFlags2[\"Dirty\"] = 32] = \"Dirty\";\n SubscriberFlags2[SubscriberFlags2[\"PendingComputed\"] = 64] = \"PendingComputed\";\n SubscriberFlags2[SubscriberFlags2[\"PendingEffect\"] = 128] = \"PendingEffect\";\n SubscriberFlags2[SubscriberFlags2[\"Propagated\"] = 224] = \"Propagated\";\n return SubscriberFlags2;\n})(SubscriberFlags || {});\nfunction createReactiveSystem({\n updateComputed,\n notifyEffect: notifyEffect2\n}) {\n let queuedEffects;\n let queuedEffectsTail;\n return {\n /**\n * Links a given dependency and subscriber if they are not already linked.\n * \n * @param dep - The dependency to be linked.\n * @param sub - The subscriber that depends on this dependency.\n * @returns The newly created link object if the two are not already linked; otherwise `undefined`.\n */\n link(dep, sub) {\n const currentDep = sub.depsTail;\n if (currentDep !== void 0 && currentDep.dep === dep) {\n return;\n }\n const nextDep = currentDep !== void 0 ? currentDep.nextDep : sub.deps;\n if (nextDep !== void 0 && nextDep.dep === dep) {\n sub.depsTail = nextDep;\n return;\n }\n const depLastSub = dep.subsTail;\n if (depLastSub !== void 0 && depLastSub.sub === sub && isValidLink(depLastSub, sub)) {\n return;\n }\n return linkNewDep(dep, sub, nextDep, currentDep);\n },\n /**\n * Traverses and marks subscribers starting from the provided link.\n * \n * It sets flags (e.g., Dirty, PendingComputed, PendingEffect) on each subscriber\n * to indicate which ones require re-computation or effect processing. \n * This function should be called after a signal's value changes.\n * \n * @param link - The starting link from which propagation begins.\n */\n propagate(link2) {\n let targetFlag = 32 /* Dirty */;\n let subs = link2;\n let stack = 0;\n top: do {\n const sub = link2.sub;\n const subFlags = sub.flags;\n if (!(subFlags & (4 /* Tracking */ | 16 /* Recursed */ | 224 /* Propagated */)) && (sub.flags = subFlags | targetFlag | 8 /* Notified */, true) || subFlags & 16 /* Recursed */ && !(subFlags & 4 /* Tracking */) && (sub.flags = subFlags & ~16 /* Recursed */ | targetFlag | 8 /* Notified */, true) || !(subFlags & 224 /* Propagated */) && isValidLink(link2, sub) && (sub.flags = subFlags | 16 /* Recursed */ | targetFlag | 8 /* Notified */, sub.subs !== void 0)) {\n const subSubs = sub.subs;\n if (subSubs !== void 0) {\n if (subSubs.nextSub !== void 0) {\n subSubs.prevSub = subs;\n link2 = subs = subSubs;\n targetFlag = 64 /* PendingComputed */;\n ++stack;\n } else {\n link2 = subSubs;\n targetFlag = subFlags & 2 /* Effect */ ? 128 /* PendingEffect */ : 64 /* PendingComputed */;\n }\n continue;\n }\n if (subFlags & 2 /* Effect */) {\n if (queuedEffectsTail !== void 0) {\n queuedEffectsTail.depsTail.nextDep = sub.deps;\n } else {\n queuedEffects = sub;\n }\n queuedEffectsTail = sub;\n }\n } else if (!(subFlags & (4 /* Tracking */ | targetFlag))) {\n sub.flags = subFlags | targetFlag | 8 /* Notified */;\n if ((subFlags & (2 /* Effect */ | 8 /* Notified */)) === 2 /* Effect */) {\n if (queuedEffectsTail !== void 0) {\n queuedEffectsTail.depsTail.nextDep = sub.deps;\n } else {\n queuedEffects = sub;\n }\n queuedEffectsTail = sub;\n }\n } else if (!(subFlags & targetFlag) && subFlags & 224 /* Propagated */ && isValidLink(link2, sub)) {\n sub.flags = subFlags | targetFlag;\n }\n if ((link2 = subs.nextSub) !== void 0) {\n subs = link2;\n targetFlag = stack ? 64 /* PendingComputed */ : 32 /* Dirty */;\n continue;\n }\n while (stack) {\n --stack;\n const dep = subs.dep;\n const depSubs = dep.subs;\n subs = depSubs.prevSub;\n depSubs.prevSub = void 0;\n if ((link2 = subs.nextSub) !== void 0) {\n subs = link2;\n targetFlag = stack ? 64 /* PendingComputed */ : 32 /* Dirty */;\n continue top;\n }\n }\n break;\n } while (true);\n },\n /**\n * Prepares the given subscriber to track new dependencies.\n * \n * It resets the subscriber's internal pointers (e.g., depsTail) and\n * sets its flags to indicate it is now tracking dependency links.\n * \n * @param sub - The subscriber to start tracking.\n */\n startTracking(sub) {\n sub.depsTail = void 0;\n sub.flags = sub.flags & ~(8 /* Notified */ | 16 /* Recursed */ | 224 /* Propagated */) | 4 /* Tracking */;\n },\n /**\n * Concludes tracking of dependencies for the specified subscriber.\n * \n * It clears or unlinks any tracked dependency information, then\n * updates the subscriber's flags to indicate tracking is complete.\n * \n * @param sub - The subscriber whose tracking is ending.\n */\n endTracking(sub) {\n const depsTail = sub.depsTail;\n if (depsTail !== void 0) {\n const nextDep = depsTail.nextDep;\n if (nextDep !== void 0) {\n clearTracking(nextDep);\n depsTail.nextDep = void 0;\n }\n } else if (sub.deps !== void 0) {\n clearTracking(sub.deps);\n sub.deps = void 0;\n }\n sub.flags &= ~4 /* Tracking */;\n },\n /**\n * Updates the dirty flag for the given subscriber based on its dependencies.\n * \n * If the subscriber has any pending computeds, this function sets the Dirty flag\n * and returns `true`. Otherwise, it clears the PendingComputed flag and returns `false`.\n * \n * @param sub - The subscriber to update.\n * @param flags - The current flag set for this subscriber.\n * @returns `true` if the subscriber is marked as Dirty; otherwise `false`.\n */\n updateDirtyFlag(sub, flags) {\n if (checkDirty(sub.deps)) {\n sub.flags = flags | 32 /* Dirty */;\n return true;\n } else {\n sub.flags = flags & ~64 /* PendingComputed */;\n return false;\n }\n },\n /**\n * Updates the computed subscriber if necessary before its value is accessed.\n * \n * If the subscriber is marked Dirty or PendingComputed, this function runs\n * the provided updateComputed logic and triggers a shallowPropagate for any\n * downstream subscribers if an actual update occurs.\n * \n * @param computed - The computed subscriber to update.\n * @param flags - The current flag set for this subscriber.\n */\n processComputedUpdate(computed2, flags) {\n if (flags & 32 /* Dirty */ || (checkDirty(computed2.deps) ? true : (computed2.flags = flags & ~64 /* PendingComputed */, false))) {\n if (updateComputed(computed2)) {\n const subs = computed2.subs;\n if (subs !== void 0) {\n shallowPropagate(subs);\n }\n }\n }\n },\n /**\n * Ensures all pending internal effects for the given subscriber are processed.\n * \n * This should be called after an effect decides not to re-run itself but may still\n * have dependencies flagged with PendingEffect. If the subscriber is flagged with\n * PendingEffect, this function clears that flag and invokes `notifyEffect` on any\n * related dependencies marked as Effect and Propagated, processing pending effects.\n * \n * @param sub - The subscriber which may have pending effects.\n * @param flags - The current flags on the subscriber to check.\n */\n processPendingInnerEffects(sub, flags) {\n if (flags & 128 /* PendingEffect */) {\n sub.flags = flags & ~128 /* PendingEffect */;\n let link2 = sub.deps;\n do {\n const dep = link2.dep;\n if (\"flags\" in dep && dep.flags & 2 /* Effect */ && dep.flags & 224 /* Propagated */) {\n notifyEffect2(dep);\n }\n link2 = link2.nextDep;\n } while (link2 !== void 0);\n }\n },\n /**\n * Processes queued effect notifications after a batch operation finishes.\n * \n * Iterates through all queued effects, calling notifyEffect on each.\n * If an effect remains partially handled, its flags are updated, and future\n * notifications may be triggered until fully handled.\n */\n processEffectNotifications() {\n while (queuedEffects !== void 0) {\n const effect2 = queuedEffects;\n const depsTail = effect2.depsTail;\n const queuedNext = depsTail.nextDep;\n if (queuedNext !== void 0) {\n depsTail.nextDep = void 0;\n queuedEffects = queuedNext.sub;\n } else {\n queuedEffects = void 0;\n queuedEffectsTail = void 0;\n }\n if (!notifyEffect2(effect2)) {\n effect2.flags &= ~8 /* Notified */;\n }\n }\n }\n };\n function linkNewDep(dep, sub, nextDep, depsTail) {\n const newLink = {\n dep,\n sub,\n nextDep,\n prevSub: void 0,\n nextSub: void 0\n };\n if (depsTail === void 0) {\n sub.deps = newLink;\n } else {\n depsTail.nextDep = newLink;\n }\n if (dep.subs === void 0) {\n dep.subs = newLink;\n } else {\n const oldTail = dep.subsTail;\n newLink.prevSub = oldTail;\n oldTail.nextSub = newLink;\n }\n sub.depsTail = newLink;\n dep.subsTail = newLink;\n return newLink;\n }\n function checkDirty(link2) {\n let stack = 0;\n let dirty;\n top: do {\n dirty = false;\n const dep = link2.dep;\n if (\"flags\" in dep) {\n const depFlags = dep.flags;\n if ((depFlags & (1 /* Computed */ | 32 /* Dirty */)) === (1 /* Computed */ | 32 /* Dirty */)) {\n if (updateComputed(dep)) {\n const subs = dep.subs;\n if (subs.nextSub !== void 0) {\n shallowPropagate(subs);\n }\n dirty = true;\n }\n } else if ((depFlags & (1 /* Computed */ | 64 /* PendingComputed */)) === (1 /* Computed */ | 64 /* PendingComputed */)) {\n const depSubs = dep.subs;\n if (depSubs.nextSub !== void 0) {\n depSubs.prevSub = link2;\n }\n link2 = dep.deps;\n ++stack;\n continue;\n }\n }\n if (!dirty && link2.nextDep !== void 0) {\n link2 = link2.nextDep;\n continue;\n }\n if (stack) {\n let sub = link2.sub;\n do {\n --stack;\n const subSubs = sub.subs;\n if (dirty) {\n if (updateComputed(sub)) {\n if ((link2 = subSubs.prevSub) !== void 0) {\n subSubs.prevSub = void 0;\n shallowPropagate(sub.subs);\n sub = link2.sub;\n } else {\n sub = subSubs.sub;\n }\n continue;\n }\n } else {\n sub.flags &= ~64 /* PendingComputed */;\n }\n if ((link2 = subSubs.prevSub) !== void 0) {\n subSubs.prevSub = void 0;\n if (link2.nextDep !== void 0) {\n link2 = link2.nextDep;\n continue top;\n }\n sub = link2.sub;\n } else {\n if ((link2 = subSubs.nextDep) !== void 0) {\n continue top;\n }\n sub = subSubs.sub;\n }\n dirty = false;\n } while (stack);\n }\n return dirty;\n } while (true);\n }\n function shallowPropagate(link2) {\n do {\n const sub = link2.sub;\n const subFlags = sub.flags;\n if ((subFlags & (64 /* PendingComputed */ | 32 /* Dirty */)) === 64 /* PendingComputed */) {\n sub.flags = subFlags | 32 /* Dirty */ | 8 /* Notified */;\n if ((subFlags & (2 /* Effect */ | 8 /* Notified */)) === 2 /* Effect */) {\n if (queuedEffectsTail !== void 0) {\n queuedEffectsTail.depsTail.nextDep = sub.deps;\n } else {\n queuedEffects = sub;\n }\n queuedEffectsTail = sub;\n }\n }\n link2 = link2.nextSub;\n } while (link2 !== void 0);\n }\n function isValidLink(checkLink, sub) {\n const depsTail = sub.depsTail;\n if (depsTail !== void 0) {\n let link2 = sub.deps;\n do {\n if (link2 === checkLink) {\n return true;\n }\n if (link2 === depsTail) {\n break;\n }\n link2 = link2.nextDep;\n } while (link2 !== void 0);\n }\n return false;\n }\n function clearTracking(link2) {\n do {\n const dep = link2.dep;\n const nextDep = link2.nextDep;\n const nextSub = link2.nextSub;\n const prevSub = link2.prevSub;\n if (nextSub !== void 0) {\n nextSub.prevSub = prevSub;\n } else {\n dep.subsTail = prevSub;\n }\n if (prevSub !== void 0) {\n prevSub.nextSub = nextSub;\n } else {\n dep.subs = nextSub;\n }\n if (dep.subs === void 0 && \"deps\" in dep) {\n const depFlags = dep.flags;\n if (!(depFlags & 32 /* Dirty */)) {\n dep.flags = depFlags | 32 /* Dirty */;\n }\n const depDeps = dep.deps;\n if (depDeps !== void 0) {\n link2 = depDeps;\n dep.depsTail.nextDep = nextDep;\n dep.deps = void 0;\n dep.depsTail = void 0;\n continue;\n }\n }\n link2 = nextDep;\n } while (link2 !== void 0);\n }\n}\n\n// src/index.ts\nvar {\n link,\n propagate,\n updateDirtyFlag,\n startTracking,\n endTracking,\n processEffectNotifications,\n processComputedUpdate,\n processPendingInnerEffects\n} = createReactiveSystem({\n updateComputed(computed2) {\n const prevSub = activeSub;\n activeSub = computed2;\n startTracking(computed2);\n try {\n const oldValue = computed2.currentValue;\n const newValue = computed2.getter(oldValue);\n if (oldValue !== newValue) {\n computed2.currentValue = newValue;\n return true;\n }\n return false;\n } finally {\n activeSub = prevSub;\n endTracking(computed2);\n }\n },\n notifyEffect(e) {\n if (\"isScope\" in e) {\n return notifyEffectScope(e);\n } else {\n return notifyEffect(e);\n }\n }\n});\nvar pauseStack = [];\nvar batchDepth = 0;\nvar activeSub;\nvar activeScope;\nfunction startBatch() {\n ++batchDepth;\n}\nfunction endBatch() {\n if (!--batchDepth) {\n processEffectNotifications();\n }\n}\nfunction pauseTracking() {\n pauseStack.push(activeSub);\n activeSub = void 0;\n}\nfunction resumeTracking() {\n activeSub = pauseStack.pop();\n}\nfunction signal(oldValue) {\n return signalGetterSetter.bind({\n currentValue: oldValue,\n subs: void 0,\n subsTail: void 0\n });\n}\nfunction computed(getter) {\n return computedGetter.bind({\n currentValue: void 0,\n subs: void 0,\n subsTail: void 0,\n deps: void 0,\n depsTail: void 0,\n flags: 1 /* Computed */ | 32 /* Dirty */,\n getter\n });\n}\nfunction effect(fn) {\n const e = {\n fn,\n subs: void 0,\n subsTail: void 0,\n deps: void 0,\n depsTail: void 0,\n flags: 2 /* Effect */\n };\n if (activeSub !== void 0) {\n link(e, activeSub);\n } else if (activeScope !== void 0) {\n link(e, activeScope);\n }\n runEffect(e);\n return effectStop.bind(e);\n}\nfunction effectScope(fn) {\n const e = {\n deps: void 0,\n depsTail: void 0,\n flags: 2 /* Effect */,\n isScope: true\n };\n runEffectScope(e, fn);\n return effectStop.bind(e);\n}\nfunction runEffect(e) {\n const prevSub = activeSub;\n activeSub = e;\n startTracking(e);\n try {\n e.fn();\n } finally {\n activeSub = prevSub;\n endTracking(e);\n }\n}\nfunction runEffectScope(e, fn) {\n const prevSub = activeScope;\n activeScope = e;\n startTracking(e);\n try {\n fn();\n } finally {\n activeScope = prevSub;\n endTracking(e);\n }\n}\nfunction notifyEffect(e) {\n const flags = e.flags;\n if (flags & 32 /* Dirty */ || flags & 64 /* PendingComputed */ && updateDirtyFlag(e, flags)) {\n runEffect(e);\n } else {\n processPendingInnerEffects(e, e.flags);\n }\n return true;\n}\nfunction notifyEffectScope(e) {\n const flags = e.flags;\n if (flags & 128 /* PendingEffect */) {\n processPendingInnerEffects(e, e.flags);\n return true;\n }\n return false;\n}\nfunction computedGetter() {\n const flags = this.flags;\n if (flags & (32 /* Dirty */ | 64 /* PendingComputed */)) {\n processComputedUpdate(this, flags);\n }\n if (activeSub !== void 0) {\n link(this, activeSub);\n } else if (activeScope !== void 0) {\n link(this, activeScope);\n }\n return this.currentValue;\n}\nfunction signalGetterSetter(...value) {\n if (value.length) {\n if (this.currentValue !== (this.currentValue = value[0])) {\n const subs = this.subs;\n if (subs !== void 0) {\n propagate(subs);\n if (!batchDepth) {\n processEffectNotifications();\n }\n }\n }\n } else {\n if (activeSub !== void 0) {\n link(this, activeSub);\n }\n return this.currentValue;\n }\n}\nfunction effectStop() {\n startTracking(this);\n endTracking(this);\n}\nexport {\n SubscriberFlags,\n computed,\n createReactiveSystem,\n effect,\n effectScope,\n endBatch,\n pauseTracking,\n resumeTracking,\n signal,\n startBatch\n};\n","import { createReactiveSystem, type Dependency, type Subscriber, SubscriberFlags } from \"alien-signals\";\nimport { isFunction } from \"../typeChecking\";\n\nexport interface Effect extends Subscriber, Dependency {\n /**\n * Effect function. Can return an optional cleanup callback to be invoked before the next fn() call.\n */\n fn(): (() => void) | void;\n\n cleanup?: () => void;\n}\n\nexport interface Computed<T = any> extends Value<T | undefined>, Subscriber {\n getter: (cachedValue?: T) => T;\n equals: EqualityFn<T>;\n}\n\nexport interface Value<T = any> extends Dependency {\n current: T;\n}\n\nexport const {\n link,\n propagate,\n updateDirtyFlag,\n startTracking,\n endTracking,\n processEffectNotifications,\n processComputedUpdate,\n processPendingInnerEffects,\n} = createReactiveSystem({\n updateComputed(c: Computed): boolean {\n const prevSub = activeSub;\n activeSub = c;\n startTracking(c);\n try {\n const oldValue = c.current;\n const newValue = c.getter(oldValue);\n if (!c.equals(oldValue, newValue)) {\n c.current = newValue;\n return true;\n }\n return false;\n } finally {\n activeSub = prevSub;\n endTracking(c);\n }\n },\n notifyEffect(e: Effect) {\n const flags = e.flags;\n if (flags & SubscriberFlags.Dirty || (flags & SubscriberFlags.PendingComputed && updateDirtyFlag(e, flags))) {\n queueEffect(e);\n } else {\n processPendingInnerEffects(e, e.flags);\n }\n return true;\n },\n});\n\n/*===================================*\\\n|| EFFECTS & TRACKING ||\n\\*===================================*/\n\nexport let activeSub: Subscriber | undefined;\n\nconst PENDING_EFFECTS: Effect[] = [];\n\nlet flushPending = false;\n\nfunction flushEffects(): void {\n if (!flushPending) {\n flushPending = true;\n\n queueMicrotask(() => {\n flushPending = false;\n for (let i = 0; i < PENDING_EFFECTS.length; i++) {\n const e = PENDING_EFFECTS[i];\n const prevSub = activeSub;\n activeSub = e;\n startTracking(e);\n try {\n if (e.cleanup) {\n pauseTracking();\n e.cleanup();\n resumeTracking();\n }\n e.cleanup = e.fn() ?? undefined;\n } finally {\n activeSub = prevSub;\n endTracking(e);\n }\n }\n PENDING_EFFECTS.length = 0;\n });\n }\n}\n\nexport function queueEffect(e: Effect) {\n PENDING_EFFECTS.push(e);\n flushEffects();\n}\n\nexport function stopEffect(this: Effect): void {\n startTracking(this);\n endTracking(this);\n // Cancel it after it receives its current value.\n queueMicrotask(() => {\n PENDING_EFFECTS.splice(PENDING_EFFECTS.indexOf(this), 1);\n if (this.cleanup) {\n this.cleanup();\n }\n });\n}\n\nconst pauseStack: (Subscriber | undefined)[] = [];\n\nexport function pauseTracking() {\n pauseStack.push(activeSub);\n activeSub = undefined;\n}\n\nexport function resumeTracking() {\n activeSub = pauseStack.pop();\n}\n\n/*===================================*\\\n|| API ||\n\\*===================================*/\n\n/* -------------- TYPES --------------- */\n\nconst SIGNAL = Symbol(\"SIGNAL\");\nconst SOURCE = Symbol(\"SOURCE\");\n\n/**\n * A getter that returns the current value held within the signal.\n * If called inside a trackable scope this signal will be tracked as a dependency.\n */\nexport interface Signal<T> {\n (): T;\n}\n\n/**\n * Extends Signal with the ability to pass a value or an updater function to change the Signal's value.\n */\nexport interface Source<T> extends Signal<T> {\n (value: T): void;\n (updater: (value: T) => T): void;\n}\n\nexport type MaybeSignal<T> = Signal<T> | T;\n\nexport type EqualityFn<T> = (current: T, next: T) => boolean;\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 isSource<T>(value: MaybeSignal<T>): value is Source<T> {\n return isFunction(value) && (value as any)._type === SOURCE;\n}\n\nexport function peek<T>(value: MaybeSignal<T>) {\n let result: T;\n pauseTracking();\n result = get(value);\n resumeTracking();\n return result;\n}\n\nexport function get<T>(value: MaybeSignal<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 stop watching for changes.\n * If you are using an effect inside a View or Store, use `ctx.effect` 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: SubscriberFlags.Effect,\n };\n if (activeSub !== undefined) {\n link(e, activeSub);\n }\n queueEffect(e);\n return stopEffect.bind(e);\n}\n\nexport function $<T>(compute: () => MaybeSignal<T>, options?: SignalOptions<T>): Signal<T>;\nexport function $<T>(value: T, options?: SignalOptions<T>): Source<T>;\nexport function $<T>(value: undefined, options?: SignalOptions<T>): Source<T | undefined>;\nexport function $<T>(): Source<T | undefined>;\n\nexport function $<T>(init?: (() => T) | T, options?: SignalOptions<T>) {\n if (isFunction(init)) {\n return _createSignal(init as () => T, options);\n } else if (init === undefined) {\n return _createSource<T | undefined>(undefined, options as SignalOptions<T | undefined>);\n } else {\n return _createSource(init, options);\n }\n}\n\n/* -------------- INTERNAL --------------- */\n\nfunction _createSource<T>(initialValue: T, options?: SignalOptions<T>): Source<T> {\n const value: Value<T> = {\n current: initialValue,\n subs: undefined,\n subsTail: undefined,\n };\n const equals = options?.equals ?? Object.is;\n const signal: Signal<any> = function () {\n if (arguments.length > 0) {\n let next = arguments[0] as T;\n\n if (typeof next === \"function\") {\n next = next(value.current);\n }\n\n if (!equals(value.current, next)) {\n value.current = next;\n const subs = value.subs;\n if (subs !== undefined) {\n propagate(subs);\n processEffectNotifications();\n }\n }\n } else {\n if (activeSub !== undefined) {\n link(value, activeSub);\n }\n return value.current;\n }\n };\n (signal as any)._type = SOURCE;\n\n return signal;\n}\n\nfunction _createSignal<T>(fn: (cachedValue?: T) => T, options?: SignalOptions<T>): Signal<T> {\n if (isFunction(fn) && (fn as any)._type === SIGNAL) {\n if ((fn as any)._type === SOURCE) {\n return (() => fn()) as Signal<T>;\n } else {\n return fn as Signal<T>;\n }\n }\n\n const computed: Computed<T> = {\n current: undefined,\n equals: options?.equals ?? Object.is,\n subs: undefined,\n subsTail: undefined,\n deps: undefined,\n depsTail: undefined,\n flags: SubscriberFlags.Computed | SubscriberFlags.Dirty,\n getter: (cachedValue?: T) => {\n const returned = fn(cachedValue);\n\n // If a signal is returned, track it and return its value.\n return get(returned);\n },\n };\n const signal: Signal<T> = function () {\n if (arguments.length > 0) {\n throw new Error(\"Signals cannot be set as their values are derived from the sources they depend on.\");\n }\n if (activeSub !== undefined) {\n link(computed, activeSub);\n }\n const flags = computed.flags;\n if (flags & (SubscriberFlags.Dirty | SubscriberFlags.PendingComputed)) {\n processComputedUpdate(computed, flags);\n }\n return computed.current!;\n };\n (signal as any)._type = SIGNAL;\n\n return signal;\n}\n","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\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\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","export type Env = \"production\" | \"development\";\n\nlet env: Env = \"production\";\n\n/**\n * Gets the current environment value.\n */\nexport function getEnv(): Env {\n return env;\n}\n\n/**\n * Sets the environment value. Affects which log messages will print and how much debugging info is included in the DOM.\n */\nexport function setEnv(value: Env) {\n env = value;\n}\n","import { isString } from \"../typeChecking\";\nimport { createMatcher, noOp, okhash, type MatcherFunction } from \"../utils\";\nimport { getEnv, type Env } from \"./env\";\nimport { get, type MaybeSignal } from \"./signals\";\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): void;\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 LoggerErrorContext {\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: LoggerErrorContext) => void)[] = [];\n\nexport function onLoggerCrash(listener: (context: LoggerErrorContext) => 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 = get(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 const ctx: LoggerErrorContext = {\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 };\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":["SubscriberFlags","SubscriberFlags2","createReactiveSystem","updateComputed","notifyEffect2","queuedEffects","queuedEffectsTail","dep","sub","currentDep","nextDep","depLastSub","isValidLink","linkNewDep","link2","targetFlag","subs","stack","top","subFlags","subSubs","depSubs","depsTail","clearTracking","flags","checkDirty","computed2","shallowPropagate","effect2","queuedNext","newLink","oldTail","dirty","depFlags","checkLink","nextSub","prevSub","depDeps","link","propagate","updateDirtyFlag","startTracking","endTracking","processEffectNotifications","processComputedUpdate","processPendingInnerEffects","oldValue","newValue","notifyEffectScope","notifyEffect","runEffect","c","activeSub","queueEffect","PENDING_EFFECTS","flushPending","flushEffects","i","e","pauseTracking","resumeTracking","stopEffect","pauseStack","SIGNAL","SOURCE","peek","value","result","get","isFunction","effect","fn","$","init","options","_createSignal","_createSource","initialValue","equals","signal","next","computed","cachedValue","returned","noOp","idCounter","getUniqueId","strictEqual","a","b","shallowEqual","t","typeOf","size","key","deepEqual","length","keys","omit","object","newObject","okhash","hue","createMatcher","pattern","matchers","parts","p","part","section","name","positive","negative","env","getEnv","setEnv","levels","match","crashListeners","onLoggerCrash","listener","createLogger","_console","_getDefaultConsole","bind","method","_name","isString","label","error","ctx","setLogFilter","filter","setLogLevels"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"logger-CXdzxt1e.js","sources":["../node_modules/alien-signals/esm/index.mjs","../src/core/signals.ts","../src/utils.ts","../src/core/env.ts","../src/core/logger.ts"],"sourcesContent":["// src/system.ts\nvar SubscriberFlags = /* @__PURE__ */ ((SubscriberFlags2) => {\n SubscriberFlags2[SubscriberFlags2[\"Computed\"] = 1] = \"Computed\";\n SubscriberFlags2[SubscriberFlags2[\"Effect\"] = 2] = \"Effect\";\n SubscriberFlags2[SubscriberFlags2[\"Tracking\"] = 4] = \"Tracking\";\n SubscriberFlags2[SubscriberFlags2[\"Notified\"] = 8] = \"Notified\";\n SubscriberFlags2[SubscriberFlags2[\"Recursed\"] = 16] = \"Recursed\";\n SubscriberFlags2[SubscriberFlags2[\"Dirty\"] = 32] = \"Dirty\";\n SubscriberFlags2[SubscriberFlags2[\"PendingComputed\"] = 64] = \"PendingComputed\";\n SubscriberFlags2[SubscriberFlags2[\"PendingEffect\"] = 128] = \"PendingEffect\";\n SubscriberFlags2[SubscriberFlags2[\"Propagated\"] = 224] = \"Propagated\";\n return SubscriberFlags2;\n})(SubscriberFlags || {});\nfunction createReactiveSystem({\n updateComputed,\n notifyEffect: notifyEffect2\n}) {\n let queuedEffects;\n let queuedEffectsTail;\n return {\n /**\n * Links a given dependency and subscriber if they are not already linked.\n * \n * @param dep - The dependency to be linked.\n * @param sub - The subscriber that depends on this dependency.\n * @returns The newly created link object if the two are not already linked; otherwise `undefined`.\n */\n link(dep, sub) {\n const currentDep = sub.depsTail;\n if (currentDep !== void 0 && currentDep.dep === dep) {\n return;\n }\n const nextDep = currentDep !== void 0 ? currentDep.nextDep : sub.deps;\n if (nextDep !== void 0 && nextDep.dep === dep) {\n sub.depsTail = nextDep;\n return;\n }\n const depLastSub = dep.subsTail;\n if (depLastSub !== void 0 && depLastSub.sub === sub && isValidLink(depLastSub, sub)) {\n return;\n }\n return linkNewDep(dep, sub, nextDep, currentDep);\n },\n /**\n * Traverses and marks subscribers starting from the provided link.\n * \n * It sets flags (e.g., Dirty, PendingComputed, PendingEffect) on each subscriber\n * to indicate which ones require re-computation or effect processing. \n * This function should be called after a signal's value changes.\n * \n * @param link - The starting link from which propagation begins.\n */\n propagate(link2) {\n let targetFlag = 32 /* Dirty */;\n let subs = link2;\n let stack = 0;\n top: do {\n const sub = link2.sub;\n const subFlags = sub.flags;\n if (!(subFlags & (4 /* Tracking */ | 16 /* Recursed */ | 224 /* Propagated */)) && (sub.flags = subFlags | targetFlag | 8 /* Notified */, true) || subFlags & 16 /* Recursed */ && !(subFlags & 4 /* Tracking */) && (sub.flags = subFlags & ~16 /* Recursed */ | targetFlag | 8 /* Notified */, true) || !(subFlags & 224 /* Propagated */) && isValidLink(link2, sub) && (sub.flags = subFlags | 16 /* Recursed */ | targetFlag | 8 /* Notified */, sub.subs !== void 0)) {\n const subSubs = sub.subs;\n if (subSubs !== void 0) {\n if (subSubs.nextSub !== void 0) {\n subSubs.prevSub = subs;\n link2 = subs = subSubs;\n targetFlag = 64 /* PendingComputed */;\n ++stack;\n } else {\n link2 = subSubs;\n targetFlag = subFlags & 2 /* Effect */ ? 128 /* PendingEffect */ : 64 /* PendingComputed */;\n }\n continue;\n }\n if (subFlags & 2 /* Effect */) {\n if (queuedEffectsTail !== void 0) {\n queuedEffectsTail.depsTail.nextDep = sub.deps;\n } else {\n queuedEffects = sub;\n }\n queuedEffectsTail = sub;\n }\n } else if (!(subFlags & (4 /* Tracking */ | targetFlag))) {\n sub.flags = subFlags | targetFlag | 8 /* Notified */;\n if ((subFlags & (2 /* Effect */ | 8 /* Notified */)) === 2 /* Effect */) {\n if (queuedEffectsTail !== void 0) {\n queuedEffectsTail.depsTail.nextDep = sub.deps;\n } else {\n queuedEffects = sub;\n }\n queuedEffectsTail = sub;\n }\n } else if (!(subFlags & targetFlag) && subFlags & 224 /* Propagated */ && isValidLink(link2, sub)) {\n sub.flags = subFlags | targetFlag;\n }\n if ((link2 = subs.nextSub) !== void 0) {\n subs = link2;\n targetFlag = stack ? 64 /* PendingComputed */ : 32 /* Dirty */;\n continue;\n }\n while (stack) {\n --stack;\n const dep = subs.dep;\n const depSubs = dep.subs;\n subs = depSubs.prevSub;\n depSubs.prevSub = void 0;\n if ((link2 = subs.nextSub) !== void 0) {\n subs = link2;\n targetFlag = stack ? 64 /* PendingComputed */ : 32 /* Dirty */;\n continue top;\n }\n }\n break;\n } while (true);\n },\n /**\n * Prepares the given subscriber to track new dependencies.\n * \n * It resets the subscriber's internal pointers (e.g., depsTail) and\n * sets its flags to indicate it is now tracking dependency links.\n * \n * @param sub - The subscriber to start tracking.\n */\n startTracking(sub) {\n sub.depsTail = void 0;\n sub.flags = sub.flags & ~(8 /* Notified */ | 16 /* Recursed */ | 224 /* Propagated */) | 4 /* Tracking */;\n },\n /**\n * Concludes tracking of dependencies for the specified subscriber.\n * \n * It clears or unlinks any tracked dependency information, then\n * updates the subscriber's flags to indicate tracking is complete.\n * \n * @param sub - The subscriber whose tracking is ending.\n */\n endTracking(sub) {\n const depsTail = sub.depsTail;\n if (depsTail !== void 0) {\n const nextDep = depsTail.nextDep;\n if (nextDep !== void 0) {\n clearTracking(nextDep);\n depsTail.nextDep = void 0;\n }\n } else if (sub.deps !== void 0) {\n clearTracking(sub.deps);\n sub.deps = void 0;\n }\n sub.flags &= ~4 /* Tracking */;\n },\n /**\n * Updates the dirty flag for the given subscriber based on its dependencies.\n * \n * If the subscriber has any pending computeds, this function sets the Dirty flag\n * and returns `true`. Otherwise, it clears the PendingComputed flag and returns `false`.\n * \n * @param sub - The subscriber to update.\n * @param flags - The current flag set for this subscriber.\n * @returns `true` if the subscriber is marked as Dirty; otherwise `false`.\n */\n updateDirtyFlag(sub, flags) {\n if (checkDirty(sub.deps)) {\n sub.flags = flags | 32 /* Dirty */;\n return true;\n } else {\n sub.flags = flags & ~64 /* PendingComputed */;\n return false;\n }\n },\n /**\n * Updates the computed subscriber if necessary before its value is accessed.\n * \n * If the subscriber is marked Dirty or PendingComputed, this function runs\n * the provided updateComputed logic and triggers a shallowPropagate for any\n * downstream subscribers if an actual update occurs.\n * \n * @param computed - The computed subscriber to update.\n * @param flags - The current flag set for this subscriber.\n */\n processComputedUpdate(computed2, flags) {\n if (flags & 32 /* Dirty */ || (checkDirty(computed2.deps) ? true : (computed2.flags = flags & ~64 /* PendingComputed */, false))) {\n if (updateComputed(computed2)) {\n const subs = computed2.subs;\n if (subs !== void 0) {\n shallowPropagate(subs);\n }\n }\n }\n },\n /**\n * Ensures all pending internal effects for the given subscriber are processed.\n * \n * This should be called after an effect decides not to re-run itself but may still\n * have dependencies flagged with PendingEffect. If the subscriber is flagged with\n * PendingEffect, this function clears that flag and invokes `notifyEffect` on any\n * related dependencies marked as Effect and Propagated, processing pending effects.\n * \n * @param sub - The subscriber which may have pending effects.\n * @param flags - The current flags on the subscriber to check.\n */\n processPendingInnerEffects(sub, flags) {\n if (flags & 128 /* PendingEffect */) {\n sub.flags = flags & ~128 /* PendingEffect */;\n let link2 = sub.deps;\n do {\n const dep = link2.dep;\n if (\"flags\" in dep && dep.flags & 2 /* Effect */ && dep.flags & 224 /* Propagated */) {\n notifyEffect2(dep);\n }\n link2 = link2.nextDep;\n } while (link2 !== void 0);\n }\n },\n /**\n * Processes queued effect notifications after a batch operation finishes.\n * \n * Iterates through all queued effects, calling notifyEffect on each.\n * If an effect remains partially handled, its flags are updated, and future\n * notifications may be triggered until fully handled.\n */\n processEffectNotifications() {\n while (queuedEffects !== void 0) {\n const effect2 = queuedEffects;\n const depsTail = effect2.depsTail;\n const queuedNext = depsTail.nextDep;\n if (queuedNext !== void 0) {\n depsTail.nextDep = void 0;\n queuedEffects = queuedNext.sub;\n } else {\n queuedEffects = void 0;\n queuedEffectsTail = void 0;\n }\n if (!notifyEffect2(effect2)) {\n effect2.flags &= ~8 /* Notified */;\n }\n }\n }\n };\n function linkNewDep(dep, sub, nextDep, depsTail) {\n const newLink = {\n dep,\n sub,\n nextDep,\n prevSub: void 0,\n nextSub: void 0\n };\n if (depsTail === void 0) {\n sub.deps = newLink;\n } else {\n depsTail.nextDep = newLink;\n }\n if (dep.subs === void 0) {\n dep.subs = newLink;\n } else {\n const oldTail = dep.subsTail;\n newLink.prevSub = oldTail;\n oldTail.nextSub = newLink;\n }\n sub.depsTail = newLink;\n dep.subsTail = newLink;\n return newLink;\n }\n function checkDirty(link2) {\n let stack = 0;\n let dirty;\n top: do {\n dirty = false;\n const dep = link2.dep;\n if (\"flags\" in dep) {\n const depFlags = dep.flags;\n if ((depFlags & (1 /* Computed */ | 32 /* Dirty */)) === (1 /* Computed */ | 32 /* Dirty */)) {\n if (updateComputed(dep)) {\n const subs = dep.subs;\n if (subs.nextSub !== void 0) {\n shallowPropagate(subs);\n }\n dirty = true;\n }\n } else if ((depFlags & (1 /* Computed */ | 64 /* PendingComputed */)) === (1 /* Computed */ | 64 /* PendingComputed */)) {\n const depSubs = dep.subs;\n if (depSubs.nextSub !== void 0) {\n depSubs.prevSub = link2;\n }\n link2 = dep.deps;\n ++stack;\n continue;\n }\n }\n if (!dirty && link2.nextDep !== void 0) {\n link2 = link2.nextDep;\n continue;\n }\n if (stack) {\n let sub = link2.sub;\n do {\n --stack;\n const subSubs = sub.subs;\n if (dirty) {\n if (updateComputed(sub)) {\n if ((link2 = subSubs.prevSub) !== void 0) {\n subSubs.prevSub = void 0;\n shallowPropagate(sub.subs);\n sub = link2.sub;\n } else {\n sub = subSubs.sub;\n }\n continue;\n }\n } else {\n sub.flags &= ~64 /* PendingComputed */;\n }\n if ((link2 = subSubs.prevSub) !== void 0) {\n subSubs.prevSub = void 0;\n if (link2.nextDep !== void 0) {\n link2 = link2.nextDep;\n continue top;\n }\n sub = link2.sub;\n } else {\n if ((link2 = subSubs.nextDep) !== void 0) {\n continue top;\n }\n sub = subSubs.sub;\n }\n dirty = false;\n } while (stack);\n }\n return dirty;\n } while (true);\n }\n function shallowPropagate(link2) {\n do {\n const sub = link2.sub;\n const subFlags = sub.flags;\n if ((subFlags & (64 /* PendingComputed */ | 32 /* Dirty */)) === 64 /* PendingComputed */) {\n sub.flags = subFlags | 32 /* Dirty */ | 8 /* Notified */;\n if ((subFlags & (2 /* Effect */ | 8 /* Notified */)) === 2 /* Effect */) {\n if (queuedEffectsTail !== void 0) {\n queuedEffectsTail.depsTail.nextDep = sub.deps;\n } else {\n queuedEffects = sub;\n }\n queuedEffectsTail = sub;\n }\n }\n link2 = link2.nextSub;\n } while (link2 !== void 0);\n }\n function isValidLink(checkLink, sub) {\n const depsTail = sub.depsTail;\n if (depsTail !== void 0) {\n let link2 = sub.deps;\n do {\n if (link2 === checkLink) {\n return true;\n }\n if (link2 === depsTail) {\n break;\n }\n link2 = link2.nextDep;\n } while (link2 !== void 0);\n }\n return false;\n }\n function clearTracking(link2) {\n do {\n const dep = link2.dep;\n const nextDep = link2.nextDep;\n const nextSub = link2.nextSub;\n const prevSub = link2.prevSub;\n if (nextSub !== void 0) {\n nextSub.prevSub = prevSub;\n } else {\n dep.subsTail = prevSub;\n }\n if (prevSub !== void 0) {\n prevSub.nextSub = nextSub;\n } else {\n dep.subs = nextSub;\n }\n if (dep.subs === void 0 && \"deps\" in dep) {\n const depFlags = dep.flags;\n if (!(depFlags & 32 /* Dirty */)) {\n dep.flags = depFlags | 32 /* Dirty */;\n }\n const depDeps = dep.deps;\n if (depDeps !== void 0) {\n link2 = depDeps;\n dep.depsTail.nextDep = nextDep;\n dep.deps = void 0;\n dep.depsTail = void 0;\n continue;\n }\n }\n link2 = nextDep;\n } while (link2 !== void 0);\n }\n}\n\n// src/index.ts\nvar {\n link,\n propagate,\n updateDirtyFlag,\n startTracking,\n endTracking,\n processEffectNotifications,\n processComputedUpdate,\n processPendingInnerEffects\n} = createReactiveSystem({\n updateComputed(computed2) {\n const prevSub = activeSub;\n activeSub = computed2;\n startTracking(computed2);\n try {\n const oldValue = computed2.currentValue;\n const newValue = computed2.getter(oldValue);\n if (oldValue !== newValue) {\n computed2.currentValue = newValue;\n return true;\n }\n return false;\n } finally {\n activeSub = prevSub;\n endTracking(computed2);\n }\n },\n notifyEffect(e) {\n if (\"isScope\" in e) {\n return notifyEffectScope(e);\n } else {\n return notifyEffect(e);\n }\n }\n});\nvar pauseStack = [];\nvar batchDepth = 0;\nvar activeSub;\nvar activeScope;\nfunction startBatch() {\n ++batchDepth;\n}\nfunction endBatch() {\n if (!--batchDepth) {\n processEffectNotifications();\n }\n}\nfunction pauseTracking() {\n pauseStack.push(activeSub);\n activeSub = void 0;\n}\nfunction resumeTracking() {\n activeSub = pauseStack.pop();\n}\nfunction signal(oldValue) {\n return signalGetterSetter.bind({\n currentValue: oldValue,\n subs: void 0,\n subsTail: void 0\n });\n}\nfunction computed(getter) {\n return computedGetter.bind({\n currentValue: void 0,\n subs: void 0,\n subsTail: void 0,\n deps: void 0,\n depsTail: void 0,\n flags: 1 /* Computed */ | 32 /* Dirty */,\n getter\n });\n}\nfunction effect(fn) {\n const e = {\n fn,\n subs: void 0,\n subsTail: void 0,\n deps: void 0,\n depsTail: void 0,\n flags: 2 /* Effect */\n };\n if (activeSub !== void 0) {\n link(e, activeSub);\n } else if (activeScope !== void 0) {\n link(e, activeScope);\n }\n runEffect(e);\n return effectStop.bind(e);\n}\nfunction effectScope(fn) {\n const e = {\n deps: void 0,\n depsTail: void 0,\n flags: 2 /* Effect */,\n isScope: true\n };\n runEffectScope(e, fn);\n return effectStop.bind(e);\n}\nfunction runEffect(e) {\n const prevSub = activeSub;\n activeSub = e;\n startTracking(e);\n try {\n e.fn();\n } finally {\n activeSub = prevSub;\n endTracking(e);\n }\n}\nfunction runEffectScope(e, fn) {\n const prevSub = activeScope;\n activeScope = e;\n startTracking(e);\n try {\n fn();\n } finally {\n activeScope = prevSub;\n endTracking(e);\n }\n}\nfunction notifyEffect(e) {\n const flags = e.flags;\n if (flags & 32 /* Dirty */ || flags & 64 /* PendingComputed */ && updateDirtyFlag(e, flags)) {\n runEffect(e);\n } else {\n processPendingInnerEffects(e, e.flags);\n }\n return true;\n}\nfunction notifyEffectScope(e) {\n const flags = e.flags;\n if (flags & 128 /* PendingEffect */) {\n processPendingInnerEffects(e, e.flags);\n return true;\n }\n return false;\n}\nfunction computedGetter() {\n const flags = this.flags;\n if (flags & (32 /* Dirty */ | 64 /* PendingComputed */)) {\n processComputedUpdate(this, flags);\n }\n if (activeSub !== void 0) {\n link(this, activeSub);\n } else if (activeScope !== void 0) {\n link(this, activeScope);\n }\n return this.currentValue;\n}\nfunction signalGetterSetter(...value) {\n if (value.length) {\n if (this.currentValue !== (this.currentValue = value[0])) {\n const subs = this.subs;\n if (subs !== void 0) {\n propagate(subs);\n if (!batchDepth) {\n processEffectNotifications();\n }\n }\n }\n } else {\n if (activeSub !== void 0) {\n link(this, activeSub);\n }\n return this.currentValue;\n }\n}\nfunction effectStop() {\n startTracking(this);\n endTracking(this);\n}\nexport {\n SubscriberFlags,\n computed,\n createReactiveSystem,\n effect,\n effectScope,\n endBatch,\n pauseTracking,\n resumeTracking,\n signal,\n startBatch\n};\n","import { createReactiveSystem, type Dependency, type Subscriber, SubscriberFlags } from \"alien-signals\";\nimport { isFunction } from \"../typeChecking\";\n\nexport interface Effect extends Subscriber, Dependency {\n /**\n * Effect function. Can return an optional cleanup callback to be invoked before the next fn() call.\n */\n fn(): (() => void) | void;\n\n cleanup?: () => void;\n}\n\nexport interface Computed<T = any> extends Value<T | undefined>, Subscriber {\n getter: (cachedValue?: T) => T;\n equals: EqualityFn<T>;\n}\n\nexport interface Value<T = any> extends Dependency {\n current: T;\n}\n\nexport const {\n link,\n propagate,\n updateDirtyFlag,\n startTracking,\n endTracking,\n processEffectNotifications,\n processComputedUpdate,\n processPendingInnerEffects,\n} = createReactiveSystem({\n updateComputed(c: Computed): boolean {\n const prevSub = activeSub;\n activeSub = c;\n startTracking(c);\n try {\n const oldValue = c.current;\n const newValue = c.getter(oldValue);\n if (!c.equals(oldValue, newValue)) {\n c.current = newValue;\n return true;\n }\n return false;\n } finally {\n activeSub = prevSub;\n endTracking(c);\n }\n },\n notifyEffect(e: Effect) {\n const flags = e.flags;\n if (flags & SubscriberFlags.Dirty || (flags & SubscriberFlags.PendingComputed && updateDirtyFlag(e, flags))) {\n queueEffect(e);\n } else {\n processPendingInnerEffects(e, e.flags);\n }\n return true;\n },\n});\n\n/*===================================*\\\n|| EFFECTS & TRACKING ||\n\\*===================================*/\n\nexport let activeSub: Subscriber | undefined;\n\nconst PENDING_EFFECTS: Effect[] = [];\n\nlet flushPending = false;\n\nfunction flushEffects(): void {\n if (!flushPending) {\n flushPending = true;\n\n queueMicrotask(() => {\n flushPending = false;\n for (let i = 0; i < PENDING_EFFECTS.length; i++) {\n const e = PENDING_EFFECTS[i];\n const prevSub = activeSub;\n activeSub = e;\n startTracking(e);\n try {\n if (e.cleanup) {\n pauseTracking();\n e.cleanup();\n resumeTracking();\n }\n e.cleanup = e.fn() ?? undefined;\n } finally {\n activeSub = prevSub;\n endTracking(e);\n }\n }\n PENDING_EFFECTS.length = 0;\n });\n }\n}\n\nexport function queueEffect(e: Effect) {\n PENDING_EFFECTS.push(e);\n flushEffects();\n}\n\nexport function stopEffect(this: Effect): void {\n startTracking(this);\n endTracking(this);\n // Cancel it after it receives its current value.\n queueMicrotask(() => {\n PENDING_EFFECTS.splice(PENDING_EFFECTS.indexOf(this), 1);\n if (this.cleanup) {\n this.cleanup();\n }\n });\n}\n\nconst pauseStack: (Subscriber | undefined)[] = [];\n\nexport function pauseTracking() {\n pauseStack.push(activeSub);\n activeSub = undefined;\n}\n\nexport function resumeTracking() {\n activeSub = pauseStack.pop();\n}\n\n/*===================================*\\\n|| API ||\n\\*===================================*/\n\n/* -------------- TYPES --------------- */\n\nconst SIGNAL = Symbol(\"SIGNAL\");\nconst SOURCE = Symbol(\"SOURCE\");\n\n/**\n * A getter that returns the current value held within the signal.\n * If called inside a trackable scope this signal will be tracked as a dependency.\n */\nexport interface Signal<T> {\n (): T;\n}\n\n/**\n * Extends Signal with the ability to pass a value or an updater function to change the Signal's value.\n */\nexport interface Source<T> extends Signal<T> {\n (value: T): void;\n (updater: (value: T) => T): void;\n}\n\nexport type MaybeSignal<T> = Signal<T> | T;\n\nexport type EqualityFn<T> = (current: T, next: T) => boolean;\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 isSource<T>(value: MaybeSignal<T>): value is Source<T> {\n return isFunction(value) && (value as any)._type === SOURCE;\n}\n\nexport function peek<T>(value: MaybeSignal<T>) {\n let result: T;\n pauseTracking();\n result = get(value);\n resumeTracking();\n return result;\n}\n\nexport function get<T>(value: MaybeSignal<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 stop watching for changes.\n * If you are using an effect inside a View or Store, use `ctx.effect` 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: SubscriberFlags.Effect,\n };\n if (activeSub !== undefined) {\n link(e, activeSub);\n }\n queueEffect(e);\n return stopEffect.bind(e);\n}\n\nexport function $<T>(compute: () => MaybeSignal<T>, options?: SignalOptions<T>): Signal<T>;\nexport function $<T>(value: T, options?: SignalOptions<T>): Source<T>;\nexport function $<T>(value: undefined, options?: SignalOptions<T>): Source<T | undefined>;\nexport function $<T>(): Source<T | undefined>;\n\nexport function $<T>(init?: (() => T) | T, options?: SignalOptions<T>) {\n if (isFunction(init)) {\n return _createSignal(init as () => T, options);\n } else if (init === undefined) {\n return _createSource<T | undefined>(undefined, options as SignalOptions<T | undefined>);\n } else {\n return _createSource(init, options);\n }\n}\n\n/* -------------- INTERNAL --------------- */\n\nfunction _createSource<T>(initialValue: T, options?: SignalOptions<T>): Source<T> {\n const value: Value<T> = {\n current: initialValue,\n subs: undefined,\n subsTail: undefined,\n };\n const equals = options?.equals ?? Object.is;\n const signal: Signal<any> = function () {\n if (arguments.length > 0) {\n let next = arguments[0] as T;\n\n if (typeof next === \"function\") {\n next = next(value.current);\n }\n\n if (!equals(value.current, next)) {\n value.current = next;\n const subs = value.subs;\n if (subs !== undefined) {\n propagate(subs);\n processEffectNotifications();\n }\n }\n } else {\n if (activeSub !== undefined) {\n link(value, activeSub);\n }\n return value.current;\n }\n };\n (signal as any)._type = SOURCE;\n\n return signal;\n}\n\nfunction _createSignal<T>(fn: (cachedValue?: T) => T, options?: SignalOptions<T>): Signal<T> {\n if (isFunction(fn) && (fn as any)._type === SIGNAL) {\n if ((fn as any)._type === SOURCE) {\n return (() => fn()) as Signal<T>;\n } else {\n return fn as Signal<T>;\n }\n }\n\n const computed: Computed<T> = {\n current: undefined,\n equals: options?.equals ?? Object.is,\n subs: undefined,\n subsTail: undefined,\n deps: undefined,\n depsTail: undefined,\n flags: SubscriberFlags.Computed | SubscriberFlags.Dirty,\n getter: (cachedValue?: T) => {\n const returned = fn(cachedValue);\n\n // If a signal is returned, track it and return its value.\n return get(returned);\n },\n };\n const signal: Signal<T> = function () {\n if (arguments.length > 0) {\n throw new Error(\"Signals cannot be set as their values are derived from the sources they depend on.\");\n }\n if (activeSub !== undefined) {\n link(computed, activeSub);\n }\n const flags = computed.flags;\n if (flags & (SubscriberFlags.Dirty | SubscriberFlags.PendingComputed)) {\n processComputedUpdate(computed, flags);\n }\n return computed.current!;\n };\n (signal as any)._type = SIGNAL;\n\n return signal;\n}\n","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\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\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","export type Env = \"production\" | \"development\";\n\nlet env: Env = \"production\";\n\n/**\n * Gets the current environment value.\n */\nexport function getEnv(): Env {\n return env;\n}\n\n/**\n * Sets the environment value. Affects which log messages will print and how much debugging info is included in the DOM.\n */\nexport function setEnv(value: Env) {\n env = value;\n}\n","import { isString } from \"../typeChecking\";\nimport { createMatcher, noOp, okhash, type MatcherFunction } from \"../utils\";\nimport { getEnv, type Env } from \"./env\";\nimport { get, type MaybeSignal } from \"./signals\";\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 LoggerErrorContext {\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: LoggerErrorContext) => void)[] = [];\n\nexport function onLoggerCrash(listener: (context: LoggerErrorContext) => 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 = get(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 const ctx: LoggerErrorContext = {\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 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":["SubscriberFlags","SubscriberFlags2","createReactiveSystem","updateComputed","notifyEffect2","queuedEffects","queuedEffectsTail","dep","sub","currentDep","nextDep","depLastSub","isValidLink","linkNewDep","link2","targetFlag","subs","stack","top","subFlags","subSubs","depSubs","depsTail","clearTracking","flags","checkDirty","computed2","shallowPropagate","effect2","queuedNext","newLink","oldTail","dirty","depFlags","checkLink","nextSub","prevSub","depDeps","link","propagate","updateDirtyFlag","startTracking","endTracking","processEffectNotifications","processComputedUpdate","processPendingInnerEffects","oldValue","newValue","notifyEffectScope","notifyEffect","runEffect","c","activeSub","queueEffect","PENDING_EFFECTS","flushPending","flushEffects","i","e","pauseTracking","resumeTracking","stopEffect","pauseStack","SIGNAL","SOURCE","peek","value","result","get","isFunction","effect","fn","$","init","options","_createSignal","_createSource","initialValue","equals","signal","next","computed","cachedValue","returned","noOp","idCounter","getUniqueId","strictEqual","a","b","shallowEqual","t","typeOf","size","key","deepEqual","length","keys","omit","object","newObject","okhash","hue","createMatcher","pattern","matchers","parts","p","part","section","name","positive","negative","env","getEnv","setEnv","levels","match","crashListeners","onLoggerCrash","listener","createLogger","_console","_getDefaultConsole","bind","method","_name","isString","label","error","ctx","setLogFilter","filter","setLogLevels"],"mappings":"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","x_google_ignoreList":[0]}