fastevent 2.2.11 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var P=Object.defineProperty;var q=(n,e,t)=>e in n?P(n,e,{enumerable:true,configurable:true,writable:true,value:t}):n[e]=t;var u=(n,e)=>P(n,"name",{value:e,configurable:true});var p=(n,e,t)=>q(n,typeof e!="symbol"?e+"":e,t);var G=Symbol.for("__FastEvent__"),H=Symbol.for("__FastEventScope__"),S=class S extends Error{constructor(e){super(e);}};u(S,"FastEventError");var m=S,A=class A extends m{};u(A,"TimeoutError");var R=A,M=class M extends m{};u(M,"UnboundError");var d=M,T=class T extends m{};u(T,"AbortError");var _=T,j=class j extends m{};u(j,"CancelError");var x=j,O=class O extends m{};u(O,"QueueOverflowError");var C=O,y={clearRetain:Symbol.for("ClearRetain")};function b(n,e,t,s){let i,r={},o={};return typeof n[0]=="object"?(Object.assign(o,n[0]),r=typeof n[1]=="boolean"?{retain:n[1]}:n[1]||{},i=n[0].meta):(o.type=n[0],o.payload=n[1],r=typeof n[2]=="boolean"?{retain:n[2]}:n[2]||{}),i=Object.assign({},e,t,r.meta,i),Object.keys(i).length===0&&(i=void 0),o.meta=i,r.executor===void 0&&(r.executor=s),[o,r]}u(b,"parseEmitArgs");function W(n){return n?typeof n=="object"&&"__FastEventScope__"in n:false}u(W,"isFastEventScope");function L(n,e,t){let s=n[0],i=W(n[1])?n[1]:void 0,r=(i?n[2]:n[1])||{};return r.meta=Object.assign({},e,r?.meta),r.context=r.context!==void 0?r.context:t,[s,i,r]}u(L,"parseScopeArgs");function g(n,e){return Object.defineProperty(n,"name",{value:e||"anonymous",configurable:true}),n}u(g,"renameFn");var v=class v{constructor(e){p(this,"__FastEventScope__",true);p(this,"_options",{});p(this,"types",{events:void 0,meta:void 0,context:void 0,message:void 0,listeners:void 0,anyListener:void 0});p(this,"prefix","");p(this,"emitter");this._options=Object.assign({},this._initOptions(e));}get context(){return this.options.context||this}get options(){return this._options}bind(e,t,s){this.emitter=e,this._options=Object.assign(this._options,{scope:t},s),t.length>0&&!t.endsWith(e.options.delimiter)&&(this.prefix=t+e.options.delimiter);}_initOptions(e){return e}_getScopeListener(e){let t=this.prefix;if(t.length===0)return e;e||(e=(this._options.onMessage||this.onMessage).bind(this));let s=this;return g(function(r,o){if(r.type.startsWith(t))return e.call(s.context,Object.assign({},r,{type:r.type.substring(t.length)}),o)},e.name)}_getScopeType(e){return e===void 0?void 0:this.prefix+e}_fixScopeType(e){return e.startsWith(this.prefix)?e.substring(this.prefix.length):e}on(){if(!this.emitter)throw new d;let e=[...arguments];return e[0]=this._getScopeType(e[0]),e[1]=this._getScopeListener(e[1]),this.emitter.on(...e)}once(){return this.on(arguments[0],arguments[1],Object.assign({},arguments[2],{count:1}))}onAny(){return this.on("**",...arguments)}off(){let e=arguments;typeof e[0]=="string"&&(e[0]=this._getScopeType(e[0])),this.emitter.off(...e);}offAll(){this.emitter.offAll(this.prefix.substring(0,this.prefix.length-1));}clear(){this.emitter.clear(this.prefix.substring(0,this.prefix.length-1));}emit(){if(arguments.length===2&&typeof arguments[0]=="string"&&arguments[1]===y.clearRetain)return this.emitter.emit(this._getScopeType(arguments[0]));let[e,t]=b(arguments,this.emitter.options.meta,this.options.meta,this.options.executor);return e.type=this._getScopeType(e.type),this.emitter.emit(e,t)}async emitAsync(){return (await Promise.allSettled(this.emit.apply(this,arguments))).map(t=>t.status==="fulfilled"?t.value:t.reason)}async waitFor(){let e=arguments[0],t=arguments[1],s=await this.emitter.waitFor(this._getScopeType(e),t);return Object.assign({},s,{type:this._fixScopeType(s.type)})}scope(){let[e,t,s]=L(arguments,this.options.meta,this.options.context),i;return t?i=t:i=new v,i.bind(this.emitter,this.prefix+e,s),i}onMessage(e,t){}};u(v,"FastEventScope");var E=v;function w(n,e){if(n.length!==e.length&&n.length>0&&e[e.length-1]!=="**")return false;let t=[...e];e.length>0&&e[e.length-1]==="**"&&t.splice(e.length-1,1,...Array.from({length:n.length-e.length+1}).fill("*"));for(let s=0;s<n.length;s++)if(t[s]!=="*"&&t[s]!==n[s])return false;return true}u(w,"isPathMatched");function D(n,e){let t=[];for(;;){let s=n.findIndex(i=>e(i));if(s===-1){t.push(s);break}n.splice(s,1);}return t}u(D,"removeItem");function c(n){return n&&typeof n=="function"}u(c,"isFunction");var N=Symbol.for("__expandable__");function ge(n){return n[N]=true,n}u(ge,"expandable");function V(n){return n&&n[N]}u(V,"isExpandable");function I(n){for(let e=0;e<n.length;e++){let t=n[e];Array.isArray(t)&&V(t)&&(n.splice(e,1,...t),e+=t.length-1);}return n}u(I,"expandEmitResults");function B(n){return n&&typeof n=="object"&&"off"in n&&"listener"in n}u(B,"isSubsctiber");function X(n,e){return n.catch(t=>(e&&e(t),Promise.resolve(t)))}u(X,"tryReturnError");var F=class F{constructor(e){p(this,"__FastEvent__",true);p(this,"listeners",{__listeners:[]});p(this,"_options");p(this,"_delimiter","/");p(this,"_context");p(this,"retainedMessages",new Map);p(this,"listenerCount",0);p(this,"types",{events:void 0,meta:void 0,context:void 0,message:void 0,listeners:void 0,anyListener:void 0});this._options=Object.assign({debug:false,id:Math.random().toString(36).substring(2),delimiter:"/",context:null,ignoreErrors:true,meta:void 0,expandEmitResults:true},this._initOptions(e)),this._delimiter=this._options.delimiter,this._context=this._options.context,this._enableDevTools();}get options(){return this._options}get context(){return this.options.context||this}get meta(){return this.options.meta}get id(){return this._options.id}_initOptions(e){return e}_addListener(e,t,s){let{count:i,prepend:r}=s,o=0;return [this._forEachNodes(e,f=>{let h=[t,i,0,s.tag,s.flags];r?(f.__listeners.splice(0,0,h),o=0):(f.__listeners.push(h),o=f.__listeners.length-1),this.listenerCount++;}),o]}_enableDevTools(){this.options.debug&&globalThis.__FLEXEVENT_DEVTOOLS__&&globalThis.__FLEXEVENT_DEVTOOLS__.add(this);}_forEachNodes(e,t){if(e.length===0)return;let s=this.listeners;for(let i=0;i<e.length;i++){let r=e[i];if(r in s||(s[r]={__listeners:[]}),i===e.length-1){let o=s[r];return t(o,s),o}else s=s[r];}}_removeListener(e,t,s){s&&D(e.__listeners,i=>{i=Array.isArray(i)?i[0]:i;let r=i===s;return r&&(this.listenerCount--,c(this._options.onRemoveListener)&&this._options.onRemoveListener(t.join(this._delimiter),s)),r});}_pipeListener(e,t){return t.forEach(s=>{e=g(s(e),e.name);}),e}on(){let e=arguments[0],t=c(arguments[1])?arguments[1]:(this._options.onMessage||this.onMessage).bind(this),s=Object.assign({count:0,flags:0,prepend:false},c(arguments[1])?arguments[2]:arguments[1]);if(e.length===0)throw new Error("event type cannot be empty");if(c(this._options.onAddListener)){let f=this._options.onAddListener(e,t,s);if(f===false)throw new x;if(B(f))return f}let i=e.split(this._delimiter);if(s.pipes&&s.pipes.length>0&&(t=this._pipeListener(t,s.pipes)),c(s.filter)||c(s.off)){let f=t;t=g(function(h,l){if(c(s.off)&&s.off.call(this,h,l)){a();return}if(c(s.filter)){if(s.filter.call(this,h,l))return f.call(this,h,l)}else return f.call(this,h,l)},t.name);}let[r,o]=this._addListener(i,t,s),a=u(()=>r&&this._removeListener(r,i,t),"off");return this._emitRetainMessage(e,r,o),{off:a,listener:t}}once(){return c(arguments[1])?this.on(arguments[0],arguments[1],Object.assign({},arguments[2],{count:1})):this.on(arguments[0],Object.assign({},arguments[2],{count:1}))}onAny(){return this.on("**",arguments[0],arguments[1])}onMessage(e,t){}off(){let e=arguments,t=c(e[0])?void 0:e[0],s=c(e[0])?e[0]:e[1],i=t?t.split(this._delimiter):[],r=t?t.includes("*"):false;if(t&&!r)this._traverseToPath(this.listeners,i,o=>{s?this._removeListener(o,i,s):t&&(o.__listeners=[]);});else {let o=r?[]:i;this._traverseListeners(this.listeners,o,(a,f)=>{(s!==void 0||r&&w(a,i))&&(s?this._removeListener(f,i,s):f.__listeners=[]);});}}offAll(e){if(e){let t=e.split(this._delimiter),s=0;this._traverseListeners(this.listeners,t,(i,r)=>{s+=r.__listeners.length,r.__listeners=[];}),this.listenerCount-=s,this._removeRetainedEvents(e);}else {let t=0;this._traverseListeners(this.listeners,[],(s,i)=>{t+=i.__listeners.length;}),this.listenerCount-=t,this.retainedMessages.clear(),this.listeners={__listeners:[]};}c(this._options.onClearListeners)&&this._options.onClearListeners.call(this);}_removeRetainedEvents(e){e||this.retainedMessages.clear(),e?.endsWith(this._delimiter)&&(e+=this._delimiter),this.retainedMessages.delete(e);for(let t of this.retainedMessages.keys())t.startsWith(e)&&this.retainedMessages.delete(t);}clear(e){this.offAll(e),this._removeRetainedEvents(e);}_emitRetainMessage(e,t,s){let i=[];if(e.includes("*")){let r=e.split(this._delimiter);this.retainedMessages.forEach((o,a)=>{let f=a.split(this._delimiter);w(f,r)&&i.push(o);});}else this.retainedMessages.has(e)&&i.push(this.retainedMessages.get(e));t&&i.forEach(r=>{this._executeListeners([t],r,{},o=>o[0]===t.__listeners[s][0]);});}_traverseToPath(e,t,s,i=0,r){if(i>=t.length){s(e);return}let o=t[i];if(r===true){this._traverseToPath(e,t,s,i+1,true);return}"*"in e&&this._traverseToPath(e["*"],t,s,i+1),"**"in e&&this._traverseToPath(e["**"],t,s,i+1,true),o in e&&this._traverseToPath(e[o],t,s,i+1);}_traverseListeners(e,t,s){let i=e;t&&t.length>0&&this._traverseToPath(e,t,o=>{i=o;});let r=u((o,a,f)=>{a(f,o);for(let[h,l]of Object.entries(o))h.startsWith("__")||l&&r(l,a,[...f,h]);},"traverseNodes");r(i,s,[]);}_onListenerError(e,t,s,i){if(i instanceof Error&&(i._emitter=`${e.name||"anonymous"}:${t.type}`),c(this._options.onListenerError))try{this._options.onListenerError.call(this,i,e,t,s);}catch{}if(this._options.ignoreErrors)return i;throw i}_executeListener(e,t,s,i=false){try{if(s&&s.abortSignal&&s.abortSignal.aborted)return this._onListenerError(e,t,s,new _(e.name));let r=e.call(this.context,t,s);return i&&r&&r instanceof Promise&&(r=X(r,o=>this._onListenerError(e,t,s,o))),r}catch(r){return this._onListenerError(e,t,s,r)}}_getListenerExecutor(e){if(!e)return;let t=e.executor||this._options.executor;if(c(t))return t}_executeListeners(e,t,s,i){if(!e||e.length===0)return [];let r=e.reduce((a,f)=>a.concat(f.__listeners.filter(h=>c(i)?i(h,f):true).map((h,l)=>[h,l,f.__listeners])),[]);this._decListenerExecCount(r);let o=this._getListenerExecutor(s);if(o){let a=o(r.map(f=>f[0]),t,s,this._executeListener.bind(this));return Array.isArray(a)?a:[a]}else return r.map(a=>this._executeListener(a[0][0],t,s,true))}_decListenerExecCount(e){for(let t=e.length-1;t>=0;t--){let s=e[t][0];s[2]++,s[1]>0&&s[1]<=s[2]&&e[t][2].splice(t,1);}}getListeners(e){let t=[],s=e.split(this._delimiter);return this._traverseToPath(this.listeners,s,i=>{t.push(i);}),t[0].__listeners}emit(){if(arguments.length===2&&typeof arguments[0]=="string"&&arguments[1]===y.clearRetain)return this.retainedMessages.delete(arguments[0]),[];let[e,t]=b(arguments,this.options.meta);c(t.parseArgs)&&t.parseArgs(e,t);let s=e.type.split(this._delimiter);t.retain&&this.retainedMessages.set(e.type,e);let i=[],r=[];if(this._traverseToPath(this.listeners,s,o=>{r.push(o);}),c(this._options.onBeforeExecuteListener)){let o=this._options.onBeforeExecuteListener.call(this,e,t);if(Array.isArray(o))return o;if(o===false)throw new _(e.type)}return i.push(...this._executeListeners(r,e,t)),c(this._options.onAfterExecuteListener)&&this._options.onAfterExecuteListener.call(this,e,i,r),this._options.expandEmitResults&&I(i),i}async emitAsync(){return (await Promise.allSettled(this.emit.apply(this,arguments))).map(t=>t.status==="fulfilled"?t.value:t.reason)}waitFor(){let e=arguments[0],t=arguments[1];return new Promise((s,i)=>{let r,o,a=u(f=>{clearTimeout(r),o&&o.off(),s(f);},"listener");t&&t>0&&(r=setTimeout(()=>{o&&o.off(),i(new Error("wait for event<"+e+"> is timeout"));},t)),o=this.on(e,a);})}scope(){let[e,t,s]=L(arguments,this.options.meta,this.options.context),i;return t?i=t:i=new E,i.bind(this,e,s),i}};u(F,"FastEvent");var $=F;function Xe(n){return n?typeof n=="object"&&"type"in n:false}u(Xe,"isFastEventMessage");function ze(n){return n&&typeof n=="string"}u(ze,"isString");function Je(n){return typeof n=="function"&&(n.toString().startsWith("class ")||n.prototype?.constructor===n)}u(Je,"isClass");function Ze(n){return n?typeof n=="object"&&"__FastEvent__"in n:false}u(Ze,"isFastEvent");export{_ as AbortError,x as CancelError,$ as FastEvent,y as FastEventDirectives,m as FastEventError,E as FastEventScope,C as QueueOverflowError,R as TimeoutError,d as UnboundError,H as __FastEventScope__,G as __FastEvent__,N as __expandable__,ge as expandable,Je as isClass,V as isExpandable,Ze as isFastEvent,Xe as isFastEventMessage,W as isFastEventScope,c as isFunction,w as isPathMatched,ze as isString,B as isSubsctiber};//# sourceMappingURL=index.mjs.map
1
+ var R=Object.defineProperty;var z=(i,e,t)=>e in i?R(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t;var f=(i,e)=>R(i,"name",{value:e,configurable:true});var h=(i,e,t)=>z(i,typeof e!="symbol"?e+"":e,t);var H=Symbol.for("__FastEvent__"),J=Symbol.for("__FastEventScope__"),S=class S extends Error{constructor(e){super(e);}};f(S,"FastEventError");var m=S,A=class A extends m{};f(A,"TimeoutError");var C=A,M=class M extends m{};f(M,"UnboundError");var g=M,j=class j extends m{};f(j,"AbortError");var _=j,w=class w extends m{};f(w,"CancelError");var x=w,F=class F extends m{};f(F,"QueueOverflowError");var W=F,y={clearRetain:Symbol.for("ClearRetain")};var b=function(i){return i[i.Transformed=1]="Transformed",i}({});function L(i,e,t,s){let n,r={},o={};return typeof i[0]=="object"?(Object.assign(o,i[0]),r=typeof i[1]=="boolean"?{retain:i[1]}:i[1]||{},n=i[0].meta):(o.type=i[0],o.payload=i[1],r=typeof i[2]=="boolean"?{retain:i[2]}:i[2]||{}),n=Object.assign({},e,t,r.meta,n),Object.keys(n).length===0&&(n=void 0),o.meta=n,r.executor===void 0&&(r.executor=s),[o,r]}f(L,"parseEmitArgs");function D(i){return i?typeof i=="object"&&"__FastEventScope__"in i:false}f(D,"isFastEventScope");function E(i,e,t){let s=i[0],n=D(i[1])?i[1]:void 0,r=(n?i[2]:i[1])||{};return r.meta=Object.assign({},e,r?.meta),r.context=r.context!==void 0?r.context:t,[s,n,r]}f(E,"parseScopeArgs");function d(i,e){return Object.defineProperty(i,"name",{value:e||"anonymous",configurable:true}),i}f(d,"renameFn");var T=class T{constructor(e){h(this,"__FastEventScope__",true);h(this,"_options",{});h(this,"types",{events:void 0,meta:void 0,context:void 0,message:void 0,listeners:void 0,anyListener:void 0});h(this,"prefix","");h(this,"emitter");this._options=Object.assign({},this._initOptions(e));}get context(){return this.options.context||this}get options(){return this._options}bind(e,t,s){this.emitter=e,this._options=Object.assign(this._options,{scope:t},s),t.length>0&&!t.endsWith(e.options.delimiter)&&(this.prefix=t+e.options.delimiter);}_initOptions(e){return e}_getScopeListener(e){let t=this.prefix;if(t.length===0)return e;e||(e=(this._options.onMessage||this.onMessage).bind(this));let s=this;return d(function(r,o){let a=o.rawEventType||r.type;if(a.startsWith(t)){let p=((o.flags||0)&b.Transformed)>0?r:Object.assign({},r,{type:a.substring(t.length)});return e.call(s.context,p,o)}},e.name)}_getScopeType(e){return e===void 0?void 0:this.prefix+e}_fixScopeType(e){return e.startsWith(this.prefix)?e.substring(this.prefix.length):e}on(){if(!this.emitter)throw new g;let e=[...arguments];return e[0]=this._getScopeType(e[0]),e[1]=this._getScopeListener(e[1]),this.emitter.on(...e)}once(){return this.on(arguments[0],arguments[1],Object.assign({},arguments[2],{count:1}))}onAny(){return this.on("**",...arguments)}off(){let e=arguments;typeof e[0]=="string"&&(e[0]=this._getScopeType(e[0])),this.emitter.off(...e);}offAll(){this.emitter.offAll(this.prefix.substring(0,this.prefix.length-1));}clear(){this.emitter.clear(this.prefix.substring(0,this.prefix.length-1));}emit(){if(arguments.length===2&&typeof arguments[0]=="string"&&arguments[1]===y.clearRetain)return this.emitter.emit(this._getScopeType(arguments[0]));let[e,t]=L(arguments,this.emitter.options.meta,this.options.meta,this.options.executor);return e.type=this._getScopeType(e.type),this.emitter.emit(e,t)}async emitAsync(){return (await Promise.allSettled(this.emit.apply(this,arguments))).map(t=>t.status==="fulfilled"?t.value:t.reason)}async waitFor(){let e=arguments[0],t=arguments[1],s=await this.emitter.waitFor(this._getScopeType(e),t);return Object.assign({},s,{type:this._fixScopeType(s.type)})}scope(){let[e,t,s]=E(arguments,this.options.meta,this.options.context),n;return t?n=t:n=new T,n.bind(this.emitter,this.prefix+e,s),n}onMessage(e,t){}};f(T,"FastEventScope");var v=T;function O(i,e){if(i.length!==e.length&&i.length>0&&e[e.length-1]!=="**")return false;let t=[...e];e.length>0&&e[e.length-1]==="**"&&t.splice(e.length-1,1,...Array.from({length:i.length-e.length+1}).fill("*"));for(let s=0;s<i.length;s++)if(t[s]!=="*"&&t[s]!==i[s])return false;return true}f(O,"isPathMatched");function N(i,e){let t=[];for(;;){let s=i.findIndex(n=>e(n));if(s===-1){t.push(s);break}i.splice(s,1);}return t}f(N,"removeItem");function c(i){return i&&typeof i=="function"}f(c,"isFunction");var V=Symbol.for("__expandable__");function Ee(i){return i[V]=true,i}f(Ee,"expandable");function I(i){return i&&i[V]}f(I,"isExpandable");function B(i){for(let e=0;e<i.length;e++){let t=i[e];Array.isArray(t)&&I(t)&&(i.splice(e,1,...t),e+=t.length-1);}return i}f(B,"expandEmitResults");function X(i){return i&&typeof i=="object"&&"off"in i&&"listener"in i}f(X,"isSubsctiber");function $(i,e){return i.catch(t=>(e&&e(t),Promise.resolve(t)))}f($,"tryReturnError");var P=class P{constructor(e){h(this,"__FastEvent__",true);h(this,"listeners",{__listeners:[]});h(this,"_options");h(this,"_delimiter","/");h(this,"_context");h(this,"retainedMessages",new Map);h(this,"listenerCount",0);h(this,"types",{events:void 0,meta:void 0,context:void 0,message:void 0,listeners:void 0,anyListener:void 0});this._options=Object.assign({debug:false,id:Math.random().toString(36).substring(2),delimiter:"/",context:null,ignoreErrors:true,meta:void 0,expandEmitResults:true},this._initOptions(e)),this._delimiter=this._options.delimiter,this._context=this._options.context,this._enableDevTools();}get options(){return this._options}get context(){return this.options.context||this}get meta(){return this.options.meta}get id(){return this._options.id}_initOptions(e){return e}_addListener(e,t,s){let{count:n,prepend:r}=s,o=0;return [this._forEachNodes(e,u=>{let p=[t,n,0,s.tag,s.flags];r?(u.__listeners.splice(0,0,p),o=0):(u.__listeners.push(p),o=u.__listeners.length-1),this.listenerCount++;}),o]}_enableDevTools(){this.options.debug&&globalThis.__FLEXEVENT_DEVTOOLS__&&globalThis.__FLEXEVENT_DEVTOOLS__.add(this);}_forEachNodes(e,t){if(e.length===0)return;let s=this.listeners;for(let n=0;n<e.length;n++){let r=e[n];if(r in s||(s[r]={__listeners:[]}),n===e.length-1){let o=s[r];return t(o,s),o}else s=s[r];}}_removeListener(e,t,s){s&&N(e.__listeners,n=>{n=Array.isArray(n)?n[0]:n;let r=n===s;return r&&(this.listenerCount--,c(this._options.onRemoveListener)&&this._options.onRemoveListener(t.join(this._delimiter),s)),r});}_pipeListener(e,t){return t.forEach(s=>{e=d(s(e),e.name);}),e}on(){let e=arguments[0],t=c(arguments[1])?arguments[1]:(this._options.onMessage||this.onMessage).bind(this),s=Object.assign({count:0,flags:0,prepend:false},c(arguments[1])?arguments[2]:arguments[1]);if(e.length===0)throw new Error("event type cannot be empty");if(c(this._options.onAddListener)){let u=this._options.onAddListener(e,t,s);if(u===false)throw new x;if(X(u))return u}let n=e.split(this._delimiter);if(s.pipes&&s.pipes.length>0&&(t=this._pipeListener(t,s.pipes)),c(s.filter)||c(s.off)){let u=t;t=d(function(p,l){if(c(s.off)&&s.off.call(this,p,l)){a();return}if(c(s.filter)){if(s.filter.call(this,p,l))return u.call(this,p,l)}else return u.call(this,p,l)},t.name);}let[r,o]=this._addListener(n,t,s),a=f(()=>r&&this._removeListener(r,n,t),"off");return this._emitRetainMessage(e,r,o),{off:a,listener:t}}once(){return c(arguments[1])?this.on(arguments[0],arguments[1],Object.assign({},arguments[2],{count:1})):this.on(arguments[0],Object.assign({},arguments[2],{count:1}))}onAny(){return this.on("**",arguments[0],arguments[1])}onMessage(e,t){}off(){let e=arguments,t=c(e[0])?void 0:e[0],s=c(e[0])?e[0]:e[1],n=t?t.split(this._delimiter):[],r=t?t.includes("*"):false;if(t&&!r)this._traverseToPath(this.listeners,n,o=>{s?this._removeListener(o,n,s):t&&(o.__listeners=[]);});else {let o=r?[]:n;this._traverseListeners(this.listeners,o,(a,u)=>{(s!==void 0||r&&O(a,n))&&(s?this._removeListener(u,n,s):u.__listeners=[]);});}}offAll(e){if(e){let t=e.split(this._delimiter),s=0;this._traverseListeners(this.listeners,t,(n,r)=>{s+=r.__listeners.length,r.__listeners=[];}),this.listenerCount-=s,this._removeRetainedEvents(e);}else {let t=0;this._traverseListeners(this.listeners,[],(s,n)=>{t+=n.__listeners.length;}),this.listenerCount-=t,this.retainedMessages.clear(),this.listeners={__listeners:[]};}c(this._options.onClearListeners)&&this._options.onClearListeners.call(this);}_removeRetainedEvents(e){e||this.retainedMessages.clear(),e?.endsWith(this._delimiter)&&(e+=this._delimiter),this.retainedMessages.delete(e);for(let t of this.retainedMessages.keys())t.startsWith(e)&&this.retainedMessages.delete(t);}clear(e){this.offAll(e),this._removeRetainedEvents(e);}_emitRetainMessage(e,t,s){let n=[];if(e.includes("*")){let r=e.split(this._delimiter);this.retainedMessages.forEach((o,a)=>{let u=a.split(this._delimiter);O(u,r)&&n.push(o);});}else this.retainedMessages.has(e)&&n.push(this.retainedMessages.get(e));t&&n.forEach(r=>{this._executeListeners([t],r,{},o=>o[0]===t.__listeners[s][0]);});}_traverseToPath(e,t,s,n=0,r){if(n>=t.length){s(e);return}let o=t[n];if(r===true){this._traverseToPath(e,t,s,n+1,true);return}"*"in e&&this._traverseToPath(e["*"],t,s,n+1),"**"in e&&this._traverseToPath(e["**"],t,s,n+1,true),o in e&&this._traverseToPath(e[o],t,s,n+1);}_traverseListeners(e,t,s){let n=e;t&&t.length>0&&this._traverseToPath(e,t,o=>{n=o;});let r=f((o,a,u)=>{a(u,o);for(let[p,l]of Object.entries(o))p.startsWith("__")||l&&r(l,a,[...u,p]);},"traverseNodes");r(n,s,[]);}_onListenerError(e,t,s,n){if(n instanceof Error&&(n._emitter=`${e.name||"anonymous"}:${t.type}`),c(this._options.onListenerError))try{this._options.onListenerError.call(this,n,e,t,s);}catch{}if(this._options.ignoreErrors)return n;throw n}_setListenerFlags(e,t){return !e||e===0?t:e|t}_executeListener(e,t,s,n=false){try{if(s&&s.abortSignal&&s.abortSignal.aborted)return this._onListenerError(e,t,s,new _(e.name));c(this._options.transform)&&(s||(s={}),s.rawEventType=t.type,t=this._options.transform.call(this,t),s.flags=this._setListenerFlags(s.flags,b.Transformed));let r=e.call(this.context,t,s);return n&&r&&r instanceof Promise&&(r=$(r,o=>this._onListenerError(e,t,s,o))),r}catch(r){return this._onListenerError(e,t,s,r)}}_getListenerExecutor(e){if(!e)return;let t=e.executor||this._options.executor;if(c(t))return t}_executeListeners(e,t,s,n){if(!e||e.length===0)return [];let r=e.reduce((a,u)=>a.concat(u.__listeners.filter(p=>c(n)?n(p,u):true).map((p,l)=>[p,l,u.__listeners])),[]);this._decListenerExecCount(r);let o=this._getListenerExecutor(s);if(o){let a=o(r.map(u=>u[0]),t,s,this._executeListener.bind(this));return Array.isArray(a)?a:[a]}else return r.map(a=>this._executeListener(a[0][0],t,s,true))}_decListenerExecCount(e){for(let t=e.length-1;t>=0;t--){let s=e[t][0];s[2]++,s[1]>0&&s[1]<=s[2]&&e[t][2].splice(t,1);}}getListeners(e){let t=[],s=e.split(this._delimiter);return this._traverseToPath(this.listeners,s,n=>{t.push(n);}),t[0].__listeners}emit(){if(arguments.length===2&&typeof arguments[0]=="string"&&arguments[1]===y.clearRetain)return this.retainedMessages.delete(arguments[0]),[];let[e,t]=L(arguments,this.options.meta);c(t.parseArgs)&&t.parseArgs(e,t);let s=e.type.split(this._delimiter);t.retain&&this.retainedMessages.set(e.type,e);let n=[],r=[];if(this._traverseToPath(this.listeners,s,o=>{r.push(o);}),c(this._options.onBeforeExecuteListener)){let o=this._options.onBeforeExecuteListener.call(this,e,t);if(Array.isArray(o))return o;if(o===false)throw new _(e.type)}return n.push(...this._executeListeners(r,e,t)),c(this._options.onAfterExecuteListener)&&this._options.onAfterExecuteListener.call(this,e,n,r),this._options.expandEmitResults&&B(n),n}async emitAsync(){return (await Promise.allSettled(this.emit.apply(this,arguments))).map(t=>t.status==="fulfilled"?t.value:t.reason)}waitFor(){let e=arguments[0],t=arguments[1];return new Promise((s,n)=>{let r,o,a=f(u=>{clearTimeout(r),o&&o.off(),s(u);},"listener");t&&t>0&&(r=setTimeout(()=>{o&&o.off(),n(new Error("wait for event<"+e+"> is timeout"));},t)),o=this.on(e,a);})}scope(){let[e,t,s]=E(arguments,this.options.meta,this.options.context),n;return t?n=t:n=new v,n.bind(this,e,s),n}};f(P,"FastEvent");var q=P;function He(i){return i?typeof i=="object"&&"type"in i:false}f(He,"isFastEventMessage");function Ye(i){return i&&typeof i=="string"}f(Ye,"isString");function Ue(i){return typeof i=="function"&&(i.toString().startsWith("class ")||i.prototype?.constructor===i)}f(Ue,"isClass");function tt(i){return i?typeof i=="object"&&"__FastEvent__"in i:false}f(tt,"isFastEvent");export{_ as AbortError,x as CancelError,q as FastEvent,y as FastEventDirectives,m as FastEventError,b as FastEventListenerFlags,v as FastEventScope,W as QueueOverflowError,C as TimeoutError,g as UnboundError,J as __FastEventScope__,H as __FastEvent__,V as __expandable__,Ee as expandable,Ue as isClass,I as isExpandable,tt as isFastEvent,He as isFastEventMessage,D as isFastEventScope,c as isFunction,O as isPathMatched,Ye as isString,X as isSubsctiber};//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map