@kdeveloper/kvark 0.9.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -7
- package/dist/{atom-BhfSS5xG.d.ts → atom-KKDuP3S2.d.ts} +2 -2
- package/dist/family.d.ts +46 -5
- package/dist/family.js +2 -2
- package/dist/index.d.ts +5 -3
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/preact/index.d.ts +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/{store-DUIAp1x7.d.ts → store-CkSajQlZ.d.ts} +7 -2
- package/dist/{store-wAYLbQdo.js → store-DhEeznqs.js} +196 -27
- package/dist/store-DhEeznqs.js.map +1 -0
- package/dist/vue/index.d.ts +1 -1
- package/package.json +3 -1
- package/dist/store-wAYLbQdo.js.map +0 -1
package/README.md
CHANGED
|
@@ -422,6 +422,31 @@ Available `stalePolicy` values:
|
|
|
422
422
|
| `'suspend'` | Re-throw Promise on revalidation (re-suspends) |
|
|
423
423
|
| `'reset'` | Clear value and re-suspend immediately |
|
|
424
424
|
|
|
425
|
+
### Retry on error
|
|
426
|
+
|
|
427
|
+
By default a failed `get` immediately sets the atom to `error` state. You can opt into automatic retries with the `retry` and `retryDelay` options:
|
|
428
|
+
|
|
429
|
+
```ts
|
|
430
|
+
const userAtom = atom({
|
|
431
|
+
retry: 3,
|
|
432
|
+
retryDelay: (attempt) => Math.min(1000 * 2 ** attempt, 30_000),
|
|
433
|
+
get: async (ctx) => {
|
|
434
|
+
const res = await fetch("/api/user", { signal: ctx.signal });
|
|
435
|
+
if (!res.ok) throw new Error("Failed to fetch user");
|
|
436
|
+
return res.json();
|
|
437
|
+
},
|
|
438
|
+
});
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
| Option | Type | Default | Description |
|
|
442
|
+
| ------------ | ---------------------------------------------- | ------- | ------------------------------------------------------------------------------- |
|
|
443
|
+
| `retry` | `boolean \| number` | — | Number of **additional** attempts after the first failure. `true` defaults to 3 |
|
|
444
|
+
| `retryDelay` | `number \| ((attemptIndex: number) => number)` | `0` | Delay in ms before each retry. `attemptIndex` starts at 0 |
|
|
445
|
+
|
|
446
|
+
Retries respect `AbortSignal` — if the atom is invalidated or unmounted mid-retry the remaining attempts are cancelled. The atom stays in its previous state (no intermediate `error` flashes) until all retries are exhausted.
|
|
447
|
+
|
|
448
|
+
The same options are available in `atomFamily` and `infinityAtom`.
|
|
449
|
+
|
|
425
450
|
### `atomFamily`
|
|
426
451
|
|
|
427
452
|
Create a family of atoms parametrised by a key. Atoms are cached by param; supports LRU eviction.
|
|
@@ -482,6 +507,78 @@ A built-in helper that serialises plain objects and arrays into a deterministic
|
|
|
482
507
|
- Not supported: class instances (other than plain `Object`/`Array`), `Map`, `Set`, `Symbol`, functions, circular references.
|
|
483
508
|
- Memoises by object reference via a `WeakMap` — repeated calls with the **same object reference** are O(1). Treat param objects as **immutable** after the first call; mutating an object after it has been memoised will silently return the stale key.
|
|
484
509
|
|
|
510
|
+
### Batching (`atomFamily` with `batch`)
|
|
511
|
+
|
|
512
|
+
Instead of fetching each atom individually, you can batch multiple concurrent requests into a single call — inspired by [`@yornaath/batshit`](https://www.npmjs.com/package/@yornaath/batshit). Replace `get` with `batch`:
|
|
513
|
+
|
|
514
|
+
```ts
|
|
515
|
+
import { atomFamily, windowScheduler } from "@kdeveloper/kvark/family";
|
|
516
|
+
|
|
517
|
+
const userFamily = atomFamily({
|
|
518
|
+
debugLabel: "user",
|
|
519
|
+
dependencies: () => ({ auth: authAtom }),
|
|
520
|
+
batch: {
|
|
521
|
+
scheduler: windowScheduler(10),
|
|
522
|
+
fetch: async ({ keys, params, signal, ctx }) => {
|
|
523
|
+
const auth = await ctx.get("auth");
|
|
524
|
+
const res = await fetch(`/api/users?ids=${keys.join(",")}`, {
|
|
525
|
+
headers: { Authorization: auth.token },
|
|
526
|
+
signal,
|
|
527
|
+
});
|
|
528
|
+
const users: User[] = await res.json();
|
|
529
|
+
return new Map(users.map((u) => [u.id, u]));
|
|
530
|
+
},
|
|
531
|
+
},
|
|
532
|
+
});
|
|
533
|
+
|
|
534
|
+
// Each call returns an atom; concurrent resolves within the scheduler
|
|
535
|
+
// window are batched into a single fetch.
|
|
536
|
+
const alice = useAtomValue(userFamily(1));
|
|
537
|
+
const bob = useAtomValue(userFamily(2));
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
**How it works:** when multiple atoms are resolved concurrently (e.g. several components mount at once), each atom's `get` enqueues its key into the batch coordinator. The scheduler decides when to flush the queue: the default `microtaskScheduler` flushes at the end of the current microtask; `windowScheduler(ms)` waits up to `ms` milliseconds.
|
|
541
|
+
|
|
542
|
+
`batch.fetch` receives:
|
|
543
|
+
|
|
544
|
+
| Field | Type | Description |
|
|
545
|
+
| -------- | ------------------- | -------------------------------------------------------- |
|
|
546
|
+
| `keys` | `readonly Key[]` | Unique keys (after `paramKey`) accumulated in this batch |
|
|
547
|
+
| `params` | `readonly Param[]` | Corresponding original `param` values (same order) |
|
|
548
|
+
| `signal` | `AbortSignal` | Aborts when **all** individual atom signals are aborted |
|
|
549
|
+
| `ctx` | `AtomContext<Deps>` | Context from the first enqueued atom in the batch |
|
|
550
|
+
|
|
551
|
+
Return a `Map<Key, Value>`. Keys missing from the map cause an error for those atoms.
|
|
552
|
+
|
|
553
|
+
#### `dependencies` in batch mode
|
|
554
|
+
|
|
555
|
+
In batch mode, `dependencies` takes **no param**: `() => Deps`. This guarantees the same set of dependency atoms for every member of the family, making `ctx` safe to share across the entire batch. TypeScript enforces this at the type level — passing `(param) => ...` is a compile error when `batch` is present.
|
|
556
|
+
|
|
557
|
+
#### Schedulers
|
|
558
|
+
|
|
559
|
+
All schedulers are factory functions that return a `BatchScheduler` instance.
|
|
560
|
+
|
|
561
|
+
| Factory | Behaviour |
|
|
562
|
+
| ------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
563
|
+
| `microtaskScheduler()` _(default)_ | Flushes at the end of the current microtask (coalesces all synchronous enqueues) |
|
|
564
|
+
| `windowScheduler(ms)` | Flushes after `ms` milliseconds since the first enqueue in the window |
|
|
565
|
+
| `maxBatchSizeScheduler(maxSize)` | Flushes immediately when the number of unique keys reaches `maxSize` (no timer fallback) |
|
|
566
|
+
| `windowedFiniteBatchScheduler(ms, maxSize)` | Flushes on timer **or** when `maxSize` unique keys are reached — whichever comes first |
|
|
567
|
+
|
|
568
|
+
```ts
|
|
569
|
+
import { windowScheduler, windowedFiniteBatchScheduler } from "@kdeveloper/kvark/family";
|
|
570
|
+
|
|
571
|
+
// Flush after 10 ms or when 50 unique keys accumulate
|
|
572
|
+
const family = atomFamily({
|
|
573
|
+
batch: {
|
|
574
|
+
scheduler: windowedFiniteBatchScheduler(10, 50),
|
|
575
|
+
fetch: async ({ keys, signal }) => {
|
|
576
|
+
/* ... */
|
|
577
|
+
},
|
|
578
|
+
},
|
|
579
|
+
});
|
|
580
|
+
```
|
|
581
|
+
|
|
485
582
|
### `infinityAtom`
|
|
486
583
|
|
|
487
584
|
Create an atom for incrementally loaded ("infinite scroll") lists. Inspired by [TanStack Query Infinite Queries](https://tanstack.com/query/latest/docs/framework/react/guides/infinite-queries), but using `getNextCursor` instead of `getNextPageParam`.
|
|
@@ -793,13 +890,13 @@ type Writable = IsWritable<typeof countAtom>; // → true | false
|
|
|
793
890
|
|
|
794
891
|
## Package Structure
|
|
795
892
|
|
|
796
|
-
| Import | Contents
|
|
797
|
-
| -------------------------- |
|
|
798
|
-
| `@kdeveloper/kvark` | `atom`, `mutation`, `createStore`, all types (including `Mutation`, `MutationContext`)
|
|
799
|
-
| `@kdeveloper/kvark/react`
|
|
800
|
-
| `@kdeveloper/kvark/preact`
|
|
801
|
-
| `@kdeveloper/kvark/vue`
|
|
802
|
-
| `@kdeveloper/kvark/family` | `atomFamily`, `stableFamilyKey`, re-exports `atom`, `mutation`, `createStore`; types include `AtomFamily`, `Mutation`, `MutationContext`, and core atom types
|
|
893
|
+
| Import | Contents |
|
|
894
|
+
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
895
|
+
| `@kdeveloper/kvark` | `atom`, `mutation`, `createStore`, all types (including `Mutation`, `MutationContext`) |
|
|
896
|
+
| `@kdeveloper/kvark/react` | `Provider`, `useStore`, `useAtomValue`, `useSetAtom`, `useMutation`, `useAtom`, `useAtomContext` |
|
|
897
|
+
| `@kdeveloper/kvark/preact` | `Provider`, `useStore`, `useAtomValue`, `useSetAtom`, `useMutation`, `useAtom`, `useAtomContext` |
|
|
898
|
+
| `@kdeveloper/kvark/vue` | `Provider`, `useStore`, `useAtomValue`, `useSetAtom`, `useMutation`, `useAtom`, `useAtomContext`; types `ThenableShallowRef`, `ThenableObservedShallowRef`, `ObservedValue` |
|
|
899
|
+
| `@kdeveloper/kvark/family` | `atomFamily`, `stableFamilyKey`, `microtaskScheduler`, `windowScheduler`, `maxBatchSizeScheduler`, `windowedFiniteBatchScheduler`, re-exports `atom`, `mutation`, `createStore`; types include `AtomFamily`, `BatchScheduler`, `BatchFetchInput`, `Mutation`, `MutationContext`, and core atom types |
|
|
803
900
|
|
|
804
901
|
The core (`@kdeveloper/kvark`) has **zero runtime dependencies**. **React**, **Preact**, and **Vue** are optional peer dependencies — install the framework you use and import from `/react`, `/preact`, or `/vue`.
|
|
805
902
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as WritableAtomContext, c as AtomConfig, g as WritableAtom, o as Atom } from "./store-CkSajQlZ.js";
|
|
2
2
|
|
|
3
3
|
//#region src/internal/atom.d.ts
|
|
4
4
|
type WritableConfig<Value, Deps extends Record<string, Atom<unknown>>, Args extends readonly unknown[]> = AtomConfig<Value, Deps, Args> & {
|
|
@@ -9,4 +9,4 @@ declare function atom<Value, Deps extends Record<string, Atom<unknown>> = Record
|
|
|
9
9
|
declare function atom<Value, Deps extends Record<string, Atom<unknown>> = Record<never, never>>(config: ReadonlyConfig<Value, Deps>): Atom<Value>;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { atom as t };
|
|
12
|
-
//# sourceMappingURL=atom-
|
|
12
|
+
//# sourceMappingURL=atom-KKDuP3S2.d.ts.map
|
package/dist/family.d.ts
CHANGED
|
@@ -1,10 +1,32 @@
|
|
|
1
|
-
import { a as mutation, c as AtomConfig, d as AtomValue, g as
|
|
2
|
-
import { t as atom } from "./atom-
|
|
1
|
+
import { _ as WritableAtomContext, a as mutation, c as AtomConfig, d as AtomValue, g as WritableAtom, h as StalePolicy, i as Mutation, l as AtomContext, m as RetryDelay, o as Atom, p as MutationContext, r as createStore, u as AtomState } from "./store-CkSajQlZ.js";
|
|
2
|
+
import { t as atom } from "./atom-KKDuP3S2.js";
|
|
3
3
|
|
|
4
|
+
//#region src/internal/family-batch-schedulers.d.ts
|
|
5
|
+
type BatchSchedulerContext = {
|
|
6
|
+
pendingCount: number;
|
|
7
|
+
};
|
|
8
|
+
interface BatchScheduler {
|
|
9
|
+
schedule(flush: () => void, context: BatchSchedulerContext): void;
|
|
10
|
+
reset(): void;
|
|
11
|
+
}
|
|
12
|
+
declare function microtaskScheduler(): BatchScheduler;
|
|
13
|
+
declare function windowScheduler(ms: number): BatchScheduler;
|
|
14
|
+
declare function maxBatchSizeScheduler(maxSize: number): BatchScheduler;
|
|
15
|
+
declare function windowedFiniteBatchScheduler(ms: number, maxSize: number): BatchScheduler;
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/internal/family-batch.d.ts
|
|
18
|
+
type BatchFetchInput<Param, Key, Deps extends Record<string, Atom<unknown>>> = {
|
|
19
|
+
keys: readonly Key[];
|
|
20
|
+
params: readonly Param[];
|
|
21
|
+
signal: AbortSignal;
|
|
22
|
+
ctx: AtomContext<Deps>;
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
4
25
|
//#region src/internal/family.d.ts
|
|
5
|
-
type
|
|
6
|
-
dependencies?: (param: Param) => Deps;
|
|
26
|
+
type AtomFamilyBaseOptions<Param, Key = Param> = {
|
|
7
27
|
stalePolicy?: StalePolicy;
|
|
28
|
+
retry?: boolean | number;
|
|
29
|
+
retryDelay?: RetryDelay;
|
|
8
30
|
cachePolicy?: "keep-all" | "lru";
|
|
9
31
|
lruSize?: number;
|
|
10
32
|
debugLabel?: string;
|
|
@@ -19,9 +41,28 @@ type AtomFamilyOptions<Param, Value, Deps extends Record<string, Atom<unknown>>,
|
|
|
19
41
|
* by object reference via a WeakMap.
|
|
20
42
|
*/
|
|
21
43
|
paramKey?: (param: Param) => Key;
|
|
44
|
+
};
|
|
45
|
+
type AtomFamilyGetOptions<Param, Value, Deps extends Record<string, Atom<unknown>>, Args extends readonly unknown[], Key = Param> = AtomFamilyBaseOptions<Param, Key> & {
|
|
46
|
+
dependencies?: (param: Param) => Deps;
|
|
22
47
|
get: (param: Param) => (ctx: AtomContext<Deps>) => Promise<Value>;
|
|
23
48
|
set?: (param: Param) => (ctx: WritableAtomContext<Deps, Value>, ...args: Args) => Promise<void>;
|
|
49
|
+
batch?: never;
|
|
50
|
+
};
|
|
51
|
+
type AtomFamilyBatchOptions<Param, Value, Deps extends Record<string, Atom<unknown>>, Key = Param> = AtomFamilyBaseOptions<Param, Key> & {
|
|
52
|
+
/**
|
|
53
|
+
* In batch mode `dependencies` takes **no param** — the same set of dependency atoms
|
|
54
|
+
* is shared by every member of the family. This ensures that `ctx` passed to `batch.fetch`
|
|
55
|
+
* is valid for the entire batch.
|
|
56
|
+
*/
|
|
57
|
+
dependencies?: () => Deps;
|
|
58
|
+
batch: {
|
|
59
|
+
fetch: (input: BatchFetchInput<Param, Key, Deps>) => Promise<Map<Key, Value>>;
|
|
60
|
+
scheduler?: BatchScheduler;
|
|
61
|
+
};
|
|
62
|
+
get?: never;
|
|
63
|
+
set?: never;
|
|
24
64
|
};
|
|
65
|
+
type AtomFamilyOptions<Param, Value, Deps extends Record<string, Atom<unknown>>, Args extends readonly unknown[], Key = Param> = AtomFamilyGetOptions<Param, Value, Deps, Args, Key> | AtomFamilyBatchOptions<Param, Value, Deps, Key>;
|
|
25
66
|
interface AtomFamily<Param, Value, Key = Param> {
|
|
26
67
|
(param: Param): Atom<Value>;
|
|
27
68
|
invalidate(param: Param): void;
|
|
@@ -45,5 +86,5 @@ declare function atomFamily<Param, Value, Deps extends Record<string, Atom<unkno
|
|
|
45
86
|
*/
|
|
46
87
|
declare function stableFamilyKey(value: unknown): string;
|
|
47
88
|
//#endregion
|
|
48
|
-
export { type Atom, type AtomConfig, type AtomContext, type AtomFamily, type AtomFamilyOptions, type AtomState, type AtomValue, type Mutation, type MutationContext, type StalePolicy, type WritableAtom, atom, atomFamily, createStore, mutation, stableFamilyKey };
|
|
89
|
+
export { type Atom, type AtomConfig, type AtomContext, type AtomFamily, type AtomFamilyBatchOptions, type AtomFamilyGetOptions, type AtomFamilyOptions, type AtomState, type AtomValue, type BatchFetchInput, type BatchScheduler, type BatchSchedulerContext, type Mutation, type MutationContext, type StalePolicy, type WritableAtom, atom, atomFamily, createStore, maxBatchSizeScheduler, microtaskScheduler, mutation, stableFamilyKey, windowScheduler, windowedFiniteBatchScheduler };
|
|
49
90
|
//# sourceMappingURL=family.d.ts.map
|
package/dist/family.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as microtaskScheduler, c as atom, i as maxBatchSizeScheduler, n as mutation, o as windowScheduler, r as atomFamily, s as windowedFiniteBatchScheduler, t as createStore } from "./store-DhEeznqs.js";
|
|
2
2
|
//#region src/internal/stable-family-key.ts
|
|
3
3
|
/**
|
|
4
4
|
* Produces a deterministic string key for plain-object/array/primitive values.
|
|
@@ -54,6 +54,6 @@ function serializeValue(value) {
|
|
|
54
54
|
}).join(",")}}`;
|
|
55
55
|
}
|
|
56
56
|
//#endregion
|
|
57
|
-
export { atom, atomFamily, createStore, mutation, stableFamilyKey };
|
|
57
|
+
export { atom, atomFamily, createStore, maxBatchSizeScheduler, microtaskScheduler, mutation, stableFamilyKey, windowScheduler, windowedFiniteBatchScheduler };
|
|
58
58
|
|
|
59
59
|
//# sourceMappingURL=family.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as mutation, c as AtomConfig, d as AtomValue, f as IsWritable, g as
|
|
2
|
-
import { t as atom } from "./atom-
|
|
1
|
+
import { _ as WritableAtomContext, a as mutation, c as AtomConfig, d as AtomValue, f as IsWritable, g as WritableAtom, h as StalePolicy, i as Mutation, l as AtomContext, m as RetryDelay, n as StoreClient, o as Atom, p as MutationContext, r as createStore, s as AtomArgs, u as AtomState } from "./store-CkSajQlZ.js";
|
|
2
|
+
import { t as atom } from "./atom-KKDuP3S2.js";
|
|
3
3
|
|
|
4
4
|
//#region src/internal/infinity-atom.d.ts
|
|
5
5
|
type InfiniteData<Page, Cursor> = {
|
|
@@ -18,9 +18,11 @@ type InfinityAtomOptions<Page, Cursor> = {
|
|
|
18
18
|
maxPages?: number;
|
|
19
19
|
debugLabel?: string;
|
|
20
20
|
stalePolicy?: StalePolicy;
|
|
21
|
+
retry?: boolean | number;
|
|
22
|
+
retryDelay?: RetryDelay;
|
|
21
23
|
dependencies?: Record<string, Atom<unknown>>;
|
|
22
24
|
};
|
|
23
25
|
declare function infinityAtom<Page, Cursor>(options: InfinityAtomOptions<Page, Cursor>): WritableAtom<InfiniteData<Page, Cursor>, [action: "loadNext"]>;
|
|
24
26
|
//#endregion
|
|
25
|
-
export { type Atom, type AtomArgs, type AtomConfig, type AtomContext, type AtomState, type AtomValue, type InfiniteData, type InfinityAtomOptions, type IsWritable, type Mutation, type MutationContext, type StalePolicy, type StoreClient, type WritableAtom, type WritableAtomContext, atom, createStore, infinityAtom, mutation };
|
|
27
|
+
export { type Atom, type AtomArgs, type AtomConfig, type AtomContext, type AtomState, type AtomValue, type InfiniteData, type InfinityAtomOptions, type IsWritable, type Mutation, type MutationContext, type RetryDelay, type StalePolicy, type StoreClient, type WritableAtom, type WritableAtomContext, atom, createStore, infinityAtom, mutation };
|
|
26
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as atom, n as mutation, t as createStore } from "./store-DhEeznqs.js";
|
|
2
2
|
//#region src/internal/infinity-atom.ts
|
|
3
3
|
function infinityAtom(options) {
|
|
4
4
|
function applyMaxPages(pages, cursors) {
|
|
@@ -67,6 +67,8 @@ function infinityAtom(options) {
|
|
|
67
67
|
};
|
|
68
68
|
if (options.debugLabel != null) config.debugLabel = options.debugLabel;
|
|
69
69
|
if (options.stalePolicy != null) config.stalePolicy = options.stalePolicy;
|
|
70
|
+
if (options.retry != null) config.retry = options.retry;
|
|
71
|
+
if (options.retryDelay != null) config.retryDelay = options.retryDelay;
|
|
70
72
|
if (options.dependencies != null) config.dependencies = options.dependencies;
|
|
71
73
|
return atom(config);
|
|
72
74
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/internal/infinity-atom.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/internal/infinity-atom.ts"],"mappings":";;AAsBA,SAAgB,aACd,SACgE;CAGhE,SAAS,cAAc,OAAe,SAAyD;AAC7F,MAAI,QAAQ,YAAY,QAAQ,MAAM,SAAS,QAAQ,UAAU;GAC/D,MAAM,SAAS,MAAM,SAAS,QAAQ;AACtC,UAAO;IAAE,OAAO,MAAM,MAAM,OAAO;IAAE,SAAS,QAAQ,MAAM,OAAO;IAAE;;AAEvE,SAAO;GAAE;GAAO;GAAS;;CAG3B,SAAS,YAAY,OAAe,aAA6B;EAC/D,MAAM,UAAU,cAAc,OAAO,YAAY;EACjD,MAAM,WAAW,QAAQ,MAAM,QAAQ,MAAM,SAAS;EACtD,MAAM,aACJ,YAAY,OAAO,QAAQ,cAAc,UAAU,QAAQ,MAAM,GAAG,KAAA;AACtE,SAAO;GACL,OAAO,QAAQ;GACf,aAAa,QAAQ;GACrB,aAAa,cAAc;GAC3B,oBAAoB;GACrB;;CAGH,MAAM,SAAgF;EACpF,KAAK,OAAO,QAAQ;GAClB,MAAM,OAAO,IAAI,kBAAkB;AAEnC,OAAI,QAAQ,KAKV,QAAO,YAAY,CAJN,MAAM,QAAQ,QAAQ;IACjC,QAAQ,QAAQ;IAChB,QAAQ,IAAI;IACb,CAAC,CACuB,EAAE,CAAC,QAAQ,cAAc,CAAC;GAIrD,MAAM,QAAgB,EAAE;GACxB,MAAM,cAAwB,EAAE;AAChC,QAAK,MAAM,UAAU,KAAK,aAAa;IACrC,MAAM,OAAO,MAAM,QAAQ,QAAQ;KAAE;KAAQ,QAAQ,IAAI;KAAQ,CAAC;AAClE,UAAM,KAAK,KAAK;AAChB,gBAAY,KAAK,OAAO;;AAE1B,UAAO,YAAY,OAAO,YAAY;;EAExC,KAAK,OAAO,KAAK,WAAW;AAC1B,OAAI,WAAW,WACb;GAGF,MAAM,UAAU,IAAI,kBAAkB;AACtC,OAAI,WAAW,QAAQ,CAAC,QAAQ,YAC9B;GAGF,MAAM,WAAW,QAAQ,MAAM,QAAQ,MAAM,SAAS;AACtD,OAAI,YAAY,KACd;GAGF,MAAM,aAAa,QAAQ,cAAc,UAAU,QAAQ,MAAM;AACjE,OAAI,cAAc,KAChB;AAGF,OAAI,mBAAmB;IAAE,GAAG;IAAS,oBAAoB;IAAM,CAAC;GAEhE,MAAM,OAAO,MAAM,QAAQ,QAAQ;IACjC,QAAQ;IACR,QAAQ,IAAI;IACb,CAAC;GAEF,MAAM,QAAQ,CAAC,GAAG,QAAQ,OAAO,KAAK;GACtC,MAAM,cAAc,CAAC,GAAG,QAAQ,aAAa,WAAW;AAExD,OAAI,mBAAmB,YAAY,OAAO,YAAY,CAAC;;EAE1D;AAED,KAAI,QAAQ,cAAc,KACxB,QAAO,aAAa,QAAQ;AAE9B,KAAI,QAAQ,eAAe,KACzB,QAAO,cAAc,QAAQ;AAE/B,KAAI,QAAQ,SAAS,KACnB,QAAO,QAAQ,QAAQ;AAEzB,KAAI,QAAQ,cAAc,KACxB,QAAO,aAAa,QAAQ;AAE9B,KAAI,QAAQ,gBAAgB,KAC1B,QAAO,eAAe,QAAQ;AAGhC,QAAO,KAAK,OAAO"}
|
package/dist/preact/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { g as WritableAtom, i as Mutation, n as StoreClient, o as Atom, t as Store } from "../store-CkSajQlZ.js";
|
|
2
2
|
import { ComponentChildren, VNode } from "preact";
|
|
3
3
|
|
|
4
4
|
//#region src/preact/provider.d.ts
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { g as WritableAtom, i as Mutation, n as StoreClient, o as Atom, t as Store } from "../store-CkSajQlZ.js";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/react/provider.d.ts
|
|
@@ -36,9 +36,12 @@ interface WritableAtomContext<Deps extends Record<string, Atom<unknown>>, Value>
|
|
|
36
36
|
setOptimisticValue(mutate: (prev: Value | undefined) => Value): void;
|
|
37
37
|
getPreviousValue(): Value | undefined;
|
|
38
38
|
}
|
|
39
|
+
type RetryDelay = number | ((attemptIndex: number) => number);
|
|
39
40
|
type AtomConfig<Value, Deps extends Record<string, Atom<unknown>>, Args extends readonly unknown[]> = {
|
|
40
41
|
dependencies?: Deps;
|
|
41
42
|
stalePolicy?: StalePolicy;
|
|
43
|
+
retry?: boolean | number;
|
|
44
|
+
retryDelay?: RetryDelay;
|
|
42
45
|
debugLabel?: string;
|
|
43
46
|
get: (ctx: AtomContext<Deps>) => Promise<Value>;
|
|
44
47
|
set?: (ctx: WritableAtomContext<Deps, Value>, ...args: Args) => Promise<void>;
|
|
@@ -47,6 +50,8 @@ type AtomConfig<Value, Deps extends Record<string, Atom<unknown>>, Args extends
|
|
|
47
50
|
interface InternalAtomConfig<Value> {
|
|
48
51
|
dependencies?: Record<string, Atom<unknown>>;
|
|
49
52
|
stalePolicy?: StalePolicy;
|
|
53
|
+
retry?: boolean | number;
|
|
54
|
+
retryDelay?: RetryDelay;
|
|
50
55
|
debugLabel?: string;
|
|
51
56
|
get: (ctx: AtomContext<Record<string, Atom<unknown>>>) => Promise<Value>;
|
|
52
57
|
set?: (ctx: WritableAtomContext<Record<string, Atom<unknown>>, any>, ...args: readonly unknown[]) => Promise<void>;
|
|
@@ -97,5 +102,5 @@ declare class Store {
|
|
|
97
102
|
}
|
|
98
103
|
declare function createStore(): Store;
|
|
99
104
|
//#endregion
|
|
100
|
-
export { mutation as a, AtomConfig as c, AtomValue as d, IsWritable as f,
|
|
101
|
-
//# sourceMappingURL=store-
|
|
105
|
+
export { WritableAtomContext as _, mutation as a, AtomConfig as c, AtomValue as d, IsWritable as f, WritableAtom as g, StalePolicy as h, Mutation as i, AtomContext as l, RetryDelay as m, StoreClient as n, Atom as o, MutationContext as p, createStore as r, AtomArgs as s, Store as t, AtomState as u };
|
|
106
|
+
//# sourceMappingURL=store-CkSajQlZ.d.ts.map
|
|
@@ -6,6 +6,8 @@ function atom(config) {
|
|
|
6
6
|
if (config.debugLabel != null) internal.debugLabel = config.debugLabel;
|
|
7
7
|
if (config.dependencies != null) internal.dependencies = config.dependencies;
|
|
8
8
|
if (config.stalePolicy != null) internal.stalePolicy = config.stalePolicy;
|
|
9
|
+
if (config.retry != null) internal.retry = config.retry;
|
|
10
|
+
if (config.retryDelay != null) internal.retryDelay = config.retryDelay;
|
|
9
11
|
if (config.set != null) internal.set = config.set;
|
|
10
12
|
if (config.onMount != null) internal.onMount = config.onMount;
|
|
11
13
|
if (config.set != null) return {
|
|
@@ -120,6 +122,130 @@ var LruCache = class {
|
|
|
120
122
|
}
|
|
121
123
|
};
|
|
122
124
|
//#endregion
|
|
125
|
+
//#region src/internal/family-batch-schedulers.ts
|
|
126
|
+
function microtaskScheduler() {
|
|
127
|
+
let scheduled = false;
|
|
128
|
+
return {
|
|
129
|
+
schedule(flush) {
|
|
130
|
+
if (!scheduled) {
|
|
131
|
+
scheduled = true;
|
|
132
|
+
queueMicrotask(flush);
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
reset() {
|
|
136
|
+
scheduled = false;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function windowScheduler(ms) {
|
|
141
|
+
let timer = null;
|
|
142
|
+
return {
|
|
143
|
+
schedule(flush) {
|
|
144
|
+
if (timer == null) timer = setTimeout(flush, ms);
|
|
145
|
+
},
|
|
146
|
+
reset() {
|
|
147
|
+
if (timer != null) {
|
|
148
|
+
clearTimeout(timer);
|
|
149
|
+
timer = null;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function maxBatchSizeScheduler(maxSize) {
|
|
155
|
+
return {
|
|
156
|
+
schedule(flush, context) {
|
|
157
|
+
if (context.pendingCount >= maxSize) flush();
|
|
158
|
+
},
|
|
159
|
+
reset() {}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function windowedFiniteBatchScheduler(ms, maxSize) {
|
|
163
|
+
let timer = null;
|
|
164
|
+
return {
|
|
165
|
+
schedule(flush, context) {
|
|
166
|
+
if (context.pendingCount >= maxSize) {
|
|
167
|
+
if (timer != null) {
|
|
168
|
+
clearTimeout(timer);
|
|
169
|
+
timer = null;
|
|
170
|
+
}
|
|
171
|
+
flush();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (timer == null) timer = setTimeout(flush, ms);
|
|
175
|
+
},
|
|
176
|
+
reset() {
|
|
177
|
+
if (timer != null) {
|
|
178
|
+
clearTimeout(timer);
|
|
179
|
+
timer = null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
//#endregion
|
|
185
|
+
//#region src/internal/family-batch.ts
|
|
186
|
+
var BatchCoordinator = class {
|
|
187
|
+
#fetch;
|
|
188
|
+
#scheduler;
|
|
189
|
+
#queue = [];
|
|
190
|
+
#keySet = /* @__PURE__ */ new Set();
|
|
191
|
+
constructor(fetch, scheduler) {
|
|
192
|
+
this.#fetch = fetch;
|
|
193
|
+
this.#scheduler = scheduler ?? microtaskScheduler();
|
|
194
|
+
}
|
|
195
|
+
enqueue(key, param, ctx, signal) {
|
|
196
|
+
return new Promise((resolve, reject) => {
|
|
197
|
+
this.#queue.push({
|
|
198
|
+
key,
|
|
199
|
+
param,
|
|
200
|
+
ctx,
|
|
201
|
+
resolve,
|
|
202
|
+
reject,
|
|
203
|
+
signal
|
|
204
|
+
});
|
|
205
|
+
this.#keySet.add(key);
|
|
206
|
+
this.#scheduler.schedule(() => this.#flush(), { pendingCount: this.#keySet.size });
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
#flush() {
|
|
210
|
+
if (this.#queue.length === 0) return;
|
|
211
|
+
const entries = this.#queue;
|
|
212
|
+
this.#queue = [];
|
|
213
|
+
this.#keySet = /* @__PURE__ */ new Set();
|
|
214
|
+
this.#scheduler.reset();
|
|
215
|
+
const uniqueKeys = [];
|
|
216
|
+
const uniqueParams = [];
|
|
217
|
+
const seen = /* @__PURE__ */ new Set();
|
|
218
|
+
for (const entry of entries) if (!seen.has(entry.key)) {
|
|
219
|
+
seen.add(entry.key);
|
|
220
|
+
uniqueKeys.push(entry.key);
|
|
221
|
+
uniqueParams.push(entry.param);
|
|
222
|
+
}
|
|
223
|
+
const firstEntry = entries[0];
|
|
224
|
+
if (firstEntry == null) return;
|
|
225
|
+
const firstCtx = firstEntry.ctx;
|
|
226
|
+
const controller = new AbortController();
|
|
227
|
+
let abortedCount = 0;
|
|
228
|
+
for (const entry of entries) if (entry.signal.aborted) abortedCount++;
|
|
229
|
+
else entry.signal.addEventListener("abort", () => {
|
|
230
|
+
abortedCount++;
|
|
231
|
+
if (abortedCount === entries.length) controller.abort();
|
|
232
|
+
}, { once: true });
|
|
233
|
+
if (abortedCount === entries.length) controller.abort();
|
|
234
|
+
this.#fetch({
|
|
235
|
+
keys: uniqueKeys,
|
|
236
|
+
params: uniqueParams,
|
|
237
|
+
signal: controller.signal,
|
|
238
|
+
ctx: firstCtx
|
|
239
|
+
}).then((resultMap) => {
|
|
240
|
+
for (const entry of entries) if (entry.signal.aborted) entry.reject(new DOMException("The operation was aborted", "AbortError"));
|
|
241
|
+
else if (resultMap.has(entry.key)) entry.resolve(resultMap.get(entry.key));
|
|
242
|
+
else entry.reject(/* @__PURE__ */ new Error(`Batch fetch did not return a value for key: ${String(entry.key)}`));
|
|
243
|
+
}, (error) => {
|
|
244
|
+
for (const entry of entries) entry.reject(error);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
//#endregion
|
|
123
249
|
//#region src/internal/family.ts
|
|
124
250
|
function getFamilyLink(target) {
|
|
125
251
|
return target[FAMILY_LINK];
|
|
@@ -127,6 +253,7 @@ function getFamilyLink(target) {
|
|
|
127
253
|
function atomFamily(options) {
|
|
128
254
|
const cache = new LruCache(options.cachePolicy === "lru" ? options.lruSize ?? 100 : Infinity);
|
|
129
255
|
const storeCallbacks = /* @__PURE__ */ new Set();
|
|
256
|
+
const coordinator = options.batch != null ? new BatchCoordinator(options.batch.fetch, options.batch.scheduler) : null;
|
|
130
257
|
function keyOf(param) {
|
|
131
258
|
return options.paramKey != null ? options.paramKey(param) : param;
|
|
132
259
|
}
|
|
@@ -148,9 +275,19 @@ function atomFamily(options) {
|
|
|
148
275
|
const key = keyOf(param);
|
|
149
276
|
const cached = cache.get(key);
|
|
150
277
|
if (cached != null) return cached;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
278
|
+
let deps;
|
|
279
|
+
let getFn;
|
|
280
|
+
let setFn;
|
|
281
|
+
if (coordinator != null) {
|
|
282
|
+
deps = options.dependencies?.();
|
|
283
|
+
getFn = (ctx) => coordinator.enqueue(key, param, ctx, ctx.signal);
|
|
284
|
+
setFn = void 0;
|
|
285
|
+
} else {
|
|
286
|
+
const getOpts = options;
|
|
287
|
+
deps = getOpts.dependencies?.(param);
|
|
288
|
+
getFn = getOpts.get(param);
|
|
289
|
+
setFn = getOpts.set?.(param);
|
|
290
|
+
}
|
|
154
291
|
const labelSuffix = options.paramKey != null ? String(key) : String(param);
|
|
155
292
|
const created = createAtom(options.debugLabel != null ? `${options.debugLabel}(${labelSuffix})` : void 0, deps, getFn, setFn);
|
|
156
293
|
attachLink(created);
|
|
@@ -162,6 +299,8 @@ function atomFamily(options) {
|
|
|
162
299
|
if (label != null) base.debugLabel = label;
|
|
163
300
|
if (deps != null) base.dependencies = deps;
|
|
164
301
|
if (options.stalePolicy != null) base.stalePolicy = options.stalePolicy;
|
|
302
|
+
if (options.retry != null) base.retry = options.retry;
|
|
303
|
+
if (options.retryDelay != null) base.retryDelay = options.retryDelay;
|
|
165
304
|
if (setFn != null) {
|
|
166
305
|
base.set = setFn;
|
|
167
306
|
return atom(base);
|
|
@@ -233,35 +372,46 @@ var Store = class {
|
|
|
233
372
|
const config = atom[CONFIG];
|
|
234
373
|
const dependencies = config.dependencies;
|
|
235
374
|
const stalePolicy = config.stalePolicy ?? "keep";
|
|
375
|
+
const retryCount = normalizeRetry(config.retry);
|
|
376
|
+
const retryDelay = config.retryDelay ?? 0;
|
|
236
377
|
const entry = this.#getOrCreate(atom);
|
|
237
378
|
if (dependencies != null) {
|
|
238
379
|
await Promise.all(Object.values(dependencies).map((dep) => this.resolve(dep)));
|
|
239
380
|
this.#registerRdeps(atom, dependencies);
|
|
240
381
|
}
|
|
241
382
|
const ctx = this.#makeCtx(atom, dependencies ?? {});
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
if (
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
383
|
+
let lastError;
|
|
384
|
+
for (let attempt = 0; attempt <= retryCount; attempt++) {
|
|
385
|
+
if (attempt > 0) {
|
|
386
|
+
if (ctx.signal.aborted) throw new DOMException("The operation was aborted", "AbortError");
|
|
387
|
+
const delay = typeof retryDelay === "function" ? retryDelay(attempt - 1) : retryDelay;
|
|
388
|
+
if (delay > 0) await abortableDelay(delay, ctx.signal);
|
|
389
|
+
}
|
|
390
|
+
try {
|
|
391
|
+
const value = await config.get(ctx);
|
|
392
|
+
if (ctx.signal.aborted) throw new DOMException("The operation was aborted", "AbortError");
|
|
393
|
+
entry.state = {
|
|
394
|
+
status: "fresh",
|
|
395
|
+
value,
|
|
396
|
+
error: void 0
|
|
397
|
+
};
|
|
398
|
+
entry.version++;
|
|
399
|
+
this.#scheduleNotify(atom);
|
|
400
|
+
return value;
|
|
401
|
+
} catch (e) {
|
|
402
|
+
if (isAbortError(e)) throw e;
|
|
403
|
+
lastError = e;
|
|
404
|
+
}
|
|
264
405
|
}
|
|
406
|
+
const prevValue = extractPreviousValue(entry.state);
|
|
407
|
+
entry.state = {
|
|
408
|
+
status: "error",
|
|
409
|
+
value: stalePolicy === "keep" ? prevValue : void 0,
|
|
410
|
+
error: lastError
|
|
411
|
+
};
|
|
412
|
+
entry.version++;
|
|
413
|
+
this.#scheduleNotify(atom);
|
|
414
|
+
throw lastError;
|
|
265
415
|
}
|
|
266
416
|
invalidate(atom) {
|
|
267
417
|
this.#markStale(atom);
|
|
@@ -522,6 +672,25 @@ var Store = class {
|
|
|
522
672
|
function createStore() {
|
|
523
673
|
return new Store();
|
|
524
674
|
}
|
|
675
|
+
const DEFAULT_RETRY = 3;
|
|
676
|
+
function normalizeRetry(value) {
|
|
677
|
+
if (value == null || value === false) return 0;
|
|
678
|
+
if (value === true) return DEFAULT_RETRY;
|
|
679
|
+
return Math.max(0, Math.floor(value));
|
|
680
|
+
}
|
|
681
|
+
function abortableDelay(ms, signal) {
|
|
682
|
+
return new Promise((resolve, reject) => {
|
|
683
|
+
if (signal.aborted) {
|
|
684
|
+
reject(new DOMException("The operation was aborted", "AbortError"));
|
|
685
|
+
return;
|
|
686
|
+
}
|
|
687
|
+
const timer = setTimeout(resolve, ms);
|
|
688
|
+
signal.addEventListener("abort", () => {
|
|
689
|
+
clearTimeout(timer);
|
|
690
|
+
reject(new DOMException("The operation was aborted", "AbortError"));
|
|
691
|
+
}, { once: true });
|
|
692
|
+
});
|
|
693
|
+
}
|
|
525
694
|
function isAbortError(e) {
|
|
526
695
|
return e instanceof DOMException && e.name === "AbortError";
|
|
527
696
|
}
|
|
@@ -530,6 +699,6 @@ function extractPreviousValue(state) {
|
|
|
530
699
|
if (state.status === "error") return state.value;
|
|
531
700
|
}
|
|
532
701
|
//#endregion
|
|
533
|
-
export { atom as i, mutation as n, atomFamily as r, createStore as t };
|
|
702
|
+
export { microtaskScheduler as a, atom as c, maxBatchSizeScheduler as i, mutation as n, windowScheduler as o, atomFamily as r, windowedFiniteBatchScheduler as s, createStore as t };
|
|
534
703
|
|
|
535
|
-
//# sourceMappingURL=store-
|
|
704
|
+
//# sourceMappingURL=store-DhEeznqs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-DhEeznqs.js","names":["#maxSize","#nodeMap","#valueMap","#head","#tail","#moveToMru","#insertBeforeTail","#evict","#detach","#fetch","#scheduler","#queue","#keySet","#flush","#atoms","#rdeps","#pending","#controllers","#familyUnsubs","#registeredFamilies","#getOrCreate","#runGet","#registerRdeps","#makeCtx","#scheduleNotify","#markStale","#schedulePendingFlush","#flushScheduled","#flushPending","#markReverseDependentsStale","#autoRegisterFamily","#relatedOptimisticWrite","#rollbackRelatedSnapshots","#client"],"sources":["../src/internal/atom.ts","../src/internal/lru-cache.ts","../src/internal/family-batch-schedulers.ts","../src/internal/family-batch.ts","../src/internal/family.ts","../src/internal/mutation.ts","../src/internal/store.ts"],"mappings":"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"}
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { g as WritableAtom, i as Mutation, n as StoreClient, o as Atom, t as Store } from "../store-CkSajQlZ.js";
|
|
2
2
|
import * as _$vue from "vue";
|
|
3
3
|
import { PropType, ShallowRef } from "vue";
|
|
4
4
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kdeveloper/kvark",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "Atomic state management with explicit dependency graphs",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"@types/node": "^25.5.0",
|
|
40
40
|
"@types/react": "^19.2.14",
|
|
41
41
|
"@types/react-dom": "^19.2.3",
|
|
42
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
42
43
|
"@vue/test-utils": "^2.4.6",
|
|
43
44
|
"jsdom": "^29.0.1",
|
|
44
45
|
"oxfmt": "^0.42.0",
|
|
@@ -79,6 +80,7 @@
|
|
|
79
80
|
"fmt": "oxfmt .",
|
|
80
81
|
"fmt:check": "oxfmt --check .",
|
|
81
82
|
"test": "vitest run",
|
|
83
|
+
"test:coverage": "vitest run --coverage",
|
|
82
84
|
"test:watch": "vitest"
|
|
83
85
|
}
|
|
84
86
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-wAYLbQdo.js","names":["#maxSize","#nodeMap","#valueMap","#head","#tail","#moveToMru","#insertBeforeTail","#evict","#detach","#atoms","#rdeps","#pending","#controllers","#familyUnsubs","#registeredFamilies","#getOrCreate","#runGet","#registerRdeps","#makeCtx","#scheduleNotify","#markStale","#schedulePendingFlush","#flushScheduled","#flushPending","#markReverseDependentsStale","#autoRegisterFamily","#relatedOptimisticWrite","#rollbackRelatedSnapshots","#client"],"sources":["../src/internal/atom.ts","../src/internal/lru-cache.ts","../src/internal/family.ts","../src/internal/mutation.ts","../src/internal/store.ts"],"mappings":"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"}
|