atom.io 0.46.12 → 0.46.14

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.
@@ -1,9 +1,12 @@
1
1
  import { AtomFamilyToken, AtomToken, JoinToken, Loadable, MutableAtomToken, PureSelectorFamilyToken, ReadableFamilyToken, ReadableToken, ReadonlyPureSelectorFamilyToken, TokenType, TransactionToken } from "atom.io";
2
2
  import { Canonical, Json, JsonIO } from "atom.io/json";
3
3
  import { UList } from "atom.io/transceivers/u-list";
4
- import { EventsMap as EventsMap$1, Socket as Socket$1, TypedSocket as TypedSocket$1 } from "atom.io/realtime";
5
- import { Events } from "atom.io/realtime-server";
4
+ import { EventsMap as EventsMap$1, GuardedSocket as GuardedSocket$1, Socket as Socket$1 } from "atom.io/realtime";
6
5
 
6
+ //#region src/realtime/employ-socket.d.ts
7
+ declare function employSocket<I extends EventsMap$1, K$1 extends string & keyof I>(socket: GuardedSocket$1<I>, event: K$1, handleEvent: (...data: Parameters<I[K$1]>) => void): () => void;
8
+ declare function employSocket(socket: Socket$1, event: string, handleEvent: (...data: Json.Serializable[]) => void): () => void;
9
+ //#endregion
7
10
  //#region src/realtime/socket-interface.d.ts
8
11
  type EventListener = (...args: Json.Serializable[]) => void;
9
12
  type EventsMap = {
@@ -12,15 +15,15 @@ type EventsMap = {
12
15
  type ParticularEventListener<ListenEvents extends EventsMap = EventsMap> = <E extends string & keyof ListenEvents>(event: E, listener: ListenEvents[E]) => void;
13
16
  type AllEventsListener<ListenEvents extends EventsMap = EventsMap> = <E extends string & keyof ListenEvents>(event: E, ...args: Parameters<ListenEvents[E]>) => void;
14
17
  type EventEmitter<EmitEvents extends EventsMap = EventsMap> = <E extends string & keyof EmitEvents>(event: E, ...args: Parameters<EmitEvents[E]>) => void;
15
- type TypedSocket<ListenEvents extends EventsMap = EventsMap, EmitEvents extends EventsMap = never> = {
18
+ interface GuardedSocket<ListenEvents extends EventsMap> extends Socket {
16
19
  id: string | undefined;
17
- on: ParticularEventListener<ListenEvents>;
18
- onAny: (listener: AllEventsListener<ListenEvents>) => void;
19
- onAnyOutgoing: (listener: AllEventsListener<EmitEvents>) => void;
20
- off: ParticularEventListener<ListenEvents>;
21
- offAny: (listener: AllEventsListener<ListenEvents>) => void;
22
- emit: EventEmitter<EmitEvents>;
23
- };
20
+ on: <E extends string & keyof ListenEvents>(event: E, listener: ListenEvents[E]) => void;
21
+ onAny: (listener: <E extends string & keyof ListenEvents>(event: E, ...args: Parameters<ListenEvents[E]>) => void) => void;
22
+ onAnyOutgoing: (listener: AllEventsListener<EventsMap>) => void;
23
+ off: <E extends string & keyof ListenEvents>(event: E, listener?: ListenEvents[E]) => void;
24
+ offAny: (listener?: <E extends string & keyof ListenEvents>(event: E, ...args: Parameters<ListenEvents[E]>) => void) => void;
25
+ emit: EventEmitter<EventsMap>;
26
+ }
24
27
  type Socket = {
25
28
  id: string | undefined;
26
29
  on: (event: string, listener: (...args: Json.Serializable[]) => void) => void;
@@ -88,15 +91,10 @@ declare namespace StandardSchemaV1 {
88
91
  export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
89
92
  }
90
93
  //#endregion
91
- //#region src/realtime/cast-socket.d.ts
92
- type SocketListeners<T extends TypedSocket> = T extends TypedSocket<infer ListenEvents> ? ListenEvents : never;
93
- type SocketGuard<L extends EventsMap> = { [K in keyof L]: StandardSchemaV1<Json.Array, Parameters<L[K]>> };
94
+ //#region src/realtime/guard-socket.d.ts
95
+ type SocketGuard<ListenEvents extends EventsMap> = { [K in keyof ListenEvents]: StandardSchemaV1<Json.Array, Parameters<ListenEvents[K]>> };
94
96
  type Loaded<L extends Loadable<any>> = L extends Loadable<infer T> ? T : never;
95
- declare function castSocket<T extends TypedSocket>(socket: Socket, guard: SocketGuard<SocketListeners<T>> | `TRUST`, logError?: (error: unknown) => void): T;
96
- //#endregion
97
- //#region src/realtime/employ-socket.d.ts
98
- declare function employSocket<I extends EventsMap$1, K$1 extends string & keyof I>(socket: TypedSocket$1<I, any>, event: K$1, handleEvent: (...data: Parameters<I[K$1]>) => void): () => void;
99
- declare function employSocket<I extends Events, K$1 extends string & keyof I>(socket: Socket$1, event: K$1, handleEvent: (...data: I[K$1]) => void): () => void;
97
+ declare function guardSocket<ListenEvents extends EventsMap>(socket: Socket, guard: SocketGuard<ListenEvents> | `TRUST`, logError?: (error: unknown) => void): GuardedSocket<ListenEvents>;
100
98
  //#endregion
101
99
  //#region src/realtime/mutex-store.d.ts
102
100
  declare const mutexAtoms: AtomFamilyToken<boolean, Canonical>;
@@ -162,5 +160,5 @@ declare const visibilityFromRoomSelector: PureSelectorFamilyToken<[self: RoomKey
162
160
  declare const mutualUsersSelector: ReadonlyPureSelectorFamilyToken<UserKey[], UserKey>;
163
161
  declare const ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>;
164
162
  //#endregion
165
- export { AllEventsListener, ContinuityOptions, ContinuityToken, DEFAULT_USER_IN_ROOM_META, EventEmitter, EventListener, EventsMap, InvariantMap, Loaded, ParticularEventListener, PerspectiveToken, RoomKey, RoomSocketInterface, Socket, SocketGuard, SocketKey, SocketListeners, StandardSchemaV1, SyncGroup, TypedSocket, UserInRoomMeta, UserKey, castSocket, continuity, employSocket, isRoomKey, isSocketKey, isUserKey, mutexAtoms, mutualUsersSelector, ownersOfRooms, roomKeysAtom, usersInRooms, visibilityFromRoomSelector, visibleUsersInRoomsSelector };
163
+ export { AllEventsListener, ContinuityOptions, ContinuityToken, DEFAULT_USER_IN_ROOM_META, EventEmitter, EventListener, EventsMap, GuardedSocket, InvariantMap, Loaded, ParticularEventListener, PerspectiveToken, RoomKey, RoomSocketInterface, Socket, SocketGuard, SocketKey, StandardSchemaV1, SyncGroup, UserInRoomMeta, UserKey, continuity, employSocket, guardSocket, isRoomKey, isSocketKey, isUserKey, mutexAtoms, mutualUsersSelector, ownersOfRooms, roomKeysAtom, usersInRooms, visibilityFromRoomSelector, visibleUsersInRoomsSelector };
166
164
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["mutexAtoms: AtomFamilyToken<boolean, Canonical>","roomKeysAtom: MutableAtomToken<UList<RoomKey>>","DEFAULT_USER_IN_ROOM_META: UserInRoomMeta","usersInRooms: JoinToken<`room`, RoomKey, `user`, UserKey, `1:n`>","visibleUsersInRoomsSelector: PureSelectorFamilyToken<\n\t[self: UserKey, ...RoomKey[]],\n\tUserKey\n>","visibilityFromRoomSelector: PureSelectorFamilyToken<\n\t[self: RoomKey, ...UserKey[]],\n\tRoomKey\n>","mutualUsersSelector: ReadonlyPureSelectorFamilyToken<\n\tUserKey[],\n\tUserKey\n>","ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>"],"sources":["../../src/realtime/socket-interface.ts","../../src/realtime/standard-schema.ts","../../src/realtime/cast-socket.ts","../../src/realtime/employ-socket.ts","../../src/realtime/mutex-store.ts","../../src/realtime/realtime-key-types.ts","../../src/realtime/realtime-continuity.ts","../../src/realtime/shared-room-store.ts"],"sourcesContent":[],"mappings":"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MmDR,SNnDQ;;AACsB,KMsFtB,iBAAA,GNtFsB;EACd,GAAA,EAAA,MAAA;EAGS,MAAA,EAAA,CAAA,KAAA,EMoFZ,SNpFY,EAAA,GMoFE,SNpFF;CAAxB;AACgC,iBMsFrB,UAAA,CNtFqB,OAAA,EMsFD,iBNtFC,CAAA,EMsFmB,eNtFnB;;;KOlBzB;yBACY;sBACH;wBACE;EPjBvB,SAAY,EAAA,GAAA,GAAA,IAAA;AAEZ,CAAA;AAIY,cOgBCC,YPhBD,EOgBe,gBPhBf,COgBgC,KPhBhC,COgBsC,OPhBtC,CAAA,CAAA;AAA6C,KOqB7C,cAAA,GPrB6C;EAAY,cAAA,EAAA,MAAA;CAC1C;AAClB,cOsBIC,yBPtBJ,EOsB+B,cPtB/B;AACG,cOwBCC,YPxBD,EOwBe,SPxBf,CAAA,MAAA,EOwBiC,OPxBjC,EAAA,MAAA,EOwBkD,OPxBlD,EAAA,KAAA,CAAA;AAAa,cOiCZC,2BPjCY,EOiCiB,uBPjCjB,CAAA,CAAA,IAAA,EOkCjB,OPlCiB,EAAA,GOkCL,OPlCK,EAAA,CAAA,EOmCxB,OPnCwB,CAAA;AAAA,cO+CZC,0BP/CY,EO+CgB,uBP/ChB,CAAA,CAAA,IAAA,EOgDjB,OPhDiB,EAAA,GOgDL,OPhDK,EAAA,CAAA,EOiDxB,OPjDwB,CAAA;AAGb,cO0DCC,mBP1DD,EO0DsB,+BP1DtB,CO2DX,OP3DW,EAAA,EO4DX,OP5DW,CAAA;AAAuC,cO+EtCC,aP/EsC,EO+EvB,SP/EuB,CAAA,MAAA,EO+EL,OP/EK,EAAA,MAAA,EO+EY,OP/EZ,EAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","names":["mutexAtoms: AtomFamilyToken<boolean, Canonical>","roomKeysAtom: MutableAtomToken<UList<RoomKey>>","DEFAULT_USER_IN_ROOM_META: UserInRoomMeta","usersInRooms: JoinToken<`room`, RoomKey, `user`, UserKey, `1:n`>","visibleUsersInRoomsSelector: PureSelectorFamilyToken<\n\t[self: UserKey, ...RoomKey[]],\n\tUserKey\n>","visibilityFromRoomSelector: PureSelectorFamilyToken<\n\t[self: RoomKey, ...UserKey[]],\n\tRoomKey\n>","mutualUsersSelector: ReadonlyPureSelectorFamilyToken<\n\tUserKey[],\n\tUserKey\n>","ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>"],"sources":["../../src/realtime/employ-socket.ts","../../src/realtime/socket-interface.ts","../../src/realtime/standard-schema.ts","../../src/realtime/guard-socket.ts","../../src/realtime/mutex-store.ts","../../src/realtime/realtime-key-types.ts","../../src/realtime/realtime-continuity.ts","../../src/realtime/shared-room-store.ts"],"sourcesContent":[],"mappings":"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"}
@@ -2,12 +2,19 @@ import { IMPLICIT, assignTransactionToContinuity, setEpochNumberOfContinuity } f
2
2
  import { atomFamily, getInternalRelations, join, mutableAtom, selectorFamily } from "atom.io";
3
3
  import { UList } from "atom.io/transceivers/u-list";
4
4
 
5
- //#region src/realtime/cast-socket.ts
5
+ //#region src/realtime/employ-socket.ts
6
+ function employSocket(socket, event, handleEvent) {
7
+ socket.on(event, handleEvent);
8
+ return socket.off.bind(socket, event, handleEvent);
9
+ }
10
+
11
+ //#endregion
12
+ //#region src/realtime/guard-socket.ts
6
13
  function onLoad(loadable, fn) {
7
14
  if (loadable instanceof Promise) loadable.then(fn);
8
15
  else fn(loadable);
9
16
  }
10
- function castSocket(socket, guard, logError) {
17
+ function guardSocket(socket, guard, logError) {
11
18
  if (guard === `TRUST`) return socket;
12
19
  return {
13
20
  id: socket.id,
@@ -35,16 +42,6 @@ function castSocket(socket, guard, logError) {
35
42
  };
36
43
  }
37
44
 
38
- //#endregion
39
- //#region src/realtime/employ-socket.ts
40
- function employSocket(socket, event, handleEvent) {
41
- socket.on(event, handleEvent);
42
- const retireSocket = () => {
43
- socket.off(event, handleEvent);
44
- };
45
- return retireSocket;
46
- }
47
-
48
45
  //#endregion
49
46
  //#region src/realtime/mutex-store.ts
50
47
  const mutexAtoms = atomFamily({
@@ -161,7 +158,7 @@ const mutualUsersSelector = selectorFamily({
161
158
  const [usersOfRoomsAtoms, roomsOfUsersAtoms] = getInternalRelations(usersInRooms, `split`);
162
159
  const rooms = get(roomsOfUsersAtoms, userKey);
163
160
  for (const room of rooms) return [...get(usersOfRoomsAtoms, room)];
164
- return [];
161
+ return [userKey];
165
162
  }
166
163
  });
167
164
  const ownersOfRooms = join({
@@ -173,5 +170,5 @@ const ownersOfRooms = join({
173
170
  });
174
171
 
175
172
  //#endregion
176
- export { DEFAULT_USER_IN_ROOM_META, InvariantMap, SyncGroup, castSocket, continuity, employSocket, isRoomKey, isSocketKey, isUserKey, mutexAtoms, mutualUsersSelector, ownersOfRooms, roomKeysAtom, usersInRooms, visibilityFromRoomSelector, visibleUsersInRoomsSelector };
173
+ export { DEFAULT_USER_IN_ROOM_META, InvariantMap, SyncGroup, continuity, employSocket, guardSocket, isRoomKey, isSocketKey, isUserKey, mutexAtoms, mutualUsersSelector, ownersOfRooms, roomKeysAtom, usersInRooms, visibilityFromRoomSelector, visibleUsersInRoomsSelector };
177
174
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["mutexAtoms: AtomFamilyToken<boolean, Canonical>","roomKeysAtom: MutableAtomToken<UList<RoomKey>>","DEFAULT_USER_IN_ROOM_META: UserInRoomMeta","usersInRooms: JoinToken<`room`, RoomKey, `user`, UserKey, `1:n`>","visibleUsersInRoomsSelector: PureSelectorFamilyToken<\n\t[self: UserKey, ...RoomKey[]],\n\tUserKey\n>","visibilityFromRoomSelector: PureSelectorFamilyToken<\n\t[self: RoomKey, ...UserKey[]],\n\tRoomKey\n>","mutualUsersSelector: ReadonlyPureSelectorFamilyToken<\n\tUserKey[],\n\tUserKey\n>","ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>"],"sources":["../../src/realtime/cast-socket.ts","../../src/realtime/employ-socket.ts","../../src/realtime/mutex-store.ts","../../src/realtime/realtime-continuity.ts","../../src/realtime/realtime-key-types.ts","../../src/realtime/shared-room-store.ts"],"sourcesContent":["import type { Loadable } from \"atom.io\"\nimport type { Json } from \"atom.io/json\"\n\nimport type { EventsMap, Socket, TypedSocket } from \"./socket-interface\"\nimport type { StandardSchemaV1 } from \"./standard-schema\"\n\nexport type SocketListeners<T extends TypedSocket> =\n\tT extends TypedSocket<infer ListenEvents> ? ListenEvents : never\n\nexport type SocketGuard<L extends EventsMap> = {\n\t[K in keyof L]: StandardSchemaV1<Json.Array, Parameters<L[K]>>\n}\n\nexport type Loaded<L extends Loadable<any>> =\n\tL extends Loadable<infer T> ? T : never\n\nfunction onLoad<L extends Loadable<any>>(\n\tloadable: L,\n\tfn: (loaded: Loaded<L>) => any,\n): void {\n\tif (loadable instanceof Promise) {\n\t\tvoid loadable.then(fn)\n\t} else {\n\t\tfn(loadable as Loaded<L>)\n\t}\n}\n\nexport function castSocket<T extends TypedSocket>(\n\tsocket: Socket,\n\tguard: SocketGuard<SocketListeners<T>> | `TRUST`,\n\tlogError?: (error: unknown) => void,\n): T {\n\tif (guard === `TRUST`) {\n\t\treturn socket as T\n\t}\n\tconst guardedSocket: Socket = {\n\t\tid: socket.id,\n\t\ton: (event, listener) => {\n\t\t\tconst schema = guard[event] as StandardSchemaV1<Json.Array, Json.Array>\n\t\t\tsocket.on(event, (...args) => {\n\t\t\t\tconst loadableResult = schema[`~standard`].validate(args)\n\t\t\t\tonLoad(loadableResult, (result) => {\n\t\t\t\t\tif (result.issues) {\n\t\t\t\t\t\tlogError?.(result.issues)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlistener(...result.value)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\tonAny: (listener) => {\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconst schema = guard[event] as StandardSchemaV1<unknown, Json.Array>\n\t\t\t\tconst loadableResult = schema[`~standard`].validate(args)\n\t\t\t\tonLoad(loadableResult, (result) => {\n\t\t\t\t\tif (result.issues) {\n\t\t\t\t\t\tlogError?.(result.issues)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlistener(event, ...result.value)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\tonAnyOutgoing: socket.onAnyOutgoing.bind(socket),\n\t\toff: socket.off.bind(socket),\n\t\toffAny: socket.offAny.bind(socket),\n\t\temit: socket.emit.bind(socket),\n\t}\n\treturn guardedSocket as T\n}\n","import type { EventsMap, Socket, TypedSocket } from \"atom.io/realtime\"\nimport type { Events } from \"atom.io/realtime-server\"\n\nexport function employSocket<I extends EventsMap, K extends string & keyof I>(\n\tsocket: TypedSocket<I, any>,\n\tevent: K,\n\thandleEvent: (...data: Parameters<I[K]>) => void,\n): () => void\nexport function employSocket<I extends Events, K extends string & keyof I>(\n\tsocket: Socket,\n\tevent: K,\n\thandleEvent: (...data: I[K]) => void,\n): () => void\nexport function employSocket<I extends Events, K extends string & keyof I>(\n\tsocket: Socket | TypedSocket<any, any>,\n\tevent: K,\n\thandleEvent: (...data: I[K]) => void,\n): () => void {\n\tsocket.on(event, handleEvent)\n\tconst retireSocket = () => {\n\t\tsocket.off(event, handleEvent)\n\t}\n\treturn retireSocket\n}\n","import type { AtomFamilyToken } from \"atom.io\"\nimport { atomFamily } from \"atom.io\"\nimport type { Canonical } from \"atom.io/json\"\n\nexport const mutexAtoms: AtomFamilyToken<boolean, Canonical> = atomFamily({\n\tkey: `mutex`,\n\tdefault: false,\n})\n","import type {\n\tAtomFamilyToken,\n\tAtomToken,\n\tReadableFamilyToken,\n\tReadableToken,\n\tTokenType,\n\tTransactionToken,\n} from \"atom.io\"\nimport {\n\tassignTransactionToContinuity,\n\tIMPLICIT,\n\tsetEpochNumberOfContinuity,\n} from \"atom.io/internal\"\nimport type { Canonical, Json, JsonIO } from \"atom.io/json\"\n\nimport type { UserKey } from \"./realtime-key-types\"\n\n/* eslint-disable no-console */\n\nexport class InvariantMap<K, V> extends Map<K, V> implements ReadonlyMap<K, V> {\n\tpublic set(key: K, value: V): this {\n\t\tif (this.has(key)) {\n\t\t\tconsole.warn(`Tried to set a key that already exists in an InvariantMap`, {\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t})\n\t\t\treturn this\n\t\t}\n\t\treturn super.set(key, value)\n\t}\n}\n\nexport type PerspectiveToken<F extends AtomFamilyToken<any>> = {\n\ttype: `realtime_perspective`\n\tresourceAtoms: F\n\tviewAtoms: ReadableFamilyToken<ReadableToken<TokenType<F>>[], UserKey>\n}\n\nexport type ContinuityToken = {\n\treadonly type: `continuity`\n\treadonly key: string\n\treadonly globals: AtomToken<any>[]\n\treadonly actions: (Json.Serializable & TransactionToken<JsonIO>)[]\n\treadonly perspectives: PerspectiveToken<AtomFamilyToken<any, Canonical>>[]\n}\n\nexport class SyncGroup {\n\tpublic type = `continuity` as const\n\n\tprotected globals: AtomToken<any>[] = []\n\tprotected actions: TransactionToken<any>[] = []\n\tprotected perspectives: PerspectiveToken<any>[] = []\n\tprotected readonly key: string\n\n\tprotected constructor(key: string) {\n\t\tthis.key = key\n\t}\n\n\tpublic static existing: InvariantMap<string, ContinuityToken> =\n\t\tnew InvariantMap()\n\tpublic static create(\n\t\tkey: string,\n\t\tbuilder: (group: SyncGroup) => SyncGroup,\n\t): ContinuityToken {\n\t\tconst group = new SyncGroup(key)\n\t\tconst { type, globals, actions, perspectives } = builder(group)\n\t\tconst token = { type, key, globals, actions, perspectives }\n\t\tSyncGroup.existing.set(key, token)\n\t\treturn token\n\t}\n\n\tpublic add(...atoms: AtomToken<any>[]): SyncGroup\n\tpublic add(...args: TransactionToken<any>[]): SyncGroup\n\tpublic add<\n\t\tF extends AtomFamilyToken<any>,\n\t\tT extends F extends AtomFamilyToken<infer U> ? U : never,\n\t>(\n\t\tfamily: AtomFamilyToken<T, any>,\n\t\tindex: ReadableFamilyToken<Iterable<AtomToken<T>>, string>,\n\t): SyncGroup\n\tpublic add(\n\t\t...args:\n\t\t\t| readonly AtomToken<any>[]\n\t\t\t| readonly TransactionToken<any>[]\n\t\t\t| [AtomFamilyToken<any, any>, ReadableFamilyToken<Iterable<any>, string>]\n\t): this {\n\t\tconst zeroth = args[0]\n\t\tswitch (zeroth.type) {\n\t\t\tcase `atom`:\n\t\t\tcase `mutable_atom`:\n\t\t\t\tthis.globals.push(...(args as AtomToken<any>[]))\n\t\t\t\tbreak\n\t\t\tcase `transaction`:\n\t\t\t\tthis.actions.push(...(args as TransactionToken<any>[]))\n\t\t\t\tbreak\n\t\t\tcase `atom_family`:\n\t\t\tcase `mutable_atom_family`:\n\t\t\t\t{\n\t\t\t\t\tconst [family, index] = args as [\n\t\t\t\t\t\tAtomFamilyToken<any, any>,\n\t\t\t\t\t\tReadableFamilyToken<ReadableToken<any>[], UserKey>,\n\t\t\t\t\t]\n\t\t\t\t\tthis.perspectives.push({\n\t\t\t\t\t\ttype: `realtime_perspective`,\n\t\t\t\t\t\tresourceAtoms: family,\n\t\t\t\t\t\tviewAtoms: index,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn this\n\t}\n}\n\nexport type ContinuityOptions = {\n\tkey: string\n\tconfig: (group: SyncGroup) => SyncGroup\n}\n\nexport function continuity(options: ContinuityOptions): ContinuityToken {\n\tconst { key, config } = options\n\tconst token = SyncGroup.create(key, config)\n\tconst { actions } = token\n\tfor (const action of actions) {\n\t\tassignTransactionToContinuity(IMPLICIT.STORE, key, action.key)\n\t}\n\tsetEpochNumberOfContinuity(IMPLICIT.STORE, key, -1)\n\treturn token\n}\n\n// const counterStates = atomFamily<number, { c: string }>({\n// \tkey: `counter`,\n// \tdefault: 0,\n// })\n// const counterIndices = atomFamily<{ c: string }[], string>({\n// \tkey: `counterIndex`,\n// \tdefault: [],\n// })\n// const nameStates = atomFamily<number, { n: string }>({\n// \tkey: `name`,\n// \tdefault: 0,\n// })\n// const nameIndices = atomFamily<{ n: string }[], string>({\n// \tkey: `nameIndex`,\n// \tdefault: [],\n// })\n\n// const counterContinuity = continuity({\n// \tkey: `counter`,\n// \tconfig: (group) =>\n// \t\tgroup\n// \t\t\t.add(counterStates, counterIndices)\n// \t\t\t.add(nameStates, nameIndices)\n// \t\t\t.add(nameStates, nameIndices)\n// \t\t\t.add(nameStates, nameIndices),\n// })\n","export type SocketKey = `socket::${string}`\nexport const isSocketKey = (key: string): key is SocketKey =>\n\tkey.startsWith(`socket::`)\n\nexport type UserKey = `user::${string}`\nexport const isUserKey = (key: string): key is UserKey =>\n\tkey.startsWith(`user::`)\n\nexport type RoomKey = `room::${string}`\nexport const isRoomKey = (key: string): key is RoomKey =>\n\tkey.startsWith(`room::`)\n","import type {\n\tJoinToken,\n\tMutableAtomToken,\n\tPureSelectorFamilyToken,\n\tReadonlyPureSelectorFamilyToken,\n} from \"atom.io\"\nimport { getInternalRelations, join, mutableAtom, selectorFamily } from \"atom.io\"\nimport { UList } from \"atom.io/transceivers/u-list\"\n\nimport {\n\tisRoomKey,\n\tisUserKey,\n\ttype RoomKey,\n\ttype UserKey,\n} from \"./realtime-key-types\"\n\nexport type RoomSocketInterface<RoomNames extends string> = {\n\tcreateRoom: (roomName: RoomNames) => void\n\tjoinRoom: (roomKey: RoomKey) => void\n\tdeleteRoom: (roomKey: RoomKey) => void\n\tleaveRoom: () => void\n\t// [leaveRoom: `leaveRoom:${string}`]: () => void\n}\n\nexport const roomKeysAtom: MutableAtomToken<UList<RoomKey>> = mutableAtom({\n\tkey: `roomKeys`,\n\tclass: UList,\n})\n\nexport type UserInRoomMeta = {\n\tenteredAtEpoch: number\n}\nexport const DEFAULT_USER_IN_ROOM_META: UserInRoomMeta = {\n\tenteredAtEpoch: 0,\n}\nexport const usersInRooms: JoinToken<`room`, RoomKey, `user`, UserKey, `1:n`> =\n\tjoin({\n\t\tkey: `usersInRooms`,\n\t\tbetween: [`room`, `user`],\n\t\tcardinality: `1:n`,\n\t\tisAType: isRoomKey,\n\t\tisBType: isUserKey,\n\t})\n\nexport const visibleUsersInRoomsSelector: PureSelectorFamilyToken<\n\t[self: UserKey, ...RoomKey[]],\n\tUserKey\n> = selectorFamily({\n\tkey: `visibleUsersInRooms`,\n\tget:\n\t\t(userKey) =>\n\t\t({ get }) => {\n\t\t\tconst [, roomsOfUsersAtoms] = getInternalRelations(usersInRooms, `split`)\n\t\t\tconst rooms = get(roomsOfUsersAtoms, userKey)\n\t\t\treturn [userKey, ...rooms]\n\t\t},\n})\n\nexport const visibilityFromRoomSelector: PureSelectorFamilyToken<\n\t[self: RoomKey, ...UserKey[]],\n\tRoomKey\n> = selectorFamily({\n\tkey: `visibilityFromRoom`,\n\tget:\n\t\t(roomKey) =>\n\t\t({ get }) => {\n\t\t\tconst [usersOfRoomsAtoms] = getInternalRelations(usersInRooms, `split`)\n\t\t\tconst users = get(usersOfRoomsAtoms, roomKey)\n\t\t\treturn [roomKey, ...users]\n\t\t},\n})\n\nexport const mutualUsersSelector: ReadonlyPureSelectorFamilyToken<\n\tUserKey[],\n\tUserKey\n> = selectorFamily({\n\tkey: `mutualUsers`,\n\tget:\n\t\t(userKey) =>\n\t\t({ get }) => {\n\t\t\tconst [usersOfRoomsAtoms, roomsOfUsersAtoms] = getInternalRelations(\n\t\t\t\tusersInRooms,\n\t\t\t\t`split`,\n\t\t\t)\n\t\t\tconst rooms = get(roomsOfUsersAtoms, userKey)\n\t\t\tfor (const room of rooms) {\n\t\t\t\tconst users = get(usersOfRoomsAtoms, room)\n\t\t\t\treturn [...users]\n\t\t\t}\n\t\t\treturn []\n\t\t},\n})\n\nexport const ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`> =\n\tjoin({\n\t\tkey: `ownersOfRooms`,\n\t\tbetween: [`user`, `room`],\n\t\tcardinality: `1:n`,\n\t\tisAType: isUserKey,\n\t\tisBType: isRoomKey,\n\t})\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["mutexAtoms: AtomFamilyToken<boolean, Canonical>","roomKeysAtom: MutableAtomToken<UList<RoomKey>>","DEFAULT_USER_IN_ROOM_META: UserInRoomMeta","usersInRooms: JoinToken<`room`, RoomKey, `user`, UserKey, `1:n`>","visibleUsersInRoomsSelector: PureSelectorFamilyToken<\n\t[self: UserKey, ...RoomKey[]],\n\tUserKey\n>","visibilityFromRoomSelector: PureSelectorFamilyToken<\n\t[self: RoomKey, ...UserKey[]],\n\tRoomKey\n>","mutualUsersSelector: ReadonlyPureSelectorFamilyToken<\n\tUserKey[],\n\tUserKey\n>","ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>"],"sources":["../../src/realtime/employ-socket.ts","../../src/realtime/guard-socket.ts","../../src/realtime/mutex-store.ts","../../src/realtime/realtime-continuity.ts","../../src/realtime/realtime-key-types.ts","../../src/realtime/shared-room-store.ts"],"sourcesContent":["import type { Json } from \"atom.io/json\"\nimport type { EventsMap, GuardedSocket, Socket } from \"atom.io/realtime\"\n\nexport function employSocket<I extends EventsMap, K extends string & keyof I>(\n\tsocket: GuardedSocket<I>,\n\tevent: K,\n\thandleEvent: (...data: Parameters<I[K]>) => void,\n): () => void\nexport function employSocket(\n\tsocket: Socket,\n\tevent: string,\n\thandleEvent: (...data: Json.Serializable[]) => void,\n): () => void\nexport function employSocket(\n\tsocket: GuardedSocket<any> | Socket,\n\tevent: string,\n\thandleEvent: (...data: Json.Serializable[]) => void,\n): () => void {\n\tsocket.on(event, handleEvent)\n\treturn socket.off.bind(socket, event, handleEvent)\n}\n","import type { Loadable } from \"atom.io\"\nimport type { Json } from \"atom.io/json\"\n\nimport type { EventsMap, GuardedSocket, Socket } from \"./socket-interface\"\nimport type { StandardSchemaV1 } from \"./standard-schema\"\n\nexport type SocketGuard<ListenEvents extends EventsMap> = {\n\t[K in keyof ListenEvents]: StandardSchemaV1<\n\t\tJson.Array,\n\t\tParameters<ListenEvents[K]>\n\t>\n}\n\nexport type Loaded<L extends Loadable<any>> =\n\tL extends Loadable<infer T> ? T : never\n\nfunction onLoad<L extends Loadable<any>>(\n\tloadable: L,\n\tfn: (loaded: Loaded<L>) => any,\n): void {\n\tif (loadable instanceof Promise) {\n\t\tvoid loadable.then(fn)\n\t} else {\n\t\tfn(loadable as Loaded<L>)\n\t}\n}\n\nexport function guardSocket<ListenEvents extends EventsMap>(\n\tsocket: Socket,\n\tguard: SocketGuard<ListenEvents> | `TRUST`,\n\tlogError?: (error: unknown) => void,\n): GuardedSocket<ListenEvents> {\n\tif (guard === `TRUST`) {\n\t\treturn socket as GuardedSocket<ListenEvents>\n\t}\n\tconst guardedSocket: Socket = {\n\t\tid: socket.id,\n\t\ton: (event, listener) => {\n\t\t\tconst schema = guard[event] as StandardSchemaV1<Json.Array, Json.Array>\n\t\t\tsocket.on(event, (...args) => {\n\t\t\t\tconst loadableResult = schema[`~standard`].validate(args)\n\t\t\t\tonLoad(loadableResult, (result) => {\n\t\t\t\t\tif (result.issues) {\n\t\t\t\t\t\tlogError?.(result.issues)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlistener(...result.value)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\tonAny: (listener) => {\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconst schema = guard[event] as StandardSchemaV1<unknown, Json.Array>\n\t\t\t\tconst loadableResult = schema[`~standard`].validate(args)\n\t\t\t\tonLoad(loadableResult, (result) => {\n\t\t\t\t\tif (result.issues) {\n\t\t\t\t\t\tlogError?.(result.issues)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlistener(event, ...result.value)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\tonAnyOutgoing: socket.onAnyOutgoing.bind(socket),\n\t\toff: socket.off.bind(socket),\n\t\toffAny: socket.offAny.bind(socket),\n\t\temit: socket.emit.bind(socket),\n\t}\n\treturn guardedSocket as GuardedSocket<ListenEvents>\n}\n","import type { AtomFamilyToken } from \"atom.io\"\nimport { atomFamily } from \"atom.io\"\nimport type { Canonical } from \"atom.io/json\"\n\nexport const mutexAtoms: AtomFamilyToken<boolean, Canonical> = atomFamily({\n\tkey: `mutex`,\n\tdefault: false,\n})\n","import type {\n\tAtomFamilyToken,\n\tAtomToken,\n\tReadableFamilyToken,\n\tReadableToken,\n\tTokenType,\n\tTransactionToken,\n} from \"atom.io\"\nimport {\n\tassignTransactionToContinuity,\n\tIMPLICIT,\n\tsetEpochNumberOfContinuity,\n} from \"atom.io/internal\"\nimport type { Canonical, Json, JsonIO } from \"atom.io/json\"\n\nimport type { UserKey } from \"./realtime-key-types\"\n\n/* eslint-disable no-console */\n\nexport class InvariantMap<K, V> extends Map<K, V> implements ReadonlyMap<K, V> {\n\tpublic set(key: K, value: V): this {\n\t\tif (this.has(key)) {\n\t\t\tconsole.warn(`Tried to set a key that already exists in an InvariantMap`, {\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t})\n\t\t\treturn this\n\t\t}\n\t\treturn super.set(key, value)\n\t}\n}\n\nexport type PerspectiveToken<F extends AtomFamilyToken<any>> = {\n\ttype: `realtime_perspective`\n\tresourceAtoms: F\n\tviewAtoms: ReadableFamilyToken<ReadableToken<TokenType<F>>[], UserKey>\n}\n\nexport type ContinuityToken = {\n\treadonly type: `continuity`\n\treadonly key: string\n\treadonly globals: AtomToken<any>[]\n\treadonly actions: (Json.Serializable & TransactionToken<JsonIO>)[]\n\treadonly perspectives: PerspectiveToken<AtomFamilyToken<any, Canonical>>[]\n}\n\nexport class SyncGroup {\n\tpublic type = `continuity` as const\n\n\tprotected globals: AtomToken<any>[] = []\n\tprotected actions: TransactionToken<any>[] = []\n\tprotected perspectives: PerspectiveToken<any>[] = []\n\tprotected readonly key: string\n\n\tprotected constructor(key: string) {\n\t\tthis.key = key\n\t}\n\n\tpublic static existing: InvariantMap<string, ContinuityToken> =\n\t\tnew InvariantMap()\n\tpublic static create(\n\t\tkey: string,\n\t\tbuilder: (group: SyncGroup) => SyncGroup,\n\t): ContinuityToken {\n\t\tconst group = new SyncGroup(key)\n\t\tconst { type, globals, actions, perspectives } = builder(group)\n\t\tconst token = { type, key, globals, actions, perspectives }\n\t\tSyncGroup.existing.set(key, token)\n\t\treturn token\n\t}\n\n\tpublic add(...atoms: AtomToken<any>[]): SyncGroup\n\tpublic add(...args: TransactionToken<any>[]): SyncGroup\n\tpublic add<\n\t\tF extends AtomFamilyToken<any>,\n\t\tT extends F extends AtomFamilyToken<infer U> ? U : never,\n\t>(\n\t\tfamily: AtomFamilyToken<T, any>,\n\t\tindex: ReadableFamilyToken<Iterable<AtomToken<T>>, string>,\n\t): SyncGroup\n\tpublic add(\n\t\t...args:\n\t\t\t| readonly AtomToken<any>[]\n\t\t\t| readonly TransactionToken<any>[]\n\t\t\t| [AtomFamilyToken<any, any>, ReadableFamilyToken<Iterable<any>, string>]\n\t): this {\n\t\tconst zeroth = args[0]\n\t\tswitch (zeroth.type) {\n\t\t\tcase `atom`:\n\t\t\tcase `mutable_atom`:\n\t\t\t\tthis.globals.push(...(args as AtomToken<any>[]))\n\t\t\t\tbreak\n\t\t\tcase `transaction`:\n\t\t\t\tthis.actions.push(...(args as TransactionToken<any>[]))\n\t\t\t\tbreak\n\t\t\tcase `atom_family`:\n\t\t\tcase `mutable_atom_family`:\n\t\t\t\t{\n\t\t\t\t\tconst [family, index] = args as [\n\t\t\t\t\t\tAtomFamilyToken<any, any>,\n\t\t\t\t\t\tReadableFamilyToken<ReadableToken<any>[], UserKey>,\n\t\t\t\t\t]\n\t\t\t\t\tthis.perspectives.push({\n\t\t\t\t\t\ttype: `realtime_perspective`,\n\t\t\t\t\t\tresourceAtoms: family,\n\t\t\t\t\t\tviewAtoms: index,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn this\n\t}\n}\n\nexport type ContinuityOptions = {\n\tkey: string\n\tconfig: (group: SyncGroup) => SyncGroup\n}\n\nexport function continuity(options: ContinuityOptions): ContinuityToken {\n\tconst { key, config } = options\n\tconst token = SyncGroup.create(key, config)\n\tconst { actions } = token\n\tfor (const action of actions) {\n\t\tassignTransactionToContinuity(IMPLICIT.STORE, key, action.key)\n\t}\n\tsetEpochNumberOfContinuity(IMPLICIT.STORE, key, -1)\n\treturn token\n}\n\n// const counterStates = atomFamily<number, { c: string }>({\n// \tkey: `counter`,\n// \tdefault: 0,\n// })\n// const counterIndices = atomFamily<{ c: string }[], string>({\n// \tkey: `counterIndex`,\n// \tdefault: [],\n// })\n// const nameStates = atomFamily<number, { n: string }>({\n// \tkey: `name`,\n// \tdefault: 0,\n// })\n// const nameIndices = atomFamily<{ n: string }[], string>({\n// \tkey: `nameIndex`,\n// \tdefault: [],\n// })\n\n// const counterContinuity = continuity({\n// \tkey: `counter`,\n// \tconfig: (group) =>\n// \t\tgroup\n// \t\t\t.add(counterStates, counterIndices)\n// \t\t\t.add(nameStates, nameIndices)\n// \t\t\t.add(nameStates, nameIndices)\n// \t\t\t.add(nameStates, nameIndices),\n// })\n","export type SocketKey = `socket::${string}`\nexport const isSocketKey = (key: string): key is SocketKey =>\n\tkey.startsWith(`socket::`)\n\nexport type UserKey = `user::${string}`\nexport const isUserKey = (key: string): key is UserKey =>\n\tkey.startsWith(`user::`)\n\nexport type RoomKey = `room::${string}`\nexport const isRoomKey = (key: string): key is RoomKey =>\n\tkey.startsWith(`room::`)\n","import type {\n\tJoinToken,\n\tMutableAtomToken,\n\tPureSelectorFamilyToken,\n\tReadonlyPureSelectorFamilyToken,\n} from \"atom.io\"\nimport { getInternalRelations, join, mutableAtom, selectorFamily } from \"atom.io\"\nimport { UList } from \"atom.io/transceivers/u-list\"\n\nimport {\n\tisRoomKey,\n\tisUserKey,\n\ttype RoomKey,\n\ttype UserKey,\n} from \"./realtime-key-types\"\n\nexport type RoomSocketInterface<RoomNames extends string> = {\n\tcreateRoom: (roomName: RoomNames) => void\n\tjoinRoom: (roomKey: RoomKey) => void\n\tdeleteRoom: (roomKey: RoomKey) => void\n\tleaveRoom: () => void\n\t// [leaveRoom: `leaveRoom:${string}`]: () => void\n}\n\nexport const roomKeysAtom: MutableAtomToken<UList<RoomKey>> = mutableAtom({\n\tkey: `roomKeys`,\n\tclass: UList,\n})\n\nexport type UserInRoomMeta = {\n\tenteredAtEpoch: number\n}\nexport const DEFAULT_USER_IN_ROOM_META: UserInRoomMeta = {\n\tenteredAtEpoch: 0,\n}\nexport const usersInRooms: JoinToken<`room`, RoomKey, `user`, UserKey, `1:n`> =\n\tjoin({\n\t\tkey: `usersInRooms`,\n\t\tbetween: [`room`, `user`],\n\t\tcardinality: `1:n`,\n\t\tisAType: isRoomKey,\n\t\tisBType: isUserKey,\n\t})\n\nexport const visibleUsersInRoomsSelector: PureSelectorFamilyToken<\n\t[self: UserKey, ...RoomKey[]],\n\tUserKey\n> = selectorFamily({\n\tkey: `visibleUsersInRooms`,\n\tget:\n\t\t(userKey) =>\n\t\t({ get }) => {\n\t\t\tconst [, roomsOfUsersAtoms] = getInternalRelations(usersInRooms, `split`)\n\t\t\tconst rooms = get(roomsOfUsersAtoms, userKey)\n\t\t\treturn [userKey, ...rooms]\n\t\t},\n})\n\nexport const visibilityFromRoomSelector: PureSelectorFamilyToken<\n\t[self: RoomKey, ...UserKey[]],\n\tRoomKey\n> = selectorFamily({\n\tkey: `visibilityFromRoom`,\n\tget:\n\t\t(roomKey) =>\n\t\t({ get }) => {\n\t\t\tconst [usersOfRoomsAtoms] = getInternalRelations(usersInRooms, `split`)\n\t\t\tconst users = get(usersOfRoomsAtoms, roomKey)\n\t\t\treturn [roomKey, ...users]\n\t\t},\n})\n\nexport const mutualUsersSelector: ReadonlyPureSelectorFamilyToken<\n\tUserKey[],\n\tUserKey\n> = selectorFamily({\n\tkey: `mutualUsers`,\n\tget:\n\t\t(userKey) =>\n\t\t({ get }) => {\n\t\t\tconst [usersOfRoomsAtoms, roomsOfUsersAtoms] = getInternalRelations(\n\t\t\t\tusersInRooms,\n\t\t\t\t`split`,\n\t\t\t)\n\t\t\tconst rooms = get(roomsOfUsersAtoms, userKey)\n\t\t\tfor (const room of rooms) {\n\t\t\t\tconst users = get(usersOfRoomsAtoms, room)\n\t\t\t\treturn [...users]\n\t\t\t}\n\t\t\treturn [userKey]\n\t\t},\n})\n\nexport const ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`> =\n\tjoin({\n\t\tkey: `ownersOfRooms`,\n\t\tbetween: [`user`, `room`],\n\t\tcardinality: `1:n`,\n\t\tisAType: isUserKey,\n\t\tisBType: isRoomKey,\n\t})\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import * as AtomIO from "atom.io";
3
3
  import { Hierarchy, JoinToken, Loadable, MutableAtomToken, RegularAtomFamilyToken, WritableToken } from "atom.io";
4
4
  import { Canonical, Json, stringified } from "atom.io/json";
5
5
  import { UList } from "atom.io/transceivers/u-list";
6
- import { ContinuityToken, RoomKey, RoomSocketInterface, Socket, SocketKey, StandardSchemaV1, TypedSocket, UserKey } from "atom.io/realtime";
6
+ import { ContinuityToken, GuardedSocket, RoomKey, RoomSocketInterface, Socket, SocketKey, StandardSchemaV1, UserKey } from "atom.io/realtime";
7
7
  import { ChildProcessWithoutNullStreams } from "node:child_process";
8
8
  import { IncomingHttpHeaders } from "node:http";
9
9
  import { Server } from "socket.io";
@@ -122,7 +122,7 @@ declare function spawnRoom<RoomNames extends string>({
122
122
  type ProvideEnterAndExitConfig = {
123
123
  store: RootStore;
124
124
  socket: Socket;
125
- roomSocket: TypedSocket<RoomSocketInterface<any>, any>;
125
+ roomSocket: GuardedSocket<RoomSocketInterface<string>>;
126
126
  userKey: UserKey;
127
127
  };
128
128
  declare function provideEnterAndExit({
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["ATOM_IO_REALTIME_SERVER_ROOMS: RoomMap","ROOMS: RoomMap","roomMeta: { count: number }","socketAtoms: RegularAtomFamilyToken<Socket | null, SocketKey>","socketKeysAtom: MutableAtomToken<UList<SocketKey>>","onlineUsersAtom: MutableAtomToken<UList<UserKey>>","usersOfSockets: JoinToken<\n\t`user`,\n\tUserKey,\n\t`socket`,\n\tSocketKey,\n\t`1:1`\n>"],"sources":["../../src/realtime-server/continuity/provide-continuity.ts","../../src/realtime-server/ipc-sockets/custom-socket.ts","../../src/realtime-server/ipc-sockets/child-socket.ts","../../src/realtime-server/ipc-sockets/parent-socket.ts","../../src/realtime-server/provide-rooms.ts","../../src/realtime-server/realtime-family-provider.ts","../../src/realtime-server/realtime-mutable-family-provider.ts","../../src/realtime-server/realtime-mutable-provider.ts","../../src/realtime-server/realtime-state-provider.ts","../../src/realtime-server/realtime-state-receiver.ts","../../src/realtime-server/server-config.ts","../../src/realtime-server/server-socket-state.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["ATOM_IO_REALTIME_SERVER_ROOMS: RoomMap","ROOMS: RoomMap","roomMeta: { count: number }","socketAtoms: RegularAtomFamilyToken<Socket | null, SocketKey>","socketKeysAtom: MutableAtomToken<UList<SocketKey>>","onlineUsersAtom: MutableAtomToken<UList<UserKey>>","usersOfSockets: JoinToken<\n\t`user`,\n\tUserKey,\n\t`socket`,\n\tSocketKey,\n\t`1:1`\n>"],"sources":["../../src/realtime-server/continuity/provide-continuity.ts","../../src/realtime-server/ipc-sockets/custom-socket.ts","../../src/realtime-server/ipc-sockets/child-socket.ts","../../src/realtime-server/ipc-sockets/parent-socket.ts","../../src/realtime-server/provide-rooms.ts","../../src/realtime-server/realtime-family-provider.ts","../../src/realtime-server/realtime-mutable-family-provider.ts","../../src/realtime-server/realtime-mutable-provider.ts","../../src/realtime-server/realtime-state-provider.ts","../../src/realtime-server/realtime-state-receiver.ts","../../src/realtime-server/server-config.ts","../../src/realtime-server/server-socket-state.ts"],"sourcesContent":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { IMPLICIT, OWN_OP, Subject, actUponStore, editRelationsInStore, findInSt
2
2
  import { Realm, atomFamily, join, mutableAtom } from "atom.io";
3
3
  import { parseJson, stringifyJson } from "atom.io/json";
4
4
  import { UList } from "atom.io/transceivers/u-list";
5
- import { castSocket, employSocket, isRoomKey, isSocketKey, isUserKey, mutexAtoms, ownersOfRooms, roomKeysAtom, usersInRooms, visibilityFromRoomSelector, visibleUsersInRoomsSelector } from "atom.io/realtime";
5
+ import { employSocket, guardSocket, isRoomKey, isSocketKey, isUserKey, mutexAtoms, ownersOfRooms, roomKeysAtom, usersInRooms, visibilityFromRoomSelector, visibleUsersInRoomsSelector } from "atom.io/realtime";
6
6
  import { myUserKeyAtom } from "atom.io/realtime-client";
7
7
  import { spawn } from "node:child_process";
8
8
 
@@ -788,7 +788,7 @@ function destroyRoom({ store, socket, userKey }) {
788
788
  };
789
789
  }
790
790
  function provideRooms({ store = IMPLICIT.STORE, socket, resolveRoomScript, roomNames, userKey }) {
791
- const roomSocket = castSocket(socket, createRoomSocketGuard(roomNames));
791
+ const roomSocket = guardSocket(socket, createRoomSocketGuard(roomNames));
792
792
  const unsubFromRoomKeys = realtimeMutableProvider({
793
793
  socket,
794
794
  store,
@@ -1063,6 +1063,7 @@ function realtime(server, auth, onConnect, store = IMPLICIT.STORE) {
1063
1063
  server.use(async (socket, next) => {
1064
1064
  const result = await auth(socket.handshake);
1065
1065
  if (result instanceof Error) {
1066
+ store.logger.error(`📡`, `socket`, socket.id, `failed to authenticate`, result.message);
1066
1067
  next(result);
1067
1068
  return;
1068
1069
  }