atom.io 0.45.5 → 0.46.1
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.
- package/dist/internal/index.js +2 -7
- package/dist/internal/index.js.map +1 -1
- package/dist/react-devtools/index.d.ts.map +1 -1
- package/dist/realtime/index.d.ts +6 -3
- package/dist/realtime/index.d.ts.map +1 -1
- package/dist/realtime/index.js +9 -1
- package/dist/realtime/index.js.map +1 -1
- package/dist/realtime-server/index.d.ts +73 -50
- package/dist/realtime-server/index.d.ts.map +1 -1
- package/dist/realtime-server/index.js +222 -182
- package/dist/realtime-server/index.js.map +1 -1
- package/dist/realtime-testing/index.d.ts +1 -2
- package/dist/realtime-testing/index.d.ts.map +1 -1
- package/dist/realtime-testing/index.js +31 -53
- package/dist/realtime-testing/index.js.map +1 -1
- package/package.json +10 -10
- package/src/internal/subscribe/subscribe-to-state.ts +9 -18
- package/src/realtime/cast-socket.ts +1 -0
- package/src/realtime/shared-room-store.ts +15 -0
- package/src/realtime/socket-interface.ts +5 -1
- package/src/realtime-server/index.ts +3 -2
- package/src/realtime-server/ipc-sockets/custom-socket.ts +18 -2
- package/src/realtime-server/ipc-sockets/parent-socket.ts +1 -1
- package/src/realtime-server/{realtime-server-stores/provide-rooms.ts → provide-rooms.ts} +32 -57
- package/src/realtime-server/realtime-state-provider.ts +5 -3
- package/src/realtime-server/realtime-state-receiver.ts +19 -3
- package/src/realtime-server/server-config.ts +112 -1
- package/src/realtime-server/{realtime-server-stores/server-user-store.ts → server-socket-state.ts} +1 -8
- package/src/realtime-testing/setup-realtime-test.tsx +38 -83
- package/src/realtime-server/realtime-server-stores/index.ts +0 -3
- package/src/realtime-server/realtime-server-stores/provide-identity.ts +0 -18
|
@@ -5,19 +5,10 @@ import type { RenderResult } from "@testing-library/react"
|
|
|
5
5
|
import { prettyDOM, render } from "@testing-library/react"
|
|
6
6
|
import * as AtomIO from "atom.io"
|
|
7
7
|
import type { Store } from "atom.io/internal"
|
|
8
|
-
import {
|
|
9
|
-
clearStore,
|
|
10
|
-
editRelationsInStore,
|
|
11
|
-
findInStore,
|
|
12
|
-
findRelationsInStore,
|
|
13
|
-
getFromStore,
|
|
14
|
-
IMPLICIT,
|
|
15
|
-
setIntoStore,
|
|
16
|
-
} from "atom.io/internal"
|
|
8
|
+
import { clearStore, IMPLICIT } from "atom.io/internal"
|
|
17
9
|
import { toEntries } from "atom.io/json"
|
|
18
10
|
import * as AR from "atom.io/react"
|
|
19
|
-
import
|
|
20
|
-
import * as RTC from "atom.io/realtime-client"
|
|
11
|
+
import * as RT from "atom.io/realtime"
|
|
21
12
|
import * as RTR from "atom.io/realtime-react"
|
|
22
13
|
import * as RTS from "atom.io/realtime-server"
|
|
23
14
|
import { UList } from "atom.io/transceivers/u-list"
|
|
@@ -64,7 +55,7 @@ function prefixLogger(store: Store, prefix: string) {
|
|
|
64
55
|
export type TestSetupOptions = {
|
|
65
56
|
immortal?: { server?: boolean }
|
|
66
57
|
server: (tools: {
|
|
67
|
-
socket:
|
|
58
|
+
socket: RT.Socket
|
|
68
59
|
silo: AtomIO.Silo
|
|
69
60
|
userKey: RT.UserKey
|
|
70
61
|
enableLogging: () => void
|
|
@@ -124,8 +115,6 @@ export const setupRealtimeTestServer = (
|
|
|
124
115
|
},
|
|
125
116
|
IMPLICIT.STORE,
|
|
126
117
|
)
|
|
127
|
-
// prefixLogger(silo.store, `server`)
|
|
128
|
-
const socketRealm = new AtomIO.Realm<RTS.SocketSystemHierarchy>(silo.store)
|
|
129
118
|
|
|
130
119
|
const httpServer = http.createServer((_, res) => res.end(`Hello World!`))
|
|
131
120
|
const address = httpServer.listen().address()
|
|
@@ -133,76 +122,42 @@ export const setupRealtimeTestServer = (
|
|
|
133
122
|
typeof address === `string` ? null : address === null ? null : address.port
|
|
134
123
|
if (port === null) throw new Error(`Could not determine port for test server`)
|
|
135
124
|
|
|
136
|
-
const server = new SocketIO.Server(httpServer)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
`socket::${socket.id}`,
|
|
166
|
-
).userKeyOfSocket
|
|
167
|
-
const userKey = getFromStore(silo.store, userKeyState)!
|
|
168
|
-
function enableLogging() {
|
|
169
|
-
prefixLogger(silo.store, `server`)
|
|
170
|
-
socket.onAny((event, ...args) => {
|
|
171
|
-
console.log(`🛰 `, userKey, event, ...args)
|
|
172
|
-
})
|
|
173
|
-
socket.onAnyOutgoing((event, ...args) => {
|
|
174
|
-
console.log(`🛰 >>`, userKey, event, ...args)
|
|
175
|
-
})
|
|
176
|
-
socket.on(`disconnect`, () => {
|
|
177
|
-
console.log(`${userKey} disconnected`)
|
|
125
|
+
const server = new SocketIO.Server(httpServer)
|
|
126
|
+
const dispose = RTS.realtime(
|
|
127
|
+
server,
|
|
128
|
+
(handshake) => {
|
|
129
|
+
const { token, username } = handshake.auth
|
|
130
|
+
if (RT.isUserKey(username) && token === `test`) {
|
|
131
|
+
return username
|
|
132
|
+
}
|
|
133
|
+
return new Error(`Authentication error`)
|
|
134
|
+
},
|
|
135
|
+
(config) => {
|
|
136
|
+
const { socket, userKey } = config
|
|
137
|
+
function enableLogging() {
|
|
138
|
+
prefixLogger(silo.store, `server`)
|
|
139
|
+
socket.onAny((event, ...args) => {
|
|
140
|
+
console.log(`🛰 `, userKey, event, ...args)
|
|
141
|
+
})
|
|
142
|
+
socket.onAnyOutgoing((event, ...args) => {
|
|
143
|
+
console.log(`🛰 >>`, userKey, event, ...args)
|
|
144
|
+
})
|
|
145
|
+
socket.on(`disconnect`, () => {
|
|
146
|
+
console.log(`${userKey} disconnected`)
|
|
147
|
+
})
|
|
148
|
+
}
|
|
149
|
+
const disposeServices = options.server({
|
|
150
|
+
socket: config.socket,
|
|
151
|
+
userKey: config.userKey,
|
|
152
|
+
enableLogging,
|
|
153
|
+
silo,
|
|
178
154
|
})
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
})
|
|
186
|
-
if (disposeServices) {
|
|
187
|
-
socketServices.add(disposeServices)
|
|
188
|
-
socket.on(`disconnect`, disposeServices)
|
|
189
|
-
}
|
|
190
|
-
})
|
|
191
|
-
|
|
192
|
-
const dispose = async () => {
|
|
193
|
-
disposeAllSocketServices()
|
|
194
|
-
await server.close()
|
|
195
|
-
|
|
196
|
-
// const roomKeys = getFromStore(silo.store, RT.roomIndex)
|
|
197
|
-
// for (const roomKey of roomKeys) {
|
|
198
|
-
// const roomState = findInStore(silo.store, RTS.roomSelectors, roomKey)
|
|
199
|
-
// const room = getFromStore(silo.store, roomState)
|
|
200
|
-
// if (room && !(room instanceof Promise)) {
|
|
201
|
-
// room.process.kill()
|
|
202
|
-
// }
|
|
203
|
-
// } // ❗ POSSIBLY STILL NEEDED
|
|
204
|
-
silo.store.valueMap.clear()
|
|
205
|
-
}
|
|
155
|
+
return () => {
|
|
156
|
+
disposeServices?.()
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
silo.store,
|
|
160
|
+
)
|
|
206
161
|
|
|
207
162
|
return {
|
|
208
163
|
name: `SERVER`,
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { IMPLICIT } from "atom.io/internal"
|
|
2
|
-
|
|
3
|
-
import { realtimeStateProvider } from "../realtime-state-provider"
|
|
4
|
-
import type { ServerConfig } from "../server-config"
|
|
5
|
-
|
|
6
|
-
export function provideIdentity({
|
|
7
|
-
store = IMPLICIT.STORE,
|
|
8
|
-
socket,
|
|
9
|
-
userKey,
|
|
10
|
-
}: ServerConfig): void {
|
|
11
|
-
const provideState = realtimeStateProvider({ socket, store, userKey })
|
|
12
|
-
|
|
13
|
-
const unsub = provideState({ key: `myUserKey`, type: `atom` }, userKey)
|
|
14
|
-
|
|
15
|
-
socket.on(`disconnect`, () => {
|
|
16
|
-
unsub()
|
|
17
|
-
})
|
|
18
|
-
}
|