atom.io 0.44.5 → 0.44.7

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 (50) hide show
  1. package/dist/internal/index.d.ts +5 -6
  2. package/dist/internal/index.d.ts.map +1 -1
  3. package/dist/internal/index.js.map +1 -1
  4. package/dist/introspection/index.d.ts.map +1 -1
  5. package/dist/realtime/index.d.ts +4 -14
  6. package/dist/realtime/index.d.ts.map +1 -1
  7. package/dist/realtime/index.js +10 -8
  8. package/dist/realtime/index.js.map +1 -1
  9. package/dist/realtime-client/index.d.ts +6 -7
  10. package/dist/realtime-client/index.d.ts.map +1 -1
  11. package/dist/realtime-client/index.js +18 -22
  12. package/dist/realtime-client/index.js.map +1 -1
  13. package/dist/realtime-react/index.d.ts +3 -1
  14. package/dist/realtime-react/index.d.ts.map +1 -1
  15. package/dist/realtime-react/index.js +10 -6
  16. package/dist/realtime-react/index.js.map +1 -1
  17. package/dist/realtime-server/index.d.ts +40 -32
  18. package/dist/realtime-server/index.d.ts.map +1 -1
  19. package/dist/realtime-server/index.js +89 -59
  20. package/dist/realtime-server/index.js.map +1 -1
  21. package/dist/realtime-testing/index.d.ts +4 -4
  22. package/dist/realtime-testing/index.d.ts.map +1 -1
  23. package/dist/realtime-testing/index.js +5 -5
  24. package/dist/realtime-testing/index.js.map +1 -1
  25. package/dist/shared-room-store-zzjyXJv7.d.ts +28 -0
  26. package/dist/shared-room-store-zzjyXJv7.d.ts.map +1 -0
  27. package/package.json +17 -17
  28. package/src/internal/get-state/get-from-store.ts +3 -5
  29. package/src/internal/join/get-internal-relations-from-store.ts +5 -9
  30. package/src/internal/join/join-internal.ts +5 -2
  31. package/src/realtime/index.ts +1 -0
  32. package/src/realtime/realtime-continuity.ts +2 -1
  33. package/src/realtime/realtime-key-types.ts +11 -0
  34. package/src/realtime/shared-room-store.ts +20 -13
  35. package/src/realtime-client/continuity/register-and-attempt-confirmed-update.ts +5 -5
  36. package/src/realtime-client/realtime-client-stores/client-main-store.ts +8 -12
  37. package/src/realtime-client/realtime-client-stores/client-sync-store.ts +4 -4
  38. package/src/realtime-client/sync-continuity.ts +6 -6
  39. package/src/realtime-react/realtime-context.tsx +14 -5
  40. package/src/realtime-server/continuity/continuity-store.ts +1 -2
  41. package/src/realtime-server/continuity/provide-continuity.ts +2 -2
  42. package/src/realtime-server/continuity/provide-outcomes.ts +1 -2
  43. package/src/realtime-server/continuity/provide-perspectives.ts +1 -3
  44. package/src/realtime-server/continuity/provide-startup-payloads.ts +1 -3
  45. package/src/realtime-server/continuity/track-acknowledgements.ts +1 -2
  46. package/src/realtime-server/ipc-sockets/parent-socket.ts +1 -1
  47. package/src/realtime-server/realtime-mutable-family-provider.ts +12 -9
  48. package/src/realtime-server/realtime-server-stores/server-room-external-store.ts +127 -27
  49. package/src/realtime-server/realtime-server-stores/server-user-store.ts +11 -18
  50. package/src/realtime-testing/setup-realtime-test.tsx +7 -6
@@ -6,13 +6,10 @@ import type {
6
6
  RegularAtomFamilyToken,
7
7
  } from "atom.io"
8
8
  import { atomFamily, join, mutableAtom, selectorFamily } from "atom.io"
9
- import type { Socket } from "atom.io/realtime"
9
+ import type { RoomKey, Socket, SocketKey, UserKey } from "atom.io/realtime"
10
+ import { isSocketKey, isUserKey } from "atom.io/realtime"
10
11
  import { UList } from "atom.io/transceivers/u-list"
11
12
 
12
- export type SocketKey = `socket::${string}`
13
- export type UserKey = `user::${string}`
14
- export type RoomKey = `room::${string}`
15
-
16
13
  export type SocketSystemHierarchy = Hierarchy<
17
14
  [
18
15
  {
@@ -28,13 +25,13 @@ export const socketAtoms: RegularAtomFamilyToken<Socket | null, SocketKey> =
28
25
  default: null,
29
26
  })
30
27
 
31
- export const socketIndex: MutableAtomToken<UList<SocketKey>> = mutableAtom<
28
+ export const socketKeysAtom: MutableAtomToken<UList<SocketKey>> = mutableAtom<
32
29
  UList<SocketKey>
33
30
  >({
34
31
  key: `socketsIndex`,
35
32
  class: UList,
36
33
  })
37
- export const userIndex: MutableAtomToken<UList<UserKey>> = mutableAtom<
34
+ export const userKeysAtom: MutableAtomToken<UList<UserKey>> = mutableAtom<
38
35
  UList<UserKey>
39
36
  >({
40
37
  key: `usersIndex`,
@@ -50,16 +47,12 @@ export const usersOfSockets: JoinToken<
50
47
  key: `usersOfSockets`,
51
48
  between: [`user`, `socket`],
52
49
  cardinality: `1:1`,
53
- isAType: (s): s is UserKey => s.startsWith(`user::`),
54
- isBType: (s): s is SocketKey => s.startsWith(`socket::`),
50
+ isAType: isUserKey,
51
+ isBType: isSocketKey,
55
52
  })
56
53
 
57
- export const userMutualSituationalAwarenessIndexes: PureSelectorFamilyToken<
58
- UserKey[],
59
- UserKey
60
- > = selectorFamily<UserKey[], UserKey>({
61
- key: `userMutualSituationalAwarenessIndexes`,
62
- get: (userId) => () => {
63
- return [userId]
64
- },
65
- })
54
+ export const selfListSelectors: PureSelectorFamilyToken<UserKey[], UserKey> =
55
+ selectorFamily<UserKey[], UserKey>({
56
+ key: `selfList`,
57
+ get: (userId) => () => [userId],
58
+ })
@@ -16,6 +16,7 @@ import {
16
16
  } from "atom.io/internal"
17
17
  import { toEntries } from "atom.io/json"
18
18
  import * as AR from "atom.io/react"
19
+ import type * as RT from "atom.io/realtime"
19
20
  import * as RTC from "atom.io/realtime-client"
20
21
  import * as RTR from "atom.io/realtime-react"
21
22
  import * as RTS from "atom.io/realtime-server"
@@ -71,7 +72,7 @@ export type TestSetupOptions = {
71
72
  server: (tools: {
72
73
  socket: SocketIO.Socket
73
74
  silo: AtomIO.Silo
74
- userKey: RTS.UserKey
75
+ userKey: RT.UserKey
75
76
  enableLogging: () => void
76
77
  }) => (() => void) | void
77
78
  }
@@ -141,7 +142,7 @@ export const setupRealtimeTestServer = (
141
142
  const server = new SocketIO.Server(httpServer).use((socket, next) => {
142
143
  const { token, username } = socket.handshake.auth
143
144
  if (token === `test` && socket.id) {
144
- const userClaim = socketRealm.allocate(`root`, `user::${username}`)
145
+ const userClaim = socketRealm.allocate(`root`, username as RT.UserKey)
145
146
  const socketClaim = socketRealm.allocate(`root`, `socket::${socket.id}`)
146
147
  const socketState = findInStore(silo.store, RTS.socketAtoms, socketClaim)
147
148
  setIntoStore(silo.store, socketState, socket)
@@ -152,8 +153,8 @@ export const setupRealtimeTestServer = (
152
153
  },
153
154
  silo.store,
154
155
  )
155
- setIntoStore(silo.store, RTS.userIndex, (index) => index.add(userClaim))
156
- setIntoStore(silo.store, RTS.socketIndex, (index) =>
156
+ setIntoStore(silo.store, RTS.userKeysAtom, (index) => index.add(userClaim))
157
+ setIntoStore(silo.store, RTS.socketKeysAtom, (index) =>
157
158
  index.add(socketClaim),
158
159
  )
159
160
  next()
@@ -228,13 +229,13 @@ export const setupRealtimeTestClient = (
228
229
  const testClient = { dispose: () => {} }
229
230
  const init = () => {
230
231
  const socket: ClientSocket = io(`http://localhost:${port}/`, {
231
- auth: { token: `test`, username: `${name}-${testNumber}` },
232
+ auth: { token: `test`, username: `user::${name}-${testNumber}` },
232
233
  })
233
234
  const silo = new AtomIO.Silo(
234
235
  { name, lifespan: `ephemeral`, isProduction: false },
235
236
  IMPLICIT.STORE,
236
237
  )
237
- silo.setState(RTC.myUsernameState, `${name}-${testNumber}`)
238
+ silo.setState(RTC.myUserKeyAtom, `user::${name}-${testNumber}`)
238
239
 
239
240
  const { document } = new Happy.Window()
240
241
  document.body.innerHTML = `<div id="app"></div>`