cross-state 0.34.3 → 0.36.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.
Files changed (84) hide show
  1. package/dist/cjs/diff.cjs +92 -0
  2. package/dist/cjs/diff.cjs.map +1 -0
  3. package/dist/cjs/index.cjs +15 -143
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/{immer → mutative}/index.cjs +2 -2
  6. package/dist/cjs/mutative/register.cjs +5 -0
  7. package/dist/cjs/mutative/register.cjs.map +1 -0
  8. package/dist/cjs/mutativeMethods.cjs +26 -0
  9. package/dist/cjs/mutativeMethods.cjs.map +1 -0
  10. package/dist/cjs/patches/index.cjs +53 -0
  11. package/dist/cjs/patches/index.cjs.map +1 -0
  12. package/dist/cjs/patches/register.cjs +34 -0
  13. package/dist/cjs/patches/register.cjs.map +1 -0
  14. package/dist/cjs/propAccess.cjs +151 -0
  15. package/dist/cjs/propAccess.cjs.map +1 -0
  16. package/dist/cjs/react/index.cjs +11 -10
  17. package/dist/cjs/react/index.cjs.map +1 -1
  18. package/dist/cjs/scope.cjs +8 -3
  19. package/dist/cjs/scope.cjs.map +1 -1
  20. package/dist/cjs/store.cjs +26 -167
  21. package/dist/cjs/store.cjs.map +1 -1
  22. package/dist/cjs/useCache.cjs +3 -2
  23. package/dist/cjs/useCache.cjs.map +1 -1
  24. package/dist/es/diff.mjs +93 -0
  25. package/dist/es/diff.mjs.map +1 -0
  26. package/dist/es/index.mjs +18 -144
  27. package/dist/es/index.mjs.map +1 -1
  28. package/dist/es/mutative/index.mjs +5 -0
  29. package/dist/es/mutative/register.mjs +4 -0
  30. package/dist/es/mutative/register.mjs.map +1 -0
  31. package/dist/es/mutativeMethods.mjs +27 -0
  32. package/dist/es/mutativeMethods.mjs.map +1 -0
  33. package/dist/es/patches/index.mjs +53 -0
  34. package/dist/es/patches/index.mjs.map +1 -0
  35. package/dist/es/patches/register.mjs +34 -0
  36. package/dist/es/patches/register.mjs.map +1 -0
  37. package/dist/es/propAccess.mjs +152 -0
  38. package/dist/es/propAccess.mjs.map +1 -0
  39. package/dist/es/react/index.mjs +2 -1
  40. package/dist/es/react/index.mjs.map +1 -1
  41. package/dist/es/scope.mjs +8 -3
  42. package/dist/es/scope.mjs.map +1 -1
  43. package/dist/es/store.mjs +23 -164
  44. package/dist/es/store.mjs.map +1 -1
  45. package/dist/es/useCache.mjs +2 -1
  46. package/dist/es/useCache.mjs.map +1 -1
  47. package/dist/types/core/cache.d.ts +1 -1
  48. package/dist/types/core/commonTypes.d.ts +3 -0
  49. package/dist/types/core/store.d.ts +1 -0
  50. package/dist/types/index.d.ts +0 -1
  51. package/dist/types/lib/autobind.d.ts +1 -1
  52. package/dist/types/lib/diff.d.ts +3 -2
  53. package/dist/types/lib/isPromise.d.ts +1 -0
  54. package/dist/types/lib/promiseWithState.d.ts +1 -1
  55. package/dist/types/mutative/index.d.ts +1 -0
  56. package/dist/types/mutative/mutativeMethods.d.ts +10 -0
  57. package/dist/types/mutative/register.d.ts +7 -0
  58. package/dist/types/patches/index.d.ts +1 -0
  59. package/dist/types/patches/patchMethods.d.ts +33 -0
  60. package/dist/types/patches/register.d.ts +9 -0
  61. package/dist/types/react/form/customInput.d.ts +1 -1
  62. package/dist/types/react/form/form.d.ts +2 -2
  63. package/dist/types/react/form/formField.d.ts +2 -2
  64. package/dist/types/react/form/formForEach.d.ts +1 -1
  65. package/dist/types/react/loadingBoundary.d.ts +1 -1
  66. package/dist/types/react/register.d.ts +1 -1
  67. package/dist/types/react/scope.d.ts +1 -1
  68. package/package.json +58 -33
  69. package/dist/cjs/immer/register.cjs +0 -5
  70. package/dist/cjs/immer/register.cjs.map +0 -1
  71. package/dist/cjs/immerMethods.cjs +0 -23
  72. package/dist/cjs/immerMethods.cjs.map +0 -1
  73. package/dist/es/immer/index.mjs +0 -5
  74. package/dist/es/immer/register.mjs +0 -4
  75. package/dist/es/immer/register.mjs.map +0 -1
  76. package/dist/es/immerMethods.mjs +0 -24
  77. package/dist/es/immerMethods.mjs.map +0 -1
  78. package/dist/types/immer/immerMethods.d.ts +0 -10
  79. package/dist/types/immer/index.d.ts +0 -1
  80. package/dist/types/immer/register.d.ts +0 -7
  81. package/dist/types/sync/index.d.ts +0 -1
  82. package/dist/types/sync/sync.d.ts +0 -17
  83. /package/dist/cjs/{immer → mutative}/index.cjs.map +0 -0
  84. /package/dist/es/{immer → mutative}/index.mjs.map +0 -0
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ const propAccess = require("./propAccess.cjs");
2
3
  const autobind = (_class, _context) => {
3
4
  if (Reflect.getOwnPropertyDescriptor(_class.prototype, "__autobind_done__")) {
4
5
  return _class;
@@ -116,70 +117,28 @@ function queue() {
116
117
  }
117
118
  );
118
119
  }
119
- function strictEqual(a, b) {
120
- return a === b;
120
+ function isPromise(value) {
121
+ return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
121
122
  }
122
- function shallowEqual(a, b) {
123
- return internalEqual(strictEqual)(a, b);
124
- }
125
- function deepEqual(a, b) {
126
- return internalEqual(deepEqual)(a, b);
127
- }
128
- const internalEqual = (comp) => (a, b) => {
129
- if (a === b) {
130
- return true;
131
- }
132
- if (a === null || b === null || typeof a !== "object" || typeof b !== "object") {
133
- return a !== a && b !== b;
134
- }
135
- if (a.constructor !== b.constructor) {
136
- return false;
137
- }
138
- if (a.constructor === Object || Array.isArray(a)) {
139
- const entries1 = Object.entries(a);
140
- const entries2 = Object.entries(b);
141
- return entries1.length === entries2.length && entries1.every(([key, value]) => comp(value, b[key]));
142
- }
143
- if (a instanceof Date) {
144
- return a.getTime() === b.getTime();
145
- }
146
- if (a instanceof RegExp) {
147
- return a.source === b.source && a.flags === b.flags;
148
- }
149
- if (a instanceof Map) {
150
- return a.size === b.size && [...a.entries()].every(([key, value]) => comp(value, b.get(key)));
151
- }
152
- if (a instanceof Set) {
153
- return a.size === b.size && [...a.values()].every((value) => b.has(value));
154
- }
155
- if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView(a)) {
156
- if (a.byteLength !== b.byteLength) {
157
- return false;
158
- }
159
- const a_ = new Int8Array(a.buffer);
160
- const b_ = new Int8Array(b.buffer);
161
- return a_.every((value, i) => value === b_[i]);
162
- }
163
- return false;
164
- };
165
123
  class PromiseWithState extends Promise {
166
124
  constructor(value, state = { status: "pending" }) {
167
125
  super((resolve) => resolve(value));
168
126
  this.state = state;
169
- value.then((value2) => {
170
- this.state = { status: "value", value: value2 };
171
- }).catch((error) => {
172
- this.state = { status: "error", error };
173
- });
127
+ if (isPromise(value)) {
128
+ value.then((value2) => {
129
+ this.state = { status: "value", value: value2 };
130
+ }).catch((error) => {
131
+ this.state = { status: "error", error };
132
+ });
133
+ } else {
134
+ this.state = { status: "value", value };
135
+ }
174
136
  }
175
137
  static get [Symbol.species]() {
176
138
  return Promise;
177
139
  }
178
140
  static resolve(value) {
179
- return new PromiseWithState(Promise.resolve(value), {
180
- status: "value",
181
- value
182
- });
141
+ return new PromiseWithState(value);
183
142
  }
184
143
  static reject(error) {
185
144
  return new PromiseWithState(Promise.reject(error), { status: "error", error });
@@ -302,7 +261,7 @@ function calculatedValue(store, notify) {
302
261
  return;
303
262
  }
304
263
  for (const dep of deps) {
305
- if (!deepEqual(dep.store.get(), dep.value)) {
264
+ if (!propAccess.deepEqual(dep.store.get(), dep.value)) {
306
265
  store.invalidate();
307
266
  return;
308
267
  }
@@ -341,101 +300,6 @@ function staticValue(value) {
341
300
  invalidateDependencies: () => void 0
342
301
  };
343
302
  }
344
- function flatClone(object) {
345
- if (object instanceof Map) {
346
- return new Map(object);
347
- }
348
- if (object instanceof Set) {
349
- return new Set(object);
350
- }
351
- if (Array.isArray(object)) {
352
- return [...object];
353
- }
354
- if (object instanceof Object) {
355
- return { ...object };
356
- }
357
- return object;
358
- }
359
- function castArrayPath(path) {
360
- if (Array.isArray(path)) {
361
- return path;
362
- }
363
- if (path === "") {
364
- return [];
365
- }
366
- return path.split(".");
367
- }
368
- function get(object, path) {
369
- const _path = castArrayPath(path);
370
- const [first, ...rest] = _path;
371
- if (first === void 0 || !object) {
372
- return object;
373
- }
374
- if (object instanceof Map) {
375
- return get(object.get(first), rest);
376
- }
377
- if (object instanceof Set) {
378
- return get(Array.from(object)[Number(first)], rest);
379
- }
380
- if (object instanceof Object) {
381
- return get(object[first], rest);
382
- }
383
- throw new Error(`Could not get ${path} of ${object}`);
384
- }
385
- function set(object, path, value, rootPath = path) {
386
- const _path = castArrayPath(path);
387
- const [first, ...rest] = _path;
388
- if (first === void 0) {
389
- return value;
390
- }
391
- const updateChild = (child) => {
392
- if (!child && rest.length > 0) {
393
- const _rootPath = castArrayPath(rootPath);
394
- const prefix = _rootPath.slice(0, -rest.length);
395
- throw new Error(`Cannot set ${rootPath} because ${prefix.join(".")} is ${child}`);
396
- }
397
- return set(child, rest, value, rootPath);
398
- };
399
- if (object instanceof Map) {
400
- const copy = flatClone(object);
401
- const child = copy.get(first);
402
- copy.set(first, updateChild(child));
403
- return copy;
404
- }
405
- if (object instanceof Set) {
406
- const copy = [...object];
407
- const child = copy[Number(first)];
408
- copy[Number(first)] = updateChild(child);
409
- return new Set(copy);
410
- }
411
- if (object instanceof Object || object === void 0) {
412
- const copy = flatClone(object ?? {});
413
- copy[first] = updateChild(copy[first]);
414
- return copy;
415
- }
416
- throw new Error(`Could not set ${path} of ${object}`);
417
- }
418
- function remove(object, path) {
419
- const _path = castArrayPath(path);
420
- if (_path.length === 0) {
421
- return void 0;
422
- }
423
- const parentPath = _path.slice(0, -1);
424
- const key = _path[_path.length - 1];
425
- const parent = flatClone(get(object, parentPath));
426
- if (parent instanceof Map) {
427
- parent.delete(key);
428
- } else if (parent instanceof Set) {
429
- const value = Array.from(parent)[Number(key)];
430
- parent.delete(value);
431
- } else {
432
- delete parent[key];
433
- }
434
- return set(object, parentPath, parent);
435
- }
436
- function join(a, b) {
437
- return [a, b].filter(Boolean).join(".");
438
- }
439
303
  function makeSelector(selector) {
440
304
  if (!selector) {
441
305
  return (x) => x;
@@ -443,7 +307,7 @@ function makeSelector(selector) {
443
307
  if (selector instanceof Function) {
444
308
  return selector;
445
309
  }
446
- return (x) => get(x, selector);
310
+ return (x) => propAccess.get(x, selector);
447
311
  }
448
312
  class Callable extends Function {
449
313
  constructor(_call) {
@@ -615,6 +479,9 @@ class Store extends Callable {
615
479
  this.effects = /* @__PURE__ */ new Map();
616
480
  this.notifyId = {};
617
481
  autobind(Store);
482
+ if (typeof getter !== "function") {
483
+ this.calculatedValue = this.defaultValue = staticValue(getter);
484
+ }
618
485
  }
619
486
  get() {
620
487
  var _a;
@@ -630,11 +497,11 @@ class Store extends Callable {
630
497
  let update = args.length > 1 ? args[1] : args[0];
631
498
  if (update instanceof Function) {
632
499
  const before = this.get();
633
- const valueBefore = get(before, path);
500
+ const valueBefore = propAccess.get(before, path);
634
501
  const valueAfter = update(valueBefore);
635
- update = set(before, path, valueAfter);
502
+ update = propAccess.set(before, path, valueAfter);
636
503
  } else if (path.length > 0) {
637
- update = set(this.get(), path, update);
504
+ update = propAccess.set(this.get(), path, update);
638
505
  }
639
506
  if (this.derivedFrom) {
640
507
  this.derivedFrom.updater(update);
@@ -650,7 +517,7 @@ class Store extends Callable {
650
517
  (_a = this.calculatedValue) == null ? void 0 : _a.invalidateDependencies(recursive);
651
518
  }
652
519
  (_b = this.calculatedValue) == null ? void 0 : _b.stop();
653
- this.calculatedValue = void 0;
520
+ this.calculatedValue = this.defaultValue;
654
521
  this.notify();
655
522
  }
656
523
  subscribe(listener, options) {
@@ -659,7 +526,7 @@ class Store extends Callable {
659
526
  runNow = true,
660
527
  throttle: throttleOption,
661
528
  debounce: debounceOption,
662
- equals = deepEqual
529
+ equals = propAccess.deepEqual
663
530
  } = options ?? {};
664
531
  let isSetup = false;
665
532
  let previousValue;
@@ -719,7 +586,7 @@ class Store extends Callable {
719
586
  }
720
587
  resolve(value);
721
588
  stopped = true;
722
- clearTimeout(timer);
589
+ timer && clearTimeout(timer);
723
590
  setTimeout(() => cancel());
724
591
  },
725
592
  {
@@ -744,7 +611,7 @@ class Store extends Callable {
744
611
  });
745
612
  }
746
613
  map(_selector, ...args) {
747
- const updater = _selector instanceof Function ? args[0] : (value) => (state) => set(state, _selector, value);
614
+ const updater = _selector instanceof Function ? args[0] : (value) => (state) => propAccess.set(state, _selector, value);
748
615
  const selector = makeSelector(_selector);
749
616
  const derivedFrom = {
750
617
  store: this.derivedFrom ? this.derivedFrom.store : this,
@@ -881,7 +748,7 @@ function create(initialState, options) {
881
748
  }
882
749
  const createStore = /* @__PURE__ */ Object.assign(create, {
883
750
  defaultOptions: {
884
- equals: deepEqual
751
+ equals: propAccess.deepEqual
885
752
  }
886
753
  });
887
754
  exports.PromiseWithState = PromiseWithState;
@@ -890,20 +757,12 @@ exports.arrayMethods = arrayMethods;
890
757
  exports.autobind = autobind;
891
758
  exports.calcDuration = calcDuration;
892
759
  exports.calculatedValue = calculatedValue;
893
- exports.castArrayPath = castArrayPath;
894
760
  exports.createStore = createStore;
895
761
  exports.debounce = debounce;
896
- exports.deepEqual = deepEqual;
897
- exports.get = get;
898
- exports.join = join;
899
762
  exports.makeSelector = makeSelector;
900
763
  exports.mapMethods = mapMethods;
901
764
  exports.queue = queue;
902
765
  exports.recordMethods = recordMethods;
903
- exports.remove = remove;
904
- exports.set = set;
905
766
  exports.setMethods = setMethods;
906
- exports.shallowEqual = shallowEqual;
907
- exports.strictEqual = strictEqual;
908
767
  exports.throttle = throttle;
909
768
  //# sourceMappingURL=store.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.cjs","sources":["../../src/lib/autobind.ts","../../src/lib/calcDuration.ts","../../src/lib/deferred.ts","../../src/lib/queue.ts","../../src/lib/equals.ts","../../src/lib/promiseWithState.ts","../../src/lib/calculatedValue.ts","../../src/lib/clone.ts","../../src/lib/propAccess.ts","../../src/lib/makeSelector.ts","../../src/lib/callable.ts","../../src/lib/debounce.ts","../../src/lib/forwardError.ts","../../src/lib/promiseWithCancel.ts","../../src/lib/standardMethods.ts","../../src/lib/throttle.ts","../../src/lib/disposable.ts","../../src/core/store.ts"],"sourcesContent":["export const autobind = <\n TClass extends abstract new (...args: any) => any = abstract new (...args: any) => any,\n>(\n _class: TClass,\n _context?: ClassDecoratorContext<TClass>,\n) => {\n if (Reflect.getOwnPropertyDescriptor(_class.prototype, '__autobind_done__')) {\n return _class;\n }\n Reflect.defineProperty(_class.prototype, '__autobind_done__', { value: true });\n\n for (const key of Reflect.ownKeys(_class.prototype)) {\n if (key === 'constructor') {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(_class.prototype, key);\n\n // Only methods need binding\n if (typeof descriptor?.value === 'function') {\n let method = descriptor.value as (...args: any[]) => any;\n let isBinding = false;\n\n Object.defineProperty(_class.prototype, key, {\n configurable: true,\n get() {\n if (\n isBinding ||\n this === _class.prototype ||\n Object.prototype.hasOwnProperty.call(this, key) ||\n typeof method !== 'function'\n ) {\n return method;\n }\n\n const boundMethod = (...args: any[]) => Reflect.apply(method, this, args);\n isBinding = true;\n\n Object.defineProperty(this, key, {\n configurable: true,\n get() {\n return boundMethod;\n },\n set(v) {\n method = v;\n // delete this[key];\n },\n });\n\n isBinding = false;\n return boundMethod;\n },\n set(v) {\n method = v;\n },\n });\n }\n }\n\n return _class;\n};\n","import type { Duration } from '../core/commonTypes';\n\nexport function calcDuration(t: Duration) {\n if (typeof t === 'number') return t;\n return (\n (t.milliseconds ?? 0) +\n (t.seconds ?? 0) * 1000 +\n (t.minutes ?? 0) * 60 * 1000 +\n (t.hours ?? 0) * 60 * 60 * 1000 +\n (t.days ?? 0) * 24 * 60 * 60 * 1000\n );\n}\n","export class Deferred<T = void> extends Promise<T> {\n static get [Symbol.species]() {\n return Promise;\n }\n\n resolve: (value: T | PromiseLike<T>) => void = () => undefined;\n reject: (reason?: any) => void = () => undefined;\n\n constructor() {\n const that = {};\n\n super((resolve, reject) => {\n Object.assign(that, { resolve, reject });\n });\n\n Object.assign(this, that);\n }\n}\n","import type { MaybePromise } from './maybePromise';\nimport type { Listener } from '@core';\n\ntype Action<T> = () => MaybePromise<T>;\n\nexport interface Queue {\n <T>(action: Action<T>, ref?: any): Promise<T>;\n clear: () => void;\n whenDone: () => Promise<void>;\n size: number;\n getRefs: () => any[];\n}\n\nexport function queue(): Queue {\n const q: {\n action: Action<any>;\n resolve: (value: any) => void;\n reject: (error: unknown) => void;\n ref?: any;\n }[] = [];\n const completionListeners = new Set<Listener<void>>();\n let active = false;\n\n const notify = () => {\n for (const listener of completionListeners) {\n listener();\n }\n\n completionListeners.clear();\n };\n\n const run = async () => {\n if (!active) {\n active = true;\n\n let next;\n while ((next = q.shift())) {\n try {\n let result = next.action();\n if (result instanceof Promise) {\n result = await result;\n }\n\n next.resolve(result);\n } catch (error) {\n next.reject(error);\n }\n }\n\n active = false;\n notify();\n }\n };\n\n return Object.assign(\n <T>(action: Action<T>, ref?: any) => {\n return new Promise<T>((resolve, reject) => {\n q.push({ action, resolve, reject, ref });\n run();\n });\n },\n {\n clear() {\n q.length = 0;\n },\n\n whenDone() {\n if (!active) {\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve) => {\n completionListeners.add(resolve);\n });\n },\n\n get size() {\n return q.length;\n },\n\n getRefs() {\n return q.map((item) => item.ref).filter((x) => x !== undefined);\n },\n },\n );\n}\n","export function strictEqual(a: any, b: any) {\n return a === b;\n}\n\nexport function shallowEqual(a: any, b: any): boolean {\n return internalEqual(strictEqual)(a, b);\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n return internalEqual(deepEqual)(a, b);\n}\n\nconst internalEqual = (comp: (a: any, b: any) => boolean) => (a: any, b: any) => {\n if (a === b) {\n return true;\n }\n\n if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object') {\n // eslint-disable-next-line no-self-compare\n return a !== a && b !== b;\n }\n\n if (a.constructor !== b.constructor) {\n return false;\n }\n\n if (a.constructor === Object || Array.isArray(a)) {\n const entries1 = Object.entries(a);\n const entries2 = Object.entries(b);\n return (\n entries1.length === entries2.length && entries1.every(([key, value]) => comp(value, b[key]))\n );\n }\n\n if (a instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n if (a instanceof RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n\n if (a instanceof Map) {\n return a.size === b.size && [...a.entries()].every(([key, value]) => comp(value, b.get(key)));\n }\n\n if (a instanceof Set) {\n return a.size === b.size && [...a.values()].every((value) => b.has(value));\n }\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView(a)) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n const a_ = new Int8Array(a.buffer);\n const b_ = new Int8Array(b.buffer);\n return a_.every((value, i) => value === b_[i]);\n }\n\n return false;\n};\n","import { type ErrorState, type PendingState, type ValueState } from './cacheState';\nimport { type MaybePromise } from './maybePromise';\n\nexport class PromiseWithState<T> extends Promise<T> {\n static get [Symbol.species]() {\n return Promise;\n }\n\n static override resolve(): PromiseWithState<void>;\n\n static override resolve<T>(value: MaybePromise<T>): PromiseWithState<T>;\n\n static override resolve<T>(value?: MaybePromise<T>) {\n return new PromiseWithState<T>(Promise.resolve(value as MaybePromise<T>), {\n status: 'value',\n value: value as T,\n });\n }\n\n static override reject<T = never>(error: unknown) {\n return new PromiseWithState<T>(Promise.reject(error), { status: 'error', error });\n }\n\n constructor(\n value: Promise<T>,\n public state: ValueState<T> | ErrorState | PendingState = { status: 'pending' },\n ) {\n super((resolve) => resolve(value));\n\n value\n .then((value) => {\n this.state = { status: 'value', value };\n })\n .catch((error) => {\n this.state = { status: 'error', error };\n });\n }\n}\n","import type { AsyncConnectionActions, Cancel, Connection } from '@core/commonTypes';\nimport type { Store } from '@core/store';\nimport { Deferred } from '@lib/deferred';\nimport { queue } from '@lib/queue';\nimport { deepEqual } from './equals';\nimport { PromiseWithState } from '@lib/promiseWithState';\nimport type { Cache } from '@core';\n\nexport interface CalculatedValue<T> {\n value: T;\n check: () => void;\n stop(): void;\n invalidateDependencies(recursive?: boolean): void;\n}\n\nexport function calculatedValue<T>(store: Store<T>, notify: () => void): CalculatedValue<T> {\n let active = false;\n const deps = new Array<{ store: Store<any>; value: any; on: () => void; off: () => void }>();\n let value: T | undefined;\n const whenConnected = new Deferred();\n const whenExecuted = new Deferred();\n let connection: { active: boolean; cancel?: Cancel } | undefined;\n const q = queue();\n q(() => whenExecuted);\n\n const cancelEffect = store.addEffect(() => {\n if (connection) {\n store.invalidate();\n return;\n }\n\n active = true;\n\n for (const dep of deps) {\n dep.on();\n }\n\n return () => {\n active = false;\n\n for (const dep of deps) {\n dep.off();\n }\n\n if (connection) {\n connection.active = false;\n connection.cancel?.();\n q.clear();\n\n if ('state' in store) {\n (store as unknown as Cache<any>).state.set('isConnected', false);\n }\n }\n };\n });\n\n function use<S>(dep: Store<S>) {\n const value = dep.get();\n let cancel: Cancel | undefined;\n\n const on = () => {\n cancel ||= dep.subscribe(() => store.invalidate(), { runNow: false });\n };\n\n const off = () => {\n cancel?.();\n cancel = undefined;\n };\n\n deps.push({ store: dep, value, on, off });\n\n if (active) {\n on();\n }\n\n return value;\n }\n\n async function connect(createConnection: Connection<T>) {\n if (!active) {\n connection = { active: false };\n return;\n }\n\n const actions: AsyncConnectionActions<any> = {\n set(_value) {\n connection?.active &&\n q(() => {\n value = _value;\n notify();\n });\n },\n updateValue(update) {\n connection?.active &&\n q(async () => {\n if (update instanceof Function) {\n update = update(await value);\n }\n\n if (update instanceof Promise) {\n update = await update;\n }\n\n if (!connection?.active) {\n return;\n }\n\n value = PromiseWithState.resolve(update) as T;\n notify();\n });\n },\n updateError(error) {\n connection?.active &&\n q(() => {\n (store as unknown as Store<Promise<any>>).set(Promise.reject(error));\n });\n },\n updateIsConnected(isConnected) {\n if (!connection?.active) {\n return;\n }\n\n if (isConnected) {\n whenConnected.resolve();\n }\n\n q(() => {\n if ('state' in store) {\n (store as unknown as Cache<any>).state.set('isConnected', isConnected);\n }\n });\n },\n close() {\n connection?.active && store.invalidate();\n },\n };\n\n connection = { active: true };\n connection.cancel = createConnection(actions as any);\n\n if (!connection.active) {\n connection.cancel();\n }\n\n return whenConnected;\n }\n\n value = store.getter instanceof Function ? store.getter({ use, connect }) : store.getter;\n\n if (value instanceof Promise) {\n value.finally(() => whenExecuted.resolve()).catch(() => undefined);\n } else {\n whenExecuted.resolve();\n }\n\n function check() {\n if (active) {\n return;\n }\n\n for (const dep of deps) {\n if (!deepEqual(dep.store.get(), dep.value)) {\n store.invalidate();\n return;\n }\n }\n }\n\n function stop() {\n cancelEffect();\n whenExecuted.resolve();\n whenConnected.resolve();\n\n if (connection) {\n connection.active = false;\n connection.cancel?.();\n q.clear();\n }\n }\n\n function invalidateDependencies(recursive?: boolean) {\n for (const dep of deps) {\n dep.store.invalidate(recursive);\n }\n }\n\n return {\n get value() {\n return value!;\n },\n check,\n stop,\n invalidateDependencies,\n };\n}\n\nexport function staticValue<T>(value: T): CalculatedValue<T> {\n return {\n value,\n check: () => undefined,\n stop: () => undefined,\n invalidateDependencies: () => undefined,\n };\n}\n","export function flatClone<T>(object: T): T {\n if (object instanceof Map) {\n return new Map(object) as any;\n }\n\n if (object instanceof Set) {\n return new Set(object) as any;\n }\n\n if (Array.isArray(object)) {\n return [...object] as any;\n }\n\n if (object instanceof Object) {\n return { ...object };\n }\n\n return object;\n}\n","import type { Update } from '../core/commonTypes';\nimport { flatClone } from './clone';\nimport type { KeyType, Path, Value } from './path';\n\nexport function castArrayPath(path: string | KeyType[]): KeyType[] {\n if (Array.isArray(path)) {\n return path;\n }\n\n if (path === '') {\n return [];\n }\n\n return (path as string).split('.');\n}\n\nexport function get<T, P extends Path<T>>(object: T, path: P): Value<T, P> {\n const _path = castArrayPath(path as any);\n const [first, ...rest] = _path;\n\n if (first === undefined || !object) {\n return object as Value<T, P>;\n }\n\n if (object instanceof Map) {\n return get(object.get(first), rest);\n }\n\n if (object instanceof Set) {\n return get(Array.from(object)[Number(first)], rest);\n }\n\n if (object instanceof Object) {\n return get(object[first as keyof T], rest as any) as Value<T, P>;\n }\n\n throw new Error(`Could not get ${path} of ${object}`);\n}\n\nexport function set<T, P extends Path<T>>(\n object: T,\n path: P,\n value: Update<Value<T, P>>,\n rootPath = path,\n): T {\n const _path = castArrayPath(path as any);\n const [first, ...rest] = _path;\n\n if (first === undefined) {\n return value as any;\n }\n\n const updateChild = (child: any) => {\n if (!child && rest.length > 0) {\n const _rootPath = castArrayPath(rootPath as any);\n\n const prefix = _rootPath.slice(0, -rest.length);\n throw new Error(`Cannot set ${rootPath} because ${prefix.join('.')} is ${child}`);\n }\n\n return set(child, rest as any, value, rootPath);\n };\n\n if (object instanceof Map) {\n const copy = flatClone(object);\n const child = copy.get(first);\n copy.set(first, updateChild(child));\n return copy;\n }\n\n if (object instanceof Set) {\n const copy = [...object];\n const child = copy[Number(first)];\n copy[Number(first)] = updateChild(child);\n return new Set(copy) as any;\n }\n\n if (object instanceof Object || object === undefined) {\n const copy = flatClone(object ?? ({} as T));\n copy[first as keyof T] = updateChild(copy[first as keyof T]);\n return copy;\n }\n\n throw new Error(`Could not set ${path} of ${object}`);\n}\n\nexport function remove<T, P extends Path<T, true>>(object: T, path: P): T {\n const _path = castArrayPath(path as any);\n\n if (_path.length === 0) {\n return undefined as any;\n }\n\n const parentPath = _path.slice(0, -1);\n const key = _path[_path.length - 1];\n\n const parent = flatClone(get(object, parentPath as any));\n\n if (parent instanceof Map) {\n parent.delete(key);\n } else if (parent instanceof Set) {\n const value = Array.from(parent)[Number(key)];\n parent.delete(value);\n } else {\n delete parent[key as keyof typeof parent];\n }\n\n return set(object, parentPath as any, parent);\n}\n\nexport function join(a: string, b: string) {\n return [a, b].filter(Boolean).join('.');\n}\n","import type { Path } from './path';\nimport { get } from './propAccess';\n\nexport function makeSelector<T, S>(selector?: ((value: T) => S) | Path<any>): (value: T) => S {\n if (!selector) {\n return (x) => x as any;\n }\n\n if (selector instanceof Function) {\n return selector;\n }\n\n return (x) => get(x, selector as any) as any;\n}\n","export class Callable<Args extends any[], T> extends Function {\n constructor(protected _call: (...args: Args) => T) {\n super('...args', 'return this._call(...args)');\n\n // eslint-disable-next-line no-constructor-return\n return this.bind(this);\n }\n}\n","import { calcDuration } from './calcDuration';\nimport type { Duration } from '@core';\n\nexport type DebounceOptions =\n | Duration\n | {\n wait: Duration;\n maxWait?: Duration;\n };\n\nexport function debounce<Args extends any[]>(\n action: (...args: Args) => void,\n options: Duration | DebounceOptions,\n) {\n const wait =\n typeof options === 'object' && 'wait' in options\n ? calcDuration(options.wait)\n : calcDuration(options);\n\n const maxWait =\n typeof options === 'object' && 'maxWait' in options && options.maxWait !== undefined\n ? calcDuration(options.maxWait)\n : undefined;\n\n let run: (() => void) | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n let timeoutStarted: number | undefined;\n\n function flush() {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n run?.();\n }\n\n function cancel() {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n run = undefined;\n timeout = undefined;\n timeoutStarted = undefined;\n }\n\n function isScheduled() {\n return timeout !== undefined;\n }\n\n function debounce(...args: Args) {\n const now = Date.now();\n timeoutStarted ??= now;\n\n const deadline = Math.min(\n //\n now + wait,\n timeoutStarted + (maxWait ?? Number.POSITIVE_INFINITY),\n );\n\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n run = () => {\n run = undefined;\n timeout = undefined;\n timeoutStarted = undefined;\n\n action(...args);\n };\n\n timeout = setTimeout(run, deadline - now);\n }\n\n return Object.assign(debounce, { flush, cancel, isScheduled });\n}\n","export function forwardError(error: unknown) {\n setTimeout(() => {\n throw error;\n });\n}\n","import { autobind } from '@lib/autobind';\n\nexport class PromiseCancelError extends Error {\n constructor() {\n super('cancelled');\n }\n}\n\nexport class PromiseWithCancel<T> extends Promise<T> {\n private abortController;\n\n constructor(\n executor: (\n resolve: (value: T) => void,\n reject: (error: unknown) => void,\n signal: AbortSignal,\n ) => void,\n ) {\n autobind(PromiseWithCancel);\n const abortController = new AbortController();\n\n super((resolve, reject) => {\n executor(resolve, reject, abortController.signal);\n\n abortController.signal.addEventListener('abort', (e) => {\n reject(abortController.signal.reason);\n });\n });\n\n this.abortController = abortController;\n }\n\n cancel(reason: any = new PromiseCancelError()) {\n this.abortController.abort(reason);\n }\n}\n","import type { Store } from '../core/store';\nimport type { OptionalPropertyOf } from './typeHelpers';\n\ntype Function_ = (...args: any) => any;\n\nfunction createArrayAction<P extends keyof Array<any>>(prop: P) {\n return function arrayAction<T extends Array<any>>(\n this: Store<T>,\n ...args: T[P] extends Function_ ? Parameters<T[P]> : never\n ): T[P] extends Function_ ? ReturnType<T[P]> : never {\n const newArray = this.get().slice() as T;\n const result = (newArray[prop] as Function_)(...(args as any));\n this.set(newArray);\n return result;\n };\n}\nexport const arrayMethods = {\n splice: /* @__PURE__ */ createArrayAction('splice'),\n push: /* @__PURE__ */ createArrayAction('push'),\n pop: /* @__PURE__ */ createArrayAction('pop'),\n shift: /* @__PURE__ */ createArrayAction('shift'),\n unshift: /* @__PURE__ */ createArrayAction('unshift'),\n reverse: /* @__PURE__ */ createArrayAction('reverse'),\n sort: /* @__PURE__ */ createArrayAction('sort'),\n};\n\nexport const recordMethods = {\n delete<T extends Record<any, any>, K extends OptionalPropertyOf<T>>(this: Store<T>, key: K) {\n const copy = { ...this.get() };\n delete copy[key];\n this.set(copy);\n },\n\n clear<T extends Record<any, any>>(this: Store<Partial<T>>) {\n this.set({} as T);\n },\n};\n\nexport const mapMethods = {\n delete<K, V>(this: Store<Map<K, V>>, key: K) {\n const newMap = new Map(this.get());\n const result = newMap.delete(key);\n this.set(newMap);\n return result;\n },\n\n clear<K, V>(this: Store<Map<K, V>>) {\n this.set(new Map());\n },\n};\n\nexport const setMethods = {\n add<T>(this: Store<Set<T>>, value: T) {\n const newSet = new Set(this.get());\n newSet.add(value);\n this.set(newSet);\n },\n\n delete<T>(this: Store<Set<T>>, value: T) {\n const newSet = new Set(this.get());\n newSet.delete(value);\n this.set(newSet);\n },\n\n clear<T>(this: Store<Set<T>>) {\n this.set(new Set());\n },\n};\n","import { calcDuration } from './calcDuration';\nimport type { Duration } from '@core';\n\nexport function throttle<Args extends any[]>(\n action: (...args: Args) => void,\n duration: Duration,\n): (...args: Args) => void {\n const ms = calcDuration(duration);\n\n let t = 0;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n\n return (...args: Args) => {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n const dt = t + ms - Date.now();\n if (dt <= 0) {\n action(...args);\n t = Date.now();\n return;\n }\n\n timeout = setTimeout(() => {\n action(...args);\n t = Date.now();\n }, dt);\n };\n}\n","import type { Cancel } from '@core';\nimport type { DisposableCancel } from '@core/commonTypes';\n\nexport default function disposable(dispose: Cancel): DisposableCancel {\n return Object.assign(\n dispose,\n Symbol.dispose ? { [Symbol.dispose]: dispose } : {},\n ) as DisposableCancel;\n}\n","import { autobind } from '@lib/autobind';\nimport { calcDuration } from '@lib/calcDuration';\nimport { calculatedValue, staticValue, type CalculatedValue } from '@lib/calculatedValue';\nimport { Callable } from '@lib/callable';\nimport { debounce } from '@lib/debounce';\nimport { deepEqual } from '@lib/equals';\nimport { forwardError } from '@lib/forwardError';\nimport { makeSelector } from '@lib/makeSelector';\nimport type { Path, Value } from '@lib/path';\nimport { PromiseWithCancel } from '@lib/promiseWithCancel';\nimport { get, set } from '@lib/propAccess';\nimport { arrayMethods, mapMethods, recordMethods, setMethods } from '@lib/standardMethods';\nimport { throttle } from '@lib/throttle';\nimport type {\n CalculationActions,\n Cancel,\n DisposableCancel,\n Duration,\n Effect,\n Listener,\n Selector,\n SubscribeOptions,\n Update,\n} from './commonTypes';\nimport disposable from '@lib/disposable';\n\nexport type StoreMethods = Record<string, (...args: any[]) => any>;\n\nexport type BoundStoreMethods<T, Methods extends StoreMethods> = Methods &\n ThisType<Store<T> & Methods>;\n\nexport interface StoreOptions {\n retain?: Duration;\n equals?: SubscribeOptions['equals'];\n}\n\nexport interface StoreOptionsWithMethods<T, Methods extends StoreMethods> extends StoreOptions {\n methods?: Methods & ThisType<Store<T> & Methods & StandardMethods<T>>;\n}\n\nexport type Calculate<T> = (helpers: CalculationActions<T>) => T;\n\ntype StandardMethods<T> =\n T extends Map<any, any>\n ? typeof mapMethods\n : T extends Set<any>\n ? typeof setMethods\n : T extends Array<any>\n ? typeof arrayMethods\n : T extends Record<any, any>\n ? typeof recordMethods\n : Record<string, never>;\n\ntype StoreWithMethods<T, Methods extends StoreMethods> = Store<T> &\n Omit<BoundStoreMethods<T, Methods>, keyof Store<T>> &\n StandardMethods<T>;\n\nexport interface OnceOptions {\n signal?: AbortSignal;\n timeout?: Duration;\n}\n\nfunction noop() {\n return undefined;\n}\n\nexport class Store<T> extends Callable<any, any> {\n protected calculatedValue?: CalculatedValue<T>;\n\n protected listeners = new Map<Listener, boolean>();\n\n protected effects = new Map<\n Effect,\n { handle?: Cancel; retain?: number; timeout?: ReturnType<typeof setTimeout> }\n >();\n\n protected notifyId = {};\n\n constructor(\n public readonly getter: T | Calculate<T>,\n public readonly options: StoreOptions = {},\n public readonly derivedFrom?: {\n store: Store<any>;\n selectors: (Selector<any, any> | Path<any>)[];\n updater: (state: any) => void;\n },\n protected readonly _call: (...args: any[]) => any = () => undefined,\n ) {\n super(_call);\n autobind(Store);\n }\n\n get(): T {\n this.calculatedValue?.check();\n\n if (!this.calculatedValue) {\n this.calculatedValue = calculatedValue(this, this.notify);\n }\n\n return this.calculatedValue.value;\n }\n\n set(update: Update<T>): void;\n\n set<const P extends Path<T>>(path: P, update: Update<Value<T, P>>): void;\n\n set(...args: any[]): void {\n const path: any = args.length > 1 ? args[0] : [];\n let update: Update<any> = args.length > 1 ? args[1] : args[0];\n\n if (update instanceof Function) {\n const before = this.get();\n const valueBefore = get(before, path);\n const valueAfter = update(valueBefore);\n update = set(before, path, valueAfter);\n } else if (path.length > 0) {\n update = set(this.get(), path, update);\n }\n\n if (this.derivedFrom) {\n this.derivedFrom.updater(update);\n return;\n }\n\n this.calculatedValue?.stop();\n this.calculatedValue = staticValue(update);\n this.notify();\n }\n\n invalidate(recursive?: boolean) {\n if (recursive) {\n this.calculatedValue?.invalidateDependencies(recursive);\n }\n\n this.calculatedValue?.stop();\n this.calculatedValue = undefined;\n this.notify();\n }\n\n subscribe(listener: Listener<T>, options?: SubscribeOptions): DisposableCancel {\n const {\n passive,\n runNow = true,\n throttle: throttleOption,\n debounce: debounceOption,\n equals = deepEqual,\n } = options ?? {};\n\n let isSetup = false;\n let previousValue: { value: T } | undefined;\n\n let innerListener = () => {\n if (!isSetup) {\n return;\n }\n\n const value = passive ? this.calculatedValue : { value: this.get() };\n\n if (!value) {\n return;\n }\n\n if (previousValue && equals(value.value, previousValue.value)) {\n return;\n }\n\n const _previousValue = previousValue?.value;\n previousValue = this.calculatedValue && { value: this.calculatedValue?.value };\n\n try {\n listener(value.value, _previousValue);\n } catch (error) {\n forwardError(error);\n }\n };\n\n if (throttleOption) {\n innerListener = throttle(innerListener, throttleOption);\n } else if (debounceOption) {\n innerListener = debounce(innerListener, debounceOption);\n }\n\n this.listeners.set(innerListener, !passive);\n if (!passive) {\n this.onSubscribe();\n }\n\n isSetup = true;\n\n if (runNow) {\n innerListener();\n } else {\n previousValue = passive\n ? this.calculatedValue && { value: this.calculatedValue.value }\n : { value: this.get() };\n }\n\n return disposable(() => {\n this.listeners.delete(innerListener);\n if (!passive) {\n this.onUnsubscribe();\n }\n });\n }\n\n once<S extends T>(\n condition: (value: T) => value is S,\n options?: OnceOptions,\n ): PromiseWithCancel<S>;\n\n once(condition: (value: T) => boolean, options?: OnceOptions): PromiseWithCancel<T>;\n\n once(options?: OnceOptions): PromiseWithCancel<T>;\n\n once(\n ...args: [condition: (value: any) => boolean, options?: OnceOptions] | [options?: OnceOptions]\n ): PromiseWithCancel<any> {\n const condition = args[0] instanceof Function ? args[0] : Boolean;\n const options = args[0] instanceof Function ? args[1] : args[0];\n\n return new PromiseWithCancel<T>((resolve, reject, signal) => {\n let stopped = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const cancel = this.subscribe(\n (value) => {\n if (stopped || !condition(value)) {\n return;\n }\n\n resolve(value);\n stopped = true;\n clearTimeout(timer);\n setTimeout(() => cancel());\n },\n {\n runNow: !!condition,\n },\n );\n\n if (stopped) {\n return;\n }\n\n signal.addEventListener('abort', cancel);\n\n options?.signal?.addEventListener('abort', () => {\n cancel();\n reject(options.signal?.reason ?? new Error('cancelled'));\n });\n\n if (options?.timeout !== undefined) {\n timer = setTimeout(() => {\n cancel();\n reject(new Error('timeout'));\n }, calcDuration(options.timeout));\n }\n });\n }\n\n map<S>(selector: Selector<T, S>, updater?: (value: S) => Update<T>): Store<S>;\n\n map<P extends Path<T>>(selector: P): Store<Value<T, P>>;\n\n map(_selector: Selector<T, any> | Path<any>, ...args: any[]): Store<any> {\n const updater: ((value: any) => Update<T>) | undefined =\n _selector instanceof Function\n ? args[0]\n : (value) => (state) => set(state, _selector as Path<T>, value);\n\n const selector = makeSelector(_selector);\n\n const derivedFrom = {\n store: this.derivedFrom ? this.derivedFrom.store : this,\n selectors: this.derivedFrom ? [...this.derivedFrom.selectors, _selector] : [_selector],\n\n updater: (value: any) => {\n if (!updater) {\n throw new TypeError(\n 'Can only update computed stores that either are derived from other stores using string selectors or have an updater function.',\n );\n }\n\n let update = updater(value);\n\n if (update instanceof Function) {\n update = update(this.get());\n }\n\n if (this.derivedFrom) {\n this.derivedFrom.updater(update);\n } else {\n this.set(update);\n }\n },\n };\n\n return new Store(\n ({ use }) => {\n return selector(use(this));\n },\n this.options,\n derivedFrom,\n );\n }\n\n /** Add an effect that will be executed when the store becomes active, which means when it has at least one subscriber.\n * @param effect\n * If there is already a subscriber, the effect will be executed immediately.\n * Otherweise it will be executed as soon as the first subscription is created.\n * Every time all subscriptions are removed and the first is created again, the effect will be executed again.\n * @param retain\n * If provided, delay tearing down effects when the last subscriber is removed. This is useful if a short gap in subscriber coverage is supposed to be ignored. E.g. when switching pages, the old page might unsubscribe, while the new page subscribes immediately after.\n * @returns\n * The effect can return a teardown callback, which will be executed when the last subscription is removed and potentially the ratain time has passed.\n */\n addEffect(effect: Effect, retain = this.options.retain) {\n this.effects.set(effect, {\n handle: this.isActive() ? effect() ?? noop : undefined,\n retain: retain !== undefined ? calcDuration(retain) : undefined,\n });\n\n return () => {\n const { handle, timeout } = this.effects.get(effect) ?? {};\n handle?.();\n\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n this.effects.delete(effect);\n };\n }\n\n /** Return whether the store is currently active, which means whether it has at least one subscriber. */\n isActive() {\n return [...this.listeners.values()].some(Boolean);\n }\n\n protected onSubscribe() {\n if ([...this.listeners.values()].filter(Boolean).length > 1) return;\n\n for (const [effect, { handle, retain, timeout }] of this.effects.entries()) {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n this.effects.set(effect, {\n handle: handle ?? effect() ?? noop,\n retain,\n timeout: undefined,\n });\n }\n }\n\n protected onUnsubscribe() {\n if ([...this.listeners.values()].some(Boolean)) return;\n\n for (const [effect, { handle, retain, timeout }] of this.effects.entries()) {\n if (!retain) {\n handle?.();\n\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n this.effects.set(effect, {\n handle: undefined,\n retain,\n timeout: undefined,\n });\n\n continue;\n }\n\n const newTimeout =\n timeout ??\n (handle\n ? setTimeout(() => {\n handle();\n this.effects.set(effect, {\n handle: undefined,\n retain,\n timeout: undefined,\n });\n }, retain)\n : undefined);\n\n this.effects.set(effect, {\n handle,\n retain,\n timeout: newTimeout,\n });\n }\n }\n\n protected notify() {\n const n = {};\n this.notifyId = n;\n\n const snapshot = [...this.listeners.keys()];\n for (const listener of snapshot) {\n listener();\n if (n !== this.notifyId) break;\n }\n }\n}\n\nfunction create<T>(calculate: Calculate<T>, options?: StoreOptions): Store<T>;\nfunction create<T, Methods extends StoreMethods = {}>(\n initialState: T,\n options?: StoreOptionsWithMethods<T, Methods>,\n): StoreWithMethods<T, Methods>;\nfunction create<T, Methods extends StoreMethods>(\n initialState: T | Calculate<T>,\n options?: StoreOptionsWithMethods<T, Methods>,\n): StoreWithMethods<T, Methods> | Store<T> {\n options = { ...createStore.defaultOptions, ...options };\n\n const store = new Store(initialState, options);\n\n if (initialState instanceof Function) {\n return store;\n }\n\n let methods: StoreMethods | undefined = options?.methods;\n\n if (initialState instanceof Map) {\n methods = { ...mapMethods, ...methods };\n } else if (initialState instanceof Set) {\n methods = { ...setMethods, ...methods };\n } else if (Array.isArray(initialState)) {\n methods = { ...arrayMethods, ...methods };\n } else if (initialState instanceof Object) {\n methods = { ...recordMethods, ...methods };\n }\n\n const boundMethods = Object.fromEntries(\n Object.entries(methods ?? ({} as BoundStoreMethods<T, any>))\n .filter(([name]) => !(name in store))\n .map(([name, action]) => [name, (action as any).bind(store)]),\n ) as BoundStoreMethods<T, any>;\n\n return Object.assign(store, boundMethods);\n}\n\nexport const createStore = /* @__PURE__ */ Object.assign(create, {\n defaultOptions: {\n equals: deepEqual,\n } as StoreOptions,\n});\n"],"names":["value","debounce","_a"],"mappings":"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"}
1
+ {"version":3,"file":"store.cjs","sources":["../../src/lib/autobind.ts","../../src/lib/calcDuration.ts","../../src/lib/deferred.ts","../../src/lib/queue.ts","../../src/lib/isPromise.ts","../../src/lib/promiseWithState.ts","../../src/lib/calculatedValue.ts","../../src/lib/makeSelector.ts","../../src/lib/callable.ts","../../src/lib/debounce.ts","../../src/lib/forwardError.ts","../../src/lib/promiseWithCancel.ts","../../src/lib/standardMethods.ts","../../src/lib/throttle.ts","../../src/lib/disposable.ts","../../src/core/store.ts"],"sourcesContent":["export const autobind = <\n TClass extends abstract new (...args: any) => any = abstract new (...args: any) => any,\n>(\n _class: TClass,\n _context?: ClassDecoratorContext<TClass>,\n) => {\n if (Reflect.getOwnPropertyDescriptor(_class.prototype, '__autobind_done__')) {\n return _class;\n }\n Reflect.defineProperty(_class.prototype, '__autobind_done__', { value: true });\n\n for (const key of Reflect.ownKeys(_class.prototype)) {\n if (key === 'constructor') {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(_class.prototype, key);\n\n // Only methods need binding\n if (typeof descriptor?.value === 'function') {\n let method = descriptor.value as (...args: any[]) => any;\n let isBinding = false;\n\n Object.defineProperty(_class.prototype, key, {\n configurable: true,\n get() {\n if (\n isBinding ||\n this === _class.prototype ||\n Object.prototype.hasOwnProperty.call(this, key) ||\n typeof method !== 'function'\n ) {\n return method;\n }\n\n const boundMethod = (...args: any[]) => Reflect.apply(method, this, args);\n isBinding = true;\n\n Object.defineProperty(this, key, {\n configurable: true,\n get() {\n return boundMethod;\n },\n set(v) {\n method = v;\n // delete this[key];\n },\n });\n\n isBinding = false;\n return boundMethod;\n },\n set(v) {\n method = v;\n },\n });\n }\n }\n\n return _class;\n};\n","import type { Duration } from '../core/commonTypes';\n\nexport function calcDuration(t: Duration) {\n if (typeof t === 'number') return t;\n return (\n (t.milliseconds ?? 0) +\n (t.seconds ?? 0) * 1000 +\n (t.minutes ?? 0) * 60 * 1000 +\n (t.hours ?? 0) * 60 * 60 * 1000 +\n (t.days ?? 0) * 24 * 60 * 60 * 1000\n );\n}\n","export class Deferred<T = void> extends Promise<T> {\n static get [Symbol.species]() {\n return Promise;\n }\n\n resolve: (value: T | PromiseLike<T>) => void = () => undefined;\n reject: (reason?: any) => void = () => undefined;\n\n constructor() {\n const that = {};\n\n super((resolve, reject) => {\n Object.assign(that, { resolve, reject });\n });\n\n Object.assign(this, that);\n }\n}\n","import type { MaybePromise } from './maybePromise';\nimport type { Listener } from '@core';\n\ntype Action<T> = () => MaybePromise<T>;\n\nexport interface Queue {\n <T>(action: Action<T>, ref?: any): Promise<T>;\n clear: () => void;\n whenDone: () => Promise<void>;\n size: number;\n getRefs: () => any[];\n}\n\nexport function queue(): Queue {\n const q: {\n action: Action<any>;\n resolve: (value: any) => void;\n reject: (error: unknown) => void;\n ref?: any;\n }[] = [];\n const completionListeners = new Set<Listener<void>>();\n let active = false;\n\n const notify = () => {\n for (const listener of completionListeners) {\n listener();\n }\n\n completionListeners.clear();\n };\n\n const run = async () => {\n if (!active) {\n active = true;\n\n let next;\n while ((next = q.shift())) {\n try {\n let result = next.action();\n if (result instanceof Promise) {\n result = await result;\n }\n\n next.resolve(result);\n } catch (error) {\n next.reject(error);\n }\n }\n\n active = false;\n notify();\n }\n };\n\n return Object.assign(\n <T>(action: Action<T>, ref?: any) => {\n return new Promise<T>((resolve, reject) => {\n q.push({ action, resolve, reject, ref });\n run();\n });\n },\n {\n clear() {\n q.length = 0;\n },\n\n whenDone() {\n if (!active) {\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve) => {\n completionListeners.add(resolve);\n });\n },\n\n get size() {\n return q.length;\n },\n\n getRefs() {\n return q.map((item) => item.ref).filter((x) => x !== undefined);\n },\n },\n );\n}\n","export default function isPromise(value: unknown): value is Promise<unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof value.then === 'function'\n );\n}\n","import isPromise from '@lib/isPromise';\nimport { type ErrorState, type PendingState, type ValueState } from './cacheState';\nimport { type MaybePromise } from './maybePromise';\n\nexport class PromiseWithState<T> extends Promise<T> {\n static get [Symbol.species]() {\n return Promise;\n }\n\n static override resolve(): PromiseWithState<void>;\n\n static override resolve<T>(value: MaybePromise<T>): PromiseWithState<T>;\n\n static override resolve<T>(value?: MaybePromise<T>) {\n return new PromiseWithState<T>(value as MaybePromise<T>);\n }\n\n static override reject<T = never>(error: unknown) {\n return new PromiseWithState<T>(Promise.reject(error), { status: 'error', error });\n }\n\n constructor(\n value: MaybePromise<T>,\n public state: ValueState<T> | ErrorState | PendingState = { status: 'pending' },\n ) {\n super((resolve) => resolve(value));\n\n if (isPromise(value)) {\n value\n .then((value) => {\n this.state = { status: 'value', value: value };\n })\n .catch((error) => {\n this.state = { status: 'error', error };\n });\n } else {\n this.state = { status: 'value', value: value };\n }\n }\n}\n","import type { AsyncConnectionActions, Cancel, Connection } from '@core/commonTypes';\nimport type { Store } from '@core/store';\nimport { Deferred } from '@lib/deferred';\nimport { queue } from '@lib/queue';\nimport { deepEqual } from './equals';\nimport { PromiseWithState } from '@lib/promiseWithState';\nimport type { Cache } from '@core';\n\nexport interface CalculatedValue<T> {\n value: T;\n check: () => void;\n stop(): void;\n invalidateDependencies(recursive?: boolean): void;\n}\n\nexport function calculatedValue<T>(store: Store<T>, notify: () => void): CalculatedValue<T> {\n let active = false;\n const deps = new Array<{ store: Store<any>; value: any; on: () => void; off: () => void }>();\n let value: T | undefined;\n const whenConnected = new Deferred();\n const whenExecuted = new Deferred();\n let connection: { active: boolean; cancel?: Cancel } | undefined;\n const q = queue();\n q(() => whenExecuted);\n\n const cancelEffect = store.addEffect(() => {\n if (connection) {\n store.invalidate();\n return;\n }\n\n active = true;\n\n for (const dep of deps) {\n dep.on();\n }\n\n return () => {\n active = false;\n\n for (const dep of deps) {\n dep.off();\n }\n\n if (connection) {\n connection.active = false;\n connection.cancel?.();\n q.clear();\n\n if ('state' in store) {\n (store as unknown as Cache<any>).state.set('isConnected', false);\n }\n }\n };\n });\n\n function use<S>(dep: Store<S>) {\n const value = dep.get();\n let cancel: Cancel | undefined;\n\n const on = () => {\n cancel ||= dep.subscribe(() => store.invalidate(), { runNow: false });\n };\n\n const off = () => {\n cancel?.();\n cancel = undefined;\n };\n\n deps.push({ store: dep, value, on, off });\n\n if (active) {\n on();\n }\n\n return value;\n }\n\n async function connect(createConnection: Connection<T>) {\n if (!active) {\n connection = { active: false };\n return;\n }\n\n const actions: AsyncConnectionActions<any> = {\n set(_value) {\n connection?.active &&\n q(() => {\n value = _value;\n notify();\n });\n },\n updateValue(update) {\n connection?.active &&\n q(async () => {\n if (update instanceof Function) {\n update = update(await value);\n }\n\n if (update instanceof Promise) {\n update = await update;\n }\n\n if (!connection?.active) {\n return;\n }\n\n value = PromiseWithState.resolve(update) as T;\n notify();\n });\n },\n updateError(error) {\n connection?.active &&\n q(() => {\n (store as unknown as Store<Promise<any>>).set(Promise.reject(error));\n });\n },\n updateIsConnected(isConnected) {\n if (!connection?.active) {\n return;\n }\n\n if (isConnected) {\n whenConnected.resolve();\n }\n\n q(() => {\n if ('state' in store) {\n (store as unknown as Cache<any>).state.set('isConnected', isConnected);\n }\n });\n },\n close() {\n connection?.active && store.invalidate();\n },\n };\n\n connection = { active: true };\n connection.cancel = createConnection(actions as any);\n\n if (!connection.active) {\n connection.cancel();\n }\n\n return whenConnected;\n }\n\n value = store.getter instanceof Function ? store.getter({ use, connect }) : store.getter;\n\n if (value instanceof Promise) {\n value.finally(() => whenExecuted.resolve()).catch(() => undefined);\n } else {\n whenExecuted.resolve();\n }\n\n function check() {\n if (active) {\n return;\n }\n\n for (const dep of deps) {\n if (!deepEqual(dep.store.get(), dep.value)) {\n store.invalidate();\n return;\n }\n }\n }\n\n function stop() {\n cancelEffect();\n whenExecuted.resolve();\n whenConnected.resolve();\n\n if (connection) {\n connection.active = false;\n connection.cancel?.();\n q.clear();\n }\n }\n\n function invalidateDependencies(recursive?: boolean) {\n for (const dep of deps) {\n dep.store.invalidate(recursive);\n }\n }\n\n return {\n get value() {\n return value!;\n },\n check,\n stop,\n invalidateDependencies,\n };\n}\n\nexport function staticValue<T>(value: T): CalculatedValue<T> {\n return {\n value,\n check: () => undefined,\n stop: () => undefined,\n invalidateDependencies: () => undefined,\n };\n}\n","import type { Path } from './path';\nimport { get } from './propAccess';\n\nexport function makeSelector<T, S>(selector?: ((value: T) => S) | Path<any>): (value: T) => S {\n if (!selector) {\n return (x) => x as any;\n }\n\n if (selector instanceof Function) {\n return selector;\n }\n\n return (x) => get(x, selector as any) as any;\n}\n","export class Callable<Args extends any[], T> extends Function {\n constructor(protected _call: (...args: Args) => T) {\n super('...args', 'return this._call(...args)');\n\n // eslint-disable-next-line no-constructor-return\n return this.bind(this);\n }\n}\n","import { calcDuration } from './calcDuration';\nimport type { Duration } from '@core';\n\nexport type DebounceOptions =\n | Duration\n | {\n wait: Duration;\n maxWait?: Duration;\n };\n\nexport function debounce<Args extends any[]>(\n action: (...args: Args) => void,\n options: Duration | DebounceOptions,\n) {\n const wait =\n typeof options === 'object' && 'wait' in options\n ? calcDuration(options.wait)\n : calcDuration(options);\n\n const maxWait =\n typeof options === 'object' && 'maxWait' in options && options.maxWait !== undefined\n ? calcDuration(options.maxWait)\n : undefined;\n\n let run: (() => void) | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n let timeoutStarted: number | undefined;\n\n function flush() {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n run?.();\n }\n\n function cancel() {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n run = undefined;\n timeout = undefined;\n timeoutStarted = undefined;\n }\n\n function isScheduled() {\n return timeout !== undefined;\n }\n\n function debounce(...args: Args) {\n const now = Date.now();\n timeoutStarted ??= now;\n\n const deadline = Math.min(\n //\n now + wait,\n timeoutStarted + (maxWait ?? Number.POSITIVE_INFINITY),\n );\n\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n run = () => {\n run = undefined;\n timeout = undefined;\n timeoutStarted = undefined;\n\n action(...args);\n };\n\n timeout = setTimeout(run, deadline - now);\n }\n\n return Object.assign(debounce, { flush, cancel, isScheduled });\n}\n","export function forwardError(error: unknown) {\n setTimeout(() => {\n throw error;\n });\n}\n","import { autobind } from '@lib/autobind';\n\nexport class PromiseCancelError extends Error {\n constructor() {\n super('cancelled');\n }\n}\n\nexport class PromiseWithCancel<T> extends Promise<T> {\n private abortController;\n\n constructor(\n executor: (\n resolve: (value: T) => void,\n reject: (error: unknown) => void,\n signal: AbortSignal,\n ) => void,\n ) {\n autobind(PromiseWithCancel);\n const abortController = new AbortController();\n\n super((resolve, reject) => {\n executor(resolve, reject, abortController.signal);\n\n abortController.signal.addEventListener('abort', (e) => {\n reject(abortController.signal.reason);\n });\n });\n\n this.abortController = abortController;\n }\n\n cancel(reason: any = new PromiseCancelError()) {\n this.abortController.abort(reason);\n }\n}\n","import type { Store } from '../core/store';\nimport type { OptionalPropertyOf } from './typeHelpers';\n\ntype Function_ = (...args: any) => any;\n\nfunction createArrayAction<P extends keyof Array<any>>(prop: P) {\n return function arrayAction<T extends Array<any>>(\n this: Store<T>,\n ...args: T[P] extends Function_ ? Parameters<T[P]> : never\n ): T[P] extends Function_ ? ReturnType<T[P]> : never {\n const newArray = this.get().slice() as T;\n const result = (newArray[prop] as Function_)(...(args as any));\n this.set(newArray);\n return result;\n };\n}\nexport const arrayMethods = {\n splice: /* @__PURE__ */ createArrayAction('splice'),\n push: /* @__PURE__ */ createArrayAction('push'),\n pop: /* @__PURE__ */ createArrayAction('pop'),\n shift: /* @__PURE__ */ createArrayAction('shift'),\n unshift: /* @__PURE__ */ createArrayAction('unshift'),\n reverse: /* @__PURE__ */ createArrayAction('reverse'),\n sort: /* @__PURE__ */ createArrayAction('sort'),\n};\n\nexport const recordMethods = {\n delete<T extends Record<any, any>, K extends OptionalPropertyOf<T>>(this: Store<T>, key: K) {\n const copy = { ...this.get() };\n delete copy[key];\n this.set(copy);\n },\n\n clear<T extends Record<any, any>>(this: Store<Partial<T>>) {\n this.set({} as T);\n },\n};\n\nexport const mapMethods = {\n delete<K, V>(this: Store<Map<K, V>>, key: K) {\n const newMap = new Map(this.get());\n const result = newMap.delete(key);\n this.set(newMap);\n return result;\n },\n\n clear<K, V>(this: Store<Map<K, V>>) {\n this.set(new Map());\n },\n};\n\nexport const setMethods = {\n add<T>(this: Store<Set<T>>, value: T) {\n const newSet = new Set(this.get());\n newSet.add(value);\n this.set(newSet);\n },\n\n delete<T>(this: Store<Set<T>>, value: T) {\n const newSet = new Set(this.get());\n newSet.delete(value);\n this.set(newSet);\n },\n\n clear<T>(this: Store<Set<T>>) {\n this.set(new Set());\n },\n};\n","import { calcDuration } from './calcDuration';\nimport type { Duration } from '@core';\n\nexport function throttle<Args extends any[]>(\n action: (...args: Args) => void,\n duration: Duration,\n): (...args: Args) => void {\n const ms = calcDuration(duration);\n\n let t = 0;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n\n return (...args: Args) => {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n const dt = t + ms - Date.now();\n if (dt <= 0) {\n action(...args);\n t = Date.now();\n return;\n }\n\n timeout = setTimeout(() => {\n action(...args);\n t = Date.now();\n }, dt);\n };\n}\n","import type { Cancel } from '@core';\nimport type { DisposableCancel } from '@core/commonTypes';\n\nexport default function disposable(dispose: Cancel): DisposableCancel {\n return Object.assign(\n dispose,\n Symbol.dispose ? { [Symbol.dispose]: dispose } : {},\n ) as DisposableCancel;\n}\n","import { autobind } from '@lib/autobind';\nimport { calcDuration } from '@lib/calcDuration';\nimport { calculatedValue, staticValue, type CalculatedValue } from '@lib/calculatedValue';\nimport { Callable } from '@lib/callable';\nimport { debounce } from '@lib/debounce';\nimport { deepEqual } from '@lib/equals';\nimport { forwardError } from '@lib/forwardError';\nimport { makeSelector } from '@lib/makeSelector';\nimport type { Path, Value } from '@lib/path';\nimport { PromiseWithCancel } from '@lib/promiseWithCancel';\nimport { get, set } from '@lib/propAccess';\nimport { arrayMethods, mapMethods, recordMethods, setMethods } from '@lib/standardMethods';\nimport { throttle } from '@lib/throttle';\nimport type {\n CalculationActions,\n Cancel,\n DisposableCancel,\n Duration,\n Effect,\n Listener,\n Selector,\n SubscribeOptions,\n Update,\n} from './commonTypes';\nimport disposable from '@lib/disposable';\n\nexport type StoreMethods = Record<string, (...args: any[]) => any>;\n\nexport type BoundStoreMethods<T, Methods extends StoreMethods> = Methods &\n ThisType<Store<T> & Methods>;\n\nexport interface StoreOptions {\n retain?: Duration;\n equals?: SubscribeOptions['equals'];\n}\n\nexport interface StoreOptionsWithMethods<T, Methods extends StoreMethods> extends StoreOptions {\n methods?: Methods & ThisType<Store<T> & Methods & StandardMethods<T>>;\n}\n\nexport type Calculate<T> = (helpers: CalculationActions<T>) => T;\n\ntype StandardMethods<T> =\n T extends Map<any, any>\n ? typeof mapMethods\n : T extends Set<any>\n ? typeof setMethods\n : T extends Array<any>\n ? typeof arrayMethods\n : T extends Record<any, any>\n ? typeof recordMethods\n : Record<string, never>;\n\ntype StoreWithMethods<T, Methods extends StoreMethods> = Store<T> &\n Omit<BoundStoreMethods<T, Methods>, keyof Store<T>> &\n StandardMethods<T>;\n\nexport interface OnceOptions {\n signal?: AbortSignal;\n timeout?: Duration;\n}\n\nfunction noop() {\n return undefined;\n}\n\nexport class Store<T> extends Callable<any, any> {\n protected calculatedValue?: CalculatedValue<T>;\n protected defaultValue?: CalculatedValue<T>;\n\n protected listeners = new Map<Listener, boolean>();\n\n protected effects = new Map<\n Effect,\n { handle?: Cancel; retain?: number; timeout?: ReturnType<typeof setTimeout> }\n >();\n\n protected notifyId = {};\n\n constructor(\n public readonly getter: T | Calculate<T>,\n public readonly options: StoreOptions = {},\n public readonly derivedFrom?: {\n store: Store<any>;\n selectors: (Selector<any, any> | Path<any>)[];\n updater: (state: any) => void;\n },\n protected readonly _call: (...args: any[]) => any = () => undefined,\n ) {\n super(_call);\n autobind(Store);\n\n if (typeof getter !== 'function') {\n this.calculatedValue = this.defaultValue = staticValue(getter);\n }\n }\n\n get(): T {\n this.calculatedValue?.check();\n\n if (!this.calculatedValue) {\n this.calculatedValue = calculatedValue(this, this.notify);\n }\n\n return this.calculatedValue.value;\n }\n\n set(update: Update<T>): void;\n\n set<const P extends Path<T>>(path: P, update: Update<Value<T, P>>): void;\n\n set(...args: any[]): void {\n const path: any = args.length > 1 ? args[0] : [];\n let update: Update<any> = args.length > 1 ? args[1] : args[0];\n\n if (update instanceof Function) {\n const before = this.get();\n const valueBefore = get(before, path);\n const valueAfter = update(valueBefore);\n update = set(before, path, valueAfter);\n } else if (path.length > 0) {\n update = set(this.get(), path, update);\n }\n\n if (this.derivedFrom) {\n this.derivedFrom.updater(update);\n return;\n }\n\n this.calculatedValue?.stop();\n this.calculatedValue = staticValue(update);\n this.notify();\n }\n\n invalidate(recursive?: boolean) {\n if (recursive) {\n this.calculatedValue?.invalidateDependencies(recursive);\n }\n\n this.calculatedValue?.stop();\n this.calculatedValue = this.defaultValue;\n this.notify();\n }\n\n subscribe(listener: Listener<T>, options?: SubscribeOptions): DisposableCancel {\n const {\n passive,\n runNow = true,\n throttle: throttleOption,\n debounce: debounceOption,\n equals = deepEqual,\n } = options ?? {};\n\n let isSetup = false;\n let previousValue: { value: T } | undefined;\n\n let innerListener = () => {\n if (!isSetup) {\n return;\n }\n\n const value = passive ? this.calculatedValue : { value: this.get() };\n\n if (!value) {\n return;\n }\n\n if (previousValue && equals(value.value, previousValue.value)) {\n return;\n }\n\n const _previousValue = previousValue?.value;\n previousValue = this.calculatedValue && { value: this.calculatedValue?.value };\n\n try {\n listener(value.value, _previousValue);\n } catch (error) {\n forwardError(error);\n }\n };\n\n if (throttleOption) {\n innerListener = throttle(innerListener, throttleOption);\n } else if (debounceOption) {\n innerListener = debounce(innerListener, debounceOption);\n }\n\n this.listeners.set(innerListener, !passive);\n if (!passive) {\n this.onSubscribe();\n }\n\n isSetup = true;\n\n if (runNow) {\n innerListener();\n } else {\n previousValue = passive\n ? this.calculatedValue && { value: this.calculatedValue.value }\n : { value: this.get() };\n }\n\n return disposable(() => {\n this.listeners.delete(innerListener);\n if (!passive) {\n this.onUnsubscribe();\n }\n });\n }\n\n once<S extends T>(\n condition: (value: T) => value is S,\n options?: OnceOptions,\n ): PromiseWithCancel<S>;\n\n once(condition: (value: T) => boolean, options?: OnceOptions): PromiseWithCancel<T>;\n\n once(options?: OnceOptions): PromiseWithCancel<T>;\n\n once(\n ...args: [condition: (value: any) => boolean, options?: OnceOptions] | [options?: OnceOptions]\n ): PromiseWithCancel<any> {\n const condition = args[0] instanceof Function ? args[0] : Boolean;\n const options = args[0] instanceof Function ? args[1] : args[0];\n\n return new PromiseWithCancel<T>((resolve, reject, signal) => {\n let stopped = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const cancel = this.subscribe(\n (value) => {\n if (stopped || !condition(value)) {\n return;\n }\n\n resolve(value);\n stopped = true;\n timer && clearTimeout(timer);\n setTimeout(() => cancel());\n },\n {\n runNow: !!condition,\n },\n );\n\n if (stopped) {\n return;\n }\n\n signal.addEventListener('abort', cancel);\n\n options?.signal?.addEventListener('abort', () => {\n cancel();\n reject(options.signal?.reason ?? new Error('cancelled'));\n });\n\n if (options?.timeout !== undefined) {\n timer = setTimeout(() => {\n cancel();\n reject(new Error('timeout'));\n }, calcDuration(options.timeout));\n }\n });\n }\n\n map<S>(selector: Selector<T, S>, updater?: (value: S) => Update<T>): Store<S>;\n\n map<P extends Path<T>>(selector: P): Store<Value<T, P>>;\n\n map(_selector: Selector<T, any> | Path<any>, ...args: any[]): Store<any> {\n const updater: ((value: any) => Update<T>) | undefined =\n _selector instanceof Function\n ? args[0]\n : (value) => (state) => set(state, _selector as Path<T>, value);\n\n const selector = makeSelector(_selector);\n\n const derivedFrom = {\n store: this.derivedFrom ? this.derivedFrom.store : this,\n selectors: this.derivedFrom ? [...this.derivedFrom.selectors, _selector] : [_selector],\n\n updater: (value: any) => {\n if (!updater) {\n throw new TypeError(\n 'Can only update computed stores that either are derived from other stores using string selectors or have an updater function.',\n );\n }\n\n let update = updater(value);\n\n if (update instanceof Function) {\n update = update(this.get());\n }\n\n if (this.derivedFrom) {\n this.derivedFrom.updater(update);\n } else {\n this.set(update);\n }\n },\n };\n\n return new Store(\n ({ use }) => {\n return selector(use(this));\n },\n this.options,\n derivedFrom,\n );\n }\n\n /** Add an effect that will be executed when the store becomes active, which means when it has at least one subscriber.\n * @param effect\n * If there is already a subscriber, the effect will be executed immediately.\n * Otherweise it will be executed as soon as the first subscription is created.\n * Every time all subscriptions are removed and the first is created again, the effect will be executed again.\n * @param retain\n * If provided, delay tearing down effects when the last subscriber is removed. This is useful if a short gap in subscriber coverage is supposed to be ignored. E.g. when switching pages, the old page might unsubscribe, while the new page subscribes immediately after.\n * @returns\n * The effect can return a teardown callback, which will be executed when the last subscription is removed and potentially the ratain time has passed.\n */\n addEffect(effect: Effect, retain = this.options.retain) {\n this.effects.set(effect, {\n handle: this.isActive() ? effect() ?? noop : undefined,\n retain: retain !== undefined ? calcDuration(retain) : undefined,\n });\n\n return () => {\n const { handle, timeout } = this.effects.get(effect) ?? {};\n handle?.();\n\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n this.effects.delete(effect);\n };\n }\n\n /** Return whether the store is currently active, which means whether it has at least one subscriber. */\n isActive() {\n return [...this.listeners.values()].some(Boolean);\n }\n\n protected onSubscribe() {\n if ([...this.listeners.values()].filter(Boolean).length > 1) return;\n\n for (const [effect, { handle, retain, timeout }] of this.effects.entries()) {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n this.effects.set(effect, {\n handle: handle ?? effect() ?? noop,\n retain,\n timeout: undefined,\n });\n }\n }\n\n protected onUnsubscribe() {\n if ([...this.listeners.values()].some(Boolean)) return;\n\n for (const [effect, { handle, retain, timeout }] of this.effects.entries()) {\n if (!retain) {\n handle?.();\n\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n this.effects.set(effect, {\n handle: undefined,\n retain,\n timeout: undefined,\n });\n\n continue;\n }\n\n const newTimeout =\n timeout ??\n (handle\n ? setTimeout(() => {\n handle();\n this.effects.set(effect, {\n handle: undefined,\n retain,\n timeout: undefined,\n });\n }, retain)\n : undefined);\n\n this.effects.set(effect, {\n handle,\n retain,\n timeout: newTimeout,\n });\n }\n }\n\n protected notify() {\n const n = {};\n this.notifyId = n;\n\n const snapshot = [...this.listeners.keys()];\n for (const listener of snapshot) {\n listener();\n if (n !== this.notifyId) break;\n }\n }\n}\n\nfunction create<T>(calculate: Calculate<T>, options?: StoreOptions): Store<T>;\nfunction create<T, Methods extends StoreMethods = {}>(\n initialState: T,\n options?: StoreOptionsWithMethods<T, Methods>,\n): StoreWithMethods<T, Methods>;\nfunction create<T, Methods extends StoreMethods>(\n initialState: T | Calculate<T>,\n options?: StoreOptionsWithMethods<T, Methods>,\n): StoreWithMethods<T, Methods> | Store<T> {\n options = { ...createStore.defaultOptions, ...options };\n\n const store = new Store(initialState, options);\n\n if (initialState instanceof Function) {\n return store;\n }\n\n let methods: StoreMethods | undefined = options?.methods;\n\n if (initialState instanceof Map) {\n methods = { ...mapMethods, ...methods };\n } else if (initialState instanceof Set) {\n methods = { ...setMethods, ...methods };\n } else if (Array.isArray(initialState)) {\n methods = { ...arrayMethods, ...methods };\n } else if (initialState instanceof Object) {\n methods = { ...recordMethods, ...methods };\n }\n\n const boundMethods = Object.fromEntries(\n Object.entries(methods ?? ({} as BoundStoreMethods<T, any>))\n .filter(([name]) => !(name in store))\n .map(([name, action]) => [name, (action as any).bind(store)]),\n ) as BoundStoreMethods<T, any>;\n\n return Object.assign(store, boundMethods);\n}\n\nexport const createStore = /* @__PURE__ */ Object.assign(create, {\n defaultOptions: {\n equals: deepEqual,\n } as StoreOptions,\n});\n"],"names":["value","deepEqual","get","debounce","set","_a"],"mappings":";;AAAa,MAAA,WAAW,CAGtB,QACA,aACG;AACH,MAAI,QAAQ,yBAAyB,OAAO,WAAW,mBAAmB,GAAG;AACpE,WAAA;AAAA,EACT;AACA,UAAQ,eAAe,OAAO,WAAW,qBAAqB,EAAE,OAAO,MAAM;AAE7E,aAAW,OAAO,QAAQ,QAAQ,OAAO,SAAS,GAAG;AACnD,QAAI,QAAQ,eAAe;AACzB;AAAA,IACF;AAEA,UAAM,aAAa,OAAO,yBAAyB,OAAO,WAAW,GAAG;AAGpE,QAAA,QAAO,yCAAY,WAAU,YAAY;AAC3C,UAAI,SAAS,WAAW;AACxB,UAAI,YAAY;AAET,aAAA,eAAe,OAAO,WAAW,KAAK;AAAA,QAC3C,cAAc;AAAA,QACd,MAAM;AACJ,cACE,aACA,SAAS,OAAO,aAChB,OAAO,UAAU,eAAe,KAAK,MAAM,GAAG,KAC9C,OAAO,WAAW,YAClB;AACO,mBAAA;AAAA,UACT;AAEA,gBAAM,cAAc,IAAI,SAAgB,QAAQ,MAAM,QAAQ,MAAM,IAAI;AAC5D,sBAAA;AAEL,iBAAA,eAAe,MAAM,KAAK;AAAA,YAC/B,cAAc;AAAA,YACd,MAAM;AACG,qBAAA;AAAA,YACT;AAAA,YACA,IAAI,GAAG;AACI,uBAAA;AAAA,YAEX;AAAA,UAAA,CACD;AAEW,sBAAA;AACL,iBAAA;AAAA,QACT;AAAA,QACA,IAAI,GAAG;AACI,mBAAA;AAAA,QACX;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EACF;AAEO,SAAA;AACT;AC1DO,SAAS,aAAa,GAAa;AACxC,MAAI,OAAO,MAAM;AAAiB,WAAA;AAE/B,UAAA,EAAE,gBAAgB,MAClB,EAAE,WAAW,KAAK,OAClB,EAAE,WAAW,KAAK,KAAK,OACvB,EAAE,SAAS,KAAK,KAAK,KAAK,OAC1B,EAAE,QAAQ,KAAK,KAAK,KAAK,KAAK;AAEnC;ACXO,MAAM,iBAA2B,QAAW;AAAA,EAQjD,cAAc;AACZ,UAAM,OAAO,CAAA;AAEP,UAAA,CAAC,SAAS,WAAW;AACzB,aAAO,OAAO,MAAM,EAAE,SAAS,OAAQ,CAAA;AAAA,IAAA,CACxC;AARH,SAAA,UAA+C,MAAM;AACrD,SAAA,SAAiC,MAAM;AAS9B,WAAA,OAAO,MAAM,IAAI;AAAA,EAC1B;AAAA,EAfA,YAAY,OAAO,OAAO,IAAI;AACrB,WAAA;AAAA,EACT;AAcF;ACJO,SAAS,QAAe;AAC7B,QAAM,IAKA,CAAA;AACA,QAAA,0CAA0B;AAChC,MAAI,SAAS;AAEb,QAAM,SAAS,MAAM;AACnB,eAAW,YAAY,qBAAqB;AACjC;IACX;AAEA,wBAAoB,MAAM;AAAA,EAAA;AAG5B,QAAM,MAAM,YAAY;AACtB,QAAI,CAAC,QAAQ;AACF,eAAA;AAEL,UAAA;AACI,aAAA,OAAO,EAAE,SAAU;AACrB,YAAA;AACE,cAAA,SAAS,KAAK;AAClB,cAAI,kBAAkB,SAAS;AAC7B,qBAAS,MAAM;AAAA,UACjB;AAEA,eAAK,QAAQ,MAAM;AAAA,iBACZ,OAAO;AACd,eAAK,OAAO,KAAK;AAAA,QACnB;AAAA,MACF;AAES,eAAA;AACF;IACT;AAAA,EAAA;AAGF,SAAO,OAAO;AAAA,IACZ,CAAI,QAAmB,QAAc;AACnC,aAAO,IAAI,QAAW,CAAC,SAAS,WAAW;AACzC,UAAE,KAAK,EAAE,QAAQ,SAAS,QAAQ,KAAK;AACnC;MAAA,CACL;AAAA,IACH;AAAA,IACA;AAAA,MACE,QAAQ;AACN,UAAE,SAAS;AAAA,MACb;AAAA,MAEA,WAAW;AACT,YAAI,CAAC,QAAQ;AACX,iBAAO,QAAQ;QACjB;AAEO,eAAA,IAAI,QAAc,CAAC,YAAY;AACpC,8BAAoB,IAAI,OAAO;AAAA,QAAA,CAChC;AAAA,MACH;AAAA,MAEA,IAAI,OAAO;AACT,eAAO,EAAE;AAAA,MACX;AAAA,MAEA,UAAU;AACD,eAAA,EAAE,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,OAAO,CAAC,MAAM,MAAM,MAAS;AAAA,MAChE;AAAA,IACF;AAAA,EAAA;AAEJ;ACrFA,SAAwB,UAAU,OAA2C;AAEzE,SAAA,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,OAAO,MAAM,SAAS;AAE1B;ACHO,MAAM,yBAA4B,QAAW;AAAA,EAiBlD,YACE,OACO,QAAmD,EAAE,QAAQ,aACpE;AACA,UAAM,CAAC,YAAY,QAAQ,KAAK,CAAC;AAF1B,SAAA,QAAA;AAIH,QAAA,UAAU,KAAK,GAAG;AAEjB,YAAA,KAAK,CAACA,WAAU;AACf,aAAK,QAAQ,EAAE,QAAQ,SAAS,OAAOA;MAAM,CAC9C,EACA,MAAM,CAAC,UAAU;AAChB,aAAK,QAAQ,EAAE,QAAQ,SAAS,MAAM;AAAA,MAAA,CACvC;AAAA,IAAA,OACE;AACL,WAAK,QAAQ,EAAE,QAAQ,SAAS,MAAa;AAAA,IAC/C;AAAA,EACF;AAAA,EAjCA,YAAY,OAAO,OAAO,IAAI;AACrB,WAAA;AAAA,EACT;AAAA,EAMA,OAAgB,QAAW,OAAyB;AAC3C,WAAA,IAAI,iBAAoB,KAAwB;AAAA,EACzD;AAAA,EAEA,OAAgB,OAAkB,OAAgB;AACzC,WAAA,IAAI,iBAAoB,QAAQ,OAAO,KAAK,GAAG,EAAE,QAAQ,SAAS,MAAA,CAAO;AAAA,EAClF;AAoBF;ACxBgB,SAAA,gBAAmB,OAAiB,QAAwC;AAC1F,MAAI,SAAS;AACP,QAAA,OAAO,IAAI;AACb,MAAA;AACE,QAAA,gBAAgB,IAAI;AACpB,QAAA,eAAe,IAAI;AACrB,MAAA;AACJ,QAAM,IAAI;AACV,IAAE,MAAM,YAAY;AAEd,QAAA,eAAe,MAAM,UAAU,MAAM;AACzC,QAAI,YAAY;AACd,YAAM,WAAW;AACjB;AAAA,IACF;AAES,aAAA;AAET,eAAW,OAAO,MAAM;AACtB,UAAI,GAAG;AAAA,IACT;AAEA,WAAO,MAAM;;AACF,eAAA;AAET,iBAAW,OAAO,MAAM;AACtB,YAAI,IAAI;AAAA,MACV;AAEA,UAAI,YAAY;AACd,mBAAW,SAAS;AACpB,yBAAW,WAAX;AACA,UAAE,MAAM;AAER,YAAI,WAAW,OAAO;AACnB,gBAAgC,MAAM,IAAI,eAAe,KAAK;AAAA,QACjE;AAAA,MACF;AAAA,IAAA;AAAA,EACF,CACD;AAED,WAAS,IAAO,KAAe;AACvBA,UAAAA,SAAQ,IAAI;AACd,QAAA;AAEJ,UAAM,KAAK,MAAM;AACJ,0BAAA,IAAI,UAAU,MAAM,MAAM,cAAc,EAAE,QAAQ,MAAA,CAAO;AAAA,IAAA;AAGtE,UAAM,MAAM,MAAM;AACP;AACA,eAAA;AAAA,IAAA;AAGN,SAAA,KAAK,EAAE,OAAO,KAAK,OAAAA,QAAO,IAAI,KAAK;AAExC,QAAI,QAAQ;AACP;IACL;AAEOA,WAAAA;AAAAA,EACT;AAEA,iBAAe,QAAQ,kBAAiC;AACtD,QAAI,CAAC,QAAQ;AACE,mBAAA,EAAE,QAAQ;AACvB;AAAA,IACF;AAEA,UAAM,UAAuC;AAAA,MAC3C,IAAI,QAAQ;AACE,kDAAA,WACV,EAAE,MAAM;AACE,kBAAA;AACD;QAAA,CACR;AAAA,MACL;AAAA,MACA,YAAY,QAAQ;AACN,kDAAA,WACV,EAAE,YAAY;AACZ,cAAI,kBAAkB,UAAU;AACrB,qBAAA,OAAO,MAAM,KAAK;AAAA,UAC7B;AAEA,cAAI,kBAAkB,SAAS;AAC7B,qBAAS,MAAM;AAAA,UACjB;AAEI,cAAA,EAAC,yCAAY,SAAQ;AACvB;AAAA,UACF;AAEQ,kBAAA,iBAAiB,QAAQ,MAAM;AAChC;QAAA,CACR;AAAA,MACL;AAAA,MACA,YAAY,OAAO;AACL,kDAAA,WACV,EAAE,MAAM;AACL,gBAAyC,IAAI,QAAQ,OAAO,KAAK,CAAC;AAAA,QAAA,CACpE;AAAA,MACL;AAAA,MACA,kBAAkB,aAAa;AACzB,YAAA,EAAC,yCAAY,SAAQ;AACvB;AAAA,QACF;AAEA,YAAI,aAAa;AACf,wBAAc,QAAQ;AAAA,QACxB;AAEA,UAAE,MAAM;AACN,cAAI,WAAW,OAAO;AACnB,kBAAgC,MAAM,IAAI,eAAe,WAAW;AAAA,UACvE;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,QAAQ;AACM,kDAAA,WAAU,MAAM;MAC9B;AAAA,IAAA;AAGW,iBAAA,EAAE,QAAQ;AACZ,eAAA,SAAS,iBAAiB,OAAc;AAE/C,QAAA,CAAC,WAAW,QAAQ;AACtB,iBAAW,OAAO;AAAA,IACpB;AAEO,WAAA;AAAA,EACT;AAEQ,UAAA,MAAM,kBAAkB,WAAW,MAAM,OAAO,EAAE,KAAK,QAAA,CAAS,IAAI,MAAM;AAElF,MAAI,iBAAiB,SAAS;AACtB,UAAA,QAAQ,MAAM,aAAa,QAAS,CAAA,EAAE,MAAM,MAAM,MAAS;AAAA,EAAA,OAC5D;AACL,iBAAa,QAAQ;AAAA,EACvB;AAEA,WAAS,QAAQ;AACf,QAAI,QAAQ;AACV;AAAA,IACF;AAEA,eAAW,OAAO,MAAM;AAClB,UAAA,CAACC,qBAAU,IAAI,MAAM,OAAO,IAAI,KAAK,GAAG;AAC1C,cAAM,WAAW;AACjB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,OAAO;;AACD;AACb,iBAAa,QAAQ;AACrB,kBAAc,QAAQ;AAEtB,QAAI,YAAY;AACd,iBAAW,SAAS;AACpB,uBAAW,WAAX;AACA,QAAE,MAAM;AAAA,IACV;AAAA,EACF;AAEA,WAAS,uBAAuB,WAAqB;AACnD,eAAW,OAAO,MAAM;AAClB,UAAA,MAAM,WAAW,SAAS;AAAA,IAChC;AAAA,EACF;AAEO,SAAA;AAAA,IACL,IAAI,QAAQ;AACH,aAAA;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,SAAS,YAAe,OAA8B;AACpD,SAAA;AAAA,IACL;AAAA,IACA,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,IACZ,wBAAwB,MAAM;AAAA,EAAA;AAElC;ACxMO,SAAS,aAAmB,UAA2D;AAC5F,MAAI,CAAC,UAAU;AACb,WAAO,CAAC,MAAM;AAAA,EAChB;AAEA,MAAI,oBAAoB,UAAU;AACzB,WAAA;AAAA,EACT;AAEA,SAAO,CAAC,MAAMC,WAAAA,IAAI,GAAG,QAAe;AACtC;ACbO,MAAM,iBAAwC,SAAS;AAAA,EAC5D,YAAsB,OAA6B;AACjD,UAAM,WAAW,4BAA4B;AADzB,SAAA,QAAA;AAIb,WAAA,KAAK,KAAK,IAAI;AAAA,EACvB;AACF;ACGgB,SAAA,SACd,QACA,SACA;AACM,QAAA,OACJ,OAAO,YAAY,YAAY,UAAU,UACrC,aAAa,QAAQ,IAAI,IACzB,aAAa,OAAO;AAE1B,QAAM,UACJ,OAAO,YAAY,YAAY,aAAa,WAAW,QAAQ,YAAY,SACvE,aAAa,QAAQ,OAAO,IAC5B;AAEF,MAAA;AACA,MAAA;AACA,MAAA;AAEJ,WAAS,QAAQ;AACf,QAAI,YAAY,QAAW;AACzB,mBAAa,OAAO;AAAA,IACtB;AAEM;AAAA,EACR;AAEA,WAAS,SAAS;AAChB,QAAI,YAAY,QAAW;AACzB,mBAAa,OAAO;AAAA,IACtB;AAEM,UAAA;AACI,cAAA;AACO,qBAAA;AAAA,EACnB;AAEA,WAAS,cAAc;AACrB,WAAO,YAAY;AAAA,EACrB;AAEA,WAASC,aAAY,MAAY;AACzB,UAAA,MAAM,KAAK;AACE,wCAAA;AAEnB,UAAM,WAAW,KAAK;AAAA;AAAA,MAEpB,MAAM;AAAA,MACN,kBAAkB,WAAW,OAAO;AAAA,IAAA;AAGtC,QAAI,YAAY,QAAW;AACzB,mBAAa,OAAO;AAAA,IACtB;AAEA,UAAM,MAAM;AACJ,YAAA;AACI,gBAAA;AACO,uBAAA;AAEjB,aAAO,GAAG,IAAI;AAAA,IAAA;AAGN,cAAA,WAAW,KAAK,WAAW,GAAG;AAAA,EAC1C;AAEA,SAAO,OAAO,OAAOA,WAAU,EAAE,OAAO,QAAQ,aAAa;AAC/D;AC5EO,SAAS,aAAa,OAAgB;AAC3C,aAAW,MAAM;AACT,UAAA;AAAA,EAAA,CACP;AACH;ACFO,MAAM,2BAA2B,MAAM;AAAA,EAC5C,cAAc;AACZ,UAAM,WAAW;AAAA,EACnB;AACF;AAEO,MAAM,0BAA6B,QAAW;AAAA,EAGnD,YACE,UAKA;AACA,aAAS,iBAAiB;AACpB,UAAA,kBAAkB,IAAI;AAEtB,UAAA,CAAC,SAAS,WAAW;AAChB,eAAA,SAAS,QAAQ,gBAAgB,MAAM;AAEhD,sBAAgB,OAAO,iBAAiB,SAAS,CAAC,MAAM;AAC/C,eAAA,gBAAgB,OAAO,MAAM;AAAA,MAAA,CACrC;AAAA,IAAA,CACF;AAED,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,OAAO,SAAc,IAAI,sBAAsB;AACxC,SAAA,gBAAgB,MAAM,MAAM;AAAA,EACnC;AACF;AC9BA,SAAS,kBAA8C,MAAS;AACvD,SAAA,SAAS,eAEX,MACgD;AACnD,UAAM,WAAW,KAAK,IAAI,EAAE,MAAM;AAClC,UAAM,SAAU,SAAS,IAAI,EAAgB,GAAI,IAAY;AAC7D,SAAK,IAAI,QAAQ;AACV,WAAA;AAAA,EAAA;AAEX;AACO,MAAM,eAAe;AAAA,EAC1B,0CAA0C,QAAQ;AAAA,EAClD,wCAAwC,MAAM;AAAA,EAC9C,uCAAuC,KAAK;AAAA,EAC5C,yCAAyC,OAAO;AAAA,EAChD,2CAA2C,SAAS;AAAA,EACpD,2CAA2C,SAAS;AAAA,EACpD,wCAAwC,MAAM;AAChD;AAEO,MAAM,gBAAgB;AAAA,EAC3B,OAAoF,KAAQ;AAC1F,UAAM,OAAO,EAAE,GAAG,KAAK,IAAM,EAAA;AAC7B,WAAO,KAAK,GAAG;AACf,SAAK,IAAI,IAAI;AAAA,EACf;AAAA,EAEA,QAA2D;AACpD,SAAA,IAAI,CAAA,CAAO;AAAA,EAClB;AACF;AAEO,MAAM,aAAa;AAAA,EACxB,OAAqC,KAAQ;AAC3C,UAAM,SAAS,IAAI,IAAI,KAAK,IAAK,CAAA;AAC3B,UAAA,SAAS,OAAO,OAAO,GAAG;AAChC,SAAK,IAAI,MAAM;AACR,WAAA;AAAA,EACT;AAAA,EAEA,QAAoC;AAC7B,SAAA,IAAQ,oBAAA,IAAA,CAAK;AAAA,EACpB;AACF;AAEO,MAAM,aAAa;AAAA,EACxB,IAA4B,OAAU;AACpC,UAAM,SAAS,IAAI,IAAI,KAAK,IAAK,CAAA;AACjC,WAAO,IAAI,KAAK;AAChB,SAAK,IAAI,MAAM;AAAA,EACjB;AAAA,EAEA,OAA+B,OAAU;AACvC,UAAM,SAAS,IAAI,IAAI,KAAK,IAAK,CAAA;AACjC,WAAO,OAAO,KAAK;AACnB,SAAK,IAAI,MAAM;AAAA,EACjB;AAAA,EAEA,QAA8B;AACvB,SAAA,IAAQ,oBAAA,IAAA,CAAK;AAAA,EACpB;AACF;AChEgB,SAAA,SACd,QACA,UACyB;AACnB,QAAA,KAAK,aAAa,QAAQ;AAEhC,MAAI,IAAI;AACJ,MAAA;AAEJ,SAAO,IAAI,SAAe;AACxB,QAAI,YAAY,QAAW;AACzB,mBAAa,OAAO;AAAA,IACtB;AAEA,UAAM,KAAK,IAAI,KAAK,KAAK,IAAI;AAC7B,QAAI,MAAM,GAAG;AACX,aAAO,GAAG,IAAI;AACd,UAAI,KAAK;AACT;AAAA,IACF;AAEA,cAAU,WAAW,MAAM;AACzB,aAAO,GAAG,IAAI;AACd,UAAI,KAAK;OACR,EAAE;AAAA,EAAA;AAET;AC1BA,SAAwB,WAAW,SAAmC;AACpE,SAAO,OAAO;AAAA,IACZ;AAAA,IACA,OAAO,UAAU,EAAE,CAAC,OAAO,OAAO,GAAG,QAAQ,IAAI,CAAC;AAAA,EAAA;AAEtD;ACsDA,SAAS,OAAO;AACP,SAAA;AACT;AAEO,MAAM,cAAiB,SAAmB;AAAA,EAa/C,YACkB,QACA,UAAwB,CAAA,GACxB,aAKG,QAAiC,MAAM,QAC1D;AACA,UAAM,KAAK;AATK,SAAA,SAAA;AACA,SAAA,UAAA;AACA,SAAA,cAAA;AAKG,SAAA,QAAA;AAjBX,SAAA,gCAAgB;AAEhB,SAAA,8BAAc;AAKxB,SAAU,WAAW;AAanB,aAAS,KAAK;AAEV,QAAA,OAAO,WAAW,YAAY;AAChC,WAAK,kBAAkB,KAAK,eAAe,YAAY,MAAM;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,MAAS;;AACP,eAAK,oBAAL,mBAAsB;AAElB,QAAA,CAAC,KAAK,iBAAiB;AACzB,WAAK,kBAAkB,gBAAgB,MAAM,KAAK,MAAM;AAAA,IAC1D;AAEA,WAAO,KAAK,gBAAgB;AAAA,EAC9B;AAAA,EAMA,OAAO,MAAmB;;AACxB,UAAM,OAAY,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI;AAC1C,QAAA,SAAsB,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;AAE5D,QAAI,kBAAkB,UAAU;AACxB,YAAA,SAAS,KAAK;AACd,YAAA,cAAcD,WAAAA,IAAI,QAAQ,IAAI;AAC9B,YAAA,aAAa,OAAO,WAAW;AAC5B,eAAAE,WAAAA,IAAI,QAAQ,MAAM,UAAU;AAAA,IAAA,WAC5B,KAAK,SAAS,GAAG;AAC1B,eAASA,WAAI,IAAA,KAAK,IAAI,GAAG,MAAM,MAAM;AAAA,IACvC;AAEA,QAAI,KAAK,aAAa;AACf,WAAA,YAAY,QAAQ,MAAM;AAC/B;AAAA,IACF;AAEA,eAAK,oBAAL,mBAAsB;AACjB,SAAA,kBAAkB,YAAY,MAAM;AACzC,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,WAAW,WAAqB;;AAC9B,QAAI,WAAW;AACR,iBAAA,oBAAA,mBAAiB,uBAAuB;AAAA,IAC/C;AAEA,eAAK,oBAAL,mBAAsB;AACtB,SAAK,kBAAkB,KAAK;AAC5B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,UAAU,UAAuB,SAA8C;AACvE,UAAA;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAASH,WAAA;AAAA,IAAA,IACP,WAAW,CAAA;AAEf,QAAI,UAAU;AACV,QAAA;AAEJ,QAAI,gBAAgB,MAAM;;AACxB,UAAI,CAAC,SAAS;AACZ;AAAA,MACF;AAEM,YAAA,QAAQ,UAAU,KAAK,kBAAkB,EAAE,OAAO,KAAK;AAE7D,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AAEA,UAAI,iBAAiB,OAAO,MAAM,OAAO,cAAc,KAAK,GAAG;AAC7D;AAAA,MACF;AAEA,YAAM,iBAAiB,+CAAe;AACtC,sBAAgB,KAAK,mBAAmB,EAAE,QAAO,UAAK,oBAAL,mBAAsB;AAEnE,UAAA;AACO,iBAAA,MAAM,OAAO,cAAc;AAAA,eAC7B,OAAO;AACd,qBAAa,KAAK;AAAA,MACpB;AAAA,IAAA;AAGF,QAAI,gBAAgB;AACF,sBAAA,SAAS,eAAe,cAAc;AAAA,eAC7C,gBAAgB;AACT,sBAAA,SAAS,eAAe,cAAc;AAAA,IACxD;AAEA,SAAK,UAAU,IAAI,eAAe,CAAC,OAAO;AAC1C,QAAI,CAAC,SAAS;AACZ,WAAK,YAAY;AAAA,IACnB;AAEU,cAAA;AAEV,QAAI,QAAQ;AACI;IAAA,OACT;AACL,sBAAgB,UACZ,KAAK,mBAAmB,EAAE,OAAO,KAAK,gBAAgB,MACtD,IAAA,EAAE,OAAO,KAAK,IAAM,EAAA;AAAA,IAC1B;AAEA,WAAO,WAAW,MAAM;AACjB,WAAA,UAAU,OAAO,aAAa;AACnC,UAAI,CAAC,SAAS;AACZ,aAAK,cAAc;AAAA,MACrB;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAWA,QACK,MACqB;AACxB,UAAM,YAAY,KAAK,CAAC,aAAa,WAAW,KAAK,CAAC,IAAI;AACpD,UAAA,UAAU,KAAK,CAAC,aAAa,WAAW,KAAK,CAAC,IAAI,KAAK,CAAC;AAE9D,WAAO,IAAI,kBAAqB,CAAC,SAAS,QAAQ,WAAW;;AAC3D,UAAI,UAAU;AACV,UAAA;AAEJ,YAAM,SAAS,KAAK;AAAA,QAClB,CAAC,UAAU;AACT,cAAI,WAAW,CAAC,UAAU,KAAK,GAAG;AAChC;AAAA,UACF;AAEA,kBAAQ,KAAK;AACH,oBAAA;AACV,mBAAS,aAAa,KAAK;AAChB,qBAAA,MAAM,QAAQ;AAAA,QAC3B;AAAA,QACA;AAAA,UACE,QAAQ,CAAC,CAAC;AAAA,QACZ;AAAA,MAAA;AAGF,UAAI,SAAS;AACX;AAAA,MACF;AAEO,aAAA,iBAAiB,SAAS,MAAM;AAE9B,+CAAA,WAAA,mBAAQ,iBAAiB,SAAS,MAAM;;AACxC;AACP,iBAAOI,MAAA,QAAQ,WAAR,gBAAAA,IAAgB,WAAU,IAAI,MAAM,WAAW,CAAC;AAAA,MAAA;AAGrD,WAAA,mCAAS,aAAY,QAAW;AAClC,gBAAQ,WAAW,MAAM;AAChB;AACA,iBAAA,IAAI,MAAM,SAAS,CAAC;AAAA,QAC1B,GAAA,aAAa,QAAQ,OAAO,CAAC;AAAA,MAClC;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAMA,IAAI,cAA4C,MAAyB;AACvE,UAAM,UACJ,qBAAqB,WACjB,KAAK,CAAC,IACN,CAAC,UAAU,CAAC,UAAUD,WAAI,IAAA,OAAO,WAAsB,KAAK;AAE5D,UAAA,WAAW,aAAa,SAAS;AAEvC,UAAM,cAAc;AAAA,MAClB,OAAO,KAAK,cAAc,KAAK,YAAY,QAAQ;AAAA,MACnD,WAAW,KAAK,cAAc,CAAC,GAAG,KAAK,YAAY,WAAW,SAAS,IAAI,CAAC,SAAS;AAAA,MAErF,SAAS,CAAC,UAAe;AACvB,YAAI,CAAC,SAAS;AACZ,gBAAM,IAAI;AAAA,YACR;AAAA,UAAA;AAAA,QAEJ;AAEI,YAAA,SAAS,QAAQ,KAAK;AAE1B,YAAI,kBAAkB,UAAU;AACrB,mBAAA,OAAO,KAAK,IAAK,CAAA;AAAA,QAC5B;AAEA,YAAI,KAAK,aAAa;AACf,eAAA,YAAY,QAAQ,MAAM;AAAA,QAAA,OAC1B;AACL,eAAK,IAAI,MAAM;AAAA,QACjB;AAAA,MACF;AAAA,IAAA;AAGF,WAAO,IAAI;AAAA,MACT,CAAC,EAAE,IAAA,MAAU;AACJ,eAAA,SAAS,IAAI,IAAI,CAAC;AAAA,MAC3B;AAAA,MACA,KAAK;AAAA,MACL;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,UAAU,QAAgB,SAAS,KAAK,QAAQ,QAAQ;AACjD,SAAA,QAAQ,IAAI,QAAQ;AAAA,MACvB,QAAQ,KAAK,SAAA,IAAa,YAAY,OAAO;AAAA,MAC7C,QAAQ,WAAW,SAAY,aAAa,MAAM,IAAI;AAAA,IAAA,CACvD;AAED,WAAO,MAAM;AACL,YAAA,EAAE,QAAQ,YAAY,KAAK,QAAQ,IAAI,MAAM,KAAK;AAC/C;AAET,UAAI,YAAY,QAAW;AACzB,qBAAa,OAAO;AAAA,MACtB;AAEK,WAAA,QAAQ,OAAO,MAAM;AAAA,IAAA;AAAA,EAE9B;AAAA;AAAA,EAGA,WAAW;AACF,WAAA,CAAC,GAAG,KAAK,UAAU,QAAQ,EAAE,KAAK,OAAO;AAAA,EAClD;AAAA,EAEU,cAAc;AAClB,QAAA,CAAC,GAAG,KAAK,UAAU,OAAA,CAAQ,EAAE,OAAO,OAAO,EAAE,SAAS;AAAG;AAElD,eAAA,CAAC,QAAQ,EAAE,QAAQ,QAAQ,QAAS,CAAA,KAAK,KAAK,QAAQ,WAAW;AAC1E,UAAI,YAAY,QAAW;AACzB,qBAAa,OAAO;AAAA,MACtB;AAEK,WAAA,QAAQ,IAAI,QAAQ;AAAA,QACvB,QAAQ,UAAU,OAAA,KAAY;AAAA,QAC9B;AAAA,QACA,SAAS;AAAA,MAAA,CACV;AAAA,IACH;AAAA,EACF;AAAA,EAEU,gBAAgB;AACpB,QAAA,CAAC,GAAG,KAAK,UAAU,QAAQ,EAAE,KAAK,OAAO;AAAG;AAErC,eAAA,CAAC,QAAQ,EAAE,QAAQ,QAAQ,QAAS,CAAA,KAAK,KAAK,QAAQ,WAAW;AAC1E,UAAI,CAAC,QAAQ;AACF;AAET,YAAI,YAAY,QAAW;AACzB,uBAAa,OAAO;AAAA,QACtB;AAEK,aAAA,QAAQ,IAAI,QAAQ;AAAA,UACvB,QAAQ;AAAA,UACR;AAAA,UACA,SAAS;AAAA,QAAA,CACV;AAED;AAAA,MACF;AAEA,YAAM,aACJ,YACC,SACG,WAAW,MAAM;AACR;AACF,aAAA,QAAQ,IAAI,QAAQ;AAAA,UACvB,QAAQ;AAAA,UACR;AAAA,UACA,SAAS;AAAA,QAAA,CACV;AAAA,MAAA,GACA,MAAM,IACT;AAED,WAAA,QAAQ,IAAI,QAAQ;AAAA,QACvB;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MAAA,CACV;AAAA,IACH;AAAA,EACF;AAAA,EAEU,SAAS;AACjB,UAAM,IAAI,CAAA;AACV,SAAK,WAAW;AAEhB,UAAM,WAAW,CAAC,GAAG,KAAK,UAAU,KAAM,CAAA;AAC1C,eAAW,YAAY,UAAU;AACtB;AACT,UAAI,MAAM,KAAK;AAAU;AAAA,IAC3B;AAAA,EACF;AACF;AAOA,SAAS,OACP,cACA,SACyC;AACzC,YAAU,EAAE,GAAG,YAAY,gBAAgB,GAAG,QAAQ;AAEtD,QAAM,QAAQ,IAAI,MAAM,cAAc,OAAO;AAE7C,MAAI,wBAAwB,UAAU;AAC7B,WAAA;AAAA,EACT;AAEA,MAAI,UAAoC,mCAAS;AAEjD,MAAI,wBAAwB,KAAK;AAC/B,cAAU,EAAE,GAAG,YAAY,GAAG,QAAQ;AAAA,EAAA,WAC7B,wBAAwB,KAAK;AACtC,cAAU,EAAE,GAAG,YAAY,GAAG,QAAQ;AAAA,EAC7B,WAAA,MAAM,QAAQ,YAAY,GAAG;AACtC,cAAU,EAAE,GAAG,cAAc,GAAG,QAAQ;AAAA,EAAA,WAC/B,wBAAwB,QAAQ;AACzC,cAAU,EAAE,GAAG,eAAe,GAAG,QAAQ;AAAA,EAC3C;AAEA,QAAM,eAAe,OAAO;AAAA,IAC1B,OAAO,QAAQ,WAAY,EAAgC,EACxD,OAAO,CAAC,CAAC,IAAI,MAAM,EAAE,QAAQ,MAAM,EACnC,IAAI,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,MAAO,OAAe,KAAK,KAAK,CAAC,CAAC;AAAA,EAAA;AAGzD,SAAA,OAAO,OAAO,OAAO,YAAY;AAC1C;AAEa,MAAA,cAAqC,uBAAA,OAAO,QAAQ;AAAA,EAC/D,gBAAgB;AAAA,IACd,QAAQH,WAAA;AAAA,EACV;AACF,CAAC;;;;;;;;;;;;;;;"}
@@ -2,12 +2,13 @@
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const require$$0 = require("react");
4
4
  const store = require("./store.cjs");
5
+ const propAccess = require("./propAccess.cjs");
5
6
  const hash = require("./hash.cjs");
6
7
  const unwrapProxySymbol = /* @__PURE__ */ Symbol("unwrapProxy");
7
8
  function isPlainObject(value) {
8
9
  return typeof value === "object" && value !== null && Object.getPrototypeOf(value) === Object.prototype;
9
10
  }
10
- function trackingProxy(value, equals = store.deepEqual) {
11
+ function trackingProxy(value, equals = propAccess.deepEqual) {
11
12
  if (!isPlainObject(value) && !Array.isArray(value)) {
12
13
  return [value, (other) => equals(value, other)];
13
14
  }
@@ -453,7 +454,7 @@ function useStore(store$1, argument1, argument2) {
453
454
  );
454
455
  const {
455
456
  disableTrackingProxy = true,
456
- equals = store$1.options.equals ?? store.deepEqual,
457
+ equals = store$1.options.equals ?? propAccess.deepEqual,
457
458
  withViewTransition,
458
459
  ...options
459
460
  } = typeof argument1 === "object" ? argument1 : argument2 ?? {};