react-broadcast-sync 1.9.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -19,3 +19,14 @@ 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
@@ -53,6 +53,7 @@ Easily sync UI state or user events across browser tabs in React apps — notifi
53
53
  - [Troubleshooting](#-roubleshooting)
54
54
  - [Testing](#testing)
55
55
  - [Browser Support](#browser-support)
56
+ - [Telemetry](#telemetry)
56
57
  - [Coming Soon](#coming-soon)
57
58
  - [Versioning & Releases](#versioning--releases)
58
59
  - [Contributing](#contributing)
@@ -202,11 +203,11 @@ function NotificationBar() {
202
203
 
203
204
  #### `BroadcastProvider` Props
204
205
 
205
- | Prop | Type | Required | Description |
206
- |------|------|----------|-------------|
207
- | `channelName` | `string` | ✅ | The name of the broadcast channel |
208
- | `options` | `BroadcastOptions` | ❌ | Any option accepted by `useBroadcastChannel` |
209
- | `children` | `React.ReactNode` | ✅ | Component subtree |
206
+ | Prop | Type | Required | Description |
207
+ | ------------- | ------------------ | -------- | -------------------------------------------- |
208
+ | `channelName` | `string` | ✅ | The name of the broadcast channel |
209
+ | `options` | `BroadcastOptions` | ❌ | Any option accepted by `useBroadcastChannel` |
210
+ | `children` | `React.ReactNode` | ✅ | Component subtree |
210
211
 
211
212
  All fields in `BroadcastOptions` (see the table in the [API Reference](#broadcastoptions)) can be forwarded via the `options` prop. This includes `namespace`, `registeredTypes`, `onMessage`, `keepLatestMessage`, `sourceName`, and more.
212
213
 
@@ -217,7 +218,7 @@ All fields in `BroadcastOptions` (see the table in the [API Reference](#broadcas
217
218
  namespace: 'v2',
218
219
  registeredTypes: ['alert', 'info'],
219
220
  onMessage: {
220
- alert: (msg) => showToast(msg.message.text),
221
+ alert: msg => showToast(msg.message.text),
221
222
  },
222
223
  }}
223
224
  >
@@ -257,6 +258,7 @@ interface BroadcastOptions {
257
258
  batchingDelayMs?: number; // Delay in ms to batch outgoing messages (default: 20). If > 0, messages are batched and sent together.
258
259
  excludedBatchMessageTypes?: string[]; // Message types to always send immediately, never batched (default: []).
259
260
  onMessage?: MessageCallback | OnMessageMap; // Callback(s) fired when a received message passes all filters (default: undefined).
261
+ telemetry?: boolean; // Opt-out anonymous usage telemetry (default: true). Pass false to disable.
260
262
  }
261
263
  ```
262
264
 
@@ -273,7 +275,8 @@ interface BroadcastOptions {
273
275
  | `cleanupDebounceMs` | `0` | No debounce by default |
274
276
  | `batchingDelayMs` | `20` | Batch delay in ms (0 = off) |
275
277
  | `excludedBatchMessageTypes` | `[]` | Types never batched |
276
- | `onMessage` | `undefined` | Callback(s) for received messages |
278
+ | `onMessage` | `undefined` | Callback(s) for received messages |
279
+ | `telemetry` | `true` | Anonymous usage stats. Pass `false` to opt out |
277
280
 
278
281
  #### Return Value
279
282
 
@@ -483,6 +486,30 @@ useBroadcastChannel('my-channel', {
483
486
 
484
487
  ---
485
488
 
489
+ #### `telemetry` Option
490
+
491
+ `react-broadcast-sync` collects anonymous, structural usage signals to help the maintainer understand how the library is used in the wild.
492
+
493
+ **What is collected:**
494
+ - Which `BroadcastOptions` keys are present (not their values)
495
+ - The shape of `onMessage` (`none` / `function` / `map`)
496
+ - Whether batching is enabled
497
+ - Whether `BroadcastChannel` is supported in the browser
498
+ - Which action methods (`postMessage`, `ping`, etc.) are called at least once per session
499
+ - Hook vs. provider entry point
500
+
501
+ **What is never collected:**
502
+ - Channel names, source names, message content, or message types
503
+ - Any user-identifying data
504
+
505
+ Telemetry is **on by default**. Pass `telemetry: false` to opt out at any time with no behaviour change.
506
+
507
+ 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.
508
+
509
+ See [TELEMETRY.md](./TELEMETRY.md) for the full legal notice.
510
+
511
+ ---
512
+
486
513
  ## Best Practices
487
514
 
488
515
  - **Use `namespace`** to isolate functionality between different app modules.
@@ -729,6 +756,24 @@ Relies on [BroadcastChannel API](https://developer.mozilla.org/en-US/docs/Web/AP
729
756
 
730
757
  ---
731
758
 
759
+ ## Telemetry
760
+
761
+ `react-broadcast-sync` collects **anonymous, non-personal usage statistics** by default to help the maintainer prioritise features and fix real-world issues. No channel names, source names, message content, or user data of any kind is ever collected.
762
+
763
+ A random session ID is generated on every page load and is never persisted to cookies or storage, making it impossible to track individual users or sessions.
764
+
765
+ **To opt out**, pass `telemetry: false`:
766
+
767
+ ```tsx
768
+ useBroadcastChannel('my-channel', { telemetry: false });
769
+ // or
770
+ <BroadcastProvider channelName="my-channel" options={{ telemetry: false }} />
771
+ ```
772
+
773
+ See [TELEMETRY.md](./TELEMETRY.md) for full details, legal basis, and the complete list of signals collected.
774
+
775
+ ---
776
+
732
777
  ## Coming Soon
733
778
 
734
779
  We're actively improving `react-broadcast-sync`! Here are some features and enhancements planned for upcoming versions:
@@ -742,6 +787,9 @@ We're actively improving `react-broadcast-sync`! Here are some features and enha
742
787
  - **Integration Tests**
743
788
  Real browser cross-tab tests using Playwright that go beyond what jsdom mocks can cover.
744
789
 
790
+ - **Anonymous Usage Telemetry**
791
+ ✅ Released — the package collects anonymous structural signals (options used, methods called, hook vs. provider). No user data. No message content.
792
+
745
793
  We're committed to keeping this package lightweight, flexible, and production-ready.
746
794
  Your feedback and contributions are welcome — feel free to [open an issue](https://github.com/IdanShalem/react-broadcast-sync/issues)!
747
795
 
package/TELEMETRY.md ADDED
@@ -0,0 +1,65 @@
1
+ # Telemetry Notice — react-broadcast-sync
2
+
3
+ ## What is collected
4
+
5
+ `react-broadcast-sync` collects **anonymous, non-personal usage statistics** to help the maintainer understand how the library is used in practice. This data is used solely to prioritise features and fix real-world issues.
6
+
7
+ The following structural signals are sent on every channel mount:
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
+ - User identifiers of any kind
24
+ - IP addresses (Mixpanel may record these server-side; see Mixpanel's 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
+ - Cannot be linked back to any individual user or device.
34
+
35
+ Because the identifier is non-persistent and randomly regenerated, the data collected does not constitute "personal data" under the GDPR definition (Regulation (EU) 2016/679, Article 4(1)).
36
+
37
+ ## Legal basis
38
+
39
+ The data collected is fully anonymous and structural. No personal data or data that can identify a natural person is processed. The collection falls under the **legitimate interests** of the package maintainer (GDPR Article 6(1)(f)) to understand aggregate library usage patterns.
40
+
41
+ Because no cookies or persistent identifiers are set on the user's device, the ePrivacy Directive (Directive 2002/58/EC) cookie consent requirements do not apply.
42
+
43
+ ## Data processor
44
+
45
+ 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/).
46
+
47
+ ## How to opt out
48
+
49
+ Telemetry is enabled by default and can be disabled at any time by passing `telemetry: false`:
50
+
51
+ ```tsx
52
+ // Disable for a specific channel
53
+ useBroadcastChannel('my-channel', { telemetry: false });
54
+
55
+ // Disable via BroadcastProvider
56
+ <BroadcastProvider channelName="my-channel" options={{ telemetry: false }}>
57
+ <App />
58
+ </BroadcastProvider>
59
+ ```
60
+
61
+ There is no penalty, degraded functionality, or behaviour change when opting out.
62
+
63
+ ## Contact
64
+
65
+ 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.
@@ -9,5 +9,7 @@ import { BroadcastActions, BroadcastOptions } from '../types/types';
9
9
  * The event handler in this hook supports both formats. If you listen to the channel directly, always check:
10
10
  * if (Array.isArray(event.data)) { ... } else { ... }
11
11
  */
12
- export declare const useBroadcastChannel: (channelName: string, options?: BroadcastOptions) => BroadcastActions;
12
+ export declare const useBroadcastChannel: (channelName: string, options?: BroadcastOptions,
13
+ /** @internal — used by BroadcastProvider to distinguish its entry point */
14
+ _entry?: "hook" | "provider") => BroadcastActions;
13
15
  export default useBroadcastChannel;
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
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}`;return btoa(t).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={})=>{const{sourceName:s,cleaningInterval:i=1e3,keepLatestMessage:E=!1,registeredTypes:S=[],namespace:C="",deduplicationTTL:M=3e5,cleanupDebounceMs:b=0,batchingDelayMs:N=20,excludedBatchMessageTypes:P=[],onMessage:w}=t,[$,T]=e.useState([]),[A,R]=e.useState([]),[B,_]=e.useState(null),[x,D]=e.useState(!1),k=e.useRef(null),G=e.useRef(new Map),I=e.useRef(null),L=e.useRef(null),O=e.useRef([]),j=e.useRef(!1),F=e.useRef(w);F.current=w;const q=e.useMemo((()=>s||`tab-${n()}`),[s]),z=e.useMemo((()=>({CLEAR_SENT_MESSAGES:c(h,r,C),PING:c(y,r,C),PONG:c(m,r,C)})),[r,C]),J=e.useMemo((()=>C?`${r}-${C}`:r),[r,C]),U=e.useRef(S);U.current=S;const V=e.useCallback((()=>{T((e=>e.filter((e=>!a(e)))))}),[]),W=e.useRef(b>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})(V,b):Object.assign(V,{cancel:()=>{}})).current,H=e.useCallback((e=>{_(e),setTimeout((()=>_(null)),3e3)}),[]),K=e.useCallback(((e=300)=>{if(x)return p.inProgress(),Promise.resolve([]);if(!k.current){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return f({action:"ping",channelName:J,originalError:e}),H(e),Promise.resolve([])}v?v((()=>D(!0))):D(!0);const r=new Set;return I.current=r,k.current.postMessage(o(z.PING,null,q)),new Promise((t=>{setTimeout((()=>{D(!1),I.current===r&&(I.current=null),t(Array.from(r))}),e)}))}),[z.PING,q,H,x,v]),Q=e.useCallback(((e,r,t={})=>{const n=k.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 H(r)}const s=o(e,r,q,t);if(!N||N<0||P.includes(e))try{n.postMessage(s)}catch(r){const t="Failed to send message";f({action:"postMessage",channelName:J,type:e,originalError:t}),H(t),j.current=!0}else O.current.push(s),L.current||(L.current=setTimeout((()=>{if(j.current)return O.current=[],void(L.current=null);try{n.postMessage(O.current)}catch(r){const t="Failed to send message";f({action:"postMessage",channelName:J,type:e,originalError:t}),H(t),j.current=!0}O.current=[],L.current=null}),N));d.sent(s),R((e=>[...e,s]))}),[q,H,N,P]),X=e.useCallback(((e={})=>{const r=Boolean(e.ids&&e.ids.length||e.types&&e.types.length||e.sources&&e.sources.length);T((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()}),[]),Y=e.useCallback(((e={})=>{var r,t,n;const{ids:s=[],types:a=[],sync:c=!1}=null!=e?e:{};R((e=>s.length>0||a.length>0?e.filter((e=>{if(e.source!==q)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=k.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:[]},q)))}),[q,z.CLEAR_SENT_MESSAGES]),Z=e.useCallback(((e={})=>{const{source:r,type:t}=e;for(let e=$.length-1;e>=0;e--){const n=$[e],s=!r||n.source===r,a=!t||n.type===t;if(s&&a)return n}return null}),[$]),ee=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===q)return;if(l(n)){if(n.type===z.CLEAR_SENT_MESSAGES){const{ids:e=[],types:r=[]}=n.message||{};return void T((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=k.current)||void 0===r||r.postMessage(o(z.PONG,null,q)));if(n.type===z.PONG){const e=n.source,r=I.current;return void(r&&!1===r.has(e)&&r.add(e))}}if(U.current.length>0&&!U.current.includes(n.type))return void d.ignored(n.type);if(a(n))return void d.expired(n.id);const s=Date.now(),c=G.current.get(n.id);if(c&&s-c<M)return void d.duplicate(n.id);G.current.set(n.id,s),T((e=>E?[n]:[...e,n]));try{const e=F.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}),H(r)}}),[q,E,H,z,M]),re=e.useCallback((()=>{const e=k.current;e&&"function"==typeof e.close&&(e.removeEventListener("message",ee),e.close(),u.closed(J),k.current=null)}),[ee,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 H(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 H(r)}return k.current=e,u.created(J),e.addEventListener("message",(e=>{Array.isArray(e.data)?e.data.forEach((e=>{ee({data:e})})):ee(e)})),()=>{re()}}),[J,ee,H]),e.useEffect((()=>{if(i<=0)return;const e=setInterval((()=>{g.started();const e=$.length;W(),g.completed(e-$.length)}),i);return()=>{var r;clearInterval(e),b>0&&(null===(r=W.cancel)||void 0===r||r.call(W))}}),[i,W,b]),e.useEffect((()=>{const e=setInterval((()=>{const e=Date.now();for(const[r,t]of G.current.entries())e-t>=M&&G.current.delete(r)}),6e4);return()=>clearInterval(e)}),[M]),e.useEffect((()=>()=>{if(O.current.length>0&&k.current&&!j.current){try{k.current.postMessage(O.current)}catch(e){const r="Failed to send message";f({action:"useBroadcastChannel",channelName:J,originalError:e instanceof Error?e:String(e)}),H(r)}O.current=[],setTimeout((()=>{}),0)}L.current&&(clearTimeout(L.current),L.current=null),j.current=!1}),[]),{channelName:J,messages:$,sentMessages:A,isPingInProgress:x,ping:K,postMessage:Q,clearReceivedMessages:X,clearSentMessages:Y,getLatestMessage:Z,error:B,closeChannel:re}},S=e.createContext(void 0);exports.BroadcastProvider=({children:e,channelName:t,options:n})=>{const s=E(t,n);return r.jsx(S.Provider,{value:s,children:e})},exports.useBroadcastChannel=E,exports.useBroadcastProvider=()=>{const r=e.useContext(S);if(!r)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return r};
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.")},h={started:()=>u("info","Cleanup started"),completed:e=>u("info","Cleanup completed:",e)},f=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)};let y="";const m=(()=>{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)}})(),v=[],E=new Set;let M=null;function S(e,t){return{event:e,properties:Object.assign({token:y,distinct_id:m,time:Math.floor(Date.now()/1e3)},t)}}function b(){return t.__awaiter(this,void 0,void 0,(function*(){if(0===v.length||!y)return;const e=v.splice(0);try{yield fetch("https://api.mixpanel.com/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),keepalive:!0})}catch(e){}}))}function C(){y&&null===M&&(M=setTimeout((()=>{M=null,b()}),3e4))}function N(e){E.has(e)||(E.add(e),v.push(S("method_called",{method:e})),C())}"undefined"!=typeof document&&document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&(null!==M&&(clearTimeout(M),M=null),b())}));const w="CLEAR_SENT_MESSAGES",T="PING",P="PONG";let _;if("test"===process.env.NODE_ENV)try{_=require("react-dom").flushSync}catch(e){}const D=(t,n={},r="hook")=>{const{sourceName:a,cleaningInterval:u=1e3,keepLatestMessage:y=!1,registeredTypes:m=[],namespace:E="",deduplicationTTL:M=3e5,cleanupDebounceMs:b=0,batchingDelayMs:D=20,excludedBatchMessageTypes:$=[],onMessage:k,telemetry:B=!0}=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(w,t,E),PING:i(T,t,E),PONG:i(P,t,E)})),[t,E]),Q=e.useMemo((()=>E?`${t}-${E}`:t),[t,E]),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"),E&&e.push("namespace"),3e5!==M&&e.push("deduplicationTTL"),b>0&&e.push("cleanupDebounceMs"),20!==D&&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:D>0,browser_supported:"undefined"!=typeof BroadcastChannel},v.push(S("channel_init",t)),C()}),[]);const Y=e.useCallback((()=>{A((e=>e.filter((e=>!o(e)))))}),[]),Z=e.useRef(b>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,b):Object.assign(Y,{cancel:()=>{}})).current,ee=e.useCallback((e=>{L(e),setTimeout((()=>L(null)),3e3)}),[]),te=e.useCallback(((e=300)=>{if(B&&N("ping"),O)return g.inProgress(),Promise.resolve([]);if(!q.current){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return f({action:"ping",channelName:Q,originalError:e}),ee(e),Promise.resolve([])}_?_((()=>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,_]),ne=e.useCallback(((e,t,n={})=>{B&&N("postMessage");const r=q.current;if(!r){const t="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return f({action:"postMessage",channelName:Q,type:e,originalError:t}),void ee(t)}const s=c(e,t,H,n);if(!D||D<0||$.includes(e))try{r.postMessage(s)}catch(t){const n="Failed to send message";f({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";f({action:"postMessage",channelName:Q,type:e,originalError:n}),ee(n),V.current=!0}z.current=[],J.current=null}),D));p.sent(s),G((e=>[...e,s]))}),[H,ee,D,$]),re=e.useCallback(((e={})=>{B&&N("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&&N("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&&N("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<M)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){f({action:"onMessage",channelName:Q,originalError:e instanceof Error?e.message:String(e)})}}catch(e){const t="Error processing broadcast message";f({action:"handleMessage",channelName:Q,originalError:t}),ee(t)}}),[H,y,ee,K,M]),ce=e.useCallback((()=>{B&&N("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 f({action:"useBroadcastChannel",channelName:Q,originalError:e}),B&&(v.push(S("browser_unsupported",{})),C()),void ee(e)}let e=null;try{e=new BroadcastChannel(Q)}catch(e){const t="Failed to create BroadcastChannel";return f({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((()=>{h.started();const e=R.length;Z(),h.completed(e-R.length)}),u);return()=>{var t;clearInterval(e),b>0&&(null===(t=Z.cancel)||void 0===t||t.call(Z))}}),[u,Z,b]),e.useEffect((()=>{const e=setInterval((()=>{const e=Date.now();for(const[t,n]of F.current.entries())e-n>=M&&F.current.delete(t)}),6e4);return()=>clearInterval(e)}),[M]),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";f({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}},$=e.createContext(void 0);exports.BroadcastProvider=({children:e,channelName:t,options:r})=>{const s=D(t,r,"provider");return n.jsx($.Provider,{value:s,children:e})},exports.useBroadcastChannel=D,exports.useBroadcastProvider=()=>{const t=e.useContext($);if(!t)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return t};
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/hooks/useBroadcastChannel.ts","../src/BroadcastProvider.tsx"],"sourcesContent":[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","INTERNAL_MESSAGE_TYPES","flushSyncFn","NODE_ENV","require","flushSync","useBroadcastChannel","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","String","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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"}
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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"}
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
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}`;return btoa(t).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",b="PONG";let C;if("test"===process.env.NODE_ENV)try{C=require("react-dom").flushSync}catch(e){}const P=(o,a={})=>{const{sourceName:c,cleaningInterval:i=1e3,keepLatestMessage:u=!1,registeredTypes:h=[],namespace:P="",deduplicationTTL:w=3e5,cleanupDebounceMs:$=0,batchingDelayMs:T=20,excludedBatchMessageTypes:A=[],onMessage:_}=a,[D,B]=e([]),[G,I]=e([]),[x,L]=e(null),[R,O]=e(!1),k=r(null),j=r(new Map),F=r(null),q=r(null),z=r([]),J=r(!1),U=r(_);U.current=_;const V=t((()=>c||`tab-${l()}`),[c]),W=t((()=>({CLEAR_SENT_MESSAGES:g(M,o,P),PING:g(N,o,P),PONG:g(b,o,P)})),[o,P]),H=t((()=>P?`${o}-${P}`:o),[o,P]),K=r(h);K.current=h;const Q=n((()=>{B((e=>e.filter((e=>!d(e)))))}),[]),X=r($>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})(Q,$):Object.assign(Q,{cancel:()=>{}})).current,Y=n((e=>{L(e),setTimeout((()=>L(null)),3e3)}),[]),Z=n(((e=300)=>{if(R)return v.inProgress(),Promise.resolve([]);if(!k.current){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"ping",channelName:H,originalError:e}),Y(e),Promise.resolve([])}C?C((()=>O(!0))):O(!0);const r=new Set;return F.current=r,k.current.postMessage(p(W.PING,null,V)),new Promise((t=>{setTimeout((()=>{O(!1),F.current===r&&(F.current=null),t(Array.from(r))}),e)}))}),[W.PING,V,Y,R,C]),ee=n(((e,r,t={})=>{const n=k.current;if(!n){const r="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"postMessage",channelName:H,type:e,originalError:r}),void Y(r)}const s=p(e,r,V,t);if(!T||T<0||A.includes(e))try{n.postMessage(s)}catch(r){const t="Failed to send message";S({action:"postMessage",channelName:H,type:e,originalError:t}),Y(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:H,type:e,originalError:t}),Y(t),J.current=!0}z.current=[],q.current=null}),T));m.sent(s),I((e=>[...e,s]))}),[V,Y,T,A]),re=n(((e={})=>{const r=Boolean(e.ids&&e.ids.length||e.types&&e.types.length||e.sources&&e.sources.length);B((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()}),[]),te=n(((e={})=>{var r,t,n;const{ids:s=[],types:o=[],sync:a=!1}=null!=e?e:{};I((e=>s.length>0||o.length>0?e.filter((e=>{if(e.source!==V)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=k.current)||void 0===r||r.postMessage(p(W.CLEAR_SENT_MESSAGES,{ids:null!==(t=e.ids)&&void 0!==t?t:[],types:null!==(n=e.types)&&void 0!==n?n:[]},V)))}),[V,W.CLEAR_SENT_MESSAGES]),ne=n(((e={})=>{const{source:r,type:t}=e;for(let e=D.length-1;e>=0;e--){const n=D[e],s=!r||n.source===r,o=!t||n.type===t;if(s&&o)return n}return null}),[D]),se=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===V)return;if(f(n)){if(n.type===W.CLEAR_SENT_MESSAGES){const{ids:e=[],types:r=[]}=n.message||{};return void B((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===W.PING)return void(null===(r=k.current)||void 0===r||r.postMessage(p(W.PONG,null,V)));if(n.type===W.PONG){const e=n.source,r=F.current;return void(r&&!1===r.has(e)&&r.add(e))}}if(K.current.length>0&&!K.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<w)return void m.duplicate(n.id);j.current.set(n.id,s),B((e=>u?[n]:[...e,n]));try{const e=U.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:H,originalError:e instanceof Error?e.message:String(e)})}}catch(e){const r="Error processing broadcast message";S({action:"handleMessage",channelName:H,originalError:r}),Y(r)}}),[V,u,Y,W,w]),oe=n((()=>{const e=k.current;e&&"function"==typeof e.close&&(e.removeEventListener("message",se),e.close(),y.closed(H),k.current=null)}),[se,H]);return s((()=>{if("undefined"==typeof BroadcastChannel){const e="BroadcastChannel is not supported in this browser. Please check browser compatibility.";return S({action:"useBroadcastChannel",channelName:H,originalError:e}),void Y(e)}let e=null;try{e=new BroadcastChannel(H)}catch(e){const r="Failed to create BroadcastChannel";return S({action:"useBroadcastChannel",channelName:H,originalError:e instanceof Error?e:String(e)}),void Y(r)}return k.current=e,y.created(H),e.addEventListener("message",(e=>{Array.isArray(e.data)?e.data.forEach((e=>{se({data:e})})):se(e)})),()=>{oe()}}),[H,se,Y]),s((()=>{if(i<=0)return;const e=setInterval((()=>{E.started();const e=D.length;X(),E.completed(e-D.length)}),i);return()=>{var r;clearInterval(e),$>0&&(null===(r=X.cancel)||void 0===r||r.call(X))}}),[i,X,$]),s((()=>{const e=setInterval((()=>{const e=Date.now();for(const[r,t]of j.current.entries())e-t>=w&&j.current.delete(r)}),6e4);return()=>clearInterval(e)}),[w]),s((()=>()=>{if(z.current.length>0&&k.current&&!J.current){try{k.current.postMessage(z.current)}catch(e){const r="Failed to send message";S({action:"useBroadcastChannel",channelName:H,originalError:e instanceof Error?e:String(e)}),Y(r)}z.current=[],setTimeout((()=>{}),0)}q.current&&(clearTimeout(q.current),q.current=null),J.current=!1}),[]),{channelName:H,messages:D,sentMessages:G,isPingInProgress:R,ping:Z,postMessage:ee,clearReceivedMessages:re,clearSentMessages:te,getLatestMessage:ne,error:x,closeChannel:oe}},w=o(void 0),$=({children:e,channelName:r,options:t})=>{const n=P(r,t);return c(w.Provider,{value:n,children:e})},T=()=>{const e=a(w);if(!e)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return e};export{$ as BroadcastProvider,P as useBroadcastChannel,T as useBroadcastProvider};
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)};let b="";const N=(()=>{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 C=null;function P(e,t){return{event:e,properties:Object.assign({token:b,distinct_id:N,time:Math.floor(Date.now()/1e3)},t)}}function _(){return c(this,void 0,void 0,(function*(){if(0===w.length||!b)return;const e=w.splice(0);try{yield fetch("https://api.mixpanel.com/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),keepalive:!0})}catch(e){}}))}function D(){b&&null===C&&(C=setTimeout((()=>{C=null,_()}),3e4))}function $(e){T.has(e)||(T.add(e),w.push(P("method_called",{method:e})),D())}"undefined"!=typeof document&&document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&(null!==C&&(clearTimeout(C),C=null),_())}));const A="CLEAR_SENT_MESSAGES",B="PING",G="PONG";let I;if("test"===process.env.NODE_ENV)try{I=require("react-dom").flushSync}catch(e){}const L=(o,a={},c="hook")=>{const{sourceName:i,cleaningInterval:l=1e3,keepLatestMessage:d=!1,registeredTypes:m=[],namespace:b="",deduplicationTTL:N=3e5,cleanupDebounceMs:T=0,batchingDelayMs:C=20,excludedBatchMessageTypes:_=[],onMessage:L,telemetry:x=!0}=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(L);X.current=L;const Y=n((()=>i||`tab-${u()}`),[i]),Z=n((()=>({CLEAR_SENT_MESSAGES:h(A,o,b),PING:h(B,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"),T>0&&e.push("cleanupDebounceMs"),20!==C&&e.push("batchingDelayMs"),_.length>0&&e.push("excludedBatchMessageTypes"),void 0!==L&&e.push("onMessage"),t={entry:c,options_used:e,onmessage_shape:void 0===L?"none":"function"==typeof L?"function":"map",batching_enabled:C>0,browser_supported:"undefined"!=typeof BroadcastChannel},w.push(P("channel_init",t)),D()}),[]);const ne=s((()=>{O((e=>e.filter((e=>!p(e)))))}),[]),re=t(T>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,T):Object.assign(ne,{cancel:()=>{}})).current,se=s((e=>{U(e),setTimeout((()=>U(null)),3e3)}),[]),oe=s(((e=300)=>{if(x&&$("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([])}I?I((()=>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,I]),ae=s(((e,t,n={})=>{x&&$("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||_.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,_]),ce=s(((e={})=>{x&&$("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&&$("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&&$("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&&$("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(P("browser_unsupported",{})),D()),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),T>0&&(null===(t=re.cancel)||void 0===t||t.call(re))}}),[l,re,T]),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}},x=o(void 0),k=({children:e,channelName:t,options:n})=>{const r=L(t,n,"provider");return i(x.Provider,{value:r,children:e})},O=()=>{const e=a(x);if(!e)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return e};export{k as BroadcastProvider,L as useBroadcastChannel,O 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/hooks/useBroadcastChannel.ts","../src/BroadcastProvider.tsx"],"sourcesContent":[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","INTERNAL_MESSAGE_TYPES","flushSyncFn","NODE_ENV","require","flushSync","useBroadcastChannel","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","String","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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"}
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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"}
@@ -31,6 +31,24 @@ export interface BroadcastOptions {
31
31
  * Internal messages (PING, PONG, CLEAR_SENT_MESSAGES) never trigger this.
32
32
  */
33
33
  onMessage?: MessageCallback | OnMessageMap;
34
+ /**
35
+ * Allow the package to collect anonymous usage statistics (default: true).
36
+ *
37
+ * When true, structural signals are sent to the maintainer on channel mount:
38
+ * which options are in use, which methods are called, and whether the hook
39
+ * or provider entry point is used. No channel names, source names, message
40
+ * content, user identifiers, or any personally identifiable information is
41
+ * ever collected. The session ID is randomly generated on every page load
42
+ * and is never persisted to storage.
43
+ *
44
+ * Set to `false` to opt out:
45
+ * ```tsx
46
+ * useBroadcastChannel('my-channel', { telemetry: false });
47
+ * ```
48
+ *
49
+ * See TELEMETRY.md in the package repository for full details.
50
+ */
51
+ telemetry?: boolean;
34
52
  }
35
53
  /**
36
54
  * Options for sending messages
@@ -0,0 +1,14 @@
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-broadcast-sync",
3
- "version": "1.9.0",
3
+ "version": "1.11.0",
4
4
  "description": "A lightweight React hook and provider for syncing state across browser tabs using BroadcastChannel API.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -10,7 +10,8 @@
10
10
  "files": [
11
11
  "dist",
12
12
  "README.md",
13
- "LICENSE"
13
+ "LICENSE",
14
+ "TELEMETRY.md"
14
15
  ],
15
16
  "exports": {
16
17
  ".": {
@@ -107,6 +108,7 @@
107
108
  "@rollup/plugin-babel": "^6.0.4",
108
109
  "@rollup/plugin-commonjs": "^25.0.7",
109
110
  "@rollup/plugin-node-resolve": "^15.2.3",
111
+ "@rollup/plugin-replace": "^6.0.3",
110
112
  "@rollup/plugin-terser": "^0.4.4",
111
113
  "@rollup/plugin-typescript": "^11.1.6",
112
114
  "@semantic-release/changelog": "^6.0.3",
@@ -123,6 +125,7 @@
123
125
  "@types/react-dom": "^18.2.19",
124
126
  "@vitejs/plugin-react": "^4.2.1",
125
127
  "commitlint": "^19.0.3",
128
+ "dotenv": "^17.3.1",
126
129
  "eslint": "^8.57.0",
127
130
  "eslint-plugin-prettier": "^5.1.3",
128
131
  "eslint-plugin-react": "^7.33.2",