Socket
Socket
Sign inDemoInstall

@lskjs/module

Package Overview
Dependencies
Maintainers
11
Versions
322
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@lskjs/module - npm Package Compare versions

Comparing version 3.9.0 to 3.11.0

lib/asyncItems/AsyncItemModule.d.mts

2

lib/asyncItems/AsyncItemModule.js

@@ -1,2 +0,2 @@

var w=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var z=(i,t,e)=>t in i?w(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>w(i,"name",{value:t,configurable:!0});var Q=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},Z=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of J(t))!q.call(i,a)&&a!==e&&w(i,a,{get:()=>t[a],enumerable:!(r=H(t,a))||r.enumerable});return i};var tt=i=>Z(w({},"__esModule",{value:!0}),i);var C=(i,t,e)=>(z(i,typeof t!="symbol"?t+"":t,e),e);var ct={};Q(ct,{AsyncItemModule:()=>I,default:()=>ot});module.exports=tt(ct);var k=require("@lskjs/utils2");var d=require("@lskjs/algos"),_=require("@lskjs/env"),f=require("@lskjs/err"),Y=require("@lskjs/mutex"),$=require("fishbird");var j=require("events");var N=require("@lskjs/log");var S=require("@lskjs/algos"),F=require("@lskjs/env"),l=require("@lskjs/err"),m=require("@lskjs/log/utils/safeLog");var U=typeof window<"u"?window:global,V=s(async(i,t,e)=>{U&&U.__lskGlobalLyfecycleHook&&U.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var T=F.isDev,g=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,S.set)(this,"__lifecycle.autorun",e);return}(0,S.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,V(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new l.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,m.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new l.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,m.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(T)throw new l.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new l.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,m.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(T)throw new l.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(T)throw new l.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,m.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(g,"ModuleWithLifecycle");var E=class extends g{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(E,"ModuleWithConfig");var A=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),et="info",M=class extends E{log;debug;createLog(){let t=this.config?.log||{};return new N.Logger({level:et,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${A(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${A(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${A(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(M,"ModuleWithLog");var L=class extends M{ee;createEe(){return new j.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(a){this.log.error("[ee]",`on(${t}) <==`,a)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(L,"ModuleWithEE");var R=require("@lskjs/algos");var v=s((i=[])=>(0,R.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var B=require("@lskjs/err"),G=require("@lskjs/utils2");var D=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var X=s(async(i,t)=>{if(i.__module)return i;let e=await(0,G.importFn)(i);if(!e)throw new B.Err("!Component");if(Array.isArray(e)){let[r,...a]=e;return D(r,...a,t)}if(e.Module){let{Module:r,...a}=e;return D(r,{...a,...t})}return D(e,t)},"createAsyncModule");var O=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var it=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),st=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),rt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),nt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),at={},b=class extends L{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=it?at:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=O(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:a=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let o=O(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,o),t=o}if(Array.isArray(t))return(0,$.props)(v(t),o=>this.module(o));let c,y;if(t.includes(".")){let[o,...n]=t.split(".");c=o,n.length&&(y=n.join("."))}else c=t;let K=this.__initedModules[c]?"[cache]":e?"[run]":void 0,h=c,u;if(!this.__initedModules[c]){this.mutexMap[h]||(this.mutexMap[h]=new Y.Mutex);let o=this.mutexMap[h],n=(e?nt:rt)||60*1e3;if(await o.isAsyncLocked(n,st))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:n,isRun:e}});u=await o.acquire()}if(this.__initedModules[c]){u&&u(),delete this.mutexMap[h];let o=this.__initedModules[c];return y?o.module(y,{run:e,throw:r,getter:a}).catch(n=>{throw n}):a?await a(o):this.moduleGetter(o)}this.debug&&this.log.trace(`debugInfo! module(${c})`,K);let P=this.__availableModules&&this.__availableModules[c];if(!P){if(u&&u(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${c}" not found in module ${this.name}`,{data:{name:this.name,module:c}})}try{let o=await this.getModuleProps(c),n=await X(P,o);if(e)try{n.start?await n.start():n.__run?await n.__run():n.run&&await n.run()}catch(W){throw n.__stop?await n.__stop():n.stop&&await n.stop(),W}return this.__initedModules[c]=n,y?n.module(y,{run:e,throw:r,getter:a}):a?await a(n):await this.moduleGetter(n)}catch(o){throw this.log.fatal(`module(${c})`,o),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:c,code:f.Err.getCode(o),message:f.Err.getMessage(o)},err:o})}finally{u&&u(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let a=!1;return e.forEach(c=>{c&&c.autorun&&(a=!0)}),a?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,$.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(b,"ModuleWithSubmodules");var p=class extends b{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(p,"Module"),C(p,"__v",2);var x=class extends p{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(x,"ItemModule");var I=class extends x{async createItem(){return(0,k.importFn)(this.__item)}};s(I,"AsyncItemModule");var ot=I;0&&(module.exports={AsyncItemModule});
var w=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var s=(i,t)=>w(i,"name",{value:t,configurable:!0});var z=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},Q=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of J(t))!q.call(i,n)&&n!==e&&w(i,n,{get:()=>t[n],enumerable:!(r=H(t,n))||r.enumerable});return i};var Z=i=>Q(w({},"__esModule",{value:!0}),i);var at={};z(at,{AsyncItemModule:()=>U,default:()=>nt});module.exports=Z(at);var d=require("@lskjs/algos"),u=require("@lskjs/env"),f=require("@lskjs/err"),X=require("@lskjs/mutex"),$=require("fishbird");var j=require("events");var N=require("@lskjs/log");var A=require("@lskjs/algos"),F=require("@lskjs/env"),c=require("@lskjs/err"),y=require("@lskjs/log/utils/safeLog");var S=typeof window<"u"?window:global,V=s(async(i,t,e)=>{S&&S.__lskGlobalLyfecycleHook&&S.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var T=F.isDev,g=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,A.set)(this,"__lifecycle.autorun",e);return}(0,A.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,V(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,y.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,y.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(T)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,y.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(T)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(T)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,y.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var E=class extends g{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var C=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),tt="info",M=class extends E{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new N.Logger({level:tt,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${C(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${C(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${C(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var L=class extends M{static{s(this,"ModuleWithEE")}ee;createEe(){return new j.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var R=require("@lskjs/algos");var v=s((i=[])=>(0,R.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var G=require("@lskjs/err");var b=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var B=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var W=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var m=s(async i=>{let t=await(typeof i=="function"&&!B(i)?i():i);if(!Array.isArray(t))return W(t);let[e,...r]=t;return[await m(e),...r]},"importFn");var k=s(async(i,t)=>{if(i.__module)return i;let e=await m(i);if(!e)throw new G.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return b(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return b(r,{...n,...t})}return b(e,t)},"createAsyncModule");var O=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var et=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),it=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),st=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),rt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),ot={},x=class extends L{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=et?ot:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=O(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=O(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,$.props)(v(t),a=>this.module(a));let l,p;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(p=o.join("."))}else l=t;let Y=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,_;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new X.Mutex);let a=this.mutexMap[h],o=(e?rt:st)||60*1e3;if(await a.isAsyncLocked(o,it))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});_=await a.acquire()}if(this.__initedModules[l]){_&&_(),delete this.mutexMap[h];let a=this.__initedModules[l];return p?a.module(p,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,Y);let P=this.__availableModules&&this.__availableModules[l];if(!P){if(_&&_(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await k(P,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(K){throw o.__stop?await o.__stop():o.stop&&await o.stop(),K}return this.__initedModules[l]=o,p?o.module(p,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{_&&_(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,$.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var I=class extends x{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var D=class extends I{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var U=class extends D{static{s(this,"AsyncItemModule")}async createItem(){return m(this.__item)}},nt=U;0&&(module.exports={AsyncItemModule});
//# sourceMappingURL=AsyncItemModule.js.map

@@ -1,2 +0,2 @@

var w=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Z=Object.prototype.hasOwnProperty;var tt=(i,t,e)=>t in i?w(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>w(i,"name",{value:t,configurable:!0});var et=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},it=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q(t))!Z.call(i,n)&&n!==e&&w(i,n,{get:()=>t[n],enumerable:!(r=z(t,n))||r.enumerable});return i};var st=i=>it(w({},"__esModule",{value:!0}),i);var F=(i,t,e)=>(tt(i,typeof t!="symbol"?t+"":t,e),e);var ut={};et(ut,{AsyncItemsModule:()=>U,default:()=>_t});module.exports=st(ut);var W=require("@lskjs/algos");var m=require("@lskjs/algos"),_=require("@lskjs/env"),h=require("@lskjs/err"),k=require("@lskjs/mutex"),V=require("fishbird");var G=require("events");var R=require("@lskjs/log");var v=require("@lskjs/algos"),j=require("@lskjs/env"),c=require("@lskjs/err"),g=require("@lskjs/log/utils/safeLog");var S=typeof window<"u"?window:global,N=s(async(i,t,e)=>{S&&S.__lskGlobalLyfecycleHook&&S.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var A=j.isDev,E=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,v.set)(this,"__lifecycle.autorun",e);return}(0,v.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,N(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,g.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,g.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(A)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,g.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(A)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(A)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,g.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(E,"ModuleWithLifecycle");var M=class extends E{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(M,"ModuleWithConfig");var P=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),rt="info",L=class extends M{log;debug;createLog(){let t=this.config?.log||{};return new R.Logger({level:rt,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${P(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${P(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${P(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(L,"ModuleWithLog");var b=class extends L{ee;createEe(){return new G.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(b,"ModuleWithEE");var B=require("@lskjs/algos");var O=s((i=[])=>(0,B.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var X=require("@lskjs/err"),Y=require("@lskjs/utils2");var T=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var K=s(async(i,t)=>{if(i.__module)return i;let e=await(0,Y.importFn)(i);if(!e)throw new X.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return T(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return T(r,{...n,...t})}return T(e,t)},"createAsyncModule");var $=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var ot=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),nt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),at=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),lt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),ct={},x=class extends b{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=ot?ct:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,m.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=$(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,m.mapValues)(O(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new h.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=$(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,V.props)(O(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(y=o.join("."))}else l=t;let J=this.__initedModules[l]?"[cache]":e?"[run]":void 0,d=l,f;if(!this.__initedModules[l]){this.mutexMap[d]||(this.mutexMap[d]=new k.Mutex);let a=this.mutexMap[d],o=(e?lt:at)||60*1e3;if(await a.isAsyncLocked(o,nt))throw new h.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});f=await a.acquire()}if(this.__initedModules[l]){f&&f(),delete this.mutexMap[d];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,J);let C=this.__availableModules&&this.__availableModules[l];if(!C){if(f&&f(),delete this.mutexMap[d],!r)return null;throw new h.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await K(C,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(q){throw o.__stop?await o.__stop():o.stop&&await o.stop(),q}return this.__initedModules[l]=o,y?o.module(y,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new h.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:h.Err.getCode(a),message:h.Err.getMessage(a)},err:a})}finally{f&&f(),delete this.mutexMap[d]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,m.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,V.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(x,"ModuleWithSubmodules");var u=class extends x{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(u,"Module"),F(u,"__v",2);var p=class extends u{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(p,"ItemModule");var I=class extends u{ItemModule=p;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,W.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};s(I,"ItemsModule");var H=require("@lskjs/utils2");var D=class extends p{async createItem(){return(0,H.importFn)(this.__item)}};s(D,"AsyncItemModule");var U=class extends I{ItemModule=D};s(U,"AsyncItemsModule");var _t=U;0&&(module.exports={AsyncItemsModule});
var M=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Z=Object.prototype.hasOwnProperty;var s=(i,t)=>M(i,"name",{value:t,configurable:!0});var tt=(i,t)=>{for(var e in t)M(i,e,{get:t[e],enumerable:!0})},et=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q(t))!Z.call(i,n)&&n!==e&&M(i,n,{get:()=>t[n],enumerable:!(r=z(t,n))||r.enumerable});return i};var it=i=>et(M({},"__esModule",{value:!0}),i);var ut={};tt(ut,{AsyncItemsModule:()=>T,default:()=>ct});module.exports=it(ut);var H=require("@lskjs/algos");var d=require("@lskjs/algos"),u=require("@lskjs/env"),f=require("@lskjs/err"),K=require("@lskjs/mutex"),V=require("fishbird");var B=require("events");var R=require("@lskjs/log");var P=require("@lskjs/algos"),j=require("@lskjs/env"),c=require("@lskjs/err"),w=require("@lskjs/log/utils/safeLog");var A=typeof window<"u"?window:global,N=s(async(i,t,e)=>{A&&A.__lskGlobalLyfecycleHook&&A.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var C=j.isDev,E=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,P.set)(this,"__lifecycle.autorun",e);return}(0,P.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,N(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,w.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,w.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(C)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,w.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(C)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(C)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,w.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var L=class extends E{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var O=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),st="info",x=class extends L{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new R.Logger({level:st,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${O(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${O(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${O(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var b=class extends x{static{s(this,"ModuleWithEE")}ee;createEe(){return new B.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var G=require("@lskjs/algos");var v=s((i=[])=>(0,G.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var k=require("@lskjs/err");var I=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var W=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var X=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var g=s(async i=>{let t=await(typeof i=="function"&&!W(i)?i():i);if(!Array.isArray(t))return X(t);let[e,...r]=t;return[await g(e),...r]},"importFn");var Y=s(async(i,t)=>{if(i.__module)return i;let e=await g(i);if(!e)throw new k.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return I(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return I(r,{...n,...t})}return I(e,t)},"createAsyncModule");var $=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var rt=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),ot=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),nt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),at=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),lt={},D=class extends b{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=rt?lt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=$(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=$(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,V.props)(v(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(y=o.join("."))}else l=t;let J=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,_;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new K.Mutex);let a=this.mutexMap[h],o=(e?at:nt)||60*1e3;if(await a.isAsyncLocked(o,ot))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});_=await a.acquire()}if(this.__initedModules[l]){_&&_(),delete this.mutexMap[h];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,J);let F=this.__availableModules&&this.__availableModules[l];if(!F){if(_&&_(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await Y(F,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(q){throw o.__stop?await o.__stop():o.stop&&await o.stop(),q}return this.__initedModules[l]=o,y?o.module(y,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{_&&_(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,V.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var p=class extends D{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var m=class extends p{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var U=class extends p{static{s(this,"ItemsModule")}ItemModule=m;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,H.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};var S=class extends m{static{s(this,"AsyncItemModule")}async createItem(){return g(this.__item)}};var T=class extends U{static{s(this,"AsyncItemsModule")}ItemModule=S},ct=T;0&&(module.exports={AsyncItemsModule});
//# sourceMappingURL=AsyncItemsModule.js.map

@@ -1,2 +0,2 @@

var g=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var tt=Object.prototype.hasOwnProperty;var et=(i,t,e)=>t in i?g(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>g(i,"name",{value:t,configurable:!0});var it=(i,t)=>{for(var e in t)g(i,e,{get:t[e],enumerable:!0})},st=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Z(t))!tt.call(i,n)&&n!==e&&g(i,n,{get:()=>t[n],enumerable:!(r=Q(t,n))||r.enumerable});return i};var rt=i=>st(g({},"__esModule",{value:!0}),i);var F=(i,t,e)=>(et(i,typeof t!="symbol"?t+"":t,e),e);var ut={};it(ut,{AsyncItemModule:()=>y,AsyncItemsModule:()=>U,default:()=>J});module.exports=rt(ut);var W=require("@lskjs/utils2");var m=require("@lskjs/algos"),_=require("@lskjs/env"),h=require("@lskjs/err"),k=require("@lskjs/mutex"),V=require("fishbird");var G=require("events");var R=require("@lskjs/log");var v=require("@lskjs/algos"),j=require("@lskjs/env"),c=require("@lskjs/err"),E=require("@lskjs/log/utils/safeLog");var S=typeof window<"u"?window:global,N=s(async(i,t,e)=>{S&&S.__lskGlobalLyfecycleHook&&S.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var A=j.isDev,M=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,v.set)(this,"__lifecycle.autorun",e);return}(0,v.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,N(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,E.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,E.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(A)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,E.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(A)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(A)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,E.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(M,"ModuleWithLifecycle");var L=class extends M{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(L,"ModuleWithConfig");var P=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),ot="info",x=class extends L{log;debug;createLog(){let t=this.config?.log||{};return new R.Logger({level:ot,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${P(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${P(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${P(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(x,"ModuleWithLog");var b=class extends x{ee;createEe(){return new G.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(b,"ModuleWithEE");var B=require("@lskjs/algos");var O=s((i=[])=>(0,B.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var X=require("@lskjs/err"),Y=require("@lskjs/utils2");var T=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var K=s(async(i,t)=>{if(i.__module)return i;let e=await(0,Y.importFn)(i);if(!e)throw new X.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return T(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return T(r,{...n,...t})}return T(e,t)},"createAsyncModule");var $=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var nt=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),at=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),lt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),ct=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),_t={},I=class extends b{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=nt?_t:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,m.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=$(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,m.mapValues)(O(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new h.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=$(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,V.props)(O(t),a=>this.module(a));let l,w;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(w=o.join("."))}else l=t;let q=this.__initedModules[l]?"[cache]":e?"[run]":void 0,d=l,f;if(!this.__initedModules[l]){this.mutexMap[d]||(this.mutexMap[d]=new k.Mutex);let a=this.mutexMap[d],o=(e?ct:lt)||60*1e3;if(await a.isAsyncLocked(o,at))throw new h.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});f=await a.acquire()}if(this.__initedModules[l]){f&&f(),delete this.mutexMap[d];let a=this.__initedModules[l];return w?a.module(w,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,q);let C=this.__availableModules&&this.__availableModules[l];if(!C){if(f&&f(),delete this.mutexMap[d],!r)return null;throw new h.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await K(C,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(z){throw o.__stop?await o.__stop():o.stop&&await o.stop(),z}return this.__initedModules[l]=o,w?o.module(w,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new h.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:h.Err.getCode(a),message:h.Err.getMessage(a)},err:a})}finally{f&&f(),delete this.mutexMap[d]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,m.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,V.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(I,"ModuleWithSubmodules");var u=class extends I{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(u,"Module"),F(u,"__v",2);var p=class extends u{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(p,"ItemModule");var y=class extends p{async createItem(){return(0,W.importFn)(this.__item)}};s(y,"AsyncItemModule");var H=require("@lskjs/algos");var D=class extends u{ItemModule=p;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,H.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};s(D,"ItemsModule");var U=class extends D{ItemModule=y};s(U,"AsyncItemsModule");var J=U;0&&(module.exports={AsyncItemModule,AsyncItemsModule});
var E=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var tt=Object.prototype.hasOwnProperty;var s=(i,t)=>E(i,"name",{value:t,configurable:!0});var et=(i,t)=>{for(var e in t)E(i,e,{get:t[e],enumerable:!0})},it=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Z(t))!tt.call(i,n)&&n!==e&&E(i,n,{get:()=>t[n],enumerable:!(r=Q(t,n))||r.enumerable});return i};var st=i=>it(E({},"__esModule",{value:!0}),i);var ut={};et(ut,{AsyncItemModule:()=>M,AsyncItemsModule:()=>T,default:()=>J});module.exports=st(ut);var d=require("@lskjs/algos"),u=require("@lskjs/env"),f=require("@lskjs/err"),K=require("@lskjs/mutex"),V=require("fishbird");var B=require("events");var R=require("@lskjs/log");var P=require("@lskjs/algos"),j=require("@lskjs/env"),c=require("@lskjs/err"),w=require("@lskjs/log/utils/safeLog");var A=typeof window<"u"?window:global,N=s(async(i,t,e)=>{A&&A.__lskGlobalLyfecycleHook&&A.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var C=j.isDev,x=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,P.set)(this,"__lifecycle.autorun",e);return}(0,P.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,N(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,w.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,w.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(C)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,w.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(C)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(C)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,w.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var L=class extends x{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var O=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),rt="info",b=class extends L{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new R.Logger({level:rt,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${O(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${O(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${O(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var I=class extends b{static{s(this,"ModuleWithEE")}ee;createEe(){return new B.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var G=require("@lskjs/algos");var v=s((i=[])=>(0,G.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var k=require("@lskjs/err");var D=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var W=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var X=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var g=s(async i=>{let t=await(typeof i=="function"&&!W(i)?i():i);if(!Array.isArray(t))return X(t);let[e,...r]=t;return[await g(e),...r]},"importFn");var Y=s(async(i,t)=>{if(i.__module)return i;let e=await g(i);if(!e)throw new k.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return D(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return D(r,{...n,...t})}return D(e,t)},"createAsyncModule");var $=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var ot=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),nt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),at=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),lt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),ct={},U=class extends I{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=ot?ct:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=$(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=$(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,V.props)(v(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(y=o.join("."))}else l=t;let q=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,_;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new K.Mutex);let a=this.mutexMap[h],o=(e?lt:at)||60*1e3;if(await a.isAsyncLocked(o,nt))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});_=await a.acquire()}if(this.__initedModules[l]){_&&_(),delete this.mutexMap[h];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,q);let F=this.__availableModules&&this.__availableModules[l];if(!F){if(_&&_(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await Y(F,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(z){throw o.__stop?await o.__stop():o.stop&&await o.stop(),z}return this.__initedModules[l]=o,y?o.module(y,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{_&&_(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,V.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var p=class extends U{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var m=class extends p{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var M=class extends m{static{s(this,"AsyncItemModule")}async createItem(){return g(this.__item)}};var H=require("@lskjs/algos");var S=class extends p{static{s(this,"ItemsModule")}ItemModule=m;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,H.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};var T=class extends S{static{s(this,"AsyncItemsModule")}ItemModule=M},J=T;0&&(module.exports={AsyncItemModule,AsyncItemsModule});
//# sourceMappingURL=index.js.map

@@ -1,2 +0,2 @@

var w=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var q=(i,t,e)=>t in i?w(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>w(i,"name",{value:t,configurable:!0});var z=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},Q=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of H(t))!J.call(i,a)&&a!==e&&w(i,a,{get:()=>t[a],enumerable:!(r=W(t,a))||r.enumerable});return i};var Z=i=>Q(w({},"__esModule",{value:!0}),i);var V=(i,t,e)=>(q(i,typeof t!="symbol"?t+"":t,e),e);var ot={};z(ot,{AsyncItemModule:()=>I,default:()=>at});module.exports=Z(ot);var p=require("@lskjs/algos"),_=require("@lskjs/env"),f=require("@lskjs/err"),Y=require("@lskjs/mutex"),P=require("fishbird");var R=require("events");var j=require("@lskjs/log");var A=require("@lskjs/algos"),N=require("@lskjs/env"),l=require("@lskjs/err"),m=require("@lskjs/log/utils/safeLog");var T=typeof window<"u"?window:global,F=s(async(i,t,e)=>{T&&T.__lskGlobalLyfecycleHook&&T.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var S=N.isDev,g=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,A.set)(this,"__lifecycle.autorun",e);return}(0,A.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,F(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new l.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,m.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new l.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,m.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(S)throw new l.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new l.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,m.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(S)throw new l.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(S)throw new l.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,m.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(g,"ModuleWithLifecycle");var E=class extends g{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(E,"ModuleWithConfig");var v=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),tt="info",M=class extends E{log;debug;createLog(){let t=this.config?.log||{};return new j.Logger({level:tt,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${v(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${v(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${v(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(M,"ModuleWithLog");var L=class extends M{ee;createEe(){return new R.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(a){this.log.error("[ee]",`on(${t}) <==`,a)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(L,"ModuleWithEE");var B=require("@lskjs/algos");var O=s((i=[])=>(0,B.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var G=require("@lskjs/err"),X=require("@lskjs/utils2");var D=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var U=s(async(i,t)=>{if(i.__module)return i;let e=await(0,X.importFn)(i);if(!e)throw new G.Err("!Component");if(Array.isArray(e)){let[r,...a]=e;return D(r,...a,t)}if(e.Module){let{Module:r,...a}=e;return D(r,{...a,...t})}return D(e,t)},"createAsyncModule");var $=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var et=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),it=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),st=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),rt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),nt={},b=class extends L{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=et?nt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,p.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=$(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,p.mapValues)(O(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:a=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let o=$(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,o),t=o}if(Array.isArray(t))return(0,P.props)(O(t),o=>this.module(o));let c,y;if(t.includes(".")){let[o,...n]=t.split(".");c=o,n.length&&(y=n.join("."))}else c=t;let k=this.__initedModules[c]?"[cache]":e?"[run]":void 0,h=c,u;if(!this.__initedModules[c]){this.mutexMap[h]||(this.mutexMap[h]=new Y.Mutex);let o=this.mutexMap[h],n=(e?rt:st)||60*1e3;if(await o.isAsyncLocked(n,it))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:n,isRun:e}});u=await o.acquire()}if(this.__initedModules[c]){u&&u(),delete this.mutexMap[h];let o=this.__initedModules[c];return y?o.module(y,{run:e,throw:r,getter:a}).catch(n=>{throw n}):a?await a(o):this.moduleGetter(o)}this.debug&&this.log.trace(`debugInfo! module(${c})`,k);let C=this.__availableModules&&this.__availableModules[c];if(!C){if(u&&u(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${c}" not found in module ${this.name}`,{data:{name:this.name,module:c}})}try{let o=await this.getModuleProps(c),n=await U(C,o);if(e)try{n.start?await n.start():n.__run?await n.__run():n.run&&await n.run()}catch(K){throw n.__stop?await n.__stop():n.stop&&await n.stop(),K}return this.__initedModules[c]=n,y?n.module(y,{run:e,throw:r,getter:a}):a?await a(n):await this.moduleGetter(n)}catch(o){throw this.log.fatal(`module(${c})`,o),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:c,code:f.Err.getCode(o),message:f.Err.getMessage(o)},err:o})}finally{u&&u(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,p.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let a=!1;return e.forEach(c=>{c&&c.autorun&&(a=!0)}),a?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,P.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(b,"ModuleWithSubmodules");var d=class extends b{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(d,"Module"),V(d,"__v",2);var x=class extends d{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(x,"ItemModule");var I=class extends x{async createItem(){return U(this.__item,{__parent:this.__parent,app:this.app,config:this.config})}};s(I,"AsyncItemModule");var at=I;0&&(module.exports={AsyncItemModule});
var m=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var s=(i,t)=>m(i,"name",{value:t,configurable:!0});var z=(i,t)=>{for(var e in t)m(i,e,{get:t[e],enumerable:!0})},Q=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of J(t))!q.call(i,n)&&n!==e&&m(i,n,{get:()=>t[n],enumerable:!(r=H(t,n))||r.enumerable});return i};var Z=i=>Q(m({},"__esModule",{value:!0}),i);var at={};z(at,{AsyncItemModule:()=>U,default:()=>nt});module.exports=Z(at);var d=require("@lskjs/algos"),_=require("@lskjs/env"),f=require("@lskjs/err"),X=require("@lskjs/mutex"),P=require("fishbird");var R=require("events");var j=require("@lskjs/log");var A=require("@lskjs/algos"),N=require("@lskjs/env"),c=require("@lskjs/err"),y=require("@lskjs/log/utils/safeLog");var S=typeof window<"u"?window:global,F=s(async(i,t,e)=>{S&&S.__lskGlobalLyfecycleHook&&S.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var T=N.isDev,w=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,A.set)(this,"__lifecycle.autorun",e);return}(0,A.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,F(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,y.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,y.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(T)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,y.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(T)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(T)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,y.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var g=class extends w{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var C=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),tt="info",E=class extends g{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new j.Logger({level:tt,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${C(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${C(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${C(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var M=class extends E{static{s(this,"ModuleWithEE")}ee;createEe(){return new R.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var B=require("@lskjs/algos");var v=s((i=[])=>(0,B.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var k=require("@lskjs/err");var L=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var W=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var G=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var O=s(async i=>{let t=await(typeof i=="function"&&!W(i)?i():i);if(!Array.isArray(t))return G(t);let[e,...r]=t;return[await O(e),...r]},"importFn");var b=s(async(i,t)=>{if(i.__module)return i;let e=await O(i);if(!e)throw new k.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return L(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return L(r,{...n,...t})}return L(e,t)},"createAsyncModule");var $=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var et=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),it=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),st=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),rt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),ot={},x=class extends M{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=et?ot:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=$(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=$(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,P.props)(v(t),a=>this.module(a));let l,p;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(p=o.join("."))}else l=t;let Y=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,u;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new X.Mutex);let a=this.mutexMap[h],o=(e?rt:st)||60*1e3;if(await a.isAsyncLocked(o,it))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});u=await a.acquire()}if(this.__initedModules[l]){u&&u(),delete this.mutexMap[h];let a=this.__initedModules[l];return p?a.module(p,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,Y);let V=this.__availableModules&&this.__availableModules[l];if(!V){if(u&&u(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await b(V,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(K){throw o.__stop?await o.__stop():o.stop&&await o.stop(),K}return this.__initedModules[l]=o,p?o.module(p,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{u&&u(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,P.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var I=class extends x{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var D=class extends I{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var U=class extends D{static{s(this,"AsyncItemModule")}async createItem(){return b(this.__item,{__parent:this.__parent,app:this.app,config:this.config})}},nt=U;0&&(module.exports={AsyncItemModule});
//# sourceMappingURL=AsyncItemModule.js.map

@@ -1,2 +0,2 @@

var w=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var Z=(i,t,e)=>t in i?w(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>w(i,"name",{value:t,configurable:!0});var tt=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},et=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of z(t))!Q.call(i,n)&&n!==e&&w(i,n,{get:()=>t[n],enumerable:!(r=q(t,n))||r.enumerable});return i};var it=i=>et(w({},"__esModule",{value:!0}),i);var N=(i,t,e)=>(Z(i,typeof t!="symbol"?t+"":t,e),e);var _t={};tt(_t,{AsyncItemsModule:()=>U,default:()=>ct});module.exports=it(_t);var W=require("@lskjs/algos");var m=require("@lskjs/algos"),_=require("@lskjs/env"),h=require("@lskjs/err"),k=require("@lskjs/mutex"),C=require("fishbird");var B=require("events");var G=require("@lskjs/log");var P=require("@lskjs/algos"),R=require("@lskjs/env"),c=require("@lskjs/err"),g=require("@lskjs/log/utils/safeLog");var A=typeof window<"u"?window:global,j=s(async(i,t,e)=>{A&&A.__lskGlobalLyfecycleHook&&A.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var v=R.isDev,E=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,P.set)(this,"__lifecycle.autorun",e);return}(0,P.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,j(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,g.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,g.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(v)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,g.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(v)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(v)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,g.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(E,"ModuleWithLifecycle");var M=class extends E{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(M,"ModuleWithConfig");var O=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),st="info",L=class extends M{log;debug;createLog(){let t=this.config?.log||{};return new G.Logger({level:st,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${O(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${O(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${O(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(L,"ModuleWithLog");var b=class extends L{ee;createEe(){return new B.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(b,"ModuleWithEE");var X=require("@lskjs/algos");var $=s((i=[])=>(0,X.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var Y=require("@lskjs/err"),K=require("@lskjs/utils2");var T=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var S=s(async(i,t)=>{if(i.__module)return i;let e=await(0,K.importFn)(i);if(!e)throw new Y.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return T(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return T(r,{...n,...t})}return T(e,t)},"createAsyncModule");var V=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var rt=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),ot=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),nt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),at=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),lt={},x=class extends b{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=rt?lt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,m.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=V(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,m.mapValues)($(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new h.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=V(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,C.props)($(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(y=o.join("."))}else l=t;let H=this.__initedModules[l]?"[cache]":e?"[run]":void 0,d=l,f;if(!this.__initedModules[l]){this.mutexMap[d]||(this.mutexMap[d]=new k.Mutex);let a=this.mutexMap[d],o=(e?at:nt)||60*1e3;if(await a.isAsyncLocked(o,ot))throw new h.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});f=await a.acquire()}if(this.__initedModules[l]){f&&f(),delete this.mutexMap[d];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,H);let F=this.__availableModules&&this.__availableModules[l];if(!F){if(f&&f(),delete this.mutexMap[d],!r)return null;throw new h.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await S(F,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(J){throw o.__stop?await o.__stop():o.stop&&await o.stop(),J}return this.__initedModules[l]=o,y?o.module(y,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new h.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:h.Err.getCode(a),message:h.Err.getMessage(a)},err:a})}finally{f&&f(),delete this.mutexMap[d]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,m.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,C.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(x,"ModuleWithSubmodules");var u=class extends x{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(u,"Module"),N(u,"__v",2);var p=class extends u{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(p,"ItemModule");var I=class extends u{ItemModule=p;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,W.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};s(I,"ItemsModule");var D=class extends p{async createItem(){return S(this.__item,{__parent:this.__parent,app:this.app,config:this.config})}};s(D,"AsyncItemModule");var U=class extends I{ItemModule=D};s(U,"AsyncItemsModule");var ct=U;0&&(module.exports={AsyncItemsModule});
var g=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Z=Object.prototype.hasOwnProperty;var s=(i,t)=>g(i,"name",{value:t,configurable:!0});var tt=(i,t)=>{for(var e in t)g(i,e,{get:t[e],enumerable:!0})},et=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q(t))!Z.call(i,n)&&n!==e&&g(i,n,{get:()=>t[n],enumerable:!(r=z(t,n))||r.enumerable});return i};var it=i=>et(g({},"__esModule",{value:!0}),i);var ut={};tt(ut,{AsyncItemsModule:()=>T,default:()=>ct});module.exports=it(ut);var H=require("@lskjs/algos");var d=require("@lskjs/algos"),u=require("@lskjs/env"),f=require("@lskjs/err"),K=require("@lskjs/mutex"),F=require("fishbird");var G=require("events");var B=require("@lskjs/log");var P=require("@lskjs/algos"),R=require("@lskjs/env"),c=require("@lskjs/err"),w=require("@lskjs/log/utils/safeLog");var A=typeof window<"u"?window:global,j=s(async(i,t,e)=>{A&&A.__lskGlobalLyfecycleHook&&A.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var C=R.isDev,M=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,P.set)(this,"__lifecycle.autorun",e);return}(0,P.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,j(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,w.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,w.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(C)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,w.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(C)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(C)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,w.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var E=class extends M{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var O=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),st="info",L=class extends E{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new B.Logger({level:st,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${O(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${O(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${O(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var x=class extends L{static{s(this,"ModuleWithEE")}ee;createEe(){return new G.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var W=require("@lskjs/algos");var v=s((i=[])=>(0,W.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var Y=require("@lskjs/err");var b=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var X=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var k=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var $=s(async i=>{let t=await(typeof i=="function"&&!X(i)?i():i);if(!Array.isArray(t))return k(t);let[e,...r]=t;return[await $(e),...r]},"importFn");var I=s(async(i,t)=>{if(i.__module)return i;let e=await $(i);if(!e)throw new Y.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return b(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return b(r,{...n,...t})}return b(e,t)},"createAsyncModule");var V=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var rt=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),ot=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),nt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),at=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),lt={},D=class extends x{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=rt?lt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=V(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=V(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,F.props)(v(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(y=o.join("."))}else l=t;let J=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,_;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new K.Mutex);let a=this.mutexMap[h],o=(e?at:nt)||60*1e3;if(await a.isAsyncLocked(o,ot))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});_=await a.acquire()}if(this.__initedModules[l]){_&&_(),delete this.mutexMap[h];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,J);let N=this.__availableModules&&this.__availableModules[l];if(!N){if(_&&_(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await I(N,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(q){throw o.__stop?await o.__stop():o.stop&&await o.stop(),q}return this.__initedModules[l]=o,y?o.module(y,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{_&&_(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,F.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var p=class extends D{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var m=class extends p{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var U=class extends p{static{s(this,"ItemsModule")}ItemModule=m;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,H.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};var S=class extends m{static{s(this,"AsyncItemModule")}async createItem(){return I(this.__item,{__parent:this.__parent,app:this.app,config:this.config})}};var T=class extends U{static{s(this,"AsyncItemsModule")}ItemModule=S},ct=T;0&&(module.exports={AsyncItemsModule});
//# sourceMappingURL=AsyncItemsModule.js.map

@@ -1,2 +0,2 @@

var g=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Z=Object.prototype.hasOwnProperty;var tt=(i,t,e)=>t in i?g(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>g(i,"name",{value:t,configurable:!0});var et=(i,t)=>{for(var e in t)g(i,e,{get:t[e],enumerable:!0})},it=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q(t))!Z.call(i,n)&&n!==e&&g(i,n,{get:()=>t[n],enumerable:!(r=z(t,n))||r.enumerable});return i};var st=i=>it(g({},"__esModule",{value:!0}),i);var N=(i,t,e)=>(tt(i,typeof t!="symbol"?t+"":t,e),e);var _t={};et(_t,{AsyncItemModule:()=>y,AsyncItemsModule:()=>U,default:()=>H});module.exports=st(_t);var m=require("@lskjs/algos"),_=require("@lskjs/env"),h=require("@lskjs/err"),k=require("@lskjs/mutex"),C=require("fishbird");var B=require("events");var G=require("@lskjs/log");var P=require("@lskjs/algos"),R=require("@lskjs/env"),c=require("@lskjs/err"),E=require("@lskjs/log/utils/safeLog");var A=typeof window<"u"?window:global,j=s(async(i,t,e)=>{A&&A.__lskGlobalLyfecycleHook&&A.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var v=R.isDev,M=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,P.set)(this,"__lifecycle.autorun",e);return}(0,P.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,j(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,E.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,E.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(v)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,E.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(v)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(v)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,E.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(M,"ModuleWithLifecycle");var L=class extends M{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(L,"ModuleWithConfig");var O=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),rt="info",x=class extends L{log;debug;createLog(){let t=this.config?.log||{};return new G.Logger({level:rt,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${O(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${O(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${O(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(x,"ModuleWithLog");var b=class extends x{ee;createEe(){return new B.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(b,"ModuleWithEE");var X=require("@lskjs/algos");var $=s((i=[])=>(0,X.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var Y=require("@lskjs/err"),K=require("@lskjs/utils2");var T=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var S=s(async(i,t)=>{if(i.__module)return i;let e=await(0,K.importFn)(i);if(!e)throw new Y.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return T(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return T(r,{...n,...t})}return T(e,t)},"createAsyncModule");var V=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var ot=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),nt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),at=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),lt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),ct={},I=class extends b{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=ot?ct:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,m.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=V(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,m.mapValues)($(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new h.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=V(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,C.props)($(t),a=>this.module(a));let l,w;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(w=o.join("."))}else l=t;let J=this.__initedModules[l]?"[cache]":e?"[run]":void 0,d=l,f;if(!this.__initedModules[l]){this.mutexMap[d]||(this.mutexMap[d]=new k.Mutex);let a=this.mutexMap[d],o=(e?lt:at)||60*1e3;if(await a.isAsyncLocked(o,nt))throw new h.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});f=await a.acquire()}if(this.__initedModules[l]){f&&f(),delete this.mutexMap[d];let a=this.__initedModules[l];return w?a.module(w,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,J);let F=this.__availableModules&&this.__availableModules[l];if(!F){if(f&&f(),delete this.mutexMap[d],!r)return null;throw new h.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await S(F,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(q){throw o.__stop?await o.__stop():o.stop&&await o.stop(),q}return this.__initedModules[l]=o,w?o.module(w,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new h.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:h.Err.getCode(a),message:h.Err.getMessage(a)},err:a})}finally{f&&f(),delete this.mutexMap[d]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,m.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,C.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(I,"ModuleWithSubmodules");var u=class extends I{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(u,"Module"),N(u,"__v",2);var p=class extends u{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(p,"ItemModule");var y=class extends p{async createItem(){return S(this.__item,{__parent:this.__parent,app:this.app,config:this.config})}};s(y,"AsyncItemModule");var W=require("@lskjs/algos");var D=class extends u{ItemModule=p;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,W.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};s(D,"ItemsModule");var U=class extends D{ItemModule=y};s(U,"AsyncItemsModule");var H=U;0&&(module.exports={AsyncItemModule,AsyncItemsModule});
var M=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var tt=Object.prototype.hasOwnProperty;var s=(i,t)=>M(i,"name",{value:t,configurable:!0});var et=(i,t)=>{for(var e in t)M(i,e,{get:t[e],enumerable:!0})},it=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Z(t))!tt.call(i,n)&&n!==e&&M(i,n,{get:()=>t[n],enumerable:!(r=Q(t,n))||r.enumerable});return i};var st=i=>it(M({},"__esModule",{value:!0}),i);var ut={};et(ut,{AsyncItemModule:()=>g,AsyncItemsModule:()=>T,default:()=>J});module.exports=st(ut);var d=require("@lskjs/algos"),u=require("@lskjs/env"),f=require("@lskjs/err"),K=require("@lskjs/mutex"),F=require("fishbird");var G=require("events");var B=require("@lskjs/log");var P=require("@lskjs/algos"),R=require("@lskjs/env"),c=require("@lskjs/err"),w=require("@lskjs/log/utils/safeLog");var A=typeof window<"u"?window:global,j=s(async(i,t,e)=>{A&&A.__lskGlobalLyfecycleHook&&A.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var C=R.isDev,E=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,P.set)(this,"__lifecycle.autorun",e);return}(0,P.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,j(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,w.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,w.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(C)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,w.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(C)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(C)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,w.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var x=class extends E{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var O=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),rt="info",L=class extends x{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new B.Logger({level:rt,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${O(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${O(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${O(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var b=class extends L{static{s(this,"ModuleWithEE")}ee;createEe(){return new G.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var W=require("@lskjs/algos");var v=s((i=[])=>(0,W.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var Y=require("@lskjs/err");var I=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var X=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var k=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var $=s(async i=>{let t=await(typeof i=="function"&&!X(i)?i():i);if(!Array.isArray(t))return k(t);let[e,...r]=t;return[await $(e),...r]},"importFn");var D=s(async(i,t)=>{if(i.__module)return i;let e=await $(i);if(!e)throw new Y.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return I(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return I(r,{...n,...t})}return I(e,t)},"createAsyncModule");var V=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var ot=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),nt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),at=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),lt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),ct={},U=class extends b{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=ot?ct:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=V(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=V(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,F.props)(v(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(y=o.join("."))}else l=t;let q=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,_;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new K.Mutex);let a=this.mutexMap[h],o=(e?lt:at)||60*1e3;if(await a.isAsyncLocked(o,nt))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});_=await a.acquire()}if(this.__initedModules[l]){_&&_(),delete this.mutexMap[h];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,q);let N=this.__availableModules&&this.__availableModules[l];if(!N){if(_&&_(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await D(N,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(z){throw o.__stop?await o.__stop():o.stop&&await o.stop(),z}return this.__initedModules[l]=o,y?o.module(y,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{_&&_(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,F.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var p=class extends U{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var m=class extends p{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var g=class extends m{static{s(this,"AsyncItemModule")}async createItem(){return D(this.__item,{__parent:this.__parent,app:this.app,config:this.config})}};var H=require("@lskjs/algos");var S=class extends p{static{s(this,"ItemsModule")}ItemModule=m;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,H.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};var T=class extends S{static{s(this,"AsyncItemsModule")}ItemModule=g},J=T;0&&(module.exports={AsyncItemModule,AsyncItemsModule});
//# sourceMappingURL=index.js.map

@@ -1,2 +0,2 @@

var L=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var Z=(i,t,e)=>t in i?L(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>L(i,"name",{value:t,configurable:!0});var tt=(i,t)=>{for(var e in t)L(i,e,{get:t[e],enumerable:!0})},et=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of z(t))!Q.call(i,n)&&n!==e&&L(i,n,{get:()=>t[n],enumerable:!(r=q(t,n))||r.enumerable});return i};var it=i=>et(L({},"__esModule",{value:!0}),i);var C=(i,t,e)=>(Z(i,typeof t!="symbol"?t+"":t,e),e);var _t={};tt(_t,{ILog:()=>F.ILogger,ILogger:()=>F.ILogger,ItemModule:()=>M,ItemsModule:()=>D,Module:()=>c,Module2:()=>ct,ModuleWithConfig:()=>m,ModuleWithEE:()=>w,ModuleWithLifecycle:()=>d,ModuleWithLog:()=>y,ModuleWithSubmodules:()=>g,createAsyncModule:()=>P,default:()=>k});module.exports=it(_t);var F=require("@lskjs/log");var S=require("@lskjs/algos"),j=require("@lskjs/env"),_=require("@lskjs/err"),b=require("@lskjs/log/utils/safeLog");var U=typeof window<"u"?window:global,N=s(async(i,t,e)=>{U&&U.__lskGlobalLyfecycleHook&&U.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var T=j.isDev,d=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,S.set)(this,"__lifecycle.autorun",e);return}(0,S.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,N(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new _.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,b.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new _.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new _.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,b.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(T)throw new _.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new _.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new _.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,b.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(T)throw new _.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(T)throw new _.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new _.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,b.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(d,"ModuleWithLifecycle");var m=class extends d{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(m,"ModuleWithConfig");var G=require("events");var R=require("@lskjs/log");var A=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),st="info",y=class extends m{log;debug;createLog(){let t=this.config?.log||{};return new R.Logger({level:st,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${A(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${A(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${A(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(y,"ModuleWithLog");var w=class extends y{ee;createEe(){return new G.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(w,"ModuleWithEE");var E=require("@lskjs/algos"),u=require("@lskjs/env"),h=require("@lskjs/err"),K=require("@lskjs/mutex"),$=require("fishbird");var B=require("@lskjs/algos");var v=s((i=[])=>(0,B.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var X=require("@lskjs/err"),Y=require("@lskjs/utils2");var I=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var P=s(async(i,t)=>{if(i.__module)return i;let e=await(0,Y.importFn)(i);if(!e)throw new X.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return I(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return I(r,{...n,...t})}return I(e,t)},"createAsyncModule");var O=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var rt=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),ot=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),nt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),at=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),lt={},g=class extends w{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=rt?lt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,E.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=O(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,E.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new h.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=O(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,$.props)(v(t),a=>this.module(a));let l,x;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(x=o.join("."))}else l=t;let H=this.__initedModules[l]?"[cache]":e?"[run]":void 0,p=l,f;if(!this.__initedModules[l]){this.mutexMap[p]||(this.mutexMap[p]=new K.Mutex);let a=this.mutexMap[p],o=(e?at:nt)||60*1e3;if(await a.isAsyncLocked(o,ot))throw new h.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});f=await a.acquire()}if(this.__initedModules[l]){f&&f(),delete this.mutexMap[p];let a=this.__initedModules[l];return x?a.module(x,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,H);let V=this.__availableModules&&this.__availableModules[l];if(!V){if(f&&f(),delete this.mutexMap[p],!r)return null;throw new h.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await P(V,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(J){throw o.__stop?await o.__stop():o.stop&&await o.stop(),J}return this.__initedModules[l]=o,x?o.module(x,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new h.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:h.Err.getCode(a),message:h.Err.getMessage(a)},err:a})}finally{f&&f(),delete this.mutexMap[p]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,E.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,$.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(g,"ModuleWithSubmodules");var c=class extends g{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(c,"Module"),C(c,"__v",2);var ct=c,k=c;var M=class extends c{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(M,"ItemModule");var W=require("@lskjs/algos");var D=class extends c{ItemModule=M;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,W.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};s(D,"ItemsModule");0&&(module.exports={ILog,ILogger,ItemModule,ItemsModule,Module,Module2,ModuleWithConfig,ModuleWithEE,ModuleWithLifecycle,ModuleWithLog,ModuleWithSubmodules,createAsyncModule});
var b=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Z=Object.prototype.hasOwnProperty;var s=(i,t)=>b(i,"name",{value:t,configurable:!0});var tt=(i,t)=>{for(var e in t)b(i,e,{get:t[e],enumerable:!0})},et=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q(t))!Z.call(i,n)&&n!==e&&b(i,n,{get:()=>t[n],enumerable:!(r=z(t,n))||r.enumerable});return i};var it=i=>et(b({},"__esModule",{value:!0}),i);var ut={};tt(ut,{ILog:()=>F.ILogger,ILogger:()=>F.ILogger,ItemModule:()=>L,ItemsModule:()=>$,Module:()=>u,Module2:()=>ct,ModuleWithConfig:()=>g,ModuleWithEE:()=>E,ModuleWithLifecycle:()=>w,ModuleWithLog:()=>M,ModuleWithSubmodules:()=>x,createAsyncModule:()=>P,default:()=>K});module.exports=it(ut);var F=require("@lskjs/log");var S=require("@lskjs/algos"),j=require("@lskjs/env"),c=require("@lskjs/err"),y=require("@lskjs/log/utils/safeLog");var D=typeof window<"u"?window:global,N=s(async(i,t,e)=>{D&&D.__lskGlobalLyfecycleHook&&D.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var U=j.isDev,w=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,S.set)(this,"__lifecycle.autorun",e);return}(0,S.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,N(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,y.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,y.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(U)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,y.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(U)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(U)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,y.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var g=class extends w{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var B=require("events");var R=require("@lskjs/log");var T=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),st="info",M=class extends g{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new R.Logger({level:st,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${T(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${T(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${T(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var E=class extends M{static{s(this,"ModuleWithEE")}ee;createEe(){return new B.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var d=require("@lskjs/algos"),_=require("@lskjs/env"),h=require("@lskjs/err"),Y=require("@lskjs/mutex"),v=require("fishbird");var G=require("@lskjs/algos");var A=s((i=[])=>(0,G.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var k=require("@lskjs/err");var I=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var W=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var X=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var C=s(async i=>{let t=await(typeof i=="function"&&!W(i)?i():i);if(!Array.isArray(t))return X(t);let[e,...r]=t;return[await C(e),...r]},"importFn");var P=s(async(i,t)=>{if(i.__module)return i;let e=await C(i);if(!e)throw new k.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return I(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return I(r,{...n,...t})}return I(e,t)},"createAsyncModule");var O=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var rt=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),ot=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),nt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),at=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),lt={},x=class extends E{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=rt?lt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=O(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(A(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new h.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=O(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,v.props)(A(t),a=>this.module(a));let l,m;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(m=o.join("."))}else l=t;let J=this.__initedModules[l]?"[cache]":e?"[run]":void 0,p=l,f;if(!this.__initedModules[l]){this.mutexMap[p]||(this.mutexMap[p]=new Y.Mutex);let a=this.mutexMap[p],o=(e?at:nt)||60*1e3;if(await a.isAsyncLocked(o,ot))throw new h.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});f=await a.acquire()}if(this.__initedModules[l]){f&&f(),delete this.mutexMap[p];let a=this.__initedModules[l];return m?a.module(m,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,J);let V=this.__availableModules&&this.__availableModules[l];if(!V){if(f&&f(),delete this.mutexMap[p],!r)return null;throw new h.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await P(V,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(q){throw o.__stop?await o.__stop():o.stop&&await o.stop(),q}return this.__initedModules[l]=o,m?o.module(m,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new h.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:h.Err.getCode(a),message:h.Err.getMessage(a)},err:a})}finally{f&&f(),delete this.mutexMap[p]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,v.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var u=class extends x{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}},ct=u,K=u;var L=class extends u{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var H=require("@lskjs/algos");var $=class extends u{static{s(this,"ItemsModule")}ItemModule=L;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,H.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};0&&(module.exports={ILog,ILogger,ItemModule,ItemsModule,Module,Module2,ModuleWithConfig,ModuleWithEE,ModuleWithLifecycle,ModuleWithLog,ModuleWithSubmodules,createAsyncModule});
//# sourceMappingURL=index.js.map

@@ -1,2 +0,2 @@

var w=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var Q=(i,t,e)=>t in i?w(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>w(i,"name",{value:t,configurable:!0});var Z=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},tt=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of q(t))!z.call(i,o)&&o!==e&&w(i,o,{get:()=>t[o],enumerable:!(r=J(t,o))||r.enumerable});return i};var et=i=>tt(w({},"__esModule",{value:!0}),i);var V=(i,t,e)=>(Q(i,typeof t!="symbol"?t+"":t,e),e);var lt={};Z(lt,{ItemModule:()=>m,ItemsModule:()=>I,default:()=>k});module.exports=et(lt);var p=require("@lskjs/algos"),_=require("@lskjs/env"),h=require("@lskjs/err"),Y=require("@lskjs/mutex"),O=require("fishbird");var j=require("events");var N=require("@lskjs/log");var S=require("@lskjs/algos"),F=require("@lskjs/env"),c=require("@lskjs/err"),g=require("@lskjs/log/utils/safeLog");var U=typeof window<"u"?window:global,C=s(async(i,t,e)=>{U&&U.__lskGlobalLyfecycleHook&&U.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var T=F.isDev,E=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,S.set)(this,"__lifecycle.autorun",e);return}(0,S.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,C(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,g.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,g.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(T)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,g.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(T)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(T)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,g.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(E,"ModuleWithLifecycle");var M=class extends E{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(M,"ModuleWithConfig");var A=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),it="info",L=class extends M{log;debug;createLog(){let t=this.config?.log||{};return new N.Logger({level:it,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${A(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${A(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${A(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(L,"ModuleWithLog");var b=class extends L{ee;createEe(){return new j.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(o){this.log.error("[ee]",`on(${t}) <==`,o)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(b,"ModuleWithEE");var R=require("@lskjs/algos");var v=s((i=[])=>(0,R.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var G=require("@lskjs/err"),B=require("@lskjs/utils2");var D=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var X=s(async(i,t)=>{if(i.__module)return i;let e=await(0,B.importFn)(i);if(!e)throw new G.Err("!Component");if(Array.isArray(e)){let[r,...o]=e;return D(r,...o,t)}if(e.Module){let{Module:r,...o}=e;return D(r,{...o,...t})}return D(e,t)},"createAsyncModule");var P=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var st=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),rt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),nt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),ot=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),at={},x=class extends b{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=st?at:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,p.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=P(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,p.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:o=void 0}={}){if(!this.__lifecycle.initStart)throw new h.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=P(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,O.props)(v(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...n]=t.split(".");l=a,n.length&&(y=n.join("."))}else l=t;let W=this.__initedModules[l]?"[cache]":e?"[run]":void 0,d=l,f;if(!this.__initedModules[l]){this.mutexMap[d]||(this.mutexMap[d]=new Y.Mutex);let a=this.mutexMap[d],n=(e?ot:nt)||60*1e3;if(await a.isAsyncLocked(n,rt))throw new h.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:n,isRun:e}});f=await a.acquire()}if(this.__initedModules[l]){f&&f(),delete this.mutexMap[d];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:o}).catch(n=>{throw n}):o?await o(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,W);let $=this.__availableModules&&this.__availableModules[l];if(!$){if(f&&f(),delete this.mutexMap[d],!r)return null;throw new h.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),n=await X($,a);if(e)try{n.start?await n.start():n.__run?await n.__run():n.run&&await n.run()}catch(H){throw n.__stop?await n.__stop():n.stop&&await n.stop(),H}return this.__initedModules[l]=n,y?n.module(y,{run:e,throw:r,getter:o}):o?await o(n):await this.moduleGetter(n)}catch(a){throw this.log.fatal(`module(${l})`,a),new h.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:h.Err.getCode(a),message:h.Err.getMessage(a)},err:a})}finally{f&&f(),delete this.mutexMap[d]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,p.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let o=!1;return e.forEach(l=>{l&&l.autorun&&(o=!0)}),o?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,O.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(x,"ModuleWithSubmodules");var u=class extends x{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(u,"Module"),V(u,"__v",2);var m=class extends u{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(m,"ItemModule");var K=require("@lskjs/algos");var I=class extends u{ItemModule=m;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,K.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};s(I,"ItemsModule");var k=I;0&&(module.exports={ItemModule,ItemsModule});
var g=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var s=(i,t)=>g(i,"name",{value:t,configurable:!0});var Z=(i,t)=>{for(var e in t)g(i,e,{get:t[e],enumerable:!0})},tt=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of z(t))!Q.call(i,n)&&n!==e&&g(i,n,{get:()=>t[n],enumerable:!(r=q(t,n))||r.enumerable});return i};var et=i=>tt(g({},"__esModule",{value:!0}),i);var lt={};Z(lt,{ItemModule:()=>w,ItemsModule:()=>D,default:()=>K});module.exports=et(lt);var d=require("@lskjs/algos"),u=require("@lskjs/env"),f=require("@lskjs/err"),k=require("@lskjs/mutex"),v=require("fishbird");var j=require("events");var N=require("@lskjs/log");var T=require("@lskjs/algos"),F=require("@lskjs/env"),c=require("@lskjs/err"),y=require("@lskjs/log/utils/safeLog");var U=typeof window<"u"?window:global,V=s(async(i,t,e)=>{U&&U.__lskGlobalLyfecycleHook&&U.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var S=F.isDev,M=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,T.set)(this,"__lifecycle.autorun",e);return}(0,T.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,V(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,y.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,y.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(S)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,y.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(S)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(S)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,y.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var E=class extends M{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var A=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),it="info",L=class extends E{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new N.Logger({level:it,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${A(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${A(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${A(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var x=class extends L{static{s(this,"ModuleWithEE")}ee;createEe(){return new j.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var R=require("@lskjs/algos");var C=s((i=[])=>(0,R.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var W=require("@lskjs/err");var b=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var B=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var G=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var P=s(async i=>{let t=await(typeof i=="function"&&!B(i)?i():i);if(!Array.isArray(t))return G(t);let[e,...r]=t;return[await P(e),...r]},"importFn");var X=s(async(i,t)=>{if(i.__module)return i;let e=await P(i);if(!e)throw new W.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return b(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return b(r,{...n,...t})}return b(e,t)},"createAsyncModule");var O=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var st=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),rt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),ot=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),nt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),at={},I=class extends x{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=st?at:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=O(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(C(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=O(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,v.props)(C(t),a=>this.module(a));let l,m;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(m=o.join("."))}else l=t;let H=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,_;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new k.Mutex);let a=this.mutexMap[h],o=(e?nt:ot)||60*1e3;if(await a.isAsyncLocked(o,rt))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});_=await a.acquire()}if(this.__initedModules[l]){_&&_(),delete this.mutexMap[h];let a=this.__initedModules[l];return m?a.module(m,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,H);let $=this.__availableModules&&this.__availableModules[l];if(!$){if(_&&_(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await X($,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(J){throw o.__stop?await o.__stop():o.stop&&await o.stop(),J}return this.__initedModules[l]=o,m?o.module(m,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{_&&_(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,v.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var p=class extends I{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var w=class extends p{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var Y=require("@lskjs/algos");var D=class extends p{static{s(this,"ItemsModule")}ItemModule=w;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,Y.mapValues)(t,e=>[this.ItemModule,{item:e}])}}},K=D;0&&(module.exports={ItemModule,ItemsModule});
//# sourceMappingURL=index.js.map

@@ -1,2 +0,2 @@

var w=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var J=(i,t,e)=>t in i?w(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var r=(i,t)=>w(i,"name",{value:t,configurable:!0});var q=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},z=(i,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of W(t))!H.call(i,a)&&a!==e&&w(i,a,{get:()=>t[a],enumerable:!(s=K(t,a))||s.enumerable});return i};var Q=i=>z(w({},"__esModule",{value:!0}),i);var P=(i,t,e)=>(J(i,typeof t!="symbol"?t+"":t,e),e);var at={};q(at,{ItemModule:()=>x,default:()=>nt});module.exports=Q(at);var d=require("@lskjs/algos"),_=require("@lskjs/env"),f=require("@lskjs/err"),X=require("@lskjs/mutex"),O=require("fishbird");var N=require("events");var F=require("@lskjs/log");var T=require("@lskjs/algos"),V=require("@lskjs/env"),l=require("@lskjs/err"),m=require("@lskjs/log/utils/safeLog");var D=typeof window<"u"?window:global,C=r(async(i,t,e)=>{D&&D.__lskGlobalLyfecycleHook&&D.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var U=V.isDev,g=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,T.set)(this,"__lifecycle.autorun",e);return}(0,T.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(s=>{this.setProp(s,e[s])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,C(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new l.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,m.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new l.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,m.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(U)throw new l.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new l.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,m.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(U)throw new l.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(U)throw new l.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new l.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,m.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};r(g,"ModuleWithLifecycle");var E=class extends g{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};r(E,"ModuleWithConfig");var S=r((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),Z="info",M=class extends E{log;debug;createLog(){let t=this.config?.log||{};return new F.Logger({level:Z,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${S(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${S(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${S(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};r(M,"ModuleWithLog");var L=class extends M{ee;createEe(){return new N.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...s)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...s)}catch(a){this.log.error("[ee]",`on(${t}) <==`,a)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};r(L,"ModuleWithEE");var j=require("@lskjs/algos");var A=r((i=[])=>(0,j.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var R=require("@lskjs/err"),B=require("@lskjs/utils2");var I=r(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let s=i(...t);return s.init&&await s.init(),s}},"createModule");var G=r(async(i,t)=>{if(i.__module)return i;let e=await(0,B.importFn)(i);if(!e)throw new R.Err("!Component");if(Array.isArray(e)){let[s,...a]=e;return I(s,...a,t)}if(e.Module){let{Module:s,...a}=e;return I(s,{...a,...t})}return I(e,t)},"createAsyncModule");var v=r((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var tt=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),et=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),it=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),st=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),rt={},b=class extends L{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=tt?rt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},s=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:s,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=v(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(A(t),s=>this.hasModule(s));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:s=!0,getter:a=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let o=v(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,o),t=o}if(Array.isArray(t))return(0,O.props)(A(t),o=>this.module(o));let c,y;if(t.includes(".")){let[o,...n]=t.split(".");c=o,n.length&&(y=n.join("."))}else c=t;let Y=this.__initedModules[c]?"[cache]":e?"[run]":void 0,h=c,u;if(!this.__initedModules[c]){this.mutexMap[h]||(this.mutexMap[h]=new X.Mutex);let o=this.mutexMap[h],n=(e?st:it)||60*1e3;if(await o.isAsyncLocked(n,et))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:n,isRun:e}});u=await o.acquire()}if(this.__initedModules[c]){u&&u(),delete this.mutexMap[h];let o=this.__initedModules[c];return y?o.module(y,{run:e,throw:s,getter:a}).catch(n=>{throw n}):a?await a(o):this.moduleGetter(o)}this.debug&&this.log.trace(`debugInfo! module(${c})`,Y);let $=this.__availableModules&&this.__availableModules[c];if(!$){if(u&&u(),delete this.mutexMap[h],!s)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${c}" not found in module ${this.name}`,{data:{name:this.name,module:c}})}try{let o=await this.getModuleProps(c),n=await G($,o);if(e)try{n.start?await n.start():n.__run?await n.__run():n.run&&await n.run()}catch(k){throw n.__stop?await n.__stop():n.stop&&await n.stop(),k}return this.__initedModules[c]=n,y?n.module(y,{run:e,throw:s,getter:a}):a?await a(n):await this.moduleGetter(n)}catch(o){throw this.log.fatal(`module(${c})`,o),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:c,code:f.Err.getCode(o),message:f.Err.getMessage(o)},err:o})}finally{u&&u(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,s)=>{Array.isArray(e)||(e=[e]);let a=!1;return e.forEach(c=>{c&&c.autorun&&(a=!0)}),a?s:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,O.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};r(b,"ModuleWithSubmodules");var p=class extends b{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};r(p,"Module"),P(p,"__v",2);var x=class extends p{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};r(x,"ItemModule");var nt=x;0&&(module.exports={ItemModule});
var w=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var s=(i,t)=>w(i,"name",{value:t,configurable:!0});var q=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},z=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of H(t))!J.call(i,n)&&n!==e&&w(i,n,{get:()=>t[n],enumerable:!(r=K(t,n))||r.enumerable});return i};var Q=i=>z(w({},"__esModule",{value:!0}),i);var nt={};q(nt,{ItemModule:()=>I,default:()=>ot});module.exports=Q(nt);var d=require("@lskjs/algos"),u=require("@lskjs/env"),f=require("@lskjs/err"),k=require("@lskjs/mutex"),O=require("fishbird");var N=require("events");var F=require("@lskjs/log");var S=require("@lskjs/algos"),V=require("@lskjs/env"),c=require("@lskjs/err"),y=require("@lskjs/log/utils/safeLog");var D=typeof window<"u"?window:global,P=s(async(i,t,e)=>{D&&D.__lskGlobalLyfecycleHook&&D.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var U=V.isDev,m=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,S.set)(this,"__lifecycle.autorun",e);return}(0,S.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,P(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,y.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,y.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(U)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,y.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(U)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(U)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,y.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var g=class extends m{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var T=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),Z="info",E=class extends g{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new F.Logger({level:Z,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${T(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${T(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${T(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var M=class extends E{static{s(this,"ModuleWithEE")}ee;createEe(){return new N.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var j=require("@lskjs/algos");var A=s((i=[])=>(0,j.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var W=require("@lskjs/err");var L=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var R=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var B=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var C=s(async i=>{let t=await(typeof i=="function"&&!R(i)?i():i);if(!Array.isArray(t))return B(t);let[e,...r]=t;return[await C(e),...r]},"importFn");var G=s(async(i,t)=>{if(i.__module)return i;let e=await C(i);if(!e)throw new W.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return L(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return L(r,{...n,...t})}return L(e,t)},"createAsyncModule");var v=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var tt=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),et=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),it=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),st=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),rt={},b=class extends M{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=tt?rt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=v(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(A(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=v(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,O.props)(A(t),a=>this.module(a));let l,p;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(p=o.join("."))}else l=t;let X=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,_;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new k.Mutex);let a=this.mutexMap[h],o=(e?st:it)||60*1e3;if(await a.isAsyncLocked(o,et))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});_=await a.acquire()}if(this.__initedModules[l]){_&&_(),delete this.mutexMap[h];let a=this.__initedModules[l];return p?a.module(p,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,X);let $=this.__availableModules&&this.__availableModules[l];if(!$){if(_&&_(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await G($,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(Y){throw o.__stop?await o.__stop():o.stop&&await o.stop(),Y}return this.__initedModules[l]=o,p?o.module(p,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{_&&_(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,O.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var x=class extends b{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var I=class extends x{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}},ot=I;0&&(module.exports={ItemModule});
//# sourceMappingURL=ItemModule.js.map

@@ -1,2 +0,2 @@

var m=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var z=(i,t,e)=>t in i?m(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t)=>m(i,"name",{value:t,configurable:!0});var Q=(i,t)=>{for(var e in t)m(i,e,{get:t[e],enumerable:!0})},Z=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of J(t))!q.call(i,o)&&o!==e&&m(i,o,{get:()=>t[o],enumerable:!(r=H(t,o))||r.enumerable});return i};var tt=i=>Z(m({},"__esModule",{value:!0}),i);var V=(i,t,e)=>(z(i,typeof t!="symbol"?t+"":t,e),e);var lt={};Q(lt,{ItemsModule:()=>I,default:()=>at});module.exports=tt(lt);var K=require("@lskjs/algos");var p=require("@lskjs/algos"),_=require("@lskjs/env"),h=require("@lskjs/err"),Y=require("@lskjs/mutex"),O=require("fishbird");var j=require("events");var N=require("@lskjs/log");var S=require("@lskjs/algos"),F=require("@lskjs/env"),c=require("@lskjs/err"),w=require("@lskjs/log/utils/safeLog");var U=typeof window<"u"?window:global,C=s(async(i,t,e)=>{U&&U.__lskGlobalLyfecycleHook&&U.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var T=F.isDev,g=class{name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,S.set)(this,"__lifecycle.autorun",e);return}(0,S.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,C(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,w.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,w.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(T)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,w.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(T)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(T)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,w.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(g,"ModuleWithLifecycle");var E=class extends g{config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(E,"ModuleWithConfig");var A=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),et="info",M=class extends E{log;debug;createLog(){let t=this.config?.log||{};return new N.Logger({level:et,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${A(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${A(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${A(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(M,"ModuleWithLog");var L=class extends M{ee;createEe(){return new j.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(o){this.log.error("[ee]",`on(${t}) <==`,o)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};s(L,"ModuleWithEE");var R=require("@lskjs/algos");var v=s((i=[])=>(0,R.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var G=require("@lskjs/err"),B=require("@lskjs/utils2");var D=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var X=s(async(i,t)=>{if(i.__module)return i;let e=await(0,B.importFn)(i);if(!e)throw new G.Err("!Component");if(Array.isArray(e)){let[r,...o]=e;return D(r,...o,t)}if(e.Module){let{Module:r,...o}=e;return D(r,{...o,...t})}return D(e,t)},"createAsyncModule");var P=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var it=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),st=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),rt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),nt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),ot={},b=class extends L{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=it?ot:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,p.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=P(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,p.mapValues)(v(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:o=void 0}={}){if(!this.__lifecycle.initStart)throw new h.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=P(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,O.props)(v(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...n]=t.split(".");l=a,n.length&&(y=n.join("."))}else l=t;let k=this.__initedModules[l]?"[cache]":e?"[run]":void 0,d=l,f;if(!this.__initedModules[l]){this.mutexMap[d]||(this.mutexMap[d]=new Y.Mutex);let a=this.mutexMap[d],n=(e?nt:rt)||60*1e3;if(await a.isAsyncLocked(n,st))throw new h.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:n,isRun:e}});f=await a.acquire()}if(this.__initedModules[l]){f&&f(),delete this.mutexMap[d];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:o}).catch(n=>{throw n}):o?await o(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,k);let $=this.__availableModules&&this.__availableModules[l];if(!$){if(f&&f(),delete this.mutexMap[d],!r)return null;throw new h.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),n=await X($,a);if(e)try{n.start?await n.start():n.__run?await n.__run():n.run&&await n.run()}catch(W){throw n.__stop?await n.__stop():n.stop&&await n.stop(),W}return this.__initedModules[l]=n,y?n.module(y,{run:e,throw:r,getter:o}):o?await o(n):await this.moduleGetter(n)}catch(a){throw this.log.fatal(`module(${l})`,a),new h.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:h.Err.getCode(a),message:h.Err.getMessage(a)},err:a})}finally{f&&f(),delete this.mutexMap[d]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,p.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let o=!1;return e.forEach(l=>{l&&l.autorun&&(o=!0)}),o?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,O.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};s(b,"ModuleWithSubmodules");var u=class extends b{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};s(u,"Module"),V(u,"__v",2);var x=class extends u{setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};s(x,"ItemModule");var I=class extends u{ItemModule=x;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,K.mapValues)(t,e=>[this.ItemModule,{item:e}])}}};s(I,"ItemsModule");var at=I;0&&(module.exports={ItemsModule});
var w=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var s=(i,t)=>w(i,"name",{value:t,configurable:!0});var Q=(i,t)=>{for(var e in t)w(i,e,{get:t[e],enumerable:!0})},Z=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of q(t))!z.call(i,n)&&n!==e&&w(i,n,{get:()=>t[n],enumerable:!(r=J(t,n))||r.enumerable});return i};var tt=i=>Z(w({},"__esModule",{value:!0}),i);var lt={};Q(lt,{ItemsModule:()=>D,default:()=>at});module.exports=tt(lt);var Y=require("@lskjs/algos");var d=require("@lskjs/algos"),u=require("@lskjs/env"),f=require("@lskjs/err"),k=require("@lskjs/mutex"),v=require("fishbird");var j=require("events");var N=require("@lskjs/log");var T=require("@lskjs/algos"),F=require("@lskjs/env"),c=require("@lskjs/err"),m=require("@lskjs/log/utils/safeLog");var U=typeof window<"u"?window:global,V=s(async(i,t,e)=>{U&&U.__lskGlobalLyfecycleHook&&U.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var S=F.isDev,g=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,T.set)(this,"__lifecycle.autorun",e);return}(0,T.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,V(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,m.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,m.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(S)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,m.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(S)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(S)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,m.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var M=class extends g{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var A=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),et="info",E=class extends M{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new N.Logger({level:et,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${A(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${A(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${A(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var L=class extends E{static{s(this,"ModuleWithEE")}ee;createEe(){return new j.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var R=require("@lskjs/algos");var C=s((i=[])=>(0,R.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var W=require("@lskjs/err");var b=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var B=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var G=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var P=s(async i=>{let t=await(typeof i=="function"&&!B(i)?i():i);if(!Array.isArray(t))return G(t);let[e,...r]=t;return[await P(e),...r]},"importFn");var X=s(async(i,t)=>{if(i.__module)return i;let e=await P(i);if(!e)throw new W.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return b(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return b(r,{...n,...t})}return b(e,t)},"createAsyncModule");var O=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var it=!!(0,u.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),st=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),rt=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_TIME",u.isDev?1e3:1e4),ot=+(0,u.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",u.isDev?4e3:0),nt={},x=class extends L{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=it?nt:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=O(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(C(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=O(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,v.props)(C(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(y=o.join("."))}else l=t;let K=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,_;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new k.Mutex);let a=this.mutexMap[h],o=(e?ot:rt)||60*1e3;if(await a.isAsyncLocked(o,st))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});_=await a.acquire()}if(this.__initedModules[l]){_&&_(),delete this.mutexMap[h];let a=this.__initedModules[l];return y?a.module(y,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,K);let $=this.__availableModules&&this.__availableModules[l];if(!$){if(_&&_(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await X($,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(H){throw o.__stop?await o.__stop():o.stop&&await o.stop(),H}return this.__initedModules[l]=o,y?o.module(y,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{_&&_(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,v.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var p=class extends x{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};var I=class extends p{static{s(this,"ItemModule")}setProp(t,e){return t==="item"?super.setProp("__item",e):super.setProp(t,e)}async createItem(){return this.__item}async run(){await super.run(),this.item=await this.createItem()}};var D=class extends p{static{s(this,"ItemsModule")}ItemModule=I;__items;items;async getItems(){return{...this.items||{},...this.__items||{}}}setProp(t,e){return t==="items"?super.setProp("__items",e):super.setProp(t,e)}moduleGetter(t){return t.item}async getModules(){let t=await this.getItems();return{...await super.getModules(),...(0,Y.mapValues)(t,e=>[this.ItemModule,{item:e}])}}},at=D;0&&(module.exports={ItemsModule});
//# sourceMappingURL=ItemsModule.js.map

@@ -1,2 +0,2 @@

var w=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var W=Object.prototype.hasOwnProperty;var H=(e,t,i)=>t in e?w(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i;var r=(e,t)=>w(e,"name",{value:t,configurable:!0});var J=(e,t)=>{for(var i in t)w(e,i,{get:t[i],enumerable:!0})},q=(e,t,i,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of K(t))!W.call(e,o)&&o!==i&&w(e,o,{get:()=>t[o],enumerable:!(s=Y(t,o))||s.enumerable});return e};var z=e=>q(w({},"__esModule",{value:!0}),e);var $=(e,t,i)=>(H(e,typeof t!="symbol"?t+"":t,i),i);var ot={};J(ot,{Module:()=>h,Module2:()=>rt,default:()=>nt});module.exports=z(ot);var p=require("@lskjs/algos"),_=require("@lskjs/env"),f=require("@lskjs/err"),G=require("@lskjs/mutex"),v=require("fishbird");var F=require("events");var P=require("@lskjs/log");var U=require("@lskjs/algos"),V=require("@lskjs/env"),c=require("@lskjs/err"),g=require("@lskjs/log/utils/safeLog");var I=typeof window<"u"?window:global,C=r(async(e,t,i)=>{I&&I.__lskGlobalLyfecycleHook&&I.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var D=V.isDev,m=class{name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,U.set)(this,"__lifecycle.autorun",i);return}(0,U.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(s=>{this.setProp(s,i[s])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,C(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,g.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,g.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(D)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,g.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(D)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(D)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,g.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};r(m,"ModuleWithLifecycle");var E=class extends m{config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};r(E,"ModuleWithConfig");var T=r((e,t)=>`${Math.abs(Number(e)-Number(t))}ms`,"ms"),Q="info",M=class extends E{log;debug;createLog(){let t=this.config?.log||{};return new P.Logger({level:Q,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${T(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${T(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${T(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};r(M,"ModuleWithLog");var L=class extends M{ee;createEe(){return new F.EventEmitter}on(t,i){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...s)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await i(...s)}catch(o){this.log.error("[ee]",`on(${t}) <==`,o)}})}emit(t,...i){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...i)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.ee&&this.emit(t)}};r(L,"ModuleWithEE");var N=require("@lskjs/algos");var S=r((e=[])=>(0,N.fromPairs)(e.map(t=>[t,t])),"arrayToObject");var j=require("@lskjs/err"),R=require("@lskjs/utils2");var x=r(async(e,...t)=>{if(e.create)return await e.create(...t);try{let i=new e(...t);return i.init&&await i.init(),i}catch{let s=e(...t);return s.init&&await s.init(),s}},"createModule");var B=r(async(e,t)=>{if(e.__module)return e;let i=await(0,R.importFn)(e);if(!i)throw new j.Err("!Component");if(Array.isArray(i)){let[s,...o]=i;return x(s,...o,t)}if(i.Module){let{Module:s,...o}=i;return x(s,{...o,...t})}return x(i,t)},"createAsyncModule");var A=r((e,t)=>e.filter(i=>i.startsWith(t.substr(0,t.length-1))),"filterWildcard");var Z=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),tt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),it=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),et=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),st={},b=class extends L{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=Z?st:{};getModules(){return{}}async getModuleConfig(t){let i=this.config?.[t]||{},s=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...i,log:{...(0,p.omit)(this.config.log||{},["name"]),ns:s,...i.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=A(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,p.mapValues)(S(t),s=>this.hasModule(s));let i=t;return!!this.__availableModules[i]}async moduleGetter(t){return t}async module(t,{run:i=!0,throw:s=!0,getter:o=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=A(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,v.props)(S(t),a=>this.module(a));let l,y;if(t.includes(".")){let[a,...n]=t.split(".");l=a,n.length&&(y=n.join("."))}else l=t;let X=this.__initedModules[l]?"[cache]":i?"[run]":void 0,d=l,u;if(!this.__initedModules[l]){this.mutexMap[d]||(this.mutexMap[d]=new G.Mutex);let a=this.mutexMap[d],n=(i?et:it)||60*1e3;if(await a.isAsyncLocked(n,tt))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:n,isRun:i}});u=await a.acquire()}if(this.__initedModules[l]){u&&u(),delete this.mutexMap[d];let a=this.__initedModules[l];return y?a.module(y,{run:i,throw:s,getter:o}).catch(n=>{throw n}):o?await o(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,X);let O=this.__availableModules&&this.__availableModules[l];if(!O){if(u&&u(),delete this.mutexMap[d],!s)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),n=await B(O,a);if(i)try{n.start?await n.start():n.__run?await n.__run():n.run&&await n.run()}catch(k){throw n.__stop?await n.__stop():n.stop&&await n.stop(),k}return this.__initedModules[l]=n,y?n.module(y,{run:i,throw:s,getter:o}):o?await o(n):await this.moduleGetter(n)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{u&&u(),delete this.mutexMap[d]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,p.map)(this.__availableModules,(i,s)=>{Array.isArray(i)||(i=[i]);let o=!1;return i.forEach(l=>{l&&l.autorun&&(o=!0)}),o?s:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,v.props)(this.__initedModules,async t=>{let i;this.__lifecycle.initFinish?i=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:i=!!this.__lifecycle.autorun,i&&await t.start()})}async run(){await super.run(),await this.__runModules()}};r(b,"ModuleWithSubmodules");var h=class extends b{app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}};r(h,"Module"),$(h,"__v",2);var rt=h,nt=h;0&&(module.exports={Module,Module2});
var g=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var s=(i,t)=>g(i,"name",{value:t,configurable:!0});var J=(i,t)=>{for(var e in t)g(i,e,{get:t[e],enumerable:!0})},q=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of K(t))!H.call(i,n)&&n!==e&&g(i,n,{get:()=>t[n],enumerable:!(r=Y(t,n))||r.enumerable});return i};var z=i=>q(g({},"__esModule",{value:!0}),i);var nt={};J(nt,{Module:()=>w,Module2:()=>rt,default:()=>ot});module.exports=z(nt);var d=require("@lskjs/algos"),_=require("@lskjs/env"),f=require("@lskjs/err"),k=require("@lskjs/mutex"),C=require("fishbird");var F=require("events");var P=require("@lskjs/log");var U=require("@lskjs/algos"),V=require("@lskjs/env"),c=require("@lskjs/err"),y=require("@lskjs/log/utils/safeLog");var I=typeof window<"u"?window:global,$=s(async(i,t,e)=>{I&&I.__lskGlobalLyfecycleHook&&I.__lskGlobalLyfecycleHook(i,t,e)},"globalLyfecycleEvent");var D=V.isDev,m=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e}static async create(...t){let e=new this;return e.setProps(...t,{"__lifecycle.create":new Date}),e.__init?await e.__init():e.init&&await e.init(),e}static async createAndRun(...t){return this.start(...t)}static async start(...t){let e=await this.create(...t);return e.start?await e.start():e.__run?await e.__run():e.run&&await e.run(),e}setProp(t,e){if(t==="autorun"){(0,U.set)(this,"__lifecycle.autorun",e);return}(0,U.set)(this,t,e)}setProps(...t){t.forEach(e=>{Object.keys(e).forEach(r=>{this.setProp(r,e[r])})})}async __lifecycleEvent(t,e=new Date){this.__lifecycle[t]=e,$(this,t,e)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(e){throw(0,y.safeLog)(this,"fatal","onInit()",e),e}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(e){throw(0,y.safeLog)(this,"fatal","init()",e),e}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(D)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,y.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(D)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(D)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,y.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var E=class extends m{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,e){return t==="config"?super.setProp("__config",e):super.setProp(t,e)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var S=s((i,t)=>`${Math.abs(Number(i)-Number(t))}ms`,"ms"),Q="info",M=class extends E{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new P.Logger({level:Q,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${S(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${S(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${S(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var L=class extends M{static{s(this,"ModuleWithEE")}ee;createEe(){return new F.EventEmitter}on(t,e){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await e(...r)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...e){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...e)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,e=new Date){await super.__lifecycleEvent(t,e),this.ee&&this.emit(t)}};var N=require("@lskjs/algos");var T=s((i=[])=>(0,N.fromPairs)(i.map(t=>[t,t])),"arrayToObject");var B=require("@lskjs/err");var b=s(async(i,...t)=>{if(i.create)return await i.create(...t);try{let e=new i(...t);return e.init&&await e.init(),e}catch{let r=i(...t);return r.init&&await r.init(),r}},"createModule");var j=s(i=>typeof i=="function"&&(i.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(i.toString())),"isClass");var R=s(async i=>{let t=await i;return t.__esModule?t.default:t},"undefault");var A=s(async i=>{let t=await(typeof i=="function"&&!j(i)?i():i);if(!Array.isArray(t))return R(t);let[e,...r]=t;return[await A(e),...r]},"importFn");var W=s(async(i,t)=>{if(i.__module)return i;let e=await A(i);if(!e)throw new B.Err("!Component");if(Array.isArray(e)){let[r,...n]=e;return b(r,...n,t)}if(e.Module){let{Module:r,...n}=e;return b(r,{...n,...t})}return b(e,t)},"createAsyncModule");var v=s((i,t)=>i.filter(e=>e.startsWith(t.substr(0,t.length-1))),"filterWildcard");var Z=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),tt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),et=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),it=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),st={},x=class extends L{static{s(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=Z?st:{};getModules(){return{}}async getModuleConfig(t){let e=this.config?.[t]||{},r=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...e,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:r,...e.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=v(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(T(t),r=>this.hasModule(r));let e=t;return!!this.__availableModules[e]}async moduleGetter(t){return t}async module(t,{run:e=!0,throw:r=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=v(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,C.props)(T(t),a=>this.module(a));let l,p;if(t.includes(".")){let[a,...o]=t.split(".");l=a,o.length&&(p=o.join("."))}else l=t;let G=this.__initedModules[l]?"[cache]":e?"[run]":void 0,h=l,u;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new k.Mutex);let a=this.mutexMap[h],o=(e?it:et)||60*1e3;if(await a.isAsyncLocked(o,tt))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:o,isRun:e}});u=await a.acquire()}if(this.__initedModules[l]){u&&u(),delete this.mutexMap[h];let a=this.__initedModules[l];return p?a.module(p,{run:e,throw:r,getter:n}).catch(o=>{throw o}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,G);let O=this.__availableModules&&this.__availableModules[l];if(!O){if(u&&u(),delete this.mutexMap[h],!r)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),o=await W(O,a);if(e)try{o.start?await o.start():o.__run?await o.__run():o.run&&await o.run()}catch(X){throw o.__stop?await o.__stop():o.stop&&await o.stop(),X}return this.__initedModules[l]=o,p?o.module(p,{run:e,throw:r,getter:n}):n?await n(o):await this.moduleGetter(o)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{u&&u(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(e,r)=>{Array.isArray(e)||(e=[e]);let n=!1;return e.forEach(l=>{l&&l.autorun&&(n=!0)}),n?r:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,C.props)(this.__initedModules,async t=>{let e;this.__lifecycle.initFinish?e=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:e=!!this.__lifecycle.autorun,e&&await t.start()})}async run(){await super.run(),await this.__runModules()}};var w=class extends x{static{s(this,"Module")}static __v=2;app;debug=!1;async getModuleProps(t){return{...await super.getModuleProps(t),__parent:this,app:this.app||this}}},rt=w,ot=w;0&&(module.exports={Module,Module2});
//# sourceMappingURL=Module.js.map

@@ -1,2 +0,2 @@

var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var s=(e,t)=>l(e,"name",{value:t,configurable:!0});var d=(e,t)=>{for(var i in t)l(e,i,{get:t[i],enumerable:!0})},I=(e,t,i,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of E(t))!L.call(e,r)&&r!==i&&l(e,r,{get:()=>t[r],enumerable:!(a=p(t,r))||a.enumerable});return e};var m=e=>I(l({},"__esModule",{value:!0}),e);var S={};d(S,{ModuleWithConfig:()=>o,default:()=>D});module.exports=m(S);var y=require("@lskjs/algos"),w=require("@lskjs/env"),n=require("@lskjs/err"),c=require("@lskjs/log/utils/safeLog");var f=typeof window<"u"?window:global,u=s(async(e,t,i)=>{f&&f.__lskGlobalLyfecycleHook&&f.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var h=w.isDev,_=class{name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,y.set)(this,"__lifecycle.autorun",i);return}(0,y.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(a=>{this.setProp(a,i[a])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,u(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,c.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,c.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(h)throw new n.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,c.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(h)throw new n.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(h)throw new n.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,c.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(_,"ModuleWithLifecycle");var o=class extends _{config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(o,"ModuleWithConfig");var D=o;0&&(module.exports={ModuleWithConfig});
var _=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var s=(e,t)=>_(e,"name",{value:t,configurable:!0});var d=(e,t)=>{for(var i in t)_(e,i,{get:t[i],enumerable:!0})},I=(e,t,i,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of E(t))!L.call(e,r)&&r!==i&&_(e,r,{get:()=>t[r],enumerable:!(a=p(t,r))||a.enumerable});return e};var m=e=>I(_({},"__esModule",{value:!0}),e);var S={};d(S,{ModuleWithConfig:()=>l,default:()=>D});module.exports=m(S);var y=require("@lskjs/algos"),w=require("@lskjs/env"),n=require("@lskjs/err"),c=require("@lskjs/log/utils/safeLog");var f=typeof window<"u"?window:global,u=s(async(e,t,i)=>{f&&f.__lskGlobalLyfecycleHook&&f.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var h=w.isDev,o=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,y.set)(this,"__lifecycle.autorun",i);return}(0,y.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(a=>{this.setProp(a,i[a])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,u(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,c.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,c.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(h)throw new n.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,c.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(h)throw new n.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(h)throw new n.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,c.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var l=class extends o{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}},D=l;0&&(module.exports={ModuleWithConfig});
//# sourceMappingURL=ModuleWithConfig.js.map

@@ -1,2 +0,2 @@

var f=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var s=(e,t)=>f(e,"name",{value:t,configurable:!0});var D=(e,t)=>{for(var i in t)f(e,i,{get:t[i],enumerable:!0})},S=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of I(t))!b.call(e,a)&&a!==i&&f(e,a,{get:()=>t[a],enumerable:!(r=L(t,a))||r.enumerable});return e};var N=e=>S(f({},"__esModule",{value:!0}),e);var C={};D(C,{ModuleWithEE:()=>l,default:()=>x});module.exports=N(C);var m=require("events");var d=require("@lskjs/log");var p=require("@lskjs/algos"),E=require("@lskjs/env"),n=require("@lskjs/err"),c=require("@lskjs/log/utils/safeLog");var u=typeof window<"u"?window:global,g=s(async(e,t,i)=>{u&&u.__lskGlobalLyfecycleHook&&u.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var y=E.isDev,o=class{name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,p.set)(this,"__lifecycle.autorun",i);return}(0,p.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(r=>{this.setProp(r,i[r])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,g(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,c.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,c.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(y)throw new n.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,c.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(y)throw new n.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(y)throw new n.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,c.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};s(o,"ModuleWithLifecycle");var _=class extends o{config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};s(_,"ModuleWithConfig");var w=s((e,t)=>`${Math.abs(Number(e)-Number(t))}ms`,"ms"),$="info",h=class extends _{log;debug;createLog(){let t=this.config?.log||{};return new d.Logger({level:$,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${w(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${w(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${w(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};s(h,"ModuleWithLog");var l=class extends h{ee;createEe(){return new m.EventEmitter}on(t,i){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await i(...r)}catch(a){this.log.error("[ee]",`on(${t}) <==`,a)}})}emit(t,...i){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...i)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.ee&&this.emit(t)}};s(l,"ModuleWithEE");var x=l;0&&(module.exports={ModuleWithEE});
var o=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var s=(e,t)=>o(e,"name",{value:t,configurable:!0});var D=(e,t)=>{for(var i in t)o(e,i,{get:t[i],enumerable:!0})},S=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of I(t))!b.call(e,a)&&a!==i&&o(e,a,{get:()=>t[a],enumerable:!(r=L(t,a))||r.enumerable});return e};var N=e=>S(o({},"__esModule",{value:!0}),e);var x={};D(x,{ModuleWithEE:()=>f,default:()=>$});module.exports=N(x);var m=require("events");var d=require("@lskjs/log");var p=require("@lskjs/algos"),E=require("@lskjs/env"),n=require("@lskjs/err"),c=require("@lskjs/log/utils/safeLog");var u=typeof window<"u"?window:global,g=s(async(e,t,i)=>{u&&u.__lskGlobalLyfecycleHook&&u.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var y=E.isDev,_=class{static{s(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,p.set)(this,"__lifecycle.autorun",i);return}(0,p.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(r=>{this.setProp(r,i[r])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,g(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,c.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,c.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(y)throw new n.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,c.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(y)throw new n.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(y)throw new n.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,c.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var h=class extends _{static{s(this,"ModuleWithConfig")}config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var w=s((e,t)=>`${Math.abs(Number(e)-Number(t))}ms`,"ms"),C="info",l=class extends h{static{s(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new d.Logger({level:C,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${w(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${w(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${w(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var f=class extends l{static{s(this,"ModuleWithEE")}ee;createEe(){return new m.EventEmitter}on(t,i){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...r)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await i(...r)}catch(a){this.log.error("[ee]",`on(${t}) <==`,a)}})}emit(t,...i){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...i)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.ee&&this.emit(t)}},$=f;0&&(module.exports={ModuleWithEE});
//# sourceMappingURL=ModuleWithEE.js.map

@@ -1,2 +0,2 @@

var c=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var o=(e,t)=>c(e,"name",{value:t,configurable:!0});var L=(e,t)=>{for(var i in t)c(e,i,{get:t[i],enumerable:!0})},I=(e,t,i,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of E(t))!p.call(e,a)&&a!==i&&c(e,a,{get:()=>t[a],enumerable:!(s=u(t,a))||s.enumerable});return e};var d=e=>I(c({},"__esModule",{value:!0}),e);var D={};L(D,{ModuleWithLifecycle:()=>_,default:()=>m});module.exports=d(D);var f=require("@lskjs/algos"),w=require("@lskjs/env"),n=require("@lskjs/err"),r=require("@lskjs/log/utils/safeLog");var l=typeof window<"u"?window:global,y=o(async(e,t,i)=>{l&&l.__lskGlobalLyfecycleHook&&l.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var h=w.isDev,_=class{name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,f.set)(this,"__lifecycle.autorun",i);return}(0,f.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(s=>{this.setProp(s,i[s])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,y(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,r.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,r.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(h)throw new n.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,r.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(h)throw new n.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(h)throw new n.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,r.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};o(_,"ModuleWithLifecycle");var m=_;0&&(module.exports={ModuleWithLifecycle});
var _=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(e,t)=>_(e,"name",{value:t,configurable:!0});var L=(e,t)=>{for(var i in t)_(e,i,{get:t[i],enumerable:!0})},d=(e,t,i,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of E(t))!p.call(e,a)&&a!==i&&_(e,a,{get:()=>t[a],enumerable:!(s=u(t,a))||s.enumerable});return e};var I=e=>d(_({},"__esModule",{value:!0}),e);var D={};L(D,{ModuleWithLifecycle:()=>o,default:()=>m});module.exports=I(D);var f=require("@lskjs/algos"),w=require("@lskjs/env"),n=require("@lskjs/err"),r=require("@lskjs/log/utils/safeLog");var l=typeof window<"u"?window:global,y=c(async(e,t,i)=>{l&&l.__lskGlobalLyfecycleHook&&l.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var h=w.isDev,o=class{static{c(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,f.set)(this,"__lifecycle.autorun",i);return}(0,f.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(s=>{this.setProp(s,i[s])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,y(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,r.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new n.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,r.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(h)throw new n.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new n.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,r.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(h)throw new n.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(h)throw new n.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new n.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,r.safeLog)(this,"fatal","stop()",t),t}}async stop(){}},m=o;0&&(module.exports={ModuleWithLifecycle});
//# sourceMappingURL=ModuleWithLifecycle.js.map

@@ -1,2 +0,2 @@

var h=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var n=(e,t)=>h(e,"name",{value:t,configurable:!0});var I=(e,t)=>{for(var i in t)h(e,i,{get:t[i],enumerable:!0})},D=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of m(t))!L.call(e,a)&&a!==i&&h(e,a,{get:()=>t[a],enumerable:!(r=d(t,a))||r.enumerable});return e};var S=e=>D(h({},"__esModule",{value:!0}),e);var C={};I(C,{ModuleWithLog:()=>l,default:()=>N});module.exports=S(C);var g=require("@lskjs/log");var y=require("@lskjs/algos"),E=require("@lskjs/env"),s=require("@lskjs/err"),c=require("@lskjs/log/utils/safeLog");var f=typeof window<"u"?window:global,w=n(async(e,t,i)=>{f&&f.__lskGlobalLyfecycleHook&&f.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var u=E.isDev,_=class{name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,y.set)(this,"__lifecycle.autorun",i);return}(0,y.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(r=>{this.setProp(r,i[r])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,w(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new s.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,c.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new s.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new s.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,c.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(u)throw new s.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new s.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new s.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,c.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(u)throw new s.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(u)throw new s.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new s.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,c.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};n(_,"ModuleWithLifecycle");var o=class extends _{config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};n(o,"ModuleWithConfig");var p=n((e,t)=>`${Math.abs(Number(e)-Number(t))}ms`,"ms"),b="info",l=class extends o{log;debug;createLog(){let t=this.config?.log||{};return new g.Logger({level:b,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${p(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${p(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${p(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};n(l,"ModuleWithLog");var N=l;0&&(module.exports={ModuleWithLog});
var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var n=(e,t)=>o(e,"name",{value:t,configurable:!0});var I=(e,t)=>{for(var i in t)o(e,i,{get:t[i],enumerable:!0})},D=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of L(t))!m.call(e,a)&&a!==i&&o(e,a,{get:()=>t[a],enumerable:!(r=d(t,a))||r.enumerable});return e};var S=e=>D(o({},"__esModule",{value:!0}),e);var C={};I(C,{ModuleWithLog:()=>h,default:()=>N});module.exports=S(C);var g=require("@lskjs/log");var y=require("@lskjs/algos"),E=require("@lskjs/env"),s=require("@lskjs/err"),c=require("@lskjs/log/utils/safeLog");var f=typeof window<"u"?window:global,w=n(async(e,t,i)=>{f&&f.__lskGlobalLyfecycleHook&&f.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var u=E.isDev,_=class{static{n(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,y.set)(this,"__lifecycle.autorun",i);return}(0,y.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(r=>{this.setProp(r,i[r])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,w(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new s.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,c.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new s.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new s.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,c.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(u)throw new s.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new s.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new s.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,c.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(u)throw new s.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(u)throw new s.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new s.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,c.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var l=class extends _{static{n(this,"ModuleWithConfig")}config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var p=n((e,t)=>`${Math.abs(Number(e)-Number(t))}ms`,"ms"),b="info",h=class extends l{static{n(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new g.Logger({level:b,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${p(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${p(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${p(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}},N=h;0&&(module.exports={ModuleWithLog});
//# sourceMappingURL=ModuleWithLog.js.map

@@ -1,2 +0,2 @@

var L=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var o=(e,t)=>L(e,"name",{value:t,configurable:!0});var K=(e,t)=>{for(var i in t)L(e,i,{get:t[i],enumerable:!0})},H=(e,t,i,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of k(t))!Y.call(e,n)&&n!==i&&L(e,n,{get:()=>t[n],enumerable:!(s=X(t,n))||s.enumerable});return e};var W=e=>H(L({},"__esModule",{value:!0}),e);var et={};K(et,{ModuleWithSubmodules:()=>M,default:()=>it});module.exports=W(et);var d=require("@lskjs/algos"),_=require("@lskjs/env"),f=require("@lskjs/err"),R=require("@lskjs/mutex"),S=require("fishbird");var V=require("events");var C=require("@lskjs/log");var D=require("@lskjs/algos"),$=require("@lskjs/env"),c=require("@lskjs/err"),y=require("@lskjs/log/utils/safeLog");var I=typeof window<"u"?window:global,O=o(async(e,t,i)=>{I&&I.__lskGlobalLyfecycleHook&&I.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var x=$.isDev,w=class{name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,D.set)(this,"__lifecycle.autorun",i);return}(0,D.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(s=>{this.setProp(s,i[s])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,O(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,y.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,y.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(x)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,y.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(x)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(x)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,y.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};o(w,"ModuleWithLifecycle");var g=class extends w{config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};o(g,"ModuleWithConfig");var U=o((e,t)=>`${Math.abs(Number(e)-Number(t))}ms`,"ms"),J="info",m=class extends g{log;debug;createLog(){let t=this.config?.log||{};return new C.Logger({level:J,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${U(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${U(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${U(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};o(m,"ModuleWithLog");var E=class extends m{ee;createEe(){return new V.EventEmitter}on(t,i){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...s)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await i(...s)}catch(n){this.log.error("[ee]",`on(${t}) <==`,n)}})}emit(t,...i){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...i)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.ee&&this.emit(t)}};o(E,"ModuleWithEE");var F=require("@lskjs/algos");var T=o((e=[])=>(0,F.fromPairs)(e.map(t=>[t,t])),"arrayToObject");var N=require("@lskjs/err"),P=require("@lskjs/utils2");var b=o(async(e,...t)=>{if(e.create)return await e.create(...t);try{let i=new e(...t);return i.init&&await i.init(),i}catch{let s=e(...t);return s.init&&await s.init(),s}},"createModule");var j=o(async(e,t)=>{if(e.__module)return e;let i=await(0,P.importFn)(e);if(!i)throw new N.Err("!Component");if(Array.isArray(i)){let[s,...n]=i;return b(s,...n,t)}if(i.Module){let{Module:s,...n}=i;return b(s,{...n,...t})}return b(i,t)},"createAsyncModule");var A=o((e,t)=>e.filter(i=>i.startsWith(t.substr(0,t.length-1))),"filterWildcard");var q=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),z=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),Q=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),Z=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),tt={},M=class extends E{__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=q?tt:{};getModules(){return{}}async getModuleConfig(t){let i=this.config?.[t]||{},s=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...i,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:s,...i.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=A(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(T(t),s=>this.hasModule(s));let i=t;return!!this.__availableModules[i]}async moduleGetter(t){return t}async module(t,{run:i=!0,throw:s=!0,getter:n=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=A(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,S.props)(T(t),a=>this.module(a));let l,p;if(t.includes(".")){let[a,...r]=t.split(".");l=a,r.length&&(p=r.join("."))}else l=t;let B=this.__initedModules[l]?"[cache]":i?"[run]":void 0,h=l,u;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new R.Mutex);let a=this.mutexMap[h],r=(i?Z:Q)||60*1e3;if(await a.isAsyncLocked(r,z))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:r,isRun:i}});u=await a.acquire()}if(this.__initedModules[l]){u&&u(),delete this.mutexMap[h];let a=this.__initedModules[l];return p?a.module(p,{run:i,throw:s,getter:n}).catch(r=>{throw r}):n?await n(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,B);let v=this.__availableModules&&this.__availableModules[l];if(!v){if(u&&u(),delete this.mutexMap[h],!s)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),r=await j(v,a);if(i)try{r.start?await r.start():r.__run?await r.__run():r.run&&await r.run()}catch(G){throw r.__stop?await r.__stop():r.stop&&await r.stop(),G}return this.__initedModules[l]=r,p?r.module(p,{run:i,throw:s,getter:n}):n?await n(r):await this.moduleGetter(r)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{u&&u(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(i,s)=>{Array.isArray(i)||(i=[i]);let n=!1;return i.forEach(l=>{l&&l.autorun&&(n=!0)}),n?s:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,S.props)(this.__initedModules,async t=>{let i;this.__lifecycle.initFinish?i=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:i=!!this.__lifecycle.autorun,i&&await t.start()})}async run(){await super.run(),await this.__runModules()}};o(M,"ModuleWithSubmodules");var it=M;0&&(module.exports={ModuleWithSubmodules});
var w=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var r=(e,t)=>w(e,"name",{value:t,configurable:!0});var H=(e,t)=>{for(var i in t)w(e,i,{get:t[i],enumerable:!0})},J=(e,t,i,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Y(t))!K.call(e,o)&&o!==i&&w(e,o,{get:()=>t[o],enumerable:!(s=X(t,o))||s.enumerable});return e};var q=e=>J(w({},"__esModule",{value:!0}),e);var rt={};H(rt,{ModuleWithSubmodules:()=>b,default:()=>st});module.exports=q(rt);var d=require("@lskjs/algos"),_=require("@lskjs/env"),f=require("@lskjs/err"),k=require("@lskjs/mutex"),C=require("fishbird");var F=require("events");var V=require("@lskjs/log");var D=require("@lskjs/algos"),$=require("@lskjs/env"),c=require("@lskjs/err"),y=require("@lskjs/log/utils/safeLog");var x=typeof window<"u"?window:global,O=r(async(e,t,i)=>{x&&x.__lskGlobalLyfecycleHook&&x.__lskGlobalLyfecycleHook(e,t,i)},"globalLyfecycleEvent");var I=$.isDev,g=class{static{r(this,"ModuleWithLifecycle")}name;__lifecycle={};static new(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i}static async create(...t){let i=new this;return i.setProps(...t,{"__lifecycle.create":new Date}),i.__init?await i.__init():i.init&&await i.init(),i}static async createAndRun(...t){return this.start(...t)}static async start(...t){let i=await this.create(...t);return i.start?await i.start():i.__run?await i.__run():i.run&&await i.run(),i}setProp(t,i){if(t==="autorun"){(0,D.set)(this,"__lifecycle.autorun",i);return}(0,D.set)(this,t,i)}setProps(...t){t.forEach(i=>{Object.keys(i).forEach(s=>{this.setProp(s,i[s])})})}async __lifecycleEvent(t,i=new Date){this.__lifecycle[t]=i,O(this,t,i)}async onInit(){}async __init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) or ${t}.start(props) instead new ${t}(props) and init() and run()`,{data:{name:t}});if(!this.__lifecycle.initStart&&(this.__lifecycleEvent("initStart"),await this._init(),this.__lifecycleEvent("initFinish"),this.onInit))try{await this.onInit()}catch(i){throw(0,y.safeLog)(this,"fatal","onInit()",i),i}}async _init(){let{name:t}=this.constructor;if(!this.__lifecycle.create)throw new c.Err("MODULE_INVALID_LIVECYCLE_NEW",`use ${t}.create(props) instead new ${t}(props)`,{data:{name:t}});if(!this.__lifecycle.initStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT",`use ${t}.__init() instead ${t}.init()`,{data:{name:t}});this.name=t;try{await this.init()}catch(i){throw(0,y.safeLog)(this,"fatal","init()",i),i}}async init(){}async start(){await this.__run()}async __run(){if(this.__lifecycle.runStart&&this.__lifecycle.stopFinish&&(delete this.__lifecycle.stopStart,delete this.__lifecycle.stopFinish,delete this.__lifecycle.runStart,delete this.__lifecycle.runFinish),this.__lifecycle.runStart){if(I)throw new c.Err("MODULE_HAS_BEEN_RUNNED",{data:{name:this.name}});return}if(this.__lifecycle.initStart||await this.__init(),!this.__lifecycle.initFinish)throw new c.Err("MODULE_INVALID_LIVECYCLE_INIT_WAIT","please waiting for init() finish before run()",{data:{name:this.name}});this.__lifecycleEvent("runStart"),await this._run(),this.__lifecycleEvent("runFinish")}async _run(){if(!this.__lifecycle.runStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_RUN","use module.__run() instead module.run()",{data:{name:this.name}});try{await this.run()}catch(t){throw(0,y.safeLog)(this,"fatal","run()",t),t}}async run(){}async __stop(){if(this.__lifecycle.stopStart){if(I)throw new c.Err("MODULE_HAS_BEEN_STOPED_BEFORE");return}if(!this.__lifecycle.runStart){if(I)throw new c.Err("MODULE_NOT_RUNNED_YET");return}this.__lifecycleEvent("stopStart"),await this._stop(),this.__lifecycleEvent("stopFinish")}async _stop(){if(!this.__lifecycle.stopStart)throw new c.Err("MODULE_INVALID_LIVECYCLE_STOP","use module.__stop() instead module.stop()",{data:{name:this.name}});try{await this.stop()}catch(t){throw(0,y.safeLog)(this,"fatal","stop()",t),t}}async stop(){}};var m=class extends g{static{r(this,"ModuleWithConfig")}config;__config;async setProp(t,i){return t==="config"?super.setProp("__config",i):super.setProp(t,i)}async getConfig(){return{...this.config||{},...this.__config||{}}}async init(){await super.init(),this.config||(this.config={}),this.config=await this.getConfig()}};var U=r((e,t)=>`${Math.abs(Number(e)-Number(t))}ms`,"ms"),z="info",E=class extends m{static{r(this,"ModuleWithLog")}log;debug;createLog(){let t=this.config?.log||{};return new V.Logger({level:z,name:this.name,...t})}async init(){await super.init(),this.log||(this.log=this.createLog()),this.config.debug!=null&&this.debug!==!0&&(this.debug=this.config.debug),this.debug&&this.log.trace("[init]")}async run(){await super.run(),this.debug&&this.log.trace("[run]")}async stop(){await super.stop(),this.debug&&this.log.trace("[stop]")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.debug&&(t==="initFinish"&&this.log.trace("[init]","finished in",`[${U(this.__lifecycle.initFinish,this.__lifecycle.initStart)}]`),t==="runFinish"&&this.log.trace("[run]","finished in",`[${U(this.__lifecycle.runFinish,this.__lifecycle.runStart)}]`),t==="stopFinish"&&this.log.trace("[stop]","finished in",`[${U(this.__lifecycle.stopFinish,this.__lifecycle.stopStart)}]`))}};var M=class extends E{static{r(this,"ModuleWithEE")}ee;createEe(){return new F.EventEmitter}on(t,i){this.debug&&this.log.trace("[ee]",`on(${t}) [subscribed]`),this.ee||(this.ee=this.createEe()),this.ee.on(t,async(...s)=>{try{this.debug&&this.log.trace("[ee]",`on(${t}) <==`),await i(...s)}catch(o){this.log.error("[ee]",`on(${t}) <==`,o)}})}emit(t,...i){this.debug&&this.log.trace("[ee]",`emit(${t}) ==>`),this.ee||(this.ee=this.createEe()),this.ee.emit(t,...i)}async init(){await super.init(),this.config?.ee&&(this.ee=this.createEe()),this.ee&&this.emit("init")}async __lifecycleEvent(t,i=new Date){await super.__lifecycleEvent(t,i),this.ee&&this.emit(t)}};var N=require("@lskjs/algos");var S=r((e=[])=>(0,N.fromPairs)(e.map(t=>[t,t])),"arrayToObject");var R=require("@lskjs/err");var L=r(async(e,...t)=>{if(e.create)return await e.create(...t);try{let i=new e(...t);return i.init&&await i.init(),i}catch{let s=e(...t);return s.init&&await s.init(),s}},"createModule");var P=r(e=>typeof e=="function"&&(e.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(e.toString())),"isClass");var j=r(async e=>{let t=await e;return t.__esModule?t.default:t},"undefault");var T=r(async e=>{let t=await(typeof e=="function"&&!P(e)?e():e);if(!Array.isArray(t))return j(t);let[i,...s]=t;return[await T(i),...s]},"importFn");var B=r(async(e,t)=>{if(e.__module)return e;let i=await T(e);if(!i)throw new R.Err("!Component");if(Array.isArray(i)){let[s,...o]=i;return L(s,...o,t)}if(i.Module){let{Module:s,...o}=i;return L(s,{...o,...t})}return L(i,t)},"createAsyncModule");var A=r((e,t)=>e.filter(i=>i.startsWith(t.substr(0,t.length-1))),"filterWildcard");var Q=!!(0,_.getEnvVar)("LSK_MODULE_MUTEX_GLOBAL",0),Z=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_INTERVAL",1),tt=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_TIME",_.isDev?1e3:1e4),it=+(0,_.getEnvVar)("LSK_MODULE_MUTEX_RUN_TIME",_.isDev?4e3:0),et={},b=class extends M{static{r(this,"ModuleWithSubmodules")}__availableModules={};__initedModules={};async __getModules(){return{...await this.getModules(),...this.modules||{}}}__parent;modules;mutexMap=Q?et:{};getModules(){return{}}async getModuleConfig(t){let i=this.config?.[t]||{},s=[this.log.ns,t].filter(Boolean).join(".");return{debug:this.config.debug,...i,log:{...(0,d.omit)(this.config.log||{},["name"]),ns:s,...i.log||{}}}}async getModuleProps(t){return{__parent:this,config:await this.getModuleConfig(t)}}hasModule(t){if(typeof t=="string"&&t.endsWith("*")&&(t=A(Object.keys(this.__availableModules),t)),Array.isArray(t))return(0,d.mapValues)(S(t),s=>this.hasModule(s));let i=t;return!!this.__availableModules[i]}async moduleGetter(t){return t}async module(t,{run:i=!0,throw:s=!0,getter:o=void 0}={}){if(!this.__lifecycle.initStart)throw new f.Err("MODULE_INVALID_WORKFLOW_INIT","please init module first before .module()");if(typeof t=="string"&&!t.includes(".")&&t.endsWith("*")){let a=A(Object.keys(this.__availableModules),t);this.log.trace(`module(${t})`,a),t=a}if(Array.isArray(t))return(0,C.props)(S(t),a=>this.module(a));let l,p;if(t.includes(".")){let[a,...n]=t.split(".");l=a,n.length&&(p=n.join("."))}else l=t;let G=this.__initedModules[l]?"[cache]":i?"[run]":void 0,h=l,u;if(!this.__initedModules[l]){this.mutexMap[h]||(this.mutexMap[h]=new k.Mutex);let a=this.mutexMap[h],n=(i?it:tt)||60*1e3;if(await a.isAsyncLocked(n,Z))throw new f.Err("MODULE_LONG_PARALLEL_INIT",{data:{name:this.name,module:t,mutexTime:n,isRun:i}});u=await a.acquire()}if(this.__initedModules[l]){u&&u(),delete this.mutexMap[h];let a=this.__initedModules[l];return p?a.module(p,{run:i,throw:s,getter:o}).catch(n=>{throw n}):o?await o(a):this.moduleGetter(a)}this.debug&&this.log.trace(`debugInfo! module(${l})`,G);let v=this.__availableModules&&this.__availableModules[l];if(!v){if(u&&u(),delete this.mutexMap[h],!s)return null;throw new f.Err("MODULE_INJECT_NOT_FOUND",`Module "${l}" not found in module ${this.name}`,{data:{name:this.name,module:l}})}try{let a=await this.getModuleProps(l),n=await B(v,a);if(i)try{n.start?await n.start():n.__run?await n.__run():n.run&&await n.run()}catch(W){throw n.__stop?await n.__stop():n.stop&&await n.stop(),W}return this.__initedModules[l]=n,p?n.module(p,{run:i,throw:s,getter:o}):o?await o(n):await this.moduleGetter(n)}catch(a){throw this.log.fatal(`module(${l})`,a),new f.Err("MODULE_INJECT_ERROR",{data:{name:this.name,module:l,code:f.Err.getCode(a),message:f.Err.getMessage(a)},err:a})}finally{u&&u(),delete this.mutexMap[h]}}async init(){await super.init(),await this.__initModules()}async __initModules(){this.__availableModules=await this.__getModules(),this.debug&&this.log&&Object.keys(this.__availableModules).length&&this.log.debug("modules",Object.keys(this.__availableModules));let t=(0,d.map)(this.__availableModules,(i,s)=>{Array.isArray(i)||(i=[i]);let o=!1;return i.forEach(l=>{l&&l.autorun&&(o=!0)}),o?s:null}).filter(Boolean);t&&t.length&&(this.log.debug("modules autorun",t),await this.module(t))}async __runModules(){await(0,C.props)(this.__initedModules,async t=>{let i;this.__lifecycle.initFinish?i=!this.__lifecycle.runStart||this.__lifecycle.runStart&&this.__lifecycle.stopFinish:i=!!this.__lifecycle.autorun,i&&await t.start()})}async run(){await super.run(),await this.__runModules()}},st=b;0&&(module.exports={ModuleWithSubmodules});
//# sourceMappingURL=ModuleWithSubmodules.js.map

@@ -1,2 +0,2 @@

var n=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var a=(r,t)=>n(r,"name",{value:t,configurable:!0});var y=(r,t)=>{for(var e in t)n(r,e,{get:t[e],enumerable:!0})},l=(r,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of p(t))!w.call(r,i)&&i!==e&&n(r,i,{get:()=>t[i],enumerable:!(o=m(t,i))||o.enumerable});return r};var M=r=>l(n({},"__esModule",{value:!0}),r);var j={};y(j,{createAsyncModule:()=>d,default:()=>b});module.exports=M(j);var u=require("@lskjs/err"),f=require("@lskjs/utils2");var c=a(async(r,...t)=>{if(r.create)return await r.create(...t);try{let e=new r(...t);return e.init&&await e.init(),e}catch{let o=r(...t);return o.init&&await o.init(),o}},"createModule");var d=a(async(r,t)=>{if(r.__module)return r;let e=await(0,f.importFn)(r);if(!e)throw new u.Err("!Component");if(Array.isArray(e)){let[o,...i]=e;return c(o,...i,t)}if(e.Module){let{Module:o,...i}=e;return c(o,{...i,...t})}return c(e,t)},"createAsyncModule"),b=d;0&&(module.exports={createAsyncModule});
var i=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var a=(t,r)=>i(t,"name",{value:r,configurable:!0});var x=(t,r)=>{for(var e in r)i(t,e,{get:r[e],enumerable:!0})},w=(t,r,e,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of m(r))!y.call(t,n)&&n!==e&&i(t,n,{get:()=>r[n],enumerable:!(o=d(r,n))||o.enumerable});return t};var M=t=>w(i({},"__esModule",{value:!0}),t);var b={};x(b,{createAsyncModule:()=>l,default:()=>_});module.exports=M(b);var p=require("@lskjs/err");var c=a(async(t,...r)=>{if(t.create)return await t.create(...r);try{let e=new t(...r);return e.init&&await e.init(),e}catch{let o=t(...r);return o.init&&await o.init(),o}},"createModule");var s=a(t=>typeof t=="function"&&(t.toString().indexOf("_classCallCheck")!==-1||/^\s*class\s+/.test(t.toString())),"isClass");var f=a(async t=>{let r=await t;return r.__esModule?r.default:r},"undefault");var u=a(async t=>{let r=await(typeof t=="function"&&!s(t)?t():t);if(!Array.isArray(r))return f(r);let[e,...o]=r;return[await u(e),...o]},"importFn");var l=a(async(t,r)=>{if(t.__module)return t;let e=await u(t);if(!e)throw new p.Err("!Component");if(Array.isArray(e)){let[o,...n]=e;return c(o,...n,r)}if(e.Module){let{Module:o,...n}=e;return c(o,{...n,...r})}return c(e,r)},"createAsyncModule"),_=l;0&&(module.exports={createAsyncModule});
//# sourceMappingURL=createAsyncModule.js.map
{
"name": "@lskjs/module",
"version": "3.9.0",
"version": "3.11.0",
"description": "Module system with dependency injection, event emitter, logger and submodules tree",
"author": "Igor Suvorov <hi@isuvorov.com> (https://github.com/isuvorov)",
"dependencies": {
"@lskjs/algos": "^3.9.0",
"@lskjs/env": "^3.8.1",
"@lskjs/err": "^3.9.0",
"@lskjs/log": "^3.9.0",
"@lskjs/algos": "^3.11.0",
"@lskjs/env": "^3.11.0",
"@lskjs/err": "^3.11.0",
"@lskjs/log": "^3.11.0",
"@lskjs/mutex": "^3.8.1",

@@ -50,3 +50,3 @@ "@lskjs/utils2": "^3.8.1",

],
"gitHead": "22a143f05ea47becc32b36d58e9445d1fa6099d4"
"gitHead": "150463ce96bcc80a2187339a44762e7807cbf41c"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc