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,308 @@
1
+ main[data-css="atom_io_devtools"] {
2
+ --fg-color: #eee;
3
+ --bg-color: #111;
4
+ --bg-tint1: #222;
5
+ --fg-border: 1px solid var(--fg-color);
6
+ @media (prefers-color-scheme: light) {
7
+ --fg-color: #444;
8
+ --bg-color: #ddd;
9
+ --bg-tint1: #e3e3e3;
10
+ }
11
+ & {
12
+ box-sizing: border-box;
13
+ color: var(--fg-color);
14
+ background-color: var(--bg-color);
15
+ border: 2px solid var(--fg-color);
16
+ position: fixed;
17
+ right: 0;
18
+ bottom: 0;
19
+ height: 100%;
20
+ display: flex;
21
+ flex-flow: column;
22
+ max-height: 800px;
23
+ width: 100%;
24
+ max-width: 500px;
25
+ overflow-y: scroll;
26
+ }
27
+ * {
28
+ font-size: 16px;
29
+ font-family: theia, monospace;
30
+ }
31
+ > header {
32
+ padding: 5px;
33
+ padding-left: 10px;
34
+ padding-bottom: 0;
35
+ display: flex;
36
+ justify-content: space-between;
37
+ h1 {
38
+ font-size: inherit;
39
+ margin: 0;
40
+ font-size: 24px;
41
+ font-family: charter, serif;
42
+ }
43
+ nav {
44
+ display: flex;
45
+ flex-flow: row nowrap;
46
+ button {
47
+ cursor: pointer;
48
+ background: none;
49
+ border: none;
50
+ padding: none;
51
+ margin-bottom: -2px;
52
+ z-index: 1000;
53
+ &:disabled {
54
+ cursor: default;
55
+ background-color: var(--bg-tint1);
56
+ color: var(--fg-color);
57
+ border: var(--fg-border);
58
+ border-bottom: none;
59
+ }
60
+ }
61
+ }
62
+ }
63
+ > main {
64
+ background: var(--bg-tint1);
65
+ }
66
+ main {
67
+ overflow-y: scroll;
68
+ flex-grow: 1;
69
+ display: flex;
70
+ flex-flow: column;
71
+ gap: 0;
72
+ article.index {
73
+ .node .node {
74
+ border-right: var(--fg-border);
75
+ padding-right: 0;
76
+ background: #fff3;
77
+ }
78
+ .node > .node {
79
+ margin: 5px 0;
80
+ margin-left: 12px;
81
+ border-left: var(--fg-border);
82
+ }
83
+ .node {
84
+ border-top: var(--fg-border);
85
+ overflow-x: scroll;
86
+ padding: 5px;
87
+ &:last-of-type {
88
+ border-bottom: var(--fg-border);
89
+ }
90
+ &.transaction_update {
91
+ padding: 0;
92
+ }
93
+ header {
94
+ display: flex;
95
+ flex-flow: row;
96
+ gap: 5px;
97
+ position: sticky;
98
+ z-index: 999;
99
+ top: 0;
100
+ button.carat {
101
+ cursor: pointer;
102
+ background: none;
103
+ border: none;
104
+ width: 20px;
105
+ &.open {
106
+ transform: rotate(90deg);
107
+ }
108
+ &:disabled {
109
+ cursor: default;
110
+ }
111
+ }
112
+ > main {
113
+ display: flex;
114
+ flex-flow: row;
115
+ gap: 5px;
116
+ cursor: help;
117
+ h2 {
118
+ display: inline-block;
119
+ margin: 0;
120
+ }
121
+ .detail {
122
+ color: #777;
123
+ @media (prefers-color-scheme: light) {
124
+ color: #999;
125
+ }
126
+ }
127
+ }
128
+ }
129
+ main {
130
+ margin-left: 15px;
131
+ }
132
+ }
133
+ section.transaction_log {
134
+ margin-top: 0;
135
+ main {
136
+ display: flex;
137
+ flex-flow: row wrap;
138
+ gap: 5px;
139
+ .transaction_update {
140
+ width: 100%;
141
+ display: flex;
142
+ flex-flow: row;
143
+ align-items: flex-start;
144
+ justify-content: flex-start;
145
+ justify-items: flex-start;
146
+ align-content: flex-start;
147
+ border-left: var(--fg-border);
148
+ border-top: var(--fg-border);
149
+ header {
150
+ padding: 5px;
151
+ h4 {
152
+ margin: 0;
153
+ padding: 0;
154
+ font-size: inherit;
155
+ }
156
+ }
157
+ main {
158
+ margin-left: 0;
159
+ display: flex;
160
+ flex-flow: column;
161
+ gap: 0px;
162
+ border-left: 1px solid #333;
163
+ section ~ section {
164
+ border-top: 1px solid #333;
165
+ }
166
+ section {
167
+ padding: 5px;
168
+ &.transaction_output {
169
+ border-right: none;
170
+ }
171
+ &.transaction_impact {
172
+ padding: 5px;
173
+ }
174
+ margin: 0;
175
+ article {
176
+ border-left: var(--fg-border);
177
+ border-right: var(--fg-border);
178
+ .summary {
179
+ white-space: nowrap;
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
+ section.timeline_log {
188
+ header {
189
+ display: flex;
190
+ > main {
191
+ display: flex;
192
+ width: 100%;
193
+ flex-grow: 1;
194
+ .gap {
195
+ flex-grow: 1;
196
+ }
197
+ nav {
198
+ display: flex;
199
+ flex-flow: row nowrap;
200
+ gap: 5px;
201
+ }
202
+ }
203
+ }
204
+ .timeline_update {
205
+ padding: 5px;
206
+ border-left: var(--fg-border);
207
+ h4 {
208
+ margin: 0;
209
+ padding: 0;
210
+ font-size: inherit;
211
+ }
212
+ main {
213
+ margin: 0;
214
+ .node.atom_update {
215
+ border-left: var(--fg-border);
216
+ }
217
+ }
218
+ }
219
+ .you_are_here {
220
+ background: var(--fg-color);
221
+ color: var(--bg-color);
222
+ text-align: center;
223
+ }
224
+ }
225
+ }
226
+ }
227
+ footer {
228
+ display: flex;
229
+ justify-content: flex-end;
230
+ button {
231
+ cursor: pointer;
232
+ background: none;
233
+ border: none;
234
+ padding: none;
235
+ position: absolute;
236
+ right: 0;
237
+ bottom: 0;
238
+ }
239
+ }
240
+
241
+ .json_editor {
242
+ input {
243
+ font-family: theia, monospace;
244
+ border: none;
245
+ border-bottom: 1px solid;
246
+ background: none;
247
+ &:disabled {
248
+ border: none;
249
+ }
250
+ }
251
+ button {
252
+ background: none;
253
+ color: #777;
254
+ border: none;
255
+ font-family: theia, monospace;
256
+ font-size: 14px;
257
+ margin: none;
258
+ padding: 4px;
259
+ padding-bottom: 6px;
260
+ cursor: pointer;
261
+ &:hover {
262
+ color: #333;
263
+ background-color: #aaa;
264
+ }
265
+ }
266
+ select {
267
+ font-family: theia, monospace;
268
+ font-size: 14px;
269
+ background: none;
270
+ border: none;
271
+ color: #777;
272
+ @media (prefers-color-scheme: light) {
273
+ color: #999;
274
+ }
275
+ }
276
+ .json_editor_unofficial {
277
+ background-color: #777;
278
+ button {
279
+ color: #333;
280
+ }
281
+ }
282
+ .json_editor_missing {
283
+ background-color: #f055;
284
+ }
285
+ .json_editor_key {
286
+ padding-right: 10px;
287
+ input {
288
+ color: #999;
289
+ @media (prefers-color-scheme: light) {
290
+ color: #777;
291
+ }
292
+ }
293
+ }
294
+ .json_editor_object {
295
+ border-left: 2px solid #333;
296
+ padding-left: 20px;
297
+ @media (prefers-color-scheme: light) {
298
+ border-color: #ccc;
299
+ }
300
+ .json_editor_properties {
301
+ > * {
302
+ border-bottom: var(--fg-border);
303
+ margin-bottom: 2px;
304
+ }
305
+ }
306
+ }
307
+ }
308
+ }
@@ -31,7 +31,7 @@ export type JsonEditorProps<T> = {
31
31
  set: (valOrUpdater: T | ((currVal: T) => T)) => void
32
32
  name?: string | undefined
33
33
  rename?: ((newKey: string) => void) | undefined
34
- remove?: () => void
34
+ remove?: (() => void) | undefined
35
35
  path?: ReadonlyArray<number | string>
36
36
  isReadonly?: (path: ReadonlyArray<number | string>) => boolean
37
37
  isHidden?: (path: ReadonlyArray<number | string>) => boolean
@@ -39,7 +39,7 @@ export type JsonEditorProps<T> = {
39
39
  style?: CSSProperties
40
40
  Header?: FC<{ data: T }>
41
41
  Components?: Partial<JsonEditorComponents>
42
- testid?: string
42
+ testid?: string | undefined
43
43
  }
44
44
 
45
45
  export const JsonEditor = <T,>({
@@ -14,9 +14,9 @@ export const stringToObject = (str: string): Json.Tree.Object => {
14
14
  export const objectToString = (obj: Json.Tree.Object): string =>
15
15
  JSON.stringify(obj)
16
16
  export const objectToBoolean = (obj: Json.Tree.Object): boolean =>
17
- obj.true === true
17
+ obj[`true`] === true
18
18
  export const objectToNumber = (obj: Json.Tree.Object): number =>
19
- Number(obj.number ?? obj.size ?? obj.count ?? 0)
19
+ Number(obj[`number`] ?? obj[`size`] ?? obj[`count`] ?? 0)
20
20
  export const objectToArray = <T>(
21
21
  obj: Json.Tree.Object<string, T>,
22
22
  ): [key: string, value: T][] => Object.entries(obj)
@@ -1,7 +1,7 @@
1
1
  import { become } from "atom.io/internal"
2
2
  import type { Json, JsonTypeName } from "atom.io/json"
3
3
  import { fromEntries, JSON_DEFAULTS, toEntries } from "atom.io/json"
4
- import type { MutableRefObject } from "react"
4
+ import type { RefObject } from "react"
5
5
 
6
6
  import type { SetterOrUpdater } from "../.."
7
7
  import { castToJson } from "./cast-to-json"
@@ -13,7 +13,7 @@ export const makePropertySetters = <T extends Json.Tree.Object>(
13
13
  fromEntries(
14
14
  toEntries(data).map(([key, value]) => [
15
15
  key,
16
- (newValue) => {
16
+ (newValue: unknown) => {
17
17
  set({ ...data, [key]: become(newValue)(value) })
18
18
  },
19
19
  ]),
@@ -22,7 +22,7 @@ export const makePropertySetters = <T extends Json.Tree.Object>(
22
22
  export const makePropertyRenamers = <T extends Json.Tree.Object>(
23
23
  data: T,
24
24
  set: SetterOrUpdater<T>,
25
- stableKeyMapRef: MutableRefObject<{ [Key in keyof T]: keyof T }>,
25
+ stableKeyMapRef: RefObject<{ [Key in keyof T]: keyof T }>,
26
26
  ): { [K in keyof T]: (newKey: string) => void } =>
27
27
  fromEntries(
28
28
  toEntries(data).map(([key, value]) => [
@@ -47,7 +47,9 @@ export const JsonEditor_INTERNAL = <T,>({
47
47
  type: `non-json`,
48
48
  data,
49
49
  }
50
- const SubEditor = dataIsJson ? SubEditors[refined.type] : NonJsonEditor
50
+ const SubEditor = dataIsJson
51
+ ? SubEditors[refined.type as keyof JsonTypes]
52
+ : NonJsonEditor
51
53
 
52
54
  const disabled = isReadonly(path)
53
55
 
@@ -92,7 +94,7 @@ export const JsonEditor_INTERNAL = <T,>({
92
94
  </Components.KeyWrapper>
93
95
  )}
94
96
  <SubEditor
95
- data={refined.data}
97
+ data={refined.data as never}
96
98
  set={set}
97
99
  remove={remove}
98
100
  rename={rename}
@@ -8,6 +8,7 @@ import {
8
8
  import type { IntrospectionStates } from "atom.io/introspection"
9
9
  import { attachIntrospectionStates } from "atom.io/introspection"
10
10
  import { persistSync } from "atom.io/web"
11
+ import type { Context } from "react"
11
12
  import { createContext } from "react"
12
13
 
13
14
  type DevtoolsView = `atoms` | `selectors` | `timelines` | `transactions`
@@ -70,6 +71,6 @@ export function attachDevtoolsStates(
70
71
  }
71
72
  }
72
73
 
73
- export const DevtoolsContext = createContext<
74
+ export const DevtoolsContext: Context<
74
75
  DevtoolsStates & IntrospectionStates & { store: Store }
75
- >(attachDevtoolsStates(IMPLICIT.STORE))
76
+ > = createContext(attachDevtoolsStates(IMPLICIT.STORE))
@@ -1,9 +1,19 @@
1
- import type { MutableAtomToken } from "atom.io"
1
+ import type {
2
+ AtomToken,
3
+ JoinToken,
4
+ MutableAtomToken,
5
+ ReadonlySelectorFamilyToken,
6
+ ReadonlySelectorToken,
7
+ } from "atom.io"
2
8
  import { atom, getInternalRelations, join, selectorFamily } from "atom.io"
9
+ import { Join } from "atom.io/internal"
3
10
  import type { SetRTXJson } from "atom.io/transceivers/set-rtx"
4
11
  import { SetRTX } from "atom.io/transceivers/set-rtx"
5
12
 
6
- export const usersInThisRoomIndex = atom<SetRTX<string>, SetRTXJson<string>>({
13
+ export const usersInThisRoomIndex: MutableAtomToken<
14
+ SetRTX<string>,
15
+ SetRTXJson<string>
16
+ > = atom<SetRTX<string>, SetRTXJson<string>>({
7
17
  key: `usersInRoomIndex`,
8
18
  mutable: true,
9
19
  default: () => new SetRTX<string>(),
@@ -11,7 +21,10 @@ export const usersInThisRoomIndex = atom<SetRTX<string>, SetRTXJson<string>>({
11
21
  fromJson: (json) => SetRTX.fromJSON(json),
12
22
  })
13
23
 
14
- export const roomIndex = atom<SetRTX<string>, SetRTXJson<string>>({
24
+ export const roomIndex: MutableAtomToken<
25
+ SetRTX<string>,
26
+ SetRTXJson<string>
27
+ > = atom<SetRTX<string>, SetRTXJson<string>>({
15
28
  key: `roomIndex`,
16
29
  default: () => new SetRTX<string>(),
17
30
  mutable: true,
@@ -25,7 +38,14 @@ export type UserInRoomMeta = {
25
38
  export const DEFAULT_USER_IN_ROOM_META: UserInRoomMeta = {
26
39
  enteredAtEpoch: 0,
27
40
  }
28
- export const usersInRooms = join(
41
+ export const usersInRooms: JoinToken<
42
+ `room`,
43
+ string,
44
+ `user`,
45
+ string,
46
+ `1:n`,
47
+ UserInRoomMeta
48
+ > = join(
29
49
  {
30
50
  key: `usersInRooms`,
31
51
  between: [`room`, `user`],
@@ -36,7 +56,10 @@ export const usersInRooms = join(
36
56
  DEFAULT_USER_IN_ROOM_META,
37
57
  )
38
58
 
39
- export const usersInMyRoomView = selectorFamily<
59
+ export const usersInMyRoomView: ReadonlySelectorFamilyToken<
60
+ MutableAtomToken<SetRTX<string>, SetRTXJson<string>>[],
61
+ string
62
+ > = selectorFamily<
40
63
  MutableAtomToken<SetRTX<string>, SetRTXJson<string>>[],
41
64
  string
42
65
  >({
@@ -0,0 +1,23 @@
1
+ import * as AtomIO from "atom.io"
2
+ import { persistSync } from "atom.io/web"
3
+
4
+ export const myIdState__INTERNAL: AtomIO.RegularAtomToken<string | undefined> =
5
+ AtomIO.atom<string | undefined>({
6
+ key: `mySocketId__INTERNAL`,
7
+ default: undefined,
8
+ })
9
+ export const myIdState: AtomIO.ReadonlySelectorToken<string | undefined> =
10
+ AtomIO.selector<string | undefined>({
11
+ key: `mySocketId`,
12
+ get: ({ get }) => get(myIdState__INTERNAL),
13
+ })
14
+
15
+ export const myUsernameState: AtomIO.RegularAtomToken<string | null> =
16
+ AtomIO.atom<string | null>({
17
+ key: `myName`,
18
+ default: null,
19
+ effects:
20
+ typeof window === `undefined`
21
+ ? []
22
+ : [persistSync(window.localStorage, JSON, `myUsername`)],
23
+ })
@@ -0,0 +1,15 @@
1
+ import * as AtomIO from "atom.io"
2
+
3
+ export const optimisticUpdateQueue: AtomIO.RegularAtomToken<
4
+ AtomIO.TransactionUpdate<any>[]
5
+ > = AtomIO.atom<AtomIO.TransactionUpdate<any>[]>({
6
+ key: `updateQueue`,
7
+ default: [],
8
+ })
9
+
10
+ export const confirmedUpdateQueue: AtomIO.RegularAtomToken<
11
+ AtomIO.TransactionUpdate<any>[]
12
+ > = AtomIO.atom<AtomIO.TransactionUpdate<any>[]>({
13
+ key: `serverConfirmedUpdateQueue`,
14
+ default: [],
15
+ })
@@ -1,3 +1,4 @@
1
+ export * from "./on-mount"
1
2
  export * from "./realtime-context"
2
3
  export * from "./use-pull-atom"
3
4
  export * from "./use-pull-atom-family-member"
@@ -1,5 +1,5 @@
1
1
  import { useSingleEffect } from "./use-single-effect"
2
2
 
3
- export function onMount(effect: () => (() => void) | undefined): void {
3
+ export function onMount(effect: () => (() => void) | undefined | void): void {
4
4
  useSingleEffect(effect, [])
5
5
  }
@@ -11,10 +11,11 @@ export type RealtimeReactStore = {
11
11
  > | null
12
12
  }
13
13
 
14
- export const RealtimeContext = React.createContext<RealtimeReactStore>({
15
- socket: null,
16
- services: null,
17
- })
14
+ export const RealtimeContext: React.Context<RealtimeReactStore> =
15
+ React.createContext({
16
+ socket: null,
17
+ services: null,
18
+ })
18
19
 
19
20
  export const RealtimeProvider: React.FC<{
20
21
  children: React.ReactNode
@@ -1,12 +1,13 @@
1
1
  import * as React from "react"
2
2
 
3
- const { NODE_ENV } = globalThis.env ?? {}
3
+ // @ts-expect-error this is a safe way to check a property on the global object
4
+ const { NODE_ENV } = globalThis[`env`] ?? {}
4
5
  const IN_DEV = NODE_ENV === `development`
5
6
 
6
7
  function noop() {}
7
8
 
8
9
  export function useSingleEffect(
9
- effect: () => (() => void) | undefined,
10
+ effect: () => (() => void) | undefined | void,
10
11
  deps: unknown[],
11
12
  ): void {
12
13
  if (IN_DEV) {
@@ -49,7 +49,7 @@ export class ChildSocket<
49
49
  ) {
50
50
  super((event, ...args) => {
51
51
  const stringifiedEvent = JSON.stringify([event, ...args]) + `\x03`
52
- const errorHandler = (err) => {
52
+ const errorHandler = (err: { code: string }) => {
53
53
  if (err.code === `EPIPE`) {
54
54
  console.error(`EPIPE error during write`, this.process.stdin)
55
55
  }
@@ -8,13 +8,13 @@ import type { ChildSocket } from "../ipc-sockets"
8
8
  import type { RoomArguments } from "./server-room-external-store"
9
9
  import { roomArgumentsAtoms, roomSelectors } from "./server-room-external-store"
10
10
 
11
- export const createRoomTX = AtomIO.transaction<
11
+ export const createRoomTX: AtomIO.TransactionToken<
12
12
  (
13
13
  roomId: string,
14
14
  script: string,
15
15
  options?: string[],
16
16
  ) => Loadable<ChildSocket<any, any>>
17
- >({
17
+ > = AtomIO.transaction({
18
18
  key: `createRoom`,
19
19
  do: ({ get, set, find }, roomId, script, options) => {
20
20
  const args: RoomArguments = options ? [script, options] : [script]
@@ -28,9 +28,9 @@ export const createRoomTX = AtomIO.transaction<
28
28
  })
29
29
  export type CreateRoomIO = AtomIO.TransactionIO<typeof createRoomTX>
30
30
 
31
- export const joinRoomTX = AtomIO.transaction<
31
+ export const joinRoomTX: AtomIO.TransactionToken<
32
32
  (roomId: string, userId: string, enteredAtEpoch: number) => UserInRoomMeta
33
- >({
33
+ > = AtomIO.transaction({
34
34
  key: `joinRoom`,
35
35
  do: (tools, roomId, userId, enteredAtEpoch) => {
36
36
  const meta = { enteredAtEpoch }
@@ -46,9 +46,9 @@ export const joinRoomTX = AtomIO.transaction<
46
46
  })
47
47
  export type JoinRoomIO = AtomIO.TransactionIO<typeof joinRoomTX>
48
48
 
49
- export const leaveRoomTX = AtomIO.transaction<
49
+ export const leaveRoomTX: AtomIO.TransactionToken<
50
50
  (roomId: string, userId: string) => void
51
- >({
51
+ > = AtomIO.transaction({
52
52
  key: `leaveRoom`,
53
53
  do: (tools, roomId, userId) => {
54
54
  editRelationsInStore(
@@ -62,16 +62,17 @@ export const leaveRoomTX = AtomIO.transaction<
62
62
  })
63
63
  export type LeaveRoomIO = AtomIO.TransactionIO<typeof leaveRoomTX>
64
64
 
65
- export const destroyRoomTX = AtomIO.transaction<(roomId: string) => void>({
66
- key: `destroyRoom`,
67
- do: (tools, roomId) => {
68
- editRelationsInStore(
69
- usersInRooms,
70
- (relations) => {
71
- relations.delete({ room: roomId })
72
- },
73
- tools.env().store,
74
- )
75
- tools.set(roomIndex, (s) => (s.delete(roomId), s))
76
- },
77
- })
65
+ export const destroyRoomTX: AtomIO.TransactionToken<(roomId: string) => void> =
66
+ AtomIO.transaction({
67
+ key: `destroyRoom`,
68
+ do: (tools, roomId) => {
69
+ editRelationsInStore(
70
+ usersInRooms,
71
+ (relations) => {
72
+ relations.delete({ room: roomId })
73
+ },
74
+ tools.env().store,
75
+ )
76
+ tools.set(roomIndex, (s) => (s.delete(roomId), s))
77
+ },
78
+ })
@@ -1,7 +1,11 @@
1
1
  import type { ChildProcessWithoutNullStreams } from "node:child_process"
2
2
  import { spawn } from "node:child_process"
3
3
 
4
- import type { Loadable } from "atom.io"
4
+ import type {
5
+ Loadable,
6
+ ReadonlySelectorFamilyToken,
7
+ RegularAtomFamilyToken,
8
+ } from "atom.io"
5
9
  import { atomFamily, selectorFamily } from "atom.io"
6
10
 
7
11
  import { ChildSocket } from "../ipc-sockets"
@@ -10,15 +14,16 @@ export type RoomArguments =
10
14
  | [script: string, options: string[]]
11
15
  | [script: string]
12
16
 
13
- export const roomArgumentsAtoms = atomFamily<RoomArguments, string>({
14
- key: `roomArguments`,
15
- default: [`echo`, [`Hello World!`]],
16
- })
17
+ export const roomArgumentsAtoms: RegularAtomFamilyToken<RoomArguments, string> =
18
+ atomFamily<RoomArguments, string>({
19
+ key: `roomArguments`,
20
+ default: [`echo`, [`Hello World!`]],
21
+ })
17
22
 
18
- export const roomSelectors = selectorFamily<
23
+ export const roomSelectors: ReadonlySelectorFamilyToken<
19
24
  Loadable<ChildSocket<any, any>>,
20
25
  string
21
- >({
26
+ > = selectorFamily<Loadable<ChildSocket<any, any>>, string>({
22
27
  key: `room`,
23
28
  get:
24
29
  (roomId) =>