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.
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/index.js.map +1 -1
- package/dist/react-devtools/index.js +24 -5
- package/dist/react-devtools/index.js.map +1 -1
- package/dist/realtime/index.d.ts +17 -19
- package/dist/realtime/index.d.ts.map +1 -1
- package/dist/realtime/index.js +11 -14
- package/dist/realtime/index.js.map +1 -1
- package/dist/realtime-server/index.d.ts +2 -2
- package/dist/realtime-server/index.d.ts.map +1 -1
- package/dist/realtime-server/index.js +3 -2
- package/dist/realtime-server/index.js.map +1 -1
- package/package.json +10 -10
- package/src/eslint-plugin/rules/exact-catch-types.ts +1 -1
- package/src/react-devtools/StateIndex.tsx +8 -1
- package/src/react-devtools/json-editor/editors-by-type/non-json.tsx +17 -10
- package/src/react-devtools/json-editor/json-editor-internal.tsx +8 -1
- package/src/realtime/employ-socket.ts +11 -14
- package/src/realtime/{cast-socket.ts → guard-socket.ts} +11 -11
- package/src/realtime/index.ts +1 -1
- package/src/realtime/shared-room-store.ts +1 -1
- package/src/realtime/socket-interface.ts +23 -10
- package/src/realtime-server/provide-rooms.ts +7 -6
- package/src/realtime-server/server-config.ts +7 -0
package/dist/realtime/index.d.ts
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
18
|
+
interface GuardedSocket<ListenEvents extends EventsMap> extends Socket {
|
|
16
19
|
id: string | undefined;
|
|
17
|
-
on:
|
|
18
|
-
onAny: (listener:
|
|
19
|
-
onAnyOutgoing: (listener: AllEventsListener<
|
|
20
|
-
off:
|
|
21
|
-
offAny: (listener:
|
|
22
|
-
emit: EventEmitter<
|
|
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/
|
|
92
|
-
type
|
|
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
|
|
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,
|
|
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
|
|
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":";;;;;;iBAGgB,uBAAuB,wCAAoC,WAClE,gBAAc,WACf,4BACgB,WAAW,EAAE;AAHrB,iBAKA,YAAA,CALA,MAAA,EAMP,QANO,EAAA,KAAA,EAAA,MAAA,EAAA,WAAA,EAAA,CAAA,GAAA,IAAA,EAQQ,IAAA,CAAK,YARb,EAAA,EAAA,GAAA,IAAA,CAAA,EAAA,GAAA,GAAA,IAAA;;;KCDJ,aAAA,aAA0B,IAAA,CAAK;KAE/B,SAAA;mBACM;;KAGN,6CAA6C,YAAY,uCAC1C,qBAClB,aACG,aAAa;ADRT,KCWJ,iBDXI,CAAA,qBCWmC,SDXnC,GCW+C,SDX/C,CAAA,GAAA,CAAA,UAAA,MAAA,GAAA,MCYU,YDZV,CAAA,CAAA,KAAA,ECcR,CDdQ,EAAA,GAAA,IAAA,ECeN,UDfM,CCeK,YDfL,CCekB,CDflB,CAAA,CAAA,EAAA,GAAA,IAAA;AAAuB,KCkB3B,YDlB2B,CAAA,mBCkBK,SDlBL,GCkBiB,SDlBjB,CAAA,GAAA,CAAA,UAAA,MAAA,GAAA,MCmBb,UDnBa,CAAA,CAAA,KAAA,ECqB/B,CDrB+B,EAAA,GAAA,IAAA,ECsB7B,UDtB6B,CCsBlB,UDtBkB,CCsBP,CDtBO,CAAA,CAAA,EAAA,GAAA,IAAA;AAAoC,UCyB1D,aDzB0D,CAAA,qBCyBvB,SDzBuB,CAAA,SCyBJ,MDzBI,CAAA;EACpD,EAAA,EAAA,MAAA,GAAA,SAAA;EAAd,EAAA,EAAA,CAAA,UAAA,MAAA,GAAA,MC0BsB,YD1BtB,CAAA,CAAA,KAAA,EC2BA,CD3BA,EAAA,QAAA,EC4BG,YD5BH,CC4BgB,CD5BhB,CAAA,EAAA,GAAA,IAAA;EACD,KAAA,EAAA,CAAA,QAAA,EAAA,CAAA,UAAA,MAAA,GAAA,MC8B8B,YD9B9B,CAAA,CAAA,KAAA,EC+BE,CD/BF,EAAA,GAAA,IAAA,ECgCI,UDhCJ,CCgCe,YDhCf,CCgC4B,CDhC5B,CAAA,CAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAC2B,aAAA,EAAA,CAAA,QAAA,ECkCR,iBDlCQ,CCkCU,SDlCV,CAAA,EAAA,GAAA,IAAA;EAAE,GAAA,EAAA,CAAA,UAAA,MAAA,GAAA,MCmCL,YDnCK,CAAA,CAAA,KAAA,ECoC5B,CDpC4B,EAAA,QAAA,CAAA,ECqCxB,YDrCwB,CCqCX,CDrCW,CAAA,EAAA,GAAA,IAAA;EAAb,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,UAAA,MAAA,GAAA,MCwCe,YDxCf,CAAA,CAAA,KAAA,ECyCd,CDzCc,EAAA,GAAA,IAAA,EC0CZ,UD1CY,CC0CD,YD1CC,CC0CY,CD1CZ,CAAA,CAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAAA,IAAA,EC6CjB,YD7CiB,CC6CJ,SD7CI,CAAA;AAExB;KC8CY,MAAA;;0CAE6B,IAAA,CAAK;EAtD9C,KAAY,EAAA,CAAA,QAAA,EAAA,CAAA,KAAA,EAAA,MAA0B,EAAA,GAAK,IAAA,EAwDN,IAAA,CAAK,YAxDC,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAE3C,aAAY,EAAA,CAAA,QAAA,EAAA,CAAA,KACM,EAAA,MAAA,EAAA,GAAA,IAAA,EAwDmB,IAAA,CAAK,YAxDxB,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAGlB,GAAY,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,GAAA,IAAA,EAuD+B,IAAA,CAAK,YAvDpC,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAA6C,MAAA,EAAA,CAAA,QAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAyDpB,IAAA,CAAK,YAzDe,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAAY,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EA2DrC,IAAA,CAAK,YA3DgC,EAAA,EAAA,GAAA,IAAA;CAC1C;;;;UCNV,2CAA2C;;EFA5D,SAAgB,WAAA,EEEO,gBAAA,CAAiB,KFFxB,CEE8B,KFF9B,EEEqC,MFFrC,CAAA;;AAA2D,kBEKlD,gBAAA,CFLkD;EACpD;EAAd,OAAA,UAAA,KAAA,CACD,QAAA,OAAA,EAC2B,SEIe,KFJf,CAAE,CAAA;IAAb;IAAA,SAAA,OAAA,EAAA,CAAA;IAExB;;;2CEUO,QAAQ,OAAO,WAAW,OAAO;IDhBxC;IAEA,SAAY,KAAA,CAAA,ECgBO,KDhBP,CCgBa,KDfP,ECec,MDfd,CAAA,GAAA,SAAA;EAGlB;EAAyD;EAAY,OAAA,KAAA,MAAA,CAAA,MAAA,CAAA,GCgBvC,aDhBuC,GCgBvB,aDhBuB,CCgBT,MDhBS,CAAA;EAC1C;EAClB,OAAA,UAAA,aAAA,CAAA,MAAA,CAAA,CAAA;IACG;IAAa,SAAA,KAAA,ECkBP,MDlBO;IAAA;IAGzB,SAAY,MAAA,CAAA,EAAA,SAAA;EAAuC;EAAY;EACrC,OAAA,UAAA,aAAA,CAAA;IAElB;IACa,SAAA,MAAA,ECmBF,aDnBE,CCmBY,KDnBZ,CAAA;EAAa;EAAxB;EAAA,OAAA,UAAA,KAAA,CAAA;IAGV;IAA4C,SAAA,OAAA,EAAA,MAAA;IAAY;IAC9B,SAAA,IAAA,CAAA,ECuBR,aDvBQ,CCuBM,WDvBN,GCuBoB,WDvBpB,CAAA,GAAA,SAAA;EAElB;EACa;EAAW,OAAA,UAAA,WAAA,CAAA;IAAtB;IAAA,SAAA,GAAA,EC0BM,WD1BN;EAGV;EAAoD;EAErB,OAAA,UAAA,KAAA,CACtB,QAAA,OAAA,EACG,SCuBsC,KDvBtC,CAAa,CAAA;IAGa;IAC5B,SAAA,KAAA,ECqBQ,KDrBR;IACa;IAAa,SAAA,MAAA,ECsBjB,MDtBiB;EAAxB;EAGiC;EAAlB,OAAA,KAAA,UAAA,CAAA,eCuBY,gBDvBZ,CAAA,GCuBgC,WDvBhC,CCwBzB,MDxByB,CAAA,WAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,OAAA,CAAA;EACK;EACvB,OAAA,KAAA,WAAA,CAAA,eC0B+B,gBD1B/B,CAAA,GC0BmD,WD1BnD,CC2BP,MD3BO,CAAA,WAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,QAAA,CAAA;;;;KEpCG,iCAAiC,2BAChC,eAAe,iBAC1B,IAAA,CAAK,OACL,WAAW,aAAa;KAId,iBAAiB,iBAC5B,UAAU;AHXK,iBGwBA,WHxBA,CAAA,qBGwBiC,SHxBjC,CAAA,CAAA,MAAA,EGyBP,MHzBO,EAAA,KAAA,EG0BR,WH1BQ,CG0BI,YH1BJ,CAAA,GAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,IAAA,CAAA,EG4Bb,aH5Ba,CG4BC,YH5BD,CAAA;;;cICHA,YAAY,yBAAyB;;;KCJtC,SAAA;cACC,qCAAoC;KAGrC,OAAA;cACC,mCAAkC;KAGnC,OAAA;cACC,mCAAkC;;;cCUlC,oBNhBb,SMgBwC,GNhBxB,CMgB4B,GNhB5B,EMgB+B,CNhB/B,CAAA,YMgB6C,WNhB7C,CMgByD,GNhBzD,EMgB4D,CNhB5D,CAAA,CAAA;EAAuB,GAAA,CAAA,GAAA,EMiBtB,GNjBsB,EAAA,KAAA,EMiBZ,CNjBY,CAAA,EAAA,IAAA;;AAChB,KM4BX,gBN5BW,CAAA,UM4BgB,eN5BhB,CAAA,GAAA,CAAA,CAAA,GAAA;EAAd,IAAA,EAAA,sBAAA;EACD,aAAA,EM6BQ,CN7BR;EAC2B,SAAA,EM6BvB,mBN7BuB,CM6BH,aN7BG,CM6BW,SN7BX,CM6BqB,CN7BrB,CAAA,CAAA,EAAA,EM6B4B,ON7B5B,CAAA;CAAE;AAAb,KMgCZ,eAAA,GNhCY;EAAA,SAAA,IAAA,EAAA,YAAA;EAExB,SAAgB,GAAA,EAAA,MAAA;oBMiCG;qBACC,IAAA,CAAK,eAAe,iBAAiB;yBACjC,iBAAiB,qBAAqB;ALzC9D,CAAA;AAEY,cK0CC,SAAA,CLzCK;EAGlB,IAAY,EAAA,YAAA;EAA6C,UAAA,OAAA,EKyCrC,SLzCqC,CAAA,GAAA,CAAA,EAAA;EAAY,UAAA,OAAA,EK0CjD,gBL1CiD,CAAA,GAAA,CAAA,EAAA;EAC1C,UAAA,YAAA,EK0CF,gBL1CE,CAAA,GAAA,CAAA,EAAA;EAClB,mBAAA,GAAA,EAAA,MAAA;EACG,UAAA,WAAA,CAAA,GAAA,EAAA,MAAA;EAAa,OAAA,QAAA,EK+CA,YL/CA,CAAA,MAAA,EK+CqB,eL/CrB,CAAA;EAAA,OAAA,MAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,KAAA,EKmDN,SLnDM,EAAA,GKmDQ,SLnDR,CAAA,EKoDrB,eLpDqB;EAGzB,GAAY,CAAA,GAAA,KAAA,EKyDU,SLzDV,CAAA,GAAA,CAAA,EAAA,CAAA,EKyD6B,SLzD7B;EAAuC,GAAA,CAAA,GAAA,IAAA,EK0D9B,gBL1D8B,CAAA,GAAA,CAAA,EAAA,CAAA,EK0DJ,SL1DI;EAAY,GAAA,CACrC,UK2Dd,eL3Dc,CAAA,GAAA,CAAA,EAElB,WK0DI,CL1DJ,SK0Dc,eL1Dd,CAAA,KAAA,EAAA,CAAA,GAAA,CAAA,GAAA,KAAA,EACa,CAAA,MAAA,EK2DX,eL3DW,CK2DK,CL3DL,EAAA,GAAA,CAAA,EAAA,KAAA,EK4DZ,mBL5DY,CK4DQ,QL5DR,CK4DiB,SL5DjB,CK4D2B,CL5D3B,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EK6DjB,SL7DiB;;AAAX,KKiGE,iBAAA,GLjGF;EAAA,GAAA,EAAA,MAAA;EAGV,MAAY,EAAA,CAAA,KAAA,EKgGK,SLhGL,EAAA,GKgGmB,SLhGnB;CAAgC;AAAY,iBKmGxC,UAAA,CLnGwC,OAAA,EKmGpB,iBLnGoB,CAAA,EKmGA,eLnGA;;;KML5C;yBACY;sBACH;EPfrB,UAAgB,EAAA,CAAA,OAAA,EOgBO,OPhBP,EAAA,GAAA,IAAA;EAAuB,SAAA,EAAA,GAAA,GAAA,IAAA;CAAoC;AACpD,cOoBVC,YPpBU,EOoBI,gBPpBJ,COoBqB,KPpBrB,COoB2B,OPpB3B,CAAA,CAAA;AAAd,KOyBG,cAAA,GPzBH;EACD,cAAA,EAAA,MAAA;CAC2B;AAAE,cO0BxBC,yBP1BwB,EO0BG,cP1BH;AAAb,cO6BXC,YP7BW,EO6BG,SP7BH,CAAA,MAAA,EO6BqB,OP7BrB,EAAA,MAAA,EO6BsC,OP7BtC,EAAA,KAAA,CAAA;AAAA,cOsCXC,2BPtCW,EOsCkB,uBPtClB,CAAA,CAAA,IAAA,EOuChB,OPvCgB,EAAA,GOuCJ,OPvCI,EAAA,CAAA,EOwCvB,OPxCuB,CAAA;AAER,cOkDHC,0BP/CgB,EO+CY,uBP/CZ,CAAA,CAAA,IAAA,EOgDrB,OPhDqB,EAAA,GOgDT,OPhDS,EAAA,CAAA,EOiD5B,OPjD4B,CAAA;cO6DhBC,qBAAqB,gCACjC,WACA;cAmBYC,eAAe,kBAAkB,iBAAiB"}
|
package/dist/realtime/index.js
CHANGED
|
@@ -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/
|
|
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
|
|
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,
|
|
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":";;;;;AAgBA,SAAS,OACR,UACA,IACO;AACP,KAAI,oBAAoB,QACvB,CAAK,SAAS,KAAK,GAAG;KAEtB,IAAG,SAAsB;;AAI3B,SAAgB,WACf,QACA,OACA,UACI;AACJ,KAAI,UAAU,QACb,QAAO;AAmCR,QAjC8B;EAC7B,IAAI,OAAO;EACX,KAAK,OAAO,aAAa;GACxB,MAAM,SAAS,MAAM;AACrB,UAAO,GAAG,QAAQ,GAAG,SAAS;AAE7B,WADuB,OAAO,aAAa,SAAS,KAAK,GACjC,WAAW;AAClC,SAAI,OAAO,OACV,YAAW,OAAO,OAAO;SAEzB,UAAS,GAAG,OAAO,MAAM;MAEzB;KACD;;EAEH,QAAQ,aAAa;AACpB,UAAO,OAAO,OAAO,GAAG,SAAS;AAGhC,WAFe,MAAM,OACS,aAAa,SAAS,KAAK,GACjC,WAAW;AAClC,SAAI,OAAO,OACV,YAAW,OAAO,OAAO;SAEzB,UAAS,OAAO,GAAG,OAAO,MAAM;MAEhC;KACD;;EAEH,eAAe,OAAO,cAAc,KAAK,OAAO;EAChD,KAAK,OAAO,IAAI,KAAK,OAAO;EAC5B,QAAQ,OAAO,OAAO,KAAK,OAAO;EAClC,MAAM,OAAO,KAAK,KAAK,OAAO;EAC9B;;;;;ACtDF,SAAgB,aACf,QACA,OACA,aACa;AACb,QAAO,GAAG,OAAO,YAAY;CAC7B,MAAM,qBAAqB;AAC1B,SAAO,IAAI,OAAO,YAAY;;AAE/B,QAAO;;;;;AClBR,MAAaA,aAAkD,WAAW;CACzE,KAAK;CACL,SAAS;CACT,CAAC;;;;ACYF,IAAa,eAAb,cAAwC,IAAuC;CAC9E,AAAO,IAAI,KAAQ,OAAgB;AAClC,MAAI,KAAK,IAAI,IAAI,EAAE;AAClB,WAAQ,KAAK,6DAA6D;IACzE;IACA;IACA,CAAC;AACF,UAAO;;AAER,SAAO,MAAM,IAAI,KAAK,MAAM;;;AAkB9B,IAAa,YAAb,MAAa,UAAU;CACtB,AAAO,OAAO;CAEd,AAAU,UAA4B,EAAE;CACxC,AAAU,UAAmC,EAAE;CAC/C,AAAU,eAAwC,EAAE;CACpD,AAAmB;CAEnB,AAAU,YAAY,KAAa;AAClC,OAAK,MAAM;;CAGZ,OAAc,WACb,IAAI,cAAc;CACnB,OAAc,OACb,KACA,SACkB;EAElB,MAAM,EAAE,MAAM,SAAS,SAAS,iBAAiB,QADnC,IAAI,UAAU,IAAI,CAC+B;EAC/D,MAAM,QAAQ;GAAE;GAAM;GAAK;GAAS;GAAS;GAAc;AAC3D,YAAU,SAAS,IAAI,KAAK,MAAM;AAClC,SAAO;;CAYR,AAAO,IACN,GAAG,MAII;AAEP,UADe,KAAK,GACL,MAAf;GACC,KAAK;GACL,KAAK;AACJ,SAAK,QAAQ,KAAK,GAAI,KAA0B;AAChD;GACD,KAAK;AACJ,SAAK,QAAQ,KAAK,GAAI,KAAiC;AACvD;GACD,KAAK;GACL,KAAK;IACJ;KACC,MAAM,CAAC,QAAQ,SAAS;AAIxB,UAAK,aAAa,KAAK;MACtB,MAAM;MACN,eAAe;MACf,WAAW;MACX,CAAC;;AAEH;;AAGF,SAAO;;;AAST,SAAgB,WAAW,SAA6C;CACvE,MAAM,EAAE,KAAK,WAAW;CACxB,MAAM,QAAQ,UAAU,OAAO,KAAK,OAAO;CAC3C,MAAM,EAAE,YAAY;AACpB,MAAK,MAAM,UAAU,QACpB,+BAA8B,SAAS,OAAO,KAAK,OAAO,IAAI;AAE/D,4BAA2B,SAAS,OAAO,KAAK,GAAG;AACnD,QAAO;;;;;AC/HR,MAAa,eAAe,QAC3B,IAAI,WAAW,WAAW;AAG3B,MAAa,aAAa,QACzB,IAAI,WAAW,SAAS;AAGzB,MAAa,aAAa,QACzB,IAAI,WAAW,SAAS;;;;ACczB,MAAaC,eAAiD,YAAY;CACzE,KAAK;CACL,OAAO;CACP,CAAC;AAKF,MAAaC,4BAA4C,EACxD,gBAAgB,GAChB;AACD,MAAaC,eACZ,KAAK;CACJ,KAAK;CACL,SAAS,CAAC,QAAQ,OAAO;CACzB,aAAa;CACb,SAAS;CACT,SAAS;CACT,CAAC;AAEH,MAAaC,8BAGT,eAAe;CAClB,KAAK;CACL,MACE,aACA,EAAE,UAAU;EACZ,MAAM,GAAG,qBAAqB,qBAAqB,cAAc,QAAQ;AAEzE,SAAO,CAAC,SAAS,GADH,IAAI,mBAAmB,QAAQ,CACnB;;CAE5B,CAAC;AAEF,MAAaC,6BAGT,eAAe;CAClB,KAAK;CACL,MACE,aACA,EAAE,UAAU;EACZ,MAAM,CAAC,qBAAqB,qBAAqB,cAAc,QAAQ;AAEvE,SAAO,CAAC,SAAS,GADH,IAAI,mBAAmB,QAAQ,CACnB;;CAE5B,CAAC;AAEF,MAAaC,sBAGT,eAAe;CAClB,KAAK;CACL,MACE,aACA,EAAE,UAAU;EACZ,MAAM,CAAC,mBAAmB,qBAAqB,qBAC9C,cACA,QACA;EACD,MAAM,QAAQ,IAAI,mBAAmB,QAAQ;AAC7C,OAAK,MAAM,QAAQ,MAElB,QAAO,CAAC,GADM,IAAI,mBAAmB,KAAK,CACzB;AAElB,SAAO,EAAE;;CAEX,CAAC;AAEF,MAAaC,gBACZ,KAAK;CACJ,KAAK;CACL,SAAS,CAAC,QAAQ,OAAO;CACzB,aAAa;CACb,SAAS;CACT,SAAS;CACT,CAAC"}
|
|
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,
|
|
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:
|
|
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 {
|
|
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 =
|
|
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
|
}
|