react-broadcast-sync 2.1.1 → 2.1.3
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/LICENSE +0 -11
- package/README.md +43 -65
- package/dist/hooks/useBroadcastChannel.d.ts +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/types/types.d.ts +3 -13
- package/llms.txt +18 -47
- package/package.json +9 -11
- package/skills/react-broadcast-sync/SKILL.md +2 -2
- package/TELEMETRY.md +0 -59
- package/dist/utils/telemetry.d.ts +0 -14
package/LICENSE
CHANGED
|
@@ -19,14 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
21
|
THE SOFTWARE.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
TELEMETRY NOTICE
|
|
26
|
-
|
|
27
|
-
This Software collects anonymous, non-personal usage statistics by default.
|
|
28
|
-
No channel names, source names, message content, user identifiers, or any
|
|
29
|
-
personally identifiable information is collected. Session identifiers are
|
|
30
|
-
randomly generated on each page load and are never persisted. You may opt out
|
|
31
|
-
at any time by passing { telemetry: false } to useBroadcastChannel or
|
|
32
|
-
BroadcastProvider. See TELEMETRY.md for full details.
|
package/README.md
CHANGED
|
@@ -21,8 +21,11 @@
|
|
|
21
21
|
<a href="https://www.npmjs.com/package/react-broadcast-sync">
|
|
22
22
|
<img alt="NPM Downloads" src="https://img.shields.io/npm/dm/react-broadcast-sync.svg" />
|
|
23
23
|
</a>
|
|
24
|
-
<a href="https://
|
|
25
|
-
<img alt="
|
|
24
|
+
<a href="https://react-broadcast-sync-docs.vercel.app">
|
|
25
|
+
<img alt="Documentation" src="https://img.shields.io/badge/docs-react--broadcast--sync--docs-5EC13D" />
|
|
26
|
+
</a>
|
|
27
|
+
<a href="https://bundlejs.com/?q=react-broadcast-sync">
|
|
28
|
+
<img alt="Bundle size" src="https://deno.bundlejs.com/badge?q=react-broadcast-sync" />
|
|
26
29
|
</a>
|
|
27
30
|
<a href="https://opensource.org/licenses/MIT">
|
|
28
31
|
<img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg" />
|
|
@@ -32,6 +35,8 @@
|
|
|
32
35
|
</a>
|
|
33
36
|
</p>
|
|
34
37
|
|
|
38
|
+
**Guide:** [Using react-broadcast-sync in a real app: dashboard filters across tabs](https://dev.to/idanshalem/using-react-broadcast-sync-in-a-real-app-dashboard-filters-across-tabs-38cb) - install, usage patterns, gotchas and recipes.
|
|
39
|
+
|
|
35
40
|
Easily sync UI state or user events across browser tabs in React apps — notifications, presence, forms, and more. This package provides a clean and type-safe abstraction over the native API, enabling efficient, scoped, and reliable cross-tab messaging.
|
|
36
41
|
|
|
37
42
|
**When to use it:** React apps that need to share ephemeral state or events between browser tabs of the same origin (logout, notifications, presence, draft sync). It wraps the browser `BroadcastChannel` API in a hook (`useBroadcastChannel`) and an optional `BroadcastProvider`.
|
|
@@ -51,6 +56,7 @@ postMessage('logout', { at: Date.now() }); // other tabs receive it in `messages
|
|
|
51
56
|
|
|
52
57
|
## Table of Contents
|
|
53
58
|
|
|
59
|
+
- [Documentation](#documentation)
|
|
54
60
|
- [Features](#features)
|
|
55
61
|
- [Why Not localStorage?](#why-not-localstorage)
|
|
56
62
|
- [Demo App](#demo-app)
|
|
@@ -107,6 +113,17 @@ A few honest notes:
|
|
|
107
113
|
- **If you need old-browser, WebWorker, or Node support**, [`broadcast-channel`](https://github.com/pubkey/broadcast-channel) is the right low-level primitive. `react-broadcast-sync` builds on the native `BroadcastChannel` API and gives you the React layer on top: hooks, typed messages, and lifecycle handling out of the box.
|
|
108
114
|
- **If your app already lives in Zustand or Jotai**, their sync utilities may be enough. `react-broadcast-sync` is state-manager agnostic - it works next to any of them, or with plain `useState`.
|
|
109
115
|
|
|
116
|
+
## Documentation
|
|
117
|
+
|
|
118
|
+
Full documentation lives at **[react-broadcast-sync-docs.vercel.app](https://react-broadcast-sync-docs.vercel.app)**: a step-by-step getting started guide, concepts, per-feature guides, the complete API reference, recipes, a tutorial, FAQ, and troubleshooting.
|
|
119
|
+
|
|
120
|
+
Two live demos are hosted on the docs site:
|
|
121
|
+
|
|
122
|
+
- **[Hook demo](https://react-broadcast-sync-docs.vercel.app/demos/hook/)** - `useBroadcastChannel` syncing a counter, text, and a todo list across tabs.
|
|
123
|
+
- **[Provider demo](https://react-broadcast-sync-docs.vercel.app/demos/provider/)** - `BroadcastProvider` + `useBroadcastProvider` sharing one channel through context.
|
|
124
|
+
|
|
125
|
+
The original demo app is still available at [react-broadcast-sync-3w3m.vercel.app](https://react-broadcast-sync-3w3m.vercel.app/).
|
|
126
|
+
|
|
110
127
|
## Demo App
|
|
111
128
|
|
|
112
129
|
Check out our [live demo](https://react-broadcast-sync-3w3m.vercel.app/) to see the library in action! The demo showcases three main features:
|
|
@@ -349,25 +366,25 @@ interface BroadcastOptions {
|
|
|
349
366
|
batchingDelayMs?: number; // Delay in ms to batch outgoing messages (default: 20). If > 0, messages are batched and sent together.
|
|
350
367
|
excludedBatchMessageTypes?: string[]; // Message types to always send immediately, never batched (default: []).
|
|
351
368
|
onMessage?: MessageCallback | OnMessageMap; // Callback(s) fired when a received message passes all filters (default: undefined).
|
|
352
|
-
telemetry?: boolean; //
|
|
369
|
+
telemetry?: boolean; // Deprecated no-op.
|
|
353
370
|
}
|
|
354
371
|
```
|
|
355
372
|
|
|
356
373
|
#### Default Values
|
|
357
374
|
|
|
358
|
-
| Option | Default Value | Description
|
|
359
|
-
| --------------------------- | ------------- |
|
|
360
|
-
| `sourceName` | `undefined` | Auto-generated if not provided
|
|
361
|
-
| `cleaningInterval` | `1000` | 1 second between cleanup runs
|
|
362
|
-
| `keepLatestMessage` | `false` | Keep all messages by default
|
|
363
|
-
| `registeredTypes` | `[]` | Accept all message types by default
|
|
364
|
-
| `namespace` | `''` | No namespace by default
|
|
365
|
-
| `deduplicationTTL` | `300000` | 5 minutes (5 × 60 × 1000 ms)
|
|
366
|
-
| `cleanupDebounceMs` | `0` | No debounce by default
|
|
367
|
-
| `batchingDelayMs` | `20` | Batch delay in ms (0 = off)
|
|
368
|
-
| `excludedBatchMessageTypes` | `[]` | Types never batched
|
|
369
|
-
| `onMessage` | `undefined` | Callback(s) for received messages
|
|
370
|
-
| `telemetry` | `false` |
|
|
375
|
+
| Option | Default Value | Description |
|
|
376
|
+
| --------------------------- | ------------- | ------------------------------------------- |
|
|
377
|
+
| `sourceName` | `undefined` | Auto-generated if not provided |
|
|
378
|
+
| `cleaningInterval` | `1000` | 1 second between cleanup runs |
|
|
379
|
+
| `keepLatestMessage` | `false` | Keep all messages by default |
|
|
380
|
+
| `registeredTypes` | `[]` | Accept all message types by default |
|
|
381
|
+
| `namespace` | `''` | No namespace by default |
|
|
382
|
+
| `deduplicationTTL` | `300000` | 5 minutes (5 × 60 × 1000 ms) |
|
|
383
|
+
| `cleanupDebounceMs` | `0` | No debounce by default |
|
|
384
|
+
| `batchingDelayMs` | `20` | Batch delay in ms (0 = off) |
|
|
385
|
+
| `excludedBatchMessageTypes` | `[]` | Types never batched |
|
|
386
|
+
| `onMessage` | `undefined` | Callback(s) for received messages |
|
|
387
|
+
| `telemetry` | `false` | Deprecated no-op. No telemetry is collected |
|
|
371
388
|
|
|
372
389
|
#### Return Value
|
|
373
390
|
|
|
@@ -577,37 +594,9 @@ useBroadcastChannel('my-channel', {
|
|
|
577
594
|
|
|
578
595
|
---
|
|
579
596
|
|
|
580
|
-
#### `telemetry` Option
|
|
581
|
-
|
|
582
|
-
**Privacy-first: telemetry is off by default.** Nothing is sent to Mixpanel unless you explicitly set `telemetry: true` on the hook or provider. When enabled, `react-broadcast-sync` collects structural usage signals to help the maintainer understand how the library is used.
|
|
583
|
-
|
|
584
|
-
**What is collected:**
|
|
585
|
-
|
|
586
|
-
- Which `BroadcastOptions` keys are present (not their values)
|
|
587
|
-
- The shape of `onMessage` (`none` / `function` / `map`)
|
|
588
|
-
- Whether batching is enabled
|
|
589
|
-
- Whether `BroadcastChannel` is supported in the browser
|
|
590
|
-
- Which action methods (`postMessage`, `ping`, etc.) are called at least once per session
|
|
591
|
-
- Hook vs. provider entry point
|
|
592
|
-
|
|
593
|
-
**What is never collected:**
|
|
594
|
-
|
|
595
|
-
- Channel names, source names, message content, or message types
|
|
596
|
-
- Any application user identifiers in the event payload (Mixpanel may process IP addresses from request metadata)
|
|
597
|
+
#### `telemetry` Option (deprecated)
|
|
597
598
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
```tsx
|
|
601
|
-
useBroadcastChannel('my-channel', { telemetry: true });
|
|
602
|
-
// or
|
|
603
|
-
<BroadcastProvider channelName="my-channel" options={{ telemetry: true }} />;
|
|
604
|
-
```
|
|
605
|
-
|
|
606
|
-
**Upgrading to 2.0.0 from 1.x:** telemetry is now off by default. Omit the option or leave `telemetry: false` to keep it off; pass `telemetry: true` only if you want to opt in. This default change is breaking.
|
|
607
|
-
|
|
608
|
-
Events are batched and flushed in a single request when the tab is hidden or after 30 seconds. A failed request is silently discarded and never surfaces to your application.
|
|
609
|
-
|
|
610
|
-
See [TELEMETRY.md](./TELEMETRY.md) for the full legal notice.
|
|
599
|
+
The package no longer collects any telemetry. The `telemetry` option is still accepted as a deprecated no-op so existing code keeps compiling; it will be removed in the next major version.
|
|
611
600
|
|
|
612
601
|
---
|
|
613
602
|
|
|
@@ -629,7 +618,7 @@ Tools such as `skills-npm` can also extract it for you. Check your agent's docs
|
|
|
629
618
|
- **`cleanupDebounceMs` vs `cleaningInterval`:** cleanup is debounced. If `cleanupDebounceMs` is longer than `cleaningInterval`, each interval tick restarts the debounce and expired messages may never be removed. Keep `cleanupDebounceMs` smaller than `cleaningInterval`.
|
|
630
619
|
- **Deduplication is by message ID**, not content (see [Message Deduplication](#message-deduplication)).
|
|
631
620
|
- **Same origin only:** `BroadcastChannel` does not cross origins, and a tab does not receive its own messages.
|
|
632
|
-
- **
|
|
621
|
+
- **No telemetry:** the `telemetry` option is a deprecated no-op (see [Telemetry](#telemetry)).
|
|
633
622
|
|
|
634
623
|
## Best Practices
|
|
635
624
|
|
|
@@ -879,13 +868,14 @@ The repository has two test suites:
|
|
|
879
868
|
# Unit tests (Jest + jsdom)
|
|
880
869
|
npm test
|
|
881
870
|
|
|
882
|
-
# Cross-tab integration tests (Playwright +
|
|
883
|
-
npx playwright install chromium # one-time browser install
|
|
871
|
+
# Cross-tab integration tests (Playwright + Chromium, Firefox, and WebKit)
|
|
872
|
+
npx playwright install --with-deps chromium firefox webkit # one-time browser install
|
|
884
873
|
npm run test:integration
|
|
885
874
|
```
|
|
886
875
|
|
|
887
|
-
The integration suite
|
|
888
|
-
real browser tabs through the public
|
|
876
|
+
The integration suite runs each test in Chromium, Firefox, and WebKit. It serves a
|
|
877
|
+
small React app from `integration/app` and drives real browser tabs through the public
|
|
878
|
+
hook API: message delivery between tabs,
|
|
889
879
|
self-filtering, namespace isolation, `registeredTypes` filtering, `ping` source
|
|
890
880
|
discovery, synced `clearSentMessages`, local `clearReceivedMessages`, and message
|
|
891
881
|
expiration.
|
|
@@ -904,19 +894,7 @@ Relies on [BroadcastChannel API](https://developer.mozilla.org/en-US/docs/Web/AP
|
|
|
904
894
|
|
|
905
895
|
## Telemetry
|
|
906
896
|
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
If telemetry is enabled, a random session ID is generated per page load and not persisted by this package. Mixpanel may still process request metadata such as IP addresses.
|
|
910
|
-
|
|
911
|
-
**To opt in**, pass `telemetry: true`:
|
|
912
|
-
|
|
913
|
-
```tsx
|
|
914
|
-
useBroadcastChannel('my-channel', { telemetry: true });
|
|
915
|
-
// or
|
|
916
|
-
<BroadcastProvider channelName="my-channel" options={{ telemetry: true }} />;
|
|
917
|
-
```
|
|
918
|
-
|
|
919
|
-
See [TELEMETRY.md](./TELEMETRY.md) for full details, legal basis, and the complete list of signals collected.
|
|
897
|
+
The package no longer collects any telemetry. The `telemetry` option is still accepted as a deprecated no-op so existing code keeps compiling; it will be removed in the next major version.
|
|
920
898
|
|
|
921
899
|
---
|
|
922
900
|
|
|
@@ -934,7 +912,7 @@ We're actively improving `react-broadcast-sync`! Here are some features and enha
|
|
|
934
912
|
Real browser cross-tab tests using Playwright that go beyond what jsdom mocks can cover.
|
|
935
913
|
|
|
936
914
|
- **Anonymous Usage Telemetry**
|
|
937
|
-
|
|
915
|
+
Removed. The `telemetry` option remains as a deprecated no-op.
|
|
938
916
|
|
|
939
917
|
We're committed to keeping this package lightweight, flexible, and production-ready.
|
|
940
918
|
Your feedback and contributions are welcome — feel free to [open an issue](https://github.com/IdanShalem/react-broadcast-sync/issues)!
|
|
@@ -14,7 +14,7 @@ import { BroadcastActions, BroadcastOptions } from '../types/types';
|
|
|
14
14
|
* - Batching: with `batchingDelayMs > 0` (default 20 ms) outgoing messages are grouped and sent
|
|
15
15
|
* together. Types in `excludedBatchMessageTypes` are sent immediately. Set it to 0 to disable.
|
|
16
16
|
* - Defaults: `cleaningInterval` 1000 ms, `deduplicationTTL` 5 minutes (300000 ms),
|
|
17
|
-
* `cleanupDebounceMs` 0, `batchingDelayMs` 20 ms
|
|
17
|
+
* `cleanupDebounceMs` 0, `batchingDelayMs` 20 ms. Duplicates are dropped by
|
|
18
18
|
* message ID.
|
|
19
19
|
* - Errors are reported through the `error` string (it clears itself after 3 seconds); the hook
|
|
20
20
|
* does not throw for channel errors. `useBroadcastProvider` (not this hook) throws when used
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react"),t=require("tslib"),n=require("react/jsx-runtime");const r="__INTERNAL__",s=()=>Math.random().toString(36).substr(2,9),a=(e,t)=>{const n=`${s()}-${e}-${t}`;return btoa(n).replace(/=+$/,"")},o=e=>!!e.expirationDate&&e.expirationDate<Date.now(),c=(e,t,n,r={})=>{var s;const o=Date.now();return{id:a(n,o),type:e,message:t,timestamp:o,source:n,expirationDate:null!==(s=r.expirationDate)&&void 0!==s?s:r.expirationDuration?o+r.expirationDuration:void 0}},i=(e,t,n="")=>{const s=btoa(`react-broadcast-sync:${e}:${`${t}-${n}`}`);return`${r}:${e}:${s}`},l=e=>e&&"object"==typeof e&&"string"==typeof e.type&&e.type.startsWith(`${r}:`)&&"string"==typeof e.source,u=(e,t,n)=>{if("undefined"==typeof process||!process.env||"true"!==process.env.REACT_APP_DEBUG_BROADCAST)return;const r=`[${(new Date).toISOString()}] [react-broadcast-sync]`;switch(e){case"info":console.log(r,t,n||"");break;case"warn":console.warn(r,t,n||"");break;case"error":console.error(r,t,n||"")}},d={created:e=>u("info","Channel created:",e),closed:e=>u("info","Channel closed:",e)},p={sent:e=>u("info","Message sent:",e),received:e=>u("info","Message received:",e),cleared:e=>u("info","Message cleared:",e),expired:e=>u("info","Message expired:",e),duplicate:e=>u("warn","Duplicate message ignored:",e),allSentCleared:()=>u("info","All sent messages cleared"),allReceivedCleared:()=>u("info","All received messages cleared"),ignored:e=>u("info","Message ignored due to type filter:",e)},g={inProgress:()=>u("warn","Ping already in progress. Skipping call.")},f={started:()=>u("info","Cleanup started"),completed:e=>u("info","Cleanup completed:",e)},h=e=>{const{action:t,channelName:n,type:r,source:s,originalError:a}=e;let o=`${t}`;if(n&&(o+=` | channel: ${n}`),r&&(o+=` | type: ${r}`),s&&(o+=` | source: ${s}`),a instanceof Error)o+=` | cause: ${a.message}`;else if("string"==typeof a)o+=` | cause: ${a}`;else if(null!=a)try{o+=` | cause: ${JSON.stringify(a)}`}catch(e){o+=" | cause: [unserializable]"}u("error","Error:",o)};var y;let m=null!==(y="5464f5ff80645bf551138116c319240b")?y:"";const v=(()=>{var e,t,n;try{return null!==(n=null===(t=(e=crypto).randomUUID)||void 0===t?void 0:t.call(e))&&void 0!==n?n:Math.random().toString(36).slice(2)+Date.now().toString(36)}catch(e){return Math.random().toString(36).slice(2)+Date.now().toString(36)}})(),E=[],b=new Set;let M=null;function S(e,t){return{event:e,properties:Object.assign({token:m,distinct_id:v,time:Math.floor(Date.now()/1e3)},t)}}function C(){return t.__awaiter(this,void 0,void 0,(function*(){if(0===E.length||!m)return;const e=E.splice(0);try{yield fetch("https://api-eu.mixpanel.com/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),keepalive:!0})}catch(e){}}))}function N(){m&&null===M&&(M=setTimeout((()=>{M=null,C()}),3e4))}function w(e){b.has(e)||(b.add(e),E.push(S("method_called",{method:e})),N())}"undefined"!=typeof document&&document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&(null!==M&&(clearTimeout(M),M=null),C())}));const T="CLEAR_SENT_MESSAGES",P="PING",_="PONG";let D;if("test"===process.env.NODE_ENV)try{D=require("react-dom").flushSync}catch(y){}const $=(t,n={},r="hook")=>{const{sourceName:a,cleaningInterval:u=1e3,keepLatestMessage:y=!1,registeredTypes:m=[],namespace:v="",deduplicationTTL:b=3e5,cleanupDebounceMs:M=0,batchingDelayMs:C=20,excludedBatchMessageTypes:$=[],onMessage:k,telemetry:B=!1}=n,[R,A]=e.useState([]),[x,G]=e.useState([]),[I,L]=e.useState(null),[O,j]=e.useState(!1),q=e.useRef(null),F=e.useRef(new Map),U=e.useRef(null),J=e.useRef(null),z=e.useRef([]),V=e.useRef(!1),W=e.useRef(k);W.current=k;const H=e.useMemo((()=>a||`tab-${s()}`),[a]),K=e.useMemo((()=>({CLEAR_SENT_MESSAGES:i(T,t,v),PING:i(P,t,v),PONG:i(_,t,v)})),[t,v]),Q=e.useMemo((()=>v?`${t}-${v}`:t),[t,v]),X=e.useRef(m);X.current=m,e.useEffect((()=>{if(!B)return;const e=[];var t;void 0!==a&&e.push("sourceName"),1e3!==u&&e.push("cleaningInterval"),y&&e.push("keepLatestMessage"),m.length>0&&e.push("registeredTypes"),v&&e.push("namespace"),3e5!==b&&e.push("deduplicationTTL"),M>0&&e.push("cleanupDebounceMs"),20!==C&&e.push("batchingDelayMs"),$.length>0&&e.push("excludedBatchMessageTypes"),void 0!==k&&e.push("onMessage"),t={entry:r,options_used:e,onmessage_shape:void 0===k?"none":"function"==typeof k?"function":"map",batching_enabled:C>0,browser_supported:"undefined"!=typeof BroadcastChannel},E.push(S("channel_init",t)),N()}),[]);const Y=e.useCallback((()=>{A((e=>e.filter((e=>!o(e)))))}),[]),Z=e.useRef(M>0?((e,t)=>{let n,r=null,s=null;const a=(...a)=>{s=a,null!==r&&clearTimeout(r),r=setTimeout((()=>{r=null,null!==s&&(n=e(...s),s=null)}),t)};return a.cancel=()=>{null!==r&&(clearTimeout(r),r=null,s=null)},a.flush=()=>(null!==r&&(clearTimeout(r),r=null,null!==s&&(n=e(...s),s=null)),n),a})(Y,M):Object.assign(Y,{cancel:()=>{}})).current,ee=e.useCallback((e=>{L(e),setTimeout((()=>L(null)),3e3)}),[]),te=e.useCallback(((e=300)=>{if(B&&w("ping"),O)return g.inProgress(),Promise.resolve([]);if(!q.current){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return h({action:"ping",channelName:Q,originalError:e}),ee(e),Promise.resolve([])}D?D((()=>j(!0))):j(!0);const t=new Set;return U.current=t,q.current.postMessage(c(K.PING,null,H)),new Promise((n=>{setTimeout((()=>{j(!1),U.current===t&&(U.current=null),n(Array.from(t))}),e)}))}),[K.PING,H,ee,O,D]),ne=e.useCallback(((e,t,n={})=>{B&&w("postMessage");const r=q.current;if(!r){const t="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return h({action:"postMessage",channelName:Q,type:e,originalError:t}),void ee(t)}const s=c(e,t,H,n);if(!C||C<0||$.includes(e))try{r.postMessage(s)}catch(t){const n="Failed to send message";h({action:"postMessage",channelName:Q,type:e,originalError:n}),ee(n),V.current=!0}else z.current.push(s),J.current||(J.current=setTimeout((()=>{if(V.current)return z.current=[],void(J.current=null);try{r.postMessage(z.current)}catch(t){const n="Failed to send message";h({action:"postMessage",channelName:Q,type:e,originalError:n}),ee(n),V.current=!0}z.current=[],J.current=null}),C));p.sent(s),G((e=>[...e,s]))}),[H,ee,C,$]),re=e.useCallback(((e={})=>{B&&w("clearReceivedMessages");const t=Boolean(e.ids&&e.ids.length||e.types&&e.types.length||e.sources&&e.sources.length);A((n=>t?n.filter((t=>!(e.ids&&e.ids.includes(t.id)||e.types&&e.types.includes(t.type)||e.sources&&e.sources.includes(t.source)))):[])),t||p.allReceivedCleared()}),[]),se=e.useCallback(((e={})=>{var t,n,r;B&&w("clearSentMessages");const{ids:s=[],types:a=[],sync:o=!1}=null!=e?e:{};G((e=>s.length>0||a.length>0?e.filter((e=>{if(e.source!==H)return!0;const t=0===s.length||s.includes(e.id),n=0===a.length||a.includes(e.type);return!(t&&n)})):[])),0===s.length&&0===a.length&&p.allSentCleared(),o&&(null===(t=q.current)||void 0===t||t.postMessage(c(K.CLEAR_SENT_MESSAGES,{ids:null!==(n=e.ids)&&void 0!==n?n:[],types:null!==(r=e.types)&&void 0!==r?r:[]},H)))}),[H,K.CLEAR_SENT_MESSAGES]),ae=e.useCallback(((e={})=>{B&&w("getLatestMessage");const{source:t,type:n}=e;for(let e=R.length-1;e>=0;e--){const r=R[e],s=!t||r.source===t,a=!n||r.type===n;if(s&&a)return r}return null}),[R]),oe=e.useCallback((e=>{var t,n;try{const r=e.data;if(p.received(r),!(e=>Boolean(e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.type&&"string"==typeof e.source&&"number"==typeof e.timestamp))(r))return;if(r.source===H)return;if(l(r)){if(r.type===K.CLEAR_SENT_MESSAGES){const{ids:e=[],types:t=[]}=r.message||{};return void A((n=>[...n.filter((n=>{if(n.source!==r.source)return!0;const s=0===e.length||e.includes(n.id),a=0===t.length||t.includes(n.type);return!(s&&a)}))]))}if(r.type===K.PING)return void(null===(t=q.current)||void 0===t||t.postMessage(c(K.PONG,null,H)));if(r.type===K.PONG){const e=r.source,t=U.current;return void(t&&!1===t.has(e)&&t.add(e))}}if(X.current.length>0&&!X.current.includes(r.type))return void p.ignored(r.type);if(o(r))return void p.expired(r.id);const s=Date.now(),a=F.current.get(r.id);if(a&&s-a<b)return void p.duplicate(r.id);F.current.set(r.id,s),A((e=>y?[r]:[...e,r]));try{const e=W.current;"function"==typeof e?e(r):e&&(null===(n=e[r.type])||void 0===n||n.call(e,r))}catch(e){h({action:"onMessage",channelName:Q,originalError:e instanceof Error?e.message:String(e)})}}catch(e){const t="Error processing broadcast message";h({action:"handleMessage",channelName:Q,originalError:t}),ee(t)}}),[H,y,ee,K,b]),ce=e.useCallback((()=>{B&&w("closeChannel");const e=q.current;e&&"function"==typeof e.close&&(e.removeEventListener("message",oe),e.close(),d.closed(Q),q.current=null)}),[oe,Q]);return e.useEffect((()=>{if("undefined"==typeof BroadcastChannel){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return h({action:"useBroadcastChannel",channelName:Q,originalError:e}),B&&(E.push(S("browser_unsupported",{})),N()),void ee(e)}let e=null;try{e=new BroadcastChannel(Q)}catch(e){const t="Failed to create BroadcastChannel";return h({action:"useBroadcastChannel",channelName:Q,originalError:e instanceof Error?e:String(e)}),void ee(t)}return q.current=e,d.created(Q),e.addEventListener("message",(e=>{Array.isArray(e.data)?e.data.forEach((e=>{oe({data:e})})):oe(e)})),()=>{ce()}}),[Q,oe,ee]),e.useEffect((()=>{if(u<=0)return;const e=setInterval((()=>{f.started();const e=R.length;Z(),f.completed(e-R.length)}),u);return()=>{var t;clearInterval(e),M>0&&(null===(t=Z.cancel)||void 0===t||t.call(Z))}}),[u,Z,M]),e.useEffect((()=>{const e=setInterval((()=>{const e=Date.now();for(const[t,n]of F.current.entries())e-n>=b&&F.current.delete(t)}),6e4);return()=>clearInterval(e)}),[b]),e.useEffect((()=>()=>{if(z.current.length>0&&q.current&&!V.current){try{q.current.postMessage(z.current)}catch(e){const t="Failed to send message";h({action:"useBroadcastChannel",channelName:Q,originalError:e instanceof Error?e:String(e)}),ee(t)}z.current=[],setTimeout((()=>{}),0)}J.current&&(clearTimeout(J.current),J.current=null),V.current=!1}),[]),{channelName:Q,messages:R,sentMessages:x,isPingInProgress:O,ping:te,postMessage:ne,clearReceivedMessages:re,clearSentMessages:se,getLatestMessage:ae,error:I,closeChannel:ce}},k=e.createContext(void 0);exports.BroadcastProvider=({children:e,channelName:t,options:r})=>{const s=$(t,r,"provider");return n.jsx(k.Provider,{value:s,children:e})},exports.useBroadcastChannel=$,exports.useBroadcastProvider=()=>{const t=e.useContext(k);if(!t)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return t};
|
|
1
|
+
"use strict";var e=require("react"),r=require("react/jsx-runtime");const t="__INTERNAL__",n=()=>Math.random().toString(36).substr(2,9),s=(e,r)=>{const t=`${n()}-${e}-${r}`,s=encodeURIComponent(t).replace(/%([0-9A-F]{2})/g,((e,r)=>String.fromCharCode(parseInt(r,16))));return btoa(s).replace(/=+$/,"")},a=e=>!!e.expirationDate&&e.expirationDate<Date.now(),o=(e,r,t,n={})=>{var a;const o=Date.now();return{id:s(t,o),type:e,message:r,timestamp:o,source:t,expirationDate:null!==(a=n.expirationDate)&&void 0!==a?a:n.expirationDuration?o+n.expirationDuration:void 0}},c=(e,r,n="")=>{const s=btoa(`react-broadcast-sync:${e}:${`${r}-${n}`}`);return`${t}:${e}:${s}`},l=e=>e&&"object"==typeof e&&"string"==typeof e.type&&e.type.startsWith(`${t}:`)&&"string"==typeof e.source,i=(e,r,t)=>{if("undefined"==typeof process||!process.env||"true"!==process.env.REACT_APP_DEBUG_BROADCAST)return;const n=`[${(new Date).toISOString()}] [react-broadcast-sync]`;switch(e){case"info":console.log(n,r,t||"");break;case"warn":console.warn(n,r,t||"");break;case"error":console.error(n,r,t||"")}},u={created:e=>i("info","Channel created:",e),closed:e=>i("info","Channel closed:",e)},d={sent:e=>i("info","Message sent:",e),received:e=>i("info","Message received:",e),cleared:e=>i("info","Message cleared:",e),expired:e=>i("info","Message expired:",e),duplicate:e=>i("warn","Duplicate message ignored:",e),allSentCleared:()=>i("info","All sent messages cleared"),allReceivedCleared:()=>i("info","All received messages cleared"),ignored:e=>i("info","Message ignored due to type filter:",e)},p={inProgress:()=>i("warn","Ping already in progress. Skipping call.")},g={started:()=>i("info","Cleanup started"),completed:e=>i("info","Cleanup completed:",e)},f=e=>{const{action:r,channelName:t,type:n,source:s,originalError:a}=e;let o=`${r}`;if(t&&(o+=` | channel: ${t}`),n&&(o+=` | type: ${n}`),s&&(o+=` | source: ${s}`),a instanceof Error)o+=` | cause: ${a.message}`;else if("string"==typeof a)o+=` | cause: ${a}`;else if(null!=a)try{o+=` | cause: ${JSON.stringify(a)}`}catch(e){o+=" | cause: [unserializable]"}i("error","Error:",o)},h="CLEAR_SENT_MESSAGES",y="PING",m="PONG";let v;if("test"===process.env.NODE_ENV)try{v=require("react-dom").flushSync}catch(e){}const E=(r,t={},s="hook")=>{const{sourceName:i,cleaningInterval:E=1e3,keepLatestMessage:C=!1,registeredTypes:S=[],namespace:M="",deduplicationTTL:b=3e5,cleanupDebounceMs:N=0,batchingDelayMs:P=20,excludedBatchMessageTypes:w=[],onMessage:$}=t,[A,R]=e.useState([]),[T,B]=e.useState([]),[_,k]=e.useState(null),[x,D]=e.useState(!1),G=e.useRef(null),I=e.useRef(new Map),L=e.useRef(null),O=e.useRef(null),j=e.useRef([]),F=e.useRef(!1),q=e.useRef($);q.current=$;const U=e.useMemo((()=>i||`tab-${n()}`),[i]),z=e.useMemo((()=>({CLEAR_SENT_MESSAGES:c(h,r,M),PING:c(y,r,M),PONG:c(m,r,M)})),[r,M]),J=e.useMemo((()=>M?`${r}-${M}`:r),[r,M]),V=e.useRef(S);V.current=S;const W=e.useCallback((()=>{R((e=>e.filter((e=>!a(e)))))}),[]),H=e.useRef(N>0?((e,r)=>{let t,n=null,s=null;const a=(...a)=>{s=a,null!==n&&clearTimeout(n),n=setTimeout((()=>{n=null,null!==s&&(t=e(...s),s=null)}),r)};return a.cancel=()=>{null!==n&&(clearTimeout(n),n=null,s=null)},a.flush=()=>(null!==n&&(clearTimeout(n),n=null,null!==s&&(t=e(...s),s=null)),t),a})(W,N):Object.assign(W,{cancel:()=>{}})).current,K=e.useCallback((e=>{k(e),setTimeout((()=>k(null)),3e3)}),[]),Q=e.useCallback(((e=300)=>{if(x)return p.inProgress(),Promise.resolve([]);if(!G.current){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return f({action:"ping",channelName:J,originalError:e}),K(e),Promise.resolve([])}v?v((()=>D(!0))):D(!0);const r=new Set;return L.current=r,G.current.postMessage(o(z.PING,null,U)),new Promise((t=>{setTimeout((()=>{D(!1),L.current===r&&(L.current=null),t(Array.from(r))}),e)}))}),[z.PING,U,K,x,v]),X=e.useCallback(((e,r,t={})=>{const n=G.current;if(!n){const r="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return f({action:"postMessage",channelName:J,type:e,originalError:r}),void K(r)}const s=o(e,r,U,t);if(!P||P<0||w.includes(e))try{n.postMessage(s)}catch(r){const t="Failed to send message";f({action:"postMessage",channelName:J,type:e,originalError:t}),K(t),F.current=!0}else j.current.push(s),O.current||(O.current=setTimeout((()=>{if(F.current)return j.current=[],void(O.current=null);try{n.postMessage(j.current)}catch(r){const t="Failed to send message";f({action:"postMessage",channelName:J,type:e,originalError:t}),K(t),F.current=!0}j.current=[],O.current=null}),P));d.sent(s),B((e=>[...e,s]))}),[U,K,P,w]),Y=e.useCallback(((e={})=>{const r=Boolean(e.ids&&e.ids.length||e.types&&e.types.length||e.sources&&e.sources.length);R((t=>r?t.filter((r=>!(e.ids&&e.ids.includes(r.id)||e.types&&e.types.includes(r.type)||e.sources&&e.sources.includes(r.source)))):[])),r||d.allReceivedCleared()}),[]),Z=e.useCallback(((e={})=>{var r,t,n;const{ids:s=[],types:a=[],sync:c=!1}=null!=e?e:{};B((e=>s.length>0||a.length>0?e.filter((e=>{if(e.source!==U)return!0;const r=0===s.length||s.includes(e.id),t=0===a.length||a.includes(e.type);return!(r&&t)})):[])),0===s.length&&0===a.length&&d.allSentCleared(),c&&(null===(r=G.current)||void 0===r||r.postMessage(o(z.CLEAR_SENT_MESSAGES,{ids:null!==(t=e.ids)&&void 0!==t?t:[],types:null!==(n=e.types)&&void 0!==n?n:[]},U)))}),[U,z.CLEAR_SENT_MESSAGES]),ee=e.useCallback(((e={})=>{const{source:r,type:t}=e;for(let e=A.length-1;e>=0;e--){const n=A[e],s=!r||n.source===r,a=!t||n.type===t;if(s&&a)return n}return null}),[A]),re=e.useCallback((e=>{var r,t;try{const n=e.data;if(d.received(n),!(e=>Boolean(e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.type&&"string"==typeof e.source&&"number"==typeof e.timestamp))(n))return;if(n.source===U)return;if(l(n)){if(n.type===z.CLEAR_SENT_MESSAGES){const{ids:e=[],types:r=[]}=n.message||{};return void R((t=>[...t.filter((t=>{if(t.source!==n.source)return!0;const s=0===e.length||e.includes(t.id),a=0===r.length||r.includes(t.type);return!(s&&a)}))]))}if(n.type===z.PING)return void(null===(r=G.current)||void 0===r||r.postMessage(o(z.PONG,null,U)));if(n.type===z.PONG){const e=n.source,r=L.current;return void(r&&!1===r.has(e)&&r.add(e))}}if(V.current.length>0&&!V.current.includes(n.type))return void d.ignored(n.type);if(a(n))return void d.expired(n.id);const s=Date.now(),c=I.current.get(n.id);if(c&&s-c<b)return void d.duplicate(n.id);I.current.set(n.id,s),R((e=>C?[n]:[...e,n]));try{const e=q.current;"function"==typeof e?e(n):e&&(null===(t=e[n.type])||void 0===t||t.call(e,n))}catch(e){f({action:"onMessage",channelName:J,originalError:e instanceof Error?e.message:String(e)})}}catch(e){const r="Error processing broadcast message";f({action:"handleMessage",channelName:J,originalError:r}),K(r)}}),[U,C,K,z,b]),te=e.useCallback((()=>{const e=G.current;e&&"function"==typeof e.close&&(e.removeEventListener("message",re),e.close(),u.closed(J),G.current=null)}),[re,J]);return e.useEffect((()=>{if("undefined"==typeof BroadcastChannel){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return f({action:"useBroadcastChannel",channelName:J,originalError:e}),void K(e)}let e=null;try{e=new BroadcastChannel(J)}catch(e){const r="Failed to create BroadcastChannel";return f({action:"useBroadcastChannel",channelName:J,originalError:e instanceof Error?e:String(e)}),void K(r)}return G.current=e,u.created(J),e.addEventListener("message",(e=>{Array.isArray(e.data)?e.data.forEach((e=>{re({data:e})})):re(e)})),()=>{te()}}),[J,re,K]),e.useEffect((()=>{if(E<=0)return;const e=setInterval((()=>{g.started();const e=A.length;H(),g.completed(e-A.length)}),E);return()=>{var r;clearInterval(e),N>0&&(null===(r=H.cancel)||void 0===r||r.call(H))}}),[E,H,N]),e.useEffect((()=>{const e=setInterval((()=>{const e=Date.now();for(const[r,t]of I.current.entries())e-t>=b&&I.current.delete(r)}),6e4);return()=>clearInterval(e)}),[b]),e.useEffect((()=>()=>{if(j.current.length>0&&G.current&&!F.current){try{G.current.postMessage(j.current)}catch(e){const r="Failed to send message";f({action:"useBroadcastChannel",channelName:J,originalError:e instanceof Error?e:String(e)}),K(r)}j.current=[],setTimeout((()=>{}),0)}O.current&&(clearTimeout(O.current),O.current=null),F.current=!1}),[]),{channelName:J,messages:A,sentMessages:T,isPingInProgress:x,ping:Q,postMessage:X,clearReceivedMessages:Y,clearSentMessages:Z,getLatestMessage:ee,error:_,closeChannel:te}},C=e.createContext(void 0);exports.BroadcastProvider=({children:e,channelName:t,options:n})=>{const s=E(t,n,"provider");return r.jsx(C.Provider,{value:s,children:e})},exports.useBroadcastChannel=E,exports.useBroadcastProvider=()=>{const r=e.useContext(C);if(!r)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return r};
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/utils/messageUtils.ts","../src/utils/debug.ts","../src/utils/telemetry.ts","../src/hooks/useBroadcastChannel.ts","../src/BroadcastProvider.tsx"],"sourcesContent":[null,null,null,null,null],"names":["INTERNAL_PREFIX","generateRandomPart","Math","random","toString","substr","generateMessageId","source","timestamp","raw","btoa","replace","isMessageExpired","message","expirationDate","Date","now","createMessage","type","content","options","id","_a","expirationDuration","undefined","getInternalMessageType","baseType","channelName","namespace","hash","isValidInternalClearMessage","startsWith","log","level","data","process","env","REACT_APP_DEBUG_BROADCAST","prefix","toISOString","console","warn","error","debug","created","name","closed","sent","received","cleared","messageId","expired","duplicate","allSentCleared","allReceivedCleared","ignored","messageType","inProgress","started","completed","removedCount","context","action","originalError","Error","JSON","stringify","MIXPANEL_TOKEN","sessionId","_c","_b","crypto","randomUUID","call","slice","_d","queue","calledMethods","Set","flushTimer","buildEvent","props","event","properties","Object","assign","token","distinct_id","time","floor","flush","length","batch","splice","fetch","method","headers","body","keepalive","scheduleFlush","setTimeout","trackMethodCalled","has","add","push","document","addEventListener","visibilityState","clearTimeout","INTERNAL_MESSAGE_TYPES","flushSyncFn","NODE_ENV","require","flushSync","useBroadcastChannel","_entry","sourceName","cleaningInterval","keepLatestMessage","registeredTypes","deduplicationTTL","cleanupDebounceMs","batchingDelayMs","excludedBatchMessageTypes","onMessage","telemetry","messages","setMessages","useState","sentMessages","setSentMessages","setError","isPingInProgress","setIsPingInProgress","channel","useRef","receivedMessageIds","Map","activeSourcesCollector","batchingTimeoutRef","batchingMessagesRef","batchingErrorRef","onMessageRef","current","useMemo","internalTypes","CLEAR_SENT_MESSAGES","PING","PONG","resolvedChannelName","registeredTypesRef","useEffect","optionsUsed","entry","options_used","onmessage_shape","batching_enabled","browser_supported","BroadcastChannel","performCleanup","useCallback","prev","filter","msg","debouncedCleanup","debounce","fn","wait","result","timeoutId","lastArgs","debounced","args","cancel","setErrorMessage","ping","timeoutMs","Promise","resolve","collector","postMessage","Array","from","messageContent","channelCurrent","includes","e","clearReceivedMessages","hasFilters","Boolean","ids","types","sources","clearSentMessages","sync","idMatches","typeMatches","getLatestMessage","i","sourceMatches","handleMessage","isValidMessage","pongSource","receivedAt","get","set","cb","String","closeChannel","bc","close","removeEventListener","isArray","forEach","interval","setInterval","before","clearInterval","key","entries","delete","BroadcastChannelContext","createContext","BroadcastProvider","children","BroadcastChannelActions","_jsx","jsx","Provider","value","useBroadcastProvider","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/utils/messageUtils.ts","../src/utils/debug.ts","../src/hooks/useBroadcastChannel.ts","../src/BroadcastProvider.tsx"],"sourcesContent":[null,null,null,null],"names":["INTERNAL_PREFIX","generateRandomPart","Math","random","toString","substr","generateMessageId","source","timestamp","raw","binary","encodeURIComponent","replace","_match","hex","String","fromCharCode","parseInt","btoa","isMessageExpired","message","expirationDate","Date","now","createMessage","type","content","options","id","_a","expirationDuration","undefined","getInternalMessageType","baseType","channelName","namespace","hash","isValidInternalClearMessage","startsWith","log","level","data","process","env","REACT_APP_DEBUG_BROADCAST","prefix","toISOString","console","warn","error","debug","created","name","closed","sent","received","cleared","messageId","expired","duplicate","allSentCleared","allReceivedCleared","ignored","messageType","inProgress","started","completed","removedCount","context","action","originalError","Error","JSON","stringify","INTERNAL_MESSAGE_TYPES","flushSyncFn","NODE_ENV","require","flushSync","useBroadcastChannel","_entry","sourceName","cleaningInterval","keepLatestMessage","registeredTypes","deduplicationTTL","cleanupDebounceMs","batchingDelayMs","excludedBatchMessageTypes","onMessage","messages","setMessages","useState","sentMessages","setSentMessages","setError","isPingInProgress","setIsPingInProgress","channel","useRef","receivedMessageIds","Map","activeSourcesCollector","batchingTimeoutRef","batchingMessagesRef","batchingErrorRef","onMessageRef","current","useMemo","internalTypes","CLEAR_SENT_MESSAGES","PING","PONG","resolvedChannelName","registeredTypesRef","performCleanup","useCallback","prev","filter","msg","debouncedCleanup","debounce","fn","wait","result","timeoutId","lastArgs","debounced","args","clearTimeout","setTimeout","cancel","flush","Object","assign","setErrorMessage","ping","timeoutMs","Promise","resolve","collector","Set","postMessage","Array","from","messageContent","channelCurrent","includes","e","push","clearReceivedMessages","hasFilters","Boolean","ids","length","types","sources","clearSentMessages","sync","idMatches","typeMatches","_b","_c","getLatestMessage","i","sourceMatches","handleMessage","event","isValidMessage","pongSource","has","add","receivedAt","get","set","cb","call","closeChannel","bc","close","removeEventListener","useEffect","BroadcastChannel","addEventListener","isArray","forEach","interval","setInterval","before","clearInterval","key","entries","delete","BroadcastChannelContext","createContext","BroadcastProvider","children","BroadcastChannelActions","_jsx","jsx","Provider","value","useBroadcastProvider","useContext"],"mappings":"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"}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as e,useRef as t,useMemo as n,useEffect as r,useCallback as s,createContext as o,useContext as a}from"react";import{__awaiter as c}from"tslib";import{jsx as i}from"react/jsx-runtime";const l="__INTERNAL__",u=()=>Math.random().toString(36).substr(2,9),d=(e,t)=>{const n=`${u()}-${e}-${t}`;return btoa(n).replace(/=+$/,"")},p=e=>!!e.expirationDate&&e.expirationDate<Date.now(),g=(e,t,n,r={})=>{var s;const o=Date.now();return{id:d(n,o),type:e,message:t,timestamp:o,source:n,expirationDate:null!==(s=r.expirationDate)&&void 0!==s?s:r.expirationDuration?o+r.expirationDuration:void 0}},h=(e,t,n="")=>{const r=btoa(`react-broadcast-sync:${e}:${`${t}-${n}`}`);return`${l}:${e}:${r}`},f=e=>e&&"object"==typeof e&&"string"==typeof e.type&&e.type.startsWith(`${l}:`)&&"string"==typeof e.source,m=(e,t,n)=>{if("undefined"==typeof process||!process.env||"true"!==process.env.REACT_APP_DEBUG_BROADCAST)return;const r=`[${(new Date).toISOString()}] [react-broadcast-sync]`;switch(e){case"info":console.log(r,t,n||"");break;case"warn":console.warn(r,t,n||"");break;case"error":console.error(r,t,n||"")}},y={created:e=>m("info","Channel created:",e),closed:e=>m("info","Channel closed:",e)},v={sent:e=>m("info","Message sent:",e),received:e=>m("info","Message received:",e),cleared:e=>m("info","Message cleared:",e),expired:e=>m("info","Message expired:",e),duplicate:e=>m("warn","Duplicate message ignored:",e),allSentCleared:()=>m("info","All sent messages cleared"),allReceivedCleared:()=>m("info","All received messages cleared"),ignored:e=>m("info","Message ignored due to type filter:",e)},E={inProgress:()=>m("warn","Ping already in progress. Skipping call.")},M={started:()=>m("info","Cleanup started"),completed:e=>m("info","Cleanup completed:",e)},S=e=>{const{action:t,channelName:n,type:r,source:s,originalError:o}=e;let a=`${t}`;if(n&&(a+=` | channel: ${n}`),r&&(a+=` | type: ${r}`),s&&(a+=` | source: ${s}`),o instanceof Error)a+=` | cause: ${o.message}`;else if("string"==typeof o)a+=` | cause: ${o}`;else if(null!=o)try{a+=` | cause: ${JSON.stringify(o)}`}catch(e){a+=" | cause: [unserializable]"}m("error","Error:",a)};var b;let N=null!==(b="5464f5ff80645bf551138116c319240b")?b:"";const w=(()=>{var e,t,n;try{return null!==(n=null===(t=(e=crypto).randomUUID)||void 0===t?void 0:t.call(e))&&void 0!==n?n:Math.random().toString(36).slice(2)+Date.now().toString(36)}catch(e){return Math.random().toString(36).slice(2)+Date.now().toString(36)}})(),T=[],C=new Set;let P=null;function _(e,t){return{event:e,properties:Object.assign({token:N,distinct_id:w,time:Math.floor(Date.now()/1e3)},t)}}function D(){return c(this,void 0,void 0,(function*(){if(0===T.length||!N)return;const e=T.splice(0);try{yield fetch("https://api-eu.mixpanel.com/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),keepalive:!0})}catch(e){}}))}function $(){N&&null===P&&(P=setTimeout((()=>{P=null,D()}),3e4))}function A(e){C.has(e)||(C.add(e),T.push(_("method_called",{method:e})),$())}"undefined"!=typeof document&&document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&(null!==P&&(clearTimeout(P),P=null),D())}));const B="CLEAR_SENT_MESSAGES",G="PING",I="PONG";let L;if("test"===process.env.NODE_ENV)try{L=require("react-dom").flushSync}catch(b){}const x=(o,a={},c="hook")=>{const{sourceName:i,cleaningInterval:l=1e3,keepLatestMessage:d=!1,registeredTypes:m=[],namespace:b="",deduplicationTTL:N=3e5,cleanupDebounceMs:w=0,batchingDelayMs:C=20,excludedBatchMessageTypes:P=[],onMessage:D,telemetry:x=!1}=a,[k,O]=e([]),[R,j]=e([]),[F,U]=e(null),[J,q]=e(!1),z=t(null),V=t(new Map),W=t(null),H=t(null),K=t([]),Q=t(!1),X=t(D);X.current=D;const Y=n((()=>i||`tab-${u()}`),[i]),Z=n((()=>({CLEAR_SENT_MESSAGES:h(B,o,b),PING:h(G,o,b),PONG:h(I,o,b)})),[o,b]),ee=n((()=>b?`${o}-${b}`:o),[o,b]),te=t(m);te.current=m,r((()=>{if(!x)return;const e=[];var t;void 0!==i&&e.push("sourceName"),1e3!==l&&e.push("cleaningInterval"),d&&e.push("keepLatestMessage"),m.length>0&&e.push("registeredTypes"),b&&e.push("namespace"),3e5!==N&&e.push("deduplicationTTL"),w>0&&e.push("cleanupDebounceMs"),20!==C&&e.push("batchingDelayMs"),P.length>0&&e.push("excludedBatchMessageTypes"),void 0!==D&&e.push("onMessage"),t={entry:c,options_used:e,onmessage_shape:void 0===D?"none":"function"==typeof D?"function":"map",batching_enabled:C>0,browser_supported:"undefined"!=typeof BroadcastChannel},T.push(_("channel_init",t)),$()}),[]);const ne=s((()=>{O((e=>e.filter((e=>!p(e)))))}),[]),re=t(w>0?((e,t)=>{let n,r=null,s=null;const o=(...o)=>{s=o,null!==r&&clearTimeout(r),r=setTimeout((()=>{r=null,null!==s&&(n=e(...s),s=null)}),t)};return o.cancel=()=>{null!==r&&(clearTimeout(r),r=null,s=null)},o.flush=()=>(null!==r&&(clearTimeout(r),r=null,null!==s&&(n=e(...s),s=null)),n),o})(ne,w):Object.assign(ne,{cancel:()=>{}})).current,se=s((e=>{U(e),setTimeout((()=>U(null)),3e3)}),[]),oe=s(((e=300)=>{if(x&&A("ping"),J)return E.inProgress(),Promise.resolve([]);if(!z.current){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"ping",channelName:ee,originalError:e}),se(e),Promise.resolve([])}L?L((()=>q(!0))):q(!0);const t=new Set;return W.current=t,z.current.postMessage(g(Z.PING,null,Y)),new Promise((n=>{setTimeout((()=>{q(!1),W.current===t&&(W.current=null),n(Array.from(t))}),e)}))}),[Z.PING,Y,se,J,L]),ae=s(((e,t,n={})=>{x&&A("postMessage");const r=z.current;if(!r){const t="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"postMessage",channelName:ee,type:e,originalError:t}),void se(t)}const s=g(e,t,Y,n);if(!C||C<0||P.includes(e))try{r.postMessage(s)}catch(t){const n="Failed to send message";S({action:"postMessage",channelName:ee,type:e,originalError:n}),se(n),Q.current=!0}else K.current.push(s),H.current||(H.current=setTimeout((()=>{if(Q.current)return K.current=[],void(H.current=null);try{r.postMessage(K.current)}catch(t){const n="Failed to send message";S({action:"postMessage",channelName:ee,type:e,originalError:n}),se(n),Q.current=!0}K.current=[],H.current=null}),C));v.sent(s),j((e=>[...e,s]))}),[Y,se,C,P]),ce=s(((e={})=>{x&&A("clearReceivedMessages");const t=Boolean(e.ids&&e.ids.length||e.types&&e.types.length||e.sources&&e.sources.length);O((n=>t?n.filter((t=>!(e.ids&&e.ids.includes(t.id)||e.types&&e.types.includes(t.type)||e.sources&&e.sources.includes(t.source)))):[])),t||v.allReceivedCleared()}),[]),ie=s(((e={})=>{var t,n,r;x&&A("clearSentMessages");const{ids:s=[],types:o=[],sync:a=!1}=null!=e?e:{};j((e=>s.length>0||o.length>0?e.filter((e=>{if(e.source!==Y)return!0;const t=0===s.length||s.includes(e.id),n=0===o.length||o.includes(e.type);return!(t&&n)})):[])),0===s.length&&0===o.length&&v.allSentCleared(),a&&(null===(t=z.current)||void 0===t||t.postMessage(g(Z.CLEAR_SENT_MESSAGES,{ids:null!==(n=e.ids)&&void 0!==n?n:[],types:null!==(r=e.types)&&void 0!==r?r:[]},Y)))}),[Y,Z.CLEAR_SENT_MESSAGES]),le=s(((e={})=>{x&&A("getLatestMessage");const{source:t,type:n}=e;for(let e=k.length-1;e>=0;e--){const r=k[e],s=!t||r.source===t,o=!n||r.type===n;if(s&&o)return r}return null}),[k]),ue=s((e=>{var t,n;try{const r=e.data;if(v.received(r),!(e=>Boolean(e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.type&&"string"==typeof e.source&&"number"==typeof e.timestamp))(r))return;if(r.source===Y)return;if(f(r)){if(r.type===Z.CLEAR_SENT_MESSAGES){const{ids:e=[],types:t=[]}=r.message||{};return void O((n=>[...n.filter((n=>{if(n.source!==r.source)return!0;const s=0===e.length||e.includes(n.id),o=0===t.length||t.includes(n.type);return!(s&&o)}))]))}if(r.type===Z.PING)return void(null===(t=z.current)||void 0===t||t.postMessage(g(Z.PONG,null,Y)));if(r.type===Z.PONG){const e=r.source,t=W.current;return void(t&&!1===t.has(e)&&t.add(e))}}if(te.current.length>0&&!te.current.includes(r.type))return void v.ignored(r.type);if(p(r))return void v.expired(r.id);const s=Date.now(),o=V.current.get(r.id);if(o&&s-o<N)return void v.duplicate(r.id);V.current.set(r.id,s),O((e=>d?[r]:[...e,r]));try{const e=X.current;"function"==typeof e?e(r):e&&(null===(n=e[r.type])||void 0===n||n.call(e,r))}catch(e){S({action:"onMessage",channelName:ee,originalError:e instanceof Error?e.message:String(e)})}}catch(e){const t="Error processing broadcast message";S({action:"handleMessage",channelName:ee,originalError:t}),se(t)}}),[Y,d,se,Z,N]),de=s((()=>{x&&A("closeChannel");const e=z.current;e&&"function"==typeof e.close&&(e.removeEventListener("message",ue),e.close(),y.closed(ee),z.current=null)}),[ue,ee]);return r((()=>{if("undefined"==typeof BroadcastChannel){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"useBroadcastChannel",channelName:ee,originalError:e}),x&&(T.push(_("browser_unsupported",{})),$()),void se(e)}let e=null;try{e=new BroadcastChannel(ee)}catch(e){const t="Failed to create BroadcastChannel";return S({action:"useBroadcastChannel",channelName:ee,originalError:e instanceof Error?e:String(e)}),void se(t)}return z.current=e,y.created(ee),e.addEventListener("message",(e=>{Array.isArray(e.data)?e.data.forEach((e=>{ue({data:e})})):ue(e)})),()=>{de()}}),[ee,ue,se]),r((()=>{if(l<=0)return;const e=setInterval((()=>{M.started();const e=k.length;re(),M.completed(e-k.length)}),l);return()=>{var t;clearInterval(e),w>0&&(null===(t=re.cancel)||void 0===t||t.call(re))}}),[l,re,w]),r((()=>{const e=setInterval((()=>{const e=Date.now();for(const[t,n]of V.current.entries())e-n>=N&&V.current.delete(t)}),6e4);return()=>clearInterval(e)}),[N]),r((()=>()=>{if(K.current.length>0&&z.current&&!Q.current){try{z.current.postMessage(K.current)}catch(e){const t="Failed to send message";S({action:"useBroadcastChannel",channelName:ee,originalError:e instanceof Error?e:String(e)}),se(t)}K.current=[],setTimeout((()=>{}),0)}H.current&&(clearTimeout(H.current),H.current=null),Q.current=!1}),[]),{channelName:ee,messages:k,sentMessages:R,isPingInProgress:J,ping:oe,postMessage:ae,clearReceivedMessages:ce,clearSentMessages:ie,getLatestMessage:le,error:F,closeChannel:de}},k=o(void 0),O=({children:e,channelName:t,options:n})=>{const r=x(t,n,"provider");return i(k.Provider,{value:r,children:e})},R=()=>{const e=a(k);if(!e)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return e};export{O as BroadcastProvider,x as useBroadcastChannel,R as useBroadcastProvider};
|
|
1
|
+
import{useState as e,useRef as r,useMemo as t,useCallback as n,useEffect as s,createContext as o,useContext as a}from"react";import{jsx as c}from"react/jsx-runtime";const i="__INTERNAL__",l=()=>Math.random().toString(36).substr(2,9),u=(e,r)=>{const t=`${l()}-${e}-${r}`,n=encodeURIComponent(t).replace(/%([0-9A-F]{2})/g,((e,r)=>String.fromCharCode(parseInt(r,16))));return btoa(n).replace(/=+$/,"")},d=e=>!!e.expirationDate&&e.expirationDate<Date.now(),p=(e,r,t,n={})=>{var s;const o=Date.now();return{id:u(t,o),type:e,message:r,timestamp:o,source:t,expirationDate:null!==(s=n.expirationDate)&&void 0!==s?s:n.expirationDuration?o+n.expirationDuration:void 0}},g=(e,r,t="")=>{const n=btoa(`react-broadcast-sync:${e}:${`${r}-${t}`}`);return`${i}:${e}:${n}`},f=e=>e&&"object"==typeof e&&"string"==typeof e.type&&e.type.startsWith(`${i}:`)&&"string"==typeof e.source,h=(e,r,t)=>{if("undefined"==typeof process||!process.env||"true"!==process.env.REACT_APP_DEBUG_BROADCAST)return;const n=`[${(new Date).toISOString()}] [react-broadcast-sync]`;switch(e){case"info":console.log(n,r,t||"");break;case"warn":console.warn(n,r,t||"");break;case"error":console.error(n,r,t||"")}},y={created:e=>h("info","Channel created:",e),closed:e=>h("info","Channel closed:",e)},m={sent:e=>h("info","Message sent:",e),received:e=>h("info","Message received:",e),cleared:e=>h("info","Message cleared:",e),expired:e=>h("info","Message expired:",e),duplicate:e=>h("warn","Duplicate message ignored:",e),allSentCleared:()=>h("info","All sent messages cleared"),allReceivedCleared:()=>h("info","All received messages cleared"),ignored:e=>h("info","Message ignored due to type filter:",e)},v={inProgress:()=>h("warn","Ping already in progress. Skipping call.")},E={started:()=>h("info","Cleanup started"),completed:e=>h("info","Cleanup completed:",e)},S=e=>{const{action:r,channelName:t,type:n,source:s,originalError:o}=e;let a=`${r}`;if(t&&(a+=` | channel: ${t}`),n&&(a+=` | type: ${n}`),s&&(a+=` | source: ${s}`),o instanceof Error)a+=` | cause: ${o.message}`;else if("string"==typeof o)a+=` | cause: ${o}`;else if(null!=o)try{a+=` | cause: ${JSON.stringify(o)}`}catch(e){a+=" | cause: [unserializable]"}h("error","Error:",a)},M="CLEAR_SENT_MESSAGES",N="PING",C="PONG";let b;if("test"===process.env.NODE_ENV)try{b=require("react-dom").flushSync}catch(e){}const P=(o,a={},c="hook")=>{const{sourceName:i,cleaningInterval:u=1e3,keepLatestMessage:h=!1,registeredTypes:P=[],namespace:w="",deduplicationTTL:$=3e5,cleanupDebounceMs:A=0,batchingDelayMs:T=20,excludedBatchMessageTypes:_=[],onMessage:D}=a,[B,G]=e([]),[I,x]=e([]),[R,L]=e(null),[O,k]=e(!1),F=r(null),j=r(new Map),U=r(null),q=r(null),z=r([]),J=r(!1),V=r(D);V.current=D;const W=t((()=>i||`tab-${l()}`),[i]),H=t((()=>({CLEAR_SENT_MESSAGES:g(M,o,w),PING:g(N,o,w),PONG:g(C,o,w)})),[o,w]),K=t((()=>w?`${o}-${w}`:o),[o,w]),Q=r(P);Q.current=P;const X=n((()=>{G((e=>e.filter((e=>!d(e)))))}),[]),Y=r(A>0?((e,r)=>{let t,n=null,s=null;const o=(...o)=>{s=o,null!==n&&clearTimeout(n),n=setTimeout((()=>{n=null,null!==s&&(t=e(...s),s=null)}),r)};return o.cancel=()=>{null!==n&&(clearTimeout(n),n=null,s=null)},o.flush=()=>(null!==n&&(clearTimeout(n),n=null,null!==s&&(t=e(...s),s=null)),t),o})(X,A):Object.assign(X,{cancel:()=>{}})).current,Z=n((e=>{L(e),setTimeout((()=>L(null)),3e3)}),[]),ee=n(((e=300)=>{if(O)return v.inProgress(),Promise.resolve([]);if(!F.current){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"ping",channelName:K,originalError:e}),Z(e),Promise.resolve([])}b?b((()=>k(!0))):k(!0);const r=new Set;return U.current=r,F.current.postMessage(p(H.PING,null,W)),new Promise((t=>{setTimeout((()=>{k(!1),U.current===r&&(U.current=null),t(Array.from(r))}),e)}))}),[H.PING,W,Z,O,b]),re=n(((e,r,t={})=>{const n=F.current;if(!n){const r="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"postMessage",channelName:K,type:e,originalError:r}),void Z(r)}const s=p(e,r,W,t);if(!T||T<0||_.includes(e))try{n.postMessage(s)}catch(r){const t="Failed to send message";S({action:"postMessage",channelName:K,type:e,originalError:t}),Z(t),J.current=!0}else z.current.push(s),q.current||(q.current=setTimeout((()=>{if(J.current)return z.current=[],void(q.current=null);try{n.postMessage(z.current)}catch(r){const t="Failed to send message";S({action:"postMessage",channelName:K,type:e,originalError:t}),Z(t),J.current=!0}z.current=[],q.current=null}),T));m.sent(s),x((e=>[...e,s]))}),[W,Z,T,_]),te=n(((e={})=>{const r=Boolean(e.ids&&e.ids.length||e.types&&e.types.length||e.sources&&e.sources.length);G((t=>r?t.filter((r=>!(e.ids&&e.ids.includes(r.id)||e.types&&e.types.includes(r.type)||e.sources&&e.sources.includes(r.source)))):[])),r||m.allReceivedCleared()}),[]),ne=n(((e={})=>{var r,t,n;const{ids:s=[],types:o=[],sync:a=!1}=null!=e?e:{};x((e=>s.length>0||o.length>0?e.filter((e=>{if(e.source!==W)return!0;const r=0===s.length||s.includes(e.id),t=0===o.length||o.includes(e.type);return!(r&&t)})):[])),0===s.length&&0===o.length&&m.allSentCleared(),a&&(null===(r=F.current)||void 0===r||r.postMessage(p(H.CLEAR_SENT_MESSAGES,{ids:null!==(t=e.ids)&&void 0!==t?t:[],types:null!==(n=e.types)&&void 0!==n?n:[]},W)))}),[W,H.CLEAR_SENT_MESSAGES]),se=n(((e={})=>{const{source:r,type:t}=e;for(let e=B.length-1;e>=0;e--){const n=B[e],s=!r||n.source===r,o=!t||n.type===t;if(s&&o)return n}return null}),[B]),oe=n((e=>{var r,t;try{const n=e.data;if(m.received(n),!(e=>Boolean(e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.type&&"string"==typeof e.source&&"number"==typeof e.timestamp))(n))return;if(n.source===W)return;if(f(n)){if(n.type===H.CLEAR_SENT_MESSAGES){const{ids:e=[],types:r=[]}=n.message||{};return void G((t=>[...t.filter((t=>{if(t.source!==n.source)return!0;const s=0===e.length||e.includes(t.id),o=0===r.length||r.includes(t.type);return!(s&&o)}))]))}if(n.type===H.PING)return void(null===(r=F.current)||void 0===r||r.postMessage(p(H.PONG,null,W)));if(n.type===H.PONG){const e=n.source,r=U.current;return void(r&&!1===r.has(e)&&r.add(e))}}if(Q.current.length>0&&!Q.current.includes(n.type))return void m.ignored(n.type);if(d(n))return void m.expired(n.id);const s=Date.now(),o=j.current.get(n.id);if(o&&s-o<$)return void m.duplicate(n.id);j.current.set(n.id,s),G((e=>h?[n]:[...e,n]));try{const e=V.current;"function"==typeof e?e(n):e&&(null===(t=e[n.type])||void 0===t||t.call(e,n))}catch(e){S({action:"onMessage",channelName:K,originalError:e instanceof Error?e.message:String(e)})}}catch(e){const r="Error processing broadcast message";S({action:"handleMessage",channelName:K,originalError:r}),Z(r)}}),[W,h,Z,H,$]),ae=n((()=>{const e=F.current;e&&"function"==typeof e.close&&(e.removeEventListener("message",oe),e.close(),y.closed(K),F.current=null)}),[oe,K]);return s((()=>{if("undefined"==typeof BroadcastChannel){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"useBroadcastChannel",channelName:K,originalError:e}),void Z(e)}let e=null;try{e=new BroadcastChannel(K)}catch(e){const r="Failed to create BroadcastChannel";return S({action:"useBroadcastChannel",channelName:K,originalError:e instanceof Error?e:String(e)}),void Z(r)}return F.current=e,y.created(K),e.addEventListener("message",(e=>{Array.isArray(e.data)?e.data.forEach((e=>{oe({data:e})})):oe(e)})),()=>{ae()}}),[K,oe,Z]),s((()=>{if(u<=0)return;const e=setInterval((()=>{E.started();const e=B.length;Y(),E.completed(e-B.length)}),u);return()=>{var r;clearInterval(e),A>0&&(null===(r=Y.cancel)||void 0===r||r.call(Y))}}),[u,Y,A]),s((()=>{const e=setInterval((()=>{const e=Date.now();for(const[r,t]of j.current.entries())e-t>=$&&j.current.delete(r)}),6e4);return()=>clearInterval(e)}),[$]),s((()=>()=>{if(z.current.length>0&&F.current&&!J.current){try{F.current.postMessage(z.current)}catch(e){const r="Failed to send message";S({action:"useBroadcastChannel",channelName:K,originalError:e instanceof Error?e:String(e)}),Z(r)}z.current=[],setTimeout((()=>{}),0)}q.current&&(clearTimeout(q.current),q.current=null),J.current=!1}),[]),{channelName:K,messages:B,sentMessages:I,isPingInProgress:O,ping:ee,postMessage:re,clearReceivedMessages:te,clearSentMessages:ne,getLatestMessage:se,error:R,closeChannel:ae}},w=o(void 0),$=({children:e,channelName:r,options:t})=>{const n=P(r,t,"provider");return c(w.Provider,{value:n,children:e})},A=()=>{const e=a(w);if(!e)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return e};export{$ as BroadcastProvider,P as useBroadcastChannel,A as useBroadcastProvider};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/utils/messageUtils.ts","../src/utils/debug.ts","../src/utils/telemetry.ts","../src/hooks/useBroadcastChannel.ts","../src/BroadcastProvider.tsx"],"sourcesContent":[null,null,null,null,null],"names":["INTERNAL_PREFIX","generateRandomPart","Math","random","toString","substr","generateMessageId","source","timestamp","raw","btoa","replace","isMessageExpired","message","expirationDate","Date","now","createMessage","type","content","options","id","_a","expirationDuration","undefined","getInternalMessageType","baseType","channelName","namespace","hash","isValidInternalClearMessage","startsWith","log","level","data","process","env","REACT_APP_DEBUG_BROADCAST","prefix","toISOString","console","warn","error","debug","created","name","closed","sent","received","cleared","messageId","expired","duplicate","allSentCleared","allReceivedCleared","ignored","messageType","inProgress","started","completed","removedCount","context","action","originalError","Error","JSON","stringify","MIXPANEL_TOKEN","sessionId","_c","_b","crypto","randomUUID","call","slice","_d","queue","calledMethods","Set","flushTimer","buildEvent","props","event","properties","Object","assign","token","distinct_id","time","floor","flush","length","batch","splice","fetch","method","headers","body","keepalive","scheduleFlush","setTimeout","trackMethodCalled","has","add","push","document","addEventListener","visibilityState","clearTimeout","INTERNAL_MESSAGE_TYPES","flushSyncFn","NODE_ENV","require","flushSync","useBroadcastChannel","_entry","sourceName","cleaningInterval","keepLatestMessage","registeredTypes","deduplicationTTL","cleanupDebounceMs","batchingDelayMs","excludedBatchMessageTypes","onMessage","telemetry","messages","setMessages","useState","sentMessages","setSentMessages","setError","isPingInProgress","setIsPingInProgress","channel","useRef","receivedMessageIds","Map","activeSourcesCollector","batchingTimeoutRef","batchingMessagesRef","batchingErrorRef","onMessageRef","current","useMemo","internalTypes","CLEAR_SENT_MESSAGES","PING","PONG","resolvedChannelName","registeredTypesRef","useEffect","optionsUsed","entry","options_used","onmessage_shape","batching_enabled","browser_supported","BroadcastChannel","performCleanup","useCallback","prev","filter","msg","debouncedCleanup","debounce","fn","wait","result","timeoutId","lastArgs","debounced","args","cancel","setErrorMessage","ping","timeoutMs","Promise","resolve","collector","postMessage","Array","from","messageContent","channelCurrent","includes","e","clearReceivedMessages","hasFilters","Boolean","ids","types","sources","clearSentMessages","sync","idMatches","typeMatches","getLatestMessage","i","sourceMatches","handleMessage","isValidMessage","pongSource","receivedAt","get","set","cb","String","closeChannel","bc","close","removeEventListener","isArray","forEach","interval","setInterval","before","clearInterval","key","entries","delete","BroadcastChannelContext","createContext","BroadcastProvider","children","BroadcastChannelActions","_jsx","Provider","value","useBroadcastProvider","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/utils/messageUtils.ts","../src/utils/debug.ts","../src/hooks/useBroadcastChannel.ts","../src/BroadcastProvider.tsx"],"sourcesContent":[null,null,null,null],"names":["INTERNAL_PREFIX","generateRandomPart","Math","random","toString","substr","generateMessageId","source","timestamp","raw","binary","encodeURIComponent","replace","_match","hex","String","fromCharCode","parseInt","btoa","isMessageExpired","message","expirationDate","Date","now","createMessage","type","content","options","id","_a","expirationDuration","undefined","getInternalMessageType","baseType","channelName","namespace","hash","isValidInternalClearMessage","startsWith","log","level","data","process","env","REACT_APP_DEBUG_BROADCAST","prefix","toISOString","console","warn","error","debug","created","name","closed","sent","received","cleared","messageId","expired","duplicate","allSentCleared","allReceivedCleared","ignored","messageType","inProgress","started","completed","removedCount","context","action","originalError","Error","JSON","stringify","INTERNAL_MESSAGE_TYPES","flushSyncFn","NODE_ENV","require","flushSync","useBroadcastChannel","_entry","sourceName","cleaningInterval","keepLatestMessage","registeredTypes","deduplicationTTL","cleanupDebounceMs","batchingDelayMs","excludedBatchMessageTypes","onMessage","messages","setMessages","useState","sentMessages","setSentMessages","setError","isPingInProgress","setIsPingInProgress","channel","useRef","receivedMessageIds","Map","activeSourcesCollector","batchingTimeoutRef","batchingMessagesRef","batchingErrorRef","onMessageRef","current","useMemo","internalTypes","CLEAR_SENT_MESSAGES","PING","PONG","resolvedChannelName","registeredTypesRef","performCleanup","useCallback","prev","filter","msg","debouncedCleanup","debounce","fn","wait","result","timeoutId","lastArgs","debounced","args","clearTimeout","setTimeout","cancel","flush","Object","assign","setErrorMessage","ping","timeoutMs","Promise","resolve","collector","Set","postMessage","Array","from","messageContent","channelCurrent","includes","e","push","clearReceivedMessages","hasFilters","Boolean","ids","length","types","sources","clearSentMessages","sync","idMatches","typeMatches","_b","_c","getLatestMessage","i","sourceMatches","handleMessage","event","isValidMessage","pongSource","has","add","receivedAt","get","set","cb","call","closeChannel","bc","close","removeEventListener","useEffect","BroadcastChannel","addEventListener","isArray","forEach","interval","setInterval","before","clearInterval","key","entries","delete","BroadcastChannelContext","createContext","BroadcastProvider","children","BroadcastChannelActions","_jsx","Provider","value","useBroadcastProvider","useContext"],"mappings":"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"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -32,19 +32,9 @@ export interface BroadcastOptions {
|
|
|
32
32
|
*/
|
|
33
33
|
onMessage?: MessageCallback | OnMessageMap;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* signals are sent to the maintainer: which options are in use, which
|
|
39
|
-
* methods are called, and whether the hook or provider entry point is used.
|
|
40
|
-
* No channel names, source names, or message content are sent.
|
|
41
|
-
*
|
|
42
|
-
* Set to `true` to opt in:
|
|
43
|
-
* ```tsx
|
|
44
|
-
* useBroadcastChannel('my-channel', { telemetry: true });
|
|
45
|
-
* ```
|
|
46
|
-
*
|
|
47
|
-
* See TELEMETRY.md in the package repository for full details.
|
|
35
|
+
* @deprecated No-op. The package no longer collects telemetry. The option is still
|
|
36
|
+
* accepted so existing code that passes `telemetry` keeps compiling; it will be removed
|
|
37
|
+
* in the next major version.
|
|
48
38
|
*/
|
|
49
39
|
telemetry?: boolean;
|
|
50
40
|
}
|
package/llms.txt
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> React hook and provider for cross-tab messaging over BroadcastChannel, with helpers for manually syncing state between tabs (no automatic state replication).
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Install: `npm install react-broadcast-sync`. Same origin only. Generated from README.md by scripts/generate-llms-txt.mjs; do not edit by hand.
|
|
6
6
|
|
|
7
7
|
## Syncing Shared State (filters, settings)
|
|
8
8
|
|
|
@@ -92,25 +92,25 @@ interface BroadcastOptions {
|
|
|
92
92
|
batchingDelayMs?: number; // Delay in ms to batch outgoing messages (default: 20). If > 0, messages are batched and sent together.
|
|
93
93
|
excludedBatchMessageTypes?: string[]; // Message types to always send immediately, never batched (default: []).
|
|
94
94
|
onMessage?: MessageCallback | OnMessageMap; // Callback(s) fired when a received message passes all filters (default: undefined).
|
|
95
|
-
telemetry?: boolean; //
|
|
95
|
+
telemetry?: boolean; // Deprecated no-op.
|
|
96
96
|
}
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
#### Default Values
|
|
100
100
|
|
|
101
|
-
| Option | Default Value | Description
|
|
102
|
-
| --------------------------- | ------------- |
|
|
103
|
-
| `sourceName` | `undefined` | Auto-generated if not provided
|
|
104
|
-
| `cleaningInterval` | `1000` | 1 second between cleanup runs
|
|
105
|
-
| `keepLatestMessage` | `false` | Keep all messages by default
|
|
106
|
-
| `registeredTypes` | `[]` | Accept all message types by default
|
|
107
|
-
| `namespace` | `''` | No namespace by default
|
|
108
|
-
| `deduplicationTTL` | `300000` | 5 minutes (5 × 60 × 1000 ms)
|
|
109
|
-
| `cleanupDebounceMs` | `0` | No debounce by default
|
|
110
|
-
| `batchingDelayMs` | `20` | Batch delay in ms (0 = off)
|
|
111
|
-
| `excludedBatchMessageTypes` | `[]` | Types never batched
|
|
112
|
-
| `onMessage` | `undefined` | Callback(s) for received messages
|
|
113
|
-
| `telemetry` | `false` |
|
|
101
|
+
| Option | Default Value | Description |
|
|
102
|
+
| --------------------------- | ------------- | ------------------------------------------- |
|
|
103
|
+
| `sourceName` | `undefined` | Auto-generated if not provided |
|
|
104
|
+
| `cleaningInterval` | `1000` | 1 second between cleanup runs |
|
|
105
|
+
| `keepLatestMessage` | `false` | Keep all messages by default |
|
|
106
|
+
| `registeredTypes` | `[]` | Accept all message types by default |
|
|
107
|
+
| `namespace` | `''` | No namespace by default |
|
|
108
|
+
| `deduplicationTTL` | `300000` | 5 minutes (5 × 60 × 1000 ms) |
|
|
109
|
+
| `cleanupDebounceMs` | `0` | No debounce by default |
|
|
110
|
+
| `batchingDelayMs` | `20` | Batch delay in ms (0 = off) |
|
|
111
|
+
| `excludedBatchMessageTypes` | `[]` | Types never batched |
|
|
112
|
+
| `onMessage` | `undefined` | Callback(s) for received messages |
|
|
113
|
+
| `telemetry` | `false` | Deprecated no-op. No telemetry is collected |
|
|
114
114
|
|
|
115
115
|
#### Return Value
|
|
116
116
|
|
|
@@ -318,37 +318,9 @@ useBroadcastChannel('my-channel', {
|
|
|
318
318
|
|
|
319
319
|
---
|
|
320
320
|
|
|
321
|
-
#### `telemetry` Option
|
|
321
|
+
#### `telemetry` Option (deprecated)
|
|
322
322
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
**What is collected:**
|
|
326
|
-
|
|
327
|
-
- Which `BroadcastOptions` keys are present (not their values)
|
|
328
|
-
- The shape of `onMessage` (`none` / `function` / `map`)
|
|
329
|
-
- Whether batching is enabled
|
|
330
|
-
- Whether `BroadcastChannel` is supported in the browser
|
|
331
|
-
- Which action methods (`postMessage`, `ping`, etc.) are called at least once per session
|
|
332
|
-
- Hook vs. provider entry point
|
|
333
|
-
|
|
334
|
-
**What is never collected:**
|
|
335
|
-
|
|
336
|
-
- Channel names, source names, message content, or message types
|
|
337
|
-
- Any application user identifiers in the event payload (Mixpanel may process IP addresses from request metadata)
|
|
338
|
-
|
|
339
|
-
Telemetry is **off by default**. Pass `telemetry: true` to opt in for a channel:
|
|
340
|
-
|
|
341
|
-
```tsx
|
|
342
|
-
useBroadcastChannel('my-channel', { telemetry: true });
|
|
343
|
-
// or
|
|
344
|
-
<BroadcastProvider channelName="my-channel" options={{ telemetry: true }} />;
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
**Upgrading to 2.0.0 from 1.x:** telemetry is now off by default. Omit the option or leave `telemetry: false` to keep it off; pass `telemetry: true` only if you want to opt in. This default change is breaking.
|
|
348
|
-
|
|
349
|
-
Events are batched and flushed in a single request when the tab is hidden or after 30 seconds. A failed request is silently discarded and never surfaces to your application.
|
|
350
|
-
|
|
351
|
-
See [TELEMETRY.md](./TELEMETRY.md) for the full legal notice.
|
|
323
|
+
The package no longer collects any telemetry. The `telemetry` option is still accepted as a deprecated no-op so existing code keeps compiling; it will be removed in the next major version.
|
|
352
324
|
|
|
353
325
|
---
|
|
354
326
|
|
|
@@ -359,9 +331,8 @@ See [TELEMETRY.md](./TELEMETRY.md) for the full legal notice.
|
|
|
359
331
|
- **`cleanupDebounceMs` vs `cleaningInterval`:** cleanup is debounced. If `cleanupDebounceMs` is longer than `cleaningInterval`, each interval tick restarts the debounce and expired messages may never be removed. Keep `cleanupDebounceMs` smaller than `cleaningInterval`.
|
|
360
332
|
- **Deduplication is by message ID**, not content (see [Message Deduplication](#message-deduplication)).
|
|
361
333
|
- **Same origin only:** `BroadcastChannel` does not cross origins, and a tab does not receive its own messages.
|
|
362
|
-
- **
|
|
334
|
+
- **No telemetry:** the `telemetry` option is a deprecated no-op (see [Telemetry](#telemetry)).
|
|
363
335
|
|
|
364
336
|
## Links
|
|
365
337
|
|
|
366
338
|
- [README](https://github.com/IdanShalem/react-broadcast-sync#readme)
|
|
367
|
-
- [Telemetry notice](https://github.com/IdanShalem/react-broadcast-sync/blob/main/TELEMETRY.md)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-broadcast-sync",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"description": "React hook and provider for cross-tab messaging over BroadcastChannel, with helpers for manually syncing state between tabs (no automatic state replication).",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
"llms.txt",
|
|
13
13
|
"skills",
|
|
14
14
|
"README.md",
|
|
15
|
-
"LICENSE"
|
|
16
|
-
"TELEMETRY.md"
|
|
15
|
+
"LICENSE"
|
|
17
16
|
],
|
|
18
17
|
"exports": {
|
|
19
18
|
".": {
|
|
@@ -35,7 +34,6 @@
|
|
|
35
34
|
"prepack": "npm run build",
|
|
36
35
|
"generate:llms": "node scripts/generate-llms-txt.mjs",
|
|
37
36
|
"check:llms": "node scripts/generate-llms-txt.mjs --check",
|
|
38
|
-
"verify:telemetry": "node scripts/verify-telemetry-token.mjs",
|
|
39
37
|
"dev:integration": "vite integration/app --port 5199 --strictPort",
|
|
40
38
|
"test:integration": "playwright test"
|
|
41
39
|
},
|
|
@@ -99,7 +97,7 @@
|
|
|
99
97
|
"bugs": {
|
|
100
98
|
"url": "https://github.com/IdanShalem/react-broadcast-sync/issues"
|
|
101
99
|
},
|
|
102
|
-
"homepage": "https://
|
|
100
|
+
"homepage": "https://react-broadcast-sync-docs.vercel.app",
|
|
103
101
|
"peerDependencies": {
|
|
104
102
|
"react": ">=16.8.0",
|
|
105
103
|
"react-dom": ">=16.8.0"
|
|
@@ -133,14 +131,14 @@
|
|
|
133
131
|
"@semantic-release/git": "^10.0.1",
|
|
134
132
|
"@semantic-release/github": "^9.2.6",
|
|
135
133
|
"@semantic-release/npm": "^11.0.2",
|
|
136
|
-
"@testing-library/dom": "^
|
|
134
|
+
"@testing-library/dom": "^10.4.2",
|
|
137
135
|
"@testing-library/jest-dom": "^6.4.2",
|
|
138
|
-
"@testing-library/react": "^
|
|
136
|
+
"@testing-library/react": "^16.3.3",
|
|
139
137
|
"@testing-library/user-event": "^14.5.2",
|
|
140
138
|
"@types/jest": "^29.5.12",
|
|
141
139
|
"@types/node": "^20.11.24",
|
|
142
|
-
"@types/react": "^
|
|
143
|
-
"@types/react-dom": "^
|
|
140
|
+
"@types/react": "^19.3.0",
|
|
141
|
+
"@types/react-dom": "^19.3.0",
|
|
144
142
|
"@vitejs/plugin-react": "^4.2.1",
|
|
145
143
|
"commitlint": "^19.0.3",
|
|
146
144
|
"dotenv": "^17.3.1",
|
|
@@ -153,8 +151,8 @@
|
|
|
153
151
|
"jest-environment-jsdom": "^29.7.0",
|
|
154
152
|
"lint-staged": "^15.2.2",
|
|
155
153
|
"prettier": "^3.2.5",
|
|
156
|
-
"react": "^
|
|
157
|
-
"react-dom": "^
|
|
154
|
+
"react": "^19.3.0",
|
|
155
|
+
"react-dom": "^19.3.0",
|
|
158
156
|
"rollup": "^4.12.0",
|
|
159
157
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
160
158
|
"semantic-release": "^23.0.2",
|
|
@@ -14,7 +14,7 @@ Cross-tab messaging for React over the browser `BroadcastChannel` API. Version 2
|
|
|
14
14
|
- Messages are not replayed. A tab opened later sees only messages sent after it opened.
|
|
15
15
|
- Deduplication is by message ID, not content.
|
|
16
16
|
- There is no automatic state replication. You send messages and apply them yourself.
|
|
17
|
-
-
|
|
17
|
+
- The package collects no telemetry; the `telemetry` option is a deprecated no-op. Do not add it.
|
|
18
18
|
|
|
19
19
|
## Install
|
|
20
20
|
|
|
@@ -125,7 +125,7 @@ Use one channel per topic (or `namespace`) so each listener only gets its own me
|
|
|
125
125
|
- Using the same `sourceName` in every tab.
|
|
126
126
|
- `cleanupDebounceMs` larger than `cleaningInterval`, which can stop expired messages from being removed.
|
|
127
127
|
- Expecting cross-origin delivery. `BroadcastChannel` is same origin only.
|
|
128
|
-
-
|
|
128
|
+
- Passing the deprecated `telemetry` option.
|
|
129
129
|
|
|
130
130
|
## More
|
|
131
131
|
|
package/TELEMETRY.md
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Telemetry Notice — react-broadcast-sync
|
|
2
|
-
|
|
3
|
-
## What is collected
|
|
4
|
-
|
|
5
|
-
**Privacy-first: telemetry is off by default.** No usage events are sent to Mixpanel unless the application explicitly passes `telemetry: true` to `useBroadcastChannel` or `BroadcastProvider`. When enabled, structural usage signals help the maintainer prioritise features and fix issues.
|
|
6
|
-
|
|
7
|
-
When telemetry is enabled, the following structural signals are sent on channel mount or method use:
|
|
8
|
-
|
|
9
|
-
| Signal | Description |
|
|
10
|
-
| ------------------- | --------------------------------------------------------------------------------------------- |
|
|
11
|
-
| `entry` | Whether `useBroadcastChannel` or `BroadcastProvider` was used |
|
|
12
|
-
| `options_used` | Names of `BroadcastOptions` keys that differ from their default values |
|
|
13
|
-
| `onmessage_shape` | Whether `onMessage` is absent, a function, or a type-keyed map |
|
|
14
|
-
| `batching_enabled` | Whether `batchingDelayMs > 0` |
|
|
15
|
-
| `browser_supported` | Whether `BroadcastChannel` is available in the browser |
|
|
16
|
-
| `method_called` | Which action methods (`postMessage`, `ping`, etc.) were called at least once per page session |
|
|
17
|
-
|
|
18
|
-
## What is never collected
|
|
19
|
-
|
|
20
|
-
- Channel names
|
|
21
|
-
- Source names (`sourceName`)
|
|
22
|
-
- Message content or message types
|
|
23
|
-
- Application user identifiers in the event payload
|
|
24
|
-
- IP addresses in the event payload (Mixpanel may process them from request metadata; see its privacy policy)
|
|
25
|
-
- Any data from the messages your application sends or receives
|
|
26
|
-
|
|
27
|
-
## Session identifier
|
|
28
|
-
|
|
29
|
-
Each page load generates a random, ephemeral session ID using `crypto.randomUUID()`. This ID:
|
|
30
|
-
|
|
31
|
-
- Is **not persisted** to cookies, `localStorage`, `sessionStorage`, or any other storage mechanism.
|
|
32
|
-
- Is **regenerated on every page load**, making it impossible to track users across sessions.
|
|
33
|
-
- Does not by itself identify a user, though the recipient may process request metadata such as IP addresses.
|
|
34
|
-
|
|
35
|
-
The session ID is not persisted by this package, but Mixpanel may process request metadata such as IP addresses. Applications enabling telemetry should assess their own privacy obligations and disclose this transfer to their users.
|
|
36
|
-
|
|
37
|
-
## Data processor
|
|
38
|
-
|
|
39
|
-
Usage statistics are processed by [Mixpanel](https://mixpanel.com). Mixpanel's privacy policy is available at [https://mixpanel.com/legal/privacy-policy/](https://mixpanel.com/legal/privacy-policy/).
|
|
40
|
-
|
|
41
|
-
## How to opt in
|
|
42
|
-
|
|
43
|
-
Telemetry is disabled by default. Enable it explicitly per hook or provider with `telemetry: true`:
|
|
44
|
-
|
|
45
|
-
```tsx
|
|
46
|
-
// Enable for a specific channel
|
|
47
|
-
useBroadcastChannel('my-channel', { telemetry: true });
|
|
48
|
-
|
|
49
|
-
// Enable via BroadcastProvider
|
|
50
|
-
<BroadcastProvider channelName="my-channel" options={{ telemetry: true }}>
|
|
51
|
-
<App />
|
|
52
|
-
</BroadcastProvider>;
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
There is no penalty or degraded functionality when leaving telemetry off. Upgrading from a version where telemetry was enabled by default? No option is needed to keep it off; use `telemetry: true` only if you want to opt in.
|
|
56
|
-
|
|
57
|
-
## Contact
|
|
58
|
-
|
|
59
|
-
Questions or concerns about this telemetry notice can be raised by [opening an issue](https://github.com/IdanShalem/react-broadcast-sync/issues) on the project repository.
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface ChannelInitProps {
|
|
2
|
-
entry: 'hook' | 'provider';
|
|
3
|
-
options_used: string[];
|
|
4
|
-
onmessage_shape: 'none' | 'function' | 'map';
|
|
5
|
-
batching_enabled: boolean;
|
|
6
|
-
browser_supported: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare function trackChannelInit(props: ChannelInitProps): void;
|
|
9
|
-
export declare function trackMethodCalled(method: string): void;
|
|
10
|
-
export declare function trackBrowserUnsupported(): void;
|
|
11
|
-
/** @internal — exposed only for unit tests, do not use in application code */
|
|
12
|
-
export declare function _resetForTesting(): void;
|
|
13
|
-
/** @internal — allows tests to inject a fake token to exercise flush logic */
|
|
14
|
-
export declare function _setTokenForTesting(t: string): void;
|