atom.io 0.32.3 → 0.33.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.
Files changed (362) hide show
  1. package/dist/chunk-Cl8Af3a2.js +11 -0
  2. package/dist/data/index.d.ts +28 -0
  3. package/dist/data/index.d.ts.map +1 -0
  4. package/dist/data/index.js +66 -0
  5. package/dist/data/index.js.map +1 -0
  6. package/dist/devtools-CAg2k57t.js +0 -0
  7. package/dist/devtools-Jyn42mZm.css +311 -0
  8. package/dist/devtools-Jyn42mZm.css.map +1 -0
  9. package/dist/eslint-plugin/index.d.ts +36 -0
  10. package/dist/eslint-plugin/index.d.ts.map +1 -0
  11. package/dist/eslint-plugin/index.js +196 -0
  12. package/dist/eslint-plugin/index.js.map +1 -0
  13. package/{internal/dist → dist/internal}/index.d.ts +497 -377
  14. package/dist/internal/index.d.ts.map +1 -0
  15. package/dist/internal/index.js +3213 -0
  16. package/dist/internal/index.js.map +1 -0
  17. package/dist/introspection/index.d.ts +153 -0
  18. package/dist/introspection/index.d.ts.map +1 -0
  19. package/dist/introspection/index.js +520 -0
  20. package/dist/introspection/index.js.map +1 -0
  21. package/{json/dist → dist/json}/index.d.ts +38 -32
  22. package/dist/json/index.d.ts.map +1 -0
  23. package/dist/json/index.js +75 -0
  24. package/dist/json/index.js.map +1 -0
  25. package/dist/main/index.d.ts +691 -0
  26. package/dist/main/index.d.ts.map +1 -0
  27. package/dist/main/index.js +237 -0
  28. package/dist/main/index.js.map +1 -0
  29. package/{react/dist → dist/react}/index.d.ts +22 -11
  30. package/dist/react/index.d.ts.map +1 -0
  31. package/dist/react/index.js +91 -0
  32. package/dist/react/index.js.map +1 -0
  33. package/dist/react-devtools/index.d.ts +194 -0
  34. package/dist/react-devtools/index.d.ts.map +1 -0
  35. package/dist/react-devtools/index.js +1274 -0
  36. package/dist/react-devtools/index.js.map +1 -0
  37. package/dist/realtime/index.d.ts +55 -0
  38. package/dist/realtime/index.d.ts.map +1 -0
  39. package/dist/realtime/index.js +113 -0
  40. package/dist/realtime/index.js.map +1 -0
  41. package/dist/realtime-client/index.d.ts +81 -0
  42. package/dist/realtime-client/index.d.ts.map +1 -0
  43. package/dist/realtime-client/index.js +376 -0
  44. package/dist/realtime-client/index.js.map +1 -0
  45. package/dist/realtime-react/index.d.ts +68 -0
  46. package/dist/realtime-react/index.d.ts.map +1 -0
  47. package/dist/realtime-react/index.js +182 -0
  48. package/dist/realtime-react/index.js.map +1 -0
  49. package/dist/realtime-server/index.d.ts +190 -0
  50. package/dist/realtime-server/index.d.ts.map +1 -0
  51. package/dist/realtime-server/index.js +795 -0
  52. package/dist/realtime-server/index.js.map +1 -0
  53. package/dist/realtime-testing/index.d.ts +60 -0
  54. package/dist/realtime-testing/index.d.ts.map +1 -0
  55. package/dist/realtime-testing/index.js +181 -0
  56. package/dist/realtime-testing/index.js.map +1 -0
  57. package/dist/transceivers/set-rtx/index.d.ts +44 -0
  58. package/dist/transceivers/set-rtx/index.d.ts.map +1 -0
  59. package/dist/transceivers/set-rtx/index.js +204 -0
  60. package/dist/transceivers/set-rtx/index.js.map +1 -0
  61. package/dist/web/index.d.ts +15 -0
  62. package/dist/web/index.d.ts.map +1 -0
  63. package/dist/web/index.js +16 -0
  64. package/dist/web/index.js.map +1 -0
  65. package/package.json +70 -122
  66. package/{data/src → src/data}/struct.ts +1 -0
  67. package/{eslint-plugin/src → src/eslint-plugin}/index.ts +3 -1
  68. package/{eslint-plugin/src → src/eslint-plugin}/rules/explicit-state-types.ts +6 -1
  69. package/{eslint-plugin/src → src/eslint-plugin}/rules/synchronous-selector-dependencies.ts +14 -1
  70. package/{internal/src → src/internal}/families/create-writable-selector-family.ts +4 -2
  71. package/{internal/src → src/internal}/families/index.ts +2 -0
  72. package/{internal/src → src/internal}/index.ts +1 -0
  73. package/{internal/src → src/internal}/join/find-relations-in-store.ts +12 -0
  74. package/{internal/src → src/internal}/junction.ts +3 -2
  75. package/{internal/src → src/internal}/lazy-map.ts +1 -1
  76. package/{internal/src → src/internal}/mutable/tracker-family.ts +2 -5
  77. package/{internal/src → src/internal}/mutable/tracker.ts +15 -9
  78. package/{internal/src → src/internal}/selector/register-selector.ts +2 -1
  79. package/{internal/src → src/internal}/store/store.ts +68 -53
  80. package/{internal/src → src/internal}/subject.ts +1 -1
  81. package/{internal/src → src/internal}/transaction/build-transaction.ts +2 -1
  82. package/{introspection/src → src/introspection}/auditor.ts +1 -1
  83. package/{introspection/src → src/introspection}/differ.ts +12 -1
  84. package/{introspection/src → src/introspection}/refinery.ts +18 -3
  85. package/{json/src → src/json}/entries.ts +1 -1
  86. package/{json/src → src/json}/select-json-family.ts +1 -1
  87. package/src/{realm.ts → main/realm.ts} +1 -1
  88. package/src/{silo.ts → main/silo.ts} +1 -1
  89. package/src/{transaction.ts → main/transaction.ts} +1 -1
  90. package/{react/src → src/react}/store-context.tsx +3 -1
  91. package/{react/src → src/react}/use-i.ts +3 -5
  92. package/{react-devtools/src → src/react-devtools}/AtomIODevtools.tsx +1 -1
  93. package/{react-devtools/src → src/react-devtools}/Button.tsx +3 -1
  94. package/{react-devtools/src → src/react-devtools}/Updates.tsx +5 -1
  95. package/src/react-devtools/devtools.css +308 -0
  96. package/{react-devtools/src → src/react-devtools}/json-editor/developer-interface.tsx +2 -2
  97. package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/utilities/cast-json.ts +2 -2
  98. package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/utilities/object-properties.ts +3 -3
  99. package/{react-devtools/src → src/react-devtools}/json-editor/json-editor-internal.tsx +4 -2
  100. package/{react-devtools/src → src/react-devtools}/store.ts +3 -2
  101. package/{realtime/src → src/realtime}/shared-room-store.ts +28 -5
  102. package/src/realtime-client/realtime-client-stores/client-main-store.ts +23 -0
  103. package/src/realtime-client/realtime-client-stores/client-sync-store.ts +15 -0
  104. package/{realtime-react/src → src/realtime-react}/index.ts +1 -0
  105. package/{realtime-react/src → src/realtime-react}/on-mount.ts +1 -1
  106. package/{realtime-react/src → src/realtime-react}/realtime-context.tsx +5 -4
  107. package/{realtime-react/src → src/realtime-react}/use-single-effect.ts +3 -2
  108. package/{realtime-server/src → src/realtime-server}/ipc-sockets/child-socket.ts +1 -1
  109. package/{realtime-server/src → src/realtime-server}/realtime-server-stores/server-room-external-actions.ts +20 -19
  110. package/{realtime-server/src → src/realtime-server}/realtime-server-stores/server-room-external-store.ts +12 -7
  111. package/{realtime-server/src → src/realtime-server}/realtime-server-stores/server-sync-store.ts +13 -4
  112. package/{realtime-server/src → src/realtime-server}/realtime-server-stores/server-user-store.ts +26 -8
  113. package/{transceivers/set-rtx/src → src/transceivers/set-rtx}/set-rtx.ts +2 -2
  114. package/data/dist/index.d.ts +0 -31
  115. package/data/dist/index.js +0 -69
  116. package/data/package.json +0 -13
  117. package/dist/chunk-2XDFCXGB.js +0 -109
  118. package/dist/chunk-35NB2XZU.js +0 -4501
  119. package/dist/chunk-4LWKCEW3.js +0 -14
  120. package/dist/chunk-EF4S7H42.js +0 -526
  121. package/dist/chunk-LTLDKXDN.js +0 -153
  122. package/dist/chunk-MENOYVPP.js +0 -83
  123. package/dist/chunk-RGUNRT72.js +0 -634
  124. package/dist/chunk-TS76LQVD.js +0 -1035
  125. package/dist/chunk-XWL6SNVU.js +0 -7
  126. package/dist/index.d.ts +0 -701
  127. package/dist/index.js +0 -2
  128. package/eslint-plugin/dist/index.d.ts +0 -64
  129. package/eslint-plugin/dist/index.js +0 -238
  130. package/eslint-plugin/package.json +0 -13
  131. package/internal/dist/index.js +0 -2
  132. package/internal/package.json +0 -13
  133. package/introspection/dist/index.d.ts +0 -149
  134. package/introspection/dist/index.js +0 -3
  135. package/introspection/package.json +0 -13
  136. package/json/dist/index.js +0 -2
  137. package/json/package.json +0 -13
  138. package/react/dist/index.js +0 -3
  139. package/react/package.json +0 -13
  140. package/react-devtools/dist/index.css +0 -309
  141. package/react-devtools/dist/index.d.ts +0 -160
  142. package/react-devtools/dist/index.js +0 -1481
  143. package/react-devtools/package.json +0 -13
  144. package/react-devtools/src/devtools.scss +0 -309
  145. package/realtime/dist/index.d.ts +0 -51
  146. package/realtime/dist/index.js +0 -3
  147. package/realtime/package.json +0 -13
  148. package/realtime-client/dist/index.d.ts +0 -41
  149. package/realtime-client/dist/index.js +0 -4
  150. package/realtime-client/package.json +0 -13
  151. package/realtime-client/src/realtime-client-stores/client-main-store.ts +0 -20
  152. package/realtime-client/src/realtime-client-stores/client-sync-store.ts +0 -15
  153. package/realtime-react/dist/index.d.ts +0 -39
  154. package/realtime-react/dist/index.js +0 -6
  155. package/realtime-react/package.json +0 -13
  156. package/realtime-server/dist/index.d.ts +0 -139
  157. package/realtime-server/dist/index.js +0 -4
  158. package/realtime-server/package.json +0 -13
  159. package/realtime-testing/dist/index.d.ts +0 -59
  160. package/realtime-testing/dist/index.js +0 -198
  161. package/realtime-testing/package.json +0 -13
  162. package/transceivers/set-rtx/dist/index.d.ts +0 -41
  163. package/transceivers/set-rtx/dist/index.js +0 -2
  164. package/transceivers/set-rtx/package.json +0 -13
  165. package/web/dist/index.d.ts +0 -9
  166. package/web/dist/index.js +0 -2
  167. package/web/package.json +0 -13
  168. /package/{data/src → src/data}/dict.ts +0 -0
  169. /package/{data/src → src/data}/index.ts +0 -0
  170. /package/{data/src → src/data}/struct-family.ts +0 -0
  171. /package/{eslint-plugin/src → src/eslint-plugin}/rules/index.ts +0 -0
  172. /package/{eslint-plugin/src → src/eslint-plugin}/walk.ts +0 -0
  173. /package/{internal/src → src/internal}/arbitrary.ts +0 -0
  174. /package/{internal/src → src/internal}/atom/create-regular-atom.ts +0 -0
  175. /package/{internal/src → src/internal}/atom/create-standalone-atom.ts +0 -0
  176. /package/{internal/src → src/internal}/atom/dispose-atom.ts +0 -0
  177. /package/{internal/src → src/internal}/atom/index.ts +0 -0
  178. /package/{internal/src → src/internal}/atom/is-default.ts +0 -0
  179. /package/{internal/src → src/internal}/caching.ts +0 -0
  180. /package/{internal/src → src/internal}/capitalize.ts +0 -0
  181. /package/{internal/src → src/internal}/families/create-atom-family.ts +0 -0
  182. /package/{internal/src → src/internal}/families/create-readonly-selector-family.ts +0 -0
  183. /package/{internal/src → src/internal}/families/create-regular-atom-family.ts +0 -0
  184. /package/{internal/src → src/internal}/families/create-selector-family.ts +0 -0
  185. /package/{internal/src → src/internal}/families/dispose-from-store.ts +0 -0
  186. /package/{internal/src → src/internal}/families/find-in-store.ts +0 -0
  187. /package/{internal/src → src/internal}/families/get-family-of-token.ts +0 -0
  188. /package/{internal/src → src/internal}/families/init-family-member.ts +0 -0
  189. /package/{internal/src → src/internal}/families/seek-in-store.ts +0 -0
  190. /package/{internal/src → src/internal}/future.ts +0 -0
  191. /package/{internal/src → src/internal}/get-environment-data.ts +0 -0
  192. /package/{internal/src → src/internal}/get-state/get-from-store.ts +0 -0
  193. /package/{internal/src → src/internal}/get-state/index.ts +0 -0
  194. /package/{internal/src → src/internal}/get-state/read-or-compute-value.ts +0 -0
  195. /package/{internal/src → src/internal}/get-trace.ts +0 -0
  196. /package/{internal/src → src/internal}/ingest-updates/index.ts +0 -0
  197. /package/{internal/src → src/internal}/ingest-updates/ingest-atom-update.ts +0 -0
  198. /package/{internal/src → src/internal}/ingest-updates/ingest-creation-disposal.ts +0 -0
  199. /package/{internal/src → src/internal}/ingest-updates/ingest-selector-update.ts +0 -0
  200. /package/{internal/src → src/internal}/ingest-updates/ingest-transaction-update.ts +0 -0
  201. /package/{internal/src → src/internal}/install-into-store.ts +0 -0
  202. /package/{internal/src → src/internal}/join/edit-relations-in-store.ts +0 -0
  203. /package/{internal/src → src/internal}/join/get-internal-relations-from-store.ts +0 -0
  204. /package/{internal/src → src/internal}/join/get-join.ts +0 -0
  205. /package/{internal/src → src/internal}/join/index.ts +0 -0
  206. /package/{internal/src → src/internal}/join/join-internal.ts +0 -0
  207. /package/{internal/src → src/internal}/keys.ts +0 -0
  208. /package/{internal/src → src/internal}/lineage.ts +0 -0
  209. /package/{internal/src → src/internal}/molecule.ts +0 -0
  210. /package/{internal/src → src/internal}/mutable/create-mutable-atom-family.ts +0 -0
  211. /package/{internal/src → src/internal}/mutable/create-mutable-atom.ts +0 -0
  212. /package/{internal/src → src/internal}/mutable/get-json-family.ts +0 -0
  213. /package/{internal/src → src/internal}/mutable/get-json-token.ts +0 -0
  214. /package/{internal/src → src/internal}/mutable/get-update-family.ts +0 -0
  215. /package/{internal/src → src/internal}/mutable/get-update-token.ts +0 -0
  216. /package/{internal/src → src/internal}/mutable/index.ts +0 -0
  217. /package/{internal/src → src/internal}/mutable/transceiver.ts +0 -0
  218. /package/{internal/src → src/internal}/not-found-error.ts +0 -0
  219. /package/{internal/src → src/internal}/operation.ts +0 -0
  220. /package/{internal/src → src/internal}/pretty-print.ts +0 -0
  221. /package/{internal/src → src/internal}/reserved-keys.ts +0 -0
  222. /package/{internal/src → src/internal}/selector/create-readonly-selector.ts +0 -0
  223. /package/{internal/src → src/internal}/selector/create-standalone-selector.ts +0 -0
  224. /package/{internal/src → src/internal}/selector/create-writable-selector.ts +0 -0
  225. /package/{internal/src → src/internal}/selector/dispose-selector.ts +0 -0
  226. /package/{internal/src → src/internal}/selector/get-selector-dependency-keys.ts +0 -0
  227. /package/{internal/src → src/internal}/selector/index.ts +0 -0
  228. /package/{internal/src → src/internal}/selector/trace-selector-atoms.ts +0 -0
  229. /package/{internal/src → src/internal}/selector/update-selector-atoms.ts +0 -0
  230. /package/{internal/src → src/internal}/set-state/become.ts +0 -0
  231. /package/{internal/src → src/internal}/set-state/copy-mutable-if-needed.ts +0 -0
  232. /package/{internal/src → src/internal}/set-state/emit-update.ts +0 -0
  233. /package/{internal/src → src/internal}/set-state/evict-downstream.ts +0 -0
  234. /package/{internal/src → src/internal}/set-state/index.ts +0 -0
  235. /package/{internal/src → src/internal}/set-state/set-atom-or-selector.ts +0 -0
  236. /package/{internal/src → src/internal}/set-state/set-atom.ts +0 -0
  237. /package/{internal/src → src/internal}/set-state/set-into-store.ts +0 -0
  238. /package/{internal/src → src/internal}/store/circular-buffer.ts +0 -0
  239. /package/{internal/src → src/internal}/store/counterfeit.ts +0 -0
  240. /package/{internal/src → src/internal}/store/deposit.ts +0 -0
  241. /package/{internal/src → src/internal}/store/index.ts +0 -0
  242. /package/{internal/src → src/internal}/store/withdraw.ts +0 -0
  243. /package/{internal/src → src/internal}/subscribe/index.ts +0 -0
  244. /package/{internal/src → src/internal}/subscribe/recall-state.ts +0 -0
  245. /package/{internal/src → src/internal}/subscribe/subscribe-in-store.ts +0 -0
  246. /package/{internal/src → src/internal}/subscribe/subscribe-to-root-atoms.ts +0 -0
  247. /package/{internal/src → src/internal}/subscribe/subscribe-to-state.ts +0 -0
  248. /package/{internal/src → src/internal}/subscribe/subscribe-to-timeline.ts +0 -0
  249. /package/{internal/src → src/internal}/subscribe/subscribe-to-transaction.ts +0 -0
  250. /package/{internal/src → src/internal}/timeline/create-timeline.ts +0 -0
  251. /package/{internal/src → src/internal}/timeline/index.ts +0 -0
  252. /package/{internal/src → src/internal}/timeline/time-travel.ts +0 -0
  253. /package/{internal/src → src/internal}/transaction/abort-transaction.ts +0 -0
  254. /package/{internal/src → src/internal}/transaction/act-upon-store.ts +0 -0
  255. /package/{internal/src → src/internal}/transaction/apply-transaction.ts +0 -0
  256. /package/{internal/src → src/internal}/transaction/assign-transaction-to-continuity.ts +0 -0
  257. /package/{internal/src → src/internal}/transaction/create-transaction.ts +0 -0
  258. /package/{internal/src → src/internal}/transaction/get-epoch-number.ts +0 -0
  259. /package/{internal/src → src/internal}/transaction/index.ts +0 -0
  260. /package/{internal/src → src/internal}/transaction/is-root-store.ts +0 -0
  261. /package/{internal/src → src/internal}/transaction/set-epoch-number.ts +0 -0
  262. /package/{internal/src → src/internal}/utility-types.ts +0 -0
  263. /package/{introspection/src → src/introspection}/attach-atom-index.ts +0 -0
  264. /package/{introspection/src → src/introspection}/attach-introspection-states.ts +0 -0
  265. /package/{introspection/src → src/introspection}/attach-selector-index.ts +0 -0
  266. /package/{introspection/src → src/introspection}/attach-timeline-family.ts +0 -0
  267. /package/{introspection/src → src/introspection}/attach-timeline-index.ts +0 -0
  268. /package/{introspection/src → src/introspection}/attach-transaction-index.ts +0 -0
  269. /package/{introspection/src → src/introspection}/attach-transaction-logs.ts +0 -0
  270. /package/{introspection/src → src/introspection}/attach-type-selectors.ts +0 -0
  271. /package/{introspection/src → src/introspection}/index.ts +0 -0
  272. /package/{introspection/src → src/introspection}/sprawl.ts +0 -0
  273. /package/{json/src → src/json}/index.ts +0 -0
  274. /package/{json/src → src/json}/select-json.ts +0 -0
  275. /package/src/{atom.ts → main/atom.ts} +0 -0
  276. /package/src/{dispose-state.ts → main/dispose-state.ts} +0 -0
  277. /package/src/{find-state.ts → main/find-state.ts} +0 -0
  278. /package/src/{get-state.ts → main/get-state.ts} +0 -0
  279. /package/src/{index.ts → main/index.ts} +0 -0
  280. /package/src/{join.ts → main/join.ts} +0 -0
  281. /package/src/{logger.ts → main/logger.ts} +0 -0
  282. /package/src/{selector.ts → main/selector.ts} +0 -0
  283. /package/src/{set-state.ts → main/set-state.ts} +0 -0
  284. /package/src/{subscribe.ts → main/subscribe.ts} +0 -0
  285. /package/src/{timeline.ts → main/timeline.ts} +0 -0
  286. /package/src/{validators.ts → main/validators.ts} +0 -0
  287. /package/{react/src → src/react}/index.ts +0 -0
  288. /package/{react/src → src/react}/parse-state-overloads.ts +0 -0
  289. /package/{react/src → src/react}/use-json.ts +0 -0
  290. /package/{react/src → src/react}/use-o.ts +0 -0
  291. /package/{react/src → src/react}/use-tl.ts +0 -0
  292. /package/{react-devtools/src → src/react-devtools}/StateEditor.tsx +0 -0
  293. /package/{react-devtools/src → src/react-devtools}/StateIndex.tsx +0 -0
  294. /package/{react-devtools/src → src/react-devtools}/TimelineIndex.tsx +0 -0
  295. /package/{react-devtools/src → src/react-devtools}/TransactionIndex.tsx +0 -0
  296. /package/{react-devtools/src → src/react-devtools}/elastic-input/ElasticInput.tsx +0 -0
  297. /package/{react-devtools/src → src/react-devtools}/elastic-input/NumberInput.tsx +0 -0
  298. /package/{react-devtools/src → src/react-devtools}/elastic-input/TextInput.tsx +0 -0
  299. /package/{react-devtools/src → src/react-devtools}/elastic-input/index.ts +0 -0
  300. /package/{react-devtools/src → src/react-devtools}/error-boundary/DefaultFallback.tsx +0 -0
  301. /package/{react-devtools/src → src/react-devtools}/error-boundary/ReactErrorBoundary.tsx +0 -0
  302. /package/{react-devtools/src → src/react-devtools}/error-boundary/index.ts +0 -0
  303. /package/{react-devtools/src → src/react-devtools}/index.ts +0 -0
  304. /package/{react-devtools/src → src/react-devtools}/json-editor/default-components.tsx +0 -0
  305. /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/array-editor.tsx +0 -0
  306. /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/non-json.tsx +0 -0
  307. /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/object-editor.tsx +0 -0
  308. /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/primitive-editors.tsx +0 -0
  309. /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/utilities/array-elements.ts +0 -0
  310. /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/utilities/cast-to-json.ts +0 -0
  311. /package/{react-devtools/src → src/react-devtools}/json-editor/index.ts +0 -0
  312. /package/{react-devtools/src → src/react-devtools}/json-editor/todo.md +0 -0
  313. /package/{realtime/src → src/realtime}/index.ts +0 -0
  314. /package/{realtime/src → src/realtime}/realtime-continuity.ts +0 -0
  315. /package/{realtime-client/src → src/realtime-client}/continuity/index.ts +0 -0
  316. /package/{realtime-client/src → src/realtime-client}/continuity/register-and-attempt-confirmed-update.ts +0 -0
  317. /package/{realtime-client/src → src/realtime-client}/continuity/use-conceal-state.ts +0 -0
  318. /package/{realtime-client/src → src/realtime-client}/continuity/use-reveal-state.ts +0 -0
  319. /package/{realtime-client/src → src/realtime-client}/index.ts +0 -0
  320. /package/{realtime-client/src → src/realtime-client}/pull-atom-family-member.ts +0 -0
  321. /package/{realtime-client/src → src/realtime-client}/pull-atom.ts +0 -0
  322. /package/{realtime-client/src → src/realtime-client}/pull-mutable-atom-family-member.ts +0 -0
  323. /package/{realtime-client/src → src/realtime-client}/pull-mutable-atom.ts +0 -0
  324. /package/{realtime-client/src → src/realtime-client}/pull-selector-family-member.ts +0 -0
  325. /package/{realtime-client/src → src/realtime-client}/pull-selector.ts +0 -0
  326. /package/{realtime-client/src → src/realtime-client}/push-state.ts +0 -0
  327. /package/{realtime-client/src → src/realtime-client}/realtime-client-stores/index.ts +0 -0
  328. /package/{realtime-client/src → src/realtime-client}/server-action.ts +0 -0
  329. /package/{realtime-client/src → src/realtime-client}/sync-continuity.ts +0 -0
  330. /package/{realtime-react/src → src/realtime-react}/use-pull-atom-family-member.ts +0 -0
  331. /package/{realtime-react/src → src/realtime-react}/use-pull-atom.ts +0 -0
  332. /package/{realtime-react/src → src/realtime-react}/use-pull-mutable-atom.ts +0 -0
  333. /package/{realtime-react/src → src/realtime-react}/use-pull-mutable-family-member.ts +0 -0
  334. /package/{realtime-react/src → src/realtime-react}/use-pull-selector-family-member.ts +0 -0
  335. /package/{realtime-react/src → src/realtime-react}/use-pull-selector.ts +0 -0
  336. /package/{realtime-react/src → src/realtime-react}/use-push.ts +0 -0
  337. /package/{realtime-react/src → src/realtime-react}/use-realtime-service.ts +0 -0
  338. /package/{realtime-react/src → src/realtime-react}/use-server-action.ts +0 -0
  339. /package/{realtime-react/src → src/realtime-react}/use-sync-continuity.ts +0 -0
  340. /package/{realtime-server/src → src/realtime-server}/README.md +0 -0
  341. /package/{realtime-server/src → src/realtime-server}/continuity/prepare-to-send-initial-payload.ts +0 -0
  342. /package/{realtime-server/src → src/realtime-server}/continuity/prepare-to-serve-transaction-request.ts +0 -0
  343. /package/{realtime-server/src → src/realtime-server}/continuity/prepare-to-sync-realtime-continuity.ts +0 -0
  344. /package/{realtime-server/src → src/realtime-server}/continuity/prepare-to-track-client-acknowledgement.ts +0 -0
  345. /package/{realtime-server/src → src/realtime-server}/continuity/subscribe-to-continuity-actions.ts +0 -0
  346. /package/{realtime-server/src → src/realtime-server}/continuity/subscribe-to-continuity-perpectives.ts +0 -0
  347. /package/{realtime-server/src → src/realtime-server}/index.ts +0 -0
  348. /package/{realtime-server/src → src/realtime-server}/ipc-sockets/custom-socket.ts +0 -0
  349. /package/{realtime-server/src → src/realtime-server}/ipc-sockets/index.ts +0 -0
  350. /package/{realtime-server/src → src/realtime-server}/ipc-sockets/parent-socket.ts +0 -0
  351. /package/{realtime-server/src → src/realtime-server}/realtime-action-receiver.ts +0 -0
  352. /package/{realtime-server/src → src/realtime-server}/realtime-family-provider.ts +0 -0
  353. /package/{realtime-server/src → src/realtime-server}/realtime-mutable-family-provider.ts +0 -0
  354. /package/{realtime-server/src → src/realtime-server}/realtime-mutable-provider.ts +0 -0
  355. /package/{realtime-server/src → src/realtime-server}/realtime-server-stores/index.ts +0 -0
  356. /package/{realtime-server/src → src/realtime-server}/realtime-state-provider.ts +0 -0
  357. /package/{realtime-server/src → src/realtime-server}/realtime-state-receiver.ts +0 -0
  358. /package/{realtime-testing/src → src/realtime-testing}/index.ts +0 -0
  359. /package/{realtime-testing/src → src/realtime-testing}/setup-realtime-test.tsx +0 -0
  360. /package/{transceivers/set-rtx/src → src/transceivers/set-rtx}/index.ts +0 -0
  361. /package/{web/src → src/web}/index.ts +0 -0
  362. /package/{web/src → src/web}/persist-sync.ts +0 -0
@@ -0,0 +1,204 @@
1
+ import { Subject } from "atom.io/internal";
2
+ import { stringifyJson } from "atom.io/json";
3
+
4
+ //#region src/transceivers/set-rtx/set-rtx.ts
5
+ var SetRTX = class SetRTX extends Set {
6
+ mode = `record`;
7
+ subject = new Subject();
8
+ cacheLimit = 0;
9
+ cache = [];
10
+ cacheIdx = -1;
11
+ cacheUpdateNumber = -1;
12
+ constructor(values, cacheLimit = 0) {
13
+ super(values);
14
+ if (values instanceof SetRTX) {
15
+ this.parent = values;
16
+ this.cacheUpdateNumber = values.cacheUpdateNumber;
17
+ }
18
+ if (cacheLimit) {
19
+ this.cacheLimit = cacheLimit;
20
+ this.cache = new Array(cacheLimit);
21
+ this.subscribe(`auto cache`, (update) => {
22
+ this.cacheIdx++;
23
+ this.cacheIdx %= this.cacheLimit;
24
+ this.cache[this.cacheIdx] = update;
25
+ });
26
+ }
27
+ }
28
+ toJSON() {
29
+ return {
30
+ members: [...this],
31
+ cache: this.cache,
32
+ cacheLimit: this.cacheLimit,
33
+ cacheIdx: this.cacheIdx,
34
+ cacheUpdateNumber: this.cacheUpdateNumber
35
+ };
36
+ }
37
+ static fromJSON(json) {
38
+ const set = new SetRTX(json.members, json.cacheLimit);
39
+ set.cache = json.cache;
40
+ set.cacheIdx = json.cacheIdx;
41
+ set.cacheUpdateNumber = json.cacheUpdateNumber;
42
+ return set;
43
+ }
44
+ add(value) {
45
+ const result = super.add(value);
46
+ if (this.mode === `record`) {
47
+ this.cacheUpdateNumber++;
48
+ this.emit(`add:${stringifyJson(value)}`);
49
+ }
50
+ return result;
51
+ }
52
+ clear() {
53
+ const capturedContents = this.mode === `record` ? [...this] : null;
54
+ super.clear();
55
+ if (capturedContents) {
56
+ this.cacheUpdateNumber++;
57
+ this.emit(`clear:${JSON.stringify(capturedContents)}`);
58
+ }
59
+ }
60
+ delete(value) {
61
+ const result = super.delete(value);
62
+ if (this.mode === `record`) {
63
+ this.cacheUpdateNumber++;
64
+ this.emit(`del:${stringifyJson(value)}`);
65
+ }
66
+ return result;
67
+ }
68
+ parent = null;
69
+ child = null;
70
+ transactionUpdates = null;
71
+ transaction(run) {
72
+ this.mode = `transaction`;
73
+ this.transactionUpdates = [];
74
+ this.child = new SetRTX(this);
75
+ const unsubscribe = this.child._subscribe(`transaction`, (update) => {
76
+ this.transactionUpdates?.push(update);
77
+ });
78
+ try {
79
+ const shouldCommit = run(this.child);
80
+ if (shouldCommit) {
81
+ for (const update of this.transactionUpdates) this.doStep(update);
82
+ this.cacheUpdateNumber++;
83
+ this.emit(`tx:${this.transactionUpdates.join(`;`)}`);
84
+ }
85
+ } catch (thrown) {
86
+ console.warn(`Did not apply transaction to SetRTX; this error was thrown:`, thrown);
87
+ throw thrown;
88
+ } finally {
89
+ unsubscribe();
90
+ this.child = null;
91
+ this.transactionUpdates = null;
92
+ this.mode = `record`;
93
+ }
94
+ }
95
+ _subscribe(key, fn) {
96
+ return this.subject.subscribe(key, fn);
97
+ }
98
+ subscribe(key, fn) {
99
+ return this.subject.subscribe(key, (update) => {
100
+ fn(`${this.cacheUpdateNumber}=${update}`);
101
+ });
102
+ }
103
+ emit(update) {
104
+ this.subject.next(update);
105
+ }
106
+ doStep(update) {
107
+ const typeValueBreak = update.indexOf(`:`);
108
+ const type = update.substring(0, typeValueBreak);
109
+ const value = update.substring(typeValueBreak + 1);
110
+ switch (type) {
111
+ case `add`:
112
+ this.add(JSON.parse(value));
113
+ break;
114
+ case `clear`:
115
+ this.clear();
116
+ break;
117
+ case `del`:
118
+ this.delete(JSON.parse(value));
119
+ break;
120
+ case `tx`: for (const subUpdate of value.split(`;`)) this.doStep(subUpdate);
121
+ }
122
+ }
123
+ getUpdateNumber(update) {
124
+ const breakpoint = update.indexOf(`=`);
125
+ return Number(update.substring(0, breakpoint));
126
+ }
127
+ do(update) {
128
+ const breakpoint = update.indexOf(`=`);
129
+ const updateNumber = Number(update.substring(0, breakpoint));
130
+ const eventOffset = updateNumber - this.cacheUpdateNumber;
131
+ const isFuture = eventOffset > 0;
132
+ if (isFuture) {
133
+ if (eventOffset === 1) {
134
+ this.mode = `playback`;
135
+ const innerUpdate = update.substring(breakpoint + 1);
136
+ this.doStep(innerUpdate);
137
+ this.mode = `record`;
138
+ this.cacheUpdateNumber = updateNumber;
139
+ return null;
140
+ }
141
+ return this.cacheUpdateNumber + 1;
142
+ }
143
+ if (Math.abs(eventOffset) < this.cacheLimit) {
144
+ const eventIdx = this.cacheIdx + eventOffset;
145
+ const cachedUpdate = this.cache[eventIdx];
146
+ if (cachedUpdate === update) return null;
147
+ this.mode = `playback`;
148
+ let done = false;
149
+ while (!done) {
150
+ this.cacheIdx %= this.cacheLimit;
151
+ const u = this.cache[this.cacheIdx];
152
+ this.cacheIdx--;
153
+ if (!u) return `OUT_OF_RANGE`;
154
+ this.undo(u);
155
+ done = this.cacheIdx === eventIdx - 1;
156
+ }
157
+ const innerUpdate = update.substring(breakpoint + 1);
158
+ this.doStep(innerUpdate);
159
+ this.mode = `record`;
160
+ this.cacheUpdateNumber = updateNumber;
161
+ return null;
162
+ }
163
+ return `OUT_OF_RANGE`;
164
+ }
165
+ undoStep(update) {
166
+ const breakpoint = update.indexOf(`:`);
167
+ const type = update.substring(0, breakpoint);
168
+ const value = update.substring(breakpoint + 1);
169
+ switch (type) {
170
+ case `add`:
171
+ this.delete(JSON.parse(value));
172
+ break;
173
+ case `del`:
174
+ this.add(JSON.parse(value));
175
+ break;
176
+ case `clear`: {
177
+ const values = JSON.parse(value);
178
+ for (const v of values) this.add(v);
179
+ break;
180
+ }
181
+ case `tx`: {
182
+ const updates = value.split(`;`);
183
+ for (let i = updates.length - 1; i >= 0; i--) this.undoStep(updates[i]);
184
+ }
185
+ }
186
+ }
187
+ undo(update) {
188
+ const breakpoint = update.indexOf(`=`);
189
+ const updateNumber = Number(update.substring(0, breakpoint));
190
+ if (updateNumber === this.cacheUpdateNumber) {
191
+ this.mode = `playback`;
192
+ const innerUpdate = update.substring(breakpoint + 1);
193
+ this.undoStep(innerUpdate);
194
+ this.mode = `record`;
195
+ this.cacheUpdateNumber--;
196
+ return null;
197
+ }
198
+ return this.cacheUpdateNumber;
199
+ }
200
+ };
201
+
202
+ //#endregion
203
+ export { SetRTX };
204
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["values?: Iterable<P>","json: SetRTXJson<P>","value: P","run: (child: SetRTX<P>) => boolean","key: string","fn: (update: SetUpdate) => void","fn: (update: NumberedSetUpdate) => void","update: SetUpdate","update: NumberedSetUpdate"],"sources":["../../../src/transceivers/set-rtx/set-rtx.ts"],"sourcesContent":["import type { Lineage, Transceiver, TransceiverMode } from \"atom.io/internal\"\nimport { Subject } from \"atom.io/internal\"\nimport type { Json, primitive } from \"atom.io/json\"\nimport { stringifyJson } from \"atom.io/json\"\n\nexport type SetUpdateType = `add` | `clear` | `del` | `tx`\nexport type SetUpdate = `${SetUpdateType}:${string}`\nexport type NumberedSetUpdate = `${number}=${SetUpdate}`\n\nexport interface SetRTXJson<P extends primitive> extends Json.Object {\n\tmembers: P[]\n\tcache: (NumberedSetUpdate | null)[]\n\tcacheLimit: number\n\tcacheIdx: number\n\tcacheUpdateNumber: number\n}\nexport class SetRTX<P extends primitive>\n\textends Set<P>\n\timplements Transceiver<NumberedSetUpdate>, Lineage\n{\n\tpublic mode: TransceiverMode = `record`\n\tpublic readonly subject: Subject<SetUpdate> = new Subject<SetUpdate>()\n\tpublic cacheLimit = 0\n\tpublic cache: (NumberedSetUpdate | null)[] = []\n\tpublic cacheIdx = -1\n\tpublic cacheUpdateNumber = -1\n\n\tpublic constructor(values?: Iterable<P>, cacheLimit = 0) {\n\t\tsuper(values)\n\t\tif (values instanceof SetRTX) {\n\t\t\tthis.parent = values\n\t\t\tthis.cacheUpdateNumber = values.cacheUpdateNumber\n\t\t}\n\t\tif (cacheLimit) {\n\t\t\tthis.cacheLimit = cacheLimit\n\t\t\tthis.cache = new Array(cacheLimit)\n\t\t\tthis.subscribe(`auto cache`, (update) => {\n\t\t\t\tthis.cacheIdx++\n\t\t\t\tthis.cacheIdx %= this.cacheLimit\n\t\t\t\tthis.cache[this.cacheIdx] = update\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic toJSON(): SetRTXJson<P> {\n\t\treturn {\n\t\t\tmembers: [...this],\n\t\t\tcache: this.cache,\n\t\t\tcacheLimit: this.cacheLimit,\n\t\t\tcacheIdx: this.cacheIdx,\n\t\t\tcacheUpdateNumber: this.cacheUpdateNumber,\n\t\t}\n\t}\n\n\tpublic static fromJSON<P extends primitive>(json: SetRTXJson<P>): SetRTX<P> {\n\t\tconst set = new SetRTX<P>(json.members, json.cacheLimit)\n\t\tset.cache = json.cache\n\t\tset.cacheIdx = json.cacheIdx\n\t\tset.cacheUpdateNumber = json.cacheUpdateNumber\n\t\treturn set\n\t}\n\n\tpublic add(value: P): this {\n\t\tconst result = super.add(value)\n\t\tif (this.mode === `record`) {\n\t\t\tthis.cacheUpdateNumber++\n\t\t\tthis.emit(`add:${stringifyJson<P>(value)}`)\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic clear(): void {\n\t\tconst capturedContents = this.mode === `record` ? [...this] : null\n\t\tsuper.clear()\n\t\tif (capturedContents) {\n\t\t\tthis.cacheUpdateNumber++\n\t\t\tthis.emit(`clear:${JSON.stringify(capturedContents)}`)\n\t\t}\n\t}\n\n\tpublic delete(value: P): boolean {\n\t\tconst result = super.delete(value)\n\t\tif (this.mode === `record`) {\n\t\t\tthis.cacheUpdateNumber++\n\t\t\tthis.emit(`del:${stringifyJson<P>(value)}`)\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic readonly parent: SetRTX<P> | null = null\n\tpublic child: SetRTX<P> | null = null\n\tpublic transactionUpdates: SetUpdate[] | null = null\n\tpublic transaction(run: (child: SetRTX<P>) => boolean): void {\n\t\tthis.mode = `transaction`\n\t\tthis.transactionUpdates = []\n\t\tthis.child = new SetRTX(this)\n\t\tconst unsubscribe = this.child._subscribe(`transaction`, (update) => {\n\t\t\tthis.transactionUpdates?.push(update)\n\t\t})\n\t\ttry {\n\t\t\tconst shouldCommit = run(this.child)\n\t\t\tif (shouldCommit) {\n\t\t\t\tfor (const update of this.transactionUpdates) {\n\t\t\t\t\tthis.doStep(update)\n\t\t\t\t}\n\t\t\t\tthis.cacheUpdateNumber++\n\t\t\t\tthis.emit(`tx:${this.transactionUpdates.join(`;`)}`)\n\t\t\t}\n\t\t} catch (thrown) {\n\t\t\t/* eslint-disable-next-line no-console */\n\t\t\tconsole.warn(\n\t\t\t\t`Did not apply transaction to SetRTX; this error was thrown:`,\n\t\t\t\tthrown,\n\t\t\t)\n\t\t\tthrow thrown\n\t\t} finally {\n\t\t\tunsubscribe()\n\t\t\tthis.child = null\n\t\t\tthis.transactionUpdates = null\n\t\t\tthis.mode = `record`\n\t\t}\n\t}\n\n\tprotected _subscribe(\n\t\tkey: string,\n\t\tfn: (update: SetUpdate) => void,\n\t): () => void {\n\t\treturn this.subject.subscribe(key, fn)\n\t}\n\tpublic subscribe(\n\t\tkey: string,\n\t\tfn: (update: NumberedSetUpdate) => void,\n\t): () => void {\n\t\treturn this.subject.subscribe(key, (update) => {\n\t\t\tfn(`${this.cacheUpdateNumber}=${update}`)\n\t\t})\n\t}\n\n\tpublic emit(update: SetUpdate): void {\n\t\tthis.subject.next(update)\n\t}\n\n\tprivate doStep(update: SetUpdate): void {\n\t\tconst typeValueBreak = update.indexOf(`:`)\n\t\tconst type = update.substring(0, typeValueBreak) as SetUpdateType\n\t\tconst value = update.substring(typeValueBreak + 1)\n\t\tswitch (type) {\n\t\t\tcase `add`:\n\t\t\t\tthis.add(JSON.parse(value))\n\t\t\t\tbreak\n\t\t\tcase `clear`:\n\t\t\t\tthis.clear()\n\t\t\t\tbreak\n\t\t\tcase `del`:\n\t\t\t\tthis.delete(JSON.parse(value))\n\t\t\t\tbreak\n\t\t\tcase `tx`:\n\t\t\t\tfor (const subUpdate of value.split(`;`)) {\n\t\t\t\t\tthis.doStep(subUpdate as SetUpdate)\n\t\t\t\t}\n\t\t}\n\t}\n\n\tpublic getUpdateNumber(update: NumberedSetUpdate): number {\n\t\tconst breakpoint = update.indexOf(`=`)\n\t\treturn Number(update.substring(0, breakpoint))\n\t}\n\n\tpublic do(update: NumberedSetUpdate): number | `OUT_OF_RANGE` | null {\n\t\tconst breakpoint = update.indexOf(`=`)\n\t\tconst updateNumber = Number(update.substring(0, breakpoint))\n\t\tconst eventOffset = updateNumber - this.cacheUpdateNumber\n\t\tconst isFuture = eventOffset > 0\n\t\tif (isFuture) {\n\t\t\tif (eventOffset === 1) {\n\t\t\t\tthis.mode = `playback`\n\t\t\t\tconst innerUpdate = update.substring(breakpoint + 1) as SetUpdate\n\t\t\t\tthis.doStep(innerUpdate)\n\t\t\t\tthis.mode = `record`\n\t\t\t\tthis.cacheUpdateNumber = updateNumber\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn this.cacheUpdateNumber + 1\n\t\t}\n\t\tif (Math.abs(eventOffset) < this.cacheLimit) {\n\t\t\tconst eventIdx = this.cacheIdx + eventOffset\n\t\t\tconst cachedUpdate = this.cache[eventIdx]\n\t\t\tif (cachedUpdate === update) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tthis.mode = `playback`\n\t\t\tlet done = false\n\t\t\twhile (!done) {\n\t\t\t\tthis.cacheIdx %= this.cacheLimit\n\t\t\t\tconst u = this.cache[this.cacheIdx]\n\t\t\t\tthis.cacheIdx--\n\t\t\t\tif (!u) {\n\t\t\t\t\treturn `OUT_OF_RANGE`\n\t\t\t\t}\n\t\t\t\tthis.undo(u)\n\t\t\t\tdone = this.cacheIdx === eventIdx - 1\n\t\t\t}\n\t\t\tconst innerUpdate = update.substring(breakpoint + 1) as SetUpdate\n\t\t\tthis.doStep(innerUpdate)\n\t\t\tthis.mode = `record`\n\t\t\tthis.cacheUpdateNumber = updateNumber\n\t\t\treturn null\n\t\t}\n\t\treturn `OUT_OF_RANGE`\n\t}\n\n\tpublic undoStep(update: SetUpdate): void {\n\t\tconst breakpoint = update.indexOf(`:`)\n\t\tconst type = update.substring(0, breakpoint) as SetUpdateType\n\t\tconst value = update.substring(breakpoint + 1)\n\t\tswitch (type) {\n\t\t\tcase `add`:\n\t\t\t\tthis.delete(JSON.parse(value))\n\t\t\t\tbreak\n\t\t\tcase `del`:\n\t\t\t\tthis.add(JSON.parse(value))\n\t\t\t\tbreak\n\t\t\tcase `clear`: {\n\t\t\t\tconst values = JSON.parse(value) as P[]\n\t\t\t\tfor (const v of values) this.add(v)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase `tx`: {\n\t\t\t\tconst updates = value.split(`;`) as SetUpdate[]\n\t\t\t\tfor (let i = updates.length - 1; i >= 0; i--) {\n\t\t\t\t\tthis.undoStep(updates[i])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic undo(update: NumberedSetUpdate): number | null {\n\t\tconst breakpoint = update.indexOf(`=`)\n\t\tconst updateNumber = Number(update.substring(0, breakpoint))\n\t\tif (updateNumber === this.cacheUpdateNumber) {\n\t\t\tthis.mode = `playback`\n\t\t\tconst innerUpdate = update.substring(breakpoint + 1) as SetUpdate\n\t\t\tthis.undoStep(innerUpdate)\n\t\t\tthis.mode = `record`\n\t\t\tthis.cacheUpdateNumber--\n\t\t\treturn null\n\t\t}\n\t\treturn this.cacheUpdateNumber\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { AtomEffect } from "atom.io";
2
+
3
+ //#region src/web/persist-sync.d.ts
4
+ type StringInterface<T> = {
5
+ stringify: (t: T) => string;
6
+ parse: (s: string) => T;
7
+ };
8
+ declare const persistSync: <T>(storage: Storage, {
9
+ stringify,
10
+ parse
11
+ }: StringInterface<T>, key: string) => AtomEffect<T>;
12
+
13
+ //#endregion
14
+ export { StringInterface, persistSync };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":["t: T","s: string","storage: Storage","key: string"],"sources":["../../src/web/persist-sync.ts"],"sourcesContent":null,"mappings":";;;KAEY;iBACI;EADhB,KAAY,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,GAEW,CAFX;CAAA;AACI,cAIH,WAJG,EAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAML,OANK,EAAA;EAAA,SAAA;EAAA;AAAA,CAAA,EAOQ,eAPR,CAOwB,CAPxB,CAAA,EAAA,GAAA,EAAA,MAAA,EAAA,GASZ,UATY,CASD,CATC,CAAA"}
@@ -0,0 +1,16 @@
1
+ //#region src/web/persist-sync.ts
2
+ const persistSync = (storage, { stringify, parse }, key) => ({ setSelf, onSet }) => {
3
+ const savedValue = storage.getItem(key);
4
+ if (savedValue != null) setSelf(parse(savedValue));
5
+ onSet(({ newValue }) => {
6
+ if (newValue == null) {
7
+ storage.removeItem(key);
8
+ return;
9
+ }
10
+ storage.setItem(key, stringify(newValue));
11
+ });
12
+ };
13
+
14
+ //#endregion
15
+ export { persistSync };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["storage: Storage","key: string"],"sources":["../../src/web/persist-sync.ts"],"sourcesContent":["import type { AtomEffect } from \"atom.io\"\n\nexport type StringInterface<T> = {\n\tstringify: (t: T) => string\n\tparse: (s: string) => T\n}\n\nexport const persistSync =\n\t<T>(\n\t\tstorage: Storage,\n\t\t{ stringify, parse }: StringInterface<T>,\n\t\tkey: string,\n\t): AtomEffect<T> =>\n\t({ setSelf, onSet }) => {\n\t\tconst savedValue = storage.getItem(key)\n\t\tif (savedValue != null) setSelf(parse(savedValue))\n\n\t\tonSet(({ newValue }) => {\n\t\t\tif (newValue == null) {\n\t\t\t\tstorage.removeItem(key)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tstorage.setItem(key, stringify(newValue))\n\t\t})\n\t}\n"],"mappings":";AAOA,MAAa,cACZ,CACCA,SACA,EAAE,WAAW,OAA2B,EACxCC,QAED,CAAC,EAAE,SAAS,OAAO,KAAK;CACvB,MAAM,aAAa,QAAQ,QAAQ,IAAI;AACvC,KAAI,cAAc,KAAM,SAAQ,MAAM,WAAW,CAAC;AAElD,OAAM,CAAC,EAAE,UAAU,KAAK;AACvB,MAAI,YAAY,MAAM;AACrB,WAAQ,WAAW,IAAI;AACvB;EACA;AACD,UAAQ,QAAQ,KAAK,UAAU,SAAS,CAAC;CACzC,EAAC;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.32.3",
3
+ "version": "0.33.0",
4
4
  "description": "Composable and testable reactive data library.",
5
5
  "homepage": "https://atom.io.fyi",
6
6
  "sideEffects": false,
@@ -19,28 +19,36 @@
19
19
  "@floating-ui/react": ">=0.25.0",
20
20
  "@floating-ui/react-dom": ">=2.0.0",
21
21
  "@testing-library/react": ">=14.0.0",
22
+ "@typescript-eslint/parser": ">=9.0.0",
22
23
  "eslint": ">=9.0.0",
24
+ "happy-dom": ">=17.4.4",
23
25
  "motion": ">=11.0.0",
24
26
  "react": "^18.0.0 || ^19.0.0",
25
27
  "socket.io": ">=4.0.0",
26
28
  "socket.io-client": ">=4.0.0"
27
29
  },
28
30
  "peerDependenciesMeta": {
29
- "@testing-library/react": {
31
+ "@floating-ui/react": {
30
32
  "optional": true
31
33
  },
32
- "react": {
34
+ "@floating-ui/react-dom": {
33
35
  "optional": true
34
36
  },
35
- "@floating-ui/react": {
37
+ "@testing-library/react": {
36
38
  "optional": true
37
39
  },
38
- "@floating-ui/react-dom": {
40
+ "@typescript-eslint/parser": {
41
+ "optional": true
42
+ },
43
+ "react": {
39
44
  "optional": true
40
45
  },
41
46
  "eslint": {
42
47
  "optional": true
43
48
  },
49
+ "happy-dom": {
50
+ "optional": true
51
+ },
44
52
  "motion": {
45
53
  "optional": true
46
54
  },
@@ -52,191 +60,131 @@
52
60
  }
53
61
  },
54
62
  "devDependencies": {
55
- "@testing-library/react": "16.2.0",
63
+ "@eslint/core": "0.14.0",
64
+ "@testing-library/react": "16.3.0",
65
+ "@types/bun": "npm:bun-types@1.2.11",
56
66
  "@types/eslint": "9.6.1",
57
67
  "@types/estree": "1.0.6",
58
68
  "@types/http-proxy": "1.17.16",
59
69
  "@types/npmlog": "7.0.0",
60
- "@types/react": "19.0.10",
70
+ "@types/react": "19.1.2",
61
71
  "@types/tmp": "0.2.6",
62
- "@typescript-eslint/parser": "8.26.1",
63
- "@typescript-eslint/rule-tester": "8.26.1",
64
- "@typescript-eslint/utils": "8.26.1",
65
- "@vitest/coverage-v8": "3.0.8",
66
- "@vitest/ui": "3.0.8",
67
- "bun-types": "1.2.5",
72
+ "@typescript-eslint/parser": "8.31.1",
73
+ "@typescript-eslint/rule-tester": "8.31.1",
74
+ "@typescript-eslint/utils": "8.31.1",
75
+ "@vitest/coverage-v8": "3.1.2",
76
+ "@vitest/ui": "3.1.2",
68
77
  "concurrently": "9.1.2",
69
- "drizzle-kit": "0.30.5",
70
- "drizzle-orm": "0.40.0",
71
- "eslint": "9.22.0",
72
- "happy-dom": "17.4.4",
78
+ "drizzle-kit": "0.31.0",
79
+ "drizzle-orm": "0.43.1",
80
+ "eslint": "9.25.1",
81
+ "happy-dom": "17.4.6",
73
82
  "http-proxy": "1.18.1",
74
- "motion": "12.5.0",
83
+ "motion": "12.9.4",
75
84
  "npmlog": "7.0.1",
76
85
  "nyc": "17.1.0",
77
86
  "postgres": "3.4.5",
78
- "preact": "10.26.4",
79
- "react": "19.0.0",
80
- "react-dom": "19.0.0",
81
- "react-router-dom": "7.3.0",
87
+ "preact": "10.26.5",
88
+ "react": "19.1.0",
89
+ "react-dom": "19.1.0",
90
+ "react-router-dom": "7.5.3",
91
+ "recoverage": "0.1.9",
82
92
  "socket.io": "4.8.1",
83
93
  "socket.io-client": "4.8.1",
84
94
  "tmp": "0.2.3",
85
- "tsup": "8.4.0",
86
- "tsx": "4.19.3",
87
- "typescript": "5.8.2",
88
- "vite": "6.2.2",
95
+ "tsdown": "0.10.2",
96
+ "tsx": "4.19.4",
97
+ "typescript": "5.8.3",
98
+ "vite": "6.3.4",
89
99
  "vite-tsconfig-paths": "5.1.4",
90
- "vitest": "3.0.8",
91
- "zod": "3.24.2",
92
- "break-check": "0.6.7",
93
- "recoverage": "0.1.3"
100
+ "vitest": "3.1.2",
101
+ "zod": "3.24.3",
102
+ "break-check": "0.6.13"
94
103
  },
95
- "main": "dist/index.js",
96
- "types": "dist/index.d.ts",
97
104
  "files": [
98
105
  "dist",
99
106
  "src",
100
- "data/dist",
101
- "data/package.json",
102
107
  "data/src",
103
- "eslint-plugin/dist",
104
- "eslint-plugin/package.json",
105
108
  "eslint-plugin/src",
106
- "internal/dist",
107
- "internal/package.json",
108
109
  "internal/src",
109
- "introspection/dist",
110
- "introspection/package.json",
111
110
  "introspection/src",
112
- "json/dist",
113
- "json/package.json",
114
111
  "json/src",
115
- "react/dist",
116
- "react/package.json",
117
112
  "react/src",
118
- "react-devtools/dist",
119
- "react-devtools/package.json",
120
113
  "react-devtools/src",
121
- "realtime/dist",
122
- "realtime/package.json",
123
114
  "realtime/src",
124
- "realtime-client/dist",
125
- "realtime-client/package.json",
126
115
  "realtime-client/src",
127
- "realtime-react/dist",
128
- "realtime-react/package.json",
129
116
  "realtime-react/src",
130
- "realtime-server/dist",
131
- "realtime-server/package.json",
132
117
  "realtime-server/src",
133
- "realtime-testing/dist",
134
- "realtime-testing/package.json",
135
118
  "realtime-testing/src",
136
- "transceivers/set-rtx/dist",
137
- "transceivers/set-rtx/package.json",
138
119
  "transceivers/set-rtx/src",
139
- "web/dist",
140
- "web/package.json",
141
120
  "web/src"
142
121
  ],
143
122
  "exports": {
144
123
  "./package.json": "./package.json",
145
124
  ".": {
146
- "import": "./dist/index.js",
147
- "types": "./dist/index.d.ts"
125
+ "import": "./dist/main/index.js",
126
+ "types": "./dist/main/index.d.ts"
148
127
  },
149
- "./data/package.json": "./data/package.json",
150
128
  "./data": {
151
- "import": "./data/dist/index.js",
152
- "types": "./data/dist/index.d.ts"
129
+ "import": "./dist/data/index.js",
130
+ "types": "./dist/data/index.d.ts"
153
131
  },
154
- "./eslint-plugin/package.json": "./eslint-plugin/package.json",
155
132
  "./eslint-plugin": {
156
- "import": "./eslint-plugin/dist/index.js",
157
- "types": "./eslint-plugin/dist/index.d.ts"
133
+ "import": "./dist/eslint-plugin/index.js",
134
+ "types": "./dist/eslint-plugin/index.d.ts"
158
135
  },
159
- "./internal/package.json": "./internal/package.json",
160
136
  "./internal": {
161
- "import": "./internal/dist/index.js",
162
- "types": "./internal/dist/index.d.ts"
137
+ "import": "./dist/internal/index.js",
138
+ "types": "./dist/internal/index.d.ts"
163
139
  },
164
- "./introspection/package.json": "./introspection/package.json",
165
140
  "./introspection": {
166
- "import": "./introspection/dist/index.js",
167
- "types": "./introspection/dist/index.d.ts"
141
+ "import": "./dist/introspection/index.js",
142
+ "types": "./dist/introspection/index.d.ts"
168
143
  },
169
- "./json/package.json": "./json/package.json",
170
144
  "./json": {
171
- "import": "./json/dist/index.js",
172
- "types": "./json/dist/index.d.ts"
145
+ "import": "./dist/json/index.js",
146
+ "types": "./dist/json/index.d.ts"
173
147
  },
174
- "./react/package.json": "./react/package.json",
175
148
  "./react": {
176
- "import": "./react/dist/index.js",
177
- "types": "./react/dist/index.d.ts"
149
+ "import": "./dist/react/index.js",
150
+ "types": "./dist/react/index.d.ts"
178
151
  },
179
- "./react-devtools/package.json": "./react-devtools/package.json",
180
152
  "./react-devtools": {
181
- "import": "./react-devtools/dist/index.js",
182
- "types": "./react-devtools/dist/index.d.ts"
153
+ "import": "./dist/react-devtools/index.js",
154
+ "types": "./dist/react-devtools/index.d.ts"
183
155
  },
184
- "./realtime/package.json": "./realtime/package.json",
185
156
  "./realtime": {
186
- "import": "./realtime/dist/index.js",
187
- "types": "./realtime/dist/index.d.ts"
157
+ "import": "./dist/realtime/index.js",
158
+ "types": "./dist/realtime/index.d.ts"
188
159
  },
189
- "./realtime-client/package.json": "./realtime-client/package.json",
190
160
  "./realtime-client": {
191
- "import": "./realtime-client/dist/index.js",
192
- "types": "./realtime-client/dist/index.d.ts"
161
+ "import": "./dist/realtime-client/index.js",
162
+ "types": "./dist/realtime-client/index.d.ts"
193
163
  },
194
- "./realtime-react/package.json": "./realtime-react/package.json",
195
164
  "./realtime-react": {
196
- "import": "./realtime-react/dist/index.js",
197
- "types": "./realtime-react/dist/index.d.ts"
165
+ "import": "./dist/realtime-react/index.js",
166
+ "types": "./dist/realtime-react/index.d.ts"
198
167
  },
199
- "./realtime-server/package.json": "./realtime-server/package.json",
200
168
  "./realtime-server": {
201
- "import": "./realtime-server/dist/index.js",
202
- "types": "./realtime-server/dist/index.d.ts"
169
+ "import": "./dist/realtime-server/index.js",
170
+ "types": "./dist/realtime-server/index.d.ts"
203
171
  },
204
- "./realtime-testing/package.json": "./realtime-testing/package.json",
205
172
  "./realtime-testing": {
206
- "import": "./realtime-testing/dist/index.js",
207
- "types": "./realtime-testing/dist/index.d.ts"
173
+ "import": "./dist/realtime-testing/index.js",
174
+ "types": "./dist/realtime-testing/index.d.ts"
208
175
  },
209
- "./transceivers/set-rtx/package.json": "./transceivers/set-rtx/package.json",
210
176
  "./transceivers/set-rtx": {
211
- "import": "./transceivers/set-rtx/dist/index.js",
212
- "types": "./transceivers/set-rtx/dist/index.d.ts"
177
+ "import": "./dist/transceivers/set-rtx/index.js",
178
+ "types": "./dist/transceivers/set-rtx/index.d.ts"
213
179
  },
214
- "./web/package.json": "./web/package.json",
215
180
  "./web": {
216
- "import": "./web/dist/index.js",
217
- "types": "./web/dist/index.d.ts"
181
+ "import": "./dist/web/index.js",
182
+ "types": "./dist/web/index.d.ts"
218
183
  }
219
184
  },
220
185
  "scripts": {
221
186
  "manifest": "tsx __scripts__/manifest-build.node.ts",
222
- "clean:build": "find . -type d -name 'dist' -not -path '*/node_modules/*' | xargs rm -rf",
223
- "build": "bun run clean:build && concurrently \"bun:build:*\"",
224
- "build:main": "tsup-node",
225
- "build:types": "tsup-node --dts",
226
- "build:data": "cd data && tsup-node",
227
- "build:eslint-plugin": "cd eslint-plugin && tsup-node",
228
- "build:internal": "cd internal && tsup-node",
229
- "build:introspection": "cd introspection && tsup-node",
230
- "build:json": "cd json && tsup-node",
231
- "build:react": "cd react && tsup-node",
232
- "build:react-devtools": "cd react-devtools && tsup-node",
233
- "build:realtime": "cd realtime && tsup-node",
234
- "build:realtime-client": "cd realtime-client && tsup-node",
235
- "build:realtime-react": "cd realtime-react && tsup-node",
236
- "build:realtime-server": "cd realtime-server && tsup-node",
237
- "build:realtime-testing": "cd realtime-testing && tsup-node",
238
- "build:transceivers:set-rtx": "cd transceivers/set-rtx && tsup-node",
239
- "build:web": "cd web && tsup-node",
187
+ "build": "tsdown && bun ./__scripts__/build-sort.bun.ts",
240
188
  "lint:biome": "biome check -- .",
241
189
  "lint:eslint": "eslint -- .",
242
190
  "lint:types": "tsc --noEmit",
@@ -44,6 +44,7 @@ export function struct<
44
44
  key: options.key,
45
45
  get: ({ get }) => {
46
46
  return Object.keys(options.default).reduce((acc, key) => {
47
+ // @ts-expect-error finicky
47
48
  acc[key] = get(atoms[options.key + capitalize(key) + `State`])
48
49
  return acc
49
50
  }, {} as any)
@@ -4,9 +4,11 @@ import * as Rules from "./rules"
4
4
 
5
5
  export { Rules }
6
6
 
7
- export default {
7
+ const plugin: ESLint.Plugin = {
8
8
  rules: {
9
9
  "explicit-state-types": Rules.explicitStateTypes as any,
10
10
  "synchronous-selector-dependencies": Rules.synchronousSelectorDependencies,
11
11
  },
12
12
  } satisfies ESLint.Plugin
13
+
14
+ export default plugin
@@ -7,7 +7,12 @@ const createRule = ESLintUtils.RuleCreator(
7
7
 
8
8
  const STATE_FUNCTIONS = [`atom`, `atomFamily`, `selector`, `selectorFamily`]
9
9
 
10
- export const explicitStateTypes = createRule({
10
+ export const explicitStateTypes: ESLintUtils.RuleModule<
11
+ `noTypeArgument`,
12
+ [],
13
+ unknown,
14
+ ESLintUtils.RuleListener
15
+ > = createRule({
11
16
  name: `explicit-state-types`,
12
17
  meta: {
13
18
  type: `problem`,
@@ -1,10 +1,23 @@
1
1
  /* eslint-disable @typescript-eslint/switch-exhaustiveness-check */
2
+ import type { RuleType } from "@eslint/core"
2
3
  import type { Rule } from "eslint"
3
4
  import type * as ESTree from "estree"
4
5
 
5
6
  import { walk } from "../walk"
6
7
 
7
- export const synchronousSelectorDependencies = {
8
+ export const synchronousSelectorDependencies: {
9
+ meta: {
10
+ type: RuleType
11
+ docs: {
12
+ description: string
13
+ category: string
14
+ recommended: boolean
15
+ url: string
16
+ }
17
+ schema: never[]
18
+ }
19
+ create(context: Rule.RuleContext): Rule.NodeListener
20
+ } = {
8
21
  meta: {
9
22
  type: `problem`,
10
23
  docs: {
@@ -76,8 +76,10 @@ export function createWritableSelectorFamily<T, K extends Canonical>(
76
76
  default: (key: K) => {
77
77
  const getFn = options.get(key)
78
78
  return getFn({
79
- get: ((...ps: [any]) => getFromStore(store, ...ps)) as typeof getState,
80
- find: ((token, k) => findInStore(store, token, k)) as typeof findState,
79
+ get: ((...args: Parameters<typeof getState>) =>
80
+ getFromStore(store, ...args)) as typeof getState,
81
+ find: ((...args: Parameters<typeof findState>) =>
82
+ findInStore(store, ...args)) as typeof findState,
81
83
  json: (token) => getJsonToken(store, token),
82
84
  })
83
85
  },
@@ -1,7 +1,9 @@
1
1
  export * from "./create-atom-family"
2
2
  export * from "./create-readonly-selector-family"
3
+ export * from "./create-readonly-selector-family"
3
4
  export * from "./create-regular-atom-family"
4
5
  export * from "./create-selector-family"
6
+ export * from "./create-writable-selector-family"
5
7
  export * from "./dispose-from-store"
6
8
  export * from "./find-in-store"
7
9
  export * from "./init-family-member"