@buoy-gg/jotai 4.0.1 → 5.0.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.
@@ -33,6 +33,52 @@ const jotaiSyncAdapter = exports.jotaiSyncAdapter = {
33
33
  actions: {
34
34
  clearEvents: () => {
35
35
  _jotaiStateStore.jotaiStateStore.clearAtomChanges();
36
+ },
37
+ /**
38
+ * Compact current-value reader for a remote driver (MCP/LLM): registered
39
+ * atoms with light metadata; each atom's `currentValue` stays on the device
40
+ * unless `includeValues` is set. `writable` tells the caller which atoms
41
+ * can be set via `setAtom`.
42
+ */
43
+ listAtoms: params => {
44
+ const {
45
+ includeValues = false,
46
+ limit
47
+ } = params ?? {};
48
+ const all = _jotaiStateStore.jotaiStateStore.getAtoms();
49
+ const capped = typeof limit === "number" && limit > 0 ? all.slice(0, limit) : all;
50
+ const atoms = capped.map(a => {
51
+ let value;
52
+ if (includeValues) {
53
+ try {
54
+ value = a.getValue();
55
+ } catch {
56
+ value = undefined;
57
+ }
58
+ }
59
+ return {
60
+ label: a.label,
61
+ changes: a.changeCount,
62
+ writable: typeof a.setValue === "function",
63
+ ...(includeValues ? {
64
+ currentValue: value
65
+ } : {})
66
+ };
67
+ });
68
+ return {
69
+ atoms,
70
+ total: all.length,
71
+ returned: atoms.length,
72
+ includedValues: includeValues
73
+ };
74
+ },
75
+ /** Write a value to a writable atom (throws for unknown/read-only atoms). */
76
+ setAtom: params => {
77
+ const {
78
+ label,
79
+ value
80
+ } = params;
81
+ _jotaiStateStore.jotaiStateStore.setAtomValue(label, value);
36
82
  }
37
83
  }
38
84
  };
@@ -303,17 +303,33 @@ class JotaiStateStore {
303
303
 
304
304
  // ---- Atom Registry ----
305
305
 
306
- registerAtom(label, getValue) {
306
+ registerAtom(label, getValue, setValue) {
307
307
  if (this.atoms.has(label)) return;
308
308
  const atomInfo = {
309
309
  label,
310
310
  changeCount: 0,
311
311
  color: getAtomColor(label),
312
- getValue
312
+ getValue,
313
+ setValue
313
314
  };
314
315
  this.atoms.set(label, atomInfo);
315
316
  this.notifyAtomListeners();
316
317
  }
318
+
319
+ /**
320
+ * Write a value to a registered atom (remote write from the dashboard/MCP).
321
+ * Throws if the atom is unknown or read-only (derived atoms have no setter).
322
+ */
323
+ setAtomValue(label, value) {
324
+ const atom = this.atoms.get(label);
325
+ if (!atom) {
326
+ throw new Error(`Atom "${label}" is not registered`);
327
+ }
328
+ if (!atom.setValue) {
329
+ throw new Error(`Atom "${label}" is read-only (derived) — cannot set`);
330
+ }
331
+ atom.setValue(value);
332
+ }
317
333
  unregisterAtom(label) {
318
334
  this.atoms.delete(label);
319
335
  this.notifyAtomListeners();
@@ -60,14 +60,19 @@ function watchAtoms(store, atoms, options) {
60
60
  prevValue = undefined;
61
61
  }
62
62
 
63
- // Register the atom for the browser view
63
+ // Register the atom for the browser view. A setter is captured only when
64
+ // the store supports `set` (writable atoms); read-only/derived atoms throw
65
+ // at set time and are reported as read-only.
66
+ const setter = store.set ? value => {
67
+ store.set(atom, value);
68
+ } : undefined;
64
69
  _jotaiStateStore.jotaiStateStore.registerAtom(label, () => {
65
70
  try {
66
71
  return store.get(atom);
67
72
  } catch {
68
73
  return undefined;
69
74
  }
70
- });
75
+ }, setter);
71
76
 
72
77
  // Record initial value
73
78
  if (enabled) {
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import { jotaiStateStore } from "../utils/jotaiStateStore";
4
-
5
4
  /**
6
5
  * Sync adapter for the jotai tool, consumed by @buoy-gg/external-sync's
7
6
  * `useExternalSync` (structurally matches its ToolSyncAdapter interface so
@@ -30,6 +29,52 @@ export const jotaiSyncAdapter = {
30
29
  actions: {
31
30
  clearEvents: () => {
32
31
  jotaiStateStore.clearAtomChanges();
32
+ },
33
+ /**
34
+ * Compact current-value reader for a remote driver (MCP/LLM): registered
35
+ * atoms with light metadata; each atom's `currentValue` stays on the device
36
+ * unless `includeValues` is set. `writable` tells the caller which atoms
37
+ * can be set via `setAtom`.
38
+ */
39
+ listAtoms: params => {
40
+ const {
41
+ includeValues = false,
42
+ limit
43
+ } = params ?? {};
44
+ const all = jotaiStateStore.getAtoms();
45
+ const capped = typeof limit === "number" && limit > 0 ? all.slice(0, limit) : all;
46
+ const atoms = capped.map(a => {
47
+ let value;
48
+ if (includeValues) {
49
+ try {
50
+ value = a.getValue();
51
+ } catch {
52
+ value = undefined;
53
+ }
54
+ }
55
+ return {
56
+ label: a.label,
57
+ changes: a.changeCount,
58
+ writable: typeof a.setValue === "function",
59
+ ...(includeValues ? {
60
+ currentValue: value
61
+ } : {})
62
+ };
63
+ });
64
+ return {
65
+ atoms,
66
+ total: all.length,
67
+ returned: atoms.length,
68
+ includedValues: includeValues
69
+ };
70
+ },
71
+ /** Write a value to a writable atom (throws for unknown/read-only atoms). */
72
+ setAtom: params => {
73
+ const {
74
+ label,
75
+ value
76
+ } = params;
77
+ jotaiStateStore.setAtomValue(label, value);
33
78
  }
34
79
  }
35
80
  };
@@ -299,17 +299,33 @@ class JotaiStateStore {
299
299
 
300
300
  // ---- Atom Registry ----
301
301
 
302
- registerAtom(label, getValue) {
302
+ registerAtom(label, getValue, setValue) {
303
303
  if (this.atoms.has(label)) return;
304
304
  const atomInfo = {
305
305
  label,
306
306
  changeCount: 0,
307
307
  color: getAtomColor(label),
308
- getValue
308
+ getValue,
309
+ setValue
309
310
  };
310
311
  this.atoms.set(label, atomInfo);
311
312
  this.notifyAtomListeners();
312
313
  }
314
+
315
+ /**
316
+ * Write a value to a registered atom (remote write from the dashboard/MCP).
317
+ * Throws if the atom is unknown or read-only (derived atoms have no setter).
318
+ */
319
+ setAtomValue(label, value) {
320
+ const atom = this.atoms.get(label);
321
+ if (!atom) {
322
+ throw new Error(`Atom "${label}" is not registered`);
323
+ }
324
+ if (!atom.setValue) {
325
+ throw new Error(`Atom "${label}" is read-only (derived) — cannot set`);
326
+ }
327
+ atom.setValue(value);
328
+ }
313
329
  unregisterAtom(label) {
314
330
  this.atoms.delete(label);
315
331
  this.notifyAtomListeners();
@@ -55,14 +55,19 @@ export function watchAtoms(store, atoms, options) {
55
55
  prevValue = undefined;
56
56
  }
57
57
 
58
- // Register the atom for the browser view
58
+ // Register the atom for the browser view. A setter is captured only when
59
+ // the store supports `set` (writable atoms); read-only/derived atoms throw
60
+ // at set time and are reported as read-only.
61
+ const setter = store.set ? value => {
62
+ store.set(atom, value);
63
+ } : undefined;
59
64
  jotaiStateStore.registerAtom(label, () => {
60
65
  try {
61
66
  return store.get(atom);
62
67
  } catch {
63
68
  return undefined;
64
69
  }
65
- });
70
+ }, setter);
66
71
 
67
72
  // Record initial value
68
73
  if (enabled) {
@@ -18,6 +18,25 @@ export declare const jotaiSyncAdapter: {
18
18
  subscribe: (onChange: () => void) => () => void;
19
19
  actions: {
20
20
  clearEvents: () => void;
21
+ /**
22
+ * Compact current-value reader for a remote driver (MCP/LLM): registered
23
+ * atoms with light metadata; each atom's `currentValue` stays on the device
24
+ * unless `includeValues` is set. `writable` tells the caller which atoms
25
+ * can be set via `setAtom`.
26
+ */
27
+ listAtoms: (params: unknown) => {
28
+ atoms: {
29
+ currentValue?: unknown;
30
+ label: string;
31
+ changes: number;
32
+ writable: boolean;
33
+ }[];
34
+ total: number;
35
+ returned: number;
36
+ includedValues: boolean;
37
+ };
38
+ /** Write a value to a writable atom (throws for unknown/read-only atoms). */
39
+ setAtom: (params: unknown) => void;
21
40
  };
22
41
  };
23
42
  //# sourceMappingURL=jotaiSyncAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jotaiSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../src/jotai/sync/jotaiSyncAdapter.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB;;;;;;0BAML,MAAM,IAAI;;;;CAajC,CAAC"}
1
+ {"version":3,"file":"jotaiSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../src/jotai/sync/jotaiSyncAdapter.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB;;;;;;0BAML,MAAM,IAAI;;;QAY9B;;;;;WAKG;4BACiB,OAAO;;;;;;;;;;;QA6B3B,6EAA6E;0BAC3D,OAAO;;CAK5B,CAAC"}
@@ -30,6 +30,8 @@ export interface JotaiAtomInfo {
30
30
  changeCount: number;
31
31
  color: string;
32
32
  getValue: () => unknown;
33
+ /** Writes a value to the atom (only present for writable atoms). */
34
+ setValue?: (value: unknown) => void;
33
35
  }
34
36
  /**
35
37
  * Serializable snapshot of a tracked atom — registry metadata plus current
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/jotai/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IAGxB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/jotai/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IAGxB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -49,7 +49,12 @@ declare class JotaiStateStore {
49
49
  * freezes the mirror.
50
50
  */
51
51
  replaceFromSnapshot(changes: JotaiAtomChange[], atomSnapshots: JotaiAtomSnapshot[]): void;
52
- registerAtom(label: string, getValue: () => unknown): void;
52
+ registerAtom(label: string, getValue: () => unknown, setValue?: (value: unknown) => void): void;
53
+ /**
54
+ * Write a value to a registered atom (remote write from the dashboard/MCP).
55
+ * Throws if the atom is unknown or read-only (derived atoms have no setter).
56
+ */
57
+ setAtomValue(label: string, value: unknown): void;
53
58
  unregisterAtom(label: string): void;
54
59
  getAtoms(): JotaiAtomInfo[];
55
60
  getAtom(label: string): JotaiAtomInfo | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"jotaiStateStore.d.ts","sourceRoot":"","sources":["../../../../src/jotai/utils/jotaiStateStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAiJlB,cAAM,eAAe;IACnB,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,SAAS,CAAwD;IACzE,OAAO,CAAC,aAAa,CAAoD;IACzE,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,iBAAiB,CAAS;IAIlC,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;KAC/B,GAAG,IAAI;IAsCR,cAAc,IAAI,eAAe,EAAE;IAInC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D,gBAAgB,IAAI,IAAI;IAgBxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IASzC;;;;OAIG;IACH,cAAc,IAAI,IAAI;IAItB,uEAAuE;IACvE,mBAAmB,IAAI,OAAO;IAI9B;;;;OAIG;IACH,gBAAgB,IAAI,iBAAiB,EAAE;IAiBvC;;;;;OAKG;IACH,mBAAmB,CACjB,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,iBAAiB,EAAE,GACjC,IAAI;IAuBP,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,IAAI;IAc1D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKnC,QAAQ,IAAI,aAAa,EAAE;IAI3B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIjD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAMnC,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,EAAE;IA4BzD,QAAQ;;;;;;IAYR,mBAAmB,IAAI,MAAM,EAAE;IAM/B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,UAAU,IAAI,OAAO;IAIrB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUhC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAKrE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAKxE,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,mBAAmB;CAI5B;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
1
+ {"version":3,"file":"jotaiStateStore.d.ts","sourceRoot":"","sources":["../../../../src/jotai/utils/jotaiStateStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAiJlB,cAAM,eAAe;IACnB,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,SAAS,CAAwD;IACzE,OAAO,CAAC,aAAa,CAAoD;IACzE,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,iBAAiB,CAAS;IAIlC,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;KAC/B,GAAG,IAAI;IAsCR,cAAc,IAAI,eAAe,EAAE;IAInC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D,gBAAgB,IAAI,IAAI;IAgBxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IASzC;;;;OAIG;IACH,cAAc,IAAI,IAAI;IAItB,uEAAuE;IACvE,mBAAmB,IAAI,OAAO;IAI9B;;;;OAIG;IACH,gBAAgB,IAAI,iBAAiB,EAAE;IAiBvC;;;;;OAKG;IACH,mBAAmB,CACjB,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,iBAAiB,EAAE,GACjC,IAAI;IAuBP,YAAY,CACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,OAAO,EACvB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAClC,IAAI;IAeP;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAWjD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKnC,QAAQ,IAAI,aAAa,EAAE;IAI3B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIjD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAMnC,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,EAAE;IA4BzD,QAAQ;;;;;;IAYR,mBAAmB,IAAI,MAAM,EAAE;IAM/B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,UAAU,IAAI,OAAO;IAIrB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUhC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAKrE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAKxE,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,mBAAmB;CAI5B;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -14,6 +14,8 @@ type AnyAtom = Atom<unknown>;
14
14
  interface JotaiStoreAPI {
15
15
  get: <Value>(atom: Atom<Value>) => Value;
16
16
  sub: (atom: AnyAtom, listener: () => void) => () => void;
17
+ /** Write to a writable atom. Present on real Jotai stores; used for remote set. */
18
+ set?: (atom: AnyAtom, ...args: unknown[]) => unknown;
17
19
  }
18
20
  /**
19
21
  * Watch a set of Jotai atoms for value changes.
@@ -1 +1 @@
1
- {"version":3,"file":"watchAtoms.d.ts","sourceRoot":"","sources":["../../../../src/jotai/utils/watchAtoms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,+DAA+D;AAC/D,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAE7B,mFAAmF;AACnF,UAAU,aAAa;IACrB,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IACzC,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,IAAI,CA6DZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,IAAI,CA2BZ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,YAAY,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"watchAtoms.d.ts","sourceRoot":"","sources":["../../../../src/jotai/utils/watchAtoms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,+DAA+D;AAC/D,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAE7B,mFAAmF;AACnF,UAAU,aAAa;IACrB,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IACzC,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACzD,mFAAmF;IACnF,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,IAAI,CAwEZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,IAAI,CA2BZ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,YAAY,EAAE,aAAa,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/jotai",
3
- "version": "4.0.1",
3
+ "version": "5.0.0",
4
4
  "description": "Jotai atom DevTools for React Native",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -26,8 +26,8 @@
26
26
  ],
27
27
  "sideEffects": false,
28
28
  "dependencies": {
29
- "@buoy-gg/shared-ui": "4.0.1",
30
- "@buoy-gg/license": "4.0.1"
29
+ "@buoy-gg/shared-ui": "5.0.0",
30
+ "@buoy-gg/license": "5.0.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "jotai": ">=2.0.0",