@kdeveloper/kvark 1.1.6 → 1.2.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/README.md +2 -0
- package/dist/preact/index.js +6 -2
- package/dist/preact/index.js.map +1 -1
- package/dist/react/index.js +7 -3
- package/dist/react/index.js.map +1 -1
- package/dist/use-atom-value-DKo4W6ZY.js +110 -0
- package/dist/use-atom-value-DKo4W6ZY.js.map +1 -0
- package/dist/vue/index.js +6 -7
- package/dist/vue/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/use-atom-value-BhGvD9Vf.js +0 -35
- package/dist/use-atom-value-BhGvD9Vf.js.map +0 -1
package/README.md
CHANGED
|
@@ -876,6 +876,7 @@ Returns the `Store` instance from context — for advanced cases (e.g. calling `
|
|
|
876
876
|
### `useAtomValue`
|
|
877
877
|
|
|
878
878
|
Reads an atom value and subscribes to updates. Suspends on first load.
|
|
879
|
+
If the consumer unmounts while a read is still in flight, the hook aborts the read through `ctx.signal`.
|
|
879
880
|
|
|
880
881
|
```tsx
|
|
881
882
|
// Basic — throws if error, suspends if pending
|
|
@@ -937,6 +938,7 @@ Same composable names and behaviour as React: `Provider`, `useStore`, `useAtomVa
|
|
|
937
938
|
Exported types: **`ThenableShallowRef<V>`** (default `useAtomValue`), **`ThenableObservedShallowRef<V>`** and **`ObservedValue<V>`** (with `{ observe: true }`). They encode pending vs resolved ref shapes for TypeScript.
|
|
938
939
|
|
|
939
940
|
`useAtomValue` / `useAtom` expose values as **awaitable shallow refs** (`PromiseLike`) — in script code use `.value`; in templates Vue unwraps refs for you. `await useAtomValue(atom)` in an async setup suspends until the atom's first `read` resolves, integrating with `<Suspense>`.
|
|
941
|
+
If the consumer unmounts while that read is still in flight, the composable aborts it through `ctx.signal`.
|
|
940
942
|
|
|
941
943
|
### Suspense (Vue 3)
|
|
942
944
|
|
package/dist/preact/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as getAtomValueResult } from "../use-atom-value-
|
|
1
|
+
import { n as useAtomSubscription, r as useAtomSubscriptionScope, t as getAtomValueResult } from "../use-atom-value-DKo4W6ZY.js";
|
|
2
2
|
import { createContext } from "preact";
|
|
3
3
|
import { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from "preact/hooks";
|
|
4
4
|
import { jsx } from "preact/jsx-runtime";
|
|
@@ -6,6 +6,10 @@ import { jsx } from "preact/jsx-runtime";
|
|
|
6
6
|
/** @jsxImportSource preact */
|
|
7
7
|
const StoreContext = createContext(null);
|
|
8
8
|
function Provider({ store, children }) {
|
|
9
|
+
useAtomSubscriptionScope(store, {
|
|
10
|
+
useLayoutEffect,
|
|
11
|
+
useState
|
|
12
|
+
});
|
|
9
13
|
return /* @__PURE__ */ jsx(StoreContext.Provider, {
|
|
10
14
|
value: store,
|
|
11
15
|
children
|
|
@@ -59,7 +63,7 @@ function useStableFn(fn) {
|
|
|
59
63
|
//#region src/preact/use-atom-value.ts
|
|
60
64
|
function useAtomValue(atom, opts) {
|
|
61
65
|
const store = useStore();
|
|
62
|
-
const snapshot = useSyncExternalStore(useStableFn((
|
|
66
|
+
const snapshot = useSyncExternalStore(useStableFn(useAtomSubscription(store, atom)), useStableFn(() => store.getSnapshot(atom)));
|
|
63
67
|
const initialRenderRef = useRef(true);
|
|
64
68
|
const isInitialRender = initialRenderRef.current;
|
|
65
69
|
initialRenderRef.current = false;
|
package/dist/preact/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/preact/provider.tsx","../../src/preact/use-sync-external-store.ts","../../src/preact/use-stable-fn.ts","../../src/preact/use-atom-value.ts","../../src/preact/use-apply-atom.ts","../../src/preact/use-mutation.ts","../../src/preact/use-atom.ts","../../src/preact/use-atom-context.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/preact/provider.tsx","../../src/preact/use-sync-external-store.ts","../../src/preact/use-stable-fn.ts","../../src/preact/use-atom-value.ts","../../src/preact/use-apply-atom.ts","../../src/preact/use-mutation.ts","../../src/preact/use-atom.ts","../../src/preact/use-atom-context.ts"],"mappings":";;;;;;AAMA,MAAM,eAAe,cAA4B,KAAK;AAOtD,SAAgB,SAAS,EAAE,OAAO,YAAkC;CAClE,yBAAyB,OAAO;EAAE;EAAiB;EAAU,CAAC;CAC9D,OAAO,oBAAC,aAAa,UAAd;EAAuB,OAAO;EAAQ;EAAiC,CAAA;;AAGhF,SAAgB,WAAkB;CAChC,MAAM,QAAQ,WAAW,aAAa;CACtC,IAAI,SAAS,MACX,MAAM,IAAI,MAAM,4CAA4C;CAE9D,OAAO;;;;AChBT,SAAS,kBAAqB,MAAiC;CAC7D,IAAI;EACF,OAAO,CAAC,OAAO,GAAG,KAAK,QAAQ,KAAK,cAAc,CAAC;SAC7C;EACN,OAAO;;;AAIX,SAAgB,qBACd,WACA,aACG;CACH,MAAM,QAAQ,aAAa;CAE3B,MAAM,CAAC,EAAE,aAAa,eAAe,gBAAgB,EACnD,WAAW;EAAE,QAAQ;EAAO,cAAc;EAAa,EACxD,EAAE;CAEH,sBAAsB;EACpB,UAAU,SAAS;EACnB,UAAU,eAAe;EAEzB,IAAI,kBAAkB,UAAU,EAC9B,YAAY,EAAE,WAAW,CAAC;IAE3B;EAAC;EAAW;EAAO;EAAY,CAAC;CAEnC,gBAAgB;EACd,IAAI,kBAAkB,UAAU,EAC9B,YAAY,EAAE,WAAW,CAAC;EAG5B,OAAO,gBAAgB;GACrB,IAAI,kBAAkB,UAAU,EAC9B,YAAY,EAAE,WAAW,CAAC;IAE5B;IACD,CAAC,UAAU,CAAC;CAEf,OAAO;;;;AC5CT,SAAgB,YACd,IACsB;CACtB,MAAM,MAAM,OAAO,GAAG;CACtB,IAAI,UAAU;CAEd,OAAO,aAAa,GAAG,SAAe,IAAI,QAAQ,GAAG,KAAK,EAAE,EAAE,CAAC;;;;ACQjE,SAAgB,aAAgB,MAAe,MAAgD;CAC7F,MAAM,QAAQ,UAAU;CAKxB,MAAM,WAAyB,qBAHb,YAAY,oBAAoB,OAAO,KAAK,CAGD,EAFzC,kBAAkB,MAAM,YAAY,KAAK,CAEa,CAAC;CAK3E,MAAM,mBAAmB,OAAO,KAAK;CACrC,MAAM,kBAAkB,iBAAiB;CACzC,iBAAiB,UAAU;CAE3B,OAAO,mBAAmB,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM,gBAAgB;;;;AC3B3F,SAAgB,aACd,MAC+B;CAC/B,MAAM,QAAQ,UAAU;CACxB,OAAO,aAAa,GAAG,SAA2B,MAAM,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,OAAO,KAAK,CAAC;;;;ACJ9F,SAAgB,YACd,UACkC;CAClC,MAAM,QAAQ,UAAU;CACxB,OAAO,aACJ,GAAG,SAA8B,MAAM,OAAO,UAAU,GAAG,KAAK,EACjE,CAAC,OAAO,SAAS,CAClB;;;;ACPH,SAAgB,QACd,MAC6C;CAG7C,OAAO,CAFO,aAAa,KAEd,EADE,aAAa,KACP,CAAC;;;;ACLxB,SAAgB,eAAkB,UAA8D;CAC9F,MAAM,QAAQ,UAAU;CACxB,OAAO,kBAA8B,SAAS,MAAM,WAAW,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC"}
|
package/dist/react/index.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { t as getAtomValueResult } from "../use-atom-value-
|
|
2
|
-
import { createContext, useCallback, useContext, useRef, useSyncExternalStore } from "react";
|
|
1
|
+
import { n as useAtomSubscription, r as useAtomSubscriptionScope, t as getAtomValueResult } from "../use-atom-value-DKo4W6ZY.js";
|
|
2
|
+
import { createContext, useCallback, useContext, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
//#region src/react/provider.tsx
|
|
5
5
|
const StoreContext = createContext(null);
|
|
6
6
|
function Provider({ store, children }) {
|
|
7
|
+
useAtomSubscriptionScope(store, {
|
|
8
|
+
useLayoutEffect,
|
|
9
|
+
useState
|
|
10
|
+
});
|
|
7
11
|
return /* @__PURE__ */ jsx(StoreContext.Provider, {
|
|
8
12
|
value: store,
|
|
9
13
|
children
|
|
@@ -25,7 +29,7 @@ function useStableFn(fn) {
|
|
|
25
29
|
//#region src/react/use-atom-value.ts
|
|
26
30
|
function useAtomValue(atom, opts) {
|
|
27
31
|
const store = useStore();
|
|
28
|
-
const snapshot = useSyncExternalStore(useStableFn((
|
|
32
|
+
const snapshot = useSyncExternalStore(useStableFn(useAtomSubscription(store, atom)), useStableFn(() => store.getSnapshot(atom)), useStableFn(() => store.getServerSnapshot(atom)));
|
|
29
33
|
const initialRenderRef = useRef(true);
|
|
30
34
|
const isInitialRender = initialRenderRef.current;
|
|
31
35
|
initialRenderRef.current = false;
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/react/provider.tsx","../../src/react/use-stable-fn.ts","../../src/react/use-atom-value.ts","../../src/react/use-apply-atom.ts","../../src/react/use-mutation.ts","../../src/react/use-atom.ts","../../src/react/use-atom-context.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/react/provider.tsx","../../src/react/use-stable-fn.ts","../../src/react/use-atom-value.ts","../../src/react/use-apply-atom.ts","../../src/react/use-mutation.ts","../../src/react/use-atom.ts","../../src/react/use-atom-context.ts"],"mappings":";;;;AAIA,MAAM,eAAe,cAA4B,KAAK;AAOtD,SAAgB,SAAS,EAAE,OAAO,YAAsC;CACtE,yBAAyB,OAAO;EAAE;EAAiB;EAAU,CAAC;CAC9D,OAAO,oBAAC,aAAa,UAAd;EAAuB,OAAO;EAAQ;EAAiC,CAAA;;AAGhF,SAAgB,WAAkB;CAChC,MAAM,QAAQ,WAAW,aAAa;CACtC,IAAI,SAAS,MACX,MAAM,IAAI,MAAM,4CAA4C;CAE9D,OAAO;;;;ACnBT,SAAgB,YACd,IACsB;CACtB,MAAM,MAAM,OAAO,GAAG;CACtB,IAAI,UAAU;CAEd,OAAO,aAAa,GAAG,SAAe,IAAI,QAAQ,GAAG,KAAK,EAAE,EAAE,CAAC;;;;ACOjE,SAAgB,aAAgB,MAAe,MAAgD;CAC7F,MAAM,QAAQ,UAAU;CAMxB,MAAM,WAAyB,qBAJb,YAAY,oBAAoB,OAAO,KAAK,CAID,EAHzC,kBAAkB,MAAM,YAAY,KAAK,CAGa,EAFhD,kBAAkB,MAAM,kBAAkB,KAAK,CAEoB,CAAC;CAK9F,MAAM,mBAAmB,OAAO,KAAK;CACrC,MAAM,kBAAkB,iBAAiB;CACzC,iBAAiB,UAAU;CAE3B,OAAO,mBAAmB,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM,gBAAgB;;;;AC3B3F,SAAgB,aACd,MAC+B;CAC/B,MAAM,QAAQ,UAAU;CACxB,OAAO,aAAa,GAAG,SAA2B,MAAM,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,OAAO,KAAK,CAAC;;;;ACJ9F,SAAgB,YACd,UACkC;CAClC,MAAM,QAAQ,UAAU;CACxB,OAAO,aACJ,GAAG,SAA8B,MAAM,OAAO,UAAU,GAAG,KAAK,EACjE,CAAC,OAAO,SAAS,CAClB;;;;ACPH,SAAgB,QACd,MAC6C;CAG7C,OAAO,CAFO,aAAa,KAEd,EADE,aAAa,KACP,CAAC;;;;ACLxB,SAAgB,eAAkB,UAA8D;CAC9F,MAAM,QAAQ,UAAU;CACxB,OAAO,kBAA8B,SAAS,MAAM,WAAW,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { t as CONFIG } from "./types-B2mzc3A5.js";
|
|
2
|
+
//#region src/internal/use-atom-subscription.ts
|
|
3
|
+
const scopes = /* @__PURE__ */ new WeakMap();
|
|
4
|
+
function getScope(store) {
|
|
5
|
+
let scope = scopes.get(store);
|
|
6
|
+
if (scope == null) {
|
|
7
|
+
scope = {
|
|
8
|
+
generation: 0,
|
|
9
|
+
provisionals: /* @__PURE__ */ new Set(),
|
|
10
|
+
byAtom: /* @__PURE__ */ new WeakMap(),
|
|
11
|
+
sweepTimer: null,
|
|
12
|
+
disposeTimer: null
|
|
13
|
+
};
|
|
14
|
+
scopes.set(store, scope);
|
|
15
|
+
}
|
|
16
|
+
return scope;
|
|
17
|
+
}
|
|
18
|
+
function releaseProvisional(scope, provisional) {
|
|
19
|
+
scope.provisionals.delete(provisional);
|
|
20
|
+
if (scope.byAtom.get(provisional.atom) === provisional) scope.byAtom.delete(provisional.atom);
|
|
21
|
+
provisional.unsubscribe();
|
|
22
|
+
}
|
|
23
|
+
function sweepStaleProvisionals(scope) {
|
|
24
|
+
for (const provisional of scope.provisionals) if (provisional.generation < scope.generation) releaseProvisional(scope, provisional);
|
|
25
|
+
}
|
|
26
|
+
function releaseAllProvisionals(scope) {
|
|
27
|
+
for (const provisional of scope.provisionals) releaseProvisional(scope, provisional);
|
|
28
|
+
}
|
|
29
|
+
function useAtomSubscriptionScope(store, hooks) {
|
|
30
|
+
const [, setTick] = hooks.useState(0);
|
|
31
|
+
const scope = getScope(store);
|
|
32
|
+
if (scope.disposeTimer != null) {
|
|
33
|
+
clearTimeout(scope.disposeTimer);
|
|
34
|
+
scope.disposeTimer = null;
|
|
35
|
+
}
|
|
36
|
+
scope.generation++;
|
|
37
|
+
hooks.useLayoutEffect(() => {
|
|
38
|
+
sweepStaleProvisionals(scope);
|
|
39
|
+
if (scope.provisionals.size > 0 && scope.sweepTimer == null) scope.sweepTimer = setTimeout(() => {
|
|
40
|
+
scope.sweepTimer = null;
|
|
41
|
+
setTick((tick) => tick + 1);
|
|
42
|
+
}, 50);
|
|
43
|
+
});
|
|
44
|
+
hooks.useLayoutEffect(() => {
|
|
45
|
+
return () => {
|
|
46
|
+
if (scope.sweepTimer != null) {
|
|
47
|
+
clearTimeout(scope.sweepTimer);
|
|
48
|
+
scope.sweepTimer = null;
|
|
49
|
+
}
|
|
50
|
+
if (scope.provisionals.size > 0 && scope.disposeTimer == null) scope.disposeTimer = setTimeout(() => {
|
|
51
|
+
scope.disposeTimer = null;
|
|
52
|
+
releaseAllProvisionals(scope);
|
|
53
|
+
}, 50);
|
|
54
|
+
};
|
|
55
|
+
}, [scope]);
|
|
56
|
+
}
|
|
57
|
+
function useAtomSubscription(store, atom) {
|
|
58
|
+
const scope = getScope(store);
|
|
59
|
+
let provisional = scope.byAtom.get(atom);
|
|
60
|
+
if (provisional == null) {
|
|
61
|
+
provisional = {
|
|
62
|
+
atom,
|
|
63
|
+
generation: scope.generation,
|
|
64
|
+
unsubscribe: store.subscribe(atom, () => void 0)
|
|
65
|
+
};
|
|
66
|
+
scope.byAtom.set(atom, provisional);
|
|
67
|
+
scope.provisionals.add(provisional);
|
|
68
|
+
} else provisional.generation = scope.generation;
|
|
69
|
+
return (notify) => {
|
|
70
|
+
const unsubscribe = store.subscribe(atom, notify);
|
|
71
|
+
const current = scope.byAtom.get(atom);
|
|
72
|
+
if (current != null) releaseProvisional(scope, current);
|
|
73
|
+
return unsubscribe;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/internal/use-atom-value.ts
|
|
78
|
+
function getAtomValueResult(store, atom, snapshot, observe, isInitialRender) {
|
|
79
|
+
const stalePolicy = atom[CONFIG].stalePolicy ?? "keep";
|
|
80
|
+
if (snapshot.status === "pending") throw store.read(atom);
|
|
81
|
+
if (snapshot.status === "stale") {
|
|
82
|
+
if (stalePolicy === "suspend") throw store.read(atom);
|
|
83
|
+
store.read(atom);
|
|
84
|
+
if (observe) return {
|
|
85
|
+
value: snapshot.value,
|
|
86
|
+
isStale: true,
|
|
87
|
+
error: void 0
|
|
88
|
+
};
|
|
89
|
+
return snapshot.value;
|
|
90
|
+
}
|
|
91
|
+
if (snapshot.status === "error") {
|
|
92
|
+
if (observe && snapshot.value !== void 0) return {
|
|
93
|
+
value: snapshot.value,
|
|
94
|
+
isStale: false,
|
|
95
|
+
error: snapshot.error
|
|
96
|
+
};
|
|
97
|
+
if (isInitialRender) store.read(atom);
|
|
98
|
+
throw snapshot.error;
|
|
99
|
+
}
|
|
100
|
+
if (observe) return {
|
|
101
|
+
value: snapshot.value,
|
|
102
|
+
isStale: false,
|
|
103
|
+
error: void 0
|
|
104
|
+
};
|
|
105
|
+
return snapshot.value;
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
export { useAtomSubscription as n, useAtomSubscriptionScope as r, getAtomValueResult as t };
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=use-atom-value-DKo4W6ZY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-atom-value-DKo4W6ZY.js","names":[],"sources":["../src/internal/use-atom-subscription.ts","../src/internal/use-atom-value.ts"],"mappings":"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"}
|
package/dist/vue/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, inject, provide, readonly, shallowRef
|
|
1
|
+
import { defineComponent, inject, onScopeDispose, provide, readonly, shallowRef } from "vue";
|
|
2
2
|
//#region src/vue/provider.ts
|
|
3
3
|
const StoreKey = Symbol("kvark-store");
|
|
4
4
|
const Provider = defineComponent({
|
|
@@ -21,6 +21,7 @@ function useStore() {
|
|
|
21
21
|
//#region src/vue/use-atom-value.ts
|
|
22
22
|
function useAtomValue(atom, opts) {
|
|
23
23
|
const store = useStore();
|
|
24
|
+
const result = shallowRef(void 0);
|
|
24
25
|
let isInitialDerive = true;
|
|
25
26
|
function derive(snapshot) {
|
|
26
27
|
if (snapshot.status === "pending") {
|
|
@@ -57,13 +58,11 @@ function useAtomValue(atom, opts) {
|
|
|
57
58
|
};
|
|
58
59
|
return snapshot.value;
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
+
onScopeDispose(store.subscribe(atom, () => {
|
|
62
|
+
result.value = derive(store.getSnapshot(atom));
|
|
63
|
+
}));
|
|
64
|
+
result.value = derive(store.getSnapshot(atom));
|
|
61
65
|
isInitialDerive = false;
|
|
62
|
-
watchEffect((onCleanup) => {
|
|
63
|
-
onCleanup(store.subscribe(atom, () => {
|
|
64
|
-
result.value = derive(store.getSnapshot(atom));
|
|
65
|
-
}));
|
|
66
|
-
});
|
|
67
66
|
const ref = readonly(result);
|
|
68
67
|
return new Proxy(ref, { get(target, prop, receiver) {
|
|
69
68
|
if (prop === "then") return (onFulfilled, onRejected) => store.read(atom).then(() => ref, onRejected).then(onFulfilled);
|
package/dist/vue/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/vue/provider.ts","../../src/vue/use-atom-value.ts","../../src/vue/use-apply-atom.ts","../../src/vue/use-mutation.ts","../../src/vue/use-atom.ts","../../src/vue/use-atom-context.ts"],"mappings":";;AAGA,MAAM,WAAgC,OAAO,cAAc;AAE3D,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAA2B,UAAU;EAAM,EAC3D;CACD,MAAM,OAAO,EAAE,SAAS;EACtB,QAAQ,UAAU,MAAM,MAAM;EAC9B,aAAa,MAAM,cAAc;;CAEpC,CAAC;AAEF,SAAgB,WAAkB;CAChC,MAAM,QAAQ,OAAO,SAAS;CAC9B,IAAI,SAAS,MACX,MAAM,IAAI,MAAM,4CAA4C;CAE9D,OAAO;;;;ACAT,SAAgB,aACd,MACA,MACuD;CACvD,MAAM,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/vue/provider.ts","../../src/vue/use-atom-value.ts","../../src/vue/use-apply-atom.ts","../../src/vue/use-mutation.ts","../../src/vue/use-atom.ts","../../src/vue/use-atom-context.ts"],"mappings":";;AAGA,MAAM,WAAgC,OAAO,cAAc;AAE3D,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAA2B,UAAU;EAAM,EAC3D;CACD,MAAM,OAAO,EAAE,SAAS;EACtB,QAAQ,UAAU,MAAM,MAAM;EAC9B,aAAa,MAAM,cAAc;;CAEpC,CAAC;AAEF,SAAgB,WAAkB;CAChC,MAAM,QAAQ,OAAO,SAAS;CAC9B,IAAI,SAAS,MACX,MAAM,IAAI,MAAM,4CAA4C;CAE9D,OAAO;;;;ACAT,SAAgB,aACd,MACA,MACuD;CACvD,MAAM,QAAQ,UAAU;CACxB,MAAM,SAAS,WAA6C,KAAA,EAAU;CAKtE,IAAI,kBAAkB;CAEtB,SAAS,OAAO,UAA8C;EAC5D,IAAI,SAAS,WAAW,WAAW;GACjC,MAAW,KAAK,KAAK;GACrB,IAAI,MAAM,YAAY,MACpB,OAAO;IAAE,OAAO,KAAA;IAAgB,SAAS;IAAO,OAAO,KAAA;IAAW;GAEpE;;EAGF,IAAI,SAAS,WAAW,SAAS;GAC/B,MAAW,KAAK,KAAK;GACrB,IAAI,MAAM,YAAY,MACpB,OAAO;IAAE,OAAO,SAAS;IAAO,SAAS;IAAM,OAAO,KAAA;IAAW;GAEnE,OAAO,SAAS;;EAGlB,IAAI,SAAS,WAAW,SAAS;GAC/B,IAAI,MAAM,YAAY,QAAQ,SAAS,UAAU,KAAA,GAC/C,OAAO;IAAE,OAAO,SAAS;IAAY,SAAS;IAAO,OAAO,SAAS;IAAO;GAM9E,IAAI,iBACF,MAAW,KAAK,KAAK;GAEvB,MAAM,SAAS;;EAIjB,IAAI,MAAM,YAAY,MACpB,OAAO;GAAE,OAAO,SAAS;GAAO,SAAS;GAAO,OAAO,KAAA;GAAW;EAEpE,OAAO,SAAS;;CAMlB,eAHc,MAAM,UAAU,YAAY;EACxC,OAAO,QAAQ,OAAO,MAAM,YAAY,KAAK,CAAC;GAE5B,CAAC;CAErB,OAAO,QAAQ,OAAO,MAAM,YAAY,KAAK,CAAC;CAC9C,kBAAkB;CAElB,MAAM,MAAM,SAAS,OAAO;CAE5B,OAAO,IAAI,MAAM,KAAK,EACpB,IAAI,QAAQ,MAAM,UAAU;EAC1B,IAAI,SAAS,QACX,QAAQ,aAAuC,eAC7C,MACG,KAAK,KAAK,CACV,WAAW,KAAK,WAAW,CAC3B,KAAK,YAAqB;EAEjC,OAAO,QAAQ,IAAI,QAAQ,MAAM,SAAS;IAE7C,CAAC;;;;ACzFJ,SAAgB,aACd,MAC+B;CAC/B,MAAM,QAAQ,UAAU;CACxB,QAAQ,GAAG,SAA2B,MAAM,MAAM,MAAM,GAAG,KAAK;;;;ACJlE,SAAgB,YACd,UACkC;CAClC,MAAM,QAAQ,UAAU;CACxB,QAAQ,GAAG,SAA8B,MAAM,OAAO,UAAU,GAAG,KAAK;;;;ACI1E,SAAgB,QACd,MACyB;CACzB,MAAM,QAAQ,aAAa,KAAK;CAChC,MAAM,SAAS,aAAa,KAAK;CAGjC,OAAO,OAAO,OAAO,CAFN,OAAO,OAEI,EAAE,EAE1B,KAAK,aAA4C,YAAsC;EACrF,OAAO,QAAQ,QAAQ,MAAM,CAC1B,WAAW,CAAC,OAAO,OAAO,EAAW,WAAW,CAChD,KAAK,YAAqB;IAEhC,CAAC;;;;ACtBJ,SAAgB,eAAkB,UAA8D;CAC9F,MAAM,QAAQ,UAAU;CACxB,aAAyB,SAAS,MAAM,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { t as CONFIG } from "./types-B2mzc3A5.js";
|
|
2
|
-
//#region src/internal/use-atom-value.ts
|
|
3
|
-
function getAtomValueResult(store, atom, snapshot, observe, isInitialRender) {
|
|
4
|
-
const stalePolicy = atom[CONFIG].stalePolicy ?? "keep";
|
|
5
|
-
if (snapshot.status === "pending") throw store.read(atom);
|
|
6
|
-
if (snapshot.status === "stale") {
|
|
7
|
-
if (stalePolicy === "suspend") throw store.read(atom);
|
|
8
|
-
store.read(atom);
|
|
9
|
-
if (observe) return {
|
|
10
|
-
value: snapshot.value,
|
|
11
|
-
isStale: true,
|
|
12
|
-
error: void 0
|
|
13
|
-
};
|
|
14
|
-
return snapshot.value;
|
|
15
|
-
}
|
|
16
|
-
if (snapshot.status === "error") {
|
|
17
|
-
if (observe && snapshot.value !== void 0) return {
|
|
18
|
-
value: snapshot.value,
|
|
19
|
-
isStale: false,
|
|
20
|
-
error: snapshot.error
|
|
21
|
-
};
|
|
22
|
-
if (isInitialRender) store.read(atom);
|
|
23
|
-
throw snapshot.error;
|
|
24
|
-
}
|
|
25
|
-
if (observe) return {
|
|
26
|
-
value: snapshot.value,
|
|
27
|
-
isStale: false,
|
|
28
|
-
error: void 0
|
|
29
|
-
};
|
|
30
|
-
return snapshot.value;
|
|
31
|
-
}
|
|
32
|
-
//#endregion
|
|
33
|
-
export { getAtomValueResult as t };
|
|
34
|
-
|
|
35
|
-
//# sourceMappingURL=use-atom-value-BhGvD9Vf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-atom-value-BhGvD9Vf.js","names":[],"sources":["../src/internal/use-atom-value.ts"],"mappings":";;AAUA,SAAgB,mBACd,OACA,MACA,UACA,SACA,iBACsB;CACtB,MAAM,cAA2B,KAAK,QAAQ,eAAe;CAE7D,IAAI,SAAS,WAAW,WACtB,MAAM,MAAM,KAAK,KAAK;CAGxB,IAAI,SAAS,WAAW,SAAS;EAC/B,IAAI,gBAAgB,WAClB,MAAM,MAAM,KAAK,KAAK;EAExB,MAAW,KAAK,KAAK;EAErB,IAAI,SACF,OAAO;GAAE,OAAO,SAAS;GAAO,SAAS;GAAM,OAAO,KAAA;GAAW;EAEnE,OAAO,SAAS;;CAGlB,IAAI,SAAS,WAAW,SAAS;EAC/B,IAAI,WAAW,SAAS,UAAU,KAAA,GAChC,OAAO;GACL,OAAO,SAAS;GAChB,SAAS;GACT,OAAO,SAAS;GACjB;EAEH,IAAI,iBACF,MAAW,KAAK,KAAK;EAEvB,MAAM,SAAS;;CAGjB,IAAI,SACF,OAAO;EAAE,OAAO,SAAS;EAAO,SAAS;EAAO,OAAO,KAAA;EAAW;CAEpE,OAAO,SAAS"}
|