@asaidimu/utils-events 1.0.1 → 1.0.2
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/index.d.mts +5 -9
- package/index.d.ts +5 -9
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +1 -1
package/index.d.mts
CHANGED
|
@@ -126,18 +126,14 @@ interface EventError extends Error {
|
|
|
126
126
|
payload?: unknown;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
errorHandler: (error: EventError) => void;
|
|
134
|
-
crossTab: boolean;
|
|
135
|
-
channelName: string;
|
|
136
|
-
}) => EventBus<TEventMap>;
|
|
129
|
+
/**
|
|
130
|
+
* Creates a typed event bus.
|
|
131
|
+
*/
|
|
132
|
+
declare function createEventBus<TEventMap extends Record<string, any>>(options?: EventBusOptions): EventBus<TEventMap>;
|
|
137
133
|
|
|
138
134
|
declare class Events<TEventMap extends Record<string, any>> implements EventBus<TEventMap> {
|
|
139
135
|
private bus;
|
|
140
|
-
constructor(options?:
|
|
136
|
+
constructor(options?: EventBusOptions);
|
|
141
137
|
/**
|
|
142
138
|
* Subscribes to a specific event by name.
|
|
143
139
|
* @param eventName - The name of the event to subscribe to.
|
package/index.d.ts
CHANGED
|
@@ -126,18 +126,14 @@ interface EventError extends Error {
|
|
|
126
126
|
payload?: unknown;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
errorHandler: (error: EventError) => void;
|
|
134
|
-
crossTab: boolean;
|
|
135
|
-
channelName: string;
|
|
136
|
-
}) => EventBus<TEventMap>;
|
|
129
|
+
/**
|
|
130
|
+
* Creates a typed event bus.
|
|
131
|
+
*/
|
|
132
|
+
declare function createEventBus<TEventMap extends Record<string, any>>(options?: EventBusOptions): EventBus<TEventMap>;
|
|
137
133
|
|
|
138
134
|
declare class Events<TEventMap extends Record<string, any>> implements EventBus<TEventMap> {
|
|
139
135
|
private bus;
|
|
140
|
-
constructor(options?:
|
|
136
|
+
constructor(options?: EventBusOptions);
|
|
141
137
|
/**
|
|
142
138
|
* Subscribes to a specific event by name.
|
|
143
139
|
* @param eventName - The name of the event to subscribe to.
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=(e={
|
|
1
|
+
"use strict";var e=class{_delay;_leading;_timer;_pendingFn;_pendingResolvers=[];_leadingFired=!1;constructor(e){this._delay=e?.delay??300,this._leading=e?.leading??!1}do(e){return new Promise((t=>{this._enqueue(e,t)}))}fire(e){this._enqueue(e,void 0)}_enqueue(e,t){if(this._pendingFn=e,t&&this._pendingResolvers.push(t),this._leading&&!this._leadingFired)return this._leadingFired=!0,this._fire(),clearTimeout(this._timer),void(this._timer=setTimeout((()=>{this._leadingFired=!1,void 0!==this._pendingFn&&this._fire()}),this._delay));clearTimeout(this._timer),this._timer=setTimeout((()=>{this._leadingFired=!1,this._fire()}),this._delay)}cancel(){clearTimeout(this._timer),this._timer=void 0,this._pendingFn=void 0,this._leadingFired=!1;const e=this._pendingResolvers.splice(0);for(const t of e)t({status:"cancelled"})}async flush(){return this._pendingFn?(clearTimeout(this._timer),this._timer=void 0,this._leadingFired=!1,this._fire()):null}pending(){return void 0!==this._pendingFn}async _fire(){const e=this._pendingFn,t=this._pendingResolvers.splice(0);let n;this._pendingFn=void 0;try{n={status:"ok",value:await e()}}catch(e){n={status:"error",error:e}}for(const e of t)e(n);return n}};function t(t){const n=t??{},{deferred:s,batchSize:r,batchDelay:i,errorHandler:a,broadcast:o,channel:c}={deferred:null!=n.batch?.size,batchSize:n.batch?.size,batchDelay:n.batch?.delay||16,errorHandler:n.errorHandler||(e=>console.error("EventBus Error:",e)),broadcast:null!=n.broadcast?.channel&&n.broadcast.channel.length>0,channel:null!=n.broadcast?.channel&&n.broadcast.channel.length>0?n.broadcast?.channel:"event-bus-channel"},l=new Map;let d=[],h=0,u=0;const _=new Map,g=()=>{if(!o)return null;if("undefined"==typeof BroadcastChannel)return console.warn("EventBus: BroadcastChannel is not supported in this environment. Cross-tab notifications are disabled."),null;const e=new BroadcastChannel(c);return e.onmessage=e=>{const{name:t,payload:n}=e.data;f(t,n)},e};let m=g();const p=(e,t)=>{h++,u+=t,_.set(e,(_.get(e)??0)+1)},f=(e,t)=>{const n=l.get(e);if(n&&0!==n.size)for(const s of Array.from(n))try{s(t)}catch(n){const s=n instanceof Error?n:Object.assign(new Error(String(n)),{cause:n}),r=Object.assign(s,{eventName:e,payload:t});a(r)}},b=()=>{const e=d;d=[];for(const{name:t,payload:n}of e){const e=performance.now();f(t,n),p(t,performance.now()-e)}},v=new e({delay:i});return{subscribe:(e,t)=>{l.has(e)||l.set(e,new Set);const n=l.get(e);return n.add(t),()=>{n.delete(t),0===n.size&&l.delete(e)}},once:(e,t)=>{let n;const s=e=>{n(),t(e)};return n=(()=>{l.has(e)||l.set(e,new Set);const t=l.get(e);return t.add(s),()=>{t.delete(s),0===t.size&&l.delete(e)}})(),n},emit:({name:e,payload:t})=>{if(s)return d.push({name:e,payload:t}),d.length>=r?(v.cancel(),void b()):(v.fire((()=>b())),void m?.postMessage({name:e,payload:t}));const n=performance.now();f(e,t),p(e,performance.now()-n),m?.postMessage({name:e,payload:t})},metrics:()=>({totalEvents:h,activeSubscriptions:Array.from(l.values()).reduce(((e,t)=>e+t.size),0),eventCounts:_,averageEmitDuration:h>0?u/h:0}),clear:()=>{l.clear(),d=[],v.cancel(),h=0,u=0,_.clear(),m?.close(),m=g()}}}exports.Events=class{bus;constructor(e){this.bus=t(e)}subscribe(e,t){return this.bus.subscribe(e,t)}once(e,t){return this.bus.once(e,t)}emit(e){return this.bus.emit(e)}metrics(){return this.bus.metrics()}clear(){return this.bus.clear()}},exports.createEventBus=t;
|
package/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=(e={
|
|
1
|
+
var e=class{_delay;_leading;_timer;_pendingFn;_pendingResolvers=[];_leadingFired=!1;constructor(e){this._delay=e?.delay??300,this._leading=e?.leading??!1}do(e){return new Promise((t=>{this._enqueue(e,t)}))}fire(e){this._enqueue(e,void 0)}_enqueue(e,t){if(this._pendingFn=e,t&&this._pendingResolvers.push(t),this._leading&&!this._leadingFired)return this._leadingFired=!0,this._fire(),clearTimeout(this._timer),void(this._timer=setTimeout((()=>{this._leadingFired=!1,void 0!==this._pendingFn&&this._fire()}),this._delay));clearTimeout(this._timer),this._timer=setTimeout((()=>{this._leadingFired=!1,this._fire()}),this._delay)}cancel(){clearTimeout(this._timer),this._timer=void 0,this._pendingFn=void 0,this._leadingFired=!1;const e=this._pendingResolvers.splice(0);for(const t of e)t({status:"cancelled"})}async flush(){return this._pendingFn?(clearTimeout(this._timer),this._timer=void 0,this._leadingFired=!1,this._fire()):null}pending(){return void 0!==this._pendingFn}async _fire(){const e=this._pendingFn,t=this._pendingResolvers.splice(0);let n;this._pendingFn=void 0;try{n={status:"ok",value:await e()}}catch(e){n={status:"error",error:e}}for(const e of t)e(n);return n}};function t(t){const n=t??{},{deferred:r,batchSize:s,batchDelay:i,errorHandler:a,broadcast:o,channel:c}={deferred:null!=n.batch?.size,batchSize:n.batch?.size,batchDelay:n.batch?.delay||16,errorHandler:n.errorHandler||(e=>console.error("EventBus Error:",e)),broadcast:null!=n.broadcast?.channel&&n.broadcast.channel.length>0,channel:null!=n.broadcast?.channel&&n.broadcast.channel.length>0?n.broadcast?.channel:"event-bus-channel"},l=new Map;let d=[],h=0,u=0;const _=new Map,g=()=>{if(!o)return null;if("undefined"==typeof BroadcastChannel)return console.warn("EventBus: BroadcastChannel is not supported in this environment. Cross-tab notifications are disabled."),null;const e=new BroadcastChannel(c);return e.onmessage=e=>{const{name:t,payload:n}=e.data;f(t,n)},e};let m=g();const p=(e,t)=>{h++,u+=t,_.set(e,(_.get(e)??0)+1)},f=(e,t)=>{const n=l.get(e);if(n&&0!==n.size)for(const r of Array.from(n))try{r(t)}catch(n){const r=n instanceof Error?n:Object.assign(new Error(String(n)),{cause:n}),s=Object.assign(r,{eventName:e,payload:t});a(s)}},b=()=>{const e=d;d=[];for(const{name:t,payload:n}of e){const e=performance.now();f(t,n),p(t,performance.now()-e)}},v=new e({delay:i});return{subscribe:(e,t)=>{l.has(e)||l.set(e,new Set);const n=l.get(e);return n.add(t),()=>{n.delete(t),0===n.size&&l.delete(e)}},once:(e,t)=>{let n;const r=e=>{n(),t(e)};return n=(()=>{l.has(e)||l.set(e,new Set);const t=l.get(e);return t.add(r),()=>{t.delete(r),0===t.size&&l.delete(e)}})(),n},emit:({name:e,payload:t})=>{if(r)return d.push({name:e,payload:t}),d.length>=s?(v.cancel(),void b()):(v.fire((()=>b())),void m?.postMessage({name:e,payload:t}));const n=performance.now();f(e,t),p(e,performance.now()-n),m?.postMessage({name:e,payload:t})},metrics:()=>({totalEvents:h,activeSubscriptions:Array.from(l.values()).reduce(((e,t)=>e+t.size),0),eventCounts:_,averageEmitDuration:h>0?u/h:0}),clear:()=>{l.clear(),d=[],v.cancel(),h=0,u=0,_.clear(),m?.close(),m=g()}}}var n=class{bus;constructor(e){this.bus=t(e)}subscribe(e,t){return this.bus.subscribe(e,t)}once(e,t){return this.bus.once(e,t)}emit(e){return this.bus.emit(e)}metrics(){return this.bus.metrics()}clear(){return this.bus.clear()}};export{n as Events,t as createEventBus};
|