@inditextech/weave-store-azure-web-pubsub 3.4.0 → 3.6.0-SNAPSHOT.112.1

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/client.d.ts CHANGED
@@ -134,6 +134,7 @@ type FetchClient = (input: string | URL | globalThis.Request, init?: RequestInit
134
134
  type FetchInitialState = (doc: Doc) => void;
135
135
  type PersistRoom = (roomId: string, actualState: Uint8Array<ArrayBufferLike>) => Promise<void>;
136
136
  type FetchRoom = (roomId: string) => Promise<Uint8Array | null>;
137
+ type WeaveRoomData = Uint8Array | FetchInitialState;
137
138
  type WeaveStoreAzureWebPubsubEvents = {
138
139
  onConnect: WeaveStoreAzureWebPubsubOnConnectEvent;
139
140
  onConnected: WeaveStoreAzureWebPubsubOnConnectedEvent;
@@ -229,6 +230,7 @@ type WeaveStoreAzureWebPubsubSyncHostOptions = {
229
230
  attemptsLimit: number;
230
231
  };
231
232
  };
233
+
232
234
  //#endregion
233
235
  //#region src/client.d.ts
234
236
  declare class WeaveStoreAzureWebPubSubSyncClient extends Emittery {
@@ -285,16 +287,18 @@ declare class WeaveStoreAzureWebPubsub extends WeaveStore {
285
287
  private roomId;
286
288
  private started;
287
289
  private initialRoomData;
290
+ private actualStatus;
288
291
  protected provider: WeaveStoreAzureWebPubSubSyncClient;
289
292
  protected name: string;
290
293
  protected supportsUndoManager: boolean;
291
294
  protected awarenessCallback: (changes: any) => void;
292
- constructor(initialRoomData: Uint8Array | FetchInitialState | undefined, storeOptions: WeaveStoreOptions, azureWebPubsubOptions: Pick<WeaveStoreAzureWebPubsubOptions, "roomId" | "url"> & Partial<Omit<WeaveStoreAzureWebPubsubOptions, "roomId" | "url">>);
295
+ constructor(initialRoomData: WeaveRoomData | undefined, storeOptions: WeaveStoreOptions, azureWebPubsubOptions: Pick<WeaveStoreAzureWebPubsubOptions, "roomId" | "url"> & Partial<Omit<WeaveStoreAzureWebPubsubOptions, "roomId" | "url">>);
293
296
  setup(): void;
294
297
  private loadRoomInitialData;
295
298
  private init;
296
299
  emitEvent<T>(name: string, payload?: T): void;
297
300
  getClientId(): string | null;
301
+ switchToRoom(roomId: string, roomData: Uint8Array | FetchInitialState | undefined): Promise<void>;
298
302
  connect(extraParams?: Record<string, string>): Promise<void>;
299
303
  disconnect(): void;
300
304
  simulateWebsocketError(): void;
@@ -304,4 +308,4 @@ declare class WeaveStoreAzureWebPubsub extends WeaveStore {
304
308
  }
305
309
 
306
310
  //#endregion
307
- export { FetchClient, FetchInitialState, FetchRoom, Message, MessageData, MessageDataType, MessageHandler, MessageType, PersistRoom, WEAVE_STORE_AZURE_WEB_PUBSUB, WEAVE_STORE_AZURE_WEB_PUBSUB_CONNECTION_STATUS, WEAVE_STORE_AZURE_WEB_PUBSUB_DESTROY_ROOM_STATUS, WEAVE_STORE_AZURE_WEB_PUBSUB_SYNC_CLIENT_DEFAULT_OPTIONS, WEAVE_STORE_AZURE_WEB_PUBSUB_SYNC_HOST_DEFAULT_OPTIONS, WEAVE_STORE_HORIZONTAL_SYNC_HANDLER_CLIENT_TYPE, WeaveAzureWebPubsubSyncHandlerOptions, WeaveStoreAzureWebPubSubSyncClientConnectionStatus, WeaveStoreAzureWebPubSubSyncClientConnectionStatusKeys, WeaveStoreAzureWebPubSubSyncClientOptions, WeaveStoreAzureWebPubSubSyncHostClientConnectOptions, WeaveStoreAzureWebPubsub, WeaveStoreAzureWebPubsubConfig, WeaveStoreAzureWebPubsubEvents, WeaveStoreAzureWebPubsubOnConnectEvent, WeaveStoreAzureWebPubsubOnConnectedEvent, WeaveStoreAzureWebPubsubOnDisconnectedEvent, WeaveStoreAzureWebPubsubOnStoreFetchConnectionUrlEvent, WeaveStoreAzureWebPubsubOnWebsocketCloseEvent, WeaveStoreAzureWebPubsubOnWebsocketErrorEvent, WeaveStoreAzureWebPubsubOnWebsocketJoinGroupEvent, WeaveStoreAzureWebPubsubOnWebsocketMessageEvent, WeaveStoreAzureWebPubsubOnWebsocketOpenEvent, WeaveStoreAzureWebPubsubOnWebsocketReconnectEvent, WeaveStoreAzureWebPubsubOptions, WeaveStoreAzureWebPubsubSyncHandlerDestroyRoomStatus, WeaveStoreAzureWebPubsubSyncHandlerDestroyRoomStatusKeys, WeaveStoreAzureWebPubsubSyncHostOptions };
311
+ export { FetchClient, FetchInitialState, FetchRoom, Message, MessageData, MessageDataType, MessageHandler, MessageType, PersistRoom, WEAVE_STORE_AZURE_WEB_PUBSUB, WEAVE_STORE_AZURE_WEB_PUBSUB_CONNECTION_STATUS, WEAVE_STORE_AZURE_WEB_PUBSUB_DESTROY_ROOM_STATUS, WEAVE_STORE_AZURE_WEB_PUBSUB_SYNC_CLIENT_DEFAULT_OPTIONS, WEAVE_STORE_AZURE_WEB_PUBSUB_SYNC_HOST_DEFAULT_OPTIONS, WEAVE_STORE_HORIZONTAL_SYNC_HANDLER_CLIENT_TYPE, WeaveAzureWebPubsubSyncHandlerOptions, WeaveRoomData, WeaveStoreAzureWebPubSubSyncClientConnectionStatus, WeaveStoreAzureWebPubSubSyncClientConnectionStatusKeys, WeaveStoreAzureWebPubSubSyncClientOptions, WeaveStoreAzureWebPubSubSyncHostClientConnectOptions, WeaveStoreAzureWebPubsub, WeaveStoreAzureWebPubsubConfig, WeaveStoreAzureWebPubsubEvents, WeaveStoreAzureWebPubsubOnConnectEvent, WeaveStoreAzureWebPubsubOnConnectedEvent, WeaveStoreAzureWebPubsubOnDisconnectedEvent, WeaveStoreAzureWebPubsubOnStoreFetchConnectionUrlEvent, WeaveStoreAzureWebPubsubOnWebsocketCloseEvent, WeaveStoreAzureWebPubsubOnWebsocketErrorEvent, WeaveStoreAzureWebPubsubOnWebsocketJoinGroupEvent, WeaveStoreAzureWebPubsubOnWebsocketMessageEvent, WeaveStoreAzureWebPubsubOnWebsocketOpenEvent, WeaveStoreAzureWebPubsubOnWebsocketReconnectEvent, WeaveStoreAzureWebPubsubOptions, WeaveStoreAzureWebPubsubSyncHandlerDestroyRoomStatus, WeaveStoreAzureWebPubsubSyncHandlerDestroyRoomStatusKeys, WeaveStoreAzureWebPubsubSyncHostOptions };
package/dist/client.js CHANGED
@@ -3974,7 +3974,6 @@ var WeaveStoreAzureWebPubSubSyncClient = class extends Emittery {
3974
3974
  if (message.type === MessageType.System) return;
3975
3975
  const messageData = message.data;
3976
3976
  if (messageData.type === "heartbeat") {
3977
- console.log("[Azure Web PubSub] received heartbeat, updating last heartbeat time.");
3978
3977
  this._lastHeartbeatTime = Date.now();
3979
3978
  return;
3980
3979
  }
@@ -4045,7 +4044,6 @@ var WeaveStoreAzureWebPubSubSyncClient = class extends Emittery {
4045
4044
  this._checkHeartbeatId = setInterval(() => {
4046
4045
  const now = Date.now();
4047
4046
  if (now - this._lastHeartbeatTime > this._synClientOptions.heartbeat.checkWindowTimeMs) {
4048
- console.log(`[Azure Web PubSub] heartbeat not received in ${this._synClientOptions.heartbeat.checkWindowTimeMs}ms window, handling it...`);
4049
4047
  this.disconnect();
4050
4048
  this.createWebSocket();
4051
4049
  }
@@ -4147,6 +4145,7 @@ var WeaveStoreAzureWebPubsub = class extends WeaveStore {
4147
4145
  this.roomId = roomId;
4148
4146
  this.initialRoomData = initialRoomData;
4149
4147
  this.started = false;
4148
+ this.actualStatus = WEAVE_STORE_CONNECTION_STATUS.DISCONNECTED;
4150
4149
  this.init();
4151
4150
  }
4152
4151
  setup() {
@@ -4160,7 +4159,8 @@ var WeaveStoreAzureWebPubsub = class extends WeaveStore {
4160
4159
  }
4161
4160
  init() {
4162
4161
  const { url } = this.azureWebPubsubOptions;
4163
- this.provider = new WeaveStoreAzureWebPubSubSyncClient(this, url, this.roomId, this.getDocument(), this.azureWebPubsubOptions.syncClientOptions);
4162
+ const patchedUrl = url.replace("[roomId]", this.roomId);
4163
+ this.provider = new WeaveStoreAzureWebPubSubSyncClient(this, patchedUrl, this.roomId, this.getDocument(), this.azureWebPubsubOptions.syncClientOptions);
4164
4164
  const awareness = this.provider.awareness;
4165
4165
  awareness.on("update", this.handleAwarenessChange.bind(this));
4166
4166
  awareness.on("change", this.handleAwarenessChange.bind(this));
@@ -4172,7 +4172,11 @@ var WeaveStoreAzureWebPubsub = class extends WeaveStore {
4172
4172
  this.handleConnectionStatusChange(WEAVE_STORE_CONNECTION_STATUS.DISCONNECTED);
4173
4173
  });
4174
4174
  this.provider.on("status", (status) => {
4175
- this.handleConnectionStatusChange(status);
4175
+ if (this.actualStatus !== WEAVE_STORE_CONNECTION_STATUS.SWITCHING_ROOM || this.actualStatus === WEAVE_STORE_CONNECTION_STATUS.SWITCHING_ROOM && status === WEAVE_STORE_CONNECTION_STATUS.CONNECTED) {
4176
+ this.handleConnectionStatusChange(status);
4177
+ if (this.actualStatus === WEAVE_STORE_CONNECTION_STATUS.SWITCHING_ROOM && status === WEAVE_STORE_CONNECTION_STATUS.CONNECTED) this.instance.emitEvent("onRoomSwitchingEnd", { room: this.roomId });
4178
+ this.actualStatus = status;
4179
+ }
4176
4180
  if (status === WEAVE_STORE_CONNECTION_STATUS.CONNECTED && !this.started) {
4177
4181
  this.loadRoomInitialData();
4178
4182
  this.started = true;
@@ -4186,9 +4190,23 @@ var WeaveStoreAzureWebPubsub = class extends WeaveStore {
4186
4190
  if (this.provider) return this.provider.getClientId();
4187
4191
  return null;
4188
4192
  }
4193
+ async switchToRoom(roomId, roomData) {
4194
+ this.instance.emitEvent("onRoomSwitchingStart", { room: roomId });
4195
+ this.actualStatus = WEAVE_STORE_CONNECTION_STATUS.SWITCHING_ROOM;
4196
+ this.disconnect();
4197
+ this.restartDocument();
4198
+ await this.instance.switchRoom();
4199
+ this.roomId = roomId;
4200
+ this.initialRoomData = roomData;
4201
+ this.started = false;
4202
+ this.init();
4203
+ this.setup();
4204
+ this.connect();
4205
+ }
4189
4206
  async connect(extraParams) {
4190
4207
  const { fetchClient } = this.azureWebPubsubOptions;
4191
4208
  this.provider.setFetchClient(fetchClient ?? window.fetch);
4209
+ this.instance.emitEvent("onStoreRoomChanged", { room: this.roomId });
4192
4210
  await this.provider.connect(extraParams);
4193
4211
  }
4194
4212
  disconnect() {
package/dist/server.d.ts CHANGED
@@ -42,16 +42,18 @@ declare class WeaveStoreAzureWebPubsub extends WeaveStore {
42
42
  private roomId;
43
43
  private started;
44
44
  private initialRoomData;
45
+ private actualStatus;
45
46
  protected provider: WeaveStoreAzureWebPubSubSyncClient;
46
47
  protected name: string;
47
48
  protected supportsUndoManager: boolean;
48
49
  protected awarenessCallback: (changes: any) => void;
49
- constructor(initialRoomData: Uint8Array | FetchInitialState | undefined, storeOptions: WeaveStoreOptions, azureWebPubsubOptions: Pick<WeaveStoreAzureWebPubsubOptions, "roomId" | "url"> & Partial<Omit<WeaveStoreAzureWebPubsubOptions, "roomId" | "url">>);
50
+ constructor(initialRoomData: WeaveRoomData | undefined, storeOptions: WeaveStoreOptions, azureWebPubsubOptions: Pick<WeaveStoreAzureWebPubsubOptions, "roomId" | "url"> & Partial<Omit<WeaveStoreAzureWebPubsubOptions, "roomId" | "url">>);
50
51
  setup(): void;
51
52
  private loadRoomInitialData;
52
53
  private init;
53
54
  emitEvent<T>(name: string, payload?: T): void;
54
55
  getClientId(): string | null;
56
+ switchToRoom(roomId: string, roomData: Uint8Array | FetchInitialState | undefined): Promise<void>;
55
57
  connect(extraParams?: Record<string, string>): Promise<void>;
56
58
  disconnect(): void;
57
59
  simulateWebsocketError(): void;
@@ -143,6 +145,7 @@ type FetchClient = (input: string | URL | globalThis.Request, init?: RequestInit
143
145
  type FetchInitialState = (doc: Doc) => void;
144
146
  type PersistRoom = (roomId: string, actualState: Uint8Array<ArrayBufferLike>) => Promise<void>;
145
147
  type FetchRoom = (roomId: string) => Promise<Uint8Array | null>;
148
+ type WeaveRoomData = Uint8Array | FetchInitialState;
146
149
  type WeaveStoreAzureWebPubsubEvents = {
147
150
  onConnect: WeaveStoreAzureWebPubsubOnConnectEvent;
148
151
  onConnected: WeaveStoreAzureWebPubsubOnConnectedEvent;
@@ -419,7 +422,8 @@ declare enum MqttDisconnectReasonCode {
419
422
  * Description: The Server does not support Wildcard Subscriptions; the subscription is not accepted.
420
423
  */
421
424
  WildcardSubscriptionsNotSupported = 162,
422
- } //#endregion
425
+ }
426
+ //#endregion
423
427
  //#region src/server/event-handler/enum/mqtt-error-codes/mqtt-v311-connect-return-code.d.ts
424
428
  /**
425
429
  * MQTT 3.1.1 Connect Return Codes.
@@ -1134,4 +1138,4 @@ declare class WeaveAzureWebPubsubServer extends Emittery {
1134
1138
  }
1135
1139
 
1136
1140
  //#endregion
1137
- export { Certificate, ConnectErrorResponse, ConnectRequest, ConnectResponse, ConnectResponseHandler, ConnectedRequest, ConnectionContext, DisconnectedRequest, FetchClient, FetchInitialState, FetchRoom, Message, MessageData, MessageDataType, MessageHandler, MessageType, MqttConnectErrorResponse, MqttConnectErrorResponseProperties, MqttConnectProperties, MqttConnectRequest, MqttConnectResponse, MqttConnectResponseProperties, MqttConnectionContextProperties, MqttDisconnectPacket, MqttDisconnectReasonCode, MqttDisconnectedProperties, MqttDisconnectedRequest, MqttUserProperty, MqttV311ConnectReturnCode, MqttV500ConnectReasonCode, PersistRoom, UserEventRequest, UserEventResponseHandler, WEAVE_STORE_AZURE_WEB_PUBSUB, WEAVE_STORE_AZURE_WEB_PUBSUB_CONNECTION_STATUS, WEAVE_STORE_AZURE_WEB_PUBSUB_DESTROY_ROOM_STATUS, WEAVE_STORE_AZURE_WEB_PUBSUB_SYNC_CLIENT_DEFAULT_OPTIONS, WEAVE_STORE_AZURE_WEB_PUBSUB_SYNC_HOST_DEFAULT_OPTIONS, WEAVE_STORE_HORIZONTAL_SYNC_HANDLER_CLIENT_TYPE, WeaveAzureWebPubsubServer, WeaveAzureWebPubsubSyncHandlerOptions, WeaveStoreAzureWebPubSubSyncClientConnectionStatus, WeaveStoreAzureWebPubSubSyncClientConnectionStatusKeys, WeaveStoreAzureWebPubSubSyncClientOptions, WeaveStoreAzureWebPubSubSyncHost, WeaveStoreAzureWebPubSubSyncHostClientConnectOptions, WeaveStoreAzureWebPubsubConfig, WeaveStoreAzureWebPubsubEvents, WeaveStoreAzureWebPubsubOnConnectEvent, WeaveStoreAzureWebPubsubOnConnectedEvent, WeaveStoreAzureWebPubsubOnDisconnectedEvent, WeaveStoreAzureWebPubsubOnStoreFetchConnectionUrlEvent, WeaveStoreAzureWebPubsubOnWebsocketCloseEvent, WeaveStoreAzureWebPubsubOnWebsocketErrorEvent, WeaveStoreAzureWebPubsubOnWebsocketJoinGroupEvent, WeaveStoreAzureWebPubsubOnWebsocketMessageEvent, WeaveStoreAzureWebPubsubOnWebsocketOpenEvent, WeaveStoreAzureWebPubsubOnWebsocketReconnectEvent, WeaveStoreAzureWebPubsubOptions, WeaveStoreAzureWebPubsubSyncHandlerDestroyRoomStatus, WeaveStoreAzureWebPubsubSyncHandlerDestroyRoomStatusKeys, WeaveStoreAzureWebPubsubSyncHostOptions, WebPubSubClientProtocol, WebPubSubEventHandler, WebPubSubEventHandlerOptions };
1141
+ export { Certificate, ConnectErrorResponse, ConnectRequest, ConnectResponse, ConnectResponseHandler, ConnectedRequest, ConnectionContext, DisconnectedRequest, FetchClient, FetchInitialState, FetchRoom, Message, MessageData, MessageDataType, MessageHandler, MessageType, MqttConnectErrorResponse, MqttConnectErrorResponseProperties, MqttConnectProperties, MqttConnectRequest, MqttConnectResponse, MqttConnectResponseProperties, MqttConnectionContextProperties, MqttDisconnectPacket, MqttDisconnectReasonCode, MqttDisconnectedProperties, MqttDisconnectedRequest, MqttUserProperty, MqttV311ConnectReturnCode, MqttV500ConnectReasonCode, PersistRoom, UserEventRequest, UserEventResponseHandler, WEAVE_STORE_AZURE_WEB_PUBSUB, WEAVE_STORE_AZURE_WEB_PUBSUB_CONNECTION_STATUS, WEAVE_STORE_AZURE_WEB_PUBSUB_DESTROY_ROOM_STATUS, WEAVE_STORE_AZURE_WEB_PUBSUB_SYNC_CLIENT_DEFAULT_OPTIONS, WEAVE_STORE_AZURE_WEB_PUBSUB_SYNC_HOST_DEFAULT_OPTIONS, WEAVE_STORE_HORIZONTAL_SYNC_HANDLER_CLIENT_TYPE, WeaveAzureWebPubsubServer, WeaveAzureWebPubsubSyncHandlerOptions, WeaveRoomData, WeaveStoreAzureWebPubSubSyncClientConnectionStatus, WeaveStoreAzureWebPubSubSyncClientConnectionStatusKeys, WeaveStoreAzureWebPubSubSyncClientOptions, WeaveStoreAzureWebPubSubSyncHost, WeaveStoreAzureWebPubSubSyncHostClientConnectOptions, WeaveStoreAzureWebPubsubConfig, WeaveStoreAzureWebPubsubEvents, WeaveStoreAzureWebPubsubOnConnectEvent, WeaveStoreAzureWebPubsubOnConnectedEvent, WeaveStoreAzureWebPubsubOnDisconnectedEvent, WeaveStoreAzureWebPubsubOnStoreFetchConnectionUrlEvent, WeaveStoreAzureWebPubsubOnWebsocketCloseEvent, WeaveStoreAzureWebPubsubOnWebsocketErrorEvent, WeaveStoreAzureWebPubsubOnWebsocketJoinGroupEvent, WeaveStoreAzureWebPubsubOnWebsocketMessageEvent, WeaveStoreAzureWebPubsubOnWebsocketOpenEvent, WeaveStoreAzureWebPubsubOnWebsocketReconnectEvent, WeaveStoreAzureWebPubsubOptions, WeaveStoreAzureWebPubsubSyncHandlerDestroyRoomStatus, WeaveStoreAzureWebPubsubSyncHandlerDestroyRoomStatusKeys, WeaveStoreAzureWebPubsubSyncHostOptions, WebPubSubClientProtocol, WebPubSubEventHandler, WebPubSubEventHandlerOptions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inditextech/weave-store-azure-web-pubsub",
3
- "version": "3.4.0",
3
+ "version": "3.6.0-SNAPSHOT.112.1",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>",
@@ -57,8 +57,8 @@
57
57
  "dependencies": {
58
58
  "@azure/identity": "4.10.2",
59
59
  "@azure/web-pubsub": "1.2.0",
60
- "@inditextech/weave-types": "3.4.0",
61
- "@inditextech/weave-sdk": "3.4.0",
60
+ "@inditextech/weave-types": "3.6.0-SNAPSHOT.112.1",
61
+ "@inditextech/weave-sdk": "3.6.0-SNAPSHOT.112.1",
62
62
  "@syncedstore/core": "0.6.0",
63
63
  "buffer": "6.0.3",
64
64
  "reconnecting-websocket": "4.4.0",