@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 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
 
@@ -1,4 +1,4 @@
1
- import { t as getAtomValueResult } from "../use-atom-value-BhGvD9Vf.js";
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((notify) => store.subscribe(atom, notify)), useStableFn(() => store.getSnapshot(atom)));
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;
@@ -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":";;;;;;AAKA,MAAM,eAAe,cAA4B,KAAK;AAOtD,SAAgB,SAAS,EAAE,OAAO,YAAkC;CAClE,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;;;;ACdT,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;;;;ACOjE,SAAgB,aAAgB,MAAe,MAAgD;CAC7F,MAAM,QAAQ,UAAU;CAKxB,MAAM,WAAyB,qBAHb,aAAa,WAAuB,MAAM,UAAU,MAAM,OAAO,CAGtB,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;;;;AC1B3F,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"}
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"}
@@ -1,9 +1,13 @@
1
- import { t as getAtomValueResult } from "../use-atom-value-BhGvD9Vf.js";
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((notify) => store.subscribe(atom, notify)), useStableFn(() => store.getSnapshot(atom)), useStableFn(() => store.getServerSnapshot(atom)));
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;
@@ -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":";;;;AAGA,MAAM,eAAe,cAA4B,KAAK;AAOtD,SAAgB,SAAS,EAAE,OAAO,YAAsC;CACtE,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;;;;ACjBT,SAAgB,YACd,IACsB;CACtB,MAAM,MAAM,OAAO,GAAG;CACtB,IAAI,UAAU;CAEd,OAAO,aAAa,GAAG,SAAe,IAAI,QAAQ,GAAG,KAAK,EAAE,EAAE,CAAC;;;;ACMjE,SAAgB,aAAgB,MAAe,MAAgD;CAC7F,MAAM,QAAQ,UAAU;CAMxB,MAAM,WAAyB,qBAJb,aAAa,WAAuB,MAAM,UAAU,MAAM,OAAO,CAItB,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;;;;AC1B3F,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"}
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, watchEffect } from "vue";
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
- const result = shallowRef(derive(store.getSnapshot(atom)));
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);
@@ -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;CAKxB,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;;CAGlB,MAAM,SAAS,WAAW,OAAO,MAAM,YAAY,KAAK,CAAC,CAAC;CAC1D,kBAAkB;CAElB,aAAa,cAAc;EAIzB,UAHc,MAAM,UAAU,YAAY;GACxC,OAAO,QAAQ,OAAO,MAAM,YAAY,KAAK,CAAC;IAEjC,CAAC;GAChB;CAEF,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;;;;AC1FJ,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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdeveloper/kvark",
3
- "version": "1.1.6",
3
+ "version": "1.2.0",
4
4
  "description": "Atomic state management with explicit dependency graphs",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -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"}