atom.io 0.40.6 → 0.40.8

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.
Files changed (186) hide show
  1. package/README.md +1 -1
  2. package/dist/data/index.d.ts +1 -1
  3. package/dist/data/index.js +1 -2
  4. package/dist/data/index.js.map +1 -1
  5. package/dist/employ-socket-D6wgByWh.js +12 -0
  6. package/dist/employ-socket-D6wgByWh.js.map +1 -0
  7. package/dist/eslint-plugin/index.js.map +1 -1
  8. package/dist/has-role-CMlaUlaf.js +1133 -0
  9. package/dist/has-role-CMlaUlaf.js.map +1 -0
  10. package/dist/internal/index.d.ts +248 -248
  11. package/dist/internal/index.d.ts.map +1 -1
  12. package/dist/internal/index.js +590 -1803
  13. package/dist/internal/index.js.map +1 -1
  14. package/dist/introspection/index.d.ts +1 -1
  15. package/dist/introspection/index.d.ts.map +1 -1
  16. package/dist/introspection/index.js +13 -32
  17. package/dist/introspection/index.js.map +1 -1
  18. package/dist/is-fn-DY1wZ-md.js +10 -0
  19. package/dist/is-fn-DY1wZ-md.js.map +1 -0
  20. package/dist/json/index.d.ts.map +1 -1
  21. package/dist/json/index.js.map +1 -1
  22. package/dist/main/index.d.ts +33 -33
  23. package/dist/main/index.d.ts.map +1 -1
  24. package/dist/main/index.js +3 -4
  25. package/dist/main/index.js.map +1 -1
  26. package/dist/mutex-store-CSvxY9i3.js +11 -0
  27. package/dist/mutex-store-CSvxY9i3.js.map +1 -0
  28. package/dist/react/index.d.ts +5 -5
  29. package/dist/react/index.d.ts.map +1 -1
  30. package/dist/react/index.js.map +1 -1
  31. package/dist/react-devtools/index.d.ts.map +1 -1
  32. package/dist/react-devtools/index.js +9 -11
  33. package/dist/react-devtools/index.js.map +1 -1
  34. package/dist/realtime/index.d.ts +7 -15
  35. package/dist/realtime/index.d.ts.map +1 -1
  36. package/dist/realtime/index.js +4 -35
  37. package/dist/realtime/index.js.map +1 -1
  38. package/dist/realtime-client/index.d.ts +6 -9
  39. package/dist/realtime-client/index.d.ts.map +1 -1
  40. package/dist/realtime-client/index.js +96 -88
  41. package/dist/realtime-client/index.js.map +1 -1
  42. package/dist/realtime-react/index.d.ts +17 -13
  43. package/dist/realtime-react/index.d.ts.map +1 -1
  44. package/dist/realtime-react/index.js +39 -50
  45. package/dist/realtime-react/index.js.map +1 -1
  46. package/dist/realtime-server/index.d.ts +83 -84
  47. package/dist/realtime-server/index.d.ts.map +1 -1
  48. package/dist/realtime-server/index.js +604 -543
  49. package/dist/realtime-server/index.js.map +1 -1
  50. package/dist/realtime-testing/index.d.ts +5 -4
  51. package/dist/realtime-testing/index.d.ts.map +1 -1
  52. package/dist/realtime-testing/index.js +35 -22
  53. package/dist/realtime-testing/index.js.map +1 -1
  54. package/dist/shared-room-store-BfW3nWif.js +31 -0
  55. package/dist/shared-room-store-BfW3nWif.js.map +1 -0
  56. package/dist/shared-room-store-D2o4ZLjC.d.ts +15 -0
  57. package/dist/shared-room-store-D2o4ZLjC.d.ts.map +1 -0
  58. package/dist/transceivers/set-rtx/index.d.ts.map +1 -1
  59. package/dist/transceivers/set-rtx/index.js +4 -8
  60. package/dist/transceivers/set-rtx/index.js.map +1 -1
  61. package/dist/web/index.d.ts +3 -3
  62. package/dist/web/index.d.ts.map +1 -1
  63. package/dist/web/index.js +4 -3
  64. package/dist/web/index.js.map +1 -1
  65. package/package.json +13 -13
  66. package/src/internal/atom/create-regular-atom.ts +5 -4
  67. package/src/internal/atom/dispose-atom.ts +7 -2
  68. package/src/internal/atom/has-role.ts +3 -3
  69. package/src/internal/caching.ts +4 -2
  70. package/src/internal/families/create-readonly-held-selector-family.ts +2 -1
  71. package/src/internal/families/create-readonly-pure-selector-family.ts +5 -2
  72. package/src/internal/families/create-regular-atom-family.ts +2 -1
  73. package/src/internal/families/create-writable-held-selector-family.ts +2 -1
  74. package/src/internal/families/create-writable-pure-selector-family.ts +5 -2
  75. package/src/internal/families/dispose-from-store.ts +4 -4
  76. package/src/internal/families/find-in-store.ts +10 -10
  77. package/src/internal/families/get-family-of-token.ts +2 -2
  78. package/src/internal/families/index.ts +1 -0
  79. package/src/internal/families/mint-in-store.ts +54 -19
  80. package/src/internal/families/seek-in-store.ts +1 -1
  81. package/src/internal/get-state/get-fallback.ts +2 -2
  82. package/src/internal/get-state/get-from-store.ts +5 -5
  83. package/src/internal/get-state/read-or-compute-value.ts +1 -1
  84. package/src/internal/get-state/reduce-reference.ts +8 -6
  85. package/src/internal/index.ts +2 -220
  86. package/src/internal/molecule.ts +1 -2
  87. package/src/internal/mutable/create-mutable-atom-family.ts +3 -2
  88. package/src/internal/mutable/create-mutable-atom.ts +4 -2
  89. package/src/internal/mutable/get-json-family.ts +1 -1
  90. package/src/internal/mutable/get-update-family.ts +1 -1
  91. package/src/internal/mutable/tracker-family.ts +2 -1
  92. package/src/internal/mutable/tracker.ts +71 -59
  93. package/src/internal/safe-compute.ts +1 -1
  94. package/src/internal/selector/create-readonly-held-selector.ts +2 -1
  95. package/src/internal/selector/create-readonly-pure-selector.ts +2 -1
  96. package/src/internal/selector/create-writable-held-selector.ts +2 -1
  97. package/src/internal/selector/create-writable-pure-selector.ts +2 -1
  98. package/src/internal/selector/dispose-selector.ts +3 -2
  99. package/src/internal/selector/register-selector.ts +8 -5
  100. package/src/internal/selector/trace-selector-atoms.ts +2 -1
  101. package/src/internal/set-state/dispatch-state-update.ts +3 -2
  102. package/src/internal/set-state/evict-downstream.ts +1 -1
  103. package/src/internal/set-state/operate-on-store.ts +16 -22
  104. package/src/internal/set-state/reset-atom-or-selector.ts +5 -3
  105. package/src/internal/set-state/reset-in-store.ts +5 -5
  106. package/src/internal/set-state/set-atom-or-selector.ts +2 -2
  107. package/src/internal/set-state/set-atom.ts +4 -2
  108. package/src/internal/set-state/set-into-store.ts +21 -39
  109. package/src/internal/set-state/set-selector.ts +3 -2
  110. package/src/internal/state-types.ts +228 -0
  111. package/src/internal/store/deposit.ts +4 -4
  112. package/src/internal/store/index.ts +0 -1
  113. package/src/internal/store/store.ts +9 -9
  114. package/src/internal/store/withdraw.ts +4 -4
  115. package/src/internal/subscribe/recall-state.ts +1 -1
  116. package/src/internal/subscribe/subscribe-to-root-atoms.ts +1 -12
  117. package/src/internal/subscribe/subscribe-to-state.ts +9 -0
  118. package/src/internal/subscribe/subscribe-to-transaction.ts +3 -2
  119. package/src/internal/transaction/build-transaction.ts +3 -2
  120. package/src/internal/transaction/index.ts +1 -23
  121. package/src/internal/transaction/is-root-store.ts +4 -1
  122. package/src/internal/transaction/transaction-meta-progress.ts +22 -0
  123. package/src/main/atom.ts +1 -2
  124. package/src/main/find-state.ts +5 -5
  125. package/src/main/get-state.ts +4 -4
  126. package/src/main/realm.ts +2 -2
  127. package/src/main/set-state.ts +10 -10
  128. package/src/react/parse-state-overloads.ts +3 -3
  129. package/src/react/use-i.ts +6 -4
  130. package/src/react/use-loadable.ts +4 -10
  131. package/src/react/use-o.ts +6 -4
  132. package/src/react-devtools/store.ts +6 -6
  133. package/src/realtime/index.ts +1 -0
  134. package/src/realtime/mutex-store.ts +11 -0
  135. package/src/realtime/realtime-continuity.ts +1 -5
  136. package/src/realtime-client/index.ts +0 -1
  137. package/src/realtime-client/pull-atom-family-member.ts +14 -17
  138. package/src/realtime-client/pull-atom.ts +1 -1
  139. package/src/realtime-client/pull-mutable-atom-family-member.ts +16 -12
  140. package/src/realtime-client/pull-selector-family-member.ts +8 -35
  141. package/src/realtime-client/pull-selector-roots.ts +90 -0
  142. package/src/realtime-client/pull-selector.ts +2 -27
  143. package/src/realtime-client/push-state.ts +33 -5
  144. package/src/realtime-client/realtime-client-stores/client-main-store.ts +2 -5
  145. package/src/realtime-react/index.ts +2 -2
  146. package/src/realtime-react/realtime-context.tsx +9 -5
  147. package/src/realtime-react/use-pull-atom-family-member.ts +2 -3
  148. package/src/realtime-react/use-pull-mutable-family-member.ts +2 -3
  149. package/src/realtime-react/use-pull-selector-family-member.ts +5 -6
  150. package/src/realtime-react/use-push.ts +7 -3
  151. package/src/realtime-react/use-realtime-service.ts +11 -11
  152. package/src/realtime-react/use-single-effect.ts +11 -14
  153. package/src/realtime-server/{realtime-server-stores/server-sync-store.ts → continuity/continuity-store.ts} +2 -27
  154. package/src/realtime-server/continuity/provide-continuity.ts +50 -0
  155. package/src/realtime-server/continuity/{subscribe-to-continuity-actions.ts → provide-outcomes.ts} +15 -13
  156. package/src/realtime-server/continuity/{subscribe-to-continuity-perpectives.ts → provide-perspectives.ts} +10 -8
  157. package/src/realtime-server/continuity/{prepare-to-send-initial-payload.ts → provide-startup-payloads.ts} +6 -4
  158. package/src/realtime-server/continuity/receive-action-requests.ts +68 -0
  159. package/src/realtime-server/continuity/track-acknowledgements.ts +46 -0
  160. package/src/realtime-server/employ-socket.ts +14 -0
  161. package/src/realtime-server/index.ts +3 -22
  162. package/src/realtime-server/ipc-sockets/child-socket.ts +125 -66
  163. package/src/realtime-server/ipc-sockets/custom-socket.ts +16 -14
  164. package/src/realtime-server/ipc-sockets/parent-socket.ts +98 -69
  165. package/src/realtime-server/realtime-family-provider.ts +78 -29
  166. package/src/realtime-server/realtime-mutable-family-provider.ts +80 -31
  167. package/src/realtime-server/realtime-mutable-provider.ts +30 -22
  168. package/src/realtime-server/realtime-server-stores/index.ts +0 -2
  169. package/src/realtime-server/realtime-server-stores/server-room-external-store.ts +77 -36
  170. package/src/realtime-server/realtime-server-stores/server-user-store.ts +12 -1
  171. package/src/realtime-server/realtime-state-provider.ts +30 -29
  172. package/src/realtime-server/realtime-state-receiver.ts +62 -16
  173. package/src/realtime-server/server-config.ts +8 -0
  174. package/src/realtime-server/socket-interface.ts +14 -0
  175. package/src/realtime-testing/setup-realtime-test.tsx +70 -31
  176. package/src/web/index.ts +1 -1
  177. package/src/web/{persist-sync.ts → storage-sync.ts} +5 -2
  178. package/src/internal/store/mint-or-counterfeit.ts +0 -108
  179. package/src/realtime-client/server-action.ts +0 -23
  180. package/src/realtime-react/on-mount.ts +0 -5
  181. package/src/realtime-react/use-server-action.ts +0 -19
  182. package/src/realtime-server/continuity/prepare-to-serve-transaction-request.ts +0 -59
  183. package/src/realtime-server/continuity/prepare-to-sync-realtime-continuity.ts +0 -145
  184. package/src/realtime-server/continuity/prepare-to-track-client-acknowledgement.ts +0 -41
  185. package/src/realtime-server/realtime-action-receiver.ts +0 -40
  186. package/src/realtime-server/realtime-server-stores/server-room-external-actions.ts +0 -79
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["StoreContext: React.Context<RootStore>","React","StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: RootStore\n}>","token: ReadableToken<any, any, any>","React","setter: React.RefObject<\n\t\t(<New extends T>(next: New | ((old: T) => New)) => void) | null\n\t>","React","React","stateToken: MutableAtomToken<any>","StoreContext","value: unknown","state: ReadableState<any, any>","fallback: unknown","key: Canonical","useO","React"],"sources":["../../src/react/store-context.tsx","../../src/react/parse-state-overloads.ts","../../src/react/use-i.ts","../../src/react/use-o.ts","../../src/react/use-json.ts","../../src/react/use-loadable.ts","../../src/react/use-tl.ts"],"sourcesContent":["import type { RootStore } from \"atom.io/internal\"\nimport { IMPLICIT } from \"atom.io/internal\"\nimport * as React from \"react\"\n\nexport const StoreContext: React.Context<RootStore> = React.createContext(\n\tIMPLICIT.STORE,\n)\n\nexport const StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: RootStore\n}> = ({ children, store = IMPLICIT.STORE }) => (\n\t<StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n)\n","import type {\n\tReadableFamilyToken,\n\tReadableToken,\n\tWritableFamilyToken,\n\tWritableToken,\n} from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { findInStore } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nexport function parseStateOverloads<T, K extends Canonical, Key extends K, E>(\n\tstore: Store,\n\t...rest: [WritableFamilyToken<T, K, E>, Key] | [WritableToken<T, any, E>]\n): WritableToken<T, K, E>\n\nexport function parseStateOverloads<T, K extends Canonical, Key extends K, E>(\n\tstore: Store,\n\t...rest: [ReadableFamilyToken<T, K, E>, Key] | [ReadableToken<T, any, E>]\n): ReadableToken<T, K, E>\n\nexport function parseStateOverloads<T, K extends Canonical, Key extends K, E>(\n\tstore: Store,\n\t...rest: [ReadableFamilyToken<T, K, E>, Key] | [ReadableToken<T, any, E>]\n): ReadableToken<T, K, E> {\n\tlet token: ReadableToken<any, any, any>\n\tif (rest.length === 2) {\n\t\tconst family = rest[0]\n\t\tconst key = rest[1]\n\n\t\ttoken = findInStore(store, family, key)\n\t} else {\n\t\ttoken = rest[0]\n\t}\n\treturn token\n}\n","import type { WritableFamilyToken, WritableToken } from \"atom.io\"\nimport { setIntoStore } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { parseStateOverloads } from \"./parse-state-overloads\"\nimport { StoreContext } from \"./store-context\"\n\nexport function useI<T>(\n\ttoken: WritableToken<T, any, any>,\n): <New extends T>(next: New | ((old: T) => New)) => void\n\nexport function useI<T, K extends Canonical, Key extends K>(\n\ttoken: WritableFamilyToken<T, K, any>,\n\tkey: Key,\n): <New extends T>(next: New | ((old: T) => New)) => void\n\nexport function useI<T, K extends Canonical, Key extends K>(\n\t...params: [WritableFamilyToken<T, K, any>, Key] | [WritableToken<T, any, any>]\n): <New extends T>(next: New | ((old: T) => New)) => void {\n\tconst store = React.useContext(StoreContext)\n\tconst token = parseStateOverloads(store, ...params)\n\tconst setter: React.RefObject<\n\t\t(<New extends T>(next: New | ((old: T) => New)) => void) | null\n\t> = React.useRef(null)\n\tsetter.current ??= (next) => {\n\t\tsetIntoStore(store, token, next)\n\t}\n\treturn setter.current\n}\n","import type { ReadableFamilyToken, ReadableToken } from \"atom.io\"\nimport { getFromStore, subscribeToState } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { parseStateOverloads } from \"./parse-state-overloads\"\nimport { StoreContext } from \"./store-context\"\n\nexport function useO<T, E>(token: ReadableToken<T, any, E>): E | T\n\nexport function useO<T, K extends Canonical, Key extends K, E>(\n\ttoken: ReadableFamilyToken<T, K, E>,\n\tkey: Key,\n): E | T\n\nexport function useO<T, K extends Canonical, Key extends K, E>(\n\t...params: [ReadableFamilyToken<T, K, E>, Key] | [ReadableToken<T, any, E>]\n): E | T {\n\tconst store = React.useContext(StoreContext)\n\tconst token = parseStateOverloads(store, ...params)\n\tconst id = React.useId()\n\treturn React.useSyncExternalStore<E | T>(\n\t\t(dispatch) => subscribeToState(store, token, `use-o:${id}`, dispatch),\n\t\t() => getFromStore(store, token),\n\t\t() => getFromStore(store, token),\n\t)\n}\n","import type { MutableAtomFamilyToken, MutableAtomToken } from \"atom.io\"\nimport type { AsJSON, Transceiver } from \"atom.io/internal\"\nimport { findInStore, getJsonToken } from \"atom.io/internal\"\nimport type { Canonical, Json } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { StoreContext } from \"./store-context\"\nimport { useO } from \"./use-o\"\n\nexport function useJSON<T extends Transceiver<any, any, any>>(\n\ttoken: MutableAtomToken<T>,\n): AsJSON<T>\n\nexport function useJSON<\n\tT extends Transceiver<any, any, any>,\n\tK extends Canonical,\n>(token: MutableAtomFamilyToken<T, K>, key: K): AsJSON<T>\n\nexport function useJSON(\n\ttoken: MutableAtomFamilyToken<any, any> | MutableAtomToken<any>,\n\tkey?: Canonical,\n): Json.Serializable {\n\tconst store = React.useContext(StoreContext)\n\tconst stateToken: MutableAtomToken<any> =\n\t\ttoken.type === `mutable_atom_family` ? findInStore(store, token, key) : token\n\tconst jsonToken = getJsonToken(store, stateToken)\n\treturn useO(jsonToken)\n}\n","/** biome-ignore-all lint/correctness/useHookAtTopLevel: params are used in an invariant way */\nimport type { Loadable, ReadableFamilyToken, ReadableToken } from \"atom.io\"\nimport { findInStore, type ReadableState, withdraw } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport { StoreContext, useO } from \"atom.io/react\"\nimport React from \"react\"\n\nexport function useLoadable<T, E>(\n\ttoken: ReadableToken<Loadable<T>, any, E>,\n): `LOADING` | { loading: boolean; value: E | T }\n\nexport function useLoadable<T, K extends Canonical, Key extends K, E>(\n\ttoken: ReadableFamilyToken<Loadable<T>, K, E>,\n\tkey: Key,\n): `LOADING` | { loading: boolean; value: E | T }\n\nexport function useLoadable<T, F extends T, E>(\n\ttoken: ReadableToken<Loadable<T>, any, E>,\n\tfallback: F,\n): { loading: boolean; value: T; error?: E }\n\nexport function useLoadable<\n\tT,\n\tK extends Canonical,\n\tF extends T,\n\tKey extends K,\n\tE,\n>(\n\ttoken: ReadableFamilyToken<Loadable<T>, K, E>,\n\tkey: Key,\n\tfallback: F,\n): { loading: boolean; value: T; error?: E }\n\nexport function useLoadable(\n\t...params:\n\t\t| readonly [ReadableFamilyToken<any, Canonical, any>, Canonical, unknown]\n\t\t| readonly [ReadableFamilyToken<any, Canonical, any>, Canonical]\n\t\t| readonly [ReadableToken<any, any, any>, unknown]\n\t\t| readonly [ReadableToken<any, any, any>]\n): `LOADING` | { loading: boolean; value: unknown; error?: unknown } {\n\tconst store = React.useContext(StoreContext)\n\n\tlet value: unknown\n\tlet state: ReadableState<any, any>\n\tlet fallback: unknown\n\n\tconst [token] = params\n\tlet key: Canonical\n\tswitch (token.type) {\n\t\tcase `atom`:\n\t\tcase `mutable_atom`:\n\t\tcase `readonly_held_selector`:\n\t\tcase `readonly_pure_selector`:\n\t\tcase `writable_held_selector`:\n\t\tcase `writable_pure_selector`:\n\t\t\tvalue = useO(token)\n\t\t\tstate = withdraw(store, token)\n\t\t\tfallback = params[1]\n\t\t\tbreak\n\t\tcase `atom_family`:\n\t\tcase `mutable_atom_family`:\n\t\tcase `readonly_held_selector_family`:\n\t\tcase `readonly_pure_selector_family`:\n\t\tcase `writable_held_selector_family`:\n\t\tcase `writable_pure_selector_family`:\n\t\t\tkey = params[1] as Canonical\n\t\t\tvalue = useO(token, key)\n\t\t\tstate = withdraw(store, findInStore(store, token, key))\n\t\t\tfallback = params[2]\n\t}\n\n\tconst isErr = `catch` in state && state.catch.some((E) => value instanceof E)\n\n\tconst wrapperRef = React.useRef<{\n\t\tloading: boolean\n\t\tvalue: unknown\n\t\terror?: unknown\n\t}>({ loading: false, value: null as unknown })\n\tconst lastLoadedRef = React.useRef(\n\t\tfallback ?? (value instanceof Promise ? `LOADING` : value),\n\t)\n\n\tconst { current: lastLoaded } = lastLoadedRef\n\tlet { current: wrapper } = wrapperRef\n\n\tconst wasErr =\n\t\t`catch` in state && state.catch.some((E) => lastLoaded instanceof E)\n\n\tif (value instanceof Promise) {\n\t\tif (lastLoaded === `LOADING`) {\n\t\t\treturn `LOADING`\n\t\t}\n\t\tif (wasErr && fallback) {\n\t\t\twrapper = wrapperRef.current = {\n\t\t\t\tloading: true,\n\t\t\t\tvalue: fallback,\n\t\t\t\terror: lastLoaded,\n\t\t\t}\n\t\t} else {\n\t\t\twrapper = wrapperRef.current = { loading: true, value: lastLoaded }\n\t\t}\n\t} else {\n\t\tlastLoadedRef.current = value\n\t\tif (wrapper.loading === true) {\n\t\t\tif (isErr && fallback) {\n\t\t\t\twrapper = wrapperRef.current = {\n\t\t\t\t\tloading: false,\n\t\t\t\t\tvalue: fallback,\n\t\t\t\t\terror: value,\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twrapper = wrapperRef.current = { loading: false, value: value }\n\t\t\t}\n\t\t} else {\n\t\t\tif (isErr && fallback) {\n\t\t\t\twrapper.loading = false\n\t\t\t\twrapper.value = fallback\n\t\t\t\twrapper.error = value\n\t\t\t} else {\n\t\t\t\twrapper.loading = false\n\t\t\t\twrapper.value = value\n\t\t\t\tdelete wrapper.error\n\t\t\t}\n\t\t}\n\t}\n\n\treturn wrapper\n}\n","import type { TimelineToken } from \"atom.io\"\nimport { redo, undo } from \"atom.io\"\nimport { subscribeToTimeline, withdraw } from \"atom.io/internal\"\nimport * as React from \"react\"\n\nimport { StoreContext } from \"./store-context\"\n\nexport type TimelineMeta = {\n\tat: number\n\tlength: number\n\tundo: () => void\n\tredo: () => void\n}\n\nexport function useTL(token: TimelineToken<any>): TimelineMeta {\n\tconst store = React.useContext(StoreContext)\n\tconst id = React.useId()\n\tconst timeline = withdraw(store, token)\n\tconst tokenRef = React.useRef(token)\n\tconst rebuildMeta = () => {\n\t\treturn {\n\t\t\tat: timeline.at,\n\t\t\tlength: timeline.history.length,\n\t\t\tundo: () => {\n\t\t\t\tundo(token)\n\t\t\t},\n\t\t\tredo: () => {\n\t\t\t\tredo(token)\n\t\t\t},\n\t\t}\n\t}\n\tconst meta = React.useRef<TimelineMeta>(rebuildMeta())\n\tconst retrieve = () => {\n\t\tif (\n\t\t\tmeta.current.at !== timeline?.at ||\n\t\t\tmeta.current.length !== timeline?.history.length ||\n\t\t\ttokenRef.current !== token\n\t\t) {\n\t\t\ttokenRef.current = token\n\t\t\tmeta.current = rebuildMeta()\n\t\t}\n\t\treturn meta.current\n\t}\n\treturn React.useSyncExternalStore<TimelineMeta>(\n\t\t(dispatch) => subscribeToTimeline(store, token, `use-tl:${id}`, dispatch),\n\t\tretrieve,\n\t\tretrieve,\n\t)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["StoreContext: React.Context<RootStore>","React","StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: RootStore\n}>","token: ReadableToken<any, any, any>","React","setter: React.RefObject<\n\t\t(<New extends T>(next: New | ((old: T) => New)) => void) | null\n\t>","React","React","stateToken: MutableAtomToken<any>","StoreContext","value: unknown","state: ReadableState<any, any>","fallback: unknown","key: Canonical","useO","React"],"sources":["../../src/react/store-context.tsx","../../src/react/parse-state-overloads.ts","../../src/react/use-i.ts","../../src/react/use-o.ts","../../src/react/use-json.ts","../../src/react/use-loadable.ts","../../src/react/use-tl.ts"],"sourcesContent":["import type { RootStore } from \"atom.io/internal\"\nimport { IMPLICIT } from \"atom.io/internal\"\nimport * as React from \"react\"\n\nexport const StoreContext: React.Context<RootStore> = React.createContext(\n\tIMPLICIT.STORE,\n)\n\nexport const StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: RootStore\n}> = ({ children, store = IMPLICIT.STORE }) => (\n\t<StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n)\n","import type {\n\tReadableFamilyToken,\n\tReadableToken,\n\tWritableFamilyToken,\n\tWritableToken,\n} from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { findInStore } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nexport function parseStateOverloads<T, K extends Canonical, Key extends K, E>(\n\tstore: Store,\n\t...rest: [WritableFamilyToken<T, K, E>, Key] | [WritableToken<T, any, E>]\n): WritableToken<T, Key, E>\n\nexport function parseStateOverloads<T, K extends Canonical, Key extends K, E>(\n\tstore: Store,\n\t...rest: [ReadableFamilyToken<T, K, E>, Key] | [ReadableToken<T, any, E>]\n): ReadableToken<T, Key, E>\n\nexport function parseStateOverloads<T, K extends Canonical, Key extends K, E>(\n\tstore: Store,\n\t...rest: [ReadableFamilyToken<T, K, E>, Key] | [ReadableToken<T, any, E>]\n): ReadableToken<T, Key, E> {\n\tlet token: ReadableToken<any, any, any>\n\tif (rest.length === 2) {\n\t\tconst family = rest[0]\n\t\tconst key = rest[1]\n\n\t\ttoken = findInStore(store, family, key)\n\t} else {\n\t\ttoken = rest[0]\n\t}\n\treturn token\n}\n","import type { WritableFamilyToken, WritableToken } from \"atom.io\"\nimport { setIntoStore } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { parseStateOverloads } from \"./parse-state-overloads\"\nimport { StoreContext } from \"./store-context\"\n\nexport function useI<T>(\n\ttoken: WritableToken<T, any, any>,\n): <New extends T>(next: New | ((old: T) => New)) => void\n\nexport function useI<T, K extends Canonical>(\n\ttoken: WritableFamilyToken<T, K, any>,\n\tkey: NoInfer<K>,\n): <New extends T>(next: New | ((old: T) => New)) => void\n\nexport function useI<T, K extends Canonical>(\n\t...params:\n\t\t| [WritableFamilyToken<T, K, any>, NoInfer<K>]\n\t\t| [WritableToken<T, any, any>]\n): <New extends T>(next: New | ((old: T) => New)) => void {\n\tconst store = React.useContext(StoreContext)\n\tconst token = parseStateOverloads(store, ...params)\n\tconst setter: React.RefObject<\n\t\t(<New extends T>(next: New | ((old: T) => New)) => void) | null\n\t> = React.useRef(null)\n\tsetter.current ??= (next) => {\n\t\tsetIntoStore(store, token, next)\n\t}\n\treturn setter.current\n}\n","import type { ReadableFamilyToken, ReadableToken } from \"atom.io\"\nimport { getFromStore, subscribeToState } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { parseStateOverloads } from \"./parse-state-overloads\"\nimport { StoreContext } from \"./store-context\"\n\nexport function useO<T, E>(token: ReadableToken<T, any, E>): E | T\n\nexport function useO<T, K extends Canonical, E>(\n\ttoken: ReadableFamilyToken<T, K, E>,\n\tkey: NoInfer<K>,\n): E | T\n\nexport function useO<T, K extends Canonical, E>(\n\t...params:\n\t\t| [ReadableFamilyToken<T, K, E>, NoInfer<K>]\n\t\t| [ReadableToken<T, any, E>]\n): E | T {\n\tconst store = React.useContext(StoreContext)\n\tconst token = parseStateOverloads(store, ...params)\n\tconst id = React.useId()\n\treturn React.useSyncExternalStore<E | T>(\n\t\t(dispatch) => subscribeToState(store, token, `use-o:${id}`, dispatch),\n\t\t() => getFromStore(store, token),\n\t\t() => getFromStore(store, token),\n\t)\n}\n","import type { MutableAtomFamilyToken, MutableAtomToken } from \"atom.io\"\nimport type { AsJSON, Transceiver } from \"atom.io/internal\"\nimport { findInStore, getJsonToken } from \"atom.io/internal\"\nimport type { Canonical, Json } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { StoreContext } from \"./store-context\"\nimport { useO } from \"./use-o\"\n\nexport function useJSON<T extends Transceiver<any, any, any>>(\n\ttoken: MutableAtomToken<T>,\n): AsJSON<T>\n\nexport function useJSON<\n\tT extends Transceiver<any, any, any>,\n\tK extends Canonical,\n>(token: MutableAtomFamilyToken<T, K>, key: K): AsJSON<T>\n\nexport function useJSON(\n\ttoken: MutableAtomFamilyToken<any, any> | MutableAtomToken<any>,\n\tkey?: Canonical,\n): Json.Serializable {\n\tconst store = React.useContext(StoreContext)\n\tconst stateToken: MutableAtomToken<any> =\n\t\ttoken.type === `mutable_atom_family` ? findInStore(store, token, key) : token\n\tconst jsonToken = getJsonToken(store, stateToken)\n\treturn useO(jsonToken)\n}\n","/** biome-ignore-all lint/correctness/useHookAtTopLevel: params are used in an invariant way */\nimport type { Loadable, ReadableFamilyToken, ReadableToken } from \"atom.io\"\nimport { findInStore, type ReadableState, withdraw } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport { StoreContext, useO } from \"atom.io/react\"\nimport React from \"react\"\n\nexport function useLoadable<T, E>(\n\ttoken: ReadableToken<Loadable<T>, any, E>,\n): `LOADING` | { loading: boolean; value: E | T }\n\nexport function useLoadable<T, K extends Canonical, E>(\n\ttoken: ReadableFamilyToken<Loadable<T>, K, E>,\n\tkey: NoInfer<K>,\n): `LOADING` | { loading: boolean; value: E | T }\n\nexport function useLoadable<T, F extends T, E>(\n\ttoken: ReadableToken<Loadable<T>, any, E>,\n\tfallback: F,\n): { loading: boolean; value: T; error?: E }\n\nexport function useLoadable<T, K extends Canonical, F extends T, E>(\n\ttoken: ReadableFamilyToken<Loadable<T>, K, E>,\n\tkey: NoInfer<K>,\n\tfallback: F,\n): { loading: boolean; value: T; error?: E }\n\nexport function useLoadable(\n\t...params:\n\t\t| readonly [ReadableFamilyToken<any, Canonical, any>, Canonical, unknown]\n\t\t| readonly [ReadableFamilyToken<any, Canonical, any>, Canonical]\n\t\t| readonly [ReadableToken<any, any, any>, unknown]\n\t\t| readonly [ReadableToken<any, any, any>]\n): `LOADING` | { loading: boolean; value: unknown; error?: unknown } {\n\tconst store = React.useContext(StoreContext)\n\n\tlet value: unknown\n\tlet state: ReadableState<any, any>\n\tlet fallback: unknown\n\n\tconst [token] = params\n\tlet key: Canonical\n\tswitch (token.type) {\n\t\tcase `atom`:\n\t\tcase `mutable_atom`:\n\t\tcase `readonly_held_selector`:\n\t\tcase `readonly_pure_selector`:\n\t\tcase `writable_held_selector`:\n\t\tcase `writable_pure_selector`:\n\t\t\tvalue = useO(token)\n\t\t\tstate = withdraw(store, token)\n\t\t\tfallback = params[1]\n\t\t\tbreak\n\t\tcase `atom_family`:\n\t\tcase `mutable_atom_family`:\n\t\tcase `readonly_held_selector_family`:\n\t\tcase `readonly_pure_selector_family`:\n\t\tcase `writable_held_selector_family`:\n\t\tcase `writable_pure_selector_family`:\n\t\t\tkey = params[1] as Canonical\n\t\t\tvalue = useO(token, key)\n\t\t\tstate = withdraw(store, findInStore(store, token, key))\n\t\t\tfallback = params[2]\n\t}\n\n\tconst isErr = `catch` in state && state.catch.some((E) => value instanceof E)\n\n\tconst wrapperRef = React.useRef<{\n\t\tloading: boolean\n\t\tvalue: unknown\n\t\terror?: unknown\n\t}>({ loading: false, value: null as unknown })\n\tconst lastLoadedRef = React.useRef(\n\t\tfallback ?? (value instanceof Promise ? `LOADING` : value),\n\t)\n\n\tconst { current: lastLoaded } = lastLoadedRef\n\tlet { current: wrapper } = wrapperRef\n\n\tconst wasErr =\n\t\t`catch` in state && state.catch.some((E) => lastLoaded instanceof E)\n\n\tif (value instanceof Promise) {\n\t\tif (lastLoaded === `LOADING`) {\n\t\t\treturn `LOADING`\n\t\t}\n\t\tif (wasErr && fallback) {\n\t\t\twrapper = wrapperRef.current = {\n\t\t\t\tloading: true,\n\t\t\t\tvalue: fallback,\n\t\t\t\terror: lastLoaded,\n\t\t\t}\n\t\t} else {\n\t\t\twrapper = wrapperRef.current = { loading: true, value: lastLoaded }\n\t\t}\n\t} else {\n\t\tlastLoadedRef.current = value\n\t\tif (wrapper.loading === true) {\n\t\t\tif (isErr && fallback) {\n\t\t\t\twrapper = wrapperRef.current = {\n\t\t\t\t\tloading: false,\n\t\t\t\t\tvalue: fallback,\n\t\t\t\t\terror: value,\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twrapper = wrapperRef.current = { loading: false, value: value }\n\t\t\t}\n\t\t} else {\n\t\t\tif (isErr && fallback) {\n\t\t\t\twrapper.loading = false\n\t\t\t\twrapper.value = fallback\n\t\t\t\twrapper.error = value\n\t\t\t} else {\n\t\t\t\twrapper.loading = false\n\t\t\t\twrapper.value = value\n\t\t\t\tdelete wrapper.error\n\t\t\t}\n\t\t}\n\t}\n\n\treturn wrapper\n}\n","import type { TimelineToken } from \"atom.io\"\nimport { redo, undo } from \"atom.io\"\nimport { subscribeToTimeline, withdraw } from \"atom.io/internal\"\nimport * as React from \"react\"\n\nimport { StoreContext } from \"./store-context\"\n\nexport type TimelineMeta = {\n\tat: number\n\tlength: number\n\tundo: () => void\n\tredo: () => void\n}\n\nexport function useTL(token: TimelineToken<any>): TimelineMeta {\n\tconst store = React.useContext(StoreContext)\n\tconst id = React.useId()\n\tconst timeline = withdraw(store, token)\n\tconst tokenRef = React.useRef(token)\n\tconst rebuildMeta = () => {\n\t\treturn {\n\t\t\tat: timeline.at,\n\t\t\tlength: timeline.history.length,\n\t\t\tundo: () => {\n\t\t\t\tundo(token)\n\t\t\t},\n\t\t\tredo: () => {\n\t\t\t\tredo(token)\n\t\t\t},\n\t\t}\n\t}\n\tconst meta = React.useRef<TimelineMeta>(rebuildMeta())\n\tconst retrieve = () => {\n\t\tif (\n\t\t\tmeta.current.at !== timeline?.at ||\n\t\t\tmeta.current.length !== timeline?.history.length ||\n\t\t\ttokenRef.current !== token\n\t\t) {\n\t\t\ttokenRef.current = token\n\t\t\tmeta.current = rebuildMeta()\n\t\t}\n\t\treturn meta.current\n\t}\n\treturn React.useSyncExternalStore<TimelineMeta>(\n\t\t(dispatch) => subscribeToTimeline(store, token, `use-tl:${id}`, dispatch),\n\t\tretrieve,\n\t\tretrieve,\n\t)\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["AtomIODevtools: React.FC<{ hideByDefault?: boolean }>","ElasticInput: ForwardRefExoticComponent<\n\tDetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> & {\n\t\twidthPadding?: number\n\t}\n>","VALID_NON_NUMBER_INTERPRETATIONS: Readonly<\n\tRecord<ValidNonNumber, number | null>\n>","DEFAULT_NUMBER_CONSTRAINTS: NumberConstraints","NumberInput: FC<NumberInputProps>","TextInput: FC<TextInputProps>","DefaultFallback: FC<FallbackProps>","DEFAULT_JSON_EDITOR_COMPONENTS: JsonEditorComponents","SubEditors: Record<\n\tkeyof JsonTypes,\n\tFC<JsonEditorProps_INTERNAL<any>>\n>"],"sources":["../../src/react-devtools/AtomIODevtools.tsx","../../src/react-devtools/elastic-input/ElasticInput.tsx","../../src/react-devtools/elastic-input/NumberInput.tsx","../../src/react-devtools/elastic-input/TextInput.tsx","../../src/react-devtools/error-boundary/DefaultFallback.tsx","../../src/react-devtools/error-boundary/ReactErrorBoundary.tsx","../../src/react-devtools/json-editor/default-components.tsx","../../src/react-devtools/json-editor/json-editor-internal.tsx","../../src/react-devtools/json-editor/developer-interface.tsx","../../src/react-devtools/json-editor/editors-by-type/utilities/cast-to-json.ts","../../src/react-devtools/json-editor/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["AtomIODevtools: React.FC<{ hideByDefault?: boolean }>","ElasticInput: ForwardRefExoticComponent<\n\tDetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> & {\n\t\twidthPadding?: number\n\t}\n>","VALID_NON_NUMBER_INTERPRETATIONS: Readonly<\n\tRecord<ValidNonNumber, number | null>\n>","DEFAULT_NUMBER_CONSTRAINTS: NumberConstraints","NumberInput: FC<NumberInputProps>","TextInput: FC<TextInputProps>","DefaultFallback: FC<FallbackProps>","DEFAULT_JSON_EDITOR_COMPONENTS: JsonEditorComponents","SubEditors: Record<\n\tkeyof JsonTypes,\n\tFC<JsonEditorProps_INTERNAL<any>>\n>"],"sources":["../../src/react-devtools/AtomIODevtools.tsx","../../src/react-devtools/elastic-input/ElasticInput.tsx","../../src/react-devtools/elastic-input/NumberInput.tsx","../../src/react-devtools/elastic-input/TextInput.tsx","../../src/react-devtools/error-boundary/DefaultFallback.tsx","../../src/react-devtools/error-boundary/ReactErrorBoundary.tsx","../../src/react-devtools/json-editor/default-components.tsx","../../src/react-devtools/json-editor/json-editor-internal.tsx","../../src/react-devtools/json-editor/developer-interface.tsx","../../src/react-devtools/json-editor/editors-by-type/utilities/cast-to-json.ts","../../src/react-devtools/json-editor/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { actUponStore, arbitrary, become, createRegularAtom, createRegularAtomFamily, createTransaction, disposeFromStore, findInStore, getFromStore } from "atom.io/internal";
2
- import { JSON_DEFAULTS, fromEntries, isJson, stringifyJson, toEntries } from "atom.io/json";
3
2
  import { redo, undo } from "atom.io";
3
+ import { JSON_DEFAULTS, fromEntries, isJson, stringifyJson, toEntries } from "atom.io/json";
4
4
  import { Component, Fragment, createContext, forwardRef, useContext, useId, useImperativeHandle, useLayoutEffect, useRef, useState } from "react";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { StoreContext, useI, useO } from "atom.io/react";
7
7
  import { LayoutGroup, motion } from "motion/react";
8
8
  import { attachIntrospectionStates, discoverType, isPlainObject, jsonRefinery, prettyJson, primitiveRefinery } from "atom.io/introspection";
9
- import { persistSync } from "atom.io/web";
9
+ import { storageSync } from "atom.io/web";
10
10
 
11
11
  //#region src/react-devtools/Button.tsx
12
12
  const OpenClose = ({ isOpen, setIsOpen, onShiftClick, disabled, testid }) => {
@@ -171,7 +171,7 @@ function attachDevtoolsStates(store, hideByDefault = false) {
171
171
  const devtoolsAreHiddenAtom = createRegularAtom(store, {
172
172
  key: `🔍 Devtools Are Hidden`,
173
173
  default: hideByDefault,
174
- effects: typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, `🔍 Devtools Are Hidden`), ({ setSelf }) => {
174
+ effects: typeof window === `undefined` ? [] : [storageSync(window.localStorage, JSON, `🔍 Devtools Are Hidden`), ({ setSelf }) => {
175
175
  window.addEventListener(`keydown`, (e) => {
176
176
  if (e.ctrlKey && e.shiftKey && e.key.toLowerCase() === `a`) {
177
177
  e.preventDefault();
@@ -183,12 +183,12 @@ function attachDevtoolsStates(store, hideByDefault = false) {
183
183
  const devtoolsAreOpenAtom = createRegularAtom(store, {
184
184
  key: `🔍 Devtools Are Open`,
185
185
  default: true,
186
- effects: typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, `🔍 Devtools Are Open`)]
186
+ effects: typeof window === `undefined` ? [] : [storageSync(window.localStorage, JSON, `🔍 Devtools Are Open`)]
187
187
  }, void 0);
188
188
  const devtoolsViewSelectionAtom = createRegularAtom(store, {
189
189
  key: `🔍 Devtools View Selection`,
190
190
  default: `atoms`,
191
- effects: typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, `🔍 Devtools View`)]
191
+ effects: typeof window === `undefined` ? [] : [storageSync(window.localStorage, JSON, `🔍 Devtools View`)]
192
192
  }, void 0);
193
193
  const devtoolsViewOptionsAtom = createRegularAtom(store, {
194
194
  key: `🔍 Devtools View Options`,
@@ -198,12 +198,12 @@ function attachDevtoolsStates(store, hideByDefault = false) {
198
198
  `transactions`,
199
199
  `timelines`
200
200
  ],
201
- effects: typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, `🔍 Devtools View Options`)]
201
+ effects: typeof window === `undefined` ? [] : [storageSync(window.localStorage, JSON, `🔍 Devtools View Options`)]
202
202
  }, void 0);
203
203
  const viewIsOpenAtoms = createRegularAtomFamily(store, {
204
204
  key: `🔍 Devtools View Is Open`,
205
205
  default: false,
206
- effects: (key) => typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, `view-is-open:${key.join()}`)]
206
+ effects: (key) => typeof window === `undefined` ? [] : [storageSync(window.localStorage, JSON, `view-is-open:${key.join()}`)]
207
207
  });
208
208
  const openCloseAllTX = createTransaction(store, {
209
209
  key: `🔍 Open Close All`,
@@ -866,8 +866,7 @@ const ArrayEditor = ({ path = [], isReadonly = () => false, isHidden = () => fal
866
866
  disabled,
867
867
  onClick: () => {
868
868
  set((current) => {
869
- const newData = [...current, JSON_DEFAULTS.string];
870
- return newData;
869
+ return [...current, JSON_DEFAULTS.string];
871
870
  });
872
871
  },
873
872
  children: /* @__PURE__ */ jsx(Components.AddIcon, {})
@@ -915,8 +914,7 @@ const ObjectEditor = ({ path = [], isReadonly = () => false, isHidden = () => fa
915
914
  children: Object.keys(data).map((key) => {
916
915
  const originalKey = stableKeyMap.current[key];
917
916
  const propertyPath = [...path, key];
918
- const originalPropertyPath = [...path, originalKey];
919
- const stablePathKey = originalPropertyPath.join(`.`);
917
+ const stablePathKey = [...path, originalKey].join(`.`);
920
918
  const viewIsOpenAtom = findInStore(store, viewIsOpenAtoms, [...path, key]);
921
919
  return /* @__PURE__ */ jsx(ObjectProperty, {
922
920
  path: propertyPath,