@kdeveloper/kvark 0.10.0 → 0.11.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 +79 -24
- package/dist/atom-Bmwlf4MR.d.ts +75 -0
- package/dist/family.d.ts +5 -3
- package/dist/family.js +2 -2
- package/dist/index.d.ts +3 -26
- package/dist/index.js +2 -76
- package/dist/preact/index.d.ts +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/{store-gE1mKZy1.js → store-Br0Mq40M.js} +194 -24
- package/dist/store-Br0Mq40M.js.map +1 -0
- package/dist/{store-DUIAp1x7.d.ts → store-CkSajQlZ.d.ts} +7 -2
- package/dist/vue/index.d.ts +1 -1
- package/package.json +13 -11
- package/dist/atom-BhfSS5xG.d.ts +0 -12
- package/dist/index.js.map +0 -1
- package/dist/store-gE1mKZy1.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.
|
|
@@ -516,12 +541,12 @@ const bob = useAtomValue(userFamily(2));
|
|
|
516
541
|
|
|
517
542
|
`batch.fetch` receives:
|
|
518
543
|
|
|
519
|
-
| Field | Type
|
|
520
|
-
| -------- |
|
|
521
|
-
| `keys` | `readonly Key[]`
|
|
522
|
-
| `params` | `readonly Param[]`
|
|
523
|
-
| `signal` | `AbortSignal`
|
|
524
|
-
| `ctx` | `AtomContext<Deps>`
|
|
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 |
|
|
525
550
|
|
|
526
551
|
Return a `Map<Key, Value>`. Keys missing from the map cause an error for those atoms.
|
|
527
552
|
|
|
@@ -533,24 +558,23 @@ In batch mode, `dependencies` takes **no param**: `() => Deps`. This guarantees
|
|
|
533
558
|
|
|
534
559
|
All schedulers are factory functions that return a `BatchScheduler` instance.
|
|
535
560
|
|
|
536
|
-
| Factory
|
|
537
|
-
|
|
|
538
|
-
| `microtaskScheduler()` _(default)_
|
|
539
|
-
| `windowScheduler(ms)`
|
|
540
|
-
| `maxBatchSizeScheduler(maxSize)`
|
|
541
|
-
| `windowedFiniteBatchScheduler(ms, maxSize)`
|
|
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 |
|
|
542
567
|
|
|
543
568
|
```ts
|
|
544
|
-
import {
|
|
545
|
-
windowScheduler,
|
|
546
|
-
windowedFiniteBatchScheduler,
|
|
547
|
-
} from "@kdeveloper/kvark/family";
|
|
569
|
+
import { windowScheduler, windowedFiniteBatchScheduler } from "@kdeveloper/kvark/family";
|
|
548
570
|
|
|
549
571
|
// Flush after 10 ms or when 50 unique keys accumulate
|
|
550
572
|
const family = atomFamily({
|
|
551
573
|
batch: {
|
|
552
574
|
scheduler: windowedFiniteBatchScheduler(10, 50),
|
|
553
|
-
fetch: async ({ keys, signal }) => {
|
|
575
|
+
fetch: async ({ keys, signal }) => {
|
|
576
|
+
/* ... */
|
|
577
|
+
},
|
|
554
578
|
},
|
|
555
579
|
});
|
|
556
580
|
```
|
|
@@ -599,6 +623,37 @@ const projectsAtom = infinityAtom({
|
|
|
599
623
|
});
|
|
600
624
|
```
|
|
601
625
|
|
|
626
|
+
### `infinityAtomFamily`
|
|
627
|
+
|
|
628
|
+
Parameterised version of `infinityAtom`. Combines the per-key cache and invalidation API of `atomFamily` with the paginated fetch flow of `infinityAtom`. Each `param` produces an independent `WritableAtom<InfiniteData<Page, Cursor>, ["loadNext"]>`, cached by `param` (or `paramKey`).
|
|
629
|
+
|
|
630
|
+
```ts
|
|
631
|
+
import { infinityAtomFamily } from "@kdeveloper/kvark";
|
|
632
|
+
|
|
633
|
+
const userPostsFamily = infinityAtomFamily({
|
|
634
|
+
debugLabel: "userPosts",
|
|
635
|
+
cachePolicy: "lru",
|
|
636
|
+
lruSize: 50,
|
|
637
|
+
initialCursor: () => 0,
|
|
638
|
+
queryFn:
|
|
639
|
+
(userId: number) =>
|
|
640
|
+
async ({ cursor, signal }) => {
|
|
641
|
+
const res = await fetch(`/api/users/${userId}/posts?cursor=${cursor}`, { signal });
|
|
642
|
+
return res.json() as Promise<{ items: Post[]; nextCursor: number | null }>;
|
|
643
|
+
},
|
|
644
|
+
getNextCursor: () => (page) => page.nextCursor,
|
|
645
|
+
});
|
|
646
|
+
|
|
647
|
+
const aliceFeed = useAtomValue(userPostsFamily(1));
|
|
648
|
+
const setAliceFeed = useSetAtom(userPostsFamily(1));
|
|
649
|
+
await setAliceFeed("loadNext");
|
|
650
|
+
|
|
651
|
+
userPostsFamily.invalidate(1);
|
|
652
|
+
userPostsFamily.invalidateAll();
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
The same family-level options as `atomFamily` are supported: `cachePolicy: "lru"` + `lruSize`, `paramKey` (with `stableFamilyKey` for object params), `debugLabel`, `stalePolicy`, `retry`, `retryDelay`, and `dependencies: (param) => ({ ... })`. The infinite-scroll options — `initialCursor`, `queryFn`, `getNextCursor` — are functions of `param`, while `maxPages` is shared by every member of the family.
|
|
656
|
+
|
|
602
657
|
## React (`@kdeveloper/kvark/react`)
|
|
603
658
|
|
|
604
659
|
All hooks must be used inside a `<Provider>`.
|
|
@@ -866,13 +921,13 @@ type Writable = IsWritable<typeof countAtom>; // → true | false
|
|
|
866
921
|
|
|
867
922
|
## Package Structure
|
|
868
923
|
|
|
869
|
-
| Import | Contents
|
|
870
|
-
| -------------------------- |
|
|
871
|
-
| `@kdeveloper/kvark` | `atom`, `mutation`, `createStore`, all types (including `Mutation`, `MutationContext`)
|
|
872
|
-
| `@kdeveloper/kvark/react`
|
|
873
|
-
| `@kdeveloper/kvark/preact`
|
|
874
|
-
| `@kdeveloper/kvark/vue`
|
|
875
|
-
| `@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 |
|
|
924
|
+
| Import | Contents |
|
|
925
|
+
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
926
|
+
| `@kdeveloper/kvark` | `atom`, `infinityAtom`, `infinityAtomFamily`, `mutation`, `createStore`, all types (including `Mutation`, `MutationContext`) |
|
|
927
|
+
| `@kdeveloper/kvark/react` | `Provider`, `useStore`, `useAtomValue`, `useSetAtom`, `useMutation`, `useAtom`, `useAtomContext` |
|
|
928
|
+
| `@kdeveloper/kvark/preact` | `Provider`, `useStore`, `useAtomValue`, `useSetAtom`, `useMutation`, `useAtom`, `useAtomContext` |
|
|
929
|
+
| `@kdeveloper/kvark/vue` | `Provider`, `useStore`, `useAtomValue`, `useSetAtom`, `useMutation`, `useAtom`, `useAtomContext`; types `ThenableShallowRef`, `ThenableObservedShallowRef`, `ObservedValue` |
|
|
930
|
+
| `@kdeveloper/kvark/family` | `atomFamily`, `infinityAtomFamily`, `stableFamilyKey`, `microtaskScheduler`, `windowScheduler`, `maxBatchSizeScheduler`, `windowedFiniteBatchScheduler`, re-exports `atom`, `infinityAtom`, `mutation`, `createStore`; types include `AtomFamily`, `InfinityAtomFamily`, `BatchScheduler`, `BatchFetchInput`, `Mutation`, `MutationContext`, and core atom types |
|
|
876
931
|
|
|
877
932
|
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`.
|
|
878
933
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { _ as WritableAtomContext, c as AtomConfig, g as WritableAtom, h as StalePolicy, m as RetryDelay, o as Atom } from "./store-CkSajQlZ.js";
|
|
2
|
+
|
|
3
|
+
//#region src/internal/infinity-atom.d.ts
|
|
4
|
+
type InfiniteData<Page, Cursor> = {
|
|
5
|
+
pages: Page[];
|
|
6
|
+
pageCursors: Cursor[];
|
|
7
|
+
hasNextPage: boolean;
|
|
8
|
+
isFetchingNextPage: boolean;
|
|
9
|
+
};
|
|
10
|
+
type InfinityAtomOptions<Page, Cursor> = {
|
|
11
|
+
initialCursor: Cursor;
|
|
12
|
+
queryFn: (args: {
|
|
13
|
+
cursor: Cursor;
|
|
14
|
+
signal: AbortSignal;
|
|
15
|
+
}) => Promise<Page>;
|
|
16
|
+
getNextCursor: (lastPage: Page, allPages: Page[]) => Cursor | undefined | null;
|
|
17
|
+
maxPages?: number;
|
|
18
|
+
debugLabel?: string;
|
|
19
|
+
stalePolicy?: StalePolicy;
|
|
20
|
+
retry?: boolean | number;
|
|
21
|
+
retryDelay?: RetryDelay;
|
|
22
|
+
dependencies?: Record<string, Atom<unknown>>;
|
|
23
|
+
};
|
|
24
|
+
declare function infinityAtom<Page, Cursor>(options: InfinityAtomOptions<Page, Cursor>): WritableAtom<InfiniteData<Page, Cursor>, [action: "loadNext"]>;
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/internal/infinity-atom-family.d.ts
|
|
27
|
+
type InfinityAtomFamilyBaseOptions<Param, Key = Param> = {
|
|
28
|
+
cachePolicy?: "keep-all" | "lru";
|
|
29
|
+
lruSize?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Optional function to derive a stable cache key from `param`.
|
|
32
|
+
* Use when `Param` is an object and you want equality-by-value semantics.
|
|
33
|
+
* The returned key is used for all cache operations (get, set, LRU, invalidate, remove).
|
|
34
|
+
* The original `param` is still passed to `initialCursor`, `queryFn`, `getNextCursor`,
|
|
35
|
+
* and `dependencies`.
|
|
36
|
+
*
|
|
37
|
+
* For plain objects/arrays you can use `stableFamilyKey` from `@kdeveloper/kvark/family`.
|
|
38
|
+
* Treat the param object as immutable after the first call.
|
|
39
|
+
*/
|
|
40
|
+
paramKey?: (param: Param) => Key;
|
|
41
|
+
debugLabel?: string;
|
|
42
|
+
stalePolicy?: StalePolicy;
|
|
43
|
+
retry?: boolean | number;
|
|
44
|
+
retryDelay?: RetryDelay;
|
|
45
|
+
maxPages?: number;
|
|
46
|
+
};
|
|
47
|
+
type InfinityAtomFamilyOptions<Param, Page, Cursor, Key = Param> = InfinityAtomFamilyBaseOptions<Param, Key> & {
|
|
48
|
+
dependencies?: (param: Param) => Record<string, Atom<unknown>>;
|
|
49
|
+
initialCursor: (param: Param) => Cursor;
|
|
50
|
+
queryFn: (param: Param) => (args: {
|
|
51
|
+
cursor: Cursor;
|
|
52
|
+
signal: AbortSignal;
|
|
53
|
+
}) => Promise<Page>;
|
|
54
|
+
getNextCursor: (param: Param) => (lastPage: Page, allPages: Page[]) => Cursor | undefined | null;
|
|
55
|
+
};
|
|
56
|
+
type InfinityFamilyAtom<Page, Cursor> = WritableAtom<InfiniteData<Page, Cursor>, [action: "loadNext"]>;
|
|
57
|
+
interface InfinityAtomFamily<Param, Page, Cursor, Key = Param> {
|
|
58
|
+
(param: Param): InfinityFamilyAtom<Page, Cursor>;
|
|
59
|
+
invalidate(param: Param): void;
|
|
60
|
+
invalidateAll(): void;
|
|
61
|
+
remove(param: Param): void;
|
|
62
|
+
getCache(): ReadonlyMap<Key, InfinityFamilyAtom<Page, Cursor>>;
|
|
63
|
+
}
|
|
64
|
+
declare function infinityAtomFamily<Param, Page, Cursor, Key = Param>(options: InfinityAtomFamilyOptions<Param, Page, Cursor, Key>): InfinityAtomFamily<Param, Page, Cursor, Key>;
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/internal/atom.d.ts
|
|
67
|
+
type WritableConfig<Value, Deps extends Record<string, Atom<unknown>>, Args extends readonly unknown[]> = AtomConfig<Value, Deps, Args> & {
|
|
68
|
+
set: (ctx: WritableAtomContext<Deps, Value>, ...args: Args) => Promise<void>;
|
|
69
|
+
};
|
|
70
|
+
type ReadonlyConfig<Value, Deps extends Record<string, Atom<unknown>>> = Omit<AtomConfig<Value, Deps, readonly []>, "set">;
|
|
71
|
+
declare function atom<Value, Deps extends Record<string, Atom<unknown>> = Record<never, never>, Args extends readonly unknown[] = readonly []>(config: WritableConfig<Value, Deps, Args>): WritableAtom<Value, Args>;
|
|
72
|
+
declare function atom<Value, Deps extends Record<string, Atom<unknown>> = Record<never, never>>(config: ReadonlyConfig<Value, Deps>): Atom<Value>;
|
|
73
|
+
//#endregion
|
|
74
|
+
export { infinityAtomFamily as a, infinityAtom as c, InfinityFamilyAtom as i, InfinityAtomFamily as n, InfiniteData as o, InfinityAtomFamilyOptions as r, InfinityAtomOptions as s, atom as t };
|
|
75
|
+
//# sourceMappingURL=atom-Bmwlf4MR.d.ts.map
|
package/dist/family.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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 { a as infinityAtomFamily, c as infinityAtom, i as InfinityFamilyAtom, n as InfinityAtomFamily, o as InfiniteData, r as InfinityAtomFamilyOptions, s as InfinityAtomOptions, t as atom } from "./atom-Bmwlf4MR.js";
|
|
3
3
|
|
|
4
4
|
//#region src/internal/family-batch-schedulers.d.ts
|
|
5
5
|
type BatchSchedulerContext = {
|
|
@@ -25,6 +25,8 @@ type BatchFetchInput<Param, Key, Deps extends Record<string, Atom<unknown>>> = {
|
|
|
25
25
|
//#region src/internal/family.d.ts
|
|
26
26
|
type AtomFamilyBaseOptions<Param, Key = Param> = {
|
|
27
27
|
stalePolicy?: StalePolicy;
|
|
28
|
+
retry?: boolean | number;
|
|
29
|
+
retryDelay?: RetryDelay;
|
|
28
30
|
cachePolicy?: "keep-all" | "lru";
|
|
29
31
|
lruSize?: number;
|
|
30
32
|
debugLabel?: string;
|
|
@@ -84,5 +86,5 @@ declare function atomFamily<Param, Value, Deps extends Record<string, Atom<unkno
|
|
|
84
86
|
*/
|
|
85
87
|
declare function stableFamilyKey(value: unknown): string;
|
|
86
88
|
//#endregion
|
|
87
|
-
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 };
|
|
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 InfiniteData, type InfinityAtomFamily, type InfinityAtomFamilyOptions, type InfinityAtomOptions, type InfinityFamilyAtom, type Mutation, type MutationContext, type StalePolicy, type WritableAtom, atom, atomFamily, createStore, infinityAtom, infinityAtomFamily, maxBatchSizeScheduler, microtaskScheduler, mutation, stableFamilyKey, windowScheduler, windowedFiniteBatchScheduler };
|
|
88
90
|
//# sourceMappingURL=family.d.ts.map
|
package/dist/family.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as microtaskScheduler, c as
|
|
1
|
+
import { a as microtaskScheduler, c as infinityAtomFamily, i as maxBatchSizeScheduler, l as infinityAtom, n as mutation, o as windowScheduler, r as atomFamily, s as windowedFiniteBatchScheduler, t as createStore, u as atom } from "./store-Br0Mq40M.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, maxBatchSizeScheduler, microtaskScheduler, mutation, stableFamilyKey, windowScheduler, windowedFiniteBatchScheduler };
|
|
57
|
+
export { atom, atomFamily, createStore, infinityAtom, infinityAtomFamily, maxBatchSizeScheduler, microtaskScheduler, mutation, stableFamilyKey, windowScheduler, windowedFiniteBatchScheduler };
|
|
58
58
|
|
|
59
59
|
//# sourceMappingURL=family.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
import { a as mutation, c as AtomConfig, d as AtomValue, f as IsWritable, g as
|
|
2
|
-
import { t as atom } from "./atom-
|
|
3
|
-
|
|
4
|
-
//#region src/internal/infinity-atom.d.ts
|
|
5
|
-
type InfiniteData<Page, Cursor> = {
|
|
6
|
-
pages: Page[];
|
|
7
|
-
pageCursors: Cursor[];
|
|
8
|
-
hasNextPage: boolean;
|
|
9
|
-
isFetchingNextPage: boolean;
|
|
10
|
-
};
|
|
11
|
-
type InfinityAtomOptions<Page, Cursor> = {
|
|
12
|
-
initialCursor: Cursor;
|
|
13
|
-
queryFn: (args: {
|
|
14
|
-
cursor: Cursor;
|
|
15
|
-
signal: AbortSignal;
|
|
16
|
-
}) => Promise<Page>;
|
|
17
|
-
getNextCursor: (lastPage: Page, allPages: Page[]) => Cursor | undefined | null;
|
|
18
|
-
maxPages?: number;
|
|
19
|
-
debugLabel?: string;
|
|
20
|
-
stalePolicy?: StalePolicy;
|
|
21
|
-
dependencies?: Record<string, Atom<unknown>>;
|
|
22
|
-
};
|
|
23
|
-
declare function infinityAtom<Page, Cursor>(options: InfinityAtomOptions<Page, Cursor>): WritableAtom<InfiniteData<Page, Cursor>, [action: "loadNext"]>;
|
|
24
|
-
//#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 };
|
|
26
|
-
//# sourceMappingURL=index.d.ts.map
|
|
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 { a as infinityAtomFamily, c as infinityAtom, i as InfinityFamilyAtom, n as InfinityAtomFamily, o as InfiniteData, r as InfinityAtomFamilyOptions, s as InfinityAtomOptions, t as atom } from "./atom-Bmwlf4MR.js";
|
|
3
|
+
export { type Atom, type AtomArgs, type AtomConfig, type AtomContext, type AtomState, type AtomValue, type InfiniteData, type InfinityAtomFamily, type InfinityAtomFamilyOptions, type InfinityAtomOptions, type InfinityFamilyAtom, type IsWritable, type Mutation, type MutationContext, type RetryDelay, type StalePolicy, type StoreClient, type WritableAtom, type WritableAtomContext, atom, createStore, infinityAtom, infinityAtomFamily, mutation };
|
package/dist/index.js
CHANGED
|
@@ -1,76 +1,2 @@
|
|
|
1
|
-
import { c as
|
|
2
|
-
|
|
3
|
-
function infinityAtom(options) {
|
|
4
|
-
function applyMaxPages(pages, cursors) {
|
|
5
|
-
if (options.maxPages != null && pages.length > options.maxPages) {
|
|
6
|
-
const excess = pages.length - options.maxPages;
|
|
7
|
-
return {
|
|
8
|
-
pages: pages.slice(excess),
|
|
9
|
-
cursors: cursors.slice(excess)
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
return {
|
|
13
|
-
pages,
|
|
14
|
-
cursors
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
function buildResult(pages, pageCursors) {
|
|
18
|
-
const trimmed = applyMaxPages(pages, pageCursors);
|
|
19
|
-
const lastPage = trimmed.pages[trimmed.pages.length - 1];
|
|
20
|
-
const nextCursor = lastPage != null ? options.getNextCursor(lastPage, trimmed.pages) : void 0;
|
|
21
|
-
return {
|
|
22
|
-
pages: trimmed.pages,
|
|
23
|
-
pageCursors: trimmed.cursors,
|
|
24
|
-
hasNextPage: nextCursor != null,
|
|
25
|
-
isFetchingNextPage: false
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const config = {
|
|
29
|
-
get: async (ctx) => {
|
|
30
|
-
const prev = ctx.getPreviousValue();
|
|
31
|
-
if (prev == null) return buildResult([await options.queryFn({
|
|
32
|
-
cursor: options.initialCursor,
|
|
33
|
-
signal: ctx.signal
|
|
34
|
-
})], [options.initialCursor]);
|
|
35
|
-
const pages = [];
|
|
36
|
-
const pageCursors = [];
|
|
37
|
-
for (const cursor of prev.pageCursors) {
|
|
38
|
-
const page = await options.queryFn({
|
|
39
|
-
cursor,
|
|
40
|
-
signal: ctx.signal
|
|
41
|
-
});
|
|
42
|
-
pages.push(page);
|
|
43
|
-
pageCursors.push(cursor);
|
|
44
|
-
}
|
|
45
|
-
return buildResult(pages, pageCursors);
|
|
46
|
-
},
|
|
47
|
-
set: async (ctx, action) => {
|
|
48
|
-
if (action !== "loadNext") return;
|
|
49
|
-
const current = ctx.getPreviousValue();
|
|
50
|
-
if (current == null || !current.hasNextPage) return;
|
|
51
|
-
const lastPage = current.pages[current.pages.length - 1];
|
|
52
|
-
if (lastPage == null) return;
|
|
53
|
-
const nextCursor = options.getNextCursor(lastPage, current.pages);
|
|
54
|
-
if (nextCursor == null) return;
|
|
55
|
-
ctx.setOptimisticValue({
|
|
56
|
-
...current,
|
|
57
|
-
isFetchingNextPage: true
|
|
58
|
-
});
|
|
59
|
-
const page = await options.queryFn({
|
|
60
|
-
cursor: nextCursor,
|
|
61
|
-
signal: ctx.signal
|
|
62
|
-
});
|
|
63
|
-
const pages = [...current.pages, page];
|
|
64
|
-
const pageCursors = [...current.pageCursors, nextCursor];
|
|
65
|
-
ctx.setOptimisticValue(buildResult(pages, pageCursors));
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
if (options.debugLabel != null) config.debugLabel = options.debugLabel;
|
|
69
|
-
if (options.stalePolicy != null) config.stalePolicy = options.stalePolicy;
|
|
70
|
-
if (options.dependencies != null) config.dependencies = options.dependencies;
|
|
71
|
-
return atom(config);
|
|
72
|
-
}
|
|
73
|
-
//#endregion
|
|
74
|
-
export { atom, createStore, infinityAtom, mutation };
|
|
75
|
-
|
|
76
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import { c as infinityAtomFamily, l as infinityAtom, n as mutation, t as createStore, u as atom } from "./store-Br0Mq40M.js";
|
|
2
|
+
export { atom, createStore, infinityAtom, infinityAtomFamily, mutation };
|
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
|
|
@@ -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 {
|
|
@@ -19,6 +21,80 @@ function atom(config) {
|
|
|
19
21
|
};
|
|
20
22
|
}
|
|
21
23
|
//#endregion
|
|
24
|
+
//#region src/internal/infinity-atom.ts
|
|
25
|
+
function infinityAtom(options) {
|
|
26
|
+
function applyMaxPages(pages, cursors) {
|
|
27
|
+
if (options.maxPages != null && pages.length > options.maxPages) {
|
|
28
|
+
const excess = pages.length - options.maxPages;
|
|
29
|
+
return {
|
|
30
|
+
pages: pages.slice(excess),
|
|
31
|
+
cursors: cursors.slice(excess)
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
pages,
|
|
36
|
+
cursors
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function buildResult(pages, pageCursors) {
|
|
40
|
+
const trimmed = applyMaxPages(pages, pageCursors);
|
|
41
|
+
const lastPage = trimmed.pages[trimmed.pages.length - 1];
|
|
42
|
+
const nextCursor = lastPage != null ? options.getNextCursor(lastPage, trimmed.pages) : void 0;
|
|
43
|
+
return {
|
|
44
|
+
pages: trimmed.pages,
|
|
45
|
+
pageCursors: trimmed.cursors,
|
|
46
|
+
hasNextPage: nextCursor != null,
|
|
47
|
+
isFetchingNextPage: false
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const config = {
|
|
51
|
+
get: async (ctx) => {
|
|
52
|
+
const prev = ctx.getPreviousValue();
|
|
53
|
+
if (prev == null) return buildResult([await options.queryFn({
|
|
54
|
+
cursor: options.initialCursor,
|
|
55
|
+
signal: ctx.signal
|
|
56
|
+
})], [options.initialCursor]);
|
|
57
|
+
const pages = [];
|
|
58
|
+
const pageCursors = [];
|
|
59
|
+
for (const cursor of prev.pageCursors) {
|
|
60
|
+
const page = await options.queryFn({
|
|
61
|
+
cursor,
|
|
62
|
+
signal: ctx.signal
|
|
63
|
+
});
|
|
64
|
+
pages.push(page);
|
|
65
|
+
pageCursors.push(cursor);
|
|
66
|
+
}
|
|
67
|
+
return buildResult(pages, pageCursors);
|
|
68
|
+
},
|
|
69
|
+
set: async (ctx, action) => {
|
|
70
|
+
if (action !== "loadNext") return;
|
|
71
|
+
const current = ctx.getPreviousValue();
|
|
72
|
+
if (current == null || !current.hasNextPage) return;
|
|
73
|
+
const lastPage = current.pages[current.pages.length - 1];
|
|
74
|
+
if (lastPage == null) return;
|
|
75
|
+
const nextCursor = options.getNextCursor(lastPage, current.pages);
|
|
76
|
+
if (nextCursor == null) return;
|
|
77
|
+
ctx.setOptimisticValue({
|
|
78
|
+
...current,
|
|
79
|
+
isFetchingNextPage: true
|
|
80
|
+
});
|
|
81
|
+
const page = await options.queryFn({
|
|
82
|
+
cursor: nextCursor,
|
|
83
|
+
signal: ctx.signal
|
|
84
|
+
});
|
|
85
|
+
const pages = [...current.pages, page];
|
|
86
|
+
const pageCursors = [...current.pageCursors, nextCursor];
|
|
87
|
+
ctx.setOptimisticValue(buildResult(pages, pageCursors));
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
if (options.debugLabel != null) config.debugLabel = options.debugLabel;
|
|
91
|
+
if (options.stalePolicy != null) config.stalePolicy = options.stalePolicy;
|
|
92
|
+
if (options.retry != null) config.retry = options.retry;
|
|
93
|
+
if (options.retryDelay != null) config.retryDelay = options.retryDelay;
|
|
94
|
+
if (options.dependencies != null) config.dependencies = options.dependencies;
|
|
95
|
+
return atom(config);
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
22
98
|
//#region src/internal/lru-cache.ts
|
|
23
99
|
/**
|
|
24
100
|
* Fixed-capacity cache with O(1) get, set, delete and LRU eviction.
|
|
@@ -120,6 +196,68 @@ var LruCache = class {
|
|
|
120
196
|
}
|
|
121
197
|
};
|
|
122
198
|
//#endregion
|
|
199
|
+
//#region src/internal/infinity-atom-family.ts
|
|
200
|
+
function infinityAtomFamily(options) {
|
|
201
|
+
const cache = new LruCache(options.cachePolicy === "lru" ? options.lruSize ?? 100 : Infinity);
|
|
202
|
+
const storeCallbacks = /* @__PURE__ */ new Set();
|
|
203
|
+
const link = {
|
|
204
|
+
invalidateAtom(target) {
|
|
205
|
+
for (const cb of storeCallbacks) cb(target);
|
|
206
|
+
},
|
|
207
|
+
registerStore(cb) {
|
|
208
|
+
storeCallbacks.add(cb);
|
|
209
|
+
return () => {
|
|
210
|
+
storeCallbacks.delete(cb);
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
function keyOf(param) {
|
|
215
|
+
return options.paramKey != null ? options.paramKey(param) : param;
|
|
216
|
+
}
|
|
217
|
+
function attachLink(target) {
|
|
218
|
+
target[FAMILY_LINK] = link;
|
|
219
|
+
}
|
|
220
|
+
function buildAtomOptions(param, key) {
|
|
221
|
+
const opts = {
|
|
222
|
+
initialCursor: options.initialCursor(param),
|
|
223
|
+
queryFn: options.queryFn(param),
|
|
224
|
+
getNextCursor: options.getNextCursor(param)
|
|
225
|
+
};
|
|
226
|
+
if (options.maxPages != null) opts.maxPages = options.maxPages;
|
|
227
|
+
if (options.stalePolicy != null) opts.stalePolicy = options.stalePolicy;
|
|
228
|
+
if (options.retry != null) opts.retry = options.retry;
|
|
229
|
+
if (options.retryDelay != null) opts.retryDelay = options.retryDelay;
|
|
230
|
+
if (options.dependencies != null) opts.dependencies = options.dependencies(param);
|
|
231
|
+
if (options.debugLabel != null) {
|
|
232
|
+
const labelSuffix = options.paramKey != null ? String(key) : String(param);
|
|
233
|
+
opts.debugLabel = `${options.debugLabel}(${labelSuffix})`;
|
|
234
|
+
}
|
|
235
|
+
return opts;
|
|
236
|
+
}
|
|
237
|
+
function getOrCreate(param) {
|
|
238
|
+
const key = keyOf(param);
|
|
239
|
+
const cached = cache.get(key);
|
|
240
|
+
if (cached != null) return cached;
|
|
241
|
+
const created = infinityAtom(buildAtomOptions(param, key));
|
|
242
|
+
attachLink(created);
|
|
243
|
+
cache.set(key, created);
|
|
244
|
+
return created;
|
|
245
|
+
}
|
|
246
|
+
const family = getOrCreate;
|
|
247
|
+
family.invalidate = (param) => {
|
|
248
|
+
const cached = cache.peek(keyOf(param));
|
|
249
|
+
if (cached != null) link.invalidateAtom(cached);
|
|
250
|
+
};
|
|
251
|
+
family.invalidateAll = () => {
|
|
252
|
+
for (const cached of cache.values()) link.invalidateAtom(cached);
|
|
253
|
+
};
|
|
254
|
+
family.remove = (param) => {
|
|
255
|
+
cache.delete(keyOf(param));
|
|
256
|
+
};
|
|
257
|
+
family.getCache = () => cache.asReadonlyMap();
|
|
258
|
+
return family;
|
|
259
|
+
}
|
|
260
|
+
//#endregion
|
|
123
261
|
//#region src/internal/family-batch-schedulers.ts
|
|
124
262
|
function microtaskScheduler() {
|
|
125
263
|
let scheduled = false;
|
|
@@ -297,6 +435,8 @@ function atomFamily(options) {
|
|
|
297
435
|
if (label != null) base.debugLabel = label;
|
|
298
436
|
if (deps != null) base.dependencies = deps;
|
|
299
437
|
if (options.stalePolicy != null) base.stalePolicy = options.stalePolicy;
|
|
438
|
+
if (options.retry != null) base.retry = options.retry;
|
|
439
|
+
if (options.retryDelay != null) base.retryDelay = options.retryDelay;
|
|
300
440
|
if (setFn != null) {
|
|
301
441
|
base.set = setFn;
|
|
302
442
|
return atom(base);
|
|
@@ -368,35 +508,46 @@ var Store = class {
|
|
|
368
508
|
const config = atom[CONFIG];
|
|
369
509
|
const dependencies = config.dependencies;
|
|
370
510
|
const stalePolicy = config.stalePolicy ?? "keep";
|
|
511
|
+
const retryCount = normalizeRetry(config.retry);
|
|
512
|
+
const retryDelay = config.retryDelay ?? 0;
|
|
371
513
|
const entry = this.#getOrCreate(atom);
|
|
372
514
|
if (dependencies != null) {
|
|
373
515
|
await Promise.all(Object.values(dependencies).map((dep) => this.resolve(dep)));
|
|
374
516
|
this.#registerRdeps(atom, dependencies);
|
|
375
517
|
}
|
|
376
518
|
const ctx = this.#makeCtx(atom, dependencies ?? {});
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
if (
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
519
|
+
let lastError;
|
|
520
|
+
for (let attempt = 0; attempt <= retryCount; attempt++) {
|
|
521
|
+
if (attempt > 0) {
|
|
522
|
+
if (ctx.signal.aborted) throw new DOMException("The operation was aborted", "AbortError");
|
|
523
|
+
const delay = typeof retryDelay === "function" ? retryDelay(attempt - 1) : retryDelay;
|
|
524
|
+
if (delay > 0) await abortableDelay(delay, ctx.signal);
|
|
525
|
+
}
|
|
526
|
+
try {
|
|
527
|
+
const value = await config.get(ctx);
|
|
528
|
+
if (ctx.signal.aborted) throw new DOMException("The operation was aborted", "AbortError");
|
|
529
|
+
entry.state = {
|
|
530
|
+
status: "fresh",
|
|
531
|
+
value,
|
|
532
|
+
error: void 0
|
|
533
|
+
};
|
|
534
|
+
entry.version++;
|
|
535
|
+
this.#scheduleNotify(atom);
|
|
536
|
+
return value;
|
|
537
|
+
} catch (e) {
|
|
538
|
+
if (isAbortError(e)) throw e;
|
|
539
|
+
lastError = e;
|
|
540
|
+
}
|
|
399
541
|
}
|
|
542
|
+
const prevValue = extractPreviousValue(entry.state);
|
|
543
|
+
entry.state = {
|
|
544
|
+
status: "error",
|
|
545
|
+
value: stalePolicy === "keep" ? prevValue : void 0,
|
|
546
|
+
error: lastError
|
|
547
|
+
};
|
|
548
|
+
entry.version++;
|
|
549
|
+
this.#scheduleNotify(atom);
|
|
550
|
+
throw lastError;
|
|
400
551
|
}
|
|
401
552
|
invalidate(atom) {
|
|
402
553
|
this.#markStale(atom);
|
|
@@ -657,6 +808,25 @@ var Store = class {
|
|
|
657
808
|
function createStore() {
|
|
658
809
|
return new Store();
|
|
659
810
|
}
|
|
811
|
+
const DEFAULT_RETRY = 3;
|
|
812
|
+
function normalizeRetry(value) {
|
|
813
|
+
if (value == null || value === false) return 0;
|
|
814
|
+
if (value === true) return DEFAULT_RETRY;
|
|
815
|
+
return Math.max(0, Math.floor(value));
|
|
816
|
+
}
|
|
817
|
+
function abortableDelay(ms, signal) {
|
|
818
|
+
return new Promise((resolve, reject) => {
|
|
819
|
+
if (signal.aborted) {
|
|
820
|
+
reject(new DOMException("The operation was aborted", "AbortError"));
|
|
821
|
+
return;
|
|
822
|
+
}
|
|
823
|
+
const timer = setTimeout(resolve, ms);
|
|
824
|
+
signal.addEventListener("abort", () => {
|
|
825
|
+
clearTimeout(timer);
|
|
826
|
+
reject(new DOMException("The operation was aborted", "AbortError"));
|
|
827
|
+
}, { once: true });
|
|
828
|
+
});
|
|
829
|
+
}
|
|
660
830
|
function isAbortError(e) {
|
|
661
831
|
return e instanceof DOMException && e.name === "AbortError";
|
|
662
832
|
}
|
|
@@ -665,6 +835,6 @@ function extractPreviousValue(state) {
|
|
|
665
835
|
if (state.status === "error") return state.value;
|
|
666
836
|
}
|
|
667
837
|
//#endregion
|
|
668
|
-
export { microtaskScheduler as a,
|
|
838
|
+
export { microtaskScheduler as a, infinityAtomFamily as c, maxBatchSizeScheduler as i, infinityAtom as l, mutation as n, windowScheduler as o, atomFamily as r, windowedFiniteBatchScheduler as s, createStore as t, atom as u };
|
|
669
839
|
|
|
670
|
-
//# sourceMappingURL=store-
|
|
840
|
+
//# sourceMappingURL=store-Br0Mq40M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-Br0Mq40M.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/infinity-atom.ts","../src/internal/lru-cache.ts","../src/internal/infinity-atom-family.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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"}
|
|
@@ -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
|
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.11.1",
|
|
4
4
|
"description": "Atomic state management with explicit dependency graphs",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -36,21 +36,22 @@
|
|
|
36
36
|
"@testing-library/dom": "^10.4.1",
|
|
37
37
|
"@testing-library/preact": "^3.2.4",
|
|
38
38
|
"@testing-library/react": "^16.3.2",
|
|
39
|
-
"@types/node": "^25.
|
|
39
|
+
"@types/node": "^25.6.0",
|
|
40
40
|
"@types/react": "^19.2.14",
|
|
41
41
|
"@types/react-dom": "^19.2.3",
|
|
42
|
+
"@vitest/coverage-v8": "^4.1.4",
|
|
42
43
|
"@vue/test-utils": "^2.4.6",
|
|
43
|
-
"jsdom": "^29.0.
|
|
44
|
+
"jsdom": "^29.0.2",
|
|
44
45
|
"oxfmt": "^0.42.0",
|
|
45
|
-
"oxlint": "^1.
|
|
46
|
+
"oxlint": "^1.60.0",
|
|
46
47
|
"oxlint-tsgolint": "^0.18.1",
|
|
47
|
-
"preact": "^10.29.
|
|
48
|
-
"react": "
|
|
49
|
-
"react-dom": "^19.2.
|
|
50
|
-
"tsdown": "^0.21.
|
|
51
|
-
"typescript": "^6.0.
|
|
52
|
-
"vitest": "^4.1.
|
|
53
|
-
"vue": "^3.5.
|
|
48
|
+
"preact": "^10.29.1",
|
|
49
|
+
"react": "^19.2.5",
|
|
50
|
+
"react-dom": "^19.2.5",
|
|
51
|
+
"tsdown": "^0.21.9",
|
|
52
|
+
"typescript": "^6.0.3",
|
|
53
|
+
"vitest": "^4.1.4",
|
|
54
|
+
"vue": "^3.5.32"
|
|
54
55
|
},
|
|
55
56
|
"peerDependencies": {
|
|
56
57
|
"preact": ">=10",
|
|
@@ -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
|
}
|
package/dist/atom-BhfSS5xG.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { c as AtomConfig, g as WritableAtomContext, h as WritableAtom, o as Atom } from "./store-DUIAp1x7.js";
|
|
2
|
-
|
|
3
|
-
//#region src/internal/atom.d.ts
|
|
4
|
-
type WritableConfig<Value, Deps extends Record<string, Atom<unknown>>, Args extends readonly unknown[]> = AtomConfig<Value, Deps, Args> & {
|
|
5
|
-
set: (ctx: WritableAtomContext<Deps, Value>, ...args: Args) => Promise<void>;
|
|
6
|
-
};
|
|
7
|
-
type ReadonlyConfig<Value, Deps extends Record<string, Atom<unknown>>> = Omit<AtomConfig<Value, Deps, readonly []>, "set">;
|
|
8
|
-
declare function atom<Value, Deps extends Record<string, Atom<unknown>> = Record<never, never>, Args extends readonly unknown[] = readonly []>(config: WritableConfig<Value, Deps, Args>): WritableAtom<Value, Args>;
|
|
9
|
-
declare function atom<Value, Deps extends Record<string, Atom<unknown>> = Record<never, never>>(config: ReadonlyConfig<Value, Deps>): Atom<Value>;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { atom as t };
|
|
12
|
-
//# sourceMappingURL=atom-BhfSS5xG.d.ts.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/internal/infinity-atom.ts"],"mappings":";;AAoBA,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,aAAa,YAAY,OAC3B,QAAQ,cAAc,UAAU,QAAQ,MAAM,GAC9C,KAAA;AACJ,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,gBAAgB,KAC1B,QAAO,eAAe,QAAQ;AAGhC,QAAO,KAAK,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-gE1mKZy1.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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"}
|