@verdant-web/store 5.0.2 → 5.2.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/dist/bundle/index.js +8 -8
- package/dist/bundle/index.js.map +3 -3
- package/dist/esm/client/Client.js +1 -1
- package/dist/esm/client/Client.js.map +1 -1
- package/dist/esm/entities/DocumentManager.d.ts +13 -2
- package/dist/esm/entities/DocumentManager.js +14 -2
- package/dist/esm/entities/DocumentManager.js.map +1 -1
- package/dist/esm/entities/types.d.ts +2 -2
- package/dist/esm/persistence/MessageCreator.d.ts +2 -1
- package/dist/esm/persistence/MessageCreator.js +8 -0
- package/dist/esm/persistence/MessageCreator.js.map +1 -1
- package/dist/esm/sync/Sync.d.ts +3 -3
- package/dist/esm/sync/WebSocketSync.d.ts +2 -1
- package/dist/esm/sync/WebSocketSync.js +11 -1
- package/dist/esm/sync/WebSocketSync.js.map +1 -1
- package/package.json +2 -2
- package/src/client/Client.ts +1 -1
- package/src/entities/DocumentManager.ts +23 -7
- package/src/entities/types.ts +6 -2
- package/src/persistence/MessageCreator.ts +12 -0
- package/src/sync/Sync.ts +2 -2
- package/src/sync/WebSocketSync.ts +14 -1
|
@@ -108,7 +108,7 @@ export class Client extends EventSubscriber {
|
|
|
108
108
|
if (this.context.closeLock) {
|
|
109
109
|
await this.context.closeLock;
|
|
110
110
|
}
|
|
111
|
-
this.sync.stop();
|
|
111
|
+
await this.sync.stop();
|
|
112
112
|
this.sync.destroy();
|
|
113
113
|
// this step does have the potential to flush
|
|
114
114
|
// changes to storage, so don't close metadata db yet
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/client/Client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/client/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AuthorizationKey, StorageSchema } from '@verdant-web/common';
|
|
2
2
|
import { EntityStore } from '../entities/EntityStore.js';
|
|
3
3
|
import { ObjectEntity } from '../index.js';
|
|
4
4
|
/**
|
|
@@ -27,9 +27,20 @@ export declare class DocumentManager<Schema extends StorageSchema<any>> {
|
|
|
27
27
|
deleteAllFromCollection: (collection: string, ids: string[], options?: {
|
|
28
28
|
undoable?: boolean;
|
|
29
29
|
}) => Promise<void>;
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Creates a clone of the given document entity, returning a new
|
|
32
|
+
* document entity in the given collection. The primary key of
|
|
33
|
+
* the original document will be regenerated automatically and
|
|
34
|
+
* access will be copied from the original. Both can be overridden
|
|
35
|
+
* explicitly via options.
|
|
36
|
+
*/
|
|
37
|
+
clone: <TInit>(collection: string, entity: ObjectEntity<TInit, any>, options?: {
|
|
31
38
|
undoable?: boolean;
|
|
32
39
|
access?: AuthorizationKey;
|
|
33
40
|
primaryKey?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Modify the data before cloning
|
|
43
|
+
*/
|
|
44
|
+
update?: (init: TInit) => TInit;
|
|
34
45
|
}) => Promise<any>;
|
|
35
46
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addFieldDefaults,
|
|
1
|
+
import { addFieldDefaults, assert, constrainEntity, createOid, isRootOid, } from '@verdant-web/common';
|
|
2
2
|
/**
|
|
3
3
|
* Exposes functionality for creating documents,
|
|
4
4
|
* the only mutation which is available as an entry
|
|
@@ -53,6 +53,13 @@ export class DocumentManager {
|
|
|
53
53
|
this.deleteAllFromCollection = async (collection, ids, options = {}) => {
|
|
54
54
|
return this.entities.deleteAll(ids.map((primaryKey) => createOid(collection, primaryKey)), options);
|
|
55
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* Creates a clone of the given document entity, returning a new
|
|
58
|
+
* document entity in the given collection. The primary key of
|
|
59
|
+
* the original document will be regenerated automatically and
|
|
60
|
+
* access will be copied from the original. Both can be overridden
|
|
61
|
+
* explicitly via options.
|
|
62
|
+
*/
|
|
56
63
|
this.clone = async (collection, entity, options = {}) => {
|
|
57
64
|
if (!isRootOid(entity.uid)) {
|
|
58
65
|
throw new Error('Cannot clone non-root documents');
|
|
@@ -70,7 +77,12 @@ export class DocumentManager {
|
|
|
70
77
|
}
|
|
71
78
|
snapshot[collectionSchema.primaryKey] = options.primaryKey;
|
|
72
79
|
}
|
|
73
|
-
|
|
80
|
+
// copy authorization of original unless user supplied override
|
|
81
|
+
if (entity.access && !options.access) {
|
|
82
|
+
options.access = entity.access;
|
|
83
|
+
}
|
|
84
|
+
const final = options.update ? options.update(snapshot) : snapshot;
|
|
85
|
+
return this.create(collection, final, options);
|
|
74
86
|
};
|
|
75
87
|
}
|
|
76
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentManager.js","sourceRoot":"","sources":["../../../src/entities/DocumentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"DocumentManager.js","sourceRoot":"","sources":["../../../src/entities/DocumentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ObjectIdentifier, StorageFieldSchema } from '@verdant-web/common';
|
|
1
|
+
import { AuthorizationKey, ObjectIdentifier, StorageFieldSchema } from '@verdant-web/common';
|
|
2
2
|
import type { Entity } from './Entity.js';
|
|
3
3
|
export type AccessibleEntityProperty<T> = T extends Array<any> ? number : T extends object ? keyof T : never;
|
|
4
4
|
export type DataFromInit<Init> = Init extends {
|
|
@@ -78,7 +78,7 @@ export interface BaseEntity<Init, Value extends BaseEntityValue, Snapshot = Data
|
|
|
78
78
|
/** If true, this Entity has authorization rules applied to it. */
|
|
79
79
|
readonly isAuthorized: boolean;
|
|
80
80
|
/** The authorization configuration string applied to this entity. */
|
|
81
|
-
readonly access:
|
|
81
|
+
readonly access: AuthorizationKey | undefined;
|
|
82
82
|
readonly invalid: boolean;
|
|
83
83
|
/** The Verdant store namespace which contains this object */
|
|
84
84
|
readonly namespace: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AckMessage, HeartbeatMessage, OperationMessage, PresenceUpdateMessage, SyncMessage, VerdantInternalPresence } from '@verdant-web/common';
|
|
1
|
+
import { AckMessage, DisconnectingMessage, HeartbeatMessage, OperationMessage, PresenceUpdateMessage, SyncMessage, VerdantInternalPresence } from '@verdant-web/common';
|
|
2
2
|
import { Context } from '../context/context.js';
|
|
3
3
|
import { PersistenceMetadataDb } from './interfaces.js';
|
|
4
4
|
import type { PersistenceMetadata } from './PersistenceMetadata.js';
|
|
@@ -20,4 +20,5 @@ export declare class MessageCreator {
|
|
|
20
20
|
}) => Promise<PresenceUpdateMessage>;
|
|
21
21
|
createHeartbeat: () => Promise<HeartbeatMessage>;
|
|
22
22
|
createAck: (nonce: string) => Promise<AckMessage>;
|
|
23
|
+
createDisconnecting: (reason: string) => Promise<DisconnectingMessage>;
|
|
23
24
|
}
|
|
@@ -101,6 +101,14 @@ export class MessageCreator {
|
|
|
101
101
|
nonce,
|
|
102
102
|
};
|
|
103
103
|
};
|
|
104
|
+
this.createDisconnecting = async (reason) => {
|
|
105
|
+
const localReplicaInfo = await this.meta.getLocalReplica();
|
|
106
|
+
return {
|
|
107
|
+
type: 'disconnecting',
|
|
108
|
+
replicaId: localReplicaInfo.id,
|
|
109
|
+
reason,
|
|
110
|
+
};
|
|
111
|
+
};
|
|
104
112
|
}
|
|
105
113
|
}
|
|
106
114
|
//# sourceMappingURL=MessageCreator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageCreator.js","sourceRoot":"","sources":["../../../src/persistence/MessageCreator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MessageCreator.js","sourceRoot":"","sources":["../../../src/persistence/MessageCreator.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/sync/Sync.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export interface SyncTransport extends EventSubscriber<SyncTransportEvents> {
|
|
|
20
20
|
send(message: ClientMessage): void;
|
|
21
21
|
start(): Promise<void>;
|
|
22
22
|
ignoreIncoming(): void;
|
|
23
|
-
stop(): void;
|
|
23
|
+
stop(): Promise<void> | void;
|
|
24
24
|
destroy(): void;
|
|
25
25
|
reconnect(): void;
|
|
26
26
|
readonly isConnected: boolean;
|
|
@@ -35,7 +35,7 @@ export interface Sync<Presence = any, Profile = any> extends EventSubscriber<Syn
|
|
|
35
35
|
readonly presence: PresenceManager<Profile, Presence>;
|
|
36
36
|
send(message: ClientMessage): void;
|
|
37
37
|
start(): Promise<void>;
|
|
38
|
-
stop(): void;
|
|
38
|
+
stop(): Promise<void> | void;
|
|
39
39
|
ignoreIncoming(): void;
|
|
40
40
|
destroy(): void;
|
|
41
41
|
reconnect(): void;
|
|
@@ -166,7 +166,7 @@ export declare class ServerSync<Presence = any, Profile = any> extends EventSubs
|
|
|
166
166
|
getFile: (id: string) => Promise<FilePullResult>;
|
|
167
167
|
private getSyncStartPromise;
|
|
168
168
|
start: () => Promise<void>;
|
|
169
|
-
stop: () => void
|
|
169
|
+
stop: () => void | Promise<void>;
|
|
170
170
|
ignoreIncoming(): void;
|
|
171
171
|
destroy: () => void;
|
|
172
172
|
reconnect: () => void;
|
|
@@ -34,9 +34,10 @@ export declare class WebSocketSync extends EventSubscriber<SyncTransportEvents>
|
|
|
34
34
|
reconnect: () => void;
|
|
35
35
|
private canSkipSyncWait;
|
|
36
36
|
send: (message: ClientMessage) => void;
|
|
37
|
+
sendDisconnecting: (reason?: string) => Promise<void>;
|
|
37
38
|
destroy: () => void;
|
|
38
39
|
start: () => Promise<void>;
|
|
39
|
-
stop: () => void
|
|
40
|
+
stop: () => Promise<void>;
|
|
40
41
|
ignoreIncoming(): void;
|
|
41
42
|
get isConnected(): boolean;
|
|
42
43
|
get status(): "active" | "paused";
|
|
@@ -121,6 +121,9 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
121
121
|
this.ctx.log('error', 'Sync socket error', event, event.target);
|
|
122
122
|
if (this.disposed)
|
|
123
123
|
return;
|
|
124
|
+
// this could be an auth error which requires us to get a new token
|
|
125
|
+
// so clearing the endpoint cache to force a refresh of the token too
|
|
126
|
+
this.endpointProvider.clearCache();
|
|
124
127
|
this.reconnectScheduler.next();
|
|
125
128
|
this.ctx.log('info', `Attempting reconnect to websocket sync`);
|
|
126
129
|
};
|
|
@@ -191,6 +194,9 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
191
194
|
this.syncQueue.push(message);
|
|
192
195
|
}
|
|
193
196
|
};
|
|
197
|
+
this.sendDisconnecting = async (reason = 'client-shutdown') => {
|
|
198
|
+
return this.send(await (await this.ctx.meta).messageCreator.createDisconnecting(reason));
|
|
199
|
+
};
|
|
194
200
|
this.destroy = () => {
|
|
195
201
|
this.dispose();
|
|
196
202
|
this.stop();
|
|
@@ -202,8 +208,9 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
202
208
|
await this.initializeSocket();
|
|
203
209
|
this._status = 'active';
|
|
204
210
|
};
|
|
205
|
-
this.stop = () => {
|
|
211
|
+
this.stop = async () => {
|
|
206
212
|
var _a, _b, _c;
|
|
213
|
+
await this.sendDisconnecting();
|
|
207
214
|
(_a = this.socket) === null || _a === void 0 ? void 0 : _a.removeEventListener('message', this.onMessage);
|
|
208
215
|
(_b = this.socket) === null || _b === void 0 ? void 0 : _b.removeEventListener('close', this.onClose);
|
|
209
216
|
if (((_c = this.socket) === null || _c === void 0 ? void 0 : _c.readyState) === WEBSOCKET_OPEN) {
|
|
@@ -217,6 +224,9 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
217
224
|
this.presence = presence;
|
|
218
225
|
this.reconnectScheduler.subscribe('trigger', this.initializeSocket);
|
|
219
226
|
this.heartbeat.subscribe('beat', this.sendHeartbeat);
|
|
227
|
+
window.addEventListener('beforeunload', () => {
|
|
228
|
+
return this.sendDisconnecting();
|
|
229
|
+
});
|
|
220
230
|
}
|
|
221
231
|
get hasSynced() {
|
|
222
232
|
return this.synced;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketSync.js","sourceRoot":"","sources":["../../../src/sync/WebSocketSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,eAAe,GAEf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,MAAM,OAAO,aACZ,SAAQ,eAAoC;IA0B5C,YAAY,EACX,gBAAgB,EAChB,GAAG,EACH,QAAQ,GAKR;QACA,KAAK,EAAE,CAAC;QA/BD,WAAM,GAAqB,IAAI,CAAC;QACxC,iDAAiD;QACzC,iBAAY,GAAoB,EAAE,CAAC;QAC3C,0CAA0C;QAClC,cAAS,GAAoB,EAAE,CAAC;QACxC,sCAAsC;QAC9B,kBAAa,GAAoB,EAAE,CAAC;QAEpC,YAAO,GAAwB,QAAQ,CAAC;QACxC,WAAM,GAAG,KAAK,CAAC;QACf,mBAAc,GAAG,KAAK,CAAC;QACvB,oBAAe,GAAG,KAAK,CAAC;QAEvB,SAAI,GAAG,UAAU,CAAC;QAGnB,cAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAE5B,uBAAkB,GAAG,IAAI,gBAAgB,CAChD,IAAI,OAAO,CAAC,IAAK,EAAE,KAAM,EAAE,GAAG,CAAC,CAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"WebSocketSync.js","sourceRoot":"","sources":["../../../src/sync/WebSocketSync.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdant-web/store",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"access": "public",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"jszip": "^3.10.1",
|
|
35
35
|
"jwt-decode": "^3.1.2",
|
|
36
36
|
"weak-event": "^2.0.5",
|
|
37
|
-
"@verdant-web/common": "3.
|
|
37
|
+
"@verdant-web/common": "3.1.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "20.10.5",
|
package/src/client/Client.ts
CHANGED
|
@@ -316,7 +316,7 @@ export class Client<Presence = any, Profile = any> extends EventSubscriber<{
|
|
|
316
316
|
if (this.context.closeLock) {
|
|
317
317
|
await this.context.closeLock;
|
|
318
318
|
}
|
|
319
|
-
this.sync.stop();
|
|
319
|
+
await this.sync.stop();
|
|
320
320
|
this.sync.destroy();
|
|
321
321
|
// this step does have the potential to flush
|
|
322
322
|
// changes to storage, so don't close metadata db yet
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
addFieldDefaults,
|
|
3
|
-
constrainEntity,
|
|
4
3
|
assert,
|
|
4
|
+
AuthorizationKey,
|
|
5
|
+
constrainEntity,
|
|
5
6
|
createOid,
|
|
7
|
+
isRootOid,
|
|
6
8
|
SchemaCollection,
|
|
7
9
|
StorageCollectionSchema,
|
|
8
10
|
StorageDocument,
|
|
9
11
|
StorageSchema,
|
|
10
|
-
isRootOid,
|
|
11
|
-
AuthorizationKey,
|
|
12
12
|
} from '@verdant-web/common';
|
|
13
13
|
import { EntityCreateOptions, EntityStore } from '../entities/EntityStore.js';
|
|
14
14
|
import { ObjectEntity } from '../index.js';
|
|
@@ -119,20 +119,31 @@ export class DocumentManager<Schema extends StorageSchema<any>> {
|
|
|
119
119
|
);
|
|
120
120
|
};
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Creates a clone of the given document entity, returning a new
|
|
124
|
+
* document entity in the given collection. The primary key of
|
|
125
|
+
* the original document will be regenerated automatically and
|
|
126
|
+
* access will be copied from the original. Both can be overridden
|
|
127
|
+
* explicitly via options.
|
|
128
|
+
*/
|
|
129
|
+
clone = async <TInit>(
|
|
123
130
|
collection: string,
|
|
124
|
-
entity: ObjectEntity<
|
|
131
|
+
entity: ObjectEntity<TInit, any>,
|
|
125
132
|
options: {
|
|
126
133
|
undoable?: boolean;
|
|
127
134
|
access?: AuthorizationKey;
|
|
128
135
|
primaryKey?: string;
|
|
136
|
+
/**
|
|
137
|
+
* Modify the data before cloning
|
|
138
|
+
*/
|
|
139
|
+
update?: (init: TInit) => TInit;
|
|
129
140
|
} = {},
|
|
130
141
|
) => {
|
|
131
142
|
if (!isRootOid(entity.uid)) {
|
|
132
143
|
throw new Error('Cannot clone non-root documents');
|
|
133
144
|
}
|
|
134
145
|
// take the entity snapshot
|
|
135
|
-
const snapshot = entity.getSnapshot();
|
|
146
|
+
const snapshot = entity.getSnapshot() as any;
|
|
136
147
|
// remove the primary key
|
|
137
148
|
const collectionSchema = this.schema.collections[collection];
|
|
138
149
|
delete snapshot[collectionSchema.primaryKey];
|
|
@@ -146,6 +157,11 @@ export class DocumentManager<Schema extends StorageSchema<any>> {
|
|
|
146
157
|
}
|
|
147
158
|
snapshot[collectionSchema.primaryKey] = options.primaryKey;
|
|
148
159
|
}
|
|
149
|
-
|
|
160
|
+
// copy authorization of original unless user supplied override
|
|
161
|
+
if (entity.access && !options.access) {
|
|
162
|
+
options.access = entity.access;
|
|
163
|
+
}
|
|
164
|
+
const final = options.update ? options.update(snapshot) : snapshot;
|
|
165
|
+
return this.create(collection, final, options);
|
|
150
166
|
};
|
|
151
167
|
}
|
package/src/entities/types.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
AuthorizationKey,
|
|
3
|
+
ObjectIdentifier,
|
|
4
|
+
StorageFieldSchema,
|
|
5
|
+
} from '@verdant-web/common';
|
|
2
6
|
import type { Entity } from './Entity.js';
|
|
3
7
|
|
|
4
8
|
export type AccessibleEntityProperty<T> =
|
|
@@ -112,7 +116,7 @@ export interface BaseEntity<
|
|
|
112
116
|
/** If true, this Entity has authorization rules applied to it. */
|
|
113
117
|
readonly isAuthorized: boolean;
|
|
114
118
|
/** The authorization configuration string applied to this entity. */
|
|
115
|
-
readonly access:
|
|
119
|
+
readonly access: AuthorizationKey | undefined;
|
|
116
120
|
readonly invalid: boolean;
|
|
117
121
|
/** The Verdant store namespace which contains this object */
|
|
118
122
|
readonly namespace: string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AckMessage,
|
|
3
|
+
DisconnectingMessage,
|
|
3
4
|
DocumentBaseline,
|
|
4
5
|
getOidRoot,
|
|
5
6
|
HeartbeatMessage,
|
|
@@ -155,4 +156,15 @@ export class MessageCreator {
|
|
|
155
156
|
nonce,
|
|
156
157
|
};
|
|
157
158
|
};
|
|
159
|
+
|
|
160
|
+
createDisconnecting = async (
|
|
161
|
+
reason: string,
|
|
162
|
+
): Promise<DisconnectingMessage> => {
|
|
163
|
+
const localReplicaInfo = await this.meta.getLocalReplica();
|
|
164
|
+
return {
|
|
165
|
+
type: 'disconnecting',
|
|
166
|
+
replicaId: localReplicaInfo.id,
|
|
167
|
+
reason,
|
|
168
|
+
};
|
|
169
|
+
};
|
|
158
170
|
}
|
package/src/sync/Sync.ts
CHANGED
|
@@ -43,7 +43,7 @@ export interface SyncTransport extends EventSubscriber<SyncTransportEvents> {
|
|
|
43
43
|
|
|
44
44
|
start(): Promise<void>;
|
|
45
45
|
ignoreIncoming(): void;
|
|
46
|
-
stop(): void;
|
|
46
|
+
stop(): Promise<void> | void;
|
|
47
47
|
|
|
48
48
|
destroy(): void;
|
|
49
49
|
|
|
@@ -63,7 +63,7 @@ export interface Sync<Presence = any, Profile = any>
|
|
|
63
63
|
readonly presence: PresenceManager<Profile, Presence>;
|
|
64
64
|
send(message: ClientMessage): void;
|
|
65
65
|
start(): Promise<void>;
|
|
66
|
-
stop(): void;
|
|
66
|
+
stop(): Promise<void> | void;
|
|
67
67
|
ignoreIncoming(): void;
|
|
68
68
|
destroy(): void;
|
|
69
69
|
reconnect(): void;
|
|
@@ -53,6 +53,9 @@ export class WebSocketSync
|
|
|
53
53
|
|
|
54
54
|
this.reconnectScheduler.subscribe('trigger', this.initializeSocket);
|
|
55
55
|
this.heartbeat.subscribe('beat', this.sendHeartbeat);
|
|
56
|
+
window.addEventListener('beforeunload', () => {
|
|
57
|
+
return this.sendDisconnecting();
|
|
58
|
+
});
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
get hasSynced() {
|
|
@@ -183,6 +186,9 @@ export class WebSocketSync
|
|
|
183
186
|
private onError = (event: Event) => {
|
|
184
187
|
this.ctx.log('error', 'Sync socket error', event, event.target);
|
|
185
188
|
if (this.disposed) return;
|
|
189
|
+
// this could be an auth error which requires us to get a new token
|
|
190
|
+
// so clearing the endpoint cache to force a refresh of the token too
|
|
191
|
+
this.endpointProvider.clearCache();
|
|
186
192
|
this.reconnectScheduler.next();
|
|
187
193
|
|
|
188
194
|
this.ctx.log('info', `Attempting reconnect to websocket sync`);
|
|
@@ -286,6 +292,12 @@ export class WebSocketSync
|
|
|
286
292
|
}
|
|
287
293
|
};
|
|
288
294
|
|
|
295
|
+
sendDisconnecting = async (reason = 'client-shutdown') => {
|
|
296
|
+
return this.send(
|
|
297
|
+
await (await this.ctx.meta).messageCreator.createDisconnecting(reason),
|
|
298
|
+
);
|
|
299
|
+
};
|
|
300
|
+
|
|
289
301
|
destroy = () => {
|
|
290
302
|
this.dispose();
|
|
291
303
|
this.stop();
|
|
@@ -299,7 +311,8 @@ export class WebSocketSync
|
|
|
299
311
|
this._status = 'active';
|
|
300
312
|
};
|
|
301
313
|
|
|
302
|
-
stop = () => {
|
|
314
|
+
stop = async () => {
|
|
315
|
+
await this.sendDisconnecting();
|
|
303
316
|
this.socket?.removeEventListener('message', this.onMessage);
|
|
304
317
|
this.socket?.removeEventListener('close', this.onClose);
|
|
305
318
|
if (this.socket?.readyState === WEBSOCKET_OPEN) {
|