cross-state 0.43.2 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/hash.cjs.map +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index2.cjs +3 -3
- package/dist/cjs/index2.cjs.map +1 -1
- package/dist/cjs/mutative/register.cjs.map +1 -1
- package/dist/cjs/mutativeMethods.cjs.map +1 -1
- package/dist/cjs/patches/register.cjs.map +1 -1
- package/dist/cjs/persist/register.cjs.map +1 -1
- package/dist/cjs/persist.cjs +7 -7
- package/dist/cjs/persist.cjs.map +1 -1
- package/dist/cjs/propAccess.cjs +4 -4
- package/dist/cjs/propAccess.cjs.map +1 -1
- package/dist/cjs/react/index.cjs +31 -18
- package/dist/cjs/react/index.cjs.map +1 -1
- package/dist/cjs/react/register.cjs.map +1 -1
- package/dist/cjs/scope.cjs +8 -8
- package/dist/cjs/scope.cjs.map +1 -1
- package/dist/cjs/store.cjs +36 -36
- package/dist/cjs/store.cjs.map +1 -1
- package/dist/cjs/storeMethods.cjs +25 -17
- package/dist/cjs/storeMethods.cjs.map +1 -1
- package/dist/cjs/urlStore.cjs +6 -6
- package/dist/cjs/urlStore.cjs.map +1 -1
- package/dist/es/hash.mjs.map +1 -1
- package/dist/es/index.mjs.map +1 -1
- package/dist/es/index2.mjs +3 -3
- package/dist/es/index2.mjs.map +1 -1
- package/dist/es/mutative/register.mjs.map +1 -1
- package/dist/es/mutativeMethods.mjs.map +1 -1
- package/dist/es/patches/register.mjs.map +1 -1
- package/dist/es/persist/register.mjs.map +1 -1
- package/dist/es/persist.mjs +7 -7
- package/dist/es/persist.mjs.map +1 -1
- package/dist/es/propAccess.mjs +4 -4
- package/dist/es/propAccess.mjs.map +1 -1
- package/dist/es/react/index.mjs +31 -18
- package/dist/es/react/index.mjs.map +1 -1
- package/dist/es/react/register.mjs.map +1 -1
- package/dist/es/scope.mjs +9 -9
- package/dist/es/scope.mjs.map +1 -1
- package/dist/es/store.mjs +36 -36
- package/dist/es/store.mjs.map +1 -1
- package/dist/es/storeMethods.mjs +27 -19
- package/dist/es/storeMethods.mjs.map +1 -1
- package/dist/es/urlStore.mjs +6 -6
- package/dist/es/urlStore.mjs.map +1 -1
- package/dist/types/core/cache.d.ts +5 -4
- package/dist/types/core/store.d.ts +6 -5
- package/dist/types/lib/constrain.d.ts +1 -0
- package/dist/types/lib/makeSelector.d.ts +2 -2
- package/dist/types/lib/path.d.ts +1 -0
- package/dist/types/lib/propAccess.d.ts +4 -3
- package/dist/types/mutative/mutativeMethods.d.ts +2 -1
- package/dist/types/react/form/form.d.ts +9 -9
- package/dist/types/react/form/formField.d.ts +8 -11
- package/dist/types/react/form/formForEach.d.ts +4 -5
- package/dist/types/react/scope.d.ts +3 -2
- package/dist/types/react/scopeMethods.d.ts +3 -2
- package/dist/types/react/storeMethods.d.ts +3 -2
- package/dist/types/react/useProp.d.ts +2 -1
- package/dist/types/react/useStore.d.ts +2 -1
- package/package.json +12 -12
package/dist/es/store.mjs
CHANGED
|
@@ -52,8 +52,8 @@ class Deferred extends Promise {
|
|
|
52
52
|
super((resolve, reject) => {
|
|
53
53
|
Object.assign(that, { resolve, reject });
|
|
54
54
|
});
|
|
55
|
-
this.resolve = () =>
|
|
56
|
-
this.reject = () =>
|
|
55
|
+
this.resolve = () => undefined;
|
|
56
|
+
this.reject = () => undefined;
|
|
57
57
|
Object.assign(this, that);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -139,7 +139,7 @@ function queue() {
|
|
|
139
139
|
return q.length;
|
|
140
140
|
},
|
|
141
141
|
getRefs() {
|
|
142
|
-
return q.map((item) => item.ref).filter((x) => x !==
|
|
142
|
+
return q.map((item) => item.ref).filter((x) => x !== undefined);
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
);
|
|
@@ -191,7 +191,7 @@ function calculatedValue(store, notify) {
|
|
|
191
191
|
};
|
|
192
192
|
const off = () => {
|
|
193
193
|
cancel?.();
|
|
194
|
-
cancel =
|
|
194
|
+
cancel = undefined;
|
|
195
195
|
};
|
|
196
196
|
deps.push({ store: dep, value: value2, on, off });
|
|
197
197
|
if (active) {
|
|
@@ -281,7 +281,7 @@ function calculatedValue(store, notify) {
|
|
|
281
281
|
let _cancel = createConnection(actions);
|
|
282
282
|
connection.cancel = () => {
|
|
283
283
|
_cancel?.();
|
|
284
|
-
_cancel =
|
|
284
|
+
_cancel = undefined;
|
|
285
285
|
};
|
|
286
286
|
if (!connection.active) {
|
|
287
287
|
connection.cancel();
|
|
@@ -303,7 +303,7 @@ function calculatedValue(store, notify) {
|
|
|
303
303
|
value = store.getter;
|
|
304
304
|
}
|
|
305
305
|
if (isPromise(value)) {
|
|
306
|
-
value.finally(() => whenExecuted.resolve()).catch(() =>
|
|
306
|
+
value.finally(() => whenExecuted.resolve()).catch(() => undefined);
|
|
307
307
|
} else {
|
|
308
308
|
whenExecuted.resolve();
|
|
309
309
|
}
|
|
@@ -343,9 +343,9 @@ function calculatedValue(store, notify) {
|
|
|
343
343
|
function staticValue(value) {
|
|
344
344
|
return {
|
|
345
345
|
value,
|
|
346
|
-
check: () =>
|
|
347
|
-
stop: () =>
|
|
348
|
-
invalidateDependencies: () =>
|
|
346
|
+
check: () => undefined,
|
|
347
|
+
stop: () => undefined,
|
|
348
|
+
invalidateDependencies: () => undefined
|
|
349
349
|
};
|
|
350
350
|
}
|
|
351
351
|
|
|
@@ -369,26 +369,26 @@ class Callable extends Function {
|
|
|
369
369
|
|
|
370
370
|
function debounce(action, options) {
|
|
371
371
|
const wait = typeof options === "object" && "wait" in options ? calcDuration(options.wait) : calcDuration(options);
|
|
372
|
-
const maxWait = typeof options === "object" && "maxWait" in options && options.maxWait !==
|
|
372
|
+
const maxWait = typeof options === "object" && "maxWait" in options && options.maxWait !== undefined ? calcDuration(options.maxWait) : undefined;
|
|
373
373
|
let run;
|
|
374
374
|
let timeout;
|
|
375
375
|
let timeoutStarted;
|
|
376
376
|
function flush() {
|
|
377
|
-
if (timeout !==
|
|
377
|
+
if (timeout !== undefined) {
|
|
378
378
|
clearTimeout(timeout);
|
|
379
379
|
}
|
|
380
380
|
run?.();
|
|
381
381
|
}
|
|
382
382
|
function cancel() {
|
|
383
|
-
if (timeout !==
|
|
383
|
+
if (timeout !== undefined) {
|
|
384
384
|
clearTimeout(timeout);
|
|
385
385
|
}
|
|
386
|
-
run =
|
|
387
|
-
timeout =
|
|
388
|
-
timeoutStarted =
|
|
386
|
+
run = undefined;
|
|
387
|
+
timeout = undefined;
|
|
388
|
+
timeoutStarted = undefined;
|
|
389
389
|
}
|
|
390
390
|
function isScheduled() {
|
|
391
|
-
return timeout !==
|
|
391
|
+
return timeout !== undefined;
|
|
392
392
|
}
|
|
393
393
|
function debounce2(...args) {
|
|
394
394
|
const now = Date.now();
|
|
@@ -398,13 +398,13 @@ function debounce(action, options) {
|
|
|
398
398
|
now + wait,
|
|
399
399
|
timeoutStarted + (maxWait ?? Number.POSITIVE_INFINITY)
|
|
400
400
|
);
|
|
401
|
-
if (timeout !==
|
|
401
|
+
if (timeout !== undefined) {
|
|
402
402
|
clearTimeout(timeout);
|
|
403
403
|
}
|
|
404
404
|
run = () => {
|
|
405
|
-
run =
|
|
406
|
-
timeout =
|
|
407
|
-
timeoutStarted =
|
|
405
|
+
run = undefined;
|
|
406
|
+
timeout = undefined;
|
|
407
|
+
timeoutStarted = undefined;
|
|
408
408
|
action(...args);
|
|
409
409
|
};
|
|
410
410
|
timeout = setTimeout(run, deadline - now);
|
|
@@ -506,7 +506,7 @@ function throttle(action, duration) {
|
|
|
506
506
|
let t = 0;
|
|
507
507
|
let timeout;
|
|
508
508
|
return (...args) => {
|
|
509
|
-
if (timeout !==
|
|
509
|
+
if (timeout !== undefined) {
|
|
510
510
|
clearTimeout(timeout);
|
|
511
511
|
}
|
|
512
512
|
const dt = t + ms - Date.now();
|
|
@@ -523,10 +523,10 @@ function throttle(action, duration) {
|
|
|
523
523
|
}
|
|
524
524
|
|
|
525
525
|
function noop() {
|
|
526
|
-
return
|
|
526
|
+
return undefined;
|
|
527
527
|
}
|
|
528
528
|
class Store extends Callable {
|
|
529
|
-
constructor(getter, options = {}, derivedFrom, _call = () =>
|
|
529
|
+
constructor(getter, options = {}, derivedFrom, _call = () => undefined) {
|
|
530
530
|
super(_call);
|
|
531
531
|
this.getter = getter;
|
|
532
532
|
this.options = options;
|
|
@@ -667,7 +667,7 @@ class Store extends Callable {
|
|
|
667
667
|
cancel();
|
|
668
668
|
reject(options.signal?.reason ?? new Error("cancelled"));
|
|
669
669
|
});
|
|
670
|
-
if (options?.timeout !==
|
|
670
|
+
if (options?.timeout !== undefined) {
|
|
671
671
|
timer = setTimeout(() => {
|
|
672
672
|
cancel();
|
|
673
673
|
reject(new Error("timeout"));
|
|
@@ -702,7 +702,7 @@ class Store extends Callable {
|
|
|
702
702
|
({ use }) => {
|
|
703
703
|
return selector(use(this));
|
|
704
704
|
},
|
|
705
|
-
|
|
705
|
+
undefined,
|
|
706
706
|
derivedFrom
|
|
707
707
|
);
|
|
708
708
|
}
|
|
@@ -718,13 +718,13 @@ class Store extends Callable {
|
|
|
718
718
|
*/
|
|
719
719
|
addEffect(effect, retain = this.options.retain) {
|
|
720
720
|
this.effects.set(effect, {
|
|
721
|
-
handle: this.isActive() ? effect.apply(this, [this]) ?? noop :
|
|
722
|
-
retain: retain !==
|
|
721
|
+
handle: this.isActive() ? effect.apply(this, [this]) ?? noop : undefined,
|
|
722
|
+
retain: retain !== undefined ? calcDuration(retain) : undefined
|
|
723
723
|
});
|
|
724
724
|
return disposable(() => {
|
|
725
725
|
const { handle, timeout } = this.effects.get(effect) ?? {};
|
|
726
726
|
handle?.();
|
|
727
|
-
if (timeout !==
|
|
727
|
+
if (timeout !== undefined) {
|
|
728
728
|
clearTimeout(timeout);
|
|
729
729
|
}
|
|
730
730
|
this.effects.delete(effect);
|
|
@@ -737,13 +737,13 @@ class Store extends Callable {
|
|
|
737
737
|
onSubscribe() {
|
|
738
738
|
if ([...this.listeners.values()].filter(Boolean).length > 1) return;
|
|
739
739
|
for (const [effect, { handle, retain, timeout }] of this.effects.entries()) {
|
|
740
|
-
if (timeout !==
|
|
740
|
+
if (timeout !== undefined) {
|
|
741
741
|
clearTimeout(timeout);
|
|
742
742
|
}
|
|
743
743
|
this.effects.set(effect, {
|
|
744
744
|
handle: handle ?? effect.apply(this, [this]) ?? noop,
|
|
745
745
|
retain,
|
|
746
|
-
timeout:
|
|
746
|
+
timeout: undefined
|
|
747
747
|
});
|
|
748
748
|
}
|
|
749
749
|
}
|
|
@@ -752,24 +752,24 @@ class Store extends Callable {
|
|
|
752
752
|
for (const [effect, { handle, retain, timeout }] of this.effects.entries()) {
|
|
753
753
|
if (!retain) {
|
|
754
754
|
handle?.();
|
|
755
|
-
if (timeout !==
|
|
755
|
+
if (timeout !== undefined) {
|
|
756
756
|
clearTimeout(timeout);
|
|
757
757
|
}
|
|
758
758
|
this.effects.set(effect, {
|
|
759
|
-
handle:
|
|
759
|
+
handle: undefined,
|
|
760
760
|
retain,
|
|
761
|
-
timeout:
|
|
761
|
+
timeout: undefined
|
|
762
762
|
});
|
|
763
763
|
continue;
|
|
764
764
|
}
|
|
765
765
|
const newTimeout = timeout ?? (handle ? setTimeout(() => {
|
|
766
766
|
handle();
|
|
767
767
|
this.effects.set(effect, {
|
|
768
|
-
handle:
|
|
768
|
+
handle: undefined,
|
|
769
769
|
retain,
|
|
770
|
-
timeout:
|
|
770
|
+
timeout: undefined
|
|
771
771
|
});
|
|
772
|
-
}, retain) :
|
|
772
|
+
}, retain) : undefined);
|
|
773
773
|
this.effects.set(effect, {
|
|
774
774
|
handle,
|
|
775
775
|
retain,
|
package/dist/es/store.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.mjs","sources":["../../src/lib/autobind.ts","../../src/lib/calcDuration.ts","../../src/lib/deferred.ts","../../src/lib/isPromise.ts","../../src/lib/promiseWithState.ts","../../src/lib/queue.ts","../../src/lib/calculatedValue.ts","../../src/lib/makeSelector.ts","../../src/lib/callable.ts","../../src/lib/debounce.ts","../../src/lib/disposable.ts","../../src/lib/forwardError.ts","../../src/lib/promiseWithCancel.ts","../../src/lib/standardMethods.ts","../../src/lib/throttle.ts","../../src/core/store.ts"],"sourcesContent":["const marker = Symbol('autobind');\n\nexport const autobind = <\n TClass extends abstract new (...args: any) => any = abstract new (...args: any) => any,\n>(\n _class: TClass,\n): TClass => {\n for (const key of Reflect.ownKeys(_class.prototype)) {\n if (key === 'constructor') {\n continue;\n }\n\n const descriptor = Reflect.getOwnPropertyDescriptor(_class.prototype, key);\n let method = descriptor?.get?.() ?? descriptor?.value;\n let isBinding = false;\n\n if (typeof method !== 'function' || method[marker]) {\n continue;\n }\n\n Reflect.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 boundMethod[marker] = true;\n isBinding = true;\n\n Object.defineProperty(this, key, {\n configurable: true,\n get() {\n return boundMethod;\n },\n });\n\n isBinding = false;\n return boundMethod;\n },\n set(v) {\n method = v;\n },\n });\n }\n\n return _class;\n};\n","import type { Duration } from '../core/commonTypes';\n\nexport function calcDuration(t: Duration): number {\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 resolve: (value: T | PromiseLike<T>) => void = () => undefined;\n reject: (reason?: any) => void = () => undefined;\n\n constructor() {\n Object.defineProperty(Deferred, Symbol.species, {\n value: Promise,\n });\n\n const that = {};\n\n super((resolve, reject) => {\n Object.assign(that, { resolve, reject });\n });\n\n Object.assign(this, that);\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 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): PromiseWithState<T> {\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 Object.defineProperty(PromiseWithState, Symbol.species, {\n value: Promise,\n });\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 isPromise from '@lib/isPromise';\nimport 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 (isPromise(result)) {\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","import type { Cache } from '@core';\nimport type { AsyncConnectionActions, Cancel, Connection } from '@core/commonTypes';\nimport type { Store } from '@core/store';\nimport { Deferred } from '@lib/deferred';\nimport isPromise from '@lib/isPromise';\nimport { PromiseWithState } from '@lib/promiseWithState';\nimport { queue } from '@lib/queue';\nimport { deepEqual } from './equals';\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 const ac = new AbortController();\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((state) => ({\n ...state,\n isConnected: false,\n isStale: true,\n }));\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 q(() => {\n if (!connection?.active) {\n return;\n }\n\n value = _value;\n notify();\n });\n },\n updateValue(update) {\n q(async () => {\n if (!connection?.active) {\n return;\n }\n\n if (update instanceof Function) {\n const currentValue = await value;\n\n if (!connection?.active) {\n return;\n }\n\n try {\n update = update(currentValue);\n } catch (error) {\n value = PromiseWithState.reject(error) as T;\n notify();\n connection.active = false;\n connection.cancel?.();\n return;\n }\n }\n\n value = PromiseWithState.resolve(update) as T;\n notify();\n });\n },\n updateError(error) {\n q(() => {\n if (!connection?.active) {\n return;\n }\n\n connection.active = false;\n connection.cancel?.();\n\n if ('state' in store) {\n (store as unknown as Cache<any>).state.set({\n status: 'error',\n error,\n isConnected: false,\n isUpdating: false,\n isStale: false,\n });\n }\n\n value = PromiseWithState.reject(error) as T;\n notify();\n });\n },\n updateIsConnected(isConnected) {\n if (isConnected) {\n whenConnected.resolve();\n }\n\n q(() => {\n if (!connection?.active) {\n return;\n }\n\n if ('state' in store) {\n (store as unknown as Cache<any>).state.set('isConnected', isConnected);\n }\n });\n },\n close() {\n if (connection?.active) {\n store.invalidate();\n }\n },\n };\n\n connection = { active: true };\n let _cancel: Cancel | undefined = createConnection(actions as any);\n\n connection.cancel = () => {\n _cancel?.();\n _cancel = undefined;\n };\n\n if (!connection.active) {\n connection.cancel();\n }\n\n return whenConnected;\n }\n\n if (store.getter instanceof Function) {\n try {\n value = store.getter({ signal: ac.signal, use, connect });\n } catch (error) {\n value = PromiseWithState.reject(error) as T;\n\n if (connection) {\n connection.active = false;\n connection.cancel?.();\n q.clear();\n }\n }\n } else {\n value = store.getter;\n }\n\n if (isPromise(value)) {\n value.finally(() => whenExecuted.resolve()).catch(() => undefined);\n } else {\n whenExecuted.resolve();\n }\n\n function check() {\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 ac.abort();\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 (...args: Args): void;\n flush(): void;\n cancel(): void;\n isScheduled(): boolean;\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","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","export function forwardError(error: unknown): void {\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', () => {\n reject(abortController.signal.reason);\n });\n });\n\n this.abortController = abortController;\n }\n\n cancel(reason: any = new PromiseCancelError()): void {\n this.abortController.abort(reason);\n }\n}\n","import type { Store } from '../core/store';\nimport type { OptionalProperties, 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 [P in 'splice' | 'push' | 'pop' | 'shift' | 'unshift' | 'reverse' | 'sort']: <\n T extends Array<any>,\n >(\n this: Store<T>,\n ...args: T[P] extends Function_ ? Parameters<T[P]> : never\n ) => T[P] extends Function_ ? ReturnType<T[P]> : never;\n} = {\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>>(\n this: Store<T>,\n key: K,\n ): void {\n const copy = { ...this.get() };\n delete copy[key];\n this.set(copy);\n },\n\n clear<T extends Record<any, any>>(\n this: OptionalProperties<T> extends T ? Store<T> : never,\n ): void {\n this.set({} as T);\n },\n};\n\nexport const mapMethods = {\n delete<K, V>(this: Store<Map<K, V>>, key: K): boolean {\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>>): void {\n this.set(new Map());\n },\n};\n\nexport const setMethods = {\n add<T>(this: Store<Set<T>>, value: T): void {\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): void {\n const newSet = new Set(this.get());\n newSet.delete(value);\n this.set(newSet);\n },\n\n clear<T>(this: Store<Set<T>>): void {\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 { 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 disposable from '@lib/disposable';\nimport { deepEqual } from '@lib/equals';\nimport { forwardError } from '@lib/forwardError';\nimport { isObject } from '@lib/helpers';\nimport { makeSelector } from '@lib/makeSelector';\nimport type { Path, SettablePath, 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';\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<T> {\n retain?: Duration;\n equals?: SubscribeOptions['equals'];\n effect?: Effect<Store<T>> | { effect: Effect<Store<T>>; retain?: Duration };\n}\n\nexport interface StoreOptionsWithMethods<T, Methods extends StoreMethods> extends StoreOptions<T> {\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 private static hooks?: Set<(this: Store<any>, store: Store<any>) => void>;\n\n static addHook(hook: (store: Store<any>) => void): DisposableCancel {\n this.hooks ??= new Set();\n this.hooks.add(hook);\n return disposable(() => this.hooks?.delete(hook));\n }\n\n version?: string;\n\n protected calculatedValue?: CalculatedValue<T>;\n protected defaultValue?: CalculatedValue<T>;\n\n protected listeners: Map<Listener, boolean> = new Map();\n\n protected effects: Map<\n Effect<Store<T>>,\n { handle?: Cancel; retain?: number; timeout?: ReturnType<typeof setTimeout> }\n > = new Map();\n\n protected notifyId = {};\n\n constructor(\n public readonly getter: T | Calculate<T>,\n public readonly options: StoreOptions<T> = {},\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 for (const hook of Store.hooks ?? []) {\n hook.apply(this, [this]);\n }\n\n if (options.effect instanceof Function) {\n this.addEffect(options.effect);\n } else if (options.effect) {\n this.addEffect(options.effect.effect, options.effect.retain);\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): void {\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 = this.options.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 if (this.listeners.delete(innerListener) && !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 if (timer) {\n clearTimeout(timer);\n }\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 SettablePath<T>>(selector: P): Store<Value<T, P>>;\n\n map(_selector: Selector<T, any> | SettablePath<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 SettablePath<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 undefined,\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(\n effect: Effect<Store<T>>,\n retain: Duration | undefined = this.options.retain,\n ): DisposableCancel {\n this.effects.set(effect, {\n handle: this.isActive() ? (effect.apply(this, [this]) ?? noop) : undefined,\n retain: retain !== undefined ? calcDuration(retain) : undefined,\n });\n\n return disposable(() => {\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(): boolean {\n return [...this.listeners.values()].some(Boolean);\n }\n\n protected onSubscribe(): void {\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.apply(this, [this]) ?? noop,\n retain,\n timeout: undefined,\n });\n }\n }\n\n protected onUnsubscribe(): void {\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(): void {\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<T>): 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 (isObject(initialState)) {\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: typeof create & { defaultOptions: StoreOptions<any> } =\n /* @__PURE__ */ Object.assign(create, {\n defaultOptions: {\n equals: deepEqual,\n } as StoreOptions<any>,\n });\n"],"names":["value","debounce"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.mjs","sources":["../../src/lib/autobind.ts","../../src/lib/calcDuration.ts","../../src/lib/deferred.ts","../../src/lib/isPromise.ts","../../src/lib/promiseWithState.ts","../../src/lib/queue.ts","../../src/lib/calculatedValue.ts","../../src/lib/makeSelector.ts","../../src/lib/callable.ts","../../src/lib/debounce.ts","../../src/lib/disposable.ts","../../src/lib/forwardError.ts","../../src/lib/promiseWithCancel.ts","../../src/lib/standardMethods.ts","../../src/lib/throttle.ts","../../src/core/store.ts"],"sourcesContent":["const marker = Symbol('autobind');\n\nexport const autobind = <\n TClass extends abstract new (...args: any) => any = abstract new (...args: any) => any,\n>(\n _class: TClass,\n): TClass => {\n for (const key of Reflect.ownKeys(_class.prototype)) {\n if (key === 'constructor') {\n continue;\n }\n\n const descriptor = Reflect.getOwnPropertyDescriptor(_class.prototype, key);\n let method = descriptor?.get?.() ?? descriptor?.value;\n let isBinding = false;\n\n if (typeof method !== 'function' || method[marker]) {\n continue;\n }\n\n Reflect.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 boundMethod[marker] = true;\n isBinding = true;\n\n Object.defineProperty(this, key, {\n configurable: true,\n get() {\n return boundMethod;\n },\n });\n\n isBinding = false;\n return boundMethod;\n },\n set(v) {\n method = v;\n },\n });\n }\n\n return _class;\n};\n","import type { Duration } from '../core/commonTypes';\n\nexport function calcDuration(t: Duration): number {\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 resolve: (value: T | PromiseLike<T>) => void = () => undefined;\n reject: (reason?: any) => void = () => undefined;\n\n constructor() {\n Object.defineProperty(Deferred, Symbol.species, {\n value: Promise,\n });\n\n const that = {};\n\n super((resolve, reject) => {\n Object.assign(that, { resolve, reject });\n });\n\n Object.assign(this, that);\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 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): PromiseWithState<T> {\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 Object.defineProperty(PromiseWithState, Symbol.species, {\n value: Promise,\n });\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 isPromise from '@lib/isPromise';\nimport 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 (isPromise(result)) {\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","import type { Cache } from '@core';\nimport type { AsyncConnectionActions, Cancel, Connection } from '@core/commonTypes';\nimport type { Store } from '@core/store';\nimport { Deferred } from '@lib/deferred';\nimport isPromise from '@lib/isPromise';\nimport { PromiseWithState } from '@lib/promiseWithState';\nimport { queue } from '@lib/queue';\nimport { deepEqual } from './equals';\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 const ac = new AbortController();\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((state) => ({\n ...state,\n isConnected: false,\n isStale: true,\n }));\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 q(() => {\n if (!connection?.active) {\n return;\n }\n\n value = _value;\n notify();\n });\n },\n updateValue(update) {\n q(async () => {\n if (!connection?.active) {\n return;\n }\n\n if (update instanceof Function) {\n const currentValue = await value;\n\n if (!connection?.active) {\n return;\n }\n\n try {\n update = update(currentValue);\n } catch (error) {\n value = PromiseWithState.reject(error) as T;\n notify();\n connection.active = false;\n connection.cancel?.();\n return;\n }\n }\n\n value = PromiseWithState.resolve(update) as T;\n notify();\n });\n },\n updateError(error) {\n q(() => {\n if (!connection?.active) {\n return;\n }\n\n connection.active = false;\n connection.cancel?.();\n\n if ('state' in store) {\n (store as unknown as Cache<any>).state.set({\n status: 'error',\n error,\n isConnected: false,\n isUpdating: false,\n isStale: false,\n });\n }\n\n value = PromiseWithState.reject(error) as T;\n notify();\n });\n },\n updateIsConnected(isConnected) {\n if (isConnected) {\n whenConnected.resolve();\n }\n\n q(() => {\n if (!connection?.active) {\n return;\n }\n\n if ('state' in store) {\n (store as unknown as Cache<any>).state.set('isConnected', isConnected);\n }\n });\n },\n close() {\n if (connection?.active) {\n store.invalidate();\n }\n },\n };\n\n connection = { active: true };\n let _cancel: Cancel | undefined = createConnection(actions as any);\n\n connection.cancel = () => {\n _cancel?.();\n _cancel = undefined;\n };\n\n if (!connection.active) {\n connection.cancel();\n }\n\n return whenConnected;\n }\n\n if (store.getter instanceof Function) {\n try {\n value = store.getter({ signal: ac.signal, use, connect });\n } catch (error) {\n value = PromiseWithState.reject(error) as T;\n\n if (connection) {\n connection.active = false;\n connection.cancel?.();\n q.clear();\n }\n }\n } else {\n value = store.getter;\n }\n\n if (isPromise(value)) {\n value.finally(() => whenExecuted.resolve()).catch(() => undefined);\n } else {\n whenExecuted.resolve();\n }\n\n function check() {\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 ac.abort();\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 { AnyPath } from './path';\nimport { get } from './propAccess';\n\nexport function makeSelector<T, S>(selector?: ((value: T) => S) | AnyPath): (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 (...args: Args): void;\n flush(): void;\n cancel(): void;\n isScheduled(): boolean;\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","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","export function forwardError(error: unknown): void {\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', () => {\n reject(abortController.signal.reason);\n });\n });\n\n this.abortController = abortController;\n }\n\n cancel(reason: any = new PromiseCancelError()): void {\n this.abortController.abort(reason);\n }\n}\n","import type { Store } from '../core/store';\nimport type { OptionalProperties, 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 [P in 'splice' | 'push' | 'pop' | 'shift' | 'unshift' | 'reverse' | 'sort']: <\n T extends Array<any>,\n >(\n this: Store<T>,\n ...args: T[P] extends Function_ ? Parameters<T[P]> : never\n ) => T[P] extends Function_ ? ReturnType<T[P]> : never;\n} = {\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>>(\n this: Store<T>,\n key: K,\n ): void {\n const copy = { ...this.get() };\n delete copy[key];\n this.set(copy);\n },\n\n clear<T extends Record<any, any>>(\n this: OptionalProperties<T> extends T ? Store<T> : never,\n ): void {\n this.set({} as T);\n },\n};\n\nexport const mapMethods = {\n delete<K, V>(this: Store<Map<K, V>>, key: K): boolean {\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>>): void {\n this.set(new Map());\n },\n};\n\nexport const setMethods = {\n add<T>(this: Store<Set<T>>, value: T): void {\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): void {\n const newSet = new Set(this.get());\n newSet.delete(value);\n this.set(newSet);\n },\n\n clear<T>(this: Store<Set<T>>): void {\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 { autobind } from '@lib/autobind';\nimport { calcDuration } from '@lib/calcDuration';\nimport { calculatedValue, staticValue, type CalculatedValue } from '@lib/calculatedValue';\nimport { Callable } from '@lib/callable';\nimport type { Constrain } from '@lib/constrain';\nimport { debounce } from '@lib/debounce';\nimport disposable from '@lib/disposable';\nimport { deepEqual } from '@lib/equals';\nimport { forwardError } from '@lib/forwardError';\nimport { isObject } from '@lib/helpers';\nimport { makeSelector } from '@lib/makeSelector';\nimport type { AnyPath, Path, SettablePath, 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';\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<T> {\n retain?: Duration;\n equals?: SubscribeOptions['equals'];\n effect?: Effect<Store<T>> | { effect: Effect<Store<T>>; retain?: Duration };\n}\n\nexport interface StoreOptionsWithMethods<T, Methods extends StoreMethods> extends StoreOptions<T> {\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 private static hooks?: Set<(this: Store<any>, store: Store<any>) => void>;\n\n static addHook(hook: (store: Store<any>) => void): DisposableCancel {\n this.hooks ??= new Set();\n this.hooks.add(hook);\n return disposable(() => this.hooks?.delete(hook));\n }\n\n version?: string;\n\n protected calculatedValue?: CalculatedValue<T>;\n protected defaultValue?: CalculatedValue<T>;\n\n protected listeners: Map<Listener, boolean> = new Map();\n\n protected effects: Map<\n Effect<Store<T>>,\n { handle?: Cancel; retain?: number; timeout?: ReturnType<typeof setTimeout> }\n > = new Map();\n\n protected notifyId = {};\n\n constructor(\n public readonly getter: T | Calculate<T>,\n public readonly options: StoreOptions<T> = {},\n public readonly derivedFrom?: {\n store: Store<any>;\n selectors: (Selector<any, any> | AnyPath)[];\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 for (const hook of Store.hooks ?? []) {\n hook.apply(this, [this]);\n }\n\n if (options.effect instanceof Function) {\n this.addEffect(options.effect);\n } else if (options.effect) {\n this.addEffect(options.effect.effect, options.effect.retain);\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>(path: Constrain<P, Path<T>>, 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): void {\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 = this.options.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 if (this.listeners.delete(innerListener) && !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 if (timer) {\n clearTimeout(timer);\n }\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<const P>(selector: Constrain<P, SettablePath<T>>): Store<Value<T, P>>;\n\n map(_selector: Selector<T, any> | SettablePath<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 any, 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 undefined,\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(\n effect: Effect<Store<T>>,\n retain: Duration | undefined = this.options.retain,\n ): DisposableCancel {\n this.effects.set(effect, {\n handle: this.isActive() ? (effect.apply(this, [this]) ?? noop) : undefined,\n retain: retain !== undefined ? calcDuration(retain) : undefined,\n });\n\n return disposable(() => {\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(): boolean {\n return [...this.listeners.values()].some(Boolean);\n }\n\n protected onSubscribe(): void {\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.apply(this, [this]) ?? noop,\n retain,\n timeout: undefined,\n });\n }\n }\n\n protected onUnsubscribe(): void {\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(): void {\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<T>): 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 (isObject(initialState)) {\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: typeof create & { defaultOptions: StoreOptions<any> } =\n /* @__PURE__ */ Object.assign(create, {\n defaultOptions: {\n equals: deepEqual,\n } as StoreOptions<any>,\n });\n"],"names":["value","debounce"],"mappings":";;AAAA,MAAM,MAAA,GAAS,OAAO,UAAU,CAAA;AAEnB,MAAA,QAAA,GAAW,CAGtB,MACW,KAAA;AACX,EAAA,KAAA,MAAW,GAAO,IAAA,OAAA,CAAQ,OAAQ,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACnD,IAAA,IAAI,QAAQ,aAAe,EAAA;AACzB,MAAA;AAAA;AAGF,IAAA,MAAM,UAAa,GAAA,OAAA,CAAQ,wBAAyB,CAAA,MAAA,CAAO,WAAW,GAAG,CAAA;AACzE,IAAA,IAAI,MAAS,GAAA,UAAA,EAAY,GAAM,IAAA,IAAK,UAAY,EAAA,KAAA;AAChD,IAAA,IAAI,SAAY,GAAA,KAAA;AAEhB,IAAA,IAAI,OAAO,MAAA,KAAW,UAAc,IAAA,MAAA,CAAO,MAAM,CAAG,EAAA;AAClD,MAAA;AAAA;AAGF,IAAQ,OAAA,CAAA,cAAA,CAAe,MAAO,CAAA,SAAA,EAAW,GAAK,EAAA;AAAA,MAC5C,YAAc,EAAA,IAAA;AAAA,MACd,GAAM,GAAA;AACJ,QAAA,IACE,SACA,IAAA,IAAA,KAAS,MAAO,CAAA,SAAA,IAChB,MAAO,CAAA,SAAA,CAAU,cAAe,CAAA,IAAA,CAAK,IAAM,EAAA,GAAG,CAC9C,IAAA,OAAO,WAAW,UAClB,EAAA;AACA,UAAO,OAAA,MAAA;AAAA;AAGT,QAAA,MAAM,cAAc,CAAI,GAAA,IAAA,KAAgB,QAAQ,KAAM,CAAA,MAAA,EAAQ,MAAM,IAAI,CAAA;AACxE,QAAA,WAAA,CAAY,MAAM,CAAI,GAAA,IAAA;AACtB,QAAY,SAAA,GAAA,IAAA;AAEZ,QAAO,MAAA,CAAA,cAAA,CAAe,MAAM,GAAK,EAAA;AAAA,UAC/B,YAAc,EAAA,IAAA;AAAA,UACd,GAAM,GAAA;AACJ,YAAO,OAAA,WAAA;AAAA;AACT,SACD,CAAA;AAED,QAAY,SAAA,GAAA,KAAA;AACZ,QAAO,OAAA,WAAA;AAAA,OACT;AAAA,MACA,IAAI,CAAG,EAAA;AACL,QAAS,MAAA,GAAA,CAAA;AAAA;AACX,KACD,CAAA;AAAA;AAGH,EAAO,OAAA,MAAA;AACT;;ACnDO,SAAS,aAAa,CAAqB,EAAA;AAChD,EAAI,IAAA,OAAO,CAAM,KAAA,QAAA,EAAiB,OAAA,CAAA;AAClC,EACG,OAAA,CAAA,CAAA,CAAE,gBAAgB,CAClB,IAAA,CAAA,CAAA,CAAE,WAAW,CAAK,IAAA,GAAA,GAAA,CAClB,CAAE,CAAA,OAAA,IAAW,CAAK,IAAA,EAAA,GAAK,OACvB,CAAE,CAAA,KAAA,IAAS,CAAK,IAAA,EAAA,GAAK,EAAK,GAAA,GAAA,GAAA,CAC1B,EAAE,IAAQ,IAAA,CAAA,IAAK,EAAK,GAAA,EAAA,GAAK,EAAK,GAAA,GAAA;AAEnC;;ACXO,MAAM,iBAA2B,OAAW,CAAA;AAAA,EAIjD,WAAc,GAAA;AACZ,IAAO,MAAA,CAAA,cAAA,CAAe,QAAU,EAAA,MAAA,CAAO,OAAS,EAAA;AAAA,MAC9C,KAAO,EAAA;AAAA,KACR,CAAA;AAED,IAAA,MAAM,OAAO,EAAC;AAEd,IAAM,KAAA,CAAA,CAAC,SAAS,MAAW,KAAA;AACzB,MAAA,MAAA,CAAO,MAAO,CAAA,IAAA,EAAM,EAAE,OAAA,EAAS,QAAQ,CAAA;AAAA,KACxC,CAAA;AAZH,IAAA,IAAA,CAAA,OAAA,GAA+C,MAAM,SAAA;AACrD,IAAA,IAAA,CAAA,MAAA,GAAiC,MAAM,SAAA;AAarC,IAAO,MAAA,CAAA,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA;AAE5B;;ACjBA,SAAwB,UAAU,KAA2C,EAAA;AAC3E,EACE,OAAA,OAAO,UAAU,QACjB,IAAA,KAAA,KAAU,QACV,MAAU,IAAA,KAAA,IACV,OAAO,KAAA,CAAM,IAAS,KAAA,UAAA;AAE1B;;ACHO,MAAM,yBAA4B,OAAW,CAAA;AAAA,EAalD,YACE,KACO,EAAA,KAAA,GAAmD,EAAE,MAAA,EAAQ,WACpE,EAAA;AACA,IAAA,KAAA,CAAM,CAAC,OAAA,KAAY,OAAQ,CAAA,KAAK,CAAC,CAAA;AAF1B,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAIP,IAAO,MAAA,CAAA,cAAA,CAAe,gBAAkB,EAAA,MAAA,CAAO,OAAS,EAAA;AAAA,MACtD,KAAO,EAAA;AAAA,KACR,CAAA;AAED,IAAI,IAAA,SAAA,CAAU,KAAK,CAAG,EAAA;AACpB,MACG,KAAA,CAAA,IAAA,CAAK,CAACA,MAAU,KAAA;AACf,QAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,MAAQ,EAAA,OAAA,EAAS,OAAOA,MAAM,EAAA;AAAA,OAC9C,CAAA,CACA,KAAM,CAAA,CAAC,KAAU,KAAA;AAChB,QAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,MAAQ,EAAA,OAAA,EAAS,KAAM,EAAA;AAAA,OACvC,CAAA;AAAA,KACE,MAAA;AACL,MAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,MAAQ,EAAA,OAAA,EAAS,KAAa,EAAA;AAAA;AAC/C;AACF,EA7BA,OAAgB,QAAW,KAAyB,EAAA;AAClD,IAAO,OAAA,IAAI,iBAAoB,KAAwB,CAAA;AAAA;AACzD,EAEA,OAAgB,OAAkB,KAAqC,EAAA;AACrE,IAAO,OAAA,IAAI,gBAAoB,CAAA,OAAA,CAAQ,MAAO,CAAA,KAAK,GAAG,EAAE,MAAA,EAAQ,OAAS,EAAA,KAAA,EAAO,CAAA;AAAA;AAyBpF;;ACzBO,SAAS,KAAe,GAAA;AAC7B,EAAA,MAAM,IAKA,EAAC;AACP,EAAM,MAAA,mBAAA,uBAA0B,GAAoB,EAAA;AACpD,EAAA,IAAI,MAAS,GAAA,KAAA;AAEb,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,KAAA,MAAW,YAAY,mBAAqB,EAAA;AAC1C,MAAS,QAAA,EAAA;AAAA;AAGX,IAAA,mBAAA,CAAoB,KAAM,EAAA;AAAA,GAC5B;AAEA,EAAA,MAAM,MAAM,YAAY;AACtB,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAS,MAAA,GAAA,IAAA;AAET,MAAI,IAAA,IAAA;AACJ,MAAQ,OAAA,IAAA,GAAO,CAAE,CAAA,KAAA,EAAU,EAAA;AACzB,QAAI,IAAA;AACF,UAAI,IAAA,MAAA,GAAS,KAAK,MAAO,EAAA;AACzB,UAAI,IAAA,SAAA,CAAU,MAAM,CAAG,EAAA;AACrB,YAAA,MAAA,GAAS,MAAM,MAAA;AAAA;AAGjB,UAAA,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA,iBACZ,KAAO,EAAA;AACd,UAAA,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA;AACnB;AAGF,MAAS,MAAA,GAAA,KAAA;AACT,MAAO,MAAA,EAAA;AAAA;AACT,GACF;AAEA,EAAA,OAAO,MAAO,CAAA,MAAA;AAAA,IACZ,CAAI,QAAmB,GAAc,KAAA;AACnC,MAAA,OAAO,IAAI,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACzC,QAAA,CAAA,CAAE,KAAK,EAAE,MAAA,EAAQ,OAAS,EAAA,MAAA,EAAQ,KAAK,CAAA;AACvC,QAAI,GAAA,EAAA;AAAA,OACL,CAAA;AAAA,KACH;AAAA,IACA;AAAA,MACE,KAAQ,GAAA;AACN,QAAA,CAAA,CAAE,MAAS,GAAA,CAAA;AAAA,OACb;AAAA,MAEA,QAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAQ,EAAA;AACX,UAAA,OAAO,QAAQ,OAAQ,EAAA;AAAA;AAGzB,QAAO,OAAA,IAAI,OAAc,CAAA,CAAC,OAAY,KAAA;AACpC,UAAA,mBAAA,CAAoB,IAAI,OAAO,CAAA;AAAA,SAChC,CAAA;AAAA,OACH;AAAA,MAEA,IAAI,IAAO,GAAA;AACT,QAAA,OAAO,CAAE,CAAA,MAAA;AAAA,OACX;AAAA,MAEA,OAAU,GAAA;AACR,QAAO,OAAA,CAAA,CAAE,GAAI,CAAA,CAAC,IAAS,KAAA,IAAA,CAAK,GAAG,CAAA,CAAE,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,KAAM,SAAS,CAAA;AAAA;AAChE;AACF,GACF;AACF;;ACtEgB,SAAA,eAAA,CAAmB,OAAiB,MAAwC,EAAA;AAC1F,EAAA,IAAI,MAAS,GAAA,KAAA;AACb,EAAM,MAAA,IAAA,GAAO,IAAI,KAA0E,EAAA;AAC3F,EAAI,IAAA,KAAA;AACJ,EAAM,MAAA,aAAA,GAAgB,IAAI,QAAS,EAAA;AACnC,EAAM,MAAA,YAAA,GAAe,IAAI,QAAS,EAAA;AAClC,EAAM,MAAA,EAAA,GAAK,IAAI,eAAgB,EAAA;AAC/B,EAAI,IAAA,UAAA;AACJ,EAAA,MAAM,IAAI,KAAM,EAAA;AAChB,EAAA,CAAA,CAAE,MAAM,YAAY,CAAA;AAEpB,EAAM,MAAA,YAAA,GAAe,KAAM,CAAA,SAAA,CAAU,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,KAAA,CAAM,UAAW,EAAA;AACjB,MAAA;AAAA;AAGF,IAAS,MAAA,GAAA,IAAA;AAET,IAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,MAAA,GAAA,CAAI,EAAG,EAAA;AAAA;AAGT,IAAA,OAAO,MAAM;AACX,MAAS,MAAA,GAAA,KAAA;AAET,MAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,QAAA,GAAA,CAAI,GAAI,EAAA;AAAA;AAGV,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,UAAA,CAAW,MAAS,GAAA,KAAA;AACpB,QAAA,UAAA,CAAW,MAAS,IAAA;AACpB,QAAA,CAAA,CAAE,KAAM,EAAA;AAER,QAAA,IAAI,WAAW,KAAO,EAAA;AACpB,UAAC,KAAgC,CAAA,KAAA,CAAM,GAAI,CAAA,CAAC,KAAW,MAAA;AAAA,YACrD,GAAG,KAAA;AAAA,YACH,WAAa,EAAA,KAAA;AAAA,YACb,OAAS,EAAA;AAAA,WACT,CAAA,CAAA;AAAA;AACJ;AACF,KACF;AAAA,GACD,CAAA;AAED,EAAA,SAAS,IAAO,GAAe,EAAA;AAC7B,IAAMA,MAAAA,MAAAA,GAAQ,IAAI,GAAI,EAAA;AACtB,IAAI,IAAA,MAAA;AAEJ,IAAA,MAAM,KAAK,MAAM;AACf,MAAW,MAAA,KAAA,GAAA,CAAI,UAAU,MAAM,KAAA,CAAM,YAAc,EAAA,EAAE,MAAQ,EAAA,KAAA,EAAO,CAAA;AAAA,KACtE;AAEA,IAAA,MAAM,MAAM,MAAM;AAChB,MAAS,MAAA,IAAA;AACT,MAAS,MAAA,GAAA,SAAA;AAAA,KACX;AAEA,IAAK,IAAA,CAAA,IAAA,CAAK,EAAE,KAAO,EAAA,GAAA,EAAK,OAAAA,MAAO,EAAA,EAAA,EAAI,KAAK,CAAA;AAExC,IAAA,IAAI,MAAQ,EAAA;AACV,MAAG,EAAA,EAAA;AAAA;AAGL,IAAOA,OAAAA,MAAAA;AAAA;AAGT,EAAA,eAAe,QAAQ,gBAAiC,EAAA;AACtD,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAa,UAAA,GAAA,EAAE,QAAQ,KAAM,EAAA;AAC7B,MAAA;AAAA;AAGF,IAAA,MAAM,OAAuC,GAAA;AAAA,MAC3C,IAAI,MAAQ,EAAA;AACV,QAAA,CAAA,CAAE,MAAM;AACN,UAAI,IAAA,CAAC,YAAY,MAAQ,EAAA;AACvB,YAAA;AAAA;AAGF,UAAQ,KAAA,GAAA,MAAA;AACR,UAAO,MAAA,EAAA;AAAA,SACR,CAAA;AAAA,OACH;AAAA,MACA,YAAY,MAAQ,EAAA;AAClB,QAAA,CAAA,CAAE,YAAY;AACZ,UAAI,IAAA,CAAC,YAAY,MAAQ,EAAA;AACvB,YAAA;AAAA;AAGF,UAAA,IAAI,kBAAkB,QAAU,EAAA;AAC9B,YAAA,MAAM,eAAe,MAAM,KAAA;AAE3B,YAAI,IAAA,CAAC,YAAY,MAAQ,EAAA;AACvB,cAAA;AAAA;AAGF,YAAI,IAAA;AACF,cAAA,MAAA,GAAS,OAAO,YAAY,CAAA;AAAA,qBACrB,KAAO,EAAA;AACd,cAAQ,KAAA,GAAA,gBAAA,CAAiB,OAAO,KAAK,CAAA;AACrC,cAAO,MAAA,EAAA;AACP,cAAA,UAAA,CAAW,MAAS,GAAA,KAAA;AACpB,cAAA,UAAA,CAAW,MAAS,IAAA;AACpB,cAAA;AAAA;AACF;AAGF,UAAQ,KAAA,GAAA,gBAAA,CAAiB,QAAQ,MAAM,CAAA;AACvC,UAAO,MAAA,EAAA;AAAA,SACR,CAAA;AAAA,OACH;AAAA,MACA,YAAY,KAAO,EAAA;AACjB,QAAA,CAAA,CAAE,MAAM;AACN,UAAI,IAAA,CAAC,YAAY,MAAQ,EAAA;AACvB,YAAA;AAAA;AAGF,UAAA,UAAA,CAAW,MAAS,GAAA,KAAA;AACpB,UAAA,UAAA,CAAW,MAAS,IAAA;AAEpB,UAAA,IAAI,WAAW,KAAO,EAAA;AACpB,YAAC,KAAA,CAAgC,MAAM,GAAI,CAAA;AAAA,cACzC,MAAQ,EAAA,OAAA;AAAA,cACR,KAAA;AAAA,cACA,WAAa,EAAA,KAAA;AAAA,cACb,UAAY,EAAA,KAAA;AAAA,cACZ,OAAS,EAAA;AAAA,aACV,CAAA;AAAA;AAGH,UAAQ,KAAA,GAAA,gBAAA,CAAiB,OAAO,KAAK,CAAA;AACrC,UAAO,MAAA,EAAA;AAAA,SACR,CAAA;AAAA,OACH;AAAA,MACA,kBAAkB,WAAa,EAAA;AAC7B,QAAA,IAAI,WAAa,EAAA;AACf,UAAA,aAAA,CAAc,OAAQ,EAAA;AAAA;AAGxB,QAAA,CAAA,CAAE,MAAM;AACN,UAAI,IAAA,CAAC,YAAY,MAAQ,EAAA;AACvB,YAAA;AAAA;AAGF,UAAA,IAAI,WAAW,KAAO,EAAA;AACpB,YAAC,KAAgC,CAAA,KAAA,CAAM,GAAI,CAAA,aAAA,EAAe,WAAW,CAAA;AAAA;AACvE,SACD,CAAA;AAAA,OACH;AAAA,MACA,KAAQ,GAAA;AACN,QAAA,IAAI,YAAY,MAAQ,EAAA;AACtB,UAAA,KAAA,CAAM,UAAW,EAAA;AAAA;AACnB;AACF,KACF;AAEA,IAAa,UAAA,GAAA,EAAE,QAAQ,IAAK,EAAA;AAC5B,IAAI,IAAA,OAAA,GAA8B,iBAAiB,OAAc,CAAA;AAEjE,IAAA,UAAA,CAAW,SAAS,MAAM;AACxB,MAAU,OAAA,IAAA;AACV,MAAU,OAAA,GAAA,SAAA;AAAA,KACZ;AAEA,IAAI,IAAA,CAAC,WAAW,MAAQ,EAAA;AACtB,MAAA,UAAA,CAAW,MAAO,EAAA;AAAA;AAGpB,IAAO,OAAA,aAAA;AAAA;AAGT,EAAI,IAAA,KAAA,CAAM,kBAAkB,QAAU,EAAA;AACpC,IAAI,IAAA;AACF,MAAQ,KAAA,GAAA,KAAA,CAAM,OAAO,EAAE,MAAA,EAAQ,GAAG,MAAQ,EAAA,GAAA,EAAK,SAAS,CAAA;AAAA,aACjD,KAAO,EAAA;AACd,MAAQ,KAAA,GAAA,gBAAA,CAAiB,OAAO,KAAK,CAAA;AAErC,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,UAAA,CAAW,MAAS,GAAA,KAAA;AACpB,QAAA,UAAA,CAAW,MAAS,IAAA;AACpB,QAAA,CAAA,CAAE,KAAM,EAAA;AAAA;AACV;AACF,GACK,MAAA;AACL,IAAA,KAAA,GAAQ,KAAM,CAAA,MAAA;AAAA;AAGhB,EAAI,IAAA,SAAA,CAAU,KAAK,CAAG,EAAA;AACpB,IAAM,KAAA,CAAA,OAAA,CAAQ,MAAM,YAAa,CAAA,OAAA,EAAS,CAAE,CAAA,KAAA,CAAM,MAAM,SAAS,CAAA;AAAA,GAC5D,MAAA;AACL,IAAA,YAAA,CAAa,OAAQ,EAAA;AAAA;AAGvB,EAAA,SAAS,KAAQ,GAAA;AACf,IAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,MAAI,IAAA,CAAC,UAAU,GAAI,CAAA,KAAA,CAAM,KAAO,EAAA,GAAA,CAAI,KAAK,CAAG,EAAA;AAC1C,QAAA,KAAA,CAAM,UAAW,EAAA;AACjB,QAAA;AAAA;AACF;AACF;AAGF,EAAA,SAAS,IAAO,GAAA;AACd,IAAa,YAAA,EAAA;AACb,IAAA,YAAA,CAAa,OAAQ,EAAA;AACrB,IAAA,aAAA,CAAc,OAAQ,EAAA;AACtB,IAAA,EAAA,CAAG,KAAM,EAAA;AAET,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,UAAA,CAAW,MAAS,GAAA,KAAA;AACpB,MAAA,UAAA,CAAW,MAAS,IAAA;AACpB,MAAA,CAAA,CAAE,KAAM,EAAA;AAAA;AACV;AAGF,EAAA,SAAS,uBAAuB,SAAqB,EAAA;AACnD,IAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,MAAI,GAAA,CAAA,KAAA,CAAM,WAAW,SAAS,CAAA;AAAA;AAChC;AAGF,EAAO,OAAA;AAAA,IACL,IAAI,KAAQ,GAAA;AACV,MAAO,OAAA,KAAA;AAAA,KACT;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,YAAe,KAA8B,EAAA;AAC3D,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,OAAO,MAAM,SAAA;AAAA,IACb,MAAM,MAAM,SAAA;AAAA,IACZ,wBAAwB,MAAM;AAAA,GAChC;AACF;;AC7PO,SAAS,aAAmB,QAAyD,EAAA;AAC1F,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,OAAO,CAAC,CAAM,KAAA,CAAA;AAAA;AAGhB,EAAA,IAAI,oBAAoB,QAAU,EAAA;AAChC,IAAO,OAAA,QAAA;AAAA;AAGT,EAAA,OAAO,CAAC,CAAA,KAAM,GAAI,CAAA,CAAA,EAAG,QAAe,CAAA;AACtC;;ACbO,MAAM,iBAAwC,QAAS,CAAA;AAAA,EAC5D,YAAsB,KAA6B,EAAA;AACjD,IAAA,KAAA,CAAM,WAAW,4BAA4B,CAAA;AADzB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAIpB,IAAO,OAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA;AAEzB;;ACGgB,SAAA,QAAA,CACd,QACA,OAMA,EAAA;AACA,EAAM,MAAA,IAAA,GACJ,OAAO,OAAA,KAAY,QAAY,IAAA,MAAA,IAAU,OACrC,GAAA,YAAA,CAAa,OAAQ,CAAA,IAAI,CACzB,GAAA,YAAA,CAAa,OAAO,CAAA;AAE1B,EAAA,MAAM,OACJ,GAAA,OAAO,OAAY,KAAA,QAAA,IAAY,SAAa,IAAA,OAAA,IAAW,OAAQ,CAAA,OAAA,KAAY,SACvE,GAAA,YAAA,CAAa,OAAQ,CAAA,OAAO,CAC5B,GAAA,SAAA;AAEN,EAAI,IAAA,GAAA;AACJ,EAAI,IAAA,OAAA;AACJ,EAAI,IAAA,cAAA;AAEJ,EAAA,SAAS,KAAQ,GAAA;AACf,IAAA,IAAI,YAAY,SAAW,EAAA;AACzB,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAGtB,IAAM,GAAA,IAAA;AAAA;AAGR,EAAA,SAAS,MAAS,GAAA;AAChB,IAAA,IAAI,YAAY,SAAW,EAAA;AACzB,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAGtB,IAAM,GAAA,GAAA,SAAA;AACN,IAAU,OAAA,GAAA,SAAA;AACV,IAAiB,cAAA,GAAA,SAAA;AAAA;AAGnB,EAAA,SAAS,WAAc,GAAA;AACrB,IAAA,OAAO,OAAY,KAAA,SAAA;AAAA;AAGrB,EAAA,SAASC,aAAY,IAAY,EAAA;AAC/B,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AACrB,IAAmB,cAAA,KAAA,GAAA;AAEnB,IAAA,MAAM,WAAW,IAAK,CAAA,GAAA;AAAA;AAAA,MAEpB,GAAM,GAAA,IAAA;AAAA,MACN,cAAA,IAAkB,WAAW,MAAO,CAAA,iBAAA;AAAA,KACtC;AAEA,IAAA,IAAI,YAAY,SAAW,EAAA;AACzB,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAGtB,IAAA,GAAA,GAAM,MAAM;AACV,MAAM,GAAA,GAAA,SAAA;AACN,MAAU,OAAA,GAAA,SAAA;AACV,MAAiB,cAAA,GAAA,SAAA;AAEjB,MAAA,MAAA,CAAO,GAAG,IAAI,CAAA;AAAA,KAChB;AAEA,IAAU,OAAA,GAAA,UAAA,CAAW,GAAK,EAAA,QAAA,GAAW,GAAG,CAAA;AAAA;AAG1C,EAAA,OAAO,OAAO,MAAOA,CAAAA,SAAAA,EAAU,EAAE,KAAO,EAAA,MAAA,EAAQ,aAAa,CAAA;AAC/D;;AC9EA,SAAwB,WAAW,OAAmC,EAAA;AACpE,EAAA,OAAO,MAAO,CAAA,MAAA;AAAA,IACZ,OAAA;AAAA,IACA,MAAA,CAAO,UAAU,EAAE,CAAC,OAAO,OAAO,GAAG,OAAQ,EAAA,GAAI;AAAC,GACpD;AACF;;ACRO,SAAS,aAAa,KAAsB,EAAA;AACjD,EAAA,UAAA,CAAW,MAAM;AACf,IAAM,MAAA,KAAA;AAAA,GACP,CAAA;AACH;;ACFO,MAAM,2BAA2B,KAAM,CAAA;AAAA,EAC5C,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,WAAW,CAAA;AAAA;AAErB;AAEO,MAAM,0BAA6B,OAAW,CAAA;AAAA,EAGnD,YACE,QAKA,EAAA;AACA,IAAA,QAAA,CAAS,iBAAiB,CAAA;AAC1B,IAAM,MAAA,eAAA,GAAkB,IAAI,eAAgB,EAAA;AAE5C,IAAM,KAAA,CAAA,CAAC,SAAS,MAAW,KAAA;AACzB,MAAS,QAAA,CAAA,OAAA,EAAS,MAAQ,EAAA,eAAA,CAAgB,MAAM,CAAA;AAEhD,MAAgB,eAAA,CAAA,MAAA,CAAO,gBAAiB,CAAA,OAAA,EAAS,MAAM;AACrD,QAAO,MAAA,CAAA,eAAA,CAAgB,OAAO,MAAM,CAAA;AAAA,OACrC,CAAA;AAAA,KACF,CAAA;AAED,IAAA,IAAA,CAAK,eAAkB,GAAA,eAAA;AAAA;AACzB,EAEA,MAAO,CAAA,MAAA,GAAc,IAAI,kBAAA,EAA4B,EAAA;AACnD,IAAK,IAAA,CAAA,eAAA,CAAgB,MAAM,MAAM,CAAA;AAAA;AAErC;;AC9BA,SAAS,kBAA8C,IAAS,EAAA;AAC9D,EAAO,OAAA,SAAS,eAEX,IACgD,EAAA;AACnD,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,EAAA,CAAE,KAAM,EAAA;AAClC,IAAA,MAAM,MAAU,GAAA,QAAA,CAAS,IAAI,CAAA,CAAgB,GAAI,IAAY,CAAA;AAC7D,IAAA,IAAA,CAAK,IAAI,QAAQ,CAAA;AACjB,IAAO,OAAA,MAAA;AAAA,GACT;AACF;AACO,MAAM,YAOT,GAAA;AAAA,EACF,MAAA,oCAA0C,QAAQ,CAAA;AAAA,EAClD,IAAA,oCAAwC,MAAM,CAAA;AAAA,EAC9C,GAAA,oCAAuC,KAAK,CAAA;AAAA,EAC5C,KAAA,oCAAyC,OAAO,CAAA;AAAA,EAChD,OAAA,oCAA2C,SAAS,CAAA;AAAA,EACpD,OAAA,oCAA2C,SAAS,CAAA;AAAA,EACpD,IAAA,oCAAwC,MAAM;AAChD;AAEO,MAAM,aAAgB,GAAA;AAAA,EAC3B,OAEE,GACM,EAAA;AACN,IAAA,MAAM,IAAO,GAAA,EAAE,GAAG,IAAA,CAAK,KAAM,EAAA;AAC7B,IAAA,OAAO,KAAK,GAAG,CAAA;AACf,IAAA,IAAA,CAAK,IAAI,IAAI,CAAA;AAAA,GACf;AAAA,EAEA,KAEQ,GAAA;AACN,IAAK,IAAA,CAAA,GAAA,CAAI,EAAO,CAAA;AAAA;AAEpB;AAEO,MAAM,UAAa,GAAA;AAAA,EACxB,OAAqC,GAAiB,EAAA;AACpD,IAAA,MAAM,MAAS,GAAA,IAAI,GAAI,CAAA,IAAA,CAAK,KAAK,CAAA;AACjC,IAAM,MAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA;AAChC,IAAA,IAAA,CAAK,IAAI,MAAM,CAAA;AACf,IAAO,OAAA,MAAA;AAAA,GACT;AAAA,EAEA,KAA0C,GAAA;AACxC,IAAK,IAAA,CAAA,GAAA,iBAAQ,IAAA,GAAA,EAAK,CAAA;AAAA;AAEtB;AAEO,MAAM,UAAa,GAAA;AAAA,EACxB,IAA4B,KAAgB,EAAA;AAC1C,IAAA,MAAM,MAAS,GAAA,IAAI,GAAI,CAAA,IAAA,CAAK,KAAK,CAAA;AACjC,IAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAChB,IAAA,IAAA,CAAK,IAAI,MAAM,CAAA;AAAA,GACjB;AAAA,EAEA,OAA+B,KAAgB,EAAA;AAC7C,IAAA,MAAM,MAAS,GAAA,IAAI,GAAI,CAAA,IAAA,CAAK,KAAK,CAAA;AACjC,IAAA,MAAA,CAAO,OAAO,KAAK,CAAA;AACnB,IAAA,IAAA,CAAK,IAAI,MAAM,CAAA;AAAA,GACjB;AAAA,EAEA,KAAoC,GAAA;AAClC,IAAK,IAAA,CAAA,GAAA,iBAAQ,IAAA,GAAA,EAAK,CAAA;AAAA;AAEtB;;AC5EgB,SAAA,QAAA,CACd,QACA,QACyB,EAAA;AACzB,EAAM,MAAA,EAAA,GAAK,aAAa,QAAQ,CAAA;AAEhC,EAAA,IAAI,CAAI,GAAA,CAAA;AACR,EAAI,IAAA,OAAA;AAEJ,EAAA,OAAO,IAAI,IAAe,KAAA;AACxB,IAAA,IAAI,YAAY,SAAW,EAAA;AACzB,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAGtB,IAAA,MAAM,EAAK,GAAA,CAAA,GAAI,EAAK,GAAA,IAAA,CAAK,GAAI,EAAA;AAC7B,IAAA,IAAI,MAAM,CAAG,EAAA;AACX,MAAA,MAAA,CAAO,GAAG,IAAI,CAAA;AACd,MAAA,CAAA,GAAI,KAAK,GAAI,EAAA;AACb,MAAA;AAAA;AAGF,IAAA,OAAA,GAAU,WAAW,MAAM;AACzB,MAAA,MAAA,CAAO,GAAG,IAAI,CAAA;AACd,MAAA,CAAA,GAAI,KAAK,GAAI,EAAA;AAAA,OACZ,EAAE,CAAA;AAAA,GACP;AACF;;ACoCA,SAAS,IAAO,GAAA;AACd,EAAO,OAAA,SAAA;AACT;AAEO,MAAM,cAAiB,QAAmB,CAAA;AAAA,EAuB/C,WAAA,CACkB,QACA,OAA2B,GAAA,IAC3B,WAKG,EAAA,KAAA,GAAiC,MAAM,SAC1D,EAAA;AACA,IAAA,KAAA,CAAM,KAAK,CAAA;AATK,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AAKG,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAjBrB,IAAU,IAAA,CAAA,SAAA,uBAAwC,GAAI,EAAA;AAEtD,IAAU,IAAA,CAAA,OAAA,uBAGF,GAAI,EAAA;AAEZ,IAAA,IAAA,CAAU,WAAW,EAAC;AAapB,IAAA,QAAA,CAAS,KAAK,CAAA;AAEd,IAAI,IAAA,OAAO,WAAW,UAAY,EAAA;AAChC,MAAA,IAAA,CAAK,eAAkB,GAAA,IAAA,CAAK,YAAe,GAAA,WAAA,CAAY,MAAM,CAAA;AAAA;AAG/D,IAAA,KAAA,MAAW,IAAQ,IAAA,KAAA,CAAM,KAAS,IAAA,EAAI,EAAA;AACpC,MAAA,IAAA,CAAK,KAAM,CAAA,IAAA,EAAM,CAAC,IAAI,CAAC,CAAA;AAAA;AAGzB,IAAI,IAAA,OAAA,CAAQ,kBAAkB,QAAU,EAAA;AACtC,MAAK,IAAA,CAAA,SAAA,CAAU,QAAQ,MAAM,CAAA;AAAA,KAC/B,MAAA,IAAW,QAAQ,MAAQ,EAAA;AACzB,MAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,MAAA,CAAO,MAAQ,EAAA,OAAA,CAAQ,OAAO,MAAM,CAAA;AAAA;AAC7D;AACF,EA9CA,OAAO,QAAQ,IAAqD,EAAA;AAClE,IAAK,IAAA,CAAA,KAAA,yBAAc,GAAI,EAAA;AACvB,IAAK,IAAA,CAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACnB,IAAA,OAAO,WAAW,MAAM,IAAA,CAAK,KAAO,EAAA,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA;AAClD,EA4CA,GAAS,GAAA;AACP,IAAA,IAAA,CAAK,iBAAiB,KAAM,EAAA;AAE5B,IAAI,IAAA,CAAC,KAAK,eAAiB,EAAA;AACzB,MAAA,IAAA,CAAK,eAAkB,GAAA,eAAA,CAAgB,IAAM,EAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AAG1D,IAAA,OAAO,KAAK,eAAgB,CAAA,KAAA;AAAA;AAC9B,EAMA,OAAO,IAAmB,EAAA;AACxB,IAAA,MAAM,OAAY,IAAK,CAAA,MAAA,GAAS,IAAI,IAAK,CAAA,CAAC,IAAI,EAAC;AAC/C,IAAI,IAAA,MAAA,GAAsB,KAAK,MAAS,GAAA,CAAA,GAAI,KAAK,CAAC,CAAA,GAAI,KAAK,CAAC,CAAA;AAE5D,IAAA,IAAI,kBAAkB,QAAU,EAAA;AAC9B,MAAM,MAAA,MAAA,GAAS,KAAK,GAAI,EAAA;AACxB,MAAM,MAAA,WAAA,GAAc,GAAI,CAAA,MAAA,EAAQ,IAAI,CAAA;AACpC,MAAM,MAAA,UAAA,GAAa,OAAO,WAAW,CAAA;AACrC,MAAS,MAAA,GAAA,GAAA,CAAI,MAAQ,EAAA,IAAA,EAAM,UAAU,CAAA;AAAA,KACvC,MAAA,IAAW,IAAK,CAAA,MAAA,GAAS,CAAG,EAAA;AAC1B,MAAA,MAAA,GAAS,GAAI,CAAA,IAAA,CAAK,GAAI,EAAA,EAAG,MAAM,MAAM,CAAA;AAAA;AAGvC,IAAA,IAAI,KAAK,WAAa,EAAA;AACpB,MAAK,IAAA,CAAA,WAAA,CAAY,QAAQ,MAAM,CAAA;AAC/B,MAAA;AAAA;AAGF,IAAA,IAAA,CAAK,iBAAiB,IAAK,EAAA;AAC3B,IAAK,IAAA,CAAA,eAAA,GAAkB,YAAY,MAAM,CAAA;AACzC,IAAA,IAAA,CAAK,MAAO,EAAA;AAAA;AACd,EAEA,WAAW,SAA2B,EAAA;AACpC,IAAA,IAAI,SAAW,EAAA;AACb,MAAK,IAAA,CAAA,eAAA,EAAiB,uBAAuB,SAAS,CAAA;AAAA;AAGxD,IAAA,IAAA,CAAK,iBAAiB,IAAK,EAAA;AAC3B,IAAA,IAAA,CAAK,kBAAkB,IAAK,CAAA,YAAA;AAC5B,IAAA,IAAA,CAAK,MAAO,EAAA;AAAA;AACd,EAEA,SAAA,CAAU,UAAuB,OAA8C,EAAA;AAC7E,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,MAAS,GAAA,IAAA;AAAA,MACT,QAAU,EAAA,cAAA;AAAA,MACV,QAAU,EAAA,cAAA;AAAA,MACV,MAAA,GAAS,IAAK,CAAA,OAAA,CAAQ,MAAU,IAAA;AAAA,KAClC,GAAI,WAAW,EAAC;AAEhB,IAAA,IAAI,OAAU,GAAA,KAAA;AACd,IAAI,IAAA,aAAA;AAEJ,IAAA,IAAI,gBAAgB,MAAM;AACxB,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAA;AAAA;AAGF,MAAM,MAAA,KAAA,GAAQ,UAAU,IAAK,CAAA,eAAA,GAAkB,EAAE,KAAO,EAAA,IAAA,CAAK,KAAM,EAAA;AAEnE,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAA;AAAA;AAGF,MAAA,IAAI,iBAAiB,MAAO,CAAA,KAAA,CAAM,KAAO,EAAA,aAAA,CAAc,KAAK,CAAG,EAAA;AAC7D,QAAA;AAAA;AAGF,MAAA,MAAM,iBAAiB,aAAe,EAAA,KAAA;AACtC,MAAA,aAAA,GAAgB,KAAK,eAAmB,IAAA,EAAE,KAAO,EAAA,IAAA,CAAK,iBAAiB,KAAM,EAAA;AAE7E,MAAI,IAAA;AACF,QAAS,QAAA,CAAA,KAAA,CAAM,OAAO,cAAc,CAAA;AAAA,eAC7B,KAAO,EAAA;AACd,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA;AACpB,KACF;AAEA,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAgB,aAAA,GAAA,QAAA,CAAS,eAAe,cAAc,CAAA;AAAA,eAC7C,cAAgB,EAAA;AACzB,MAAgB,aAAA,GAAA,QAAA,CAAS,eAAe,cAAc,CAAA;AAAA;AAGxD,IAAA,IAAA,CAAK,SAAU,CAAA,GAAA,CAAI,aAAe,EAAA,CAAC,OAAO,CAAA;AAC1C,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,IAAA,CAAK,WAAY,EAAA;AAAA;AAGnB,IAAU,OAAA,GAAA,IAAA;AAEV,IAAA,IAAI,MAAQ,EAAA;AACV,MAAc,aAAA,EAAA;AAAA,KACT,MAAA;AACL,MAAA,aAAA,GAAgB,OACZ,GAAA,IAAA,CAAK,eAAmB,IAAA,EAAE,KAAO,EAAA,IAAA,CAAK,eAAgB,CAAA,KAAA,EACtD,GAAA,EAAE,KAAO,EAAA,IAAA,CAAK,KAAM,EAAA;AAAA;AAG1B,IAAA,OAAO,WAAW,MAAM;AACtB,MAAA,IAAI,KAAK,SAAU,CAAA,MAAA,CAAO,aAAa,CAAA,IAAK,CAAC,OAAS,EAAA;AACpD,QAAA,IAAA,CAAK,aAAc,EAAA;AAAA;AACrB,KACD,CAAA;AAAA;AACH,EAWA,QACK,IACqB,EAAA;AACxB,IAAA,MAAM,YAAY,IAAK,CAAA,CAAC,aAAa,QAAW,GAAA,IAAA,CAAK,CAAC,CAAI,GAAA,OAAA;AAC1D,IAAM,MAAA,OAAA,GAAU,KAAK,CAAC,CAAA,YAAa,WAAW,IAAK,CAAA,CAAC,CAAI,GAAA,IAAA,CAAK,CAAC,CAAA;AAE9D,IAAA,OAAO,IAAI,iBAAA,CAAqB,CAAC,OAAA,EAAS,QAAQ,MAAW,KAAA;AAC3D,MAAA,IAAI,OAAU,GAAA,KAAA;AACd,MAAI,IAAA,KAAA;AAEJ,MAAA,MAAM,SAAS,IAAK,CAAA,SAAA;AAAA,QAClB,CAAC,KAAU,KAAA;AACT,UAAA,IAAI,OAAW,IAAA,CAAC,SAAU,CAAA,KAAK,CAAG,EAAA;AAChC,YAAA;AAAA;AAGF,UAAA,OAAA,CAAQ,KAAK,CAAA;AACb,UAAU,OAAA,GAAA,IAAA;AACV,UAAA,IAAI,KAAO,EAAA;AACT,YAAA,YAAA,CAAa,KAAK,CAAA;AAAA;AAEpB,UAAW,UAAA,CAAA,MAAM,QAAQ,CAAA;AAAA,SAC3B;AAAA,QACA;AAAA,UACE,MAAA,EAAQ,CAAC,CAAC;AAAA;AACZ,OACF;AAEA,MAAA,IAAI,OAAS,EAAA;AACX,QAAA;AAAA;AAGF,MAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM,CAAA;AAEvC,MAAS,OAAA,EAAA,MAAA,EAAQ,gBAAiB,CAAA,OAAA,EAAS,MAAM;AAC/C,QAAO,MAAA,EAAA;AACP,QAAA,MAAA,CAAO,QAAQ,MAAQ,EAAA,MAAA,IAAU,IAAI,KAAA,CAAM,WAAW,CAAC,CAAA;AAAA,OACxD,CAAA;AAED,MAAI,IAAA,OAAA,EAAS,YAAY,SAAW,EAAA;AAClC,QAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,UAAO,MAAA,EAAA;AACP,UAAO,MAAA,CAAA,IAAI,KAAM,CAAA,SAAS,CAAC,CAAA;AAAA,SAC1B,EAAA,YAAA,CAAa,OAAQ,CAAA,OAAO,CAAC,CAAA;AAAA;AAClC,KACD,CAAA;AAAA;AACH,EAMA,GAAA,CAAI,cAAoD,IAAyB,EAAA;AAC/E,IAAA,MAAM,OACJ,GAAA,SAAA,YAAqB,QACjB,GAAA,IAAA,CAAK,CAAC,CAAA,GACN,CAAC,KAAA,KAAU,CAAC,KAAA,KAAU,GAAI,CAAA,KAAA,EAAO,WAAkB,KAAK,CAAA;AAE9D,IAAM,MAAA,QAAA,GAAW,aAAa,SAAS,CAAA;AAEvC,IAAA,MAAM,WAAc,GAAA;AAAA,MAClB,KAAO,EAAA,IAAA,CAAK,WAAc,GAAA,IAAA,CAAK,YAAY,KAAQ,GAAA,IAAA;AAAA,MACnD,SAAA,EAAW,IAAK,CAAA,WAAA,GAAc,CAAC,GAAG,IAAK,CAAA,WAAA,CAAY,SAAW,EAAA,SAAS,CAAI,GAAA,CAAC,SAAS,CAAA;AAAA,MAErF,OAAA,EAAS,CAAC,KAAe,KAAA;AACvB,QAAA,IAAI,CAAC,OAAS,EAAA;AACZ,UAAA,MAAM,IAAI,SAAA;AAAA,YACR;AAAA,WACF;AAAA;AAGF,QAAI,IAAA,MAAA,GAAS,QAAQ,KAAK,CAAA;AAE1B,QAAA,IAAI,kBAAkB,QAAU,EAAA;AAC9B,UAAS,MAAA,GAAA,MAAA,CAAO,IAAK,CAAA,GAAA,EAAK,CAAA;AAAA;AAG5B,QAAA,IAAI,KAAK,WAAa,EAAA;AACpB,UAAK,IAAA,CAAA,WAAA,CAAY,QAAQ,MAAM,CAAA;AAAA,SAC1B,MAAA;AACL,UAAA,IAAA,CAAK,IAAI,MAAM,CAAA;AAAA;AACjB;AACF,KACF;AAEA,IAAA,OAAO,IAAI,KAAA;AAAA,MACT,CAAC,EAAE,GAAA,EAAU,KAAA;AACX,QAAO,OAAA,QAAA,CAAS,GAAI,CAAA,IAAI,CAAC,CAAA;AAAA,OAC3B;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,SACE,CAAA,MAAA,EACA,MAA+B,GAAA,IAAA,CAAK,QAAQ,MAC1B,EAAA;AAClB,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,MAAQ,EAAA;AAAA,MACvB,MAAA,EAAQ,IAAK,CAAA,QAAA,EAAc,GAAA,MAAA,CAAO,KAAM,CAAA,IAAA,EAAM,CAAC,IAAI,CAAC,CAAA,IAAK,IAAQ,GAAA,SAAA;AAAA,MACjE,MAAQ,EAAA,MAAA,KAAW,SAAY,GAAA,YAAA,CAAa,MAAM,CAAI,GAAA;AAAA,KACvD,CAAA;AAED,IAAA,OAAO,WAAW,MAAM;AACtB,MAAM,MAAA,EAAE,QAAQ,OAAQ,EAAA,GAAI,KAAK,OAAQ,CAAA,GAAA,CAAI,MAAM,CAAA,IAAK,EAAC;AACzD,MAAS,MAAA,IAAA;AAET,MAAA,IAAI,YAAY,SAAW,EAAA;AACzB,QAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAGtB,MAAK,IAAA,CAAA,OAAA,CAAQ,OAAO,MAAM,CAAA;AAAA,KAC3B,CAAA;AAAA;AACH;AAAA,EAGA,QAAoB,GAAA;AAClB,IAAO,OAAA,CAAC,GAAG,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA,CAAE,KAAK,OAAO,CAAA;AAAA;AAClD,EAEU,WAAoB,GAAA;AAC5B,IAAI,IAAA,CAAC,GAAG,IAAA,CAAK,SAAU,CAAA,MAAA,EAAQ,CAAA,CAAE,MAAO,CAAA,OAAO,CAAE,CAAA,MAAA,GAAS,CAAG,EAAA;AAE7D,IAAW,KAAA,MAAA,CAAC,MAAQ,EAAA,EAAE,MAAQ,EAAA,MAAA,EAAQ,OAAQ,EAAC,CAAK,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,EAAW,EAAA;AAC1E,MAAA,IAAI,YAAY,SAAW,EAAA;AACzB,QAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAGtB,MAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,MAAQ,EAAA;AAAA,QACvB,MAAA,EAAQ,UAAU,MAAO,CAAA,KAAA,CAAM,MAAM,CAAC,IAAI,CAAC,CAAK,IAAA,IAAA;AAAA,QAChD,MAAA;AAAA,QACA,OAAS,EAAA;AAAA,OACV,CAAA;AAAA;AACH;AACF,EAEU,aAAsB,GAAA;AAC9B,IAAI,IAAA,CAAC,GAAG,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA,CAAE,IAAK,CAAA,OAAO,CAAG,EAAA;AAEhD,IAAW,KAAA,MAAA,CAAC,MAAQ,EAAA,EAAE,MAAQ,EAAA,MAAA,EAAQ,OAAQ,EAAC,CAAK,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,EAAW,EAAA;AAC1E,MAAA,IAAI,CAAC,MAAQ,EAAA;AACX,QAAS,MAAA,IAAA;AAET,QAAA,IAAI,YAAY,SAAW,EAAA;AACzB,UAAA,YAAA,CAAa,OAAO,CAAA;AAAA;AAGtB,QAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,MAAQ,EAAA;AAAA,UACvB,MAAQ,EAAA,SAAA;AAAA,UACR,MAAA;AAAA,UACA,OAAS,EAAA;AAAA,SACV,CAAA;AAED,QAAA;AAAA;AAGF,MAAA,MAAM,UACJ,GAAA,OAAA,KACC,MACG,GAAA,UAAA,CAAW,MAAM;AACf,QAAO,MAAA,EAAA;AACP,QAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,MAAQ,EAAA;AAAA,UACvB,MAAQ,EAAA,SAAA;AAAA,UACR,MAAA;AAAA,UACA,OAAS,EAAA;AAAA,SACV,CAAA;AAAA,OACH,EAAG,MAAM,CACT,GAAA,SAAA,CAAA;AAEN,MAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,MAAQ,EAAA;AAAA,QACvB,MAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAS,EAAA;AAAA,OACV,CAAA;AAAA;AACH;AACF,EAEU,MAAe,GAAA;AACvB,IAAA,MAAM,IAAI,EAAC;AACX,IAAA,IAAA,CAAK,QAAW,GAAA,CAAA;AAEhB,IAAA,MAAM,WAAW,CAAC,GAAG,IAAK,CAAA,SAAA,CAAU,MAAM,CAAA;AAC1C,IAAA,KAAA,MAAW,YAAY,QAAU,EAAA;AAC/B,MAAS,QAAA,EAAA;AACT,MAAI,IAAA,CAAA,KAAM,KAAK,QAAU,EAAA;AAAA;AAC3B;AAEJ;AAOA,SAAS,MAAA,CACP,cACA,OACyC,EAAA;AACzC,EAAA,OAAA,GAAU,EAAE,GAAG,WAAY,CAAA,cAAA,EAAgB,GAAG,OAAQ,EAAA;AAEtD,EAAA,MAAM,KAAQ,GAAA,IAAI,KAAM,CAAA,YAAA,EAAc,OAAO,CAAA;AAE7C,EAAA,IAAI,wBAAwB,QAAU,EAAA;AACpC,IAAO,OAAA,KAAA;AAAA;AAGT,EAAA,IAAI,UAAoC,OAAS,EAAA,OAAA;AAEjD,EAAA,IAAI,wBAAwB,GAAK,EAAA;AAC/B,IAAA,OAAA,GAAU,EAAE,GAAG,UAAY,EAAA,GAAG,OAAQ,EAAA;AAAA,GACxC,MAAA,IAAW,wBAAwB,GAAK,EAAA;AACtC,IAAA,OAAA,GAAU,EAAE,GAAG,UAAY,EAAA,GAAG,OAAQ,EAAA;AAAA,GAC7B,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,YAAY,CAAG,EAAA;AACtC,IAAA,OAAA,GAAU,EAAE,GAAG,YAAc,EAAA,GAAG,OAAQ,EAAA;AAAA,GAC1C,MAAA,IAAW,QAAS,CAAA,YAAY,CAAG,EAAA;AACjC,IAAA,OAAA,GAAU,EAAE,GAAG,aAAe,EAAA,GAAG,OAAQ,EAAA;AAAA;AAG3C,EAAA,MAAM,eAAe,MAAO,CAAA,WAAA;AAAA,IAC1B,MAAA,CAAO,OAAQ,CAAA,OAAA,IAAY,EAAgC,CACxD,CAAA,MAAA,CAAO,CAAC,CAAC,IAAI,CAAA,KAAM,EAAE,IAAA,IAAQ,KAAM,CAAA,CAAA,CACnC,GAAI,CAAA,CAAC,CAAC,IAAA,EAAM,MAAM,CAAA,KAAM,CAAC,IAAA,EAAO,MAAe,CAAA,IAAA,CAAK,KAAK,CAAC,CAAC;AAAA,GAChE;AAEA,EAAO,OAAA,MAAA,CAAO,MAAO,CAAA,KAAA,EAAO,YAAY,CAAA;AAC1C;AAEa,MAAA,WAAA,mBACY,MAAA,CAAA,MAAA,CAAO,MAAQ,EAAA;AAAA,EACpC,cAAgB,EAAA;AAAA,IACd,MAAQ,EAAA;AAAA;AAEZ,CAAC;;;;"}
|
package/dist/es/storeMethods.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { g as makeSelector, b as createStore } from './store.mjs';
|
|
2
2
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
|
-
import require$$0, { useRef, useCallback, useLayoutEffect, useDebugValue, createContext, useMemo,
|
|
4
|
-
import {
|
|
3
|
+
import require$$0, { useRef, useCallback, useLayoutEffect, useDebugValue, useContext, createContext, useMemo, useEffect } from 'react';
|
|
4
|
+
import { d as deepEqual, i as isPlainObject } from './propAccess.mjs';
|
|
5
5
|
import { s as simpleHash } from './hash.mjs';
|
|
6
6
|
|
|
7
7
|
const unwrapProxySymbol = /* @__PURE__ */ Symbol("unwrapProxy");
|
|
@@ -101,7 +101,7 @@ function requireUseSyncExternalStoreShim_production_min () {
|
|
|
101
101
|
if (hasRequiredUseSyncExternalStoreShim_production_min) return useSyncExternalStoreShim_production_min;
|
|
102
102
|
hasRequiredUseSyncExternalStoreShim_production_min = 1;
|
|
103
103
|
var e=require$$0;function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k="function"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c});},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c});})},[a]);p(d);return d}
|
|
104
|
-
function r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return !k(a,d)}catch(f){return
|
|
104
|
+
function r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return !k(a,d)}catch(f){return true}}function t(a,b){return b()}var u="undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement?t:q;useSyncExternalStoreShim_production_min.useSyncExternalStore=undefined!==e.useSyncExternalStore?e.useSyncExternalStore:u;
|
|
105
105
|
return useSyncExternalStoreShim_production_min;
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -381,8 +381,8 @@ function requireWithSelector_production_min () {
|
|
|
381
381
|
if (hasRequiredWithSelector_production_min) return withSelector_production_min;
|
|
382
382
|
hasRequiredWithSelector_production_min = 1;
|
|
383
383
|
var h=require$$0,n=requireShim();function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q="function"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;
|
|
384
|
-
withSelector_production_min.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue
|
|
385
|
-
u(function(){f.hasValue
|
|
384
|
+
withSelector_production_min.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:false,value:null};c.current=f;}else f=c.current;c=v(function(){function a(a){if(!c){c=true;d=a;a=l(a);if(undefined!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(undefined!==g&&g(b,e))return b;d=a;return k=e}var c=false,d,k,m=undefined===e?null:e;return [function(){return a(b())},null===m?undefined:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);
|
|
385
|
+
u(function(){f.hasValue=true;f.value=d;},[d]);w(d);return d};
|
|
386
386
|
return withSelector_production_min;
|
|
387
387
|
}
|
|
388
388
|
|
|
@@ -558,17 +558,25 @@ function requireWithSelector_development () {
|
|
|
558
558
|
return withSelector_development;
|
|
559
559
|
}
|
|
560
560
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
561
|
+
var hasRequiredWithSelector;
|
|
562
|
+
|
|
563
|
+
function requireWithSelector () {
|
|
564
|
+
if (hasRequiredWithSelector) return withSelector.exports;
|
|
565
|
+
hasRequiredWithSelector = 1;
|
|
566
|
+
|
|
567
|
+
if (process.env.NODE_ENV === 'production') {
|
|
568
|
+
withSelector.exports = requireWithSelector_production_min();
|
|
569
|
+
} else {
|
|
570
|
+
withSelector.exports = requireWithSelector_development();
|
|
571
|
+
}
|
|
572
|
+
return withSelector.exports;
|
|
565
573
|
}
|
|
566
574
|
|
|
567
|
-
var withSelectorExports =
|
|
575
|
+
var withSelectorExports = requireWithSelector();
|
|
568
576
|
|
|
569
577
|
function useStore(store, argument1, argument2) {
|
|
570
578
|
const selector = makeSelector(
|
|
571
|
-
typeof argument1 === "function" || typeof argument1 === "string" ? argument1 :
|
|
579
|
+
typeof argument1 === "function" || typeof argument1 === "string" ? argument1 : undefined
|
|
572
580
|
);
|
|
573
581
|
const allOptions = typeof argument1 === "object" ? argument1 : argument2 ?? {};
|
|
574
582
|
const lastEqualsRef = useRef();
|
|
@@ -633,7 +641,7 @@ function useStore(store, argument1, argument2) {
|
|
|
633
641
|
//
|
|
634
642
|
subscribe,
|
|
635
643
|
store.get,
|
|
636
|
-
|
|
644
|
+
undefined,
|
|
637
645
|
(x) => selector(x),
|
|
638
646
|
(_v, newValue) => lastEqualsRef.current?.(newValue) ?? false
|
|
639
647
|
);
|
|
@@ -659,8 +667,8 @@ function LoadingBoundary({
|
|
|
659
667
|
const store = useMemo(() => createStore(/* @__PURE__ */ new Set()), []);
|
|
660
668
|
const entries = useStore(store);
|
|
661
669
|
const isLoading = entries.size > 0 || isLoadingExternal;
|
|
662
|
-
const fallbackNode = isLoading ? typeof fallback === "function" ? fallback([...entries]) : fallback :
|
|
663
|
-
return /* @__PURE__ */ jsx(LoadingBoundaryContext.Provider, { value: store, children: fallbackNode !==
|
|
670
|
+
const fallbackNode = isLoading ? typeof fallback === "function" ? fallback([...entries]) : fallback : undefined;
|
|
671
|
+
return /* @__PURE__ */ jsx(LoadingBoundaryContext.Provider, { value: store, children: fallbackNode !== undefined ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
664
672
|
fallbackNode,
|
|
665
673
|
/* @__PURE__ */ jsx("div", { style: { display: "none" }, children })
|
|
666
674
|
] }) : children });
|
|
@@ -720,7 +728,7 @@ function useCache(cache, {
|
|
|
720
728
|
(state) => {
|
|
721
729
|
if (disabled) {
|
|
722
730
|
return Object.assign(
|
|
723
|
-
[
|
|
731
|
+
[undefined, undefined, false, false],
|
|
724
732
|
{ status: "pending", isUpdating: false, isStale: false, isConnected: false }
|
|
725
733
|
);
|
|
726
734
|
}
|
|
@@ -733,7 +741,7 @@ function useCache(cache, {
|
|
|
733
741
|
);
|
|
734
742
|
} catch (error) {
|
|
735
743
|
return Object.assign(
|
|
736
|
-
[
|
|
744
|
+
[undefined, error, state.isUpdating, isStale],
|
|
737
745
|
{
|
|
738
746
|
status: "error",
|
|
739
747
|
error,
|
|
@@ -747,7 +755,7 @@ function useCache(cache, {
|
|
|
747
755
|
{ ...options, withViewTransition, passive: passive || disabled }
|
|
748
756
|
);
|
|
749
757
|
useEffect(
|
|
750
|
-
() => rootCache.subscribe(() =>
|
|
758
|
+
() => rootCache.subscribe(() => undefined, { passive: passive || disabled }),
|
|
751
759
|
[rootCache, passive || disabled]
|
|
752
760
|
);
|
|
753
761
|
useLoadingBoundary(loadingBoundary && !disabled && result.status === "pending");
|
|
@@ -764,8 +772,8 @@ const cacheMethods = {
|
|
|
764
772
|
};
|
|
765
773
|
|
|
766
774
|
function useProp(store, argument1, argument2, argument3) {
|
|
767
|
-
const selector = typeof argument1 === "function" || typeof argument1 === "string" ? argument1 :
|
|
768
|
-
const updater = typeof argument2 === "function" ? argument2 :
|
|
775
|
+
const selector = typeof argument1 === "function" || typeof argument1 === "string" ? argument1 : undefined;
|
|
776
|
+
const updater = typeof argument2 === "function" ? argument2 : undefined;
|
|
769
777
|
const options = typeof argument1 === "object" ? argument1 : typeof argument2 === "object" ? argument2 : argument3;
|
|
770
778
|
if (selector) {
|
|
771
779
|
store = store.map(selector, updater);
|