atom.io 0.46.0 → 0.46.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/introspection/index.d.ts.map +1 -1
  2. package/dist/realtime/index.d.ts +6 -3
  3. package/dist/realtime/index.d.ts.map +1 -1
  4. package/dist/realtime/index.js +9 -1
  5. package/dist/realtime/index.js.map +1 -1
  6. package/dist/realtime-server/index.d.ts +73 -50
  7. package/dist/realtime-server/index.d.ts.map +1 -1
  8. package/dist/realtime-server/index.js +222 -182
  9. package/dist/realtime-server/index.js.map +1 -1
  10. package/dist/realtime-testing/index.d.ts +1 -2
  11. package/dist/realtime-testing/index.d.ts.map +1 -1
  12. package/dist/realtime-testing/index.js +31 -53
  13. package/dist/realtime-testing/index.js.map +1 -1
  14. package/package.json +1 -1
  15. package/src/realtime/cast-socket.ts +1 -0
  16. package/src/realtime/shared-room-store.ts +15 -0
  17. package/src/realtime/socket-interface.ts +5 -1
  18. package/src/realtime-server/index.ts +3 -2
  19. package/src/realtime-server/ipc-sockets/custom-socket.ts +18 -2
  20. package/src/realtime-server/ipc-sockets/parent-socket.ts +1 -1
  21. package/src/realtime-server/{realtime-server-stores/provide-rooms.ts → provide-rooms.ts} +32 -57
  22. package/src/realtime-server/realtime-state-provider.ts +5 -3
  23. package/src/realtime-server/realtime-state-receiver.ts +19 -3
  24. package/src/realtime-server/server-config.ts +113 -1
  25. package/src/realtime-server/{realtime-server-stores/server-user-store.ts → server-socket-state.ts} +1 -8
  26. package/src/realtime-testing/setup-realtime-test.tsx +38 -83
  27. package/src/realtime-server/realtime-server-stores/index.ts +0 -3
  28. package/src/realtime-server/realtime-server-stores/provide-identity.ts +0 -18
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}>","jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n>"],"sources":["../../src/introspection/attach-atom-index.ts","../../src/introspection/attach-selector-index.ts","../../src/introspection/attach-introspection-states.ts","../../src/introspection/auditor.ts","../../src/introspection/refinery.ts","../../src/introspection/differ.ts","../../src/introspection/sprawl.ts","../../src/introspection/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}>","jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n>"],"sources":["../../src/introspection/attach-atom-index.ts","../../src/introspection/attach-selector-index.ts","../../src/introspection/attach-introspection-states.ts","../../src/introspection/auditor.ts","../../src/introspection/refinery.ts","../../src/introspection/differ.ts","../../src/introspection/sprawl.ts","../../src/introspection/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AtomFamilyToken, AtomToken, JoinToken, Loadable, MutableAtomToken, ReadableFamilyToken, ReadableToken, ReadonlyPureSelectorFamilyToken, TokenType, TransactionToken } from "atom.io";
1
+ import { AtomFamilyToken, AtomToken, JoinToken, Loadable, MutableAtomToken, PureSelectorFamilyToken, ReadableFamilyToken, ReadableToken, ReadonlyPureSelectorFamilyToken, TokenType, TransactionToken } from "atom.io";
2
2
  import { Canonical, Json } from "atom.io/json";
3
3
  import { UList } from "atom.io/transceivers/u-list";
4
4
  import { Socket as Socket$1 } from "atom.io/realtime";
@@ -12,10 +12,11 @@ type EventsMap = {
12
12
  type ParticularEventListener<ListenEvents extends EventsMap = EventsMap> = <E extends string & keyof ListenEvents>(event: E, listener: ListenEvents[E]) => void;
13
13
  type AllEventsListener<ListenEvents extends EventsMap = EventsMap> = <E extends string & keyof ListenEvents>(event: E, ...args: Parameters<ListenEvents[E]>) => void;
14
14
  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 = EventsMap> = {
15
+ type TypedSocket<ListenEvents extends EventsMap = EventsMap, EmitEvents extends EventsMap = never> = {
16
16
  id: string | undefined;
17
17
  on: ParticularEventListener<ListenEvents>;
18
18
  onAny: (listener: AllEventsListener<ListenEvents>) => void;
19
+ onAnyOutgoing: (listener: AllEventsListener<EmitEvents>) => void;
19
20
  off: ParticularEventListener<ListenEvents>;
20
21
  offAny: (listener: AllEventsListener<ListenEvents>) => void;
21
22
  emit: EventEmitter<EmitEvents>;
@@ -24,6 +25,7 @@ type Socket = {
24
25
  id: string | undefined;
25
26
  on: (event: string, listener: (...args: Json.Serializable[]) => void) => void;
26
27
  onAny: (listener: (event: string, ...args: Json.Serializable[]) => void) => void;
28
+ onAnyOutgoing: (listener: (event: string, ...args: Json.Serializable[]) => void) => void;
27
29
  off: (event: string, listener: (...args: Json.Serializable[]) => void) => void;
28
30
  offAny: (listener: (event: string, ...args: Json.Serializable[]) => void) => void;
29
31
  emit: (event: string, ...args: Json.Serializable[]) => void;
@@ -154,8 +156,9 @@ type UserInRoomMeta = {
154
156
  };
155
157
  declare const DEFAULT_USER_IN_ROOM_META: UserInRoomMeta;
156
158
  declare const usersInRooms: JoinToken<`room`, RoomKey, `user`, UserKey, `1:n`>;
159
+ declare const visibleUsersInRoomsSelector: PureSelectorFamilyToken<(RoomKey | UserKey)[], UserKey>;
157
160
  declare const ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>;
158
161
  declare const usersInMyRoomView: ReadonlyPureSelectorFamilyToken<MutableAtomToken<UList<RoomKey>>[], UserKey>;
159
162
  //#endregion
160
- 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, ownersOfRooms, roomKeysAtom, usersInMyRoomView, usersInRooms };
163
+ 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, ownersOfRooms, roomKeysAtom, usersInMyRoomView, usersInRooms, visibleUsersInRoomsSelector };
161
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`>","ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>","usersInMyRoomView: ReadonlyPureSelectorFamilyToken<\n\tMutableAtomToken<UList<RoomKey>>[],\n\tUserKey\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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"}
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(RoomKey | UserKey)[],\n\tUserKey\n>","ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>","usersInMyRoomView: ReadonlyPureSelectorFamilyToken<\n\tMutableAtomToken<UList<RoomKey>>[],\n\tUserKey\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":";;;;;;;KAEY,aAAA,aAA0B,IAAA,CAAK;KAE/B,SAAA;mBACM;;KAGN,6CAA6C,YAAY,uCAC1C,qBAClB,aACG,aAAa;KAGb,uCAAuC,YAAY,uCACrC,qBAElB,YACE,WAAW,aAAa;AAhBtB,KAmBA,YAnBA,CAAA,mBAmBgC,SAnBD,GAmBa,SAnBb,CAAA,GAAA,CAAA,UAAA,MAAA,GAAA,MAoBjB,UApBiB,CAAA,CAAA,KAAA,EAsBnC,CAtBmC,EAAA,GAAA,IAAA,EAuBjC,UAvBiC,CAuBtB,UAvBsB,CAuBX,CAvBW,CAAA,CAAA,EAAA,GAAA,IAAA;AAE/B,KAwBA,WAxBA,CAIZ,qBAqBsB,SArBV,GAqBsB,SArBtB,EAA6C,mBAsBrC,SAtBqC,GAAA,KAAA,CAAY,GAAA;EAC1C,EAAA,EAAA,MAAA,GAAA,SAAA;EAClB,EAAA,EAuBJ,uBAvBI,CAuBoB,YAvBpB,CAAA;EACG,KAAA,EAAA,CAAA,QAAA,EAuBO,iBAvBP,CAuByB,YAvBzB,CAAA,EAAA,GAAA,IAAA;EAAa,aAAA,EAAA,CAAA,QAAA,EAwBE,iBAxBF,CAwBoB,UAxBpB,CAAA,EAAA,GAAA,IAAA;EAAA,GAAA,EAyBnB,uBAzBmB,CAyBK,YAzBL,CAAA;EAGzB,MAAY,EAAA,CAAA,QAAA,EAuBQ,iBAvBR,CAuB0B,YAvB1B,CAAA,EAAA,GAAA,IAAA;EAAuC,IAAA,EAwB5C,YAxB4C,CAwB/B,UAxB+B,CAAA;CAAY;AACrC,KA0Bd,MAAA,GA1Bc;EAElB,EAAA,EAAA,MAAA,GAAA,SAAA;EACa,EAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,GAAA,IAAA,EAyBoB,IAAA,CAAK,YAzBzB,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAAa,KAAA,EAAA,CAAA,QAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EA2BG,IAAA,CAAK,YA3BR,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAAxB,aAAA,EAAA,CAAA,QAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EA8B2B,IAAA,CAAK,YA9BhC,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAAA,GAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,GAAA,IAAA,EAgCgC,IAAA,CAAK,YAhCrC,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAGV,MAAY,EAAA,CAAA,QAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EA+ByB,IAAA,CAAK,YA/B9B,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAAgC,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAiCZ,IAAA,CAAK,YAjCO,EAAA,EAAA,GAAA,IAAA;CAAY;;;;UClBvC,2CAA2C;;wBAErC,gBAAA,CAAiB,MAAM,OAAO;ADHrD;AAEY,kBCIa,gBAAA,CDHP;EAGlB;EAAyD,OAAA,UAAA,KAAA,CAAY,QAAA,OAAA,EAC1C,SCCuB,KDDvB,CAClB,CAAA;IACG;IAAa,SAAA,OAAA,EAAA,CAAA;IAAA;IAGzB,SAAY,MAAA,EAAA,MAAA;IAAuC;IAAY,SAAA,QAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GCIxD,ODJwD,CCIhD,MDJgD,CCIzC,MDJyC,CAAA,CAAA,GCI9B,MDJ8B,CCIvB,MDJuB,CAAA;IACrC;IAElB,SAAA,KAAA,CAAA,ECGW,KDHX,CCGiB,KDHjB,ECGwB,MDHxB,CAAA,GAAA,SAAA;EACa;EAAa;EAAxB,OAAA,KAAA,MAAA,CAAA,MAAA,CAAA,GCMoB,aDNpB,GCMoC,aDNpC,CCMkD,MDNlD,CAAA;EAAA;EAGV,OAAY,UAAA,aAAA,CAAA,MAAA,CAAA,CAAA;IAAgC;IAAY,SAAA,KAAA,ECQtC,MDRsC;IAC9B;IAElB,SAAA,MAAA,CAAA,EAAA,SAAA;EACa;EAAW;EAAtB,OAAA,UAAA,aAAA,CAAA;IAAA;IAGV,SAAY,MAAA,ECSO,aDTP,CCSqB,KDTrB,CAAA;EACU;EAAY;EACd,OAAA,UAAA,KAAA,CAAA;IAGS;IAAxB,SAAA,OAAA,EAAA,MAAA;IACgC;IAAlB,SAAA,IAAA,CAAA,ECWD,aDXC,CCWa,WDXb,GCW2B,WDX3B,CAAA,GAAA,SAAA;EAC0B;EAAlB;EACG,OAAA,UAAA,WAAA,CAAA;IAAxB;IACgC,SAAA,GAAA,ECctB,WDdsB;EAAlB;EACA;EAAb,OAAA,UAAA,KAAA,CAAA,QAAA,OAAA,EAGP,SCckD,KDdtC,CAE6B,CAAA;IAEJ;IAGA,SAAK,KAAA,ECSxB,KDTwB;IAEA;IAEL,SAAK,MAAA,ECOvB,MDPuB;EAEV;EAAK;wCCSE,oBAAoB,YACzD;;yCAIsC,oBAAoB,YAC1D;AAlEF;;;KCGY,0BAA0B,eACrC,UAAU;KAEC,sBAAsB,2BACrB,IAAI,iBAAiB,IAAA,CAAK,OAAO,WAAW,EAAE;KAG/C,iBAAiB,iBAC5B,UAAU;AFZC,iBEyBI,UFzBsB,CAAA,UEyBD,WFzBM,CAAA,CAAA,MAAA,EE0BlC,MF1BkC,EAAA,KAAA,EE2BnC,WF3BmC,CE2BvB,eF3BuB,CE2BP,CF3BO,CAAA,CAAA,GAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,IAAA,CAAA,EE6BxC,CF7BwC;;;iBGC3B,uBAAuB,mCAAiC,WAC/D,iBACD,4BACgB,EAAE;;;cCFbA,YAAY,yBAAyB;;;KCJtC,SAAA;cACC,qCAAoC;KAGrC,OAAA;cACC,mCAAkC;KAGnC,OAAA;cACC,mCAAkC;;;cCUlC,6BAA2B,IAAI,KAAG,cAAc,YAAY,KAAG;ENjB5E,GAAY,CAAA,GAAA,EMkBK,GNlBL,EAAA,KAAA,EMkBe,CNlBf,CAAA,EAAA,IAAA;AAEZ;AAIY,KMwBA,gBNxBA,CAAA,UMwB2B,eNxB3B,CAAA,GAAA,CAAA,CAAA,GAAA;EAA6C,IAAA,EAAA,sBAAA;EAAY,aAAA,EM0BrD,CN1BqD;EAC1C,SAAA,EM0Bf,mBN1Be,CM0BK,aN1BL,CM0BmB,SN1BnB,CM0B6B,CN1B7B,CAAA,CAAA,EAAA,EM0BoC,ON1BpC,CAAA;CAClB;AACG,KM2BA,eAAA,GN3BA;EAAa,SAAA,IAAA,EAAA,YAAA;EAAA,SAAA,GAAA,EAAA,MAAA;EAGzB,SAAY,OAAA,EM2BO,SN3BP,CAAA,GAAA,CAAA,EAAA;EAAuC,SAAA,OAAA,EM4BhC,gBN5BgC,CAAA,GAAA,CAAA,EAAA;EAAY,SAAA,YAAA,EM6BvC,gBN7BuC,CM6BtB,eN7BsB,CAAA,GAAA,EM6BD,SN7BC,CAAA,CAAA,EAAA;CACrC;AAElB,cM6BK,SAAA,CN7BL;EACa,IAAA,EAAA,YAAA;EAAa,UAAA,OAAA,EM+Bd,SN/Bc,CAAA,GAAA,CAAA,EAAA;EAAxB,UAAA,OAAA,EMgCU,gBNhCV,CAAA,GAAA,CAAA,EAAA;EAAA,UAAA,YAAA,EMiCe,gBNjCf,CAAA,GAAA,CAAA,EAAA;EAGV,mBAAY,GAAA,EAAA,MAAA;EAAgC,UAAA,WAAA,CAAA,GAAA,EAAA,MAAA;EAAY,OAAA,QAAA,EMqC/B,YNrC+B,CAAA,MAAA,EMqCV,eNrCU,CAAA;EAC9B,OAAA,MAAA,CAAA,GAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,KAAA,EMwCP,SNxCO,EAAA,GMwCO,SNxCP,CAAA,EMyCtB,eNzCsB;EAElB,GAAA,CAAA,GAAA,KAAA,EM+Cc,SN/Cd,CAAA,GAAA,CAAA,EAAA,CAAA,EM+CiC,SN/CjC;EACa,GAAA,CAAA,GAAA,IAAA,EM+CA,gBN/CA,CAAA,GAAA,CAAA,EAAA,CAAA,EM+C0B,SN/C1B;EAAW,GAAA,CAAtB,UMiDE,eNjDF,CAAA,GAAA,CAAA,EAAA,WMkDE,CNlDF,SMkDY,eNlDZ,CAAA,KAAA,EAAA,CAAA,GAAA,CAAA,GAAA,KAAA,EAGV,CAAA,MAAY,EMiDF,eNjDE,CMiDc,CNjDd,EAAA,GAAA,CAAA,EAAA,KAAA,EMkDH,mBNlDG,CMkDiB,QNlDjB,CMkD0B,SNlD1B,CMkDoC,CNlDpC,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EMmDR,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,COkCvB,OPlCuB,GOkCb,OPlCa,CAAA,EAAA,EOmCxB,OPnCwB,CAAA;AAAA,cO+CZC,aP/CY,EO+CG,SP/CH,CAAA,MAAA,EO+CqB,OP/CrB,EAAA,MAAA,EO+CsC,OP/CtC,EAAA,KAAA,CAAA;AAGb,cOqDCC,iBPrDD,EOqDoB,+BPrDpB,COsDX,gBPtDW,COsDM,KPtDN,COsDY,OPtDZ,CAAA,CAAA,EAAA,EOuDX,OPvDW,CAAA"}
@@ -28,6 +28,7 @@ function castSocket(socket, guard, logError) {
28
28
  });
29
29
  });
30
30
  },
31
+ onAnyOutgoing: socket.onAnyOutgoing.bind(socket),
31
32
  off: socket.off.bind(socket),
32
33
  offAny: socket.offAny.bind(socket),
33
34
  emit: socket.emit.bind(socket)
@@ -140,6 +141,13 @@ const usersInRooms = join({
140
141
  isAType: isRoomKey,
141
142
  isBType: isUserKey
142
143
  });
144
+ const visibleUsersInRoomsSelector = selectorFamily({
145
+ key: `selfList`,
146
+ get: (userKey) => ({ get }) => {
147
+ const [, roomsOfUsersAtoms] = getInternalRelations(usersInRooms, `split`);
148
+ return [userKey, ...get(roomsOfUsersAtoms, userKey)];
149
+ }
150
+ });
143
151
  const ownersOfRooms = join({
144
152
  key: `ownersOfRooms`,
145
153
  between: [`user`, `room`],
@@ -156,5 +164,5 @@ const usersInMyRoomView = selectorFamily({
156
164
  });
157
165
 
158
166
  //#endregion
159
- export { DEFAULT_USER_IN_ROOM_META, InvariantMap, SyncGroup, castSocket, continuity, employSocket, isRoomKey, isSocketKey, isUserKey, mutexAtoms, ownersOfRooms, roomKeysAtom, usersInMyRoomView, usersInRooms };
167
+ export { DEFAULT_USER_IN_ROOM_META, InvariantMap, SyncGroup, castSocket, continuity, employSocket, isRoomKey, isSocketKey, isUserKey, mutexAtoms, ownersOfRooms, roomKeysAtom, usersInMyRoomView, usersInRooms, visibleUsersInRoomsSelector };
160
168
  //# 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`>","ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>","usersInMyRoomView: ReadonlyPureSelectorFamilyToken<\n\tMutableAtomToken<UList<RoomKey>>[],\n\tUserKey\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\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 { Socket } from \"atom.io/realtime\"\nimport type { Events } from \"atom.io/realtime-server\"\n\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 {\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 } 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: TransactionToken<any>[]\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\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: `roomIndex`,\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 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\nexport const usersInMyRoomView: ReadonlyPureSelectorFamilyToken<\n\tMutableAtomToken<UList<RoomKey>>[],\n\tUserKey\n> = selectorFamily({\n\tkey: `usersInMyRoomView`,\n\tget:\n\t\t(myUsername) =>\n\t\t({ find }) => {\n\t\t\tconst [, roomsOfUsersAtoms] = getInternalRelations(usersInRooms, `split`)\n\t\t\tconst myRoomIndex = find(roomsOfUsersAtoms, myUsername)\n\t\t\treturn [myRoomIndex]\n\t\t},\n})\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(RoomKey | UserKey)[],\n\tUserKey\n>","ownersOfRooms: JoinToken<`user`, UserKey, `room`, RoomKey, `1:n`>","usersInMyRoomView: ReadonlyPureSelectorFamilyToken<\n\tMutableAtomToken<UList<RoomKey>>[],\n\tUserKey\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 { Socket } from \"atom.io/realtime\"\nimport type { Events } from \"atom.io/realtime-server\"\n\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 {\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 } 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: TransactionToken<any>[]\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: `roomIndex`,\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(RoomKey | UserKey)[],\n\tUserKey\n> = selectorFamily({\n\tkey: `selfList`,\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 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\nexport const usersInMyRoomView: ReadonlyPureSelectorFamilyToken<\n\tMutableAtomToken<UList<RoomKey>>[],\n\tUserKey\n> = selectorFamily({\n\tkey: `usersInMyRoomView`,\n\tget:\n\t\t(myUsername) =>\n\t\t({ find }) => {\n\t\t\tconst [, roomsOfUsersAtoms] = getInternalRelations(usersInRooms, `split`)\n\t\t\tconst myRoomIndex = find(roomsOfUsersAtoms, myUsername)\n\t\t\treturn [myRoomIndex]\n\t\t},\n})\n"],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import { RootStore, Subject, Transceiver } from "atom.io/internal";
2
2
  import * as AtomIO from "atom.io";
3
- import { Hierarchy, JoinToken, MutableAtomToken, PureSelectorFamilyToken, RegularAtomFamilyToken, WritableToken } from "atom.io";
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, TypedSocket, UserKey } from "atom.io/realtime";
6
+ import { ContinuityToken, RoomKey, RoomSocketInterface, Socket, SocketKey, StandardSchemaV1, TypedSocket, UserKey } from "atom.io/realtime";
7
7
  import { ChildProcessWithoutNullStreams } from "node:child_process";
8
+ import { IncomingHttpHeaders } from "node:http";
9
+ import { Server } from "socket.io";
8
10
  import { Readable, Writable } from "node:stream";
11
+ import { ParsedUrlQuery } from "node:querystring";
9
12
 
10
13
  //#region src/realtime-server/continuity/provide-continuity.d.ts
11
14
  type ProvideContinuity = (continuity: ContinuityToken, userKey: UserKey) => () => void;
@@ -23,12 +26,14 @@ interface EventBuffer<E extends Events, K extends string & keyof E = string & ke
23
26
  declare abstract class CustomSocket<I extends Events, O extends Events> implements Socket {
24
27
  protected listeners: Map<keyof O, Set<(...args: Json.Array) => void>>;
25
28
  protected globalListeners: Set<(event: string, ...args: Json.Array) => void>;
29
+ protected globalListenersOutgoing: Set<(event: string, ...args: Json.Array) => void>;
26
30
  protected handleEvent<K extends string & keyof I>(...args: EventPayload<I, K>): void;
27
31
  id: string;
28
- emit: <Event extends keyof I>(event: Event, ...args: I[Event]) => CustomSocket<I, O>;
32
+ emit: <Event extends string & keyof I>(event: Event, ...args: I[Event]) => CustomSocket<I, O>;
29
33
  constructor(emit: <Event extends keyof I>(event: Event, ...args: I[Event]) => CustomSocket<I, O>);
30
34
  on<Event extends keyof O>(event: Event, listener: (...args: O[Event]) => void): this;
31
35
  onAny(listener: (event: string, ...args: Json.Array) => void): this;
36
+ onAnyOutgoing(listener: (event: string, ...args: Json.Array) => void): this;
32
37
  off<Event extends keyof O>(event: Event, listener?: (...args: O[Event]) => void): this;
33
38
  offAny(listener: (event: string, ...args: Json.Array) => void): this;
34
39
  }
@@ -90,45 +95,38 @@ declare class ParentSocket<I extends Events & { [id in string as `relay::${id}`]
90
95
  receiveRelay(attachServices: (socket: SubjectSocket<any, any>, userKey: UserKey) => (() => void) | void): void;
91
96
  }
92
97
  //#endregion
93
- //#region src/realtime-server/realtime-family-provider.d.ts
94
- type FamilyProvider = ReturnType<typeof realtimeAtomFamilyProvider>;
95
- declare function realtimeAtomFamilyProvider({
96
- socket,
97
- userKey,
98
- store
99
- }: ServerConfig): <J extends Json.Serializable, K extends Canonical>(family: AtomIO.RegularAtomFamilyToken<J, K>, index: AtomIO.ReadableToken<Iterable<NoInfer<K>>>) => () => void;
100
- //#endregion
101
- //#region src/realtime-server/realtime-mutable-family-provider.d.ts
102
- type MutableFamilyProvider = ReturnType<typeof realtimeMutableFamilyProvider>;
103
- declare function realtimeMutableFamilyProvider({
104
- socket,
105
- userKey,
106
- store
107
- }: ServerConfig): <T extends Transceiver<any, any, any>, K extends Canonical>(family: AtomIO.MutableAtomFamilyToken<T, K>, index: AtomIO.ReadableToken<Iterable<NoInfer<K>>>) => () => void;
108
- //#endregion
109
- //#region src/realtime-server/realtime-mutable-provider.d.ts
110
- type MutableProvider = ReturnType<typeof realtimeMutableProvider>;
111
- declare function realtimeMutableProvider({
112
- socket,
113
- userKey,
114
- store
115
- }: ServerConfig): <Core extends Transceiver<any, Json.Serializable, Json.Serializable>>(token: AtomIO.MutableAtomToken<Core>) => () => void;
116
- //#endregion
117
98
  //#region src/realtime-server/server-config.d.ts
118
99
  type ServerConfig = {
119
100
  socket: Socket;
120
101
  userKey: UserKey;
121
102
  store?: RootStore;
122
103
  };
104
+ /** Socket Handshake details--taken from socket.io */
105
+ type Handshake = {
106
+ /** The headers sent as part of the handshake */
107
+ headers: IncomingHttpHeaders;
108
+ /** The date of creation (as string) */
109
+ time: string;
110
+ /** The ip of the client */
111
+ address: string;
112
+ /** Whether the connection is cross-domain */
113
+ xdomain: boolean;
114
+ /** Whether the connection is secure */
115
+ secure: boolean;
116
+ /** The date of creation (as unix timestamp) */
117
+ issued: number;
118
+ /** The request URL string */
119
+ url: string;
120
+ /** The query object */
121
+ query: ParsedUrlQuery;
122
+ /** The auth object */
123
+ auth: {
124
+ [key: string]: any;
125
+ };
126
+ };
127
+ declare function realtime(server: Server, auth: (handshake: Handshake) => Loadable<Error | UserKey>, onConnect: (config: ServerConfig) => Loadable<() => Loadable<void>>, store?: RootStore): () => Promise<void>;
123
128
  //#endregion
124
- //#region src/realtime-server/realtime-server-stores/provide-identity.d.ts
125
- declare function provideIdentity({
126
- store,
127
- socket,
128
- userKey
129
- }: ServerConfig): void;
130
- //#endregion
131
- //#region src/realtime-server/realtime-server-stores/provide-rooms.d.ts
129
+ //#region src/realtime-server/provide-rooms.d.ts
132
130
  type RoomMap = Map<string, ChildSocket<any, any, ChildProcessWithoutNullStreams>>;
133
131
  declare global {
134
132
  var ATOM_IO_REALTIME_SERVER_ROOMS: RoomMap;
@@ -180,19 +178,33 @@ declare function provideRooms<RoomNames extends string>({
180
178
  store,
181
179
  socket,
182
180
  resolveRoomScript,
183
- roomNames
184
- }: ProvideRoomsConfig<RoomNames> & ServerConfig): void;
181
+ roomNames,
182
+ userKey
183
+ }: ProvideRoomsConfig<RoomNames> & ServerConfig): () => void;
185
184
  //#endregion
186
- //#region src/realtime-server/realtime-server-stores/server-user-store.d.ts
187
- type SocketSystemHierarchy = Hierarchy<[{
188
- above: `root`;
189
- below: [UserKey, SocketKey, RoomKey];
190
- }]>;
191
- declare const socketAtoms: RegularAtomFamilyToken<Socket | null, SocketKey>;
192
- declare const socketKeysAtom: MutableAtomToken<UList<SocketKey>>;
193
- declare const userKeysAtom: MutableAtomToken<UList<UserKey>>;
194
- declare const usersOfSockets: JoinToken<`user`, UserKey, `socket`, SocketKey, `1:1`>;
195
- declare const selfListSelectors: PureSelectorFamilyToken<UserKey[], UserKey>;
185
+ //#region src/realtime-server/realtime-family-provider.d.ts
186
+ type FamilyProvider = ReturnType<typeof realtimeAtomFamilyProvider>;
187
+ declare function realtimeAtomFamilyProvider({
188
+ socket,
189
+ userKey,
190
+ store
191
+ }: ServerConfig): <J extends Json.Serializable, K extends Canonical>(family: AtomIO.RegularAtomFamilyToken<J, K>, index: AtomIO.ReadableToken<Iterable<NoInfer<K>>>) => () => void;
192
+ //#endregion
193
+ //#region src/realtime-server/realtime-mutable-family-provider.d.ts
194
+ type MutableFamilyProvider = ReturnType<typeof realtimeMutableFamilyProvider>;
195
+ declare function realtimeMutableFamilyProvider({
196
+ socket,
197
+ userKey,
198
+ store
199
+ }: ServerConfig): <T extends Transceiver<any, any, any>, K extends Canonical>(family: AtomIO.MutableAtomFamilyToken<T, K>, index: AtomIO.ReadableToken<Iterable<NoInfer<K>>>) => () => void;
200
+ //#endregion
201
+ //#region src/realtime-server/realtime-mutable-provider.d.ts
202
+ type MutableProvider = ReturnType<typeof realtimeMutableProvider>;
203
+ declare function realtimeMutableProvider({
204
+ socket,
205
+ userKey,
206
+ store
207
+ }: ServerConfig): <Core extends Transceiver<any, Json.Serializable, Json.Serializable>>(token: AtomIO.MutableAtomToken<Core>) => () => void;
196
208
  //#endregion
197
209
  //#region src/realtime-server/realtime-state-provider.d.ts
198
210
  type StateProvider = ReturnType<typeof realtimeStateProvider>;
@@ -200,14 +212,25 @@ declare function realtimeStateProvider({
200
212
  socket,
201
213
  userKey,
202
214
  store
203
- }: ServerConfig): <J extends Json.Serializable>(clientToken: AtomIO.WritableToken<J>, serverData?: AtomIO.ReadableToken<NoInfer<J>> | NoInfer<J>) => () => void;
215
+ }: ServerConfig): <C extends Json.Serializable, S extends C>(clientToken: AtomIO.WritableToken<C>, serverData?: AtomIO.ReadableToken<S> | S) => () => void;
204
216
  //#endregion
205
217
  //#region src/realtime-server/realtime-state-receiver.d.ts
206
218
  type StateReceiver = ReturnType<typeof realtimeStateReceiver>;
207
219
  declare function realtimeStateReceiver({
208
220
  socket,
221
+ userKey,
209
222
  store
210
- }: ServerConfig): <S extends Json.Serializable, C extends S>(clientToken: WritableToken<C>, serverToken?: WritableToken<S>) => () => void;
223
+ }: ServerConfig): <S extends Json.Serializable, C extends S>(schema: StandardSchemaV1<unknown, C>, clientToken: WritableToken<C>, serverToken?: WritableToken<S>) => () => void;
224
+ //#endregion
225
+ //#region src/realtime-server/server-socket-state.d.ts
226
+ type SocketSystemHierarchy = Hierarchy<[{
227
+ above: `root`;
228
+ below: [UserKey, SocketKey, RoomKey];
229
+ }]>;
230
+ declare const socketAtoms: RegularAtomFamilyToken<Socket | null, SocketKey>;
231
+ declare const socketKeysAtom: MutableAtomToken<UList<SocketKey>>;
232
+ declare const userKeysAtom: MutableAtomToken<UList<UserKey>>;
233
+ declare const usersOfSockets: JoinToken<`user`, UserKey, `socket`, SocketKey, `1:1`>;
211
234
  //#endregion
212
- export { ChildProcess, ChildSocket, CustomSocket, DestroyRoomConfig, EventBuffer, EventPayload, Events, FamilyProvider, MutableFamilyProvider, MutableProvider, ParentProcess, ParentSocket, ProvideContinuity, ProvideEnterAndExitConfig, ProvideRoomsConfig, ROOMS, RoomMap, ServerConfig, SocketSystemHierarchy, SpawnRoomConfig, StateProvider, StateReceiver, StderrLog, SubjectSocket, destroyRoom, prepareToProvideContinuity, provideEnterAndExit, provideIdentity, provideRooms, realtimeAtomFamilyProvider, realtimeMutableFamilyProvider, realtimeMutableProvider, realtimeStateProvider, realtimeStateReceiver, roomMeta, selfListSelectors, socketAtoms, socketKeysAtom, spawnRoom, userKeysAtom, usersOfSockets };
235
+ export { ChildProcess, ChildSocket, CustomSocket, DestroyRoomConfig, EventBuffer, EventPayload, Events, FamilyProvider, Handshake, MutableFamilyProvider, MutableProvider, ParentProcess, ParentSocket, ProvideContinuity, ProvideEnterAndExitConfig, ProvideRoomsConfig, ROOMS, RoomMap, ServerConfig, SocketSystemHierarchy, SpawnRoomConfig, StateProvider, StateReceiver, StderrLog, SubjectSocket, destroyRoom, prepareToProvideContinuity, provideEnterAndExit, provideRooms, realtime, realtimeAtomFamilyProvider, realtimeMutableFamilyProvider, realtimeMutableProvider, realtimeStateProvider, realtimeStateReceiver, roomMeta, socketAtoms, socketKeysAtom, spawnRoom, userKeysAtom, usersOfSockets };
213
236
  //# sourceMappingURL=index.d.ts.map
@@ -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>>","userKeysAtom: MutableAtomToken<UList<UserKey>>","usersOfSockets: JoinToken<\n\t`user`,\n\tUserKey,\n\t`socket`,\n\tSocketKey,\n\t`1:1`\n>","selfListSelectors: PureSelectorFamilyToken<UserKey[], UserKey>"],"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/realtime-family-provider.ts","../../src/realtime-server/realtime-mutable-family-provider.ts","../../src/realtime-server/realtime-mutable-provider.ts","../../src/realtime-server/server-config.ts","../../src/realtime-server/realtime-server-stores/provide-identity.ts","../../src/realtime-server/realtime-server-stores/provide-rooms.ts","../../src/realtime-server/realtime-server-stores/server-user-store.ts","../../src/realtime-server/realtime-state-provider.ts","../../src/realtime-server/realtime-state-receiver.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>>","userKeysAtom: 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/server-config.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-socket-state.ts"],"sourcesContent":[],"mappings":"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"}