react-broadcast-sync 2.1.2 → 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
@@ -35,6 +35,8 @@
35
35
  </a>
36
36
  </p>
37
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
+
38
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.
39
41
 
40
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`.
@@ -364,25 +366,25 @@ interface BroadcastOptions {
364
366
  batchingDelayMs?: number; // Delay in ms to batch outgoing messages (default: 20). If > 0, messages are batched and sent together.
365
367
  excludedBatchMessageTypes?: string[]; // Message types to always send immediately, never batched (default: []).
366
368
  onMessage?: MessageCallback | OnMessageMap; // Callback(s) fired when a received message passes all filters (default: undefined).
367
- telemetry?: boolean; // Privacy-first: off by default. Pass true to opt in.
369
+ telemetry?: boolean; // Deprecated no-op.
368
370
  }
369
371
  ```
370
372
 
371
373
  #### Default Values
372
374
 
373
- | Option | Default Value | Description |
374
- | --------------------------- | ------------- | -------------------------------------------- |
375
- | `sourceName` | `undefined` | Auto-generated if not provided |
376
- | `cleaningInterval` | `1000` | 1 second between cleanup runs |
377
- | `keepLatestMessage` | `false` | Keep all messages by default |
378
- | `registeredTypes` | `[]` | Accept all message types by default |
379
- | `namespace` | `''` | No namespace by default |
380
- | `deduplicationTTL` | `300000` | 5 minutes (5 × 60 × 1000 ms) |
381
- | `cleanupDebounceMs` | `0` | No debounce by default |
382
- | `batchingDelayMs` | `20` | Batch delay in ms (0 = off) |
383
- | `excludedBatchMessageTypes` | `[]` | Types never batched |
384
- | `onMessage` | `undefined` | Callback(s) for received messages |
385
- | `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 |
386
388
 
387
389
  #### Return Value
388
390
 
@@ -592,37 +594,9 @@ useBroadcastChannel('my-channel', {
592
594
 
593
595
  ---
594
596
 
595
- #### `telemetry` Option
596
-
597
- **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.
598
-
599
- **What is collected:**
600
-
601
- - Which `BroadcastOptions` keys are present (not their values)
602
- - The shape of `onMessage` (`none` / `function` / `map`)
603
- - Whether batching is enabled
604
- - Whether `BroadcastChannel` is supported in the browser
605
- - Which action methods (`postMessage`, `ping`, etc.) are called at least once per session
606
- - Hook vs. provider entry point
607
-
608
- **What is never collected:**
609
-
610
- - Channel names, source names, message content, or message types
611
- - Any application user identifiers in the event payload (Mixpanel may process IP addresses from request metadata)
612
-
613
- Telemetry is **off by default**. Pass `telemetry: true` to opt in for a channel:
614
-
615
- ```tsx
616
- useBroadcastChannel('my-channel', { telemetry: true });
617
- // or
618
- <BroadcastProvider channelName="my-channel" options={{ telemetry: true }} />;
619
- ```
620
-
621
- **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.
622
-
623
- 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.
597
+ #### `telemetry` Option (deprecated)
624
598
 
625
- 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.
626
600
 
627
601
  ---
628
602
 
@@ -644,7 +618,7 @@ Tools such as `skills-npm` can also extract it for you. Check your agent's docs
644
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`.
645
619
  - **Deduplication is by message ID**, not content (see [Message Deduplication](#message-deduplication)).
646
620
  - **Same origin only:** `BroadcastChannel` does not cross origins, and a tab does not receive its own messages.
647
- - **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)).
648
622
 
649
623
  ## Best Practices
650
624
 
@@ -920,19 +894,7 @@ Relies on [BroadcastChannel API](https://developer.mozilla.org/en-US/docs/Web/AP
920
894
 
921
895
  ## Telemetry
922
896
 
923
- **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.
924
-
925
- 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.
926
-
927
- **To opt in**, pass `telemetry: true`:
928
-
929
- ```tsx
930
- useBroadcastChannel('my-channel', { telemetry: true });
931
- // or
932
- <BroadcastProvider channelName="my-channel" options={{ telemetry: true }} />;
933
- ```
934
-
935
- 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.
936
898
 
937
899
  ---
938
900
 
@@ -950,7 +912,7 @@ We're actively improving `react-broadcast-sync`! Here are some features and enha
950
912
  Real browser cross-tab tests using Playwright that go beyond what jsdom mocks can cover.
951
913
 
952
914
  - **Anonymous Usage Telemetry**
953
- ✅ 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.
954
916
 
955
917
  We're committed to keeping this package lightweight, flexible, and production-ready.
956
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}`,r=encodeURIComponent(n).replace(/%([0-9A-F]{2})/g,((e,t)=>String.fromCharCode(parseInt(t,16))));return btoa(r).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:R,telemetry:k=!1}=n,[A,B]=e.useState([]),[x,I]=e.useState([]),[G,L]=e.useState(null),[O,j]=e.useState(!1),F=e.useRef(null),q=e.useRef(new Map),U=e.useRef(null),J=e.useRef(null),z=e.useRef([]),V=e.useRef(!1),W=e.useRef(R);W.current=R;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(!k)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!==R&&e.push("onMessage"),t={entry:r,options_used:e,onmessage_shape:void 0===R?"none":"function"==typeof R?"function":"map",batching_enabled:C>0,browser_supported:"undefined"!=typeof BroadcastChannel},E.push(S("channel_init",t)),N()}),[]);const Y=e.useCallback((()=>{B((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(k&&w("ping"),O)return g.inProgress(),Promise.resolve([]);if(!F.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,F.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={})=>{k&&w("postMessage");const r=F.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),I((e=>[...e,s]))}),[H,ee,C,$]),re=e.useCallback(((e={})=>{k&&w("clearReceivedMessages");const t=Boolean(e.ids&&e.ids.length||e.types&&e.types.length||e.sources&&e.sources.length);B((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;k&&w("clearSentMessages");const{ids:s=[],types:a=[],sync:o=!1}=null!=e?e:{};I((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=F.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={})=>{k&&w("getLatestMessage");const{source:t,type:n}=e;for(let e=A.length-1;e>=0;e--){const r=A[e],s=!t||r.source===t,a=!n||r.type===n;if(s&&a)return r}return null}),[A]),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 B((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=F.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=q.current.get(r.id);if(a&&s-a<b)return void p.duplicate(r.id);q.current.set(r.id,s),B((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((()=>{k&&w("closeChannel");const e=F.current;e&&"function"==typeof e.close&&(e.removeEventListener("message",oe),e.close(),d.closed(Q),F.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}),k&&(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 F.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=A.length;Z(),f.completed(e-A.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 q.current.entries())e-n>=b&&q.current.delete(t)}),6e4);return()=>clearInterval(e)}),[b]),e.useEffect((()=>()=>{if(z.current.length>0&&F.current&&!V.current){try{F.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:A,sentMessages:x,isPingInProgress:O,ping:te,postMessage:ne,clearReceivedMessages:re,clearSentMessages:se,getLatestMessage:ae,error:G,closeChannel:ce}},R=e.createContext(void 0);exports.BroadcastProvider=({children:e,channelName:t,options:r})=>{const s=$(t,r,"provider");return n.jsx(R.Provider,{value:s,children:e})},exports.useBroadcastChannel=$,exports.useBroadcastProvider=()=>{const t=e.useContext(R);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","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","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","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}`,r=encodeURIComponent(n).replace(/%([0-9A-F]{2})/g,((e,t)=>String.fromCharCode(parseInt(t,16))));return btoa(r).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 C=(()=>{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)}})(),w=[],T=new Set;let P=null;function _(e,t){return{event:e,properties:Object.assign({token:N,distinct_id:C,time:Math.floor(Date.now()/1e3)},t)}}function D(){return c(this,void 0,void 0,(function*(){if(0===w.length||!N)return;const e=w.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){T.has(e)||(T.add(e),w.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",I="PING",G="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:C=0,batchingDelayMs:T=20,excludedBatchMessageTypes:P=[],onMessage:D,telemetry:x=!1}=a,[R,k]=e([]),[O,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(I,o,b),PONG:h(G,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"),C>0&&e.push("cleanupDebounceMs"),20!==T&&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:T>0,browser_supported:"undefined"!=typeof BroadcastChannel},w.push(_("channel_init",t)),$()}),[]);const ne=s((()=>{k((e=>e.filter((e=>!p(e)))))}),[]),re=t(C>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,C):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(!T||T<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}),T));v.sent(s),j((e=>[...e,s]))}),[Y,se,T,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);k((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=R.length-1;e>=0;e--){const r=R[e],s=!t||r.source===t,o=!n||r.type===n;if(s&&o)return r}return null}),[R]),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 k((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),k((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&&(w.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=R.length;re(),M.completed(e-R.length)}),l);return()=>{var t;clearInterval(e),C>0&&(null===(t=re.cancel)||void 0===t||t.call(re))}}),[l,re,C]),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:R,sentMessages:O,isPingInProgress:J,ping:oe,postMessage:ae,clearReceivedMessages:ce,clearSentMessages:ie,getLatestMessage:le,error:F,closeChannel:de}},R=o(void 0),k=({children:e,channelName:t,options:n})=>{const r=x(t,n,"provider");return i(R.Provider,{value:r,children:e})},O=()=>{const e=a(R);if(!e)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return e};export{k as BroadcastProvider,x as useBroadcastChannel,O 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","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","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","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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"}
@@ -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
@@ -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.2",
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;