react-broadcast-sync 2.1.2 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +0 -11
- package/README.md +21 -59
- package/dist/hooks/useBroadcastChannel.d.ts +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/types/types.d.ts +3 -13
- package/llms.txt +17 -46
- package/package.json +9 -11
- package/skills/react-broadcast-sync/SKILL.md +2 -2
- package/TELEMETRY.md +0 -59
- package/dist/utils/telemetry.d.ts +0 -14
package/LICENSE
CHANGED
|
@@ -19,14 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
21
|
THE SOFTWARE.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
TELEMETRY NOTICE
|
|
26
|
-
|
|
27
|
-
This Software collects anonymous, non-personal usage statistics by default.
|
|
28
|
-
No channel names, source names, message content, user identifiers, or any
|
|
29
|
-
personally identifiable information is collected. Session identifiers are
|
|
30
|
-
randomly generated on each page load and are never persisted. You may opt out
|
|
31
|
-
at any time by passing { telemetry: false } to useBroadcastChannel or
|
|
32
|
-
BroadcastProvider. See TELEMETRY.md for full details.
|
package/README.md
CHANGED
|
@@ -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; //
|
|
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` |
|
|
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
|
-
|
|
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
|
-
- **
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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=`react-broadcast-sync:${e}:${`${r}-${n}`}`,a=/[\u0100-\uffff]/.test(s)?encodeURIComponent(s).replace(/%([0-9A-F]{2})/g,((e,r)=>String.fromCharCode(parseInt(r,16)))):s,o=btoa(a);return`${t}:${e}:${o}`},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),I=e.useRef(null),G=e.useRef(new Map),L=e.useRef(null),O=e.useRef(null),F=e.useRef([]),j=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(!I.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,I.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=I.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),j.current=!0}else F.current.push(s),O.current||(O.current=setTimeout((()=>{if(j.current)return F.current=[],void(O.current=null);try{n.postMessage(F.current)}catch(r){const t="Failed to send message";f({action:"postMessage",channelName:J,type:e,originalError:t}),K(t),j.current=!0}F.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=I.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=I.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=G.current.get(n.id);if(c&&s-c<b)return void d.duplicate(n.id);G.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=I.current;e&&"function"==typeof e.close&&(e.removeEventListener("message",re),e.close(),u.closed(J),I.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 I.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 G.current.entries())e-t>=b&&G.current.delete(r)}),6e4);return()=>clearInterval(e)}),[b]),e.useEffect((()=>()=>{if(F.current.length>0&&I.current&&!j.current){try{I.current.postMessage(F.current)}catch(e){const r="Failed to send message";f({action:"useBroadcastChannel",channelName:J,originalError:e instanceof Error?e:String(e)}),K(r)}F.current=[],setTimeout((()=>{}),0)}O.current&&(clearTimeout(O.current),O.current=null),j.current=!1}),[]),{channelName:J,messages:A,sentMessages:T,isPingInProgress:x,ping:Q,postMessage:X,clearReceivedMessages:Y,clearSentMessages:Z,getLatestMessage:ee,error:_,closeChannel:te}},C=e.createContext(void 0);exports.BroadcastProvider=({children:e,channelName:t,options:n})=>{const s=E(t,n,"provider");return r.jsx(C.Provider,{value:s,children:e})},exports.useBroadcastChannel=E,exports.useBroadcastProvider=()=>{const r=e.useContext(C);if(!r)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return r};
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/utils/messageUtils.ts","../src/utils/debug.ts","../src/utils/telemetry.ts","../src/hooks/useBroadcastChannel.ts","../src/BroadcastProvider.tsx"],"sourcesContent":[null,null,null,null,null],"names":["INTERNAL_PREFIX","generateRandomPart","Math","random","toString","substr","generateMessageId","source","timestamp","raw","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":"sFAEA,MAAMA,EAAkB,eAIXC,EAAqBA,IAAMC,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,GAMhEC,EAAoBA,CAACC,EAAgBC,KAChD,MAAMC,EAAM,GAAGR,OAAwBM,KAAUC,IAG3CE,EAASC,mBAAmBF,GAAKG,QAAQ,mBAAmB,CAACC,EAAQC,IACzEC,OAAOC,aAAaC,SAASH,EAAK,OAEpC,OAAOI,KAAKR,GAAQE,QAAQ,MAAO,KAgBxBO,EAAoBC,KACxBA,EAAQC,gBAAiBD,EAAQC,eAAiBC,KAAKC,MAInDC,EAAgBA,CAC3BC,EACAC,EACAnB,EACAoB,EAAoE,CAAA,WAEpE,MAAMnB,EAAYc,KAAKC,MACvB,MAAO,CACLK,GAAItB,EAAkBC,EAAQC,GAC9BiB,OACAL,QAASM,EACTlB,YACAD,SACAc,eAEE,UADAM,EAAQN,sBACR,IAAAQ,EAAAA,EAACF,EAAQG,mBAAqBtB,EAAYmB,EAAQG,wBAAqBC,IAIhEC,EAAyBA,CACpCC,EACAC,EACAC,EAAY,MAEZ,MAEMC,EAAOlB,KADC,wBAAae,KADP,GAAGC,KAAeC,OAGtC,MAAO,GAAGnC,KAAmBiC,KAAYG,KAO9BC,EAA+BjB,GAExCA,GACmB,iBAAZA,GACiB,iBAAjBA,EAAQK,MACAL,EAAQK,KARba,WAAW,GAAGtC,OASE,iBAAnBoB,EAAQb,OCrEbgC,EAAMA,CAACC,EAAiBpB,EAAiBqB,KAC7C,GATuB,oBAAZC,UAA2BA,QAAQC,KACK,SAA1CD,QAAQC,IAAIC,0BAQD,OAEpB,MACMC,EAAS,KADG,IAAIvB,MAAOwB,wCAE7B,OAAQN,GACN,IAAK,OACHO,QAAQR,IAAIM,EAAQzB,EAASqB,GAAQ,IACrC,MACF,IAAK,OACHM,QAAQC,KAAKH,EAAQzB,EAASqB,GAAQ,IACtC,MACF,IAAK,QACHM,QAAQE,MAAMJ,EAAQzB,EAASqB,GAAQ,MAKhCS,EACF,CACPC,QAAUC,GAAiBb,EAAI,OAAQ,mBAAoBa,GAC3DC,OAASD,GAAiBb,EAAI,OAAQ,kBAAmBa,IAHhDF,EAKF,CACPI,KAAOlC,GAAiBmB,EAAI,OAAQ,gBAAiBnB,GACrDmC,SAAWnC,GAAiBmB,EAAI,OAAQ,oBAAqBnB,GAC7DoC,QAAUC,GAAsBlB,EAAI,OAAQ,mBAAoBkB,GAChEC,QAAUD,GAAsBlB,EAAI,OAAQ,mBAAoBkB,GAChEE,UAAYF,GAAsBlB,EAAI,OAAQ,6BAA8BkB,GAC5EG,eAAgBA,IAAMrB,EAAI,OAAQ,6BAClCsB,mBAAoBA,IAAMtB,EAAI,OAAQ,iCACtCuB,QAAUC,GACRxB,EAAI,OAAQ,sCAAuCwB,IAd5Cb,EAgBL,CACJc,WAAYA,IAAMzB,EAAI,OAAQ,6CAjBrBW,EAmBF,CACPe,QAASA,IAAM1B,EAAI,OAAQ,mBAC3B2B,UAAYC,GAAyB5B,EAAI,OAAQ,qBAAsB4B,IArB9DjB,EAuBHkB,IAON,MAAMC,OAAEA,EAAMnC,YAAEA,EAAWT,KAAEA,EAAIlB,OAAEA,EAAM+D,cAAEA,GAAkBF,EAE7D,IAAIhD,EAAU,GAAGiD,IAIjB,GAHInC,IAAad,GAAW,eAAec,KACvCT,IAAML,GAAW,YAAYK,KAC7BlB,IAAQa,GAAW,cAAcb,KACjC+D,aAAyBC,MAC3BnD,GAAW,aAAakD,EAAclD,eACjC,GAA6B,iBAAlBkD,EAChBlD,GAAW,aAAakD,SACnB,GAAqB,MAAjBA,EACT,IACElD,GAAW,aAAaoD,KAAKC,UAAUH,IACxC,CAAC,MAAAzC,GACAT,GAAW,4BACb,CAGFmB,EAAI,QAAS,SAAUnB,UC1E3B,IAAIsD,EAAuD,QAA9B7C,EAAA,oCAA8BA,EAAA,GAE3D,MAIM8C,EAAY,gBAChB,IACE,OACmE,QAAjEC,EAAiE,QAAjEC,GAAAhD,EAACiD,QAAkDC,kBAAc,IAAAF,OAAA,EAAAA,EAAAG,KAAAnD,UAAA,IAAA+C,EAAAA,EACjE1E,KAAKC,SAASC,SAAS,IAAI6E,MAAM,GAAK3D,KAAKC,MAAMnB,SAAS,GAE9D,CAAE,MAAA8E,GACA,OAAOhF,KAAKC,SAASC,SAAS,IAAI6E,MAAM,GAAK3D,KAAKC,MAAMnB,SAAS,GACnE,CACD,EATiB,GAiBZ+E,EAAyB,GACzBC,EAAgB,IAAIC,IAC1B,IAAIC,EAAmD,KAEvD,SAASC,EAAWnC,EAAcoC,GAChC,MAAO,CACLC,MAAOrC,EACPsC,WAAUC,OAAAC,OAAA,CACRC,MAAOnB,EACPoB,YAAanB,EACboB,KAAM7F,KAAK8F,MAAM1E,KAAKC,MAAQ,MAC3BiE,GAGT,CAEA,SAAeS,uDACb,GAAqB,IAAjBd,EAAMe,SAAiBxB,EAAgB,OAC3C,MAAMyB,EAAQhB,EAAMiB,OAAO,GAC3B,UACQC,MAzCgB,oCAyCS,CAC7BC,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAMhC,KAAKC,UAAU0B,GACrBM,WAAW,GAEf,CAAE,MAAA5E,GACA,CAEJ,GAAC,CAED,SAAS6E,IACFhC,GAAiC,OAAfY,IACvBA,EAAaqB,YAAW,KACtBrB,EAAa,KACbW,MAvDsB,KAyD1B,CA4BM,SAAUW,EAAkBN,GAC5BlB,EAAcyB,IAAIP,KACtBlB,EAAc0B,IAAIR,GAClBnB,EAAM4B,KAAKxB,EAAW,gBAAiB,CAAEe,YACzCI,IACF,CA9BwB,oBAAbM,UACTA,SAASC,iBAAiB,oBAAoB,KACX,WAA7BD,SAASE,kBACQ,OAAf5B,IACF6B,aAAa7B,GACbA,EAAa,MAEfW,QChDN,MAAMmB,EACiB,sBADjBA,EAEE,OAFFA,EAGE,OAGR,IAAIC,EACJ,GAA6B,SAAzB3E,QAAQC,IAAI2E,SACd,IAEED,EAAcE,QAAQ,aAAaC,SACpC,CAAC,MAAA3F,GACA,CAgCG,MAAM4F,EAAsBA,CACjCvF,EACAP,EAA4B,CAAE,EAE9B+F,EAA8B,UAE9B,MAAMC,WACJA,EAAUC,iBACVA,EAAmB,IAAIC,kBACvBA,GAAoB,EAAKC,gBACzBA,EAAkB,GAAE3F,UACpBA,EAAY,GAAE4F,iBACdA,EAAmB,IAAaC,kBAChCA,EAAoB,EAACC,gBACrBA,EAAkB,GAAEC,0BACpBA,EAA4B,GAAEC,UAC9BA,EAASC,UACTA,GAAY,GACVzG,GAGG0G,EAAUC,GAAeC,EAAAA,SAA6B,KACtDC,EAAcC,GAAmBF,EAAAA,SAA6B,KAC9DtF,EAAOyF,GAAYH,EAAAA,SAAwB,OAC3CI,EAAkBC,GAAuBL,EAAAA,UAAS,GAGnDM,EAAUC,EAAMA,OAA0B,MAC1CC,EAAqBD,EAAAA,OAAO,IAAIE,KAChCC,EAAyBH,EAAMA,OAAqB,MACpDI,EAAqBJ,EAAMA,OAAwB,MACnDK,EAAsBL,EAAMA,OAAqB,IACjDM,EAAmBN,EAAMA,QAAC,GAC1BO,EAAeP,EAAMA,OAA6CX,GACxEkB,EAAaC,QAAUnB,EAGvB,MAAM5H,EAASgJ,EAAAA,SAAQ,IAAM5B,GHjGS,OAAO1H,OGiGoB,CAAC0H,IAC5D6B,EAAgBD,EAAAA,SACpB,KAAO,CACLE,oBAAqBzH,EACnBoF,EACAlF,EACAC,GAEFuH,KAAM1H,EAAuBoF,EAA6BlF,EAAaC,GACvEwH,KAAM3H,EAAuBoF,EAA6BlF,EAAaC,MAEzE,CAACD,EAAaC,IAGVyH,EAAsBL,EAAAA,SAAQ,IAE3BpH,EAAY,GAAGD,KAAeC,IAAcD,GAClD,CAACA,EAAaC,IAEX0H,EAAqBf,EAAMA,OAAWhB,GAC5C+B,EAAmBP,QAAUxB,EAG7BgC,EAAAA,WAAU,KACR,IAAK1B,EAAW,OAChB,MAAM2B,EAAwB,GD7C5B,IAA2BvE,OC8CVzD,IAAf4F,GAA0BoC,EAAYhD,KAAK,cACtB,MAArBa,GAA2BmC,EAAYhD,KAAK,oBAC5Cc,GAAmBkC,EAAYhD,KAAK,qBACpCe,EAAgB5B,OAAS,GAAG6D,EAAYhD,KAAK,mBAC7C5E,GAAW4H,EAAYhD,KAAK,aACP,MAArBgB,GAAoCgC,EAAYhD,KAAK,oBACrDiB,EAAoB,GAAG+B,EAAYhD,KAAK,qBACpB,KAApBkB,GAAwB8B,EAAYhD,KAAK,mBACzCmB,EAA0BhC,OAAS,GAAG6D,EAAYhD,KAAK,kCACzChF,IAAdoG,GAAyB4B,EAAYhD,KAAK,aDvDjBvB,ECwDZ,CACfwE,MAAOtC,EACPuC,aAAcF,EACdG,qBACgBnI,IAAdoG,EAA0B,OAA8B,mBAAdA,EAA2B,WAAa,MACpFgC,iBAAkBlC,EAAkB,EACpCmC,kBAA+C,oBAArBC,kBD7D9BlF,EAAM4B,KAAKxB,EAAW,eAAgBC,IACtCkB,MC+DG,IAEH,MAAM4D,EAAiBC,EAAAA,aAAY,KACjCjC,GAAYkC,GAAQA,EAAKC,QAAOC,IAAQvJ,EAAiBuJ,SACxD,IAEGC,EAAmB7B,EAAAA,OAIvBd,EAAoB,EH7EA4C,EACtBC,EACAC,KAKA,IAEIC,EAFAC,EAAkD,KAClDC,EAAiC,KAGrC,MAAMC,EAAYA,IAAIC,KACpBF,EAAWE,EACO,OAAdH,GACF7D,aAAa6D,GAEfA,EAAYrE,YAAW,KACrBqE,EAAY,KACK,OAAbC,IACFF,EAASF,KAAMI,GACfA,EAAW,QAEZH,IAuBL,OApBAI,EAAUE,OAAS,KACC,OAAdJ,IACF7D,aAAa6D,GACbA,EAAY,KACZC,EAAW,OAIfC,EAAUjF,MAAQ,KACE,OAAd+E,IACF7D,aAAa6D,GACbA,EAAY,KACK,OAAbC,IACFF,EAASF,KAAMI,GACfA,EAAW,OAGRF,GAGFG,GGiCDN,CAASN,EAAgBtC,GACzBrC,OAAOC,OAAO0E,EAAgB,CAAEc,OAAQA,UAC5C9B,QAEI+B,GAAkBd,EAAWA,aAAEtH,IACnCyF,EAASzF,GACT0D,YAAW,IAAM+B,EAAS,OAAO,OAChC,IAEG4C,GAAOf,EAAAA,aACX,CAACgB,EAAoB,OAEnB,GADInD,GAAWxB,EAAkB,QAC7B+B,EAEF,OADAzF,EAAWc,aACJwH,QAAQC,QAAQ,IAGzB,IAAK5C,EAAQS,QAAS,CACpB,MAAMrG,EACJ,yFAOF,OANAC,EAAY,CACVmB,OAAQ,OACRnC,YAAa0H,EACbtF,cAAerB,IAEjBoI,GAAgBpI,GACTuI,QAAQC,QAAQ,GACzB,CAGIpE,EACFA,GAAY,IAAMuB,GAAoB,KAEtCA,GAAoB,GAEtB,MAAM8C,EAAY,IAAIrG,IAKtB,OAJA4D,EAAuBK,QAAUoC,EAEjC7C,EAAQS,QAAQqC,YAAYnK,EAAcgI,EAAcE,KAAM,KAAMnJ,IAE7D,IAAIiL,SAAQC,IACjB9E,YAAW,KACTiC,GAAoB,GAChBK,EAAuBK,UAAYoC,IACrCzC,EAAuBK,QAAU,MAEnCmC,EAAQG,MAAMC,KAAKH,MAClBH,QAGP,CAAC/B,EAAcE,KAAMnJ,EAAQ8K,GAAiB1C,EAAkBtB,IAG5DsE,GAAcpB,EAAAA,aAClB,CAACxG,EAAqB+H,EAAqBnK,EAA8B,MACnEyG,GAAWxB,EAAkB,eACjC,MAAMmF,EAAiBlD,EAAQS,QAC/B,IAAKyC,EAAgB,CACnB,MAAM9I,EACJ,yFAQF,OAPAC,EAAY,CACVmB,OAAQ,cACRnC,YAAa0H,EACbnI,KAAMsC,EACNO,cAAerB,SAEjBoI,GAAgBpI,EAElB,CAEA,MAAM7B,EAAUI,EAAcuC,EAAa+H,EAAgBvL,EAAQoB,GAInE,IADGsG,GAAmBA,EAAkB,GAAKC,EAA0B8D,SAASjI,GAE9E,IACEgI,EAAeJ,YAAYvK,EAC5B,CAAC,MAAO6K,GACP,MAAMhJ,EAAQ,yBACdC,EAAY,CACVmB,OAAQ,cACRnC,YAAa0H,EACbnI,KAAMsC,EACNO,cAAerB,IAEjBoI,GAAgBpI,GAChBmG,EAAiBE,SAAU,CAC7B,MAEAH,EAAoBG,QAAQvC,KAAK3F,GAC5B8H,EAAmBI,UACtBJ,EAAmBI,QAAU3C,YAAW,KACtC,GAAIyC,EAAiBE,QAGnB,OAFAH,EAAoBG,QAAU,QAC9BJ,EAAmBI,QAAU,MAG/B,IACEyC,EAAeJ,YAAYxC,EAAoBG,QAChD,CAAC,MAAO2C,GACP,MAAMhJ,EAAQ,yBACdC,EAAY,CACVmB,OAAQ,cACRnC,YAAa0H,EACbnI,KAAMsC,EACNO,cAAerB,IAEjBoI,GAAgBpI,GAChBmG,EAAiBE,SAAU,CAC7B,CACAH,EAAoBG,QAAU,GAC9BJ,EAAmBI,QAAU,OAC5BrB,IAGP/E,EAAcI,KAAKlC,GACnBqH,GAAgB+B,GAAQ,IAAIA,EAAMpJ,OAEpC,CAACb,EAAQ8K,GAAiBpD,EAAiBC,IAGvCgE,GAAwB3B,EAAAA,aAAY,CAAC5I,EAAwC,CAAA,KAC7EyG,GAAWxB,EAAkB,yBACjC,MAAMuF,EAAaC,QAChBzK,EAAQ0K,KAAO1K,EAAQ0K,IAAInG,QACzBvE,EAAQ2K,OAAS3K,EAAQ2K,MAAMpG,QAC/BvE,EAAQ4K,SAAW5K,EAAQ4K,QAAQrG,QAGxCoC,GAAYkC,GACV2B,EACI3B,EAAKC,QACHC,KACI/I,EAAQ0K,KAAO1K,EAAQ0K,IAAIL,SAAStB,EAAI9I,KACxCD,EAAQ2K,OAAS3K,EAAQ2K,MAAMN,SAAStB,EAAIjJ,OAC5CE,EAAQ4K,SAAW5K,EAAQ4K,QAAQP,SAAStB,EAAInK,WAEtD,KAED4L,GACHjJ,EAAcW,uBAEf,IAEG2I,GAAoBjC,EAAAA,aACxB,CAAC5I,EAAoC,CAAA,eAC/ByG,GAAWxB,EAAkB,qBACjC,MAAMyF,IAAEA,EAAM,GAAEC,MAAEA,EAAQ,GAAEG,KAAEA,GAAO,GAAU9K,QAAAA,EAAW,CAAE,EAC5D8G,GAAgB+B,GACd6B,EAAInG,OAAS,GAAKoG,EAAMpG,OAAS,EAC7BsE,EAAKC,QAAOC,IAEV,GAAIA,EAAInK,SAAWA,EAAQ,OAAO,EAKlC,MAAMmM,EAA2B,IAAfL,EAAInG,QAAgBmG,EAAIL,SAAStB,EAAI9I,IACjD+K,EAA+B,IAAjBL,EAAMpG,QAAgBoG,EAAMN,SAAStB,EAAIjJ,MAG7D,QAASiL,GAAaC,MAExB,KAEa,IAAfN,EAAInG,QAAiC,IAAjBoG,EAAMpG,QAC5BhD,EAAcU,iBAEZ6I,IACa,QAAf5K,EAAAgH,EAAQS,eAAO,IAAAzH,GAAAA,EAAE8J,YACfnK,EACEgI,EAAcC,oBACd,CAAE4C,YAAKxH,EAAAlD,EAAQ0K,mBAAO,GAAIC,MAAoB,UAAb3K,EAAQ2K,aAAK,IAAA1H,EAAAA,EAAI,IAClDrE,OAKR,CAACA,EAAQiJ,EAAcC,sBAGnBmD,GAAmBrC,EAAAA,aACvB,CAAC5I,EAAmC,CAAA,KAC9ByG,GAAWxB,EAAkB,oBACjC,MAAMrG,OAAEA,EAAMkB,KAAEA,GAASE,EAEzB,IAAK,IAAIkL,EAAIxE,EAASnC,OAAS,EAAG2G,GAAK,EAAGA,IAAK,CAC7C,MAAMnC,EAAMrC,EAASwE,GACfC,GAAiBvM,GAAUmK,EAAInK,SAAWA,EAC1CoM,GAAelL,GAAQiJ,EAAIjJ,OAASA,EAC1C,GAAIqL,GAAiBH,EACnB,OAAOjC,CAEX,CAEA,OAAO,OAET,CAACrC,IAGG0E,GAAgBxC,EAAWA,aAC9B9E,YACC,IACE,MAAMrE,EAA4BqE,EAAMhD,KAGxC,GAFAS,EAAcK,SAASnC,IHvVAA,IACtBgL,QACLhL,GACqB,iBAAZA,GACe,iBAAfA,EAAQQ,IACS,iBAAjBR,EAAQK,MACW,iBAAnBL,EAAQb,QACc,iBAAtBa,EAAQZ,WGkVRwM,CAAe5L,GAAU,OAC9B,GAAIA,EAAQb,SAAWA,EAAQ,OAC/B,GAAI8B,EAA4BjB,GAAU,CACxC,GAAIA,EAAQK,OAAS+H,EAAcC,oBAAqB,CACtD,MAAM4C,IAAEA,EAAM,GAAEC,MAAEA,EAAQ,IAAQlL,EAAgBA,SAAW,CAAE,EAiB/D,YAfAkH,GAAYkC,GAAQ,IACfA,EAAKC,QAAOC,IAEb,GAAIA,EAAInK,SAAWa,EAAQb,OAAQ,OAAO,EAK1C,MAAMmM,EAA2B,IAAfL,EAAInG,QAAgBmG,EAAIL,SAAStB,EAAI9I,IACjD+K,EAA+B,IAAjBL,EAAMpG,QAAgBoG,EAAMN,SAAStB,EAAIjJ,MAE7D,QAASiL,GAAaC,QAK5B,CACA,GAAIvL,EAAQK,OAAS+H,EAAcE,KAEjC,YADiB,QAAjB7H,EAAAgH,EAAQS,eAAS,IAAAzH,GAAAA,EAAA8J,YAAYnK,EAAcgI,EAAcG,KAAM,KAAMpJ,KAIvE,GAAIa,EAAQK,OAAS+H,EAAcG,KAAM,CACvC,MAAMsD,EAAa7L,EAAQb,OACrBmL,EAAYzC,EAAuBK,QAMzC,YAJIoC,IAA2C,IAA9BA,EAAU7E,IAAIoG,IAC7BvB,EAAU5E,IAAImG,GAIlB,CACF,CACA,GACEpD,EAAmBP,QAAQpD,OAAS,IACnC2D,EAAmBP,QAAQ0C,SAAS5K,EAAQK,MAG7C,YADAyB,EAAcY,QAAQ1C,EAAQK,MAGhC,GAAIN,EAAiBC,GAEnB,YADA8B,EAAcQ,QAAQtC,EAAQQ,IAIhC,MAAML,EAAMD,KAAKC,MACX2L,EAAanE,EAAmBO,QAAQ6D,IAAI/L,EAAQQ,IAC1D,GAAIsL,GAAc3L,EAAM2L,EAAanF,EAEnC,YADA7E,EAAcS,UAAUvC,EAAQQ,IAIlCmH,EAAmBO,QAAQ8D,IAAIhM,EAAQQ,GAAIL,GAC3C+G,GAAYkC,GAAS3C,EAAoB,CAACzG,GAAW,IAAIoJ,EAAMpJ,KAE/D,IACE,MAAMiM,EAAKhE,EAAaC,QACN,mBAAP+D,EACTA,EAAGjM,GACMiM,IACO,QAAhBxI,EAAAwI,EAAGjM,EAAQK,aAAK,IAAAoD,GAAAA,EAAAG,KAAAqI,EAAGjM,GAEtB,CAAC,MAAO6K,GACP/I,EAAY,CACVmB,OAAQ,YACRnC,YAAa0H,EACbtF,cAAe2H,aAAa1H,MAAQ0H,EAAE7K,QAAUL,OAAOkL,IAE3D,CACD,CAAC,MAAOA,GACP,MAAMhJ,EAAQ,qCACdC,EAAY,CACVmB,OAAQ,gBACRnC,YAAa0H,EACbtF,cAAerB,IAEjBoI,GAAgBpI,EAClB,IAEF,CAAC1C,EAAQsH,EAAmBwD,GAAiB7B,EAAezB,IAGxDuF,GAAe/C,EAAAA,aAAY,KAC3BnC,GAAWxB,EAAkB,gBACjC,MAAM2G,EAAK1E,EAAQS,QACfiE,GAA0B,mBAAbA,EAAGC,QAClBD,EAAGE,oBAAoB,UAAWV,IAClCQ,EAAGC,QACHtK,EAAcG,OAAOuG,GACrBf,EAAQS,QAAU,QAEnB,CAACyD,GAAenD,IA0GnB,OAxGAE,EAAAA,WAAU,KACR,GAAgC,oBAArBO,iBAAkC,CAC3C,MAAMpH,EACJ,yFAQF,OAPAC,EAAY,CACVmB,OAAQ,sBACRnC,YAAa0H,EACbtF,cAAerB,IAEbmF,IDzXRjD,EAAM4B,KAAKxB,EAAW,sBAAuB,CAAE,IAC/CmB,UCyXI2E,GAAgBpI,EAElB,CAEA,IAAIsK,EAA8B,KAClC,IACEA,EAAK,IAAIlD,iBAAiBT,EAC3B,CAAC,MAAOqC,GACP,MAAMhJ,EAAQ,oCAOd,OANAC,EAAY,CACVmB,OAAQ,sBACRnC,YAAa0H,EACbtF,cAAe2H,aAAa1H,MAAQ0H,EAAIlL,OAAOkL,UAEjDZ,GAAgBpI,EAElB,CAcA,OAbA4F,EAAQS,QAAUiE,EAClBrK,EAAcC,QAAQyG,GAEtB2D,EAAGtG,iBAAiB,WAAYxB,IAE1BmG,MAAM8B,QAAQjI,EAAMhD,MACtBgD,EAAMhD,KAAKkL,SAASvM,IAClB2L,GAAc,CAAEtK,KAAMrB,OAGxB2L,GAActH,MAGX,KACL6H,QAED,CAAC1D,EAAqBmD,GAAe1B,KAExCvB,EAAAA,WAAU,KACR,GAAIlC,GAAoB,EAAG,OAE3B,MAAMgG,EAAWC,aAAY,KAC3B3K,EAAce,UACd,MAAM6J,EAASzF,EAASnC,OACxByE,IACAzH,EAAcgB,UAAU4J,EAASzF,EAASnC,UACzC0B,GAEH,MAAO,WACLmG,cAAcH,GAEV5F,EAAoB,IACC,QAAvBnG,EAAA8I,EAAiBS,cAAM,IAAAvJ,GAAAA,EAAAmD,KAAA2F,OAG1B,CAAC/C,EAAkB+C,EAAkB3C,IAExC8B,EAAAA,WAAU,KACR,MAAM8D,EAAWC,aAAY,KAC3B,MAAMtM,EAAMD,KAAKC,MACjB,IAAK,MAAOyM,EAAKxN,KAAcuI,EAAmBO,QAAQ2E,UACpD1M,EAAMf,GAAauH,GACrBgB,EAAmBO,QAAQ4E,OAAOF,KAGrC,KAEH,MAAO,IAAMD,cAAcH,KAC1B,CAAC7F,IAEJ+B,EAAAA,WAAU,IACD,KAEL,GAAIX,EAAoBG,QAAQpD,OAAS,GAAK2C,EAAQS,UAAYF,EAAiBE,QAAS,CAC1F,IACET,EAAQS,QAAQqC,YAAYxC,EAAoBG,QACjD,CAAC,MAAO2C,GACP,MAAMhJ,EAAQ,yBACdC,EAAY,CACVmB,OAAQ,sBACRnC,YAAa0H,EACbtF,cAAe2H,aAAa1H,MAAQ0H,EAAIlL,OAAOkL,KAEjDZ,GAAgBpI,EAClB,CACAkG,EAAoBG,QAAU,GAE9B3C,YAAW,QAAU,EACvB,CACIuC,EAAmBI,UACrBnC,aAAa+B,EAAmBI,SAChCJ,EAAmBI,QAAU,MAE/BF,EAAiBE,SAAU,IAE5B,IAEI,CACLpH,YAAa0H,EACbvB,WACAG,eACAG,mBACA2C,QACAK,eACAO,yBACAM,qBACAI,oBACA3J,QACAqK,kBClkBEa,EAA0BC,EAAaA,mBAA+BrM,6BAuBTsM,EACjEC,WACApM,cACAP,cAEA,MAAM4M,EAA0B9G,EAAoBvF,EAAaP,EAAS,YAE1E,OACE6M,EAAAC,IAACN,EAAwBO,SAAQ,CAACC,MAAOJ,EAAuBD,SAC7DA,gEAU6BM,KAClC,MAAMxK,EAAUyK,EAAUA,WAACV,GAC3B,IAAK/J,EACH,MAAM,IAAIG,MAAM,gEAElB,OAAOH"}
|
|
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","input","test","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=`react-broadcast-sync:${e}:${`${r}-${t}`}`,s=/[\u0100-\uffff]/.test(n)?encodeURIComponent(n).replace(/%([0-9A-F]{2})/g,((e,r)=>String.fromCharCode(parseInt(r,16)))):n,o=btoa(s);return`${i}:${e}:${o}`},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||"")}},m={created:e=>h("info","Channel created:",e),closed:e=>h("info","Channel closed:",e)},y={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,[I,B]=e([]),[G,R]=e([]),[x,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((()=>{B((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));y.sent(s),R((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);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||y.allReceivedCleared()}),[]),ne=n(((e={})=>{var r,t,n;const{ids:s=[],types:o=[],sync:a=!1}=null!=e?e:{};R((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&&y.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=I.length-1;e>=0;e--){const n=I[e],s=!r||n.source===r,o=!t||n.type===t;if(s&&o)return n}return null}),[I]),oe=n((e=>{var r,t;try{const n=e.data;if(y.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 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===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 y.ignored(n.type);if(d(n))return void y.expired(n.id);const s=Date.now(),o=j.current.get(n.id);if(o&&s-o<$)return void y.duplicate(n.id);j.current.set(n.id,s),B((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(),m.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,m.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=I.length;Y(),E.completed(e-I.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:I,sentMessages:G,isPingInProgress:O,ping:ee,postMessage:re,clearReceivedMessages:te,clearSentMessages:ne,getLatestMessage:se,error:x,closeChannel:ae}},w=o(void 0),$=({children:e,channelName:r,options:t})=>{const n=P(r,t,"provider");return c(w.Provider,{value:n,children:e})},A=()=>{const e=a(w);if(!e)throw new Error("useBroadcastProvider must be used within a BroadcastProvider");return e};export{$ as BroadcastProvider,P as useBroadcastChannel,A as useBroadcastProvider};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/utils/messageUtils.ts","../src/utils/debug.ts","../src/utils/telemetry.ts","../src/hooks/useBroadcastChannel.ts","../src/BroadcastProvider.tsx"],"sourcesContent":[null,null,null,null,null],"names":["INTERNAL_PREFIX","generateRandomPart","Math","random","toString","substr","generateMessageId","source","timestamp","raw","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","input","test","hash","isValidInternalClearMessage","startsWith","log","level","data","process","env","REACT_APP_DEBUG_BROADCAST","prefix","toISOString","console","warn","error","debug","created","name","closed","sent","received","cleared","messageId","expired","duplicate","allSentCleared","allReceivedCleared","ignored","messageType","inProgress","started","completed","removedCount","context","action","originalError","Error","JSON","stringify","INTERNAL_MESSAGE_TYPES","flushSyncFn","NODE_ENV","require","flushSync","useBroadcastChannel","_entry","sourceName","cleaningInterval","keepLatestMessage","registeredTypes","deduplicationTTL","cleanupDebounceMs","batchingDelayMs","excludedBatchMessageTypes","onMessage","messages","setMessages","useState","sentMessages","setSentMessages","setError","isPingInProgress","setIsPingInProgress","channel","useRef","receivedMessageIds","Map","activeSourcesCollector","batchingTimeoutRef","batchingMessagesRef","batchingErrorRef","onMessageRef","current","useMemo","internalTypes","CLEAR_SENT_MESSAGES","PING","PONG","resolvedChannelName","registeredTypesRef","performCleanup","useCallback","prev","filter","msg","debouncedCleanup","debounce","fn","wait","result","timeoutId","lastArgs","debounced","args","clearTimeout","setTimeout","cancel","flush","Object","assign","setErrorMessage","ping","timeoutMs","Promise","resolve","collector","Set","postMessage","Array","from","messageContent","channelCurrent","includes","e","push","clearReceivedMessages","hasFilters","Boolean","ids","length","types","sources","clearSentMessages","sync","idMatches","typeMatches","_b","_c","getLatestMessage","i","sourceMatches","handleMessage","event","isValidMessage","pongSource","has","add","receivedAt","get","set","cb","call","closeChannel","bc","close","removeEventListener","useEffect","BroadcastChannel","addEventListener","isArray","forEach","interval","setInterval","before","clearInterval","key","entries","delete","BroadcastChannelContext","createContext","BroadcastProvider","children","BroadcastChannelActions","_jsx","Provider","value","useBroadcastProvider","useContext"],"mappings":"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"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -32,19 +32,9 @@ export interface BroadcastOptions {
|
|
|
32
32
|
*/
|
|
33
33
|
onMessage?: MessageCallback | OnMessageMap;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* signals are sent to the maintainer: which options are in use, which
|
|
39
|
-
* methods are called, and whether the hook or provider entry point is used.
|
|
40
|
-
* No channel names, source names, or message content are sent.
|
|
41
|
-
*
|
|
42
|
-
* Set to `true` to opt in:
|
|
43
|
-
* ```tsx
|
|
44
|
-
* useBroadcastChannel('my-channel', { telemetry: true });
|
|
45
|
-
* ```
|
|
46
|
-
*
|
|
47
|
-
* See TELEMETRY.md in the package repository for full details.
|
|
35
|
+
* @deprecated No-op. The package no longer collects telemetry. The option is still
|
|
36
|
+
* accepted so existing code that passes `telemetry` keeps compiling; it will be removed
|
|
37
|
+
* in the next major version.
|
|
48
38
|
*/
|
|
49
39
|
telemetry?: boolean;
|
|
50
40
|
}
|
package/llms.txt
CHANGED
|
@@ -92,25 +92,25 @@ interface BroadcastOptions {
|
|
|
92
92
|
batchingDelayMs?: number; // Delay in ms to batch outgoing messages (default: 20). If > 0, messages are batched and sent together.
|
|
93
93
|
excludedBatchMessageTypes?: string[]; // Message types to always send immediately, never batched (default: []).
|
|
94
94
|
onMessage?: MessageCallback | OnMessageMap; // Callback(s) fired when a received message passes all filters (default: undefined).
|
|
95
|
-
telemetry?: boolean; //
|
|
95
|
+
telemetry?: boolean; // Deprecated no-op.
|
|
96
96
|
}
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
#### Default Values
|
|
100
100
|
|
|
101
|
-
| Option | Default Value | Description
|
|
102
|
-
| --------------------------- | ------------- |
|
|
103
|
-
| `sourceName` | `undefined` | Auto-generated if not provided
|
|
104
|
-
| `cleaningInterval` | `1000` | 1 second between cleanup runs
|
|
105
|
-
| `keepLatestMessage` | `false` | Keep all messages by default
|
|
106
|
-
| `registeredTypes` | `[]` | Accept all message types by default
|
|
107
|
-
| `namespace` | `''` | No namespace by default
|
|
108
|
-
| `deduplicationTTL` | `300000` | 5 minutes (5 × 60 × 1000 ms)
|
|
109
|
-
| `cleanupDebounceMs` | `0` | No debounce by default
|
|
110
|
-
| `batchingDelayMs` | `20` | Batch delay in ms (0 = off)
|
|
111
|
-
| `excludedBatchMessageTypes` | `[]` | Types never batched
|
|
112
|
-
| `onMessage` | `undefined` | Callback(s) for received messages
|
|
113
|
-
| `telemetry` | `false` |
|
|
101
|
+
| Option | Default Value | Description |
|
|
102
|
+
| --------------------------- | ------------- | ------------------------------------------- |
|
|
103
|
+
| `sourceName` | `undefined` | Auto-generated if not provided |
|
|
104
|
+
| `cleaningInterval` | `1000` | 1 second between cleanup runs |
|
|
105
|
+
| `keepLatestMessage` | `false` | Keep all messages by default |
|
|
106
|
+
| `registeredTypes` | `[]` | Accept all message types by default |
|
|
107
|
+
| `namespace` | `''` | No namespace by default |
|
|
108
|
+
| `deduplicationTTL` | `300000` | 5 minutes (5 × 60 × 1000 ms) |
|
|
109
|
+
| `cleanupDebounceMs` | `0` | No debounce by default |
|
|
110
|
+
| `batchingDelayMs` | `20` | Batch delay in ms (0 = off) |
|
|
111
|
+
| `excludedBatchMessageTypes` | `[]` | Types never batched |
|
|
112
|
+
| `onMessage` | `undefined` | Callback(s) for received messages |
|
|
113
|
+
| `telemetry` | `false` | Deprecated no-op. No telemetry is collected |
|
|
114
114
|
|
|
115
115
|
#### Return Value
|
|
116
116
|
|
|
@@ -318,37 +318,9 @@ useBroadcastChannel('my-channel', {
|
|
|
318
318
|
|
|
319
319
|
---
|
|
320
320
|
|
|
321
|
-
#### `telemetry` Option
|
|
321
|
+
#### `telemetry` Option (deprecated)
|
|
322
322
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
**What is collected:**
|
|
326
|
-
|
|
327
|
-
- Which `BroadcastOptions` keys are present (not their values)
|
|
328
|
-
- The shape of `onMessage` (`none` / `function` / `map`)
|
|
329
|
-
- Whether batching is enabled
|
|
330
|
-
- Whether `BroadcastChannel` is supported in the browser
|
|
331
|
-
- Which action methods (`postMessage`, `ping`, etc.) are called at least once per session
|
|
332
|
-
- Hook vs. provider entry point
|
|
333
|
-
|
|
334
|
-
**What is never collected:**
|
|
335
|
-
|
|
336
|
-
- Channel names, source names, message content, or message types
|
|
337
|
-
- Any application user identifiers in the event payload (Mixpanel may process IP addresses from request metadata)
|
|
338
|
-
|
|
339
|
-
Telemetry is **off by default**. Pass `telemetry: true` to opt in for a channel:
|
|
340
|
-
|
|
341
|
-
```tsx
|
|
342
|
-
useBroadcastChannel('my-channel', { telemetry: true });
|
|
343
|
-
// or
|
|
344
|
-
<BroadcastProvider channelName="my-channel" options={{ telemetry: true }} />;
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
**Upgrading to 2.0.0 from 1.x:** telemetry is now off by default. Omit the option or leave `telemetry: false` to keep it off; pass `telemetry: true` only if you want to opt in. This default change is breaking.
|
|
348
|
-
|
|
349
|
-
Events are batched and flushed in a single request when the tab is hidden or after 30 seconds. A failed request is silently discarded and never surfaces to your application.
|
|
350
|
-
|
|
351
|
-
See [TELEMETRY.md](./TELEMETRY.md) for the full legal notice.
|
|
323
|
+
The package no longer collects any telemetry. The `telemetry` option is still accepted as a deprecated no-op so existing code keeps compiling; it will be removed in the next major version.
|
|
352
324
|
|
|
353
325
|
---
|
|
354
326
|
|
|
@@ -359,9 +331,8 @@ See [TELEMETRY.md](./TELEMETRY.md) for the full legal notice.
|
|
|
359
331
|
- **`cleanupDebounceMs` vs `cleaningInterval`:** cleanup is debounced. If `cleanupDebounceMs` is longer than `cleaningInterval`, each interval tick restarts the debounce and expired messages may never be removed. Keep `cleanupDebounceMs` smaller than `cleaningInterval`.
|
|
360
332
|
- **Deduplication is by message ID**, not content (see [Message Deduplication](#message-deduplication)).
|
|
361
333
|
- **Same origin only:** `BroadcastChannel` does not cross origins, and a tab does not receive its own messages.
|
|
362
|
-
- **
|
|
334
|
+
- **No telemetry:** the `telemetry` option is a deprecated no-op (see [Telemetry](#telemetry)).
|
|
363
335
|
|
|
364
336
|
## Links
|
|
365
337
|
|
|
366
338
|
- [README](https://github.com/IdanShalem/react-broadcast-sync#readme)
|
|
367
|
-
- [Telemetry notice](https://github.com/IdanShalem/react-broadcast-sync/blob/main/TELEMETRY.md)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-broadcast-sync",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.4",
|
|
4
4
|
"description": "React hook and provider for cross-tab messaging over BroadcastChannel, with helpers for manually syncing state between tabs (no automatic state replication).",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
"llms.txt",
|
|
13
13
|
"skills",
|
|
14
14
|
"README.md",
|
|
15
|
-
"LICENSE"
|
|
16
|
-
"TELEMETRY.md"
|
|
15
|
+
"LICENSE"
|
|
17
16
|
],
|
|
18
17
|
"exports": {
|
|
19
18
|
".": {
|
|
@@ -35,7 +34,6 @@
|
|
|
35
34
|
"prepack": "npm run build",
|
|
36
35
|
"generate:llms": "node scripts/generate-llms-txt.mjs",
|
|
37
36
|
"check:llms": "node scripts/generate-llms-txt.mjs --check",
|
|
38
|
-
"verify:telemetry": "node scripts/verify-telemetry-token.mjs",
|
|
39
37
|
"dev:integration": "vite integration/app --port 5199 --strictPort",
|
|
40
38
|
"test:integration": "playwright test"
|
|
41
39
|
},
|
|
@@ -99,7 +97,7 @@
|
|
|
99
97
|
"bugs": {
|
|
100
98
|
"url": "https://github.com/IdanShalem/react-broadcast-sync/issues"
|
|
101
99
|
},
|
|
102
|
-
"homepage": "https://
|
|
100
|
+
"homepage": "https://react-broadcast-sync-docs.vercel.app",
|
|
103
101
|
"peerDependencies": {
|
|
104
102
|
"react": ">=16.8.0",
|
|
105
103
|
"react-dom": ">=16.8.0"
|
|
@@ -133,14 +131,14 @@
|
|
|
133
131
|
"@semantic-release/git": "^10.0.1",
|
|
134
132
|
"@semantic-release/github": "^9.2.6",
|
|
135
133
|
"@semantic-release/npm": "^11.0.2",
|
|
136
|
-
"@testing-library/dom": "^
|
|
134
|
+
"@testing-library/dom": "^10.4.2",
|
|
137
135
|
"@testing-library/jest-dom": "^6.4.2",
|
|
138
|
-
"@testing-library/react": "^
|
|
136
|
+
"@testing-library/react": "^16.3.3",
|
|
139
137
|
"@testing-library/user-event": "^14.5.2",
|
|
140
138
|
"@types/jest": "^29.5.12",
|
|
141
139
|
"@types/node": "^20.11.24",
|
|
142
|
-
"@types/react": "^
|
|
143
|
-
"@types/react-dom": "^
|
|
140
|
+
"@types/react": "^19.3.0",
|
|
141
|
+
"@types/react-dom": "^19.3.0",
|
|
144
142
|
"@vitejs/plugin-react": "^4.2.1",
|
|
145
143
|
"commitlint": "^19.0.3",
|
|
146
144
|
"dotenv": "^17.3.1",
|
|
@@ -153,8 +151,8 @@
|
|
|
153
151
|
"jest-environment-jsdom": "^29.7.0",
|
|
154
152
|
"lint-staged": "^15.2.2",
|
|
155
153
|
"prettier": "^3.2.5",
|
|
156
|
-
"react": "^
|
|
157
|
-
"react-dom": "^
|
|
154
|
+
"react": "^19.3.0",
|
|
155
|
+
"react-dom": "^19.3.0",
|
|
158
156
|
"rollup": "^4.12.0",
|
|
159
157
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
160
158
|
"semantic-release": "^23.0.2",
|
|
@@ -14,7 +14,7 @@ Cross-tab messaging for React over the browser `BroadcastChannel` API. Version 2
|
|
|
14
14
|
- Messages are not replayed. A tab opened later sees only messages sent after it opened.
|
|
15
15
|
- Deduplication is by message ID, not content.
|
|
16
16
|
- There is no automatic state replication. You send messages and apply them yourself.
|
|
17
|
-
-
|
|
17
|
+
- The package collects no telemetry; the `telemetry` option is a deprecated no-op. Do not add it.
|
|
18
18
|
|
|
19
19
|
## Install
|
|
20
20
|
|
|
@@ -125,7 +125,7 @@ Use one channel per topic (or `namespace`) so each listener only gets its own me
|
|
|
125
125
|
- Using the same `sourceName` in every tab.
|
|
126
126
|
- `cleanupDebounceMs` larger than `cleaningInterval`, which can stop expired messages from being removed.
|
|
127
127
|
- Expecting cross-origin delivery. `BroadcastChannel` is same origin only.
|
|
128
|
-
-
|
|
128
|
+
- Passing the deprecated `telemetry` option.
|
|
129
129
|
|
|
130
130
|
## More
|
|
131
131
|
|
package/TELEMETRY.md
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Telemetry Notice — react-broadcast-sync
|
|
2
|
-
|
|
3
|
-
## What is collected
|
|
4
|
-
|
|
5
|
-
**Privacy-first: telemetry is off by default.** No usage events are sent to Mixpanel unless the application explicitly passes `telemetry: true` to `useBroadcastChannel` or `BroadcastProvider`. When enabled, structural usage signals help the maintainer prioritise features and fix issues.
|
|
6
|
-
|
|
7
|
-
When telemetry is enabled, the following structural signals are sent on channel mount or method use:
|
|
8
|
-
|
|
9
|
-
| Signal | Description |
|
|
10
|
-
| ------------------- | --------------------------------------------------------------------------------------------- |
|
|
11
|
-
| `entry` | Whether `useBroadcastChannel` or `BroadcastProvider` was used |
|
|
12
|
-
| `options_used` | Names of `BroadcastOptions` keys that differ from their default values |
|
|
13
|
-
| `onmessage_shape` | Whether `onMessage` is absent, a function, or a type-keyed map |
|
|
14
|
-
| `batching_enabled` | Whether `batchingDelayMs > 0` |
|
|
15
|
-
| `browser_supported` | Whether `BroadcastChannel` is available in the browser |
|
|
16
|
-
| `method_called` | Which action methods (`postMessage`, `ping`, etc.) were called at least once per page session |
|
|
17
|
-
|
|
18
|
-
## What is never collected
|
|
19
|
-
|
|
20
|
-
- Channel names
|
|
21
|
-
- Source names (`sourceName`)
|
|
22
|
-
- Message content or message types
|
|
23
|
-
- Application user identifiers in the event payload
|
|
24
|
-
- IP addresses in the event payload (Mixpanel may process them from request metadata; see its privacy policy)
|
|
25
|
-
- Any data from the messages your application sends or receives
|
|
26
|
-
|
|
27
|
-
## Session identifier
|
|
28
|
-
|
|
29
|
-
Each page load generates a random, ephemeral session ID using `crypto.randomUUID()`. This ID:
|
|
30
|
-
|
|
31
|
-
- Is **not persisted** to cookies, `localStorage`, `sessionStorage`, or any other storage mechanism.
|
|
32
|
-
- Is **regenerated on every page load**, making it impossible to track users across sessions.
|
|
33
|
-
- Does not by itself identify a user, though the recipient may process request metadata such as IP addresses.
|
|
34
|
-
|
|
35
|
-
The session ID is not persisted by this package, but Mixpanel may process request metadata such as IP addresses. Applications enabling telemetry should assess their own privacy obligations and disclose this transfer to their users.
|
|
36
|
-
|
|
37
|
-
## Data processor
|
|
38
|
-
|
|
39
|
-
Usage statistics are processed by [Mixpanel](https://mixpanel.com). Mixpanel's privacy policy is available at [https://mixpanel.com/legal/privacy-policy/](https://mixpanel.com/legal/privacy-policy/).
|
|
40
|
-
|
|
41
|
-
## How to opt in
|
|
42
|
-
|
|
43
|
-
Telemetry is disabled by default. Enable it explicitly per hook or provider with `telemetry: true`:
|
|
44
|
-
|
|
45
|
-
```tsx
|
|
46
|
-
// Enable for a specific channel
|
|
47
|
-
useBroadcastChannel('my-channel', { telemetry: true });
|
|
48
|
-
|
|
49
|
-
// Enable via BroadcastProvider
|
|
50
|
-
<BroadcastProvider channelName="my-channel" options={{ telemetry: true }}>
|
|
51
|
-
<App />
|
|
52
|
-
</BroadcastProvider>;
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
There is no penalty or degraded functionality when leaving telemetry off. Upgrading from a version where telemetry was enabled by default? No option is needed to keep it off; use `telemetry: true` only if you want to opt in.
|
|
56
|
-
|
|
57
|
-
## Contact
|
|
58
|
-
|
|
59
|
-
Questions or concerns about this telemetry notice can be raised by [opening an issue](https://github.com/IdanShalem/react-broadcast-sync/issues) on the project repository.
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface ChannelInitProps {
|
|
2
|
-
entry: 'hook' | 'provider';
|
|
3
|
-
options_used: string[];
|
|
4
|
-
onmessage_shape: 'none' | 'function' | 'map';
|
|
5
|
-
batching_enabled: boolean;
|
|
6
|
-
browser_supported: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare function trackChannelInit(props: ChannelInitProps): void;
|
|
9
|
-
export declare function trackMethodCalled(method: string): void;
|
|
10
|
-
export declare function trackBrowserUnsupported(): void;
|
|
11
|
-
/** @internal — exposed only for unit tests, do not use in application code */
|
|
12
|
-
export declare function _resetForTesting(): void;
|
|
13
|
-
/** @internal — allows tests to inject a fake token to exercise flush logic */
|
|
14
|
-
export declare function _setTokenForTesting(t: string): void;
|