@inditextech/weave-store-azure-web-pubsub 0.40.2 → 0.42.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/client.cjs CHANGED
@@ -1426,9 +1426,9 @@ let MessageDataType = /* @__PURE__ */ function(MessageDataType$1) {
1426
1426
  return MessageDataType$1;
1427
1427
  }({});
1428
1428
  const messageHandlers = [];
1429
- messageHandlers[messageSyncStep1] = (encoder, decoder, client, emitSynced, messageType) => {
1429
+ messageHandlers[messageSyncStep1] = (encoder, decoder, client, clientId, emitSynced, messageType) => {
1430
1430
  writeVarUint(encoder, messageType);
1431
- const syncMessageType = readSyncMessage(decoder, encoder, client.doc, client);
1431
+ const syncMessageType = readSyncMessage(decoder, encoder, client.doc, clientId);
1432
1432
  if (emitSynced && syncMessageType === messageYjsSyncStep2 && !client.synced) client.synced = true;
1433
1433
  };
1434
1434
  messageHandlers[messageQueryAwareness] = (encoder, _, client) => {
@@ -1438,12 +1438,12 @@ messageHandlers[messageQueryAwareness] = (encoder, _, client) => {
1438
1438
  messageHandlers[messageAwareness] = (_, decoder, client) => {
1439
1439
  applyAwarenessUpdate(client.awareness, readVarUint8Array(decoder), client);
1440
1440
  };
1441
- const readMessage = (client, buf, emitSynced) => {
1441
+ const readMessage = (client, buf, emitSynced, clientId) => {
1442
1442
  const decoder = createDecoder(buf);
1443
1443
  const encoder = createEncoder();
1444
1444
  const messageType = readVarUint(decoder);
1445
1445
  const messageHandler = messageHandlers[messageType];
1446
- if (messageHandler) messageHandler(encoder, decoder, client, emitSynced, messageType);
1446
+ if (messageHandler) messageHandler(encoder, decoder, client, clientId, emitSynced, messageType);
1447
1447
  else throw new Error(`unable to handle message with type: ${messageType}`);
1448
1448
  return encoder;
1449
1449
  };
@@ -1481,6 +1481,10 @@ var WeaveStoreAzureWebPubSubSyncClient = class extends Emittery {
1481
1481
  const encoder = createEncoder();
1482
1482
  writeVarUint(encoder, messageSyncStep1);
1483
1483
  writeUpdate(encoder, update);
1484
+ if (origin) {
1485
+ const actualStateJSON = this.doc.getMap("weave").toJSON();
1486
+ console.log(`State update from: ${origin}`, { actualStateJSON });
1487
+ }
1484
1488
  sendToControlGroup(this, topic, MessageDataType.Sync, toUint8Array(encoder));
1485
1489
  }
1486
1490
  };
@@ -1509,6 +1513,9 @@ var WeaveStoreAzureWebPubSubSyncClient = class extends Emittery {
1509
1513
  get id() {
1510
1514
  return this._uuid;
1511
1515
  }
1516
+ getClientId() {
1517
+ return this.id;
1518
+ }
1512
1519
  setupResyncInterval() {
1513
1520
  if (this._options.resyncInterval > 0) this._resyncInterval = setInterval(() => {
1514
1521
  if (this._ws && this._wsConnected) {
@@ -1592,7 +1599,7 @@ var WeaveStoreAzureWebPubSubSyncClient = class extends Emittery {
1592
1599
  const messageData = message.data;
1593
1600
  if (messageData.t !== void 0 && messageData.t !== this._uuid) return;
1594
1601
  const buf = buffer.Buffer.from(messageData.c, "base64");
1595
- const encoder = readMessage(this, buf, true);
1602
+ const encoder = readMessage(this, buf, true, messageData.f);
1596
1603
  if (length$1(encoder) > 1) sendToControlGroup(this, this.topic, MessageDataType.Sync, toUint8Array(encoder));
1597
1604
  };
1598
1605
  websocket.onclose = () => {
@@ -1688,6 +1695,10 @@ var WeaveStoreAzureWebPubsub = class extends __inditextech_weave_sdk.WeaveStore
1688
1695
  emitEvent(name, payload) {
1689
1696
  this.instance.emitEvent(name, payload);
1690
1697
  }
1698
+ getClientId() {
1699
+ if (this.provider) return this.provider.getClientId();
1700
+ return null;
1701
+ }
1691
1702
  async connect() {
1692
1703
  const { fetchClient } = this.azureWebPubsubOptions;
1693
1704
  const awareness = this.provider.awareness;
package/dist/client.d.cts CHANGED
@@ -86,6 +86,7 @@ declare class WeaveStoreAzureWebPubSubSyncClient extends Emittery {
86
86
  set synced(state: boolean);
87
87
  get ws(): ReconnectingWebSocket | null;
88
88
  get id(): string;
89
+ getClientId(): string;
89
90
  setupResyncInterval(): void;
90
91
  destroy(): void;
91
92
  stop(): void;
@@ -104,6 +105,7 @@ declare class WeaveStoreAzureWebPubsub extends WeaveStore {
104
105
  constructor(storeOptions: WeaveStoreOptions, azureWebPubsubOptions: WeaveStoreAzureWebPubsubOptions);
105
106
  private init;
106
107
  emitEvent<T>(name: string, payload?: T): void;
108
+ getClientId(): string | null;
107
109
  connect(): Promise<void>;
108
110
  disconnect(): void;
109
111
  handleAwarenessChange(emit?: boolean): void;
package/dist/client.d.ts CHANGED
@@ -86,6 +86,7 @@ declare class WeaveStoreAzureWebPubSubSyncClient extends Emittery {
86
86
  set synced(state: boolean);
87
87
  get ws(): ReconnectingWebSocket | null;
88
88
  get id(): string;
89
+ getClientId(): string;
89
90
  setupResyncInterval(): void;
90
91
  destroy(): void;
91
92
  stop(): void;
@@ -104,6 +105,7 @@ declare class WeaveStoreAzureWebPubsub extends WeaveStore {
104
105
  constructor(storeOptions: WeaveStoreOptions, azureWebPubsubOptions: WeaveStoreAzureWebPubsubOptions);
105
106
  private init;
106
107
  emitEvent<T>(name: string, payload?: T): void;
108
+ getClientId(): string | null;
107
109
  connect(): Promise<void>;
108
110
  disconnect(): void;
109
111
  handleAwarenessChange(emit?: boolean): void;
package/dist/client.js CHANGED
@@ -1403,9 +1403,9 @@ let MessageDataType = /* @__PURE__ */ function(MessageDataType$1) {
1403
1403
  return MessageDataType$1;
1404
1404
  }({});
1405
1405
  const messageHandlers = [];
1406
- messageHandlers[messageSyncStep1] = (encoder, decoder, client, emitSynced, messageType) => {
1406
+ messageHandlers[messageSyncStep1] = (encoder, decoder, client, clientId, emitSynced, messageType) => {
1407
1407
  writeVarUint(encoder, messageType);
1408
- const syncMessageType = readSyncMessage(decoder, encoder, client.doc, client);
1408
+ const syncMessageType = readSyncMessage(decoder, encoder, client.doc, clientId);
1409
1409
  if (emitSynced && syncMessageType === messageYjsSyncStep2 && !client.synced) client.synced = true;
1410
1410
  };
1411
1411
  messageHandlers[messageQueryAwareness] = (encoder, _, client) => {
@@ -1415,12 +1415,12 @@ messageHandlers[messageQueryAwareness] = (encoder, _, client) => {
1415
1415
  messageHandlers[messageAwareness] = (_, decoder, client) => {
1416
1416
  applyAwarenessUpdate(client.awareness, readVarUint8Array(decoder), client);
1417
1417
  };
1418
- const readMessage = (client, buf, emitSynced) => {
1418
+ const readMessage = (client, buf, emitSynced, clientId) => {
1419
1419
  const decoder = createDecoder(buf);
1420
1420
  const encoder = createEncoder();
1421
1421
  const messageType = readVarUint(decoder);
1422
1422
  const messageHandler = messageHandlers[messageType];
1423
- if (messageHandler) messageHandler(encoder, decoder, client, emitSynced, messageType);
1423
+ if (messageHandler) messageHandler(encoder, decoder, client, clientId, emitSynced, messageType);
1424
1424
  else throw new Error(`unable to handle message with type: ${messageType}`);
1425
1425
  return encoder;
1426
1426
  };
@@ -1458,6 +1458,10 @@ var WeaveStoreAzureWebPubSubSyncClient = class extends Emittery {
1458
1458
  const encoder = createEncoder();
1459
1459
  writeVarUint(encoder, messageSyncStep1);
1460
1460
  writeUpdate(encoder, update);
1461
+ if (origin) {
1462
+ const actualStateJSON = this.doc.getMap("weave").toJSON();
1463
+ console.log(`State update from: ${origin}`, { actualStateJSON });
1464
+ }
1461
1465
  sendToControlGroup(this, topic, MessageDataType.Sync, toUint8Array(encoder));
1462
1466
  }
1463
1467
  };
@@ -1486,6 +1490,9 @@ var WeaveStoreAzureWebPubSubSyncClient = class extends Emittery {
1486
1490
  get id() {
1487
1491
  return this._uuid;
1488
1492
  }
1493
+ getClientId() {
1494
+ return this.id;
1495
+ }
1489
1496
  setupResyncInterval() {
1490
1497
  if (this._options.resyncInterval > 0) this._resyncInterval = setInterval(() => {
1491
1498
  if (this._ws && this._wsConnected) {
@@ -1569,7 +1576,7 @@ var WeaveStoreAzureWebPubSubSyncClient = class extends Emittery {
1569
1576
  const messageData = message.data;
1570
1577
  if (messageData.t !== void 0 && messageData.t !== this._uuid) return;
1571
1578
  const buf = Buffer.from(messageData.c, "base64");
1572
- const encoder = readMessage(this, buf, true);
1579
+ const encoder = readMessage(this, buf, true, messageData.f);
1573
1580
  if (length$1(encoder) > 1) sendToControlGroup(this, this.topic, MessageDataType.Sync, toUint8Array(encoder));
1574
1581
  };
1575
1582
  websocket.onclose = () => {
@@ -1665,6 +1672,10 @@ var WeaveStoreAzureWebPubsub = class extends WeaveStore {
1665
1672
  emitEvent(name, payload) {
1666
1673
  this.instance.emitEvent(name, payload);
1667
1674
  }
1675
+ getClientId() {
1676
+ if (this.provider) return this.provider.getClientId();
1677
+ return null;
1678
+ }
1668
1679
  async connect() {
1669
1680
  const { fetchClient } = this.azureWebPubsubOptions;
1670
1681
  const awareness = this.provider.awareness;
package/dist/server.cjs CHANGED
@@ -30677,33 +30677,41 @@ var WeaveStoreAzureWebPubSubSyncHost = class extends Emittery {
30677
30677
  this._polyfill = WebSocketPolyfill;
30678
30678
  this._awareness = new Awareness(this.doc);
30679
30679
  this._awareness.setLocalState(null);
30680
- const awarenessUpdateHandler = ({ added, updated, removed }) => {
30680
+ const awarenessUpdateHandler = ({ added, updated, removed }, origin) => {
30681
30681
  const changedClients = added.concat(added, updated, removed);
30682
30682
  const encoder = createEncoder();
30683
30683
  writeVarUint(encoder, messageAwareness);
30684
30684
  writeVarUint8Array(encoder, encodeAwarenessUpdate(this._awareness, changedClients));
30685
30685
  const u8 = toUint8Array(encoder);
30686
- this.broadcast(this.topic, u8);
30686
+ this.broadcast(this.topic, origin, u8);
30687
30687
  };
30688
30688
  this._awareness.on("update", awarenessUpdateHandler);
30689
- const updateHandler = (update) => {
30689
+ const updateHandler = (update, origin) => {
30690
30690
  const encoder = createEncoder();
30691
30691
  writeVarUint(encoder, messageSync);
30692
30692
  writeUpdate(encoder, update);
30693
30693
  const u8 = toUint8Array(encoder);
30694
- this.broadcast(this.topic, u8);
30694
+ if (origin) {
30695
+ const actualStateJSONString = JSON.stringify(doc.getMap("weave").toJSON(), null, 2);
30696
+ console.log(`=======================================`);
30697
+ console.log(`State update from ${origin}`);
30698
+ console.log(`=======================================`);
30699
+ console.log(actualStateJSONString);
30700
+ console.log(`=======================================`);
30701
+ }
30702
+ this.broadcast(this.topic, origin, u8);
30695
30703
  };
30696
- doc.on("update", updateHandler);
30704
+ this.doc.on("update", updateHandler);
30697
30705
  }
30698
30706
  get awareness() {
30699
30707
  return this._awareness;
30700
30708
  }
30701
- sendInitAwarenessInfo() {
30709
+ sendInitAwarenessInfo(origin) {
30702
30710
  const encoderAwarenessState = createEncoder();
30703
30711
  writeVarUint(encoderAwarenessState, messageAwareness);
30704
30712
  writeVarUint8Array(encoderAwarenessState, encodeAwarenessUpdate(this._awareness, Array.from(this._awareness.getStates().keys())));
30705
30713
  const u8 = toUint8Array(encoderAwarenessState);
30706
- this.broadcast(this.topic, u8);
30714
+ this.broadcast(this.topic, origin, u8);
30707
30715
  }
30708
30716
  async start() {
30709
30717
  const url$1 = await this.negotiate(this.topic);
@@ -30715,7 +30723,7 @@ var WeaveStoreAzureWebPubSubSyncHost = class extends Emittery {
30715
30723
  case MessageDataType.Init:
30716
30724
  this.onClientInit(group, event.data);
30717
30725
  this.onClientSync(group, event.data);
30718
- this.sendInitAwarenessInfo();
30726
+ this.sendInitAwarenessInfo(event.data.f);
30719
30727
  return;
30720
30728
  case MessageDataType.Sync:
30721
30729
  this.onClientSync(group, event.data);
@@ -30740,12 +30748,15 @@ var WeaveStoreAzureWebPubSubSyncHost = class extends Emittery {
30740
30748
  };
30741
30749
  this._conn = conn;
30742
30750
  }
30743
- broadcast(group, u8) {
30751
+ broadcast(group, from$1, u8) {
30744
30752
  this._conn?.send(JSON.stringify({
30745
30753
  type: MessageType.SendToGroup,
30746
30754
  group,
30747
30755
  noEcho: true,
30748
- data: { c: Buffer.from(u8).toString("base64") }
30756
+ data: {
30757
+ f: from$1,
30758
+ c: Buffer.from(u8).toString("base64")
30759
+ }
30749
30760
  }));
30750
30761
  }
30751
30762
  send(group, to, u8) {
@@ -30775,7 +30786,7 @@ var WeaveStoreAzureWebPubSubSyncHost = class extends Emittery {
30775
30786
  switch (messageType) {
30776
30787
  case messageYjsSyncStep1:
30777
30788
  writeVarUint(encoder, messageYjsSyncStep1);
30778
- readSyncMessage(decoder, encoder, this.doc, null);
30789
+ readSyncMessage(decoder, encoder, this.doc, data.f);
30779
30790
  if (length$1(encoder) > 1) this.send(group, data.f, toUint8Array(encoder));
30780
30791
  break;
30781
30792
  }
package/dist/server.d.cts CHANGED
@@ -572,7 +572,7 @@ declare class WeaveStoreAzureWebPubSubSyncHost extends Emittery {
572
572
  WebSocketPolyfill
573
573
  }: WebPubSubHostOptions);
574
574
  get awareness(): awarenessProtocol.Awareness;
575
- sendInitAwarenessInfo(): void;
575
+ sendInitAwarenessInfo(origin: string): void;
576
576
  start(): Promise<void>;
577
577
  private broadcast;
578
578
  private send;
package/dist/server.d.ts CHANGED
@@ -572,7 +572,7 @@ declare class WeaveStoreAzureWebPubSubSyncHost extends Emittery {
572
572
  WebSocketPolyfill
573
573
  }: WebPubSubHostOptions);
574
574
  get awareness(): awarenessProtocol.Awareness;
575
- sendInitAwarenessInfo(): void;
575
+ sendInitAwarenessInfo(origin: string): void;
576
576
  start(): Promise<void>;
577
577
  private broadcast;
578
578
  private send;
package/dist/server.js CHANGED
@@ -30681,33 +30681,41 @@ var WeaveStoreAzureWebPubSubSyncHost = class extends Emittery {
30681
30681
  this._polyfill = WebSocketPolyfill;
30682
30682
  this._awareness = new Awareness(this.doc);
30683
30683
  this._awareness.setLocalState(null);
30684
- const awarenessUpdateHandler = ({ added, updated, removed }) => {
30684
+ const awarenessUpdateHandler = ({ added, updated, removed }, origin) => {
30685
30685
  const changedClients = added.concat(added, updated, removed);
30686
30686
  const encoder = createEncoder();
30687
30687
  writeVarUint(encoder, messageAwareness);
30688
30688
  writeVarUint8Array(encoder, encodeAwarenessUpdate(this._awareness, changedClients));
30689
30689
  const u8 = toUint8Array(encoder);
30690
- this.broadcast(this.topic, u8);
30690
+ this.broadcast(this.topic, origin, u8);
30691
30691
  };
30692
30692
  this._awareness.on("update", awarenessUpdateHandler);
30693
- const updateHandler = (update) => {
30693
+ const updateHandler = (update, origin) => {
30694
30694
  const encoder = createEncoder();
30695
30695
  writeVarUint(encoder, messageSync);
30696
30696
  writeUpdate(encoder, update);
30697
30697
  const u8 = toUint8Array(encoder);
30698
- this.broadcast(this.topic, u8);
30698
+ if (origin) {
30699
+ const actualStateJSONString = JSON.stringify(doc.getMap("weave").toJSON(), null, 2);
30700
+ console.log(`=======================================`);
30701
+ console.log(`State update from ${origin}`);
30702
+ console.log(`=======================================`);
30703
+ console.log(actualStateJSONString);
30704
+ console.log(`=======================================`);
30705
+ }
30706
+ this.broadcast(this.topic, origin, u8);
30699
30707
  };
30700
- doc.on("update", updateHandler);
30708
+ this.doc.on("update", updateHandler);
30701
30709
  }
30702
30710
  get awareness() {
30703
30711
  return this._awareness;
30704
30712
  }
30705
- sendInitAwarenessInfo() {
30713
+ sendInitAwarenessInfo(origin) {
30706
30714
  const encoderAwarenessState = createEncoder();
30707
30715
  writeVarUint(encoderAwarenessState, messageAwareness);
30708
30716
  writeVarUint8Array(encoderAwarenessState, encodeAwarenessUpdate(this._awareness, Array.from(this._awareness.getStates().keys())));
30709
30717
  const u8 = toUint8Array(encoderAwarenessState);
30710
- this.broadcast(this.topic, u8);
30718
+ this.broadcast(this.topic, origin, u8);
30711
30719
  }
30712
30720
  async start() {
30713
30721
  const url$1 = await this.negotiate(this.topic);
@@ -30719,7 +30727,7 @@ var WeaveStoreAzureWebPubSubSyncHost = class extends Emittery {
30719
30727
  case MessageDataType.Init:
30720
30728
  this.onClientInit(group, event.data);
30721
30729
  this.onClientSync(group, event.data);
30722
- this.sendInitAwarenessInfo();
30730
+ this.sendInitAwarenessInfo(event.data.f);
30723
30731
  return;
30724
30732
  case MessageDataType.Sync:
30725
30733
  this.onClientSync(group, event.data);
@@ -30744,12 +30752,15 @@ var WeaveStoreAzureWebPubSubSyncHost = class extends Emittery {
30744
30752
  };
30745
30753
  this._conn = conn;
30746
30754
  }
30747
- broadcast(group, u8) {
30755
+ broadcast(group, from$1, u8) {
30748
30756
  this._conn?.send(JSON.stringify({
30749
30757
  type: MessageType.SendToGroup,
30750
30758
  group,
30751
30759
  noEcho: true,
30752
- data: { c: Buffer.from(u8).toString("base64") }
30760
+ data: {
30761
+ f: from$1,
30762
+ c: Buffer.from(u8).toString("base64")
30763
+ }
30753
30764
  }));
30754
30765
  }
30755
30766
  send(group, to, u8) {
@@ -30779,7 +30790,7 @@ var WeaveStoreAzureWebPubSubSyncHost = class extends Emittery {
30779
30790
  switch (messageType) {
30780
30791
  case messageYjsSyncStep1:
30781
30792
  writeVarUint(encoder, messageYjsSyncStep1);
30782
- readSyncMessage(decoder, encoder, this.doc, null);
30793
+ readSyncMessage(decoder, encoder, this.doc, data.f);
30783
30794
  if (length$1(encoder) > 1) this.send(group, data.f, toUint8Array(encoder));
30784
30795
  break;
30785
30796
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inditextech/weave-store-azure-web-pubsub",
3
- "version": "0.40.2",
3
+ "version": "0.42.0",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>",
@@ -61,7 +61,7 @@
61
61
  "yjs": "13.6.27"
62
62
  },
63
63
  "devDependencies": {
64
- "@inditextech/weave-sdk": "0.40.2",
64
+ "@inditextech/weave-sdk": "0.42.0",
65
65
  "@koa/cors": "^5.0.0",
66
66
  "@types/express": "^5.0.1",
67
67
  "@types/ioredis": "^4.28.10",