cross-tab-worker-databus 0.8.0 → 0.10.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.
Files changed (41) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +1 -0
  3. package/README.zh.md +1 -0
  4. package/dist/centrifuge-protocol.d.ts +4 -0
  5. package/dist/centrifuge-protocol.d.ts.map +1 -1
  6. package/dist/centrifuge-session.d.ts.map +1 -1
  7. package/dist/centrifuge.js +29 -11
  8. package/dist/centrifuge.js.map +2 -2
  9. package/dist/centrifuge.shared.worker.js +37 -6
  10. package/dist/centrifuge.shared.worker.js.map +3 -3
  11. package/dist/centrifuge.worker.js +37 -6
  12. package/dist/centrifuge.worker.js.map +3 -3
  13. package/dist/{chunk-WWUY2FV2.js → chunk-ZOPNTR4E.js} +110 -25
  14. package/dist/chunk-ZOPNTR4E.js.map +7 -0
  15. package/dist/cjs/centrifuge.cjs +137 -34
  16. package/dist/cjs/centrifuge.cjs.map +4 -4
  17. package/dist/cjs/index.cjs +145 -37
  18. package/dist/cjs/index.cjs.map +3 -3
  19. package/dist/core/cluster.d.ts +3 -2
  20. package/dist/core/cluster.d.ts.map +1 -1
  21. package/dist/core/data-bus.d.ts +16 -0
  22. package/dist/core/data-bus.d.ts.map +1 -1
  23. package/dist/core/publication.d.ts +10 -0
  24. package/dist/core/publication.d.ts.map +1 -0
  25. package/dist/core/replay-persistence.d.ts +2 -0
  26. package/dist/core/replay-persistence.d.ts.map +1 -1
  27. package/dist/core/types.d.ts +19 -7
  28. package/dist/core/types.d.ts.map +1 -1
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +39 -14
  32. package/dist/index.js.map +2 -2
  33. package/dist/websocket.d.ts.map +1 -1
  34. package/docs/api.md +25 -4
  35. package/docs/architecture.md +3 -1
  36. package/docs/transports.md +9 -5
  37. package/docs/zh/api.md +25 -4
  38. package/docs/zh/architecture.md +3 -1
  39. package/docs/zh/transports.md +8 -4
  40. package/package.json +1 -1
  41. package/dist/chunk-WWUY2FV2.js.map +0 -7
@@ -4981,6 +4981,26 @@ Centrifuge.SubscriptionState = SubscriptionState;
4981
4981
  Centrifuge.State = State;
4982
4982
  Centrifuge.UnauthorizedError = UnauthorizedError;
4983
4983
 
4984
+ // src/core/publication.ts
4985
+ function parseDataBusPublication(value, fallbackTopic) {
4986
+ if (!value || typeof value !== "object") {
4987
+ return fallbackTopic ? { topic: fallbackTopic, data: value } : null;
4988
+ }
4989
+ const frame = value;
4990
+ const nested = frame.publication && typeof frame.publication === "object" ? frame.publication : null;
4991
+ const publication = nested ?? frame;
4992
+ const topic = typeof publication.topic === "string" ? publication.topic : fallbackTopic;
4993
+ if (!topic) return null;
4994
+ const hasMetadataEnvelope = fallbackTopic !== void 0 && Object.prototype.hasOwnProperty.call(publication, "data") && (typeof publication.messageId === "string" || typeof publication.timestamp === "number");
4995
+ const data = nested || fallbackTopic === void 0 || hasMetadataEnvelope ? publication.data : value;
4996
+ return {
4997
+ topic,
4998
+ data,
4999
+ ...typeof publication.messageId === "string" ? { messageId: publication.messageId } : {},
5000
+ ...typeof publication.timestamp === "number" ? { timestamp: publication.timestamp } : {}
5001
+ };
5002
+ }
5003
+
4984
5004
  // src/centrifuge-session.ts
4985
5005
  var CentrifugeSession = class {
4986
5006
  constructor(sink) {
@@ -5005,7 +5025,7 @@ var CentrifugeSession = class {
5005
5025
  return;
5006
5026
  case "PUBLISH":
5007
5027
  case "PUBLISH_BIN":
5008
- this.publish(message.topic, message.data, message.messageId);
5028
+ this.publish(message.topic, message.data, message.messageId, message.timestamp);
5009
5029
  return;
5010
5030
  case "STOP":
5011
5031
  this.stop();
@@ -5070,9 +5090,14 @@ var CentrifugeSession = class {
5070
5090
  subscription.unsubscribe();
5071
5091
  }
5072
5092
  /** Publish a message to the Centrifuge channel. */
5073
- publish(topic, data, messageId) {
5093
+ publish(topic, data, messageId, timestamp) {
5074
5094
  if (!this.client) return this.postError(new Error("Centrifuge client is not initialized."));
5075
- const payload = messageId ? { data, messageId } : data;
5095
+ const hasMetadata = messageId !== void 0 || timestamp !== void 0;
5096
+ const payload = hasMetadata ? {
5097
+ data,
5098
+ ...messageId === void 0 ? {} : { messageId },
5099
+ ...timestamp === void 0 ? {} : { timestamp }
5100
+ } : data;
5076
5101
  void this.client.publish(topic, payload).catch((error) => this.postError(error));
5077
5102
  }
5078
5103
  /** Forward a publication to the transport. Binary payloads take the
@@ -5085,9 +5110,15 @@ var CentrifugeSession = class {
5085
5110
  this.post({ type: "MESSAGE_BIN", topic, data }, [data]);
5086
5111
  return;
5087
5112
  }
5088
- const messageId = data && typeof data === "object" && typeof data.messageId === "string" ? data.messageId : void 0;
5089
- const payload = messageId && Object.prototype.hasOwnProperty.call(data, "data") ? data.data : data;
5090
- this.post({ type: "MESSAGE", topic, data: payload, ...messageId ? { messageId } : {} });
5113
+ const publication = parseDataBusPublication(data, topic);
5114
+ if (!publication) return;
5115
+ this.post({
5116
+ type: "MESSAGE",
5117
+ topic: publication.topic,
5118
+ data: publication.data,
5119
+ ...publication.messageId === void 0 ? {} : { messageId: publication.messageId },
5120
+ ...publication.timestamp === void 0 ? {} : { timestamp: publication.timestamp }
5121
+ });
5091
5122
  }
5092
5123
  /** Disconnect the client and clear all subscriptions. */
5093
5124
  stop() {