atom.io 0.19.4 → 0.20.0
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/data/dist/index.js +1 -1
- package/data/src/dict.ts +1 -1
- package/data/src/join.ts +1 -1
- package/data/src/struct-family.ts +1 -1
- package/data/src/struct.ts +5 -3
- package/internal/dist/index.cjs +127 -92
- package/internal/dist/index.d.ts +13 -9
- package/internal/dist/index.js +127 -92
- package/internal/src/atom/index.ts +1 -1
- package/internal/src/caching.ts +13 -9
- package/internal/src/families/create-atom-family.ts +1 -1
- package/internal/src/families/find-in-store.ts +2 -2
- package/internal/src/families/index.ts +1 -1
- package/internal/src/future.ts +52 -15
- package/internal/src/index.ts +2 -2
- package/internal/src/mutable/create-mutable-atom-family.ts +2 -3
- package/internal/src/mutable/create-mutable-atom.ts +3 -3
- package/internal/src/mutable/get-update-token.ts +1 -0
- package/internal/src/selector/delete-selector.ts +1 -1
- package/internal/src/selector/register-selector.ts +1 -1
- package/internal/src/store/deposit.ts +1 -1
- package/internal/src/store/store.ts +2 -2
- package/internal/src/store/withdraw-new-family-member.ts +1 -1
- package/internal/src/store/withdraw.ts +2 -3
- package/internal/src/subscribe/subscribe-to-state.ts +1 -0
- package/internal/src/subscribe/subscribe-to-timeline.ts +1 -0
- package/internal/src/subscribe/subscribe-to-transaction.ts +2 -1
- package/internal/src/timeline/add-atom-to-timeline.ts +2 -2
- package/internal/src/timeline/create-timeline.ts +1 -1
- package/internal/src/transaction/act-upon-store.ts +1 -1
- package/internal/src/transaction/apply-transaction.ts +1 -1
- package/internal/src/transaction/build-transaction.ts +2 -2
- package/internal/src/transaction/create-transaction.ts +2 -2
- package/internal/src/transaction/index.ts +1 -1
- package/internal/src/transaction/is-root-store.ts +1 -1
- package/introspection/src/attach-atom-index.ts +1 -1
- package/introspection/src/attach-introspection-states.ts +2 -2
- package/introspection/src/attach-selector-index.ts +1 -1
- package/introspection/src/attach-timeline-family.ts +2 -2
- package/introspection/src/attach-timeline-index.ts +1 -1
- package/introspection/src/attach-transaction-index.ts +2 -2
- package/introspection/src/attach-transaction-logs.ts +2 -2
- package/json/dist/index.cjs +35 -33
- package/json/dist/index.d.ts +5 -5
- package/json/src/index.ts +2 -3
- package/json/src/select-json-family.ts +1 -1
- package/json/src/select-json.ts +1 -2
- package/package.json +15 -15
- package/react/src/use-tl.ts +1 -1
- package/react-devtools/dist/index.cjs +99 -99
- package/react-devtools/dist/index.d.ts +2 -2
- package/react-devtools/dist/index.js +77 -77
- package/react-devtools/src/AtomIODevtools.tsx +2 -2
- package/react-devtools/src/TransactionIndex.tsx +2 -2
- package/react-devtools/src/Updates.tsx +1 -1
- package/react-devtools/src/index.ts +1 -1
- package/realtime/src/realtime-continuity.ts +1 -1
- package/realtime-client/dist/index.js +1 -1
- package/realtime-client/src/pull-atom-family-member.ts +1 -1
- package/realtime-client/src/pull-atom.ts +1 -1
- package/realtime-client/src/pull-mutable-atom-family-member.ts +2 -2
- package/realtime-client/src/sync-continuity.ts +1 -1
- package/realtime-react/dist/index.js +1 -1
- package/realtime-react/src/use-realtime-service.ts +1 -0
- package/realtime-react/src/use-sync-continuity.ts +2 -1
- package/realtime-server/dist/index.cjs +98 -98
- package/realtime-server/dist/index.d.ts +14 -14
- package/realtime-server/dist/index.js +100 -100
- package/realtime-server/src/index.ts +5 -5
- package/realtime-server/src/ipc-sockets/parent-socket.ts +3 -3
- package/realtime-server/src/realtime-action-receiver.ts +1 -1
- package/realtime-server/src/realtime-continuity-synchronizer.ts +2 -3
- package/realtime-server/src/realtime-family-provider.ts +1 -1
- package/realtime-server/src/realtime-mutable-family-provider.ts +1 -1
- package/realtime-server/src/realtime-mutable-provider.ts +2 -2
- package/realtime-server/src/realtime-server-stores/realtime-continuity-store.ts +2 -2
- package/realtime-server/src/realtime-server-stores/server-room-external-actions.ts +1 -1
- package/realtime-server/src/realtime-server-stores/server-room-external-store.ts +1 -0
- package/realtime-server/src/realtime-state-provider.ts +1 -1
- package/realtime-server/src/realtime-state-synchronizer.ts +1 -1
- package/realtime-testing/dist/index.js +2 -2
- package/realtime-testing/src/setup-realtime-test.tsx +3 -2
- package/src/atom.ts +1 -1
- package/src/find-state.ts +1 -1
- package/src/index.ts +1 -0
- package/src/selector.ts +1 -1
- package/src/silo.ts +4 -4
- package/src/subscribe.ts +2 -2
- package/src/timeline.ts +1 -1
- package/src/transaction.ts +3 -3
- package/transceivers/set-rtx/src/set-rtx.ts +1 -1
- package/dist/{chunk-ATKDGVTV.js → chunk-2AIFLP2B.js} +0 -0
- package/dist/{chunk-CC7IF7QF.js → chunk-3V3VWQ7X.js} +6 -6
- /package/dist/{chunk-MSCJWACE.js → chunk-SMZRGPN6.js} +0 -0
|
@@ -344,6 +344,31 @@ var ParentSocket = class extends CustomSocket {
|
|
|
344
344
|
this.relayServices.push(attachServices);
|
|
345
345
|
}
|
|
346
346
|
};
|
|
347
|
+
function realtimeActionReceiver({
|
|
348
|
+
socket,
|
|
349
|
+
store = internal.IMPLICIT.STORE
|
|
350
|
+
}) {
|
|
351
|
+
return function actionReceiver(tx) {
|
|
352
|
+
const fillTransactionRequest = (update) => {
|
|
353
|
+
const performanceKey = `tx-run:${tx.key}:${update.id}`;
|
|
354
|
+
const performanceKeyStart = `${performanceKey}:start`;
|
|
355
|
+
const performanceKeyEnd = `${performanceKey}:end`;
|
|
356
|
+
performance.mark(performanceKeyStart);
|
|
357
|
+
internal.actUponStore(tx, update.id, store)(...update.params);
|
|
358
|
+
performance.mark(performanceKeyEnd);
|
|
359
|
+
const metric = performance.measure(
|
|
360
|
+
performanceKey,
|
|
361
|
+
performanceKeyStart,
|
|
362
|
+
performanceKeyEnd
|
|
363
|
+
);
|
|
364
|
+
store == null ? void 0 : store.logger.info(`\u{1F680}`, `transaction`, tx.key, update.id, metric.duration);
|
|
365
|
+
};
|
|
366
|
+
socket.on(`tx-run:${tx.key}`, fillTransactionRequest);
|
|
367
|
+
return () => {
|
|
368
|
+
socket.off(`tx-run:${tx.key}`, fillTransactionRequest);
|
|
369
|
+
};
|
|
370
|
+
};
|
|
371
|
+
}
|
|
347
372
|
function capitalize(string) {
|
|
348
373
|
return string[0].toUpperCase() + string.slice(1);
|
|
349
374
|
}
|
|
@@ -913,55 +938,6 @@ function realtimeContinuitySynchronizer({
|
|
|
913
938
|
};
|
|
914
939
|
};
|
|
915
940
|
}
|
|
916
|
-
function realtimeStateProvider({
|
|
917
|
-
socket,
|
|
918
|
-
store = internal.IMPLICIT.STORE
|
|
919
|
-
}) {
|
|
920
|
-
return function stateProvider(token) {
|
|
921
|
-
let unsubscribeFromStateUpdates;
|
|
922
|
-
const fillSubRequest = () => {
|
|
923
|
-
socket.emit(`serve:${token.key}`, internal.getFromStore(token, store));
|
|
924
|
-
unsubscribeFromStateUpdates = internal.subscribeToState(
|
|
925
|
-
token,
|
|
926
|
-
({ newValue }) => {
|
|
927
|
-
socket.emit(`serve:${token.key}`, newValue);
|
|
928
|
-
},
|
|
929
|
-
`expose-single:${socket.id}`,
|
|
930
|
-
store
|
|
931
|
-
);
|
|
932
|
-
const fillUnsubRequest = () => {
|
|
933
|
-
socket.off(`unsub:${token.key}`, fillUnsubRequest);
|
|
934
|
-
if (unsubscribeFromStateUpdates) {
|
|
935
|
-
unsubscribeFromStateUpdates();
|
|
936
|
-
unsubscribeFromStateUpdates = void 0;
|
|
937
|
-
}
|
|
938
|
-
};
|
|
939
|
-
socket.on(`unsub:${token.key}`, fillUnsubRequest);
|
|
940
|
-
};
|
|
941
|
-
socket.on(`sub:${token.key}`, fillSubRequest);
|
|
942
|
-
return () => {
|
|
943
|
-
socket.off(`sub:${token.key}`, fillSubRequest);
|
|
944
|
-
if (unsubscribeFromStateUpdates) {
|
|
945
|
-
unsubscribeFromStateUpdates();
|
|
946
|
-
unsubscribeFromStateUpdates = void 0;
|
|
947
|
-
}
|
|
948
|
-
};
|
|
949
|
-
};
|
|
950
|
-
}
|
|
951
|
-
function realtimeStateSynchronizer({
|
|
952
|
-
socket,
|
|
953
|
-
store = internal.IMPLICIT.STORE
|
|
954
|
-
}) {
|
|
955
|
-
return function stateSynchronizer(token) {
|
|
956
|
-
const fillGetRequest = () => {
|
|
957
|
-
socket.emit(`value:${token.key}`, internal.getFromStore(token, store));
|
|
958
|
-
};
|
|
959
|
-
socket.on(`get:${token.key}`, fillGetRequest);
|
|
960
|
-
return () => {
|
|
961
|
-
socket.off(`get:${token.key}`, fillGetRequest);
|
|
962
|
-
};
|
|
963
|
-
};
|
|
964
|
-
}
|
|
965
941
|
function realtimeAtomFamilyProvider({
|
|
966
942
|
socket,
|
|
967
943
|
store = internal.IMPLICIT.STORE
|
|
@@ -1008,38 +984,6 @@ function realtimeAtomFamilyProvider({
|
|
|
1008
984
|
};
|
|
1009
985
|
};
|
|
1010
986
|
}
|
|
1011
|
-
function realtimeMutableProvider({
|
|
1012
|
-
socket,
|
|
1013
|
-
store = internal.IMPLICIT.STORE
|
|
1014
|
-
}) {
|
|
1015
|
-
return function mutableProvider(token) {
|
|
1016
|
-
let unsubscribeFromStateUpdates = null;
|
|
1017
|
-
const jsonToken = internal.getJsonToken(token);
|
|
1018
|
-
const trackerToken = internal.getUpdateToken(token);
|
|
1019
|
-
const fillUnsubRequest = () => {
|
|
1020
|
-
socket.off(`unsub:${token.key}`, fillUnsubRequest);
|
|
1021
|
-
unsubscribeFromStateUpdates == null ? void 0 : unsubscribeFromStateUpdates();
|
|
1022
|
-
unsubscribeFromStateUpdates = null;
|
|
1023
|
-
};
|
|
1024
|
-
const fillSubRequest = () => {
|
|
1025
|
-
socket.emit(`init:${token.key}`, internal.getFromStore(jsonToken, store));
|
|
1026
|
-
unsubscribeFromStateUpdates = internal.subscribeToState(
|
|
1027
|
-
trackerToken,
|
|
1028
|
-
({ newValue }) => {
|
|
1029
|
-
socket.emit(`next:${token.key}`, newValue);
|
|
1030
|
-
},
|
|
1031
|
-
`expose-single:${socket.id}`,
|
|
1032
|
-
store
|
|
1033
|
-
);
|
|
1034
|
-
socket.on(`unsub:${token.key}`, fillUnsubRequest);
|
|
1035
|
-
};
|
|
1036
|
-
socket.on(`sub:${token.key}`, fillSubRequest);
|
|
1037
|
-
return () => {
|
|
1038
|
-
socket.off(`sub:${token.key}`, fillSubRequest);
|
|
1039
|
-
unsubscribeFromStateUpdates == null ? void 0 : unsubscribeFromStateUpdates();
|
|
1040
|
-
};
|
|
1041
|
-
};
|
|
1042
|
-
}
|
|
1043
987
|
function realtimeMutableFamilyProvider({
|
|
1044
988
|
socket,
|
|
1045
989
|
store = internal.IMPLICIT.STORE
|
|
@@ -1088,6 +1032,73 @@ function realtimeMutableFamilyProvider({
|
|
|
1088
1032
|
};
|
|
1089
1033
|
};
|
|
1090
1034
|
}
|
|
1035
|
+
function realtimeMutableProvider({
|
|
1036
|
+
socket,
|
|
1037
|
+
store = internal.IMPLICIT.STORE
|
|
1038
|
+
}) {
|
|
1039
|
+
return function mutableProvider(token) {
|
|
1040
|
+
let unsubscribeFromStateUpdates = null;
|
|
1041
|
+
const jsonToken = internal.getJsonToken(token);
|
|
1042
|
+
const trackerToken = internal.getUpdateToken(token);
|
|
1043
|
+
const fillUnsubRequest = () => {
|
|
1044
|
+
socket.off(`unsub:${token.key}`, fillUnsubRequest);
|
|
1045
|
+
unsubscribeFromStateUpdates == null ? void 0 : unsubscribeFromStateUpdates();
|
|
1046
|
+
unsubscribeFromStateUpdates = null;
|
|
1047
|
+
};
|
|
1048
|
+
const fillSubRequest = () => {
|
|
1049
|
+
socket.emit(`init:${token.key}`, internal.getFromStore(jsonToken, store));
|
|
1050
|
+
unsubscribeFromStateUpdates = internal.subscribeToState(
|
|
1051
|
+
trackerToken,
|
|
1052
|
+
({ newValue }) => {
|
|
1053
|
+
socket.emit(`next:${token.key}`, newValue);
|
|
1054
|
+
},
|
|
1055
|
+
`expose-single:${socket.id}`,
|
|
1056
|
+
store
|
|
1057
|
+
);
|
|
1058
|
+
socket.on(`unsub:${token.key}`, fillUnsubRequest);
|
|
1059
|
+
};
|
|
1060
|
+
socket.on(`sub:${token.key}`, fillSubRequest);
|
|
1061
|
+
return () => {
|
|
1062
|
+
socket.off(`sub:${token.key}`, fillSubRequest);
|
|
1063
|
+
unsubscribeFromStateUpdates == null ? void 0 : unsubscribeFromStateUpdates();
|
|
1064
|
+
};
|
|
1065
|
+
};
|
|
1066
|
+
}
|
|
1067
|
+
function realtimeStateProvider({
|
|
1068
|
+
socket,
|
|
1069
|
+
store = internal.IMPLICIT.STORE
|
|
1070
|
+
}) {
|
|
1071
|
+
return function stateProvider(token) {
|
|
1072
|
+
let unsubscribeFromStateUpdates;
|
|
1073
|
+
const fillSubRequest = () => {
|
|
1074
|
+
socket.emit(`serve:${token.key}`, internal.getFromStore(token, store));
|
|
1075
|
+
unsubscribeFromStateUpdates = internal.subscribeToState(
|
|
1076
|
+
token,
|
|
1077
|
+
({ newValue }) => {
|
|
1078
|
+
socket.emit(`serve:${token.key}`, newValue);
|
|
1079
|
+
},
|
|
1080
|
+
`expose-single:${socket.id}`,
|
|
1081
|
+
store
|
|
1082
|
+
);
|
|
1083
|
+
const fillUnsubRequest = () => {
|
|
1084
|
+
socket.off(`unsub:${token.key}`, fillUnsubRequest);
|
|
1085
|
+
if (unsubscribeFromStateUpdates) {
|
|
1086
|
+
unsubscribeFromStateUpdates();
|
|
1087
|
+
unsubscribeFromStateUpdates = void 0;
|
|
1088
|
+
}
|
|
1089
|
+
};
|
|
1090
|
+
socket.on(`unsub:${token.key}`, fillUnsubRequest);
|
|
1091
|
+
};
|
|
1092
|
+
socket.on(`sub:${token.key}`, fillSubRequest);
|
|
1093
|
+
return () => {
|
|
1094
|
+
socket.off(`sub:${token.key}`, fillSubRequest);
|
|
1095
|
+
if (unsubscribeFromStateUpdates) {
|
|
1096
|
+
unsubscribeFromStateUpdates();
|
|
1097
|
+
unsubscribeFromStateUpdates = void 0;
|
|
1098
|
+
}
|
|
1099
|
+
};
|
|
1100
|
+
};
|
|
1101
|
+
}
|
|
1091
1102
|
function realtimeStateReceiver({
|
|
1092
1103
|
socket,
|
|
1093
1104
|
store = internal.IMPLICIT.STORE
|
|
@@ -1111,28 +1122,17 @@ function realtimeStateReceiver({
|
|
|
1111
1122
|
};
|
|
1112
1123
|
};
|
|
1113
1124
|
}
|
|
1114
|
-
function
|
|
1125
|
+
function realtimeStateSynchronizer({
|
|
1115
1126
|
socket,
|
|
1116
1127
|
store = internal.IMPLICIT.STORE
|
|
1117
1128
|
}) {
|
|
1118
|
-
return function
|
|
1119
|
-
const
|
|
1120
|
-
|
|
1121
|
-
const performanceKeyStart = `${performanceKey}:start`;
|
|
1122
|
-
const performanceKeyEnd = `${performanceKey}:end`;
|
|
1123
|
-
performance.mark(performanceKeyStart);
|
|
1124
|
-
internal.actUponStore(tx, update.id, store)(...update.params);
|
|
1125
|
-
performance.mark(performanceKeyEnd);
|
|
1126
|
-
const metric = performance.measure(
|
|
1127
|
-
performanceKey,
|
|
1128
|
-
performanceKeyStart,
|
|
1129
|
-
performanceKeyEnd
|
|
1130
|
-
);
|
|
1131
|
-
store == null ? void 0 : store.logger.info(`\u{1F680}`, `transaction`, tx.key, update.id, metric.duration);
|
|
1129
|
+
return function stateSynchronizer(token) {
|
|
1130
|
+
const fillGetRequest = () => {
|
|
1131
|
+
socket.emit(`value:${token.key}`, internal.getFromStore(token, store));
|
|
1132
1132
|
};
|
|
1133
|
-
socket.on(`
|
|
1133
|
+
socket.on(`get:${token.key}`, fillGetRequest);
|
|
1134
1134
|
return () => {
|
|
1135
|
-
socket.off(`
|
|
1135
|
+
socket.off(`get:${token.key}`, fillGetRequest);
|
|
1136
1136
|
};
|
|
1137
1137
|
};
|
|
1138
1138
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Subject, Transceiver, Store } from 'atom.io/internal';
|
|
2
2
|
import { Json, Stringified, JsonIO } from 'atom.io/json';
|
|
3
3
|
import { ChildProcessWithoutNullStreams } from 'node:child_process';
|
|
4
|
-
import { ContinuityToken, UserInRoomMeta } from 'atom.io/realtime';
|
|
5
4
|
import * as AtomIO from 'atom.io';
|
|
6
5
|
import { TransactionUpdateContent, TransactionUpdate, WritableToken } from 'atom.io';
|
|
6
|
+
import { ContinuityToken, UserInRoomMeta } from 'atom.io/realtime';
|
|
7
7
|
import * as atom_io_data from 'atom.io/data';
|
|
8
8
|
import { Loadable } from 'atom.io/data';
|
|
9
9
|
import { SetRTX, SetRTXJson } from 'atom.io/transceivers/set-rtx';
|
|
@@ -81,9 +81,21 @@ declare class ParentSocket<I extends Events & {
|
|
|
81
81
|
relay(attachServices: (socket: SubjectSocket<any, any>) => (() => void) | void): void;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
type ActionReceiver = ReturnType<typeof realtimeActionReceiver>;
|
|
85
|
+
declare function realtimeActionReceiver({ socket, store, }: ServerConfig): <F extends JsonIO>(tx: AtomIO.TransactionToken<F>) => () => void;
|
|
86
|
+
|
|
84
87
|
type RealtimeContinuitySynchronizer = ReturnType<typeof realtimeContinuitySynchronizer>;
|
|
85
88
|
declare function realtimeContinuitySynchronizer({ socket: initialSocket, store, }: ServerConfig): (continuity: ContinuityToken) => () => void;
|
|
86
89
|
|
|
90
|
+
type FamilyProvider = ReturnType<typeof realtimeAtomFamilyProvider>;
|
|
91
|
+
declare function realtimeAtomFamilyProvider({ socket, store, }: ServerConfig): <J extends Json.Serializable, K extends Json.Serializable>(family: AtomIO.RegularAtomFamilyToken<J, K>, index: AtomIO.ReadableToken<Iterable<K>>) => () => void;
|
|
92
|
+
|
|
93
|
+
type MutableFamilyProvider = ReturnType<typeof realtimeMutableFamilyProvider>;
|
|
94
|
+
declare function realtimeMutableFamilyProvider({ socket, store, }: ServerConfig): <T extends Transceiver<any>, J extends Json.Serializable, K extends Json.Serializable>(family: AtomIO.MutableAtomFamilyToken<T, J, K>, index: AtomIO.ReadableToken<Iterable<K>>) => () => void;
|
|
95
|
+
|
|
96
|
+
type MutableProvider = ReturnType<typeof realtimeMutableProvider>;
|
|
97
|
+
declare function realtimeMutableProvider({ socket, store, }: ServerConfig): <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable>(token: AtomIO.MutableAtomToken<Core, SerializableCore>) => () => void;
|
|
98
|
+
|
|
87
99
|
declare const createRoomTX: AtomIO.TransactionToken<(roomId: string, script: string, options?: string[]) => Loadable<ChildSocket<any, any>>>;
|
|
88
100
|
type CreateRoomIO = AtomIO.TransactionIO<typeof createRoomTX>;
|
|
89
101
|
declare const joinRoomTX: AtomIO.TransactionToken<(roomId: string, userId: string, enteredAtEpoch: number) => UserInRoomMeta>;
|
|
@@ -110,22 +122,10 @@ declare const usersOfSockets: atom_io_data.JoinToken<"user", "socket", "1:1", nu
|
|
|
110
122
|
type StateProvider = ReturnType<typeof realtimeStateProvider>;
|
|
111
123
|
declare function realtimeStateProvider({ socket, store, }: ServerConfig): <J extends Json.Serializable>(token: AtomIO.WritableToken<J>) => () => void;
|
|
112
124
|
|
|
113
|
-
declare function realtimeStateSynchronizer({ socket, store, }: ServerConfig): <J extends Json.Serializable>(token: AtomIO.WritableToken<J>) => () => void;
|
|
114
|
-
|
|
115
|
-
type FamilyProvider = ReturnType<typeof realtimeAtomFamilyProvider>;
|
|
116
|
-
declare function realtimeAtomFamilyProvider({ socket, store, }: ServerConfig): <J extends Json.Serializable, K extends Json.Serializable>(family: AtomIO.RegularAtomFamilyToken<J, K>, index: AtomIO.ReadableToken<Iterable<K>>) => () => void;
|
|
117
|
-
|
|
118
|
-
type MutableProvider = ReturnType<typeof realtimeMutableProvider>;
|
|
119
|
-
declare function realtimeMutableProvider({ socket, store, }: ServerConfig): <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable>(token: AtomIO.MutableAtomToken<Core, SerializableCore>) => () => void;
|
|
120
|
-
|
|
121
|
-
type MutableFamilyProvider = ReturnType<typeof realtimeMutableFamilyProvider>;
|
|
122
|
-
declare function realtimeMutableFamilyProvider({ socket, store, }: ServerConfig): <T extends Transceiver<any>, J extends Json.Serializable, K extends Json.Serializable>(family: AtomIO.MutableAtomFamilyToken<T, J, K>, index: AtomIO.ReadableToken<Iterable<K>>) => () => void;
|
|
123
|
-
|
|
124
125
|
type StateReceiver = ReturnType<typeof realtimeStateReceiver>;
|
|
125
126
|
declare function realtimeStateReceiver({ socket, store, }: ServerConfig): <J extends Json.Serializable>(token: WritableToken<J>) => () => void;
|
|
126
127
|
|
|
127
|
-
|
|
128
|
-
declare function realtimeActionReceiver({ socket, store, }: ServerConfig): <F extends JsonIO>(tx: AtomIO.TransactionToken<F>) => () => void;
|
|
128
|
+
declare function realtimeStateSynchronizer({ socket, store, }: ServerConfig): <J extends Json.Serializable>(token: AtomIO.WritableToken<J>) => () => void;
|
|
129
129
|
|
|
130
130
|
type Socket = {
|
|
131
131
|
id: string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { findRelationsInStore } from '../../dist/chunk-
|
|
1
|
+
import { findRelationsInStore } from '../../dist/chunk-SMZRGPN6.js';
|
|
2
2
|
import '../../dist/chunk-FTONNX2R.js';
|
|
3
3
|
import { __spreadProps, __spreadValues } from '../../dist/chunk-F2X4B4VY.js';
|
|
4
4
|
import { parseJson, stringifyJson } from 'atom.io/json';
|
|
5
|
-
import { getUpdateToken, IMPLICIT, Subject, getFromStore, subscribeToState, findInStore, getJsonToken, isRootStore, subscribeToTransaction,
|
|
5
|
+
import { getUpdateToken, IMPLICIT, Subject, getFromStore, subscribeToState, findInStore, getJsonToken, actUponStore, isRootStore, subscribeToTransaction, setIntoStore } from 'atom.io/internal';
|
|
6
6
|
import { SetRTX } from 'atom.io/transceivers/set-rtx';
|
|
7
7
|
import * as AtomIO from 'atom.io';
|
|
8
8
|
import { selectorFamily, atomFamily, atom } from 'atom.io';
|
|
@@ -306,6 +306,31 @@ var ParentSocket = class extends CustomSocket {
|
|
|
306
306
|
this.relayServices.push(attachServices);
|
|
307
307
|
}
|
|
308
308
|
};
|
|
309
|
+
function realtimeActionReceiver({
|
|
310
|
+
socket,
|
|
311
|
+
store = IMPLICIT.STORE
|
|
312
|
+
}) {
|
|
313
|
+
return function actionReceiver(tx) {
|
|
314
|
+
const fillTransactionRequest = (update) => {
|
|
315
|
+
const performanceKey = `tx-run:${tx.key}:${update.id}`;
|
|
316
|
+
const performanceKeyStart = `${performanceKey}:start`;
|
|
317
|
+
const performanceKeyEnd = `${performanceKey}:end`;
|
|
318
|
+
performance.mark(performanceKeyStart);
|
|
319
|
+
actUponStore(tx, update.id, store)(...update.params);
|
|
320
|
+
performance.mark(performanceKeyEnd);
|
|
321
|
+
const metric = performance.measure(
|
|
322
|
+
performanceKey,
|
|
323
|
+
performanceKeyStart,
|
|
324
|
+
performanceKeyEnd
|
|
325
|
+
);
|
|
326
|
+
store == null ? void 0 : store.logger.info(`\u{1F680}`, `transaction`, tx.key, update.id, metric.duration);
|
|
327
|
+
};
|
|
328
|
+
socket.on(`tx-run:${tx.key}`, fillTransactionRequest);
|
|
329
|
+
return () => {
|
|
330
|
+
socket.off(`tx-run:${tx.key}`, fillTransactionRequest);
|
|
331
|
+
};
|
|
332
|
+
};
|
|
333
|
+
}
|
|
309
334
|
selectorFamily({
|
|
310
335
|
key: `perspectiveRedactor`,
|
|
311
336
|
get: ({ userId, syncGroupKey }) => ({ get, find }) => {
|
|
@@ -743,55 +768,6 @@ function realtimeContinuitySynchronizer({
|
|
|
743
768
|
};
|
|
744
769
|
};
|
|
745
770
|
}
|
|
746
|
-
function realtimeStateProvider({
|
|
747
|
-
socket,
|
|
748
|
-
store = IMPLICIT.STORE
|
|
749
|
-
}) {
|
|
750
|
-
return function stateProvider(token) {
|
|
751
|
-
let unsubscribeFromStateUpdates;
|
|
752
|
-
const fillSubRequest = () => {
|
|
753
|
-
socket.emit(`serve:${token.key}`, getFromStore(token, store));
|
|
754
|
-
unsubscribeFromStateUpdates = subscribeToState(
|
|
755
|
-
token,
|
|
756
|
-
({ newValue }) => {
|
|
757
|
-
socket.emit(`serve:${token.key}`, newValue);
|
|
758
|
-
},
|
|
759
|
-
`expose-single:${socket.id}`,
|
|
760
|
-
store
|
|
761
|
-
);
|
|
762
|
-
const fillUnsubRequest = () => {
|
|
763
|
-
socket.off(`unsub:${token.key}`, fillUnsubRequest);
|
|
764
|
-
if (unsubscribeFromStateUpdates) {
|
|
765
|
-
unsubscribeFromStateUpdates();
|
|
766
|
-
unsubscribeFromStateUpdates = void 0;
|
|
767
|
-
}
|
|
768
|
-
};
|
|
769
|
-
socket.on(`unsub:${token.key}`, fillUnsubRequest);
|
|
770
|
-
};
|
|
771
|
-
socket.on(`sub:${token.key}`, fillSubRequest);
|
|
772
|
-
return () => {
|
|
773
|
-
socket.off(`sub:${token.key}`, fillSubRequest);
|
|
774
|
-
if (unsubscribeFromStateUpdates) {
|
|
775
|
-
unsubscribeFromStateUpdates();
|
|
776
|
-
unsubscribeFromStateUpdates = void 0;
|
|
777
|
-
}
|
|
778
|
-
};
|
|
779
|
-
};
|
|
780
|
-
}
|
|
781
|
-
function realtimeStateSynchronizer({
|
|
782
|
-
socket,
|
|
783
|
-
store = IMPLICIT.STORE
|
|
784
|
-
}) {
|
|
785
|
-
return function stateSynchronizer(token) {
|
|
786
|
-
const fillGetRequest = () => {
|
|
787
|
-
socket.emit(`value:${token.key}`, getFromStore(token, store));
|
|
788
|
-
};
|
|
789
|
-
socket.on(`get:${token.key}`, fillGetRequest);
|
|
790
|
-
return () => {
|
|
791
|
-
socket.off(`get:${token.key}`, fillGetRequest);
|
|
792
|
-
};
|
|
793
|
-
};
|
|
794
|
-
}
|
|
795
771
|
function realtimeAtomFamilyProvider({
|
|
796
772
|
socket,
|
|
797
773
|
store = IMPLICIT.STORE
|
|
@@ -838,38 +814,6 @@ function realtimeAtomFamilyProvider({
|
|
|
838
814
|
};
|
|
839
815
|
};
|
|
840
816
|
}
|
|
841
|
-
function realtimeMutableProvider({
|
|
842
|
-
socket,
|
|
843
|
-
store = IMPLICIT.STORE
|
|
844
|
-
}) {
|
|
845
|
-
return function mutableProvider(token) {
|
|
846
|
-
let unsubscribeFromStateUpdates = null;
|
|
847
|
-
const jsonToken = getJsonToken(token);
|
|
848
|
-
const trackerToken = getUpdateToken(token);
|
|
849
|
-
const fillUnsubRequest = () => {
|
|
850
|
-
socket.off(`unsub:${token.key}`, fillUnsubRequest);
|
|
851
|
-
unsubscribeFromStateUpdates == null ? void 0 : unsubscribeFromStateUpdates();
|
|
852
|
-
unsubscribeFromStateUpdates = null;
|
|
853
|
-
};
|
|
854
|
-
const fillSubRequest = () => {
|
|
855
|
-
socket.emit(`init:${token.key}`, getFromStore(jsonToken, store));
|
|
856
|
-
unsubscribeFromStateUpdates = subscribeToState(
|
|
857
|
-
trackerToken,
|
|
858
|
-
({ newValue }) => {
|
|
859
|
-
socket.emit(`next:${token.key}`, newValue);
|
|
860
|
-
},
|
|
861
|
-
`expose-single:${socket.id}`,
|
|
862
|
-
store
|
|
863
|
-
);
|
|
864
|
-
socket.on(`unsub:${token.key}`, fillUnsubRequest);
|
|
865
|
-
};
|
|
866
|
-
socket.on(`sub:${token.key}`, fillSubRequest);
|
|
867
|
-
return () => {
|
|
868
|
-
socket.off(`sub:${token.key}`, fillSubRequest);
|
|
869
|
-
unsubscribeFromStateUpdates == null ? void 0 : unsubscribeFromStateUpdates();
|
|
870
|
-
};
|
|
871
|
-
};
|
|
872
|
-
}
|
|
873
817
|
function realtimeMutableFamilyProvider({
|
|
874
818
|
socket,
|
|
875
819
|
store = IMPLICIT.STORE
|
|
@@ -918,6 +862,73 @@ function realtimeMutableFamilyProvider({
|
|
|
918
862
|
};
|
|
919
863
|
};
|
|
920
864
|
}
|
|
865
|
+
function realtimeMutableProvider({
|
|
866
|
+
socket,
|
|
867
|
+
store = IMPLICIT.STORE
|
|
868
|
+
}) {
|
|
869
|
+
return function mutableProvider(token) {
|
|
870
|
+
let unsubscribeFromStateUpdates = null;
|
|
871
|
+
const jsonToken = getJsonToken(token);
|
|
872
|
+
const trackerToken = getUpdateToken(token);
|
|
873
|
+
const fillUnsubRequest = () => {
|
|
874
|
+
socket.off(`unsub:${token.key}`, fillUnsubRequest);
|
|
875
|
+
unsubscribeFromStateUpdates == null ? void 0 : unsubscribeFromStateUpdates();
|
|
876
|
+
unsubscribeFromStateUpdates = null;
|
|
877
|
+
};
|
|
878
|
+
const fillSubRequest = () => {
|
|
879
|
+
socket.emit(`init:${token.key}`, getFromStore(jsonToken, store));
|
|
880
|
+
unsubscribeFromStateUpdates = subscribeToState(
|
|
881
|
+
trackerToken,
|
|
882
|
+
({ newValue }) => {
|
|
883
|
+
socket.emit(`next:${token.key}`, newValue);
|
|
884
|
+
},
|
|
885
|
+
`expose-single:${socket.id}`,
|
|
886
|
+
store
|
|
887
|
+
);
|
|
888
|
+
socket.on(`unsub:${token.key}`, fillUnsubRequest);
|
|
889
|
+
};
|
|
890
|
+
socket.on(`sub:${token.key}`, fillSubRequest);
|
|
891
|
+
return () => {
|
|
892
|
+
socket.off(`sub:${token.key}`, fillSubRequest);
|
|
893
|
+
unsubscribeFromStateUpdates == null ? void 0 : unsubscribeFromStateUpdates();
|
|
894
|
+
};
|
|
895
|
+
};
|
|
896
|
+
}
|
|
897
|
+
function realtimeStateProvider({
|
|
898
|
+
socket,
|
|
899
|
+
store = IMPLICIT.STORE
|
|
900
|
+
}) {
|
|
901
|
+
return function stateProvider(token) {
|
|
902
|
+
let unsubscribeFromStateUpdates;
|
|
903
|
+
const fillSubRequest = () => {
|
|
904
|
+
socket.emit(`serve:${token.key}`, getFromStore(token, store));
|
|
905
|
+
unsubscribeFromStateUpdates = subscribeToState(
|
|
906
|
+
token,
|
|
907
|
+
({ newValue }) => {
|
|
908
|
+
socket.emit(`serve:${token.key}`, newValue);
|
|
909
|
+
},
|
|
910
|
+
`expose-single:${socket.id}`,
|
|
911
|
+
store
|
|
912
|
+
);
|
|
913
|
+
const fillUnsubRequest = () => {
|
|
914
|
+
socket.off(`unsub:${token.key}`, fillUnsubRequest);
|
|
915
|
+
if (unsubscribeFromStateUpdates) {
|
|
916
|
+
unsubscribeFromStateUpdates();
|
|
917
|
+
unsubscribeFromStateUpdates = void 0;
|
|
918
|
+
}
|
|
919
|
+
};
|
|
920
|
+
socket.on(`unsub:${token.key}`, fillUnsubRequest);
|
|
921
|
+
};
|
|
922
|
+
socket.on(`sub:${token.key}`, fillSubRequest);
|
|
923
|
+
return () => {
|
|
924
|
+
socket.off(`sub:${token.key}`, fillSubRequest);
|
|
925
|
+
if (unsubscribeFromStateUpdates) {
|
|
926
|
+
unsubscribeFromStateUpdates();
|
|
927
|
+
unsubscribeFromStateUpdates = void 0;
|
|
928
|
+
}
|
|
929
|
+
};
|
|
930
|
+
};
|
|
931
|
+
}
|
|
921
932
|
function realtimeStateReceiver({
|
|
922
933
|
socket,
|
|
923
934
|
store = IMPLICIT.STORE
|
|
@@ -941,28 +952,17 @@ function realtimeStateReceiver({
|
|
|
941
952
|
};
|
|
942
953
|
};
|
|
943
954
|
}
|
|
944
|
-
function
|
|
955
|
+
function realtimeStateSynchronizer({
|
|
945
956
|
socket,
|
|
946
957
|
store = IMPLICIT.STORE
|
|
947
958
|
}) {
|
|
948
|
-
return function
|
|
949
|
-
const
|
|
950
|
-
|
|
951
|
-
const performanceKeyStart = `${performanceKey}:start`;
|
|
952
|
-
const performanceKeyEnd = `${performanceKey}:end`;
|
|
953
|
-
performance.mark(performanceKeyStart);
|
|
954
|
-
actUponStore(tx, update.id, store)(...update.params);
|
|
955
|
-
performance.mark(performanceKeyEnd);
|
|
956
|
-
const metric = performance.measure(
|
|
957
|
-
performanceKey,
|
|
958
|
-
performanceKeyStart,
|
|
959
|
-
performanceKeyEnd
|
|
960
|
-
);
|
|
961
|
-
store == null ? void 0 : store.logger.info(`\u{1F680}`, `transaction`, tx.key, update.id, metric.duration);
|
|
959
|
+
return function stateSynchronizer(token) {
|
|
960
|
+
const fillGetRequest = () => {
|
|
961
|
+
socket.emit(`value:${token.key}`, getFromStore(token, store));
|
|
962
962
|
};
|
|
963
|
-
socket.on(`
|
|
963
|
+
socket.on(`get:${token.key}`, fillGetRequest);
|
|
964
964
|
return () => {
|
|
965
|
-
socket.off(`
|
|
965
|
+
socket.off(`get:${token.key}`, fillGetRequest);
|
|
966
966
|
};
|
|
967
967
|
};
|
|
968
968
|
}
|
|
@@ -2,15 +2,15 @@ import type { Store } from "atom.io/internal"
|
|
|
2
2
|
import type { Json } from "atom.io/json"
|
|
3
3
|
|
|
4
4
|
export * from "./ipc-sockets"
|
|
5
|
+
export * from "./realtime-action-receiver"
|
|
5
6
|
export * from "./realtime-continuity-synchronizer"
|
|
6
|
-
export * from "./realtime-server-stores"
|
|
7
|
-
export * from "./realtime-state-provider"
|
|
8
|
-
export * from "./realtime-state-synchronizer"
|
|
9
7
|
export * from "./realtime-family-provider"
|
|
10
|
-
export * from "./realtime-mutable-provider"
|
|
11
8
|
export * from "./realtime-mutable-family-provider"
|
|
9
|
+
export * from "./realtime-mutable-provider"
|
|
10
|
+
export * from "./realtime-server-stores"
|
|
11
|
+
export * from "./realtime-state-provider"
|
|
12
12
|
export * from "./realtime-state-receiver"
|
|
13
|
-
export * from "./realtime-
|
|
13
|
+
export * from "./realtime-state-synchronizer"
|
|
14
14
|
// export * from "./realtime-action-synchronizer.txt"
|
|
15
15
|
|
|
16
16
|
export type Socket = {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { IMPLICIT, Subject } from "atom.io/internal"
|
|
2
|
-
import { parseJson, stringifyJson } from "atom.io/json"
|
|
3
2
|
import type { Json } from "atom.io/json"
|
|
4
|
-
|
|
3
|
+
import { parseJson, stringifyJson } from "atom.io/json"
|
|
5
4
|
import { SetRTX } from "atom.io/transceivers/set-rtx"
|
|
6
|
-
|
|
5
|
+
|
|
7
6
|
import type { EventBuffer, Events } from "./custom-socket"
|
|
7
|
+
import { CustomSocket } from "./custom-socket"
|
|
8
8
|
|
|
9
9
|
export class SubjectSocket<
|
|
10
10
|
I extends Events,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type * as AtomIO from "atom.io"
|
|
2
2
|
import {
|
|
3
|
-
IMPLICIT,
|
|
4
3
|
actUponStore,
|
|
5
4
|
findInStore,
|
|
6
5
|
getFromStore,
|
|
7
6
|
getJsonToken,
|
|
7
|
+
IMPLICIT,
|
|
8
8
|
isRootStore,
|
|
9
9
|
subscribeToState,
|
|
10
10
|
subscribeToTransaction,
|
|
@@ -12,10 +12,9 @@ import {
|
|
|
12
12
|
import type { Json, JsonIO } from "atom.io/json"
|
|
13
13
|
import type { ContinuityToken } from "atom.io/realtime"
|
|
14
14
|
|
|
15
|
+
import { findRelationsInStore } from "../../data/src/join"
|
|
15
16
|
import type { ServerConfig, Socket } from "."
|
|
16
17
|
import { socketAtoms, usersOfSockets } from "."
|
|
17
|
-
|
|
18
|
-
import { findRelationsInStore } from "../../data/src/join"
|
|
19
18
|
import {
|
|
20
19
|
redactTransactionUpdateContent,
|
|
21
20
|
userUnacknowledgedQueues,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type * as AtomIO from "atom.io"
|
|
2
2
|
import type { Transceiver } from "atom.io/internal"
|
|
3
3
|
import {
|
|
4
|
-
IMPLICIT,
|
|
5
4
|
findInStore,
|
|
6
5
|
getFromStore,
|
|
7
6
|
getJsonToken,
|
|
8
7
|
getUpdateToken,
|
|
8
|
+
IMPLICIT,
|
|
9
9
|
subscribeToState,
|
|
10
10
|
} from "atom.io/internal"
|
|
11
11
|
import type { Json } from "atom.io/json"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type * as AtomIO from "atom.io"
|
|
2
|
+
import type { Transceiver } from "atom.io/internal"
|
|
2
3
|
import {
|
|
3
|
-
IMPLICIT,
|
|
4
4
|
getFromStore,
|
|
5
5
|
getJsonToken,
|
|
6
6
|
getUpdateToken,
|
|
7
|
+
IMPLICIT,
|
|
7
8
|
subscribeToState,
|
|
8
9
|
} from "atom.io/internal"
|
|
9
|
-
import type { Transceiver } from "atom.io/internal"
|
|
10
10
|
import type { Json } from "atom.io/json"
|
|
11
11
|
|
|
12
12
|
import type { ServerConfig } from "."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { selectorFamily } from "atom.io"
|
|
2
1
|
import type { TransactionUpdate } from "atom.io"
|
|
3
|
-
import {
|
|
2
|
+
import { selectorFamily } from "atom.io"
|
|
3
|
+
import { getJsonToken, getUpdateToken, IMPLICIT } from "atom.io/internal"
|
|
4
4
|
import type { JsonIO } from "atom.io/json"
|
|
5
5
|
import { SyncGroup } from "atom.io/realtime"
|
|
6
6
|
// import { completeUpdateAtoms } from "atom.io/realtime-server"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as AtomIO from "atom.io"
|
|
2
|
-
import {
|
|
2
|
+
import { editRelations, editRelationsInStore, type Loadable } from "atom.io/data"
|
|
3
3
|
import type { UserInRoomMeta } from "atom.io/realtime"
|
|
4
4
|
import { roomIndex, usersInRooms } from "atom.io/realtime"
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as AtomIO from "atom.io"
|
|
2
|
-
import {
|
|
2
|
+
import { getFromStore, IMPLICIT, subscribeToState } from "atom.io/internal"
|
|
3
3
|
import type { Json } from "atom.io/json"
|
|
4
4
|
|
|
5
5
|
import type { ServerConfig } from "."
|