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 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://bundlephobia.com/result?p=react-broadcast-sync">
25
- <img alt="Bundlephobia" src="https://badgen.net/bundlephobia/minzip/react-broadcast-sync" />
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; // Privacy-first: off by default. Pass true to opt in.
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` | Anonymous usage stats. Pass `true` to opt in |
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
- Telemetry is **off by default**. Pass `telemetry: true` to opt in for a channel:
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
- - **Telemetry is off by default:** pass `telemetry: true` to opt in (see [Telemetry](#telemetry)).
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 + real Chromium tabs)
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 serves a small React app from `integration/app` and drives two
888
- real browser tabs through the public hook API: message delivery between tabs,
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
- **Privacy-first: telemetry is off by default.** Only when you explicitly pass `telemetry: true` does `react-broadcast-sync` send structural usage statistics to Mixpanel. No channel names, source names, message content, or application user identifiers are included in the event payload. Mixpanel may process request metadata, including IP addresses; see TELEMETRY.md.
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
- ✅ Released — off by default in 2.0.0. Only with `telemetry: true` does the package send structural signals (options used, methods called, hook vs. provider). No message content or application user identifiers in the event payload; Mixpanel may process request metadata such as IP addresses.
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, `telemetry` false. Duplicates are dropped by
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
@@ -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
@@ -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":"qKAEA,MAAMA,EAAkB,eAIXC,EAAqBA,IAAMC,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,GAMhEC,EAAoBA,CAACC,EAAgBC,KAChD,MAAMC,EAAM,GAAGR,OAAwBM,KAAUC,IAG3CE,EAASC,mBAAmBF,GAAKG,QAAQ,mBAAmB,CAACC,EAAQC,IACzEC,OAAOC,aAAaC,SAASH,EAAK,OAEpC,OAAOI,KAAKR,GAAQE,QAAQ,MAAO,KAgBxBO,EAAoBC,KACxBA,EAAQC,gBAAiBD,EAAQC,eAAiBC,KAAKC,MAInDC,EAAgBA,CAC3BC,EACAC,EACAnB,EACAoB,EAAoE,CAAA,WAEpE,MAAMnB,EAAYc,KAAKC,MACvB,MAAO,CACLK,GAAItB,EAAkBC,EAAQC,GAC9BiB,OACAL,QAASM,EACTlB,YACAD,SACAc,eAEE,UADAM,EAAQN,sBACR,IAAAQ,EAAAA,EAACF,EAAQG,mBAAqBtB,EAAYmB,EAAQG,wBAAqBC,IAIhEC,EAAyBA,CACpCC,EACAC,EACAC,EAAY,MAEZ,MAEMC,EAAOlB,KADC,wBAAae,KADP,GAAGC,KAAeC,OAGtC,MAAO,GAAGnC,KAAmBiC,KAAYG,KAO9BC,EAA+BjB,GAExCA,GACmB,iBAAZA,GACiB,iBAAjBA,EAAQK,MACAL,EAAQK,KARba,WAAW,GAAGtC,OASE,iBAAnBoB,EAAQb,OCrEbgC,EAAMA,CAACC,EAAiBpB,EAAiBqB,KAC7C,GATuB,oBAAZC,UAA2BA,QAAQC,KACK,SAA1CD,QAAQC,IAAIC,0BAQD,OAEpB,MACMC,EAAS,KADG,IAAIvB,MAAOwB,wCAE7B,OAAQN,GACN,IAAK,OACHO,QAAQR,IAAIM,EAAQzB,EAASqB,GAAQ,IACrC,MACF,IAAK,OACHM,QAAQC,KAAKH,EAAQzB,EAASqB,GAAQ,IACtC,MACF,IAAK,QACHM,QAAQE,MAAMJ,EAAQzB,EAASqB,GAAQ,MAKhCS,EACF,CACPC,QAAUC,GAAiBb,EAAI,OAAQ,mBAAoBa,GAC3DC,OAASD,GAAiBb,EAAI,OAAQ,kBAAmBa,IAHhDF,EAKF,CACPI,KAAOlC,GAAiBmB,EAAI,OAAQ,gBAAiBnB,GACrDmC,SAAWnC,GAAiBmB,EAAI,OAAQ,oBAAqBnB,GAC7DoC,QAAUC,GAAsBlB,EAAI,OAAQ,mBAAoBkB,GAChEC,QAAUD,GAAsBlB,EAAI,OAAQ,mBAAoBkB,GAChEE,UAAYF,GAAsBlB,EAAI,OAAQ,6BAA8BkB,GAC5EG,eAAgBA,IAAMrB,EAAI,OAAQ,6BAClCsB,mBAAoBA,IAAMtB,EAAI,OAAQ,iCACtCuB,QAAUC,GACRxB,EAAI,OAAQ,sCAAuCwB,IAd5Cb,EAgBL,CACJc,WAAYA,IAAMzB,EAAI,OAAQ,6CAjBrBW,EAmBF,CACPe,QAASA,IAAM1B,EAAI,OAAQ,mBAC3B2B,UAAYC,GAAyB5B,EAAI,OAAQ,qBAAsB4B,IArB9DjB,EAuBHkB,IAON,MAAMC,OAAEA,EAAMnC,YAAEA,EAAWT,KAAEA,EAAIlB,OAAEA,EAAM+D,cAAEA,GAAkBF,EAE7D,IAAIhD,EAAU,GAAGiD,IAIjB,GAHInC,IAAad,GAAW,eAAec,KACvCT,IAAML,GAAW,YAAYK,KAC7BlB,IAAQa,GAAW,cAAcb,KACjC+D,aAAyBC,MAC3BnD,GAAW,aAAakD,EAAclD,eACjC,GAA6B,iBAAlBkD,EAChBlD,GAAW,aAAakD,SACnB,GAAqB,MAAjBA,EACT,IACElD,GAAW,aAAaoD,KAAKC,UAAUH,IACxC,CAAC,MAAAzC,GACAT,GAAW,4BACb,CAGFmB,EAAI,QAAS,SAAUnB,ICrDrBsD,EACiB,sBADjBA,EAEE,OAFFA,EAGE,OAGR,IAAIC,EACJ,GAA6B,SAAzBjC,QAAQC,IAAIiC,SACd,IAEED,EAAcE,QAAQ,aAAaC,SACpC,CAAC,MAAAjD,GACA,CAgCG,MAAMkD,EAAsBA,CACjC7C,EACAP,EAA4B,CAAE,EAE9BqD,EAA8B,UAE9B,MAAMC,WACJA,EAAUC,iBACVA,EAAmB,IAAIC,kBACvBA,GAAoB,EAAKC,gBACzBA,EAAkB,GAAEjD,UACpBA,EAAY,GAAEkD,iBACdA,EAAmB,IAAaC,kBAChCA,EAAoB,EAACC,gBACrBA,EAAkB,GAAEC,0BACpBA,EAA4B,GAAEC,UAC9BA,GACE9D,GAGG+D,EAAUC,GAAeC,EAA6B,KACtDC,EAAcC,GAAmBF,EAA6B,KAC9D3C,EAAO8C,GAAYH,EAAwB,OAC3CI,EAAkBC,GAAuBL,GAAS,GAGnDM,EAAUC,EAAgC,MAC1CC,EAAqBD,EAAO,IAAIE,KAChCC,EAAyBH,EAA2B,MACpDI,EAAqBJ,EAA8B,MACnDK,EAAsBL,EAA2B,IACjDM,EAAmBN,GAAO,GAC1BO,EAAeP,EAAmDV,GACxEiB,EAAaC,QAAUlB,EAGvB,MAAMlF,EAASqG,GAAQ,IAAM3B,GF/FS,OAAOhF,OE+FoB,CAACgF,IAC5D4B,EAAgBD,GACpB,KAAO,CACLE,oBAAqB9E,EACnB0C,EACAxC,EACAC,GAEF4E,KAAM/E,EAAuB0C,EAA6BxC,EAAaC,GACvE6E,KAAMhF,EAAuB0C,EAA6BxC,EAAaC,MAEzE,CAACD,EAAaC,IAGV8E,EAAsBL,GAAQ,IAE3BzE,EAAY,GAAGD,KAAeC,IAAcD,GAClD,CAACA,EAAaC,IAEX+E,EAAqBf,EAAiBf,GAC5C8B,EAAmBP,QAAUvB,EAE7B,MAAM+B,EAAiBC,GAAY,KACjCzB,GAAY0B,GAAQA,EAAKC,QAAOC,IAAQpG,EAAiBoG,SACxD,IAEGC,EAAmBrB,EAIvBb,EAAoB,EFlDAmC,EACtBC,EACAC,KAKA,IAEIC,EAFAC,EAAkD,KAClDC,EAAiC,KAGrC,MAAMC,EAAYA,IAAIC,KACpBF,EAAWE,EACO,OAAdH,GACFI,aAAaJ,GAEfA,EAAYK,YAAW,KACrBL,EAAY,KACK,OAAbC,IACFF,EAASF,KAAMI,GACfA,EAAW,QAEZH,IAuBL,OApBAI,EAAUI,OAAS,KACC,OAAdN,IACFI,aAAaJ,GACbA,EAAY,KACZC,EAAW,OAIfC,EAAUK,MAAQ,KACE,OAAdP,IACFI,aAAaJ,GACbA,EAAY,KACK,OAAbC,IACFF,EAASF,KAAMI,GACfA,EAAW,OAGRF,GAGFG,GEMDN,CAASN,EAAgB7B,GACzB+C,OAAOC,OAAOnB,EAAgB,CAAEgB,OAAQA,UAC5CxB,QAEI4B,EAAkBnB,GAAanE,IACnC8C,EAAS9C,GACTiF,YAAW,IAAMnC,EAAS,OAAO,OAChC,IAEGyC,GAAOpB,GACX,CAACqB,EAAoB,OACnB,GAAIzC,EAEF,OADA9C,EAAWc,aACJ0E,QAAQC,QAAQ,IAGzB,IAAKzC,EAAQS,QAAS,CACpB,MAAM1D,EACJ,yFAOF,OANAC,EAAY,CACVmB,OAAQ,OACRnC,YAAa+E,EACb3C,cAAerB,IAEjBsF,EAAgBtF,GACTyF,QAAQC,QAAQ,GACzB,CAGIhE,EACFA,GAAY,IAAMsB,GAAoB,KAEtCA,GAAoB,GAEtB,MAAM2C,EAAY,IAAIC,IAKtB,OAJAvC,EAAuBK,QAAUiC,EAEjC1C,EAAQS,QAAQmC,YAAYtH,EAAcqF,EAAcE,KAAM,KAAMxG,IAE7D,IAAImI,SAAQC,IACjBT,YAAW,KACTjC,GAAoB,GAChBK,EAAuBK,UAAYiC,IACrCtC,EAAuBK,QAAU,MAEnCgC,EAAQI,MAAMC,KAAKJ,MAClBH,QAGP,CAAC5B,EAAcE,KAAMxG,EAAQgI,EAAiBvC,EAAkBrB,IAG5DmE,GAAc1B,GAClB,CAACrD,EAAqBkF,EAAqBtH,EAA8B,MACvE,MAAMuH,EAAiBhD,EAAQS,QAC/B,IAAKuC,EAAgB,CACnB,MAAMjG,EACJ,yFAQF,OAPAC,EAAY,CACVmB,OAAQ,cACRnC,YAAa+E,EACbxF,KAAMsC,EACNO,cAAerB,SAEjBsF,EAAgBtF,EAElB,CAEA,MAAM7B,EAAUI,EAAcuC,EAAakF,EAAgB1I,EAAQoB,GAInE,IADG4D,GAAmBA,EAAkB,GAAKC,EAA0B2D,SAASpF,GAE9E,IACEmF,EAAeJ,YAAY1H,EAC5B,CAAC,MAAOgI,GACP,MAAMnG,EAAQ,yBACdC,EAAY,CACVmB,OAAQ,cACRnC,YAAa+E,EACbxF,KAAMsC,EACNO,cAAerB,IAEjBsF,EAAgBtF,GAChBwD,EAAiBE,SAAU,CAC7B,MAEAH,EAAoBG,QAAQ0C,KAAKjI,GAC5BmF,EAAmBI,UACtBJ,EAAmBI,QAAUuB,YAAW,KACtC,GAAIzB,EAAiBE,QAGnB,OAFAH,EAAoBG,QAAU,QAC9BJ,EAAmBI,QAAU,MAG/B,IACEuC,EAAeJ,YAAYtC,EAAoBG,QAChD,CAAC,MAAOyC,GACP,MAAMnG,EAAQ,yBACdC,EAAY,CACVmB,OAAQ,cACRnC,YAAa+E,EACbxF,KAAMsC,EACNO,cAAerB,IAEjBsF,EAAgBtF,GAChBwD,EAAiBE,SAAU,CAC7B,CACAH,EAAoBG,QAAU,GAC9BJ,EAAmBI,QAAU,OAC5BpB,IAGPrC,EAAcI,KAAKlC,GACnB0E,GAAgBuB,GAAQ,IAAIA,EAAMjG,OAEpC,CAACb,EAAQgI,EAAiBhD,EAAiBC,IAGvC8D,GAAwBlC,GAAY,CAACzF,EAAwC,CAAA,KACjF,MAAM4H,EAAaC,QAChB7H,EAAQ8H,KAAO9H,EAAQ8H,IAAIC,QACzB/H,EAAQgI,OAAShI,EAAQgI,MAAMD,QAC/B/H,EAAQiI,SAAWjI,EAAQiI,QAAQF,QAGxC/D,GAAY0B,GACVkC,EACIlC,EAAKC,QACHC,KACI5F,EAAQ8H,KAAO9H,EAAQ8H,IAAIN,SAAS5B,EAAI3F,KACxCD,EAAQgI,OAAShI,EAAQgI,MAAMR,SAAS5B,EAAI9F,OAC5CE,EAAQiI,SAAWjI,EAAQiI,QAAQT,SAAS5B,EAAIhH,WAEtD,KAEDgJ,GACHrG,EAAcW,uBAEf,IAEGgG,GAAoBzC,GACxB,CAACzF,EAAoC,CAAA,eACnC,MAAM8H,IAAEA,EAAM,GAAEE,MAAEA,EAAQ,GAAEG,KAAEA,GAAO,GAAUnI,QAAAA,EAAW,CAAE,EAC5DmE,GAAgBuB,GACdoC,EAAIC,OAAS,GAAKC,EAAMD,OAAS,EAC7BrC,EAAKC,QAAOC,IAEV,GAAIA,EAAIhH,SAAWA,EAAQ,OAAO,EAKlC,MAAMwJ,EAA2B,IAAfN,EAAIC,QAAgBD,EAAIN,SAAS5B,EAAI3F,IACjDoI,EAA+B,IAAjBL,EAAMD,QAAgBC,EAAMR,SAAS5B,EAAI9F,MAG7D,QAASsI,GAAaC,MAExB,KAEa,IAAfP,EAAIC,QAAiC,IAAjBC,EAAMD,QAC5BxG,EAAcU,iBAEZkG,IACa,QAAfjI,EAAAqE,EAAQS,eAAO,IAAA9E,GAAAA,EAAEiH,YACftH,EACEqF,EAAcC,oBACd,CAAE2C,YAAKQ,EAAAtI,EAAQ8H,mBAAO,GAAIE,MAAoB,UAAbhI,EAAQgI,aAAK,IAAAO,EAAAA,EAAI,IAClD3J,OAKR,CAACA,EAAQsG,EAAcC,sBAGnBqD,GAAmB/C,GACvB,CAACzF,EAAmC,CAAA,KAClC,MAAMpB,OAAEA,EAAMkB,KAAEA,GAASE,EAEzB,IAAK,IAAIyI,EAAI1E,EAASgE,OAAS,EAAGU,GAAK,EAAGA,IAAK,CAC7C,MAAM7C,EAAM7B,EAAS0E,GACfC,GAAiB9J,GAAUgH,EAAIhH,SAAWA,EAC1CyJ,GAAevI,GAAQ8F,EAAI9F,OAASA,EAC1C,GAAI4I,GAAiBL,EACnB,OAAOzC,CAEX,CAEA,OAAO,OAET,CAAC7B,IAGG4E,GAAgBlD,GACnBmD,YACC,IACE,MAAMnJ,EAA4BmJ,EAAM9H,KAGxC,GAFAS,EAAcK,SAASnC,IFvTAA,IACtBoI,QACLpI,GACqB,iBAAZA,GACe,iBAAfA,EAAQQ,IACS,iBAAjBR,EAAQK,MACW,iBAAnBL,EAAQb,QACc,iBAAtBa,EAAQZ,WEkTRgK,CAAepJ,GAAU,OAC9B,GAAIA,EAAQb,SAAWA,EAAQ,OAC/B,GAAI8B,EAA4BjB,GAAU,CACxC,GAAIA,EAAQK,OAASoF,EAAcC,oBAAqB,CACtD,MAAM2C,IAAEA,EAAM,GAAEE,MAAEA,EAAQ,IAAQvI,EAAgBA,SAAW,CAAE,EAiB/D,YAfAuE,GAAY0B,GAAQ,IACfA,EAAKC,QAAOC,IAEb,GAAIA,EAAIhH,SAAWa,EAAQb,OAAQ,OAAO,EAK1C,MAAMwJ,EAA2B,IAAfN,EAAIC,QAAgBD,EAAIN,SAAS5B,EAAI3F,IACjDoI,EAA+B,IAAjBL,EAAMD,QAAgBC,EAAMR,SAAS5B,EAAI9F,MAE7D,QAASsI,GAAaC,QAK5B,CACA,GAAI5I,EAAQK,OAASoF,EAAcE,KAEjC,YADiB,QAAjBlF,EAAAqE,EAAQS,eAAS,IAAA9E,GAAAA,EAAAiH,YAAYtH,EAAcqF,EAAcG,KAAM,KAAMzG,KAIvE,GAAIa,EAAQK,OAASoF,EAAcG,KAAM,CACvC,MAAMyD,EAAarJ,EAAQb,OACrBqI,EAAYtC,EAAuBK,QAMzC,YAJIiC,IAA2C,IAA9BA,EAAU8B,IAAID,IAC7B7B,EAAU+B,IAAIF,GAIlB,CACF,CACA,GACEvD,EAAmBP,QAAQ+C,OAAS,IACnCxC,EAAmBP,QAAQwC,SAAS/H,EAAQK,MAG7C,YADAyB,EAAcY,QAAQ1C,EAAQK,MAGhC,GAAIN,EAAiBC,GAEnB,YADA8B,EAAcQ,QAAQtC,EAAQQ,IAIhC,MAAML,EAAMD,KAAKC,MACXqJ,EAAaxE,EAAmBO,QAAQkE,IAAIzJ,EAAQQ,IAC1D,GAAIgJ,GAAcrJ,EAAMqJ,EAAavF,EAEnC,YADAnC,EAAcS,UAAUvC,EAAQQ,IAIlCwE,EAAmBO,QAAQmE,IAAI1J,EAAQQ,GAAIL,GAC3CoE,GAAY0B,GAASlC,EAAoB,CAAC/D,GAAW,IAAIiG,EAAMjG,KAE/D,IACE,MAAM2J,EAAKrE,EAAaC,QACN,mBAAPoE,EACTA,EAAG3J,GACM2J,IACO,QAAhBd,EAAAc,EAAG3J,EAAQK,aAAK,IAAAwI,GAAAA,EAAAe,KAAAD,EAAG3J,GAEtB,CAAC,MAAOgI,GACPlG,EAAY,CACVmB,OAAQ,YACRnC,YAAa+E,EACb3C,cAAe8E,aAAa7E,MAAQ6E,EAAEhI,QAAUL,OAAOqI,IAE3D,CACD,CAAC,MAAOA,GACP,MAAMnG,EAAQ,qCACdC,EAAY,CACVmB,OAAQ,gBACRnC,YAAa+E,EACb3C,cAAerB,IAEjBsF,EAAgBtF,EAClB,IAEF,CAAC1C,EAAQ4E,EAAmBoD,EAAiB1B,EAAexB,IAGxD4F,GAAe7D,GAAY,KAC/B,MAAM8D,EAAKhF,EAAQS,QACfuE,GAA0B,mBAAbA,EAAGC,QAClBD,EAAGE,oBAAoB,UAAWd,IAClCY,EAAGC,QACHjI,EAAcG,OAAO4D,GACrBf,EAAQS,QAAU,QAEnB,CAAC2D,GAAerD,IAyGnB,OAvGAoE,GAAU,KACR,GAAgC,oBAArBC,iBAAkC,CAC3C,MAAMrI,EACJ,yFAOF,OANAC,EAAY,CACVmB,OAAQ,sBACRnC,YAAa+E,EACb3C,cAAerB,SAEjBsF,EAAgBtF,EAElB,CAEA,IAAIiI,EAA8B,KAClC,IACEA,EAAK,IAAII,iBAAiBrE,EAC3B,CAAC,MAAOmC,GACP,MAAMnG,EAAQ,oCAOd,OANAC,EAAY,CACVmB,OAAQ,sBACRnC,YAAa+E,EACb3C,cAAe8E,aAAa7E,MAAQ6E,EAAIrI,OAAOqI,UAEjDb,EAAgBtF,EAElB,CAcA,OAbAiD,EAAQS,QAAUuE,EAClBhI,EAAcC,QAAQ8D,GAEtBiE,EAAGK,iBAAiB,WAAYhB,IAE1BxB,MAAMyC,QAAQjB,EAAM9H,MACtB8H,EAAM9H,KAAKgJ,SAASrK,IAClBkJ,GAAc,CAAE7H,KAAMrB,OAGxBkJ,GAAcC,MAGX,KACLU,QAED,CAAChE,EAAqBqD,GAAe/B,IAExC8C,GAAU,KACR,GAAInG,GAAoB,EAAG,OAE3B,MAAMwG,EAAWC,aAAY,KAC3BzI,EAAce,UACd,MAAM2H,EAASlG,EAASgE,OACxBlC,IACAtE,EAAcgB,UAAU0H,EAASlG,EAASgE,UACzCxE,GAEH,MAAO,WACL2G,cAAcH,GAEVpG,EAAoB,IACC,QAAvBzD,EAAA2F,EAAiBW,cAAM,IAAAtG,GAAAA,EAAAmJ,KAAAxD,OAG1B,CAACtC,EAAkBsC,EAAkBlC,IAExC+F,GAAU,KACR,MAAMK,EAAWC,aAAY,KAC3B,MAAMpK,EAAMD,KAAKC,MACjB,IAAK,MAAOuK,EAAKtL,KAAc4F,EAAmBO,QAAQoF,UACpDxK,EAAMf,GAAa6E,GACrBe,EAAmBO,QAAQqF,OAAOF,KAGrC,KAEH,MAAO,IAAMD,cAAcH,KAC1B,CAACrG,IAEJgG,GAAU,IACD,KAEL,GAAI7E,EAAoBG,QAAQ+C,OAAS,GAAKxD,EAAQS,UAAYF,EAAiBE,QAAS,CAC1F,IACET,EAAQS,QAAQmC,YAAYtC,EAAoBG,QACjD,CAAC,MAAOyC,GACP,MAAMnG,EAAQ,yBACdC,EAAY,CACVmB,OAAQ,sBACRnC,YAAa+E,EACb3C,cAAe8E,aAAa7E,MAAQ6E,EAAIrI,OAAOqI,KAEjDb,EAAgBtF,EAClB,CACAuD,EAAoBG,QAAU,GAE9BuB,YAAW,QAAU,EACvB,CACI3B,EAAmBI,UACrBsB,aAAa1B,EAAmBI,SAChCJ,EAAmBI,QAAU,MAE/BF,EAAiBE,SAAU,IAE5B,IAEI,CACLzE,YAAa+E,EACbvB,WACAG,eACAG,mBACAwC,QACAM,eACAQ,yBACAO,qBACAM,oBACAlH,QACAgI,kBChiBEgB,EAA0BC,OAA4CnK,GAuB/DoK,EAAsDA,EACjEC,WACAlK,cACAP,cAEA,MAAM0K,EAA0BtH,EAAoB7C,EAAaP,EAAS,YAE1E,OACE2K,EAACL,EAAwBM,SAAQ,CAACC,MAAOH,EAAuBD,SAC7DA,KAUMK,EAAuBA,KAClC,MAAMrI,EAAUsI,EAAWT,GAC3B,IAAK7H,EACH,MAAM,IAAIG,MAAM,gEAElB,OAAOH"}
@@ -32,19 +32,9 @@ export interface BroadcastOptions {
32
32
  */
33
33
  onMessage?: MessageCallback | OnMessageMap;
34
34
  /**
35
- * Allow the package to collect anonymous usage statistics (default: false).
36
- *
37
- * Telemetry is off unless explicitly enabled. When enabled, structural
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
- Version 2.1.0. Install: `npm install react-broadcast-sync`. Same origin only. Generated from README.md by scripts/generate-llms-txt.mjs; do not edit by hand.
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; // Privacy-first: off by default. Pass true to opt in.
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` | Anonymous usage stats. Pass `true` to opt in |
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
- **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.
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
- - **Telemetry is off by default:** pass `telemetry: true` to opt in (see [Telemetry](#telemetry)).
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.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://github.com/IdanShalem/react-broadcast-sync#readme",
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": "^9.3.4",
134
+ "@testing-library/dom": "^10.4.2",
137
135
  "@testing-library/jest-dom": "^6.4.2",
138
- "@testing-library/react": "^14.2.1",
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": "^18.2.61",
143
- "@types/react-dom": "^18.2.19",
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": "^18.2.0",
157
- "react-dom": "^18.2.0",
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
- - Telemetry is off by default (since 2.0.0). Do not add `telemetry: true` unless the user asks for it.
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
- - Enabling telemetry without being asked.
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;