cross-tab-worker-databus 0.21.57 → 0.21.59

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.
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/core/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/core/environment.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ import {
20
20
  selectRebalanceTarget,
21
21
  selectWorkerBackend,
22
22
  topicMatchesPattern
23
- } from "./chunk-ZH7VP3IY.js";
23
+ } from "./chunk-SGZG6775.js";
24
24
  import {
25
25
  DEFAULT_STORAGE_PREFIX,
26
26
  PRUNE_STRATEGY,
package/docs/api.md CHANGED
@@ -147,6 +147,8 @@ When supplied, `options.messageId` and `options.timestamp` are propagated throug
147
147
  }
148
148
  ```
149
149
 
150
+ Incoming frames are normalized with a fixed precedence: a frame's own string `topic` field wins over the fallback channel the transport subscribed, and a nested `publication.data` is unwrapped only when the frame is an envelope (`{ publication: { … } }`), arrives on a direct transport (no fallback topic), or carries metadata (`messageId`/`timestamp`). A payload published through a fallback-channel transport that itself carries a top-level string `topic` is therefore re-routed to that value.
151
+
150
152
  ### `publishBatch(topic, items)`
151
153
 
152
154
  ```ts
@@ -497,6 +499,8 @@ Creates a default browser environment adapter, including storage, BroadcastChann
497
499
 
498
500
  Returns the stable identity of the current page/tab instance, reading it from session storage and creating one (`tab-<random>`) on first call, so a reloaded tab reclaims its routes instead of looking like a brand new one.
499
501
 
502
+ The memo is module-global and first-call-only: the `key` parameter selects the storage slot for the *first* call in the document, and every later call — a different `key`, or a different `environment` object — returns that same id and does not write the new key. This is deliberate: the SDK calls it once per cluster prefix so every Runtime in one document shares one tab identity.
503
+
500
504
  The stored value is deliberately *not* reused when `window.opener` is present: `window.open()` clones the opener's `sessionStorage` into the child, so a blind reuse would make two live tabs share one identity. When storage is unavailable or throws, a fresh ID is generated instead.
501
505
 
502
506
  The browser's own **Duplicate tab** copies `sessionStorage` too, and gives the copy *no* opener, so the opener check cannot see it. `options.isIdentityClaimedByPeer(candidate)` is the caller's evidence for that case: `WorkerClusterRuntime` answers it from this cluster's live Worker records, and a heartbeat-live record carrying the inherited value makes the duplicate take a fresh ID (persisted, so later Runtimes in the same document share it). The probe runs on a document's first lookup only, and never when an opener already settled the question — a refresh removes and flushes its own Worker record, so it keeps its identity; after an abnormal exit the stale record lives for up to `workerTtlMs`, and a reload inside that window takes a fresh ID instead.
@@ -182,7 +182,7 @@ Main configuration for `createCentrifugeDataBus<TData>(options)`:
182
182
  | `heartbeatIntervalMs` | `number` | `10000` | SharedWorker PING heartbeat interval (see SharedWorker Session Reaper below); `Infinity` disables heartbeats entirely and exempts that port from reaping. Distinct from the Core cluster heartbeat (default 3000 ms) which tracks worker liveness via localStorage |
183
183
  | `workerFactory` | `() => Worker` | Built-in Worker | For testing or custom Worker loading |
184
184
  | `sharedWorkerFactory` | `() => SharedWorker` | Built-in SharedWorker | For testing or custom SharedWorker loading |
185
- | `credentialProvider` | `{ getToken?, getChannelToken? }` | `undefined` | Async credential refresh bridge: the Worker asks the main thread for each fresh token and this provider supplies it from application context. In practice that ask is `getToken`, the only credential hook `centrifuge@5.7.4` exposes — the type carries `getChannelToken` and the Worker protocol carries that request kind so a later SDK needs no change on this side, but nothing asks it today. Required because function-valued Centrifuge options cannot be structured-cloned into the Worker |
185
+ | `credentialProvider` | `{ getToken?, getChannelToken? }` | `undefined` | Async credential refresh bridge: the Worker asks the main thread for each fresh token and this provider supplies it from application context. In practice that ask is `getToken`, the only credential hook `centrifuge@5.8.0` exposes — the type carries `getChannelToken` and the Worker protocol carries that request kind so a later SDK needs no change on this side, but nothing asks it today. Required because function-valued Centrifuge options cannot be structured-cloned into the Worker |
186
186
  | Other Core config | Corresponding type | Core defaults | `storagePrefix`, heartbeat, TTL, etc. |
187
187
 
188
188
  ```ts
package/docs/roadmap.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Roadmap
2
2
 
3
- 0.21.56 was released on October 25, 2026. The project is intentionally continuing through reliability-focused releases before a 1.0.0 stability freeze.
3
+ 0.21.58 was released on October 30, 2026. The project is intentionally continuing through reliability-focused releases before a 1.0.0 stability freeze.
4
4
 
5
5
  ## 0.21.44 delivered scope
6
6
 
package/docs/zh/api.md CHANGED
@@ -147,6 +147,8 @@ publish(
147
147
  }
148
148
  ```
149
149
 
150
+ 入站帧按固定优先级归一化:帧自身的字符串 `topic` 字段优先于 transport 订阅的兜底 channel;嵌套的 `publication.data` 只有在帧是 envelope(`{ publication: { … } }`)、来自直连 transport(无兜底 topic)或携带元数据(`messageId`/`timestamp`)时才被解包。因此,经兜底 channel transport 发布、且 payload 自身带顶层字符串 `topic` 的消息会被改路由到该值。
151
+
150
152
  ### `publishBatch(topic, items)`
151
153
 
152
154
  ```ts
@@ -496,6 +498,8 @@ useVueCrossTabSubscription(bus, 'chat.*', message => console.log(message.data));
496
498
 
497
499
  返回当前页面/标签页实例的稳定标识:优先从 sessionStorage 读取,首次调用时创建(`tab-<random>`)并写回,因此刷新后的标签页会认领原有 route,而不是被当成一个全新标签页。
498
500
 
501
+ 该记忆是模块级且只认首次调用:`key` 参数仅为 document 内的**第一次**调用选择存储槽位,之后任何调用——不同的 `key`、甚至不同的 `environment` 对象——都返回同一个 id,且不会写入新的 key。这是刻意设计:SDK 按集群前缀只调用一次,使同一 document 内的所有 Runtime 共用一个 tab 身份。
502
+
499
503
  存在 `window.opener` 时**刻意不**复用已存储的值:`window.open()` 会把 opener 的 `sessionStorage` 克隆给子页面,盲目复用会让两个存活的标签页共用一个身份。storage 不可用或抛错时改为生成新 ID。
500
504
 
501
505
  浏览器自带的**复制标签页(Duplicate tab)**同样会复制 `sessionStorage`,而且复制出来的页面**没有** opener,因此 opener 检查看不到它。`options.isIdentityClaimedByPeer(candidate)` 就是调用方对这一情形的证据:`WorkerClusterRuntime` 用本集群存活的 Worker 记录来回答,若存在一条心跳仍新鲜、且带着被继承 id 的记录,复制出的标签页就改领一个新 ID(并写回,同一 document 内后续 Runtime 共用)。该探测只在一个 document 的首次查找时执行,opener 已给出结论时也不执行——刷新会在 `pause()` 里删除并 flush 自己的 Worker 记录,因此保留原身份;异常退出留下的记录会存活至多一个 `workerTtlMs`,在这个窗口内刷新则会领到新 ID。
@@ -173,7 +173,7 @@ const bus = createCentrifugeDataBus({
173
173
  | `heartbeatIntervalMs` | `number` | `10000` | SharedWorker PING 心跳间隔(见下方 SharedWorker 会话回收);传 `Infinity` 完全禁用心跳,该端口也因此豁免于回收。与 Core 集群心跳(默认 3000 ms,通过 localStorage 跟踪 worker 存活)相互独立 |
174
174
  | `workerFactory` | `() => Worker` | 内置 Worker | 测试或自定义 Worker 加载方式 |
175
175
  | `sharedWorkerFactory` | `() => SharedWorker` | 内置 SharedWorker | 测试或自定义 SharedWorker 加载方式 |
176
- | `credentialProvider` | `{ getToken?, getChannelToken? }` | `undefined` | 异步凭证刷新桥:Worker 向主线程请求每个新 token,由该 provider 从应用上下文提供。实践中这一问只发生在 `getToken` 上——它是 `centrifuge@5.7.4` 暴露的唯一凭证钩子;类型里保留着 `getChannelToken`,Worker 协议也保留该请求种类,以便未来的 SDK 无需改动本侧,但今天没有任何代码会问它。必要原因:函数型 Centrifuge 选项无法 structured-clone 进 Worker |
176
+ | `credentialProvider` | `{ getToken?, getChannelToken? }` | `undefined` | 异步凭证刷新桥:Worker 向主线程请求每个新 token,由该 provider 从应用上下文提供。实践中这一问只发生在 `getToken` 上——它是 `centrifuge@5.8.0` 暴露的唯一凭证钩子;类型里保留着 `getChannelToken`,Worker 协议也保留该请求种类,以便未来的 SDK 无需改动本侧,但今天没有任何代码会问它。必要原因:函数型 Centrifuge 选项无法 structured-clone 进 Worker |
177
177
  | 其他 Core 配置 | 对应类型 | Core 默认值 | `storagePrefix`、心跳、TTL 等 |
178
178
 
179
179
  ```ts
@@ -1,6 +1,6 @@
1
1
  # 路线图
2
2
 
3
- 0.21.56 已于 2026 年 10 月 25 日发布。项目会先持续完成可靠性发布,再进入 1.0.0 稳定性冻结。
3
+ 0.21.58 已于 2026 年 10 月 30 日发布。项目会先持续完成可靠性发布,再进入 1.0.0 稳定性冻结。
4
4
 
5
5
  ## 0.21.44 已完成范围
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cross-tab-worker-databus",
3
- "version": "0.21.57",
3
+ "version": "0.21.59",
4
4
  "description": "Framework-agnostic cross-tab data bus with Dedicated/Shared Worker clustering and Centrifuge support.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -127,24 +127,24 @@
127
127
  },
128
128
  "devDependencies": {
129
129
  "@eslint/js": "^10.0.1",
130
- "@playwright/test": "^1.63.0",
130
+ "@playwright/test": "^1.64.1",
131
131
  "@testing-library/react": "^16.3.3",
132
- "@types/node": "^26.6.5",
132
+ "@types/node": "^26.6.6",
133
133
  "@types/react": "^19.3.0",
134
- "@vitest/coverage-v8": "^5.0.1",
135
- "centrifuge": "^5.7.4",
134
+ "@vitest/coverage-v8": "^5.0.5",
135
+ "centrifuge": "^5.8.0",
136
136
  "esbuild": "^0.28.2",
137
- "eslint": "^10.13.0",
138
- "fake-indexeddb": "^6.2.5",
137
+ "eslint": "^10.14.0",
138
+ "fake-indexeddb": "^6.2.6",
139
139
  "globals": "^17.13.0",
140
140
  "jsdom": "^30.1.3",
141
- "react": "^19.3.0",
142
- "react-dom": "^19.3.0",
141
+ "react": "^19.3.1",
142
+ "react-dom": "^19.3.1",
143
143
  "typescript": "^6.0.3",
144
- "typescript-eslint": "^8.72.0",
145
- "vite": "^7.3.7",
146
- "vitest": "^5.0.1",
147
- "vue": "^3.5.43"
144
+ "typescript-eslint": "^8.72.1",
145
+ "vite": "^8.3.5",
146
+ "vitest": "^5.0.5",
147
+ "vue": "^3.5.44"
148
148
  },
149
149
  "engines": {
150
150
  "node": ">=18.0.0"