UNPKG

@zeppos/zml

Version:

A Mini Library of ZeppOS MiniApp

2 lines (1 loc) 2.72 kB
const e=Object.prototype.hasOwnProperty;function t(t,n){return Object.getOwnPropertyNames(n).forEach((function(s){if(!e.call(t,s)){var i=Object.getOwnPropertyDescriptor(n,s);Object.defineProperty(t,s,i)}})),t}const n={init(){this.plugins=[],this.settings={},this.mixins=[]},set(e,t){if(1===arguments.length)return this.settings[e];this.settings[e]=t},use(e,...t){return"function"==typeof e?this.plugins.push({handler:e,args:t}):"object"==typeof e&&this.mixins.push({handler:e,args:t}),this},handle(e){this.plugins.forEach((t=>{if(t&&"function"==typeof t.handler)try{const n=t.handler.call(this,e,...t.args);"object"==typeof n&&this.mixins.push({handler:n,args:[]})}catch(e){}})),this.mixins.forEach((({handler:{onInit:t,onPause:n,build:s,onResume:i,onDestroy:r,onCreate:o,...g},args:h})=>{Object.assign(e,g)}))}},s={onChange(e){return e?(settings.settingsStorage.addListener("change",e),this):this},offChange(){return settings.settingsStorage.removeListener("change"),this},getItem:e=>settings.settingsStorage.getItem(e),setItem:(e,t)=>settings.settingsStorage.setItem(e,t),clear:()=>settings.settingsStorage.clear(),removeItem(e){settings.settingsStorage.removeItem(e)},getAll:()=>settings.settingsStorage.toObject()},i=setTimeout,r=Promise;function o({state:e={},onInit:t,onRun:n,onDestroy:s,...i}={}){const r={state:e,...i,onInit(e){for(let t=0;t<=o.mixins.length-1;t++){const n=o.mixins[t];n&&n.handler.onInit?.apply(this,e)}t?.apply(this,e)},onRun(e){for(let t=0;t<=o.mixins.length-1;t++){const n=o.mixins[t];n&&n.handler.onRun?.apply(this,e)}n?.apply(this,e)},onDestroy(e){s?.apply(this,e);for(let t=o.mixins.length-1;t>=0;t--){const n=o.mixins[t];n&&n.handler.onDestroy?.apply(this,e)}}};return o.handle(r),r}t(o,n),o.init(),o.use((function(){return{onInit(){this.logger=Logger.getLogger(sideService.appInfo.app.appName),this.logger.scope=sideService.appInfo.app.appName,this.logger.name="side-service",this.log=(...e)=>{this.logger.log(...e)},this.error=(...e)=>{e[0]instanceof Error?this.logger.error(...e):this.logger.error({},...e)},this.debug=(...e)=>{this.logger.debug(...e)}}}})),o.use((function(){return{onInit(){this.settings=s,this._onSettingsChange=this.onSettingsChange?.bind(this),s.onChange(this._onSettingsChange),"undefined"!=typeof sideService&&sideService.launchReasons.settingsChanged&&function(){const e=function(){const e={canceled:!1};return e.promise=new r((function(t,n){e.resolve=t,e.reject=n})),e.cancel=()=>{e.canceled=!0,e.reject(new Error("Task canceled"))},e}();return i(e.resolve,1),e.promise}().then((()=>{this._onSettingsChange?.(sideService.launchArgs)}))},onDestroy(){this._onSettingsChange&&s.offChange(this._onSettingsChange)}}}));export{o as BaseSideService,t as merge};