{"version":3,"sources":["../../../node_modules/.pnpm/flex-tools@1.5.9/node_modules/flex-tools/src/events/liteEvent.ts","../../../node_modules/.pnpm/flex-tools@1.5.9/node_modules/flex-tools/dist/chunk-R42SWOGE.mjs","../src/utils/getId.ts","../../../node_modules/.pnpm/flex-tools@1.5.9/node_modules/flex-tools/src/typecheck/isNumber.ts","../src/utils/isMessageId.ts","../src/utils/isI18nScope.ts","../src/utils/loadAsyncModule.ts","../src/utils/isStorage.ts","../src/utils/execAsyncs.ts","../src/utils/isBrowser.ts","../src/manager/index.ts","../src/storage.ts","../src/consts.ts","../../../node_modules/.pnpm/ts-mixer@6.0.4/node_modules/ts-mixer/dist/esm/index.js","../src/scope/mixins/eventEmitter.ts","../../../node_modules/.pnpm/flex-tools@1.5.9/node_modules/flex-tools/src/typecheck/isFunction.ts","../../../node_modules/.pnpm/flex-tools@1.5.9/node_modules/flex-tools/src/typecheck/isPlainObject.ts","../../../node_modules/.pnpm/flex-tools@1.5.9/node_modules/flex-tools/src/async/asyncSignal.ts","../src/scope/mixins/patch.ts","../../../node_modules/.pnpm/asyncsignal@0.0.5/node_modules/asyncsignal/src/index.ts","../src/errors.ts","../src/scope/mixins/change.ts","../src/logger.ts","../src/formatter/manager.ts","../src/utils/isI18nManger.ts","../src/scope/mixins/language.ts","../src/scope/mixins/translate.ts","../src/scope/mixins/restore.ts","../../../node_modules/.pnpm/flexvars@1.0.9/node_modules/flexvars/dist/index.mjs","../../../node_modules/.pnpm/flex-tools@1.5.9/node_modules/flex-tools/src/object/getByPath.ts","../src/scope/mixins/interpolator.ts","../../../node_modules/.pnpm/flex-tools@1.5.9/node_modules/flex-tools/src/object/assignObject.ts","../src/scope/index.ts","../src/formatter/utils.ts","../src/plugin.ts"],"names":["_LiteEvent","_a","options","event","callback","objectify","count","listenerId","eventListeners","__name","isAbort","listener","matchedListeners","eventName","timeout","resolve","reject","tmId","isTimeout","message","listeners","e","results","retain","LiteEvent","a","__require","b","c","getId","Date","now","toString","parseInt","String","Math","random","isNumber","value","strict","v","isMessageId","content","isI18nScope","obj","__VoerkaI18nScope__","loadAsyncModule","module","loadResult","call","Symbol","toStringTag","default","isStorage","get","set","remove","execAsyncs","promises","Promise","allSettled","map","result","status","reason","isBrowser","window","document","createElement","VoerkaI18nManager","constructor","appScope","__VoerkaI18nManager__","_scopes","_appScope","instance","Error","_registerAppScope","_registerScopes","_loadPlugins","globalThis","VoerkaI18n","debug","scope","logger","scopes","activeLanguage","defaultLanguage","loader","storage","languages","__VoerkaI18nScopes__","Array","isArray","forEach","register","getScope","id","find","plugins","__VoerkaI18nPlugins__","plugin","registerPlugin","push","emitAsync","bind","change","language","_refreshScopes","saveLanguage","emit","info","newLanguage","scopeRefreshers","refresh","ready","waitFor","then","lang","clearPatchedMessages","hasLanguage","findIndex","name","clearLanguage","restoreLanguage","__publicField","_VoerkaI18nManager","LocalStorage","key","localStorage","getItem","setItem","removeItem","DefaultFallbackLanguage","DefaultLanguageSettings","title","active","DataTypes","VOERKAI18N_FORMATTER","VOERKAI18N_FORMATTER_BUILDER","defaultLanguageSettings","TEleClassName","TEleMsgIdAttr","TEleScopeIdAttr","copyProps","dest","src","exclude","props","Object","getOwnPropertyDescriptors","prop","defineProperties","protoChain","currentChain","proto","getPrototypeOf","nearestCommonProto","objs","length","commonProto","protoChains","every","protos","pop","potentialCommonProto","hardMixProtos","ingredients","base","prototype","mixedProto","create","visitedProtos","i","newProto","indexOf","unique","arr","filter","getIngredientWithProp","ingredient","protoDepth","protosAreLeftToSearch","searchTarget","getOwnPropertyDescriptor","undefined","proxyMix","Proxy","setPrototypeOf","_","defineProperty","has","val","ingredientWithProp","deleteProperty","ownKeys","getOwnPropertyNames","reduce","prev","curr","concat","mixins","WeakMap","getMixinsForClass","clazz","registerMixins","mixedClass","constituents","mergeObjectsOfDecorators","o1","o2","_b","allKeys","mergedObject","mergePropertyAndMethodDecorators","d1","d2","_c","_d","property","method","mergeDecorators","_e","_f","class","static","decorators","Map","findAllConstituentClasses","classes","allClasses","Set","frontier","size","protoChainClasses","mixinClasses","newClasses","newClass","add","delete","deepDecoratorSearch","decoratorsForClassChain","directDecoratorSearch","classDecorators","getDecoratorsForClass","decoratorsForClass","Mixin","constructors","prototypes","MixedClass","args","settings","DecoratedMixedClass","decorator","applyPropAndMethodDecorators","propAndMethodDecorators","target","propDecorators","methodDecorators","EventEmitterMixin","_eventEmitter","_getEventEmitter","attached","manager","on","once","off","payload","_EventEmitterMixin","isFunction","fn","isPlainObject","baseProto","AsyncSignalAbort","AsyncSignalId","asyncSignal","constraint","isResolved","isRejected","isPending","resolveSignal","rejectSignal","timeoutId","objPromise","signalId","reset","signal","returns","PatchMessageMixin","_patching","_getPatchKey","langs","_patch","_restorePatchedMessages","activeMessages","pachedMessages","_loadMessagesFromLoader","assign","_activeMessages","_setPatchedMessages","warn","stack","messages","patchedMessages","_getPatchedMessages","JSON","stringify","error","cachePatch","_PatchMessageMixin","A","n","f","o","y","g","p","opts","onceListeners","__async","executeListeners","err","VoerkaI18nError","_VoerkaI18nError","VoerkaI18nInvalidLanguageError","_VoerkaI18nInvalidLanguageError","VoerkaI18nOnlyOneAppScopeError","_VoerkaI18nOnlyOneAppScopeError","VoerkaI18nChangeLanguageError","_VoerkaI18nChangeLanguageError","VoerkaI18nLoadLanguageError","_VoerkaI18nLoadLanguageError","ChangeLanguageMixin","_refreshSignal","finalLanguage","finalMessages","patch","fallback","_loadLanguageMessages","$remote","fallbackLanguage","getFallbackLanguage","_activeLanguage","_activeParagraphs","paragraphs","_setLanguageAttr","remoteMessages","arguments","changing","all","_ChangeLanguageMixin","ConsoleLogger","console","createLogger","logFn","logCache","logOutput","level","join","log","splice","FormattersNotLoadedError","_FormattersNotLoadedError","VoerkaI18nFormatterManager","_formatters","_scope","formatters","_registerFormatters","formatter","apply","_addFormatter","interpolator","addFilter","configs","defaultConfig","oldNext","next","ctx","langConfig","getConfig","_VoerkaI18nFormatterManager","isI18nManger","LanguageMixin","getLanguage","index","lng","lngOptions","_defaultLanguage","_LanguageMixin","TranslateMixin","_getPluraMessage","_getPluraValue","pluraValue","vars","dictVars","entries","isNum","startsWith","arg","_getTranslateComponent","_translateComponent","builder","component","_getTranslateTransformer","_translateTransformer","transform","_getActiveMessages","translate","replace","finalArgs","msgId","idMap","onTranslated","_TranslateMixin","RestoreMixin","_getStorage","_getStorageKey","storageKey","savedLanguage","_RestoreMixin","T","D","B","R","t","r","h","x","S","l","s","P","F","w","m","C","q","W","k","V","J","H","G","E","M","U","z","L","X","O","d","N","I","ee","K","Q","Y","Z","$","getByPath","path","defaultValue","delimiter","matched","keys","current","parent","indexOrKey","InterpolatorMixin","_flexVars","_initInterpolators","FlexVars","filterContext","configKey","_InterpolatorMixin","assignObject","sources","mapSources","source","sourceEntries","VoerkaI18nScope","_options","_manager","_formatterManager","_logger","_patchedMessages","$id","idSeq","library","injectLangAttr","_init","defaultMessages","Translate","activeParagraphs","getScopeOption","$t","scopeOpts","_initOptions","activeLang","defaultLang","lanMessages","registerToManager","_initRefresh","getInitLanguage","tasks","isAppScope","finalLang","ele","body","querySelector","setAttribute","getRawMessage","getMessageId","_VoerkaI18nScope","createFormatter","definePlugin"],"mappings":"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","file":"index.mjs","sourcesContent":["/** \n* 一个简单的事件触发器 \n*/\n \nexport interface FlexLiteEvents{\n\n}\n\nexport interface LiteEventSubscribeOptions{\n    objectify?: boolean                 //  当调用时返回一个对象用来退订\n    count?:number                       // 触发几次\n}\nexport interface LiteEventOptions{\n    ignoreError?:boolean                // 执行侦听器出错时是否忽略错误\n}\n\nexport interface LiteEventListener<Message=any>{\n    (message:Message):void \n}\n\n\nexport type ForEachLiteEventListenerCallback<Events,Message> = ({event,listenerId,listener,count,eventListeners}:{event:Events,listenerId:number,listener:LiteEventListener<Message>,count:number,eventListeners:LiteEventListenerRegistry<Message>})=>boolean | void\n\n\nexport interface LiteEventSubscriber{\n    off():void\n}\n\n\nexport type LiteEventListenerRegistry<M> = Map<number,[LiteEventListener<M>,number]>\nexport type LiteListenerRegistry<E,M> = Map<E,LiteEventListenerRegistry<M>>\n\n\nexport class LiteEvent<\n    Events extends FlexLiteEvents = Record<string,any>,\n    EventNames extends keyof Events = keyof Events,\n    Message = any\n>{\n     \n    private _listeners:LiteListenerRegistry<EventNames,Message>= new Map()     // {\"<事件名称>\":{<listenerId>:[Callback,<侦听次数>]}}\n     \n    private _lastMessage:Record<string,any> = {}                       // 保留最后一次触发的消息,key=事件名称,value=消息\n    static listenerSeqId:number = 0\n    options:Required<LiteEventOptions>\n    constructor(options?:LiteEventOptions){\n        this.options = Object.assign({\n            ignoreError:false\n        },options) as Required<LiteEventOptions>\n     }\n    get listeners(){return this._listeners}\n     /**\n      * 订阅事件并返回一个事件订阅ID\n      * \n      * @param event \n      * @param callback \n      * @param options \n      * @returns \n      */\n    on<T extends EventNames>(event:T,callback:LiteEventListener<Events[T]>,options?:LiteEventSubscribeOptions):LiteEventSubscriber | number\n    on(event:'*',callback:LiteEventListener<Message>,options?:LiteEventSubscribeOptions):LiteEventSubscriber | number\n    on():LiteEventSubscriber | number{\n        const event    = arguments[0] as EventNames\n        const callback = arguments[1] as LiteEventListener<Message>\n        const options  = arguments[2] as LiteEventSubscribeOptions\n        const { objectify=true,count=-1 } = Object.assign({},options) as Required<LiteEventSubscribeOptions>        \n        if(!this._listeners.has(event)){\n             this._listeners.set(event,new Map())        \n        }\n        const listenerId     = ++LiteEvent.listenerSeqId            \n        const eventListeners = this._listeners.get(event) as LiteEventListenerRegistry<Message>\n        eventListeners?.set(listenerId,[callback,count])        \n        this._emitRetainEvent(event,listenerId,eventListeners)      \n        if(objectify){\n            return {\n                off:()=>{\n                    eventListeners?.delete(listenerId)\n                    if(eventListeners?.size==0){\n                        this._listeners.delete(event)\n                    }\n                }\n            }\n        }else{\n            return listenerId\n        }\n     } \n    onAny(callback:LiteEventListener<Message>,options?:LiteEventSubscribeOptions):LiteEventSubscriber | number{\n        return this.on('*',callback,options)\n    }\n     /**\n      * 如果事件已经有最近触发时保留的数据，则立即触发事件将最近的数据传递给侦听器\n      * @param event \n      */\n    private _emitRetainEvent(event:EventNames,listenerId:number,eventListeners:LiteEventListenerRegistry<Message>){\n        if(event in this._lastMessage){\n            this._executeListener(listenerId,eventListeners,this._lastMessage[event as string])   \n        }        \n    }\n     /**\n      * 只订阅一次事件\n      * @param event \n      * @param callback \n      * @param options \n      * @returns \n      */\n    once<T extends EventNames>(event:T,callback:LiteEventListener<Events[T]>,options?:LiteEventSubscribeOptions){\n         return this.on(event,callback,Object.assign({},options,{count:1}))        \n    }  \n \n    /**\n      * 遍历所有侦听器\n      *   {\"<事件名称>\":{<listenerId>:[Callback,<侦听次数>]}}\n      * @param callback  ={}\n      */\n    private _forEachListeners(callback:({event,listenerId,listener,count,eventListeners}:{event:EventNames,listenerId:number,listener:LiteEventListener<Message>,count:number,eventListeners:LiteEventListenerRegistry<Message>})=>boolean | void){\n         // {\"<事件名称>\":{<listenerId>:[Callback,<侦听次数>]}}\n         let isAbort = false\n         for(let [event,eventListeners] of this._listeners.entries()){\n             if(isAbort) break\n             for(let [listenerId,[listener,count]] of eventListeners.entries()){\n                 if(isAbort) break\n                 let r = callback({event,listenerId,listener,count,eventListeners})                \n                 isAbort = r === false // 显式返回false时中止遍历\n             }\n         }         \n     }\n     /**\n      * 遍历符合event事件的侦听器\n      * \n      * forEachEventListeners(event,callback)\n      * \n      * @param event         事件名称\n      * @param callback \n      * @returns \n      */\n     private _forEachEventListeners(event:EventNames,callback:ForEachLiteEventListenerCallback<EventNames,Message>){\n         // {\"<事件名称>\":{<listenerId>:[Callback,<侦听次数>]}}        \n         let isAbort = false        \n         let matchedListeners = [[event,this._listeners.get(event)]] as [EventNames,LiteEventListenerRegistry<Message> | undefined][]       \n         for(let [eventName,eventListeners] of matchedListeners){\n             if(!eventListeners) continue\n             for(let [listenerId,[listener,count]] of eventListeners){\n                 if(isAbort) break\n                 let r = callback({event:eventName,listenerId,listener,count,eventListeners})            \n                 isAbort = r === false// 显式返回false时中止遍历\n             }     \n         }\n     }  \n     /**\n      * 注销订阅\n      * \n      * - 通过listenerId进行退订\n      * - 直接指定一个callback并且callback严格相等\n      * - 具备同一样原型链的callback的均退订\n      * \n      *  let listenerId = emitter.on(event,callback)\n      * \n      *  emitter.off(listenerId)              // 精确退订指定的订阅，需要自行保存订阅Id\n      *  emitter.off(callback)                // 所有callback均会退订\n      *  emitter.off(event,callback)          // 退订指定事件的callback均会退订 \n      * \n      * @param event \n      * @param callback \n      * @returns \n      */ \n      off(listener:LiteEventListener<Message>):void;\n      off(listenerId:number):void;\n      off(event:EventNames,listener:LiteEventListener<any>):void;\n      off(){\n         // {\"<事件名称>\":{<listenerId>:[Callback,<侦听次数>]}}\n        if(arguments.length==1){\n             if(typeof(arguments[0])=='number'){// off(listenerId) 根据订阅ID退订\n                 this._forEachListeners(({listenerId,eventListeners,event})=>{\n                     if(listenerId == arguments[0]){\n                         eventListeners.delete(listenerId)\n                         if(this._listeners.get(event)?.size==0) this._listeners.delete(event)\n                         return false\n                     }   \n                 })\n             }else if(typeof(arguments[0])=='function'){  // off(callback) \n                 let callback = arguments[0]\n                 this._forEachListeners(({listenerId,listener,eventListeners,event})=>{\n                     if(listener == callback){\n                         eventListeners.delete(listenerId) \n                         if(this._listeners.get(event)?.size==0) this._listeners.delete(event)\n                     }   \n                 })\n             }\n        }else if(arguments.length==2){\n             if(typeof(arguments[0])=='string' && typeof(arguments[1])=='function'){// off(event,callback)\n                 this._forEachEventListeners(arguments[0] as EventNames,({event,listenerId,listener,eventListeners})=>{\n                     if(event == arguments[0] && listener ==  arguments[1] ){\n                         eventListeners.delete(listenerId) \n                         if(this._listeners.get(event)?.size==0) this._listeners.delete(event)\n                     }\n                 })\n             }\n        } \n     }\n \n     /**\n      * 等待某个事件触发后返回\n      * @param event  事件名称\n      */\n    waitFor(event:EventNames,timeout:number=0){        \n         return new Promise<Message>((resolve,reject)=>{\n             let tmId:any,isTimeout:boolean=false \n             let listenerId:number\n             if(timeout>0){\n                 tmId=setTimeout(()=>{\n                     isTimeout=true\n                     this.off(listenerId)\n                     reject(new Error(\"Timeout\"))    \n                 },timeout)\n             }        \n            listenerId = this.once(event,(message:any)=>{     \n                if(isTimeout) return\n                clearTimeout(tmId) \n                resolve(message)\n            }) as number\n        })\n    }\n    offAll(event?:EventNames){\n         if(event){\n             this._listeners.delete(event)\n         }else{\n             this._listeners.clear()\n         }        \n     }\n     /**    \n      * 执行侦听器函数\n      * \n      * @param listenerId  侦听器ID\n      * @param listeners   事件侦听器列表  \n      * @param message \n      * @returns \n      */\n    private _executeListener(listenerId:number,listeners:LiteEventListenerRegistry<Message>,message?:Message){\n         if(!listeners) return \n         const listener = listeners!.get(listenerId)\n         if(!listener) return \n         try{\n            return listener[0](message!) \n         }catch(e){\n            if(!this.options.ignoreError) throw e\n         }finally{\n             if(listener[1]>-1){\n                 listener[1] = listener[1]-1\n                 if(listener[1]==0){\n                     listeners.delete(listenerId)\n                 }\n             }            \n         }  \n     }   \n     private _executeListeners(event:EventNames,message?:Message,callback?:(listenerId?:number)=>void){\n         let results:any[] = []\n         this._forEachEventListeners(event,({event:eventName,listenerId,eventListeners})=>{\n             results.push(this._executeListener(listenerId,eventListeners,message))\n             if(typeof(callback)=='function') callback(listenerId)\n             if(eventListeners.size==0){\n                 this._listeners.delete(eventName)\n             }\n         })   \n         return results\n     }\n     /**\n      * 触发事件\n      * @param event \n      * @param message \n      */\n    emit<T extends EventNames>(event:T,message?:Events[T],retain?:boolean){\n        if(retain){\n            this._lastMessage[event as any] = message\n        }\n        return this._executeListeners(event,message as any)\n    }\n    async emitAsync<T extends EventNames>(event:T,message?:Events[T],retain?:boolean){\n        return await Promise.allSettled(this.emit(event,message,retain))\n     }\n } \n\n \n  \n//  export type VoerkaI18nEvents = {\n//     log        : { level: string, message:string }       // 当有日志输出时，data={level\n//     ready      : { scope:string,language:string }                        // 当默认语言第一次加载完成后触发，data={language,scope}\n//     Change     : string                                                 // 当语言切换时    data=language\n//     Registered : string                                                 // 当Scope注册到成功后    \n//     Restore    : { scope:string,language:string }                        // 当Scope加载并从本地存储中读取语言包合并到语言包时 ，data={language,scope}\n//     Patched    : { scope:string,language:string }                        // 当Scope加载并从本地存储中读取语言包合并到语言包时 ，data={language,scope}               \n// }      \n    \n\n\n//  const ev = new LiteEvent<VoerkaI18nEvents>()\n\n//  ev.on(\"log\",({level,message})=>{\n//     console.log(level,message)\n//  })\n//  ev.on(\"*\",({level,message})=>{\n//     console.log(level,message)\n//  })\n//  ev.emit(\"log\",{level:\"\",message:\"\"})","/**\n*   ---=== FlexTools ===---\n*   https://zhangfisher.github.com/flex-tools \n*/\nvar i=Object.create;var f=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var g=a=>{throw TypeError(a)};var o=(a=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(a,{get:(b,c)=>(typeof require<\"u\"?require:b)[c]}):a)(function(a){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+a+'\" is not supported')});var p=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var n=(a,b,c,d)=>{if(b&&typeof b==\"object\"||typeof b==\"function\")for(let e of k(b))!m.call(a,e)&&e!==c&&f(a,e,{get:()=>b[e],enumerable:!(d=j(b,e))||d.enumerable});return a};var q=(a,b,c)=>(c=a!=null?i(l(a)):{},n(b||!a||!a.__esModule?f(c,\"default\",{value:a,enumerable:true}):c,a));var h=(a,b,c)=>b.has(a)||g(\"Cannot \"+c);var r=(a,b,c)=>(h(a,b,\"read from private field\"),c?c.call(a):b.get(a)),s=(a,b,c)=>b.has(a)?g(\"Cannot add the same private member more than once\"):b instanceof WeakSet?b.add(a):b.set(a,c),t=(a,b,c,d)=>(h(a,b,\"write to private field\"),d?d.call(a,c):b.set(a,c),c);export{o as a,p as b,q as c,r as d,s as e,t as f};//# sourceMappingURL=chunk-R42SWOGE.mjs.map\n//# sourceMappingURL=chunk-R42SWOGE.mjs.map","export function getId():string{\n    return Date.now().toString() + parseInt(String(Math.random() * 1000))\n}","/**\n * 判断值是否是一个数字\n * \n * 默认情况下，也会对字符串类型的数字进行判断\n * 如isNumber('123')返回true\n * \n * \n * @param {*} value \n * @returns \n */\nexport function isNumber(value:any,strict:boolean=false):boolean {    \n    if(typeof(value)=='number') return true\n    if(typeof(value)!='string') return false\n    // 如果是严格模式，那么不允许字符串类型的数字\n    if(strict) return false        \n    try{\n        if(value.includes(\".\")){\n            let v = parseFloat(value)\n            if(value.endsWith(\".\")){                \n                return !isNaN(v) && String(v).length===value.length-1\n            }else{\n                return !isNaN(v) && String(v).length===value.length\n            }            \n        }else{\n            let v = parseInt(value)\n            return !isNaN(v) && String(v).length===value.length\n        }    \n    }catch{\n        return false\n    }\n}\n","import { isNumber } from \"flex-tools/typecheck/isNumber\";\n\n/**\n * 文本id必须是一个数字\n * @param {*} content \n * @returns \n */\nexport function isMessageId(content:string){\n    return isNumber(content)\n}","\nexport function isI18nScope(obj:any){\n    return obj && typeof(obj)==='object' && obj.__VoerkaI18nScope__ \n}"," \nexport async function loadAsyncModule(this:any,module:Function):Promise<any>{\n    const loadResult = (await (module as any).call(this))    \n    // @ts-ignore      \n    if((loadResult && \"__esModule\" in loadResult) || (Symbol.toStringTag in loadResult)){\n        return  (loadResult as any).default \n    }else{\n        return  loadResult\n    }  \n    \n} ","import { IVoerkaI18nStorage } from \"@/types\";\n\n\nexport function isStorage(obj:any):obj is IVoerkaI18nStorage{\n    return obj \n        && typeof obj.get === 'function' \n        && typeof obj.set === 'function' \n        && typeof obj.remove === 'function'\n}","/**\n * 异步执行一组Promise，并返回所有Promise的结果\n * \n * 该函数会处理所有Promise，无论成功或失败都会返回结果。\n * 如果环境支持Promise.allSettled，则直接使用；\n * 否则会手动包装每个Promise，确保不会抛出未捕获的异常。\n * \n * @template T Promise的返回值类型\n * @param {Promise<T>[]} promises 要执行的Promise数组\n * @returns {Promise<(T | Error)[]>} 返回一个Promise，resolve为包含所有结果的数组，\n *                                   每个元素要么是Promise的返回值，要么是Error对象\n */\nexport async function execAsyncs<T=any>(promises: Promise<T>[]): Promise<(T | Error)[]> {\n    // if (typeof Promise.allSettled === 'function') { // 更安全地检查Promise.allSettled是否存在      \n    const results = await Promise.allSettled(promises);\n    return results.map(result => \n        result.status === 'fulfilled' ? result.value : result.reason\n    );\n    // } else {\n    //     // 先包装每个Promise，统一处理错误\n    //     const wrappedPromises = promises.map(promise =>{\n    //         return new Promise<T | Error>(resolve => {\n    //             Promise.resolve(promise)\n    //                 .then(r => resolve(r))\n    //                 .catch(e => resolve(e instanceof Error ? e : new Error(String(e)))); // 确保错误是Error实例            \n    //         });            \n    //     })\n    //     return await Promise.all(wrappedPromises); \n    // }\n}","export function isBrowser():boolean {\n    try{\n    return typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n    }catch{\n        return false\n    }\n}","import type {  VoerkaI18nScope } from \"../scope\"\nimport type { VoerkaI18nLanguage, VoerkaI18nEvents, VoerkaI18nPlugin }  from \"../types\"\nimport { LiteEvent } from \"flex-tools/events/liteEvent\" \nimport { execAsyncs, isI18nScope } from \"../utils\"  \n \n/** \n * 多语言管理类\n * \n * 当导入编译后的多语言文件时(import(\"./languages\"))，会自动生成全局实例VoerkaI18n\n *  \n * VoerkaI18n.languages             // 返回支持的语言列表\n * VoerkaI18n.defaultLanguage       // 默认语言\n * VoerkaI18n.language              // 当前语言\n * VoerkaI18n.change(language)      // 切换到新的语言 \n * \n * \n * VoerkaI18n.on(\"change\",(language)=>{})  // 注册语言切换事件\n * VoerkaI18n.off(\"change\",(language)=>{}) \n * \n * */ \n\nexport class VoerkaI18nManager extends LiteEvent<VoerkaI18nEvents>{\n    __VoerkaI18nManager__ = true\n    static instance?              : VoerkaI18nManager  \n    private _scopes               : VoerkaI18nScope[] = []    \n    private _appScope!            : VoerkaI18nScope \n    \n    constructor(appScope?:VoerkaI18nScope){\n        super()      \n        if(VoerkaI18nManager.instance){\n            return VoerkaI18nManager.instance;\n        }        \n        if(!appScope) throw new Error(\"create VoerkaI18nManager failed, appScope is required\")\n        this._registerAppScope(appScope)                                // 注册应用作用域     \n        this._registerScopes()                                          // 注册所有作用域\n        this._loadPlugins()\n        VoerkaI18nManager.instance = this                               // 加载初始格式化器   \n        // @ts-ignore\n        globalThis.VoerkaI18n = this   \n    }\n    get debug(){return this.scope.debug }  \n    get logger(){ return this.scope.logger! }                            // 日志记录器                        \n    get scopes(){ return this._scopes }                                 // 注册VoerkaI18nScope实例 \n    get activeLanguage(){ return this._appScope.activeLanguage }        // 当前激活语言名称   \n    get defaultLanguage(){ return this._appScope.defaultLanguage }      // 当前默认语言名称   \n    get loader(){ return this._appScope.loader}                         // 默认语言包加载器 \n    get storage(){return this.scope!.storage}\n    get languages(){return this.scope.languages}\n    get scope(){return this._appScope!}\n \n    /**\n     * 注册所有i18nScope作用域。\n     * 该方法会检查全局对象中的 `__VoerkaI18nScopes__` 属性，\n     * 如果该属性存在且为数组，则遍历数组并注册每个作用域。\n     * 这是内部实现细节，不对外暴露。\n     */\n    private _registerScopes() {\n        const scopes = globalThis.__VoerkaI18nScopes__\n        if(scopes && Array.isArray(scopes)){\n            scopes.forEach(scope=>this.register(scope)) \n        }        \n        // @ts-ignore\n        delete globalThis.__VoerkaI18nScopes__\n    }\n    getScope(id:string | undefined | null){\n        return this._scopes.find(scope=>scope.id===id)\n    }\n    private _loadPlugins(){\n        const plugins = globalThis.__VoerkaI18nPlugins__\n        if(plugins && Array.isArray(plugins)){\n            plugins.forEach(plugin=>plugin(this)) \n        }        \n        // @ts-ignore\n        delete globalThis.__VoerkaI18nPlugins__\n    }    \n\n    registerPlugin(plugin:VoerkaI18nPlugin){\n        if(typeof(plugin)==='function'){\n            plugin(this)\n        }\n    }\n\n    /** \n     * 将应用Scope注册到管理器中 \n     */\n    private _registerAppScope(scope:VoerkaI18nScope){ \n        this._scopes.push(scope)\n        this._appScope = scope\n        this.logger.debug(\"VoerkaI18nScope<\"+scope.id+\"> is registered as appScope\")\n        this.emitAsync(\"init\",()=>{ \n            return this._appScope.activeLanguage\n        },true)\n    }\n    /**\n     * \n     * 注册一个新的作用域\n     * \n     * 每一个库均对应一个作用域，每个作用域可以有多个语言包，且对应一个翻译函数\n     * 除了默认语言外，其他语言采用动态加载的方式\n     * \n     * @param {*} scope \n     */\n    register(scope:VoerkaI18nScope){ \n        if(!isI18nScope(scope)) throw new Error(\"register scope failed, invalid scope\")\n        this._scopes.push(scope)     \n        scope.bind(this)            \n        this.logger.debug(`VoerkaI18nScope<${scope.id}> is registered`)\n    }    \n    /**\n     *  切换语言\n     */\n    async change(language:string){\n        await this._refreshScopes(language)          // 刷新所有作用域    \n        const activeLanguage = this._appScope.activeLanguage                                 \n        this.scope.saveLanguage()                    // 保存语言配置到存储器        \n        this.emit(\"change\",activeLanguage,true)     \n        this.logger.info(\"language changed to: \"+activeLanguage)\n        return activeLanguage\n    } \n     /**\n     * 当切换语言时调用此方法来加载更新语言包\n     * @param {*} newLanguage \n     */\n     private async _refreshScopes(newLanguage:string){       \n        const scopeRefreshers = this._scopes.map(scope=>scope.refresh(newLanguage))\n        await execAsyncs(scopeRefreshers)         \n    }     \n\n    /**\n     * 刷新所有作用域\n     */\n    async refresh(){\n        return await this._refreshScopes(this.activeLanguage)\n    }\n    /**\n     * 等待管理器初始化完成\n     *  \n     * @returns \n     */\n    ready(callback:(language:string)=>void,timeout?:number){\n        return this.waitFor(\"ready\",timeout).then((lang)=>{\n            if(callback) callback.call(this,lang)\n        })\n    } \n    /**\n     * 清除所有作用域的翻译补丁信息\n     */\n    clearPatchedMessages(){\n        this._scopes.forEach(scope=>scope.clearPatchedMessages())\n    }\n    /**\n\t * 返回是否存在指定的语言\n\t * @param {*} language 语言名称\n\t * @returns\n\t */\n\thasLanguage(language:string) {\n\t\treturn this.languages.findIndex((lang:VoerkaI18nLanguage) => lang.name == language) != -1;\n\t}\n    clearLanguage(){\n        this.scope.clearLanguage()\n    }\n    saveLanguage(){\n        this.scope.saveLanguage()\n    }\n    restoreLanguage(){\n        this.scope.restoreLanguage()        \n    }\n\n} \n ","import { IVoerkaI18nStorage } from \"./types\" \n\nexport const LocalStorage = {\n    get(key:string){\n        if(globalThis.localStorage){\n            return globalThis.localStorage.getItem(key)\n        }\n    },\n    set(key:string,value:any){\n        if(globalThis.localStorage){\n            globalThis.localStorage.setItem(key,value)\n        }\n    },\n    remove(key:string){\n        if(globalThis.localStorage){\n            globalThis.localStorage.removeItem(key)\n        }\n    }\n} as IVoerkaI18nStorage","import { LocalStorage } from \"./storage\"\nexport const DefaultFallbackLanguage = 'en'    \n\n\nexport const DefaultLanguageSettings =  [\n    {name: \"zh\",title: \"中文\",default:true,active:true},\n    {name: \"en\",title: \"英文\"}\n] \n\nexport const DataTypes =  [\"String\",\"Number\",\"Boolean\",\"Object\",\"Array\",\"Function\",\"Error\",\"Symbol\",\"RegExp\",\"Date\",\"Null\",\"Undefined\",\"Set\",\"Map\",\"WeakSet\",\"WeakMap\"]\n\nexport const VOERKAI18N_FORMATTER = Symbol(\"VoerkaI18nFormatter\")\n\n\nexport const VOERKAI18N_FORMATTER_BUILDER = Symbol(\"VoerkaI18nFormatterBuilder\")\n// 默认语言配置\nexport const defaultLanguageSettings = {  \n    debug          : true,\n    storage        : LocalStorage,\n    languages      : [\n        { name: \"zh\", title: \"中文\", default: true, active: true },\n        { name: \"en\", title: \"英文\" }\n    ]\n}  \n\n\nexport const TEleClassName   = \"vt-msg\"\nexport const TEleMsgIdAttr   = \"data-id\"\nexport const TEleScopeIdAttr = \"data-scope\"","/**\n * Utility function that works like `Object.apply`, but copies getters and setters properly as well.  Additionally gives\n * the option to exclude properties by name.\n */\nconst copyProps = (dest, src, exclude = []) => {\n    const props = Object.getOwnPropertyDescriptors(src);\n    for (let prop of exclude)\n        delete props[prop];\n    Object.defineProperties(dest, props);\n};\n/**\n * Returns the full chain of prototypes up until Object.prototype given a starting object.  The order of prototypes will\n * be closest to farthest in the chain.\n */\nconst protoChain = (obj, currentChain = [obj]) => {\n    const proto = Object.getPrototypeOf(obj);\n    if (proto === null)\n        return currentChain;\n    return protoChain(proto, [...currentChain, proto]);\n};\n/**\n * Identifies the nearest ancestor common to all the given objects in their prototype chains.  For most unrelated\n * objects, this function should return Object.prototype.\n */\nconst nearestCommonProto = (...objs) => {\n    if (objs.length === 0)\n        return undefined;\n    let commonProto = undefined;\n    const protoChains = objs.map(obj => protoChain(obj));\n    while (protoChains.every(protoChain => protoChain.length > 0)) {\n        const protos = protoChains.map(protoChain => protoChain.pop());\n        const potentialCommonProto = protos[0];\n        if (protos.every(proto => proto === potentialCommonProto))\n            commonProto = potentialCommonProto;\n        else\n            break;\n    }\n    return commonProto;\n};\n/**\n * Creates a new prototype object that is a mixture of the given prototypes.  The mixing is achieved by first\n * identifying the nearest common ancestor and using it as the prototype for a new object.  Then all properties/methods\n * downstream of this prototype (ONLY downstream) are copied into the new object.\n *\n * The resulting prototype is more performant than softMixProtos(...), as well as ES5 compatible.  However, it's not as\n * flexible as updates to the source prototypes aren't captured by the mixed result.  See softMixProtos for why you may\n * want to use that instead.\n */\nconst hardMixProtos = (ingredients, constructor, exclude = []) => {\n    var _a;\n    const base = (_a = nearestCommonProto(...ingredients)) !== null && _a !== void 0 ? _a : Object.prototype;\n    const mixedProto = Object.create(base);\n    // Keeps track of prototypes we've already visited to avoid copying the same properties multiple times.  We init the\n    // list with the proto chain below the nearest common ancestor because we don't want any of those methods mixed in\n    // when they will already be accessible via prototype access.\n    const visitedProtos = protoChain(base);\n    for (let prototype of ingredients) {\n        let protos = protoChain(prototype);\n        // Apply the prototype chain in reverse order so that old methods don't override newer ones.\n        for (let i = protos.length - 1; i >= 0; i--) {\n            let newProto = protos[i];\n            if (visitedProtos.indexOf(newProto) === -1) {\n                copyProps(mixedProto, newProto, ['constructor', ...exclude]);\n                visitedProtos.push(newProto);\n            }\n        }\n    }\n    mixedProto.constructor = constructor;\n    return mixedProto;\n};\nconst unique = (arr) => arr.filter((e, i) => arr.indexOf(e) == i);\n\n/**\n * Finds the ingredient with the given prop, searching in reverse order and breadth-first if searching ingredient\n * prototypes is required.\n */\nconst getIngredientWithProp = (prop, ingredients) => {\n    const protoChains = ingredients.map(ingredient => protoChain(ingredient));\n    // since we search breadth-first, we need to keep track of our depth in the prototype chains\n    let protoDepth = 0;\n    // not all prototype chains are the same depth, so this remains true as long as at least one of the ingredients'\n    // prototype chains has an object at this depth\n    let protosAreLeftToSearch = true;\n    while (protosAreLeftToSearch) {\n        // with the start of each horizontal slice, we assume this is the one that's deeper than any of the proto chains\n        protosAreLeftToSearch = false;\n        // scan through the ingredients right to left\n        for (let i = ingredients.length - 1; i >= 0; i--) {\n            const searchTarget = protoChains[i][protoDepth];\n            if (searchTarget !== undefined && searchTarget !== null) {\n                // if we find something, this is proof that this horizontal slice potentially more objects to search\n                protosAreLeftToSearch = true;\n                // eureka, we found it\n                if (Object.getOwnPropertyDescriptor(searchTarget, prop) != undefined) {\n                    return protoChains[i][0];\n                }\n            }\n        }\n        protoDepth++;\n    }\n    return undefined;\n};\n/**\n * \"Mixes\" ingredients by wrapping them in a Proxy.  The optional prototype argument allows the mixed object to sit\n * downstream of an existing prototype chain.  Note that \"properties\" cannot be added, deleted, or modified.\n */\nconst proxyMix = (ingredients, prototype = Object.prototype) => new Proxy({}, {\n    getPrototypeOf() {\n        return prototype;\n    },\n    setPrototypeOf() {\n        throw Error('Cannot set prototype of Proxies created by ts-mixer');\n    },\n    getOwnPropertyDescriptor(_, prop) {\n        return Object.getOwnPropertyDescriptor(getIngredientWithProp(prop, ingredients) || {}, prop);\n    },\n    defineProperty() {\n        throw new Error('Cannot define new properties on Proxies created by ts-mixer');\n    },\n    has(_, prop) {\n        return getIngredientWithProp(prop, ingredients) !== undefined || prototype[prop] !== undefined;\n    },\n    get(_, prop) {\n        return (getIngredientWithProp(prop, ingredients) || prototype)[prop];\n    },\n    set(_, prop, val) {\n        const ingredientWithProp = getIngredientWithProp(prop, ingredients);\n        if (ingredientWithProp === undefined)\n            throw new Error('Cannot set new properties on Proxies created by ts-mixer');\n        ingredientWithProp[prop] = val;\n        return true;\n    },\n    deleteProperty() {\n        throw new Error('Cannot delete properties on Proxies created by ts-mixer');\n    },\n    ownKeys() {\n        return ingredients\n            .map(Object.getOwnPropertyNames)\n            .reduce((prev, curr) => curr.concat(prev.filter(key => curr.indexOf(key) < 0)));\n    },\n});\n/**\n * Creates a new proxy-prototype object that is a \"soft\" mixture of the given prototypes.  The mixing is achieved by\n * proxying all property access to the ingredients.  This is not ES5 compatible and less performant.  However, any\n * changes made to the source prototypes will be reflected in the proxy-prototype, which may be desirable.\n */\nconst softMixProtos = (ingredients, constructor) => proxyMix([...ingredients, { constructor }]);\n\nconst settings = {\n    initFunction: null,\n    staticsStrategy: 'copy',\n    prototypeStrategy: 'copy',\n    decoratorInheritance: 'deep',\n};\n\n// Keeps track of constituent classes for every mixin class created by ts-mixer.\nconst mixins = new WeakMap();\nconst getMixinsForClass = (clazz) => mixins.get(clazz);\nconst registerMixins = (mixedClass, constituents) => mixins.set(mixedClass, constituents);\nconst hasMixin = (instance, mixin) => {\n    if (instance instanceof mixin)\n        return true;\n    const constructor = instance.constructor;\n    const visited = new Set();\n    let frontier = new Set();\n    frontier.add(constructor);\n    while (frontier.size > 0) {\n        // check if the frontier has the mixin we're looking for.  if not, we can say we visited every item in the frontier\n        if (frontier.has(mixin))\n            return true;\n        frontier.forEach((item) => visited.add(item));\n        // build a new frontier based on the associated mixin classes and prototype chains of each frontier item\n        const newFrontier = new Set();\n        frontier.forEach((item) => {\n            var _a;\n            const itemConstituents = (_a = mixins.get(item)) !== null && _a !== void 0 ? _a : protoChain(item.prototype)\n                .map((proto) => proto.constructor)\n                .filter((item) => item !== null);\n            if (itemConstituents)\n                itemConstituents.forEach((constituent) => {\n                    if (!visited.has(constituent) && !frontier.has(constituent))\n                        newFrontier.add(constituent);\n                });\n        });\n        // we have a new frontier, now search again\n        frontier = newFrontier;\n    }\n    // if we get here, we couldn't find the mixin anywhere in the prototype chain or associated mixin classes\n    return false;\n};\n\nconst mergeObjectsOfDecorators = (o1, o2) => {\n    var _a, _b;\n    const allKeys = unique([...Object.getOwnPropertyNames(o1), ...Object.getOwnPropertyNames(o2)]);\n    const mergedObject = {};\n    for (let key of allKeys)\n        mergedObject[key] = unique([...((_a = o1 === null || o1 === void 0 ? void 0 : o1[key]) !== null && _a !== void 0 ? _a : []), ...((_b = o2 === null || o2 === void 0 ? void 0 : o2[key]) !== null && _b !== void 0 ? _b : [])]);\n    return mergedObject;\n};\nconst mergePropertyAndMethodDecorators = (d1, d2) => {\n    var _a, _b, _c, _d;\n    return ({\n        property: mergeObjectsOfDecorators((_a = d1 === null || d1 === void 0 ? void 0 : d1.property) !== null && _a !== void 0 ? _a : {}, (_b = d2 === null || d2 === void 0 ? void 0 : d2.property) !== null && _b !== void 0 ? _b : {}),\n        method: mergeObjectsOfDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.method) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.method) !== null && _d !== void 0 ? _d : {}),\n    });\n};\nconst mergeDecorators = (d1, d2) => {\n    var _a, _b, _c, _d, _e, _f;\n    return ({\n        class: unique([...(_a = d1 === null || d1 === void 0 ? void 0 : d1.class) !== null && _a !== void 0 ? _a : [], ...(_b = d2 === null || d2 === void 0 ? void 0 : d2.class) !== null && _b !== void 0 ? _b : []]),\n        static: mergePropertyAndMethodDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.static) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.static) !== null && _d !== void 0 ? _d : {}),\n        instance: mergePropertyAndMethodDecorators((_e = d1 === null || d1 === void 0 ? void 0 : d1.instance) !== null && _e !== void 0 ? _e : {}, (_f = d2 === null || d2 === void 0 ? void 0 : d2.instance) !== null && _f !== void 0 ? _f : {}),\n    });\n};\nconst decorators = new Map();\nconst findAllConstituentClasses = (...classes) => {\n    var _a;\n    const allClasses = new Set();\n    const frontier = new Set([...classes]);\n    while (frontier.size > 0) {\n        for (let clazz of frontier) {\n            const protoChainClasses = protoChain(clazz.prototype).map(proto => proto.constructor);\n            const mixinClasses = (_a = getMixinsForClass(clazz)) !== null && _a !== void 0 ? _a : [];\n            const potentiallyNewClasses = [...protoChainClasses, ...mixinClasses];\n            const newClasses = potentiallyNewClasses.filter(c => !allClasses.has(c));\n            for (let newClass of newClasses)\n                frontier.add(newClass);\n            allClasses.add(clazz);\n            frontier.delete(clazz);\n        }\n    }\n    return [...allClasses];\n};\nconst deepDecoratorSearch = (...classes) => {\n    const decoratorsForClassChain = findAllConstituentClasses(...classes)\n        .map(clazz => decorators.get(clazz))\n        .filter(decorators => !!decorators);\n    if (decoratorsForClassChain.length == 0)\n        return {};\n    if (decoratorsForClassChain.length == 1)\n        return decoratorsForClassChain[0];\n    return decoratorsForClassChain.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst directDecoratorSearch = (...classes) => {\n    const classDecorators = classes.map(clazz => getDecoratorsForClass(clazz));\n    if (classDecorators.length === 0)\n        return {};\n    if (classDecorators.length === 1)\n        return classDecorators[0];\n    return classDecorators.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst getDecoratorsForClass = (clazz) => {\n    let decoratorsForClass = decorators.get(clazz);\n    if (!decoratorsForClass) {\n        decoratorsForClass = {};\n        decorators.set(clazz, decoratorsForClass);\n    }\n    return decoratorsForClass;\n};\nconst decorateClass = (decorator) => ((clazz) => {\n    const decoratorsForClass = getDecoratorsForClass(clazz);\n    let classDecorators = decoratorsForClass.class;\n    if (!classDecorators) {\n        classDecorators = [];\n        decoratorsForClass.class = classDecorators;\n    }\n    classDecorators.push(decorator);\n    return decorator(clazz);\n});\nconst decorateMember = (decorator) => ((object, key, ...otherArgs) => {\n    var _a, _b, _c;\n    const decoratorTargetType = typeof object === 'function' ? 'static' : 'instance';\n    const decoratorType = typeof object[key] === 'function' ? 'method' : 'property';\n    const clazz = decoratorTargetType === 'static' ? object : object.constructor;\n    const decoratorsForClass = getDecoratorsForClass(clazz);\n    const decoratorsForTargetType = (_a = decoratorsForClass === null || decoratorsForClass === void 0 ? void 0 : decoratorsForClass[decoratorTargetType]) !== null && _a !== void 0 ? _a : {};\n    decoratorsForClass[decoratorTargetType] = decoratorsForTargetType;\n    let decoratorsForType = (_b = decoratorsForTargetType === null || decoratorsForTargetType === void 0 ? void 0 : decoratorsForTargetType[decoratorType]) !== null && _b !== void 0 ? _b : {};\n    decoratorsForTargetType[decoratorType] = decoratorsForType;\n    let decoratorsForKey = (_c = decoratorsForType === null || decoratorsForType === void 0 ? void 0 : decoratorsForType[key]) !== null && _c !== void 0 ? _c : [];\n    decoratorsForType[key] = decoratorsForKey;\n    // @ts-ignore: array is type `A[] | B[]` and item is type `A | B`, so technically a type error, but it's fine\n    decoratorsForKey.push(decorator);\n    // @ts-ignore\n    return decorator(object, key, ...otherArgs);\n});\nconst decorate = (decorator) => ((...args) => {\n    if (args.length === 1)\n        return decorateClass(decorator)(args[0]);\n    return decorateMember(decorator)(...args);\n});\n\nfunction Mixin(...constructors) {\n    var _a, _b, _c;\n    const prototypes = constructors.map(constructor => constructor.prototype);\n    // Here we gather up the init functions of the ingredient prototypes, combine them into one init function, and\n    // attach it to the mixed class prototype.  The reason we do this is because we want the init functions to mix\n    // similarly to constructors -- not methods, which simply override each other.\n    const initFunctionName = settings.initFunction;\n    if (initFunctionName !== null) {\n        const initFunctions = prototypes\n            .map(proto => proto[initFunctionName])\n            .filter(func => typeof func === 'function');\n        const combinedInitFunction = function (...args) {\n            for (let initFunction of initFunctions)\n                initFunction.apply(this, args);\n        };\n        const extraProto = { [initFunctionName]: combinedInitFunction };\n        prototypes.push(extraProto);\n    }\n    function MixedClass(...args) {\n        for (const constructor of constructors)\n            // @ts-ignore: potentially abstract class\n            copyProps(this, new constructor(...args));\n        if (initFunctionName !== null && typeof this[initFunctionName] === 'function')\n            this[initFunctionName].apply(this, args);\n    }\n    MixedClass.prototype = settings.prototypeStrategy === 'copy'\n        ? hardMixProtos(prototypes, MixedClass)\n        : softMixProtos(prototypes, MixedClass);\n    Object.setPrototypeOf(MixedClass, settings.staticsStrategy === 'copy'\n        ? hardMixProtos(constructors, null, ['prototype'])\n        : proxyMix(constructors, Function.prototype));\n    let DecoratedMixedClass = MixedClass;\n    if (settings.decoratorInheritance !== 'none') {\n        const classDecorators = settings.decoratorInheritance === 'deep'\n            ? deepDecoratorSearch(...constructors)\n            : directDecoratorSearch(...constructors);\n        for (let decorator of (_a = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.class) !== null && _a !== void 0 ? _a : []) {\n            const result = decorator(DecoratedMixedClass);\n            if (result) {\n                DecoratedMixedClass = result;\n            }\n        }\n        applyPropAndMethodDecorators((_b = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.static) !== null && _b !== void 0 ? _b : {}, DecoratedMixedClass);\n        applyPropAndMethodDecorators((_c = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.instance) !== null && _c !== void 0 ? _c : {}, DecoratedMixedClass.prototype);\n    }\n    registerMixins(DecoratedMixedClass, constructors);\n    return DecoratedMixedClass;\n}\nconst applyPropAndMethodDecorators = (propAndMethodDecorators, target) => {\n    const propDecorators = propAndMethodDecorators.property;\n    const methodDecorators = propAndMethodDecorators.method;\n    if (propDecorators)\n        for (let key in propDecorators)\n            for (let decorator of propDecorators[key])\n                decorator(target, key);\n    if (methodDecorators)\n        for (let key in methodDecorators)\n            for (let decorator of methodDecorators[key])\n                decorator(target, key, Object.getOwnPropertyDescriptor(target, key));\n};\n/**\n * A decorator version of the `Mixin` function.  You'll want to use this instead of `Mixin` for mixing generic classes.\n */\nconst mix = (...ingredients) => decoratedClass => {\n    // @ts-ignore\n    const mixedClass = Mixin(...ingredients.concat([decoratedClass]));\n    Object.defineProperty(mixedClass, 'name', {\n        value: decoratedClass.name,\n        writable: false,\n    });\n    return mixedClass;\n};\n\nexport { Mixin, decorate, hasMixin, mix, settings };\n","/**\n * \n *  事件发射器混入\n * \n */ \nimport { VoerkaI18nEvents, VoerkaI18nEventListener, VoerkaI18nEventSubscriber } from \"@/types\"\nimport type { VoerkaI18nScope } from \"..\"  \nimport { LiteEvent, LiteEventListener,LiteEventSubscriber } from \"flex-tools/events/liteEvent\" \n\n\n\n \nexport class EventEmitterMixin{\n    private _eventEmitter!: LiteEvent<VoerkaI18nEvents>\n    protected _getEventEmitter(this:VoerkaI18nScope):LiteEvent<VoerkaI18nEvents>{\n        if(this.attached){\n            return this.manager\n        }else{\n            if(!this._eventEmitter) this._eventEmitter = new LiteEvent<VoerkaI18nEvents>()\n            return this._eventEmitter\n        }\n    } \n\t// 以下方法引用全局VoerkaI18n实例的方法\n\ton(this:VoerkaI18nScope,event: keyof VoerkaI18nEvents,callback:VoerkaI18nEventListener) {\n        return this._getEventEmitter().on(event,callback) as VoerkaI18nEventSubscriber\n    }\n    once(this:VoerkaI18nScope,event: keyof VoerkaI18nEvents,callback:VoerkaI18nEventListener) {\n        return this._getEventEmitter().once(event,callback)  as VoerkaI18nEventSubscriber\n    }\n\toff(this:VoerkaI18nScope,event: keyof VoerkaI18nEvents,callback:VoerkaI18nEventListener) {\n        return this._getEventEmitter().off(event,callback); \n    }\n    waitFor(this:VoerkaI18nScope,event: keyof VoerkaI18nEvents,timeout?:number):Promise<any>{\n        return this._getEventEmitter().waitFor(event,timeout);\n    }\n    async emit(this:VoerkaI18nScope,event: keyof VoerkaI18nEvents,payload?:any,retain?:boolean):Promise<any> {\n        return await this._getEventEmitter().emitAsync(event,payload,retain);\n    }\n}\n\n\n ","export function isFunction(fn:any):fn is Function{\n    return fn && typeof(fn)==\"function\"\n}","/**\n * 返回是否原始{}\n * @param obj\n * @returns {boolean}\n */\nexport function isPlainObject(obj:any):boolean{\n    if (typeof obj !== 'object' || obj === null) return false;\n    var proto = Object.getPrototypeOf(obj);\n    if (proto === null) return true;\n    var baseProto = proto;\n    while (Object.getPrototypeOf(baseProto) !== null) {\n        baseProto = Object.getPrototypeOf(baseProto);\n    }\n    return proto === baseProto;\n}\n","/**\n *  生成一个异步控制信号\n *\n *  当满足condition时会进行等待\n *\n *  定义一个异步等待信号\n *  let signal = asyncSignal()\n *\n *  //\n *  然后在需要等待的地方\n *  await signal()\n *  await signal(100)  代表信号会自动超时resolve\n *  await signal(100,new Error())  代表信号会自动超时reject\n *\n *  可以手动resolve或reject该signal\n *  当要结束等待时调用 signal.resolve()\n *  当等待出错时调用 signal.reject()\n *\n * 可以传入一个condition函数，当signal.resolve时，会同时进行调用，该函数必须返回true，否则会继承等待\n * 超时时不会调用\n * let signal = asyncSignal(()=>{})\n *\n *  当signal使用一次后，如果需要再次使用，则需要signal.reset()复位一下，然后就可以\n *   await signal()\n *\n *  @param {Function} constraint 约束函数，指定当resolve或reject时，需要同时满足这个约束函数返回true才会进行resolve或reject\n *\n */ \n\n \n export class AsyncSignalAbort extends Error {}\n \n export interface IAsyncSignal {\n    (timeout?:number,returns?:any):Awaited<Promise<any>>\n    id:number\n    reset(): void\n    reject(e?:Error | string):void\n    resolve(result?: any):void\n    destroy():void\n    isResolved():boolean\n    isRejected():boolean\n    isPending():boolean\n }\n\n\nlet AsyncSignalId = 0\n\n/**\n * 生成一个异步信号\n * \n * const signal = asyncSignal()\n * const signal = asyncSignal(()=>x==1,{timeout:10})\n * \n * await  signal(timeout)\n * signal.resolve()\n * signal.reject()\n * signal.destroy()\n *\n * @param {function} constraint\n *      当调用signal.resolve()时，还需要满足额外的约束条件，仅当constraint返回true，则signal才可以进行真正resolve\n * @returns {function}\n */\n\nexport function asyncSignal(constraint?:Function,options:{timeout:number}={timeout:0}) : IAsyncSignal {     \n     let isResolved:boolean = false,isRejected:boolean = false,isPending:boolean = false\n     let resolveSignal:Function, rejectSignal:Function, timeoutId:any = 0\n     let objPromise:Promise<any> | null\n     let signalId = ++AsyncSignalId\n\n     // 重置信号，可以再次复用\n     const reset = function () {\n         clearTimeout(timeoutId)\n         isResolved = false\n         isRejected = false\n         isPending = false\n         objPromise = new Promise((resolve, reject) => {\n             resolveSignal = resolve\n             rejectSignal = reject\n         })\n     }\n     \n     reset()\n\n    async function signal(timeout:number =0 , returns?:any){\n         // 如果constraint返回的true，代表不需要等待\n         if (typeof (constraint) === \"function\" && constraint()) {\n             isResolved = true\n             return\n         }\n\n         // 如果信号上次已经完成了，则需要重置信号\n         if (isResolved || isRejected) reset()\n \n         // 指定超时功能\n         if (timeout > 0) {\n             timeoutId = setTimeout(() => {\n                 isResolved = true\n                 try {\n                     if (returns instanceof Error) {\n                         rejectSignal(returns)\n                     } else {\n                         resolveSignal(returns)\n                     }\n                 } catch {\n                 }\n             }, timeout)\n         }\n         isPending = true\n         return objPromise\n     }\n     signal.id = signalId\n     signal.resolve = (result?:any) => {        \n         clearTimeout(timeoutId)\n         if(!isPending) return \n         if (isResolved || isRejected) return\n         // 注意：是否真正resolve还受约束条件的约束，只有满足约束条件时才会真正resolve\n         if (typeof (constraint) === \"function\" && constraint()) {\n             if(constraint()){\n                 resolveSignal(result)\n             }else{\n                // 如果不满足约束条件，则静默返回，可以通过signal.isFulfilled()来判断是否完成\n                return    \n             }\n         } else {\n             resolveSignal(result)\n         }\n         isResolved = true\n     } \n\n     signal.reject = (e?:Error | string) => {        \n         clearTimeout(timeoutId)\n         if(!isPending) return \n         if (isResolved || isRejected) return\n         rejectSignal(typeof(e)==='string' ? new Error(e) : ((e instanceof Error) ? e : new Error()))\n         isRejected = true\n     }\n \n     // 信号被销毁时，产生一个中止错误，信号的使用者可以据此进行善后处理\n     signal.destroy = () => {\n        clearTimeout(timeoutId)\n        if(isPending) rejectSignal(new AsyncSignalAbort())   \n        isResolved =false\n        isPending = false         \n        isRejected =false\n        objPromise = null\n     }\n\n     signal.reset = reset\n     signal.isResolved = () => isResolved\n     signal.isRejected = () => isRejected \n     signal.isPending = () => isPending \n     return signal as unknown as IAsyncSignal\n }\n \n /**\n  *   管理多个异步信号，并确保能正确resolve和reject\n  *\n  *\n  *\n  *  let signals = new AsyncSignalManager({\n  *      timeout:60 * 1000,               // 所有信号均在1分钟后自动超时，0代表不设超时，并且此值应该大于signal(timeout)时指定的超时值\n  *  })\n  *\n  *  signal = signals.create() 创建一个asyncSignal\n  *\n  *  signals.destroy()   销毁所有异步信号\n  *  signal.resolve()    resolve所有异步信号\n  *  signal.reject()     reject所有异步信号\n  *  signal.reset()      reset所有异步信号\n  *\n  *\n  */\n  \n\n export class AsyncSignalManager {\n    #_signals:Record<string,IAsyncSignal> = {}\n    constructor(public options?:{timeout: number} ) {\n         this.options = Object.assign({\n             timeout:0,// 为所有异步信号提供一个默认的超时时间，当信号超时未resolve时，会自动进行reject(timeout)\n         },options)\n     }\n     get signals():Record<string,IAsyncSignal> {return this.#_signals} \n \n     /**\n      * 创建新的异步信号\n      * @param constraint         额外的约束条件\n      * @param id\n      */\n     create(constraint?:Function){\n         let signal = asyncSignal(constraint,this.options)\n         this.#_signals[signal.id] = signal\n         return signal\n     }\n \n     /**\n      * 销毁指定的或者所有异步信号\n      *\n      *  destroy(id)\n      *  destroy([id,id,...])\n      *  destroy()                   // 销毁所有\n      * @param {string} id           可选的信号id,如果未指定则删除所有的信号\n      *\n      */ \n      \n    destroy(id:number | number[] | undefined) {\n         let ids = Array.isArray(id) ? id : (id===undefined ? Object.keys(this.#_signals) : [id])\n         for(let id of ids){\n             if(id in this.#_signals){\n                 try{\n                     this.#_signals[id].destroy()\n                     delete this.#_signals[id]\n                 }catch (e) { }\n             }\n         }\n    }\n    resolve(){\n         let args = arguments\n         Object.values(this.#_signals).forEach(signal=>signal.resolve(args))\n    }\n    reject(e:Error | string){\n         Object.values(this.#_signals).forEach(signal=>signal.reject(e))\n    }\n    reset(){\n         Object.values(this.#_signals).forEach(signal=>signal.reset())\n    }\n } \n\n ","import type { VoerkaI18nLanguageMessages } from \"@/types\";\nimport type { VoerkaI18nScope } from \"..\";\nimport { isFunction  } from \"flex-tools/typecheck/isFunction\";\nimport { isPlainObject } from \"flex-tools/typecheck/isPlainObject\"; \nimport { IAsyncSignal,asyncSignal } from \"flex-tools/async/asyncSignal\";\n\n/**\n * 语言包补丁\n * \n */\nexport class PatchMessageMixin{    \n\tprotected _patching:IAsyncSignal | undefined\n\tprivate _getPatchKey(this:VoerkaI18nScope,language:string){\n\t\treturn `voerkai18n_${this.id}_${language}_patched_messages`\n\t}\n    /**\n     * 清除保存在本地的补丁语言包\n     * @param language \n     */\n    clearPatchedMessages(this:VoerkaI18nScope,language?:string) {\n        if(this.storage){\n            let langs = language ? [language] : this.languages.map(language=>language.name);\n            for(let lang of langs){\n                this.storage.remove(this._getPatchKey(lang));\n            }\n        }\n    } \n\t/**\n\t * 当指定了默认语言包加载器后，会从服务加载语言补丁包来更新本地的语言包\n\t *\n\t * 补丁包会自动存储到本地的LocalStorage中\n\t *\n\t * @param {*} messages\n\t * @param {*} language\n\t * @returns {Promise<number>} 返回补丁包的数量\n\t */\n\tprotected async _patch(this:VoerkaI18nScope, language?:string){\n\t\tthis._patching = asyncSignal();\n\t\tif (!language) language = this.activeLanguage;\n      \t// 1. 从本地存储中恢复补丁\n        this._restorePatchedMessages(this.activeMessages, language); \n\t\t// 2. 从远程加载语言包补丁\t\t\n\t\ttry {\n\t\t\tif (isFunction(this.loader)){\n\t\t\t\tconst pachedMessages = (await this._loadMessagesFromLoader(language)) as unknown as VoerkaI18nLanguageMessages;\n\t\t\t\tif(isPlainObject(pachedMessages)){\n\t\t\t\t\tObject.assign(this._activeMessages, pachedMessages);\n\t\t\t\t\tthis._setPatchedMessages(pachedMessages, language);\n\t\t\t\t\tthis.emit('patched',{ language:language,scope:this.id })\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t}catch (e:any) {\n\t\t\tthis.logger.warn(`从远程加载语言补丁包<${language}>时出错: ${e.stack}(scope=${this.id})`);\n\t\t}finally{\n\t\t\tthis._patching?.resolve()\n\t\t\tthis._patching = undefined\n\t\t}\n\t}\n\t/**\n\t * 从本地存储中读取语言包补丁合并到当前语言包中\n\t */\n\tprotected _restorePatchedMessages(this:VoerkaI18nScope,messages:VoerkaI18nLanguageMessages,language:string) {\n\t\tconst patchedMessages = this._getPatchedMessages(language);\n\t\tif (isPlainObject(patchedMessages)){\n            Object.assign(messages, patchedMessages);\n            this.emit('restore',{language,scope:this.id})\n            this.logger.debug(`成功恢复补丁语言包<${language}>(scope=${this.id})`);\n\t\t}\n\t}\n\t/**\n\t * 将读取的补丁包保存到本地的LocalStorage中\n\t *\n\t * 为什么要保存到本地的LocalStorage中？\n\t *\n\t * 因为默认语言是静态嵌入到源码中的，而加载语言包补丁是延后异步的，\n\t * 当应用启动第一次就会渲染出来的是没有打过补丁的内容。\n\t *\n\t * - 如果还需要等待从服务器加载语言补丁合并后再渲染会影响速度\n\t * - 如果不等待从服务器加载语言补丁就渲染，则会先显示未打补丁的内容，然后在打完补丁后再对应用进行重新渲染生效\n\t *   这明显不是个好的方式\n\t *\n\t * 因此，采用的方式是：\n\t * - 加载语言包补丁后，将之保存到到本地的LocalStorage中\n\t * - 当应用加载时会查询是否存在补丁，如果存在就会合并渲染\n\t *\n\t * @param {*} messages\n\t */\n\tprotected _setPatchedMessages(this:VoerkaI18nScope,messages:VoerkaI18nLanguageMessages, language:string) {\n        if(!this.attached && !this.storage) return \n\t\ttry {\n            this.storage && this.storage.set(this._getPatchKey(language),JSON.stringify(messages));\n\t\t} catch (e:any) {\n\t\t\tthis.logger.error(`保存语言包补丁(${language})时出错: ${e.stack}(scope=${this.id})`);\n\t\t}\n\t}\n\n\t/**\n\t * 从本地缓存中读取补丁语言包\n\t * @param {*} language\n\t * @returns\n\t */\n\tprotected _getPatchedMessages(this:VoerkaI18nScope,language:string) {\n\t\ttry {\n            if(this.storage && this.options.cachePatch){\n                return this.storage.get(this._getPatchKey(language)) \n            }else{\n                return {};\n            }\n\t\t} catch (e:any) {\n            this.logger.error(`读取语言包补丁(${language})时出错:${e.stack}(scope=${this.id})`);\n\t\t\treturn {};\n\t\t}\n\t}\n}\n\n","/**\n *  生成一个异步控制信号\n *\n *  当满足condition时会进行等待\n *\n *  定义一个异步等待信号\n *  let signal = asyncSignal()\n *\n *  //\n *  然后在需要等待的地方\n *  await signal()\n *  await signal(100)  代表信号会自动超时resolve\n *  await signal(100,new Error())  代表信号会自动超时reject\n *\n *  可以手动resolve或reject该signal\n *  当要结束等待时调用 signal.resolve()\n *  当等待出错时调用 signal.reject()\n *\n * 可以传入一个condition函数，当signal.resolve时，会同时进行调用，该函数必须返回true，否则会继承等待\n * 超时时不会调用\n * let signal = asyncSignal(()=>{})\n *\n *  当signal使用一次后，如果需要再次使用，则需要signal.reset()复位一下，然后就可以\n *   await signal()\n *\n *  @param {Function} constraint 约束函数，指定当resolve或reject时，需要同时满足这个约束函数返回true才会进行resolve或reject\n *\n */\n\nexport class AsyncSignalAbort extends Error {}\n\nexport interface IAsyncSignal {\n  (timeout?: number, returns?: any): Awaited<Promise<any>>;\n  id: number;\n  reset(): void;\n  reject(e?: Error | string): void;\n  resolve(result?: any): void;\n  destroy(): void;\n  isResolved(): boolean;\n  isRejected(): boolean;\n  isPending(): boolean;\n  on(listener: AsyncSignalListener): void;\n  once(listener: AsyncSignalListener): void;\n  off(listener: AsyncSignalListener): void;\n}\n\nexport type AsyncSignalOptions = {\n  autoReset?: boolean; // 当再次调用时是否自动重置\n  timeout?: number;\n};\n\nlet AsyncSignalId = 0;\n\nexport type AsyncSignalListener = (e?: Error, result?: any) => void;\n\n/**\n * 生成一个异步信号\n *\n * const signal = asyncSignal()\n * const signal = asyncSignal(()=>x==1,{timeout:10})\n *\n * await  signal(timeout)\n * signal.resolve()\n * signal.reject()\n * signal.destroy()\n *\n * @param {function} constraint\n *      当调用signal.resolve()时，还需要满足额外的约束条件，仅当constraint返回true，则signal才可以进行真正resolve\n * @returns {function}\n */\n\nexport function asyncSignal(\n  constraint?: () => boolean,\n  options?: AsyncSignalOptions\n): IAsyncSignal {\n  const opts = Object.assign(\n    {\n      autoReset: false,\n      timeout: 0,\n    },\n    options\n  );\n  let isResolved: boolean = false,\n    isRejected: boolean = false,\n    isPending: boolean = false;\n  let resolveSignal: Function,\n    rejectSignal: Function,\n    timeoutId: any = 0;\n  let objPromise: Promise<any> | null;\n  let signalId = ++AsyncSignalId;\n  const listeners: AsyncSignalListener[] = [];\n  const onceListeners: AsyncSignalListener[] = [];\n\n  // 重置信号，可以再次复用\n  const reset = function () {\n    clearTimeout(timeoutId);\n    isResolved = false;\n    isRejected = false;\n    isPending = false;\n    onceListeners.splice(0, onceListeners.length);\n    objPromise = new Promise((resolve, reject) => {\n      resolveSignal = resolve;\n      rejectSignal = reject;\n    });\n  };\n\n  reset();\n\n  async function signal(timeout: number = opts.timeout, returns?: any) {\n    // 如果constraint返回的true，代表不需要等待\n    if (typeof constraint === \"function\" && constraint()) {\n      isResolved = true;\n      return;\n    }\n\n    // 如果信号上次已经完成了，则需要重置信号\n    if (opts.autoReset && (isResolved || isRejected)) reset();\n\n    // 指定超时功能\n    if (timeout > 0) {\n      timeoutId = setTimeout(() => {\n        isResolved = true;\n        try {\n          if (returns instanceof Error) {\n            executeListeners(returns);\n            rejectSignal(returns);\n          } else {\n            executeListeners(undefined, returns);\n            resolveSignal(returns);\n          }\n        } catch {}\n      }, timeout);\n    }\n    isPending = true;\n    return objPromise;\n  }\n  signal.id = signalId;\n\n  const executeListeners = (e?: Error, result?: any) => {\n    try {\n      listeners.forEach((listener) => {\n        listener(e, result);\n      });\n      onceListeners.forEach((listener) => {\n        listener(e, result);\n      });\n      onceListeners.splice(0, onceListeners.length);\n    } catch {}\n  };\n\n  signal.resolve = (result?: any) => {\n    clearTimeout(timeoutId);\n    if (!isPending) return;\n    if (isResolved || isRejected) return;\n    // 注意：是否真正resolve还受约束条件的约束，只有满足约束条件时才会真正resolve\n    if (typeof constraint === \"function\") {\n      if (constraint()) {\n        executeListeners(undefined, result);\n        resolveSignal(result);\n      } else {\n        // 如果不满足约束条件，则静默返回，可以通过signal.isFulfilled()来判断是否完成\n        return;\n      }\n    } else {\n      executeListeners(undefined, result);\n      resolveSignal(result);\n    }\n    isResolved = true;\n  };\n\n  signal.reject = (e?: Error | string) => {\n    clearTimeout(timeoutId);\n    if (!isPending) return;\n    if (isResolved || isRejected) return;\n    const err =\n      typeof e === \"string\"\n        ? new Error(e)\n        : e instanceof Error\n        ? e\n        : new Error();\n    executeListeners(err);\n    rejectSignal(err);\n    isRejected = true;\n  };\n\n  // 信号被销毁时，产生一个中止错误，信号的使用者可以据此进行善后处理\n  signal.destroy = () => {\n    clearTimeout(timeoutId);\n    if (isPending) rejectSignal(new AsyncSignalAbort());\n    listeners.splice(0, listeners.length);\n    onceListeners.splice(0, onceListeners.length);\n    isResolved = false;\n    isPending = false;\n    isRejected = false;\n    objPromise = null;\n  };\n\n  signal.reset = reset;\n  signal.isResolved = () => isResolved;\n  signal.isRejected = () => isRejected;\n  signal.isPending = () => isPending;\n  signal.on = (listener: (e?: Error) => void) => {\n    listeners.push(listener);\n  };\n  signal.once = (listener: (e?: Error) => void) => {\n    onceListeners.push(listener);\n  };\n  signal.off = (listener: (e?: Error) => void) => {\n    let i = listeners.indexOf(listener);\n    if (i > -1) listeners.splice(i, 1);\n    i = onceListeners.indexOf(listener);\n    if (i > -1) listeners.splice(i, 1);\n  };\n  return signal as unknown as IAsyncSignal;\n}\n\n/**\n *   管理多个异步信号，并确保能正确resolve和reject\n *\n *\n *\n *  let signals = new AsyncSignalManager({\n *      timeout:60 * 1000,               // 所有信号均在1分钟后自动超时，0代表不设超时，并且此值应该大于signal(timeout)时指定的超时值\n *  })\n *\n *  signal = signals.create() 创建一个asyncSignal\n *\n *  signals.destroy()   销毁所有异步信号\n *  signal.resolve()    resolve所有异步信号\n *  signal.reject()     reject所有异步信号\n *  signal.reset()      reset所有异步信号\n *\n *\n */\n\nexport class AsyncSignalManager {\n  #_signals: Record<string, IAsyncSignal> = {};\n  constructor(public options?: { timeout: number }) {\n    this.options = Object.assign(\n      {\n        timeout: 0, // 为所有异步信号提供一个默认的超时时间，当信号超时未resolve时，会自动进行reject(timeout)\n      },\n      options\n    );\n  }\n  get signals(): Record<string, IAsyncSignal> {\n    return this.#_signals;\n  }\n\n  /**\n   * 创建新的异步信号\n   * @param constraint         额外的约束条件\n   * @param id\n   */\n  create(constraint?: () => boolean) {\n    let signal = asyncSignal(constraint, this.options);\n    this.#_signals[signal.id] = signal;\n    return signal;\n  }\n\n  /**\n   * 销毁指定的或者所有异步信号\n   *\n   *  destroy(id)\n   *  destroy([id,id,...])\n   *  destroy()                   // 销毁所有\n   * @param {string} id           可选的信号id,如果未指定则删除所有的信号\n   *\n   */\n\n  destroy(id: number | number[] | undefined) {\n    let ids = Array.isArray(id)\n      ? id\n      : id === undefined\n      ? Object.keys(this.#_signals)\n      : [id];\n    for (let id of ids) {\n      if (id in this.#_signals) {\n        try {\n          this.#_signals[id].destroy();\n          delete this.#_signals[id];\n        } catch (e) {}\n      }\n    }\n  }\n  resolve() {\n    let args = arguments;\n    Object.values(this.#_signals).forEach((signal) => signal.resolve(args));\n  }\n  reject(e: Error | string) {\n    Object.values(this.#_signals).forEach((signal) => signal.reject(e));\n  }\n  reset() {\n    Object.values(this.#_signals).forEach((signal) => signal.reset());\n  }\n}\n","export class VoerkaI18nError extends Error{}\nexport class VoerkaI18nInvalidLanguageError extends VoerkaI18nError{}\nexport class VoerkaI18nOnlyOneAppScopeError extends VoerkaI18nError{}\nexport class VoerkaI18nChangeLanguageError extends VoerkaI18nError{}\nexport class VoerkaI18nLoadLanguageError extends VoerkaI18nError{}\n","/**\n * \n * \n * 加载语言包\n * \n */\n\nimport { isFunction } from \"flex-tools/typecheck/isFunction\";\nimport { isPlainObject } from \"flex-tools/typecheck/isPlainObject\";\nimport type { VoerkaI18nScope } from \"..\";\nimport type { VoerkaI18nDynamicLanguageMessages, VoerkaI18nLanguageMessages } from \"@/types\";\nimport { IAsyncSignal,asyncSignal } from \"asyncsignal\"\nimport {  VoerkaI18nError, VoerkaI18nLoadLanguageError } from \"@/errors\";\nimport { loadAsyncModule } from \"@/utils/loadAsyncModule\";\n\n\n\nexport class ChangeLanguageMixin{     \n    protected _refreshSignal? :IAsyncSignal \n\n    /** \n     * 刷新语言包 \n     * @param language \n     */\n    async refresh(this:VoerkaI18nScope,language?:string,options?:{fallback?:boolean,patch:boolean}):Promise<string>{\n        if(!this._refreshSignal) this._refreshSignal = asyncSignal() \n        if (!language) language   = this.activeLanguage;        \n        let finalLanguage : string = language; \n        let finalMessages : VoerkaI18nLanguageMessages | undefined = undefined\n        const { patch,fallback } = Object.assign({ fallback:false,patch:true },options)\n\n        try{\n            finalMessages = await this._loadLanguageMessages(language)\n            this._activeMessages = finalMessages as VoerkaI18nLanguageMessages\n            // 打语言包补丁, 如果是从远程加载语言包则不需要再打补丁了,因为远程加载的语言包已经是补丁过的了            \n            if(finalMessages && !finalMessages.$remote && patch) {\n                await this._patch(language);\n            }\n        }catch(e:any){\n            // 切换语言失败，回退到默认语言,  注意：回退语言是不可能出错的，无论回退到了何种语言，默认语言总是可以兜底的回退语言\n            if(e && e instanceof VoerkaI18nError){\n                const fallbackLanguage = this.getFallbackLanguage(language)\n                if(fallbackLanguage && fallbackLanguage!==language){\n                    finalLanguage = await this.refresh(fallbackLanguage,{ patch,fallback:true })\n                }\n            }\n        }finally{\n            if(!fallback){\n                this._activeLanguage = finalLanguage\n                if(typeof(this.messages[finalLanguage])==='function' || !(finalLanguage in this.messages)) this.messages[finalLanguage] = this._activeMessages\n                this._activeParagraphs = this.paragraphs[finalLanguage]\n                this._refreshSignal.resolve()\n                this._refreshSignal = undefined\n                await this.emit('scope/change',finalLanguage,true)\n            }\n        }\n        this._setLanguageAttr()    \n        return finalLanguage\n    }\n    /**\n     * \n     *   通过加载器从远程加载指定语言的语言包\n     * \n     *   - 简单的对象{}\n     *   - 或者是一个返回Promise<VoerkaI18nLanguageMessages>的异步函数\n     *   - 或者是全局的默认加载器 \n     * \n     * @param language 语言名称\n     * @returns \n     */\n    private async _loadLanguageMessages(this:VoerkaI18nScope,language:string):Promise<VoerkaI18nLanguageMessages | undefined>{\n        \n        this.logger.debug(`准备加载语言包:${language}`)\n\n        // 非默认语言可以是：语言包对象，也可以是一个异步加载语言包文件,加载器是一个异步函数\n\t\t// 如果没有加载器，则无法加载语言包，因此回退到默认语言\n\t\tconst loader = this.messages[language];\n        let messages:VoerkaI18nLanguageMessages | undefined = undefined;\n\n        if (isPlainObject(loader)) {                // 静态语言包\n            messages = loader as unknown as VoerkaI18nLanguageMessages;\n        } else if(isFunction(loader)) {             // 异步chunk语言包 \n            try{\n                messages = await loadAsyncModule.call(this,loader)\n            }catch(e:any){\n                this.logger.error(`加载异步语言包<${language}>失败:${e.message}`)\n                messages = undefined\n            }\n        } \n\n        // 使用全局默认加载器从服务器加载语言包\n        if (!messages && isFunction(this.loader)) { \n            // 从远程加载语言包:如果该语言没有指定加载器，则使用全局配置的默认加载器\n            try{\n                const remoteMessages = (await this._loadMessagesFromLoader(language)) as unknown as VoerkaI18nDynamicLanguageMessages;\n                if(isPlainObject(remoteMessages)){  \n                    messages = Object.assign(\n                        { $remote : true },                     // 添加一个标识，表示该语言包是从远程加载的                     \n                        this.messages[this.defaultLanguage], \n                        remoteMessages\n                    ) as VoerkaI18nLanguageMessages;            // 合并默认语言包和动态语言包,这样就可以局部覆盖默认语言包\n                }else{\n                    this.logger.error(`错误的语言包<${language}>数据:${remoteMessages}`)\n                }\n            }catch(e:any){\n                throw new VoerkaI18nLoadLanguageError(e.message)\n            }\n        }\n        if(!isPlainObject(messages)) throw new VoerkaI18nLoadLanguageError(language)\n        return messages\n    }\n    /**\n     * \n     * 从远程加载信息包\n     * \n     * @param this \n     * @param language \n     */\n    protected async _loadMessagesFromLoader(this:VoerkaI18nScope,language:string){\n        if(isFunction(this.loader)){\n            return await this.loader.call(this,language,this)      \n        }\n    }\n    /**\n     * \n     * - 如果正在刷新语言包，则等待刷新完成\n     *  \n     * i18nScope.ready(callback,timeout)\n     *   \n     * @param this \n     * @returns \n     */\n    ready(this:VoerkaI18nScope,timeout?:number):Promise<void>  \n    ready(this:VoerkaI18nScope,callback:(activeLanguage:string)=>void,timeout?:number):void\n    ready(this:VoerkaI18nScope):any{  \n        const callback = typeof arguments[0] === 'function' ? arguments[0] : undefined\n        const timeout = typeof arguments[0] === 'number' ? arguments[0] : arguments[1]\n        if(typeof(callback)==='function'){\n            this.manager.ready(callback,timeout)      \n        }else{\n            return new Promise(resolve=>{\n                this.manager.ready(resolve,timeout)      \n            })\n        }        \n    }\n    /**\n     * await changing()\n     * \n     * @param this \n     * @param timeout \n     * @returns \n     */\n    async changing(this:VoerkaI18nScope,timeout?:number){\n        if(!this._refreshSignal && !this._patching) {\n            return        \n        }\n        await Promise.all([this._refreshSignal?.(timeout), this._patching?.(timeout)]) \n    }\n}","import { VoerkaI18nManager } from \"./manager\"\n\nexport type VoerkaI18nLoggerLevels = 'warn' | 'error' | 'info' | 'debug'\n\nexport type VoerkaI18nLogger = {\n    [key in VoerkaI18nLoggerLevels]: (message:string,...args:any[])=>void\n}\n\nexport type VoerkaI18nLoggerOutput = (level:VoerkaI18nLoggerLevels,message:string)=>void\n\nexport const ConsoleLogger =  {\n    warn : console.warn,\n    error: console.error,\n    info : console.info,\n    debug: console.debug        \n}\n\n\n\nexport function createLogger(logFn:VoerkaI18nLoggerOutput):VoerkaI18nLogger{        \n    let  manager:VoerkaI18nManager    \n    const logCache:[string,string][] = []\n    const logOutput = (level:VoerkaI18nLoggerLevels,...args:any[])=>{\n        const message = args.join(\" \")\n        if(!manager){\n            // @ts-ignore\n            manager =  globalThis.VoerkaI18n \n            if(manager && manager instanceof VoerkaI18nManager){\n                if(manager.debug){\n                    logCache.push([level,message])\n                    const log = (level:VoerkaI18nLoggerLevels,message:string)=>{                        \n                        if(logFn){\n                            logFn(level,message)\n                        }else{\n                            ConsoleLogger[level as VoerkaI18nLoggerLevels](message)\n                        }\n                    }\n                    manager.on(\"log\",({level, message}) => log(level as any, message))\n                    logCache.forEach(([level,message])=>log(level as any,message))\n                }else{                    \n                    logCache.splice(0,logCache.length)      // 清空缓存\n                }\n            }else{\n                logCache.push([level,message])\n            }\n        }else{\n            if(!manager.debug) return\n            manager.emit(\"log\",{level,message})    \n        }\n    }\n    return { \n        warn: ( ...args: any[]) => logOutput(\"warn\",...args),\n        error: ( ...args: any[]) => logOutput(\"error\",...args),\n        info: ( ...args: any[]) => logOutput(\"info\",...args),\n        debug: (...args: any[]) => logOutput(\"debug\",...args)\n    }\n}\n ","/**\n * \n *  保存所有格式化器数据\n *  \n */\nimport { Dict, LanguageName } from '@/types';\nimport type { VoerkaI18nScope } from '../scope';        \nimport { VoerkaI18nFormatter, VoerkaI18nFormatterBuilder, VoerkaI18nFormatters } from './types';\n \nexport interface VoerkaI18nScopeCache{\n    activeLanguage :string | null,\n    typedFormatters: VoerkaI18nFormatters,\n    formatters     : VoerkaI18nFormatters,\n}\n\nexport class FormattersNotLoadedError extends Error{\n    constructor(language:string){\n        super(`Formatters of language<${language}> is not loaded,try to call load()`)\n    }\n} \n\nexport class VoerkaI18nFormatterManager{\n    private _formatters        : VoerkaI18nFormatters = [] \n    private _scope             : VoerkaI18nScope                                         \n\n    constructor(scope:VoerkaI18nScope){ \n        this._scope = scope   \n        this._formatters = scope?.options.formatters     \n        this._registerFormatters()\n    }    \n    get scope(){ return this._scope! }      \n    get formatters(){ return this._formatters }    \n    /** \n     * 加载所有格式化器 \n     */\n    private _registerFormatters(){\n        this._formatters && this._formatters.forEach((formatter)=>{\n            if(Array.isArray(formatter)){\n                this.register.apply(this,formatter as any);\n            }else{\n                this.register.apply(this,[formatter]);\n            }\n        })        \n    }   \n    private _addFormatter(filter:VoerkaI18nFormatter<any,any>){\n        try{\n            this.scope.interpolator.addFilter(filter)\n            // 如果是全局格式化器，则注册到全局scope(即appCcope)里面\n            if(filter){\n                const appScope = this.scope.manager.scope\n                if(appScope.id !== this.scope.id){\n                    appScope.interpolator.addFilter(filter)\n                }\n            }\n        }catch(e:any){\n            this.scope.logger.error(`fail while register formatter<${filter.name}>：${e.stack}`)\n        }\n    }\n    register<Args extends Dict,Config extends  Dict = Args>(\n        formatter: VoerkaI18nFormatter<Args, Config>,\n        configs? : Partial<Record<LanguageName,Partial<Config>>>,\n        defaultConfig? : Partial<Config>\n    ){\n        const scope = this.scope\n        const oldNext = formatter.next\n        formatter.next = function (value, args, ctx) {\n            const langConfig = ctx.getConfig as any // 语言包中的$config\n            ctx.getConfig = () => {\n                return Object.assign({}, \n                    defaultConfig,\n                    configs?.[scope.activeLanguage],                    \n                    langConfig(formatter.name),                    \n                ) as Config;\n            }\n            return oldNext.call(this, value, args, ctx);\n        }  \n        // \n        this._addFormatter(formatter) \n    }\n\n}","\n/**\n * 判断给定对象是否为管理者对象。\n * 管理者对象需满足以下条件：\n * 1. 是一个对象。\n * 2. 具有 `__VOERKAI18N_MANAGER__` 属性。\n * \n * 为什么不用 `instanceof` 运算符？\n * \n * 为了兼容让scope可以注册到不同版本的VoerkaI18nManager中，不能使用instanceof运算符。\n * \n * \n * @param obj 要检查的对象\n * @returns 如果对象是管理者对象，则返回 true；否则返回 false。\n */\nexport function isI18nManger(obj: any) {\n    return obj && typeof (obj) === 'object' && obj.__VoerkaI18nManager__\n}","import type { VoerkaI18nLanguage } from \"@/types\";\nimport type { VoerkaI18nScope } from \"..\";\n\n\nexport class LanguageMixin{\n\t/**\n\t * 获取指定语言信息\n\t * @param {*} language\n\t * @returns\n\t */\n\tgetLanguage(this:VoerkaI18nScope,language:string):VoerkaI18nLanguage | undefined{\n\t\tlet index = this.languages.findIndex((lng) => lng.name == language);\n\t\tif (index !== -1) return this.languages[index];\n    }\n\n    /**\n     * 获取指定语言的备用语言。如果指定的语言存在备用语言选项，则返回该备用语言；否则返回默认语言。\n     * @param this - VoerkaI18nScope 实例\n     * @param language - 需要获取备用语言的目标语言代码\n     * @returns 返回备用语言代码或默认语言代码\n     */\n    getFallbackLanguage(this: VoerkaI18nScope, language: string): string {\n        const lngOptions = this.getLanguage(language)\n\t\treturn (lngOptions && lngOptions.fallback)\n\t\t\t\t\t|| this.options.fallback\n\t\t\t\t\t|| this._defaultLanguage        \n    }\n\t/**\n\t * 返回是否存在指定的语言\n\t * @param {*} language 语言名称\n\t * @returns\n\t */\n\thasLanguage(this:VoerkaI18nScope,language:string) {\n\t\treturn this.languages.findIndex((lang:VoerkaI18nLanguage) => lang.name == language) != -1;\n\t} \n}\n\n ","import { isMessageId } from \"@/utils/isMessageId\";\nimport { isFunction } from \"flex-tools/typecheck/isFunction\";\nimport { isNumber } from \"flex-tools/typecheck/isNumber\";\nimport { isPlainObject } from \"flex-tools/typecheck/isPlainObject\";\nimport type { VoerkaI18nScope } from \"..\";\nimport type {\n  VoerkaI18nTranslateVars,\n  VoerkaI18nTranslateOptions,\n  VoerkaI18nLanguageMessages,\n} from \"@/types\";\n\nexport class TranslateMixin {\n  /**\n   * 根据值的单数和复数形式，从messages中取得相应的消息\n   *\n   * @param {*} messages  复数形式的文本内容 = [<=0时的内容>，<=1时的内容>，<=2时的内容>,...,<>=N的内容>]\n   * @param {*} value\n   */\n  private _getPluraMessage(\n    this: VoerkaI18nScope,\n    messages: string | string[],\n    value: number\n  ) {\n    try {\n      if (Array.isArray(messages)) {\n        return messages.length > value\n          ? messages[value]\n          : messages[messages.length - 1];\n      } else {\n        return messages;\n      }\n    } catch {\n      return Array.isArray(messages) ? messages[0] : messages;\n    }\n  }\n  private _getPluraValue(args: any): [number | null, any[]] {\n    let pluraValue: number | null = null; // 复数值\n    let vars: any[] = []; // 插值变量列表\n    // 1. 预处理变量:  复数变量保存至pluralVars中 , 变量如果是Function则调用\n    if (isPlainObject(args)) {\n      // 字典插值\n      const dictVars: Record<string, any> = args;\n      for (const [name, value] of Object.entries(dictVars)) {\n        if (isFunction(value)) {\n          try {\n            dictVars[name] = value();\n          } catch {\n            dictVars[name] = value;\n          }\n        }\n        const isNum: boolean = typeof dictVars[name] === \"number\"; // 以$开头的视为复数变量，记录下来\n        if ((pluraValue == null && isNum) || (name.startsWith(\"$\") && isNum)) {\n          pluraValue = dictVars[name];\n        }\n      }\n      vars = [dictVars];\n    } else if (Array.isArray(args)) {\n      // 位置插值\n      vars = args.map((arg) => {\n        try {\n          arg = isFunction(arg) ? arg() : arg;\n          if (isNumber(arg) && !pluraValue) pluraValue = parseInt(arg); // 约定：位置参数中以第一个数值变量作为指示复数变量\n        } catch {\n          return String(arg);\n        }\n        return arg;\n      });\n    } else if (args !== undefined) {\n      // 单个插值\n      pluraValue = isNumber(args) ? parseInt(args) : 0;\n      vars = [args];\n    }\n    return [pluraValue, vars];\n  }\n\n  /**\n   * 翻译组件\n   *\n   */\n  protected _getTranslateComponent(this: VoerkaI18nScope): any {\n    if (!this._translateComponent) {\n      const builder = this.options.component || this.appScope.options.component;\n      if (typeof builder === \"function\") {\n        this._translateComponent = builder.call(this, this);\n      } else {\n        this._translateComponent = () => {};\n        this.logger.warn(\"No translate component builder configured\");\n      }\n    }\n    return this._translateComponent;\n  }\n  protected _getTranslateTransformer(this: VoerkaI18nScope): any {\n    if (!this._translateTransformer) {\n      const builder = this.options.transform || this.appScope.options.transform;\n      if (typeof builder === \"function\") {\n        this._translateTransformer = builder.call(this, this);\n      }\n    }\n    return this._translateTransformer;\n  }\n\n  private _getActiveMessages(\n    this: VoerkaI18nScope,\n    language: string\n  ): VoerkaI18nLanguageMessages {\n    const messages = this.messages[language];\n    if (typeof messages === \"function\") {\n      this.logger.warn(\n        `When the t function specifies the language <${language}> , only synchronized language packs can be used`\n      );\n      return this.activeMessages;\n    }\n    return (this.messages as any)[language] as VoerkaI18nLanguageMessages;\n  }\n  translate<R = string>(\n    this: VoerkaI18nScope,\n    message: string,\n    vars?: VoerkaI18nTranslateVars,\n    options?: VoerkaI18nTranslateOptions\n  ): R {\n    if (typeof message !== \"string\") {\n      this.logger.debug(\n        `failed to translate message:${message},it is not a string`\n      );\n      return \"\" as R;\n    }\n    const activeLanguage = options?.language || this.activeLanguage;\n    const activeMessages = this._getActiveMessages(activeLanguage);\n\n    // 为什么样要转义换行符？因为在translates/*.json中key不允许换行符存在，需要转义为\\\\n，这里需要转回来\n    message = message.replace(/\\n/g, \"\\\\n\");\n    // 如果内容是复数，则其值是一个数组，数组中的每个元素是从1-N数量形式的文本内容\n    let result: any = message;\n    if (!(typeof message === \"string\")) return message;\n    const finalArgs =\n      vars === undefined ? [] : isFunction(vars) ? vars() : vars;\n    try {\n      if (isMessageId(message)) {\n        // 如果是数字id,\n        result = (activeMessages as any)[message] || message;\n      } else {\n        const msgId = this.idMap[message];\n        // 语言包可能是使用idMap映射过的，则需要转换\n        result = (activeMessages[msgId] ||\n          activeMessages[message] ||\n          message) as string | string[];\n      }\n      const [pluraValue, vars] = this._getPluraValue(finalArgs);\n      // 2. 处理复数\n      // 经过上面的处理，content可能是字符串或者数组\n      // content = \"原始文本内容\" || 复数形式[\"原始文本内容\",\"原始文本内容\"....]\n      // 如果是数组说明要启用复数机制，需要根据插值变量中的某个变量来判断复数形式\n      if (Array.isArray(result) && result.length > 0) {\n        // 如果存在复数命名变量，只取第一个复数变量\n        if (pluraValue !== null) {\n          // 启用的是位置插值\n          result = this._getPluraMessage(result, pluraValue!);\n        } else {\n          // 如果找不到复数变量，则使用第一个内容\n          result = result[0];\n        }\n      }\n      // 如果没有传入插值变量，则直接返回\n      if (finalArgs.length === 0) result as string;\n      // 进行插值处理\n      result = this.interpolator.replace(result as string, ...vars);\n\n      if (isFunction(this.options.onTranslated)) {\n        result = this.options.onTranslated(result);\n      }\n      if (this._translateTransformer && options?.transform) {\n        result = this._translateTransformer(result, vars, options);\n      }\n    } catch (e: any) {\n      this.logger.error(`翻译失败：${e.stack}`);\n    }\n    return result as R;\n  }\n}\n","/**\n * \n * 从存储中恢复语言\n * \n */\nimport { IVoerkaI18nStorage } from \"@/types\"\nimport type { VoerkaI18nScope } from \"..\"\nimport { isStorage } from \"@/utils/isStorage\"\n\n\nexport class RestoreMixin{\n    private _getStorage(this:VoerkaI18nScope):IVoerkaI18nStorage | undefined{\n        const storage = this.storage \n        return isStorage(storage) ? storage: undefined\n    }\n    /**\n     * \n     * @param this \n     */\n    private _getStorageKey(this:VoerkaI18nScope){\n        const storageKey = this.options.storageKey       \n        return storageKey.replace(\"{scope}\",this.id)\n    }\n    /**\n     * 从存储器加载语言配置\n     */\n    restoreLanguage(this:VoerkaI18nScope){\n        const storage = this._getStorage()\n        if(storage){      \n            const storageKey = this._getStorageKey()      \n            const savedLanguage = storage.get(storageKey)\n            if(!savedLanguage || !this.hasLanguage(savedLanguage))  return \n            this._activeLanguage = savedLanguage\n            this.logger.debug(`从存储<${storageKey}>中恢复保存的语言：${savedLanguage}`)\n        }\n    }\n    /**\n     * \n     * 将当前语言保存到Storage\n     * \n     */\n    saveLanguage(this:VoerkaI18nScope){\n        const storage = this._getStorage()\n        if(storage){\n            if(!this._activeLanguage)  return\n            const storageKey = this._getStorageKey()\n            storage.set(storageKey,this.activeLanguage)            \n            this.logger.debug(`当前语言已保存到存储${storageKey}=${this.activeLanguage}`)\n        }\n    }  \n    clearLanguage(this:VoerkaI18nScope){\n        const storage = this._getStorage()\n        if(storage){\n            storage.remove(this._getStorageKey())\n        }\n    }\n    \n}","/**\n*        \n*   ---=== FlexVars ===---\n*   https://zhangfisher.github.com/flexvars\n*    \n*\n*/\nvar T=Object.defineProperty;var D=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var R=(e,t,r)=>t in e?T(e,t,{enumerable:true,configurable:true,writable:true,value:r}):e[t]=r,b=(e,t)=>{for(var r in t||(t={}))_.call(t,r)&&R(e,r,t[r]);if(D)for(var r of D(t))B.call(t,r)&&R(e,r,t[r]);return e};var h=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,r)=>(typeof require!=\"undefined\"?require:t)[r]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+e+'\" is not supported')});var c={Abort:Symbol(\"Abort\"),Throw:Symbol(\"Throw\"),Ignore:Symbol(\"Ignore\")};var a=class extends Error{constructor(r){super();this.value=r;}},j=class extends a{},p=class extends a{},x=class extends a{},g=class extends a{};var S={name:\"error\",priority:\"before\",args:[\"operate\",\"value\"],default:{operate:\"ignore\"},next(e,t,r){let n=t.operate.toLowerCase(),i=t.value;return r.onError=(l,o,s,f)=>{if(!(l instanceof Error)||l instanceof a)throw l;if(n==\"throw\")throw i?new Error(i):l;if(n==\"abort\")throw new p(i);if(n==\"ignore\")throw new x(i);return o},e}},P={name:\"empty\",priority:\"before\",args:[\"operate\",\"value\"],default:{operate:\"abort\",value:\"\"},next(e,t,r){let n=t.operate.toLowerCase(),i=t.value;return r.onEmpty=()=>{if(n==\"throw\")throw new g;if(n==\"abort\")throw new p(i);if(n==\"ignore\")throw new x;return n},e}};function F(e,...t){if(t.length===0)return e;let r=t.map((n,i)=>{let l=Object.entries(n||{});return l.some(([o,s])=>s===void 0)?l.reduce((o,[s,f])=>(f!==void 0&&(o[s]=f),o),{}):n});return Object.assign(e,...r)}(e=>typeof h<\"u\"?h:typeof Proxy<\"u\"?new Proxy(e,{get:(t,r)=>(typeof h<\"u\"?h:t)[r]}):e)(function(e){if(typeof h<\"u\")return h.apply(this,arguments);throw Error('Dynamic require of \"'+e+'\" is not supported')});function y(e){if(typeof e!=\"object\"||e===null)return  false;var t=Object.getPrototypeOf(e);if(t===null)return  true;for(var r=t;Object.getPrototypeOf(r)!==null;)r=Object.getPrototypeOf(r);return t===r}function v(e){return e&&typeof e==\"function\"}function w(e,t,r){if(typeof t==\"string\"){let n=0,i;for(;(i=e.indexOf(t,n))>-1;){let l=typeof r==\"function\"?r(t):r,o=e.length;e=e.substring(0,i)+l+e.substring(i+t.length),n=i+l.length+e.length-o;}}else {let n;if(!t.global||!t.multiline)throw new Error(\"The search parameter must be enabled '/gm' option\");for(;(n=t.exec(e))!==null;){n.index===t.lastIndex&&t.lastIndex++;let i=e.length,l=n[0].length,o=typeof r==\"function\"?r(n[0],...n):r;e=e.substring(0,n.index)+o+e.substring(n.index+l),t.lastIndex+=e.length-i;}}return e}String.prototype.replaceAll||(String.prototype.replaceAll=function(e,t){return w(this,e,t)});function m(e){return e.replace(/([.?*+^$[\\]\\\\(){}|-])/g,\"\\\\$1\")}function C(e,t=false){if(typeof e==\"number\")return  true;if(typeof e!=\"string\"||t)return  false;try{if(e.includes(\".\")){let r=parseFloat(e);return e.endsWith(\".\")?!isNaN(r)&&String(r).length===e.length-1:!isNaN(r)&&String(r).length===e.length}else {let r=parseInt(e);return !isNaN(r)&&String(r).length===e.length}}catch(r){return  false}}var q=/\\n/gm,W=/([\"'])(.*?)(\\1)/gm,k=/([\\s\\[\\,\\{])(\\w+)(\\s*\\:)/gm;function V(e,t){try{return JSON.parse(e,(n,i)=>t?t(n,i):i)}catch(n){}let r=e.replace(q,(n,i,l)=>{let o=l.slice(0,i).trim(),s=l.slice(i+1).trim();return !/,$/.test(o)&&!/[\\[\\{\\}]$/.test(o)&&!/^\\}/.test(s)?`,\n`:`\n`});return r=r.replaceAll(W,(n,i,l)=>`\"${encodeURI(l)}\"`),r=r.replaceAll(k,(n,i,l,o)=>`${i}\"${l}\"${o}`),r=r.replaceAll(\"\\uFF0C\",\",\").replaceAll(\"\\u201C\",'\"').replaceAll(\"\\u201D\",'\"'),JSON.parse(r,(n,i)=>(typeof i==\"string\"&&(i=decodeURI(i)),i))}function J(e,t=\"{\",r=\"}\"){let n=0,i=0;for(;n<e.length;){let l=e.slice(n,n+t.length),o=e.slice(n,n+r.length);if(l==t){i++,e=e.substring(0,n+t.length)+`${i}%`+e.substring(n+t.length),n+=t.length+String(i).length+1;continue}if(o==r){i>0&&(e=e.substring(0,n)+`%${i}`+e.substring(n)),n+=r.length+String(i).length+1,i--;continue}n++;}return e}function H(e,...t){return t.length==0&&(t.push([\"{\",\"}\"]),t.push([\"[\",\"]\"])),t.forEach(r=>{e.includes(r[0])&&e.includes(r[1])&&(e=J(e,...r));}),e}function G(e,t,r){return [[t,new RegExp(m(t)+\"\\\\d+%\")],[r,new RegExp(\"%\\\\d+\"+m(r))]].forEach(([i,l])=>{let o;for(;(o=l.exec(e))!==null;)o.index===l.lastIndex&&l.lastIndex++,e=e.replace(l,i);}),e}function E(e,...t){return t.length==0&&(t.push([\"{\",\"}\"]),t.push([\"[\",\"]\"])),t.forEach(([r,n])=>{e.includes(r)&&e.includes(n)&&(e=G(e,r,n));}),e}function M(e){return e?e.trim().substring(1).trim().split(\"|\").map(r=>r.trim()).map(r=>{if(r==\"\")return null;let n=r.indexOf(\"(\"),i=r.lastIndexOf(\")\");if(n!==-1&&i!==-1){let l=r.substring(n+1,i).trim(),o=U(l);return [r.substring(0,n),o]}else return [r,[]]}).filter(r=>Array.isArray(r)):[]}function z(...e){e.length==0&&(e.push([\"{\",\"}\"]),e.push([\"[\",\"]\"]));let t=e.map(([r,n])=>`(${m(r)}1%.*?%1${m(n)})`);return L.replace(\"__TAG_REGEXP__\",t.length>0?t.join(\"|\")+\"|\":\"\")}var L=String.raw`((([\\'\\\"])(.*?)\\3))|__TAG_REGEXP__([\\d]+\\.?[\\d]?)|((true|false|null)(?=[,\\b\\s]))|([\\w\\.]+)|((?<=,)\\s*(?=,))(?<=\\s*[,\\)]?\\s*)`;function U(e){let t=[],r;e=H(e);try{let n=new RegExp(z(),\"g\");for(;(r=n.exec(e))!==null;){r.index===n.lastIndex&&n.lastIndex++;let i=r[0];if(i.trim()==\"\")i=void 0;else if(i.startsWith(\"'\")&&i.endsWith(\"'\")||i.startsWith('\"')&&i.endsWith('\"'))i=i.substring(1,i.length-1),i=E(i);else if(i.startsWith(\"{\")&&i.endsWith(\"}\")||i.startsWith(\"[\")&&i.endsWith(\"]\"))try{i=E(i),i=V(i);}catch(l){}else [\"true\",\"false\",\"null\"].includes(i)?i=JSON.parse(i):C(i)?i=parseFloat(i):i=E(String(i));t.push(i);}}catch(n){}return t}var X=new RegExp(\"(?<!\\\\\\\\)\\\\{([\\\\S]+\\\\s)?\\\\s*(\\\\w+)?((\\\\s*\\\\|\\\\s*\\\\w*(\\\\(.*?\\\\)){0,1}\\\\s*)*)\\\\s*(\\\\s[\\\\S]+)?\\\\}\",\"gm\");function O(e,t,r={}){let n=e,i,l=Object.assign({replaceAll:true},r),o=X;for(o.lastIndex=0;(i=o.exec(n))!==null;){i.index===o.lastIndex&&o.lastIndex++;let s=i[2]||\"\",f=(i[1]||\"\").trim(),u=(i[6]||\"\").trim(),d=n.length,N=M(i[3]||\"\");if(v(t)){let A=t(s,f,u,N,i[0]);l.replaceAll?n=w(n,i[0],A):n=n.replace(i[0],A),o.lastIndex+=n.length-d;}}return n}function I(e,t){let r=t.value;if(e.length>0){let n=ee.call(this,e,t);for(let i of n)try{r=i.call(this,r);}catch(l){if(l instanceof g)throw l;if(l instanceof a){if(l.value!=null&&(r=l.value),l instanceof p)break}else throw l}}return this.options.isEmpty(r)||(r=`${t.prefix}${r}${t.suffix}`),r}function K(e,t,r,n){if(!this.options.isEmpty(e))return e;let i=n.onEmpty||r.onEmpty||this.options.onEmpty;if(typeof i!=\"function\")return e;let l=i.call(this,e,t,n);throw l instanceof Error?l:l==c.Abort?new p:l==c.Ignore?new x:l==c.Throw?new g:new p(l)}function Q(e,t,r,n,i){let l=i.onError||n.onError||this.options.onError;if(typeof l!=\"function\")return t;let o=l.call(this,e,t,r,i);throw o instanceof Error?o:o==c.Abort?new p:o==c.Ignore?new x:o==c.Throw?e:new p(o)}function Y(e,t,r){var i;let n=Object.assign({},typeof e.default==\"function\"?e.default():e.default);return t.length==1&&y(t[0])?F(n,t[0]):e.args&&((i=e.args)==null?void 0:i.length)>0&&e.args.forEach((l,o)=>{t[o]!==void 0&&(n[l]=t[o]);}),l=>{let o;try{r.args=t,o=e.next.call(this,l,n,r),o=K.call(this,o,n,e,r);}catch(s){if(s.filter=e.name,s instanceof a)throw s;return this.log(`\\u5F53\\u6267\\u884C\\u8FC7\\u6EE4\\u5668\\u5668<${r.match}:${e.name}>\\u65F6\\u51FA\\u9519:${s.stack}`),Q.call(this,s,l,n,e,r)}return String(o)}}function Z(e){let t=[],r=e.map(([n,i])=>[this.getFilter.call(this,n),i]).filter(([n])=>n!=null);return r=r.reduce((n,[i,l])=>(i&&(i.priority==\"before\"?n.unshift([i,l]):i.priority==\"after\"?t.push([i,l]):n.push([i,l])),n),[]),r.concat(t)}function ee(e,t){let r=Z.call(this,e),n=[];for(let[i,l]of r)n.push(Y.call(this,i,l,t));return n}var $=class{constructor(t){this.options=F({log:console.log,filters:{},missing:\"default\",filterContext:{}},t),this.addDefaultHandlers(),this.addBuildinFilters(),this.normalizeFilters();}get filters(){return this.options.filters}addDefaultHandlers(){this.options.onError=()=>c.Ignore,this.options.onEmpty=()=>\"\",this.options.isEmpty=t=>t===null||t===\"\";}addFilter(t){if(!t.name)throw new Error(\"Filter name cannot be empty\");if(typeof t.next!=\"function\")throw new Error(\"The filter must provide a next function\");return t=F({priority:\"normal\"},t),this.filters[t.name]=t}removeFilter(t){delete this.filters[t];}getFilter(t){var r;if(t in this.options.filters)return this.options.filters[t];{let n=(r=this.options.getFilter)==null?void 0:r.call(this,t);return typeof n==\"function\"?{name:t,next:n}:t in String.prototype?{name:t,next:(i,l,o)=>i[t](...o.args)}:n}}addBuildinFilters(){this.addFilter(S),this.addFilter(P);}normalizeFilters(){Object.entries(this.options.filters).forEach(([t,r])=>{let n=F({name:t,priority:\"normal\",args:null,next:i=>i},typeof r==\"function\"?{filter:r}:r);this.options.filters[t]=n;});}getMissingValue(t,r){let n=this.options.missing;if(n==\"default\")return \"\";if(n==\"ignore\")return r;if(typeof n==\"function\")return n.call(this,t)}replace(t,...r){if(r.length===0)return t;if(r.length===1&&typeof r[0]==\"function\"&&(r[0]=r[0].call(this)),r.length===1&&y(r[0])){let n=r[0];return O.call(this,t,(i,l,o,s,f)=>{let u=i in n?n[i]:this.getMissingValue(i,f);return typeof u==\"function\"&&(u=u.call(this)),I.call(this,s,b({name:i,value:u,prefix:l,suffix:o,template:t,match:f,args:[]},this.options.filterContext))})}else {let n=r.length===1&&Array.isArray(r[0])?[...r[0]]:r,i=0;return O.call(this,t,(l,o,s,f,u)=>{let d=n.length>i?n[i++]:this.getMissingValue(i,u);return typeof d==\"function\"&&(d=d.call(this)),I.call(this,f,b({name:l,value:d,prefix:o,suffix:s,template:t,match:u,args:[]},this.options.filterContext))},{replaceAll:false})}}log(t,...r){this.options.debug&&this.options.log(t,...r);}};\n\nexport { c as FilterBehaviors, p as FlexFilterAbortError, g as FlexFilterEmptyError, a as FlexFilterError, x as FlexFilterIgnoreError, j as FlexFilterThrowError, $ as FlexVars, P as defaultEmptyFilter, S as defaultErrorFilter };\n","export interface GetByPathArgs {\n    defaultValue?: any; // 默认值\n    delimiter?: string; // 路径分隔符，默认为 '.',\n    matched?: ({ value, parent, indexOrKey }: {\n        value?     : any;\n        parent?    : object | any[];\n        indexOrKey?:  string | symbol | number;\n    }) => void;\n}\n\nexport function getByPath<R = any, T = object>(obj: T, path: string, options?: GetByPathArgs): R {\n    const { defaultValue, delimiter,matched } = Object.assign({\n        delimiter : '.'\n    },options)\n\n    if (!obj || typeof path !== 'string') {\n        return defaultValue as R;\n    }\n    if(!path) return obj as R    \n\n    const keys = path.split(delimiter);\n    let current: any = obj;\n    let parent: any \n    let indexOrKey:any\n    try{\n        for (const key of keys) {\n            if (current instanceof Map || current instanceof WeakMap) {\n                if(!current.has(key as any)) {\n                    return defaultValue as R\n                }\n                parent =  current                \n                indexOrKey = key\n                current = current.get(key as any);\n            } else if (current instanceof Set)  {\n                const index = parseInt(key, 10)\n                if(index>=current.size) return defaultValue as R\n                parent =  current\n                indexOrKey = index\n                current = [...current][index];\n            } else if (current && typeof current === 'object' && key in current) {\n                parent =  current\n                indexOrKey = Array.isArray(current) ? parseInt(key) : key\n                current = current[key];\n            } else {\n                return defaultValue as R;\n            }\n        }\n    }catch{\n        return defaultValue as R\n    }   \n    if(typeof(matched)===\"function\"){\n        matched({ value:current, parent, indexOrKey })\n    }\n    return current as R\n}","import { FlexVars } from \"flexvars\"\nimport type { VoerkaI18nScope } from \"..\"\nimport {  getByPath } from \"flex-tools/object/getByPath\"\nimport { VoerkaI18nFormatterContext } from \"@/formatter/types\"\n\nexport class InterpolatorMixin{\n    protected _flexVars?        : FlexVars<VoerkaI18nFormatterContext>          // 变量插值处理器,使用flexvars    \n    protected _initInterpolators(this:VoerkaI18nScope){\n        this._flexVars = new FlexVars<VoerkaI18nFormatterContext>({\n            filterContext:{\n                getConfig:(configKey?:string)=>{\n                    const configs = (this.activeMessages['$config'] || {}) as any\n                    if(!configKey) return configs\n                    return getByPath(configs,configKey)\n                },\n                scope:this\n            }\n        })\n    }\n}","/**\n * \n * 使用方法与object.assign一样，差别在于\n * \n *  Object.assign({a:1},{a:undefined}) === {a:undefined}\n * \n *  assignObject({a:1},{a:undefined}) === {a:1}\n * \n * 会忽略掉里面的undefined\n * \n *  当最后一参数是函数时传入(key)=>boolean，表示只有返回true时才会覆盖\n * \n \n * \n\n * \n */\n\nexport function assignObject<T extends Record<any,any> = Record<any,any>>(target:object , ...sources: any[]): T{   \n    if(sources.length === 0) return target as any;\n    let mapSources = sources.map((source,index) =>{\n        const sourceEntries = Object.entries(source || {})\n        if(sourceEntries.some(([k,v]) =>v ===undefined)){\n            return sourceEntries.reduce((result:any,[k,v])=>{\n                if(v!==undefined){\n                    result[k] = v\n                }\n                return result\n            },{})\n        }else{\n            return source\n        }\n    })\n    return  Object.assign(target as any, ...mapSources);\n}\n\n ","import type {\n  Voerkai18nIdMap,\n  VoerkaI18nLanguage,\n  VoerkaI18nLanguageMessages,\n  VoerkaI18nLanguageMessagePack,\n  IVoerkaI18nStorage,\n  VoerkaI18nLanguagePack,\n  VoerkaI18nLanguageLoader,\n  VoerkaI18nTranslate,\n  VoerkaI18nTranslateComponentBuilder,\n  VoerkaI18nParagraphs,\n  VoerkaI18nLanguageParagraphs,\n  VoerkaI18nTranslateVars,\n  VoerkaI18nTranslateOptions,\n  VoerkaI18nTranslateTransformBuilder,\n  VoerkaI18nTranslateTransformer,\n} from \"@/types\";\nimport { DefaultLanguageSettings } from \"../consts\";\nimport { Mixin } from \"ts-mixer\";\nimport { EventEmitterMixin } from \"./mixins/eventEmitter\";\nimport { PatchMessageMixin } from \"./mixins/patch\";\nimport { ChangeLanguageMixin } from \"./mixins/change\";\nimport { VoerkaI18nLogger, VoerkaI18nLoggerOutput } from \"../logger\";\nimport { VoerkaI18nFormatters } from \"../formatter/types\";\nimport { getId } from \"@/utils/getId\";\nimport { createLogger } from \"@/logger\";\nimport { VoerkaI18nFormatterManager } from \"../formatter/manager\";\nimport { isI18nManger } from \"@/utils/isI18nManger\";\nimport { LanguageMixin } from \"./mixins/language\";\nimport { TranslateMixin } from \"./mixins/translate\";\nimport { RestoreMixin } from \"./mixins/restore\";\nimport { InterpolatorMixin } from \"./mixins/interpolator\";\nimport { isFunction } from \"flex-tools/typecheck/isFunction\";\nimport { assignObject } from \"flex-tools/object/assignObject\";\nimport { VoerkaI18nManager } from \"../manager\";\nimport { LocalStorage } from \"@/storage\";\nimport { isBrowser } from \"@/utils/isBrowser\";\nimport { isMessageId } from \"@/utils/isMessageId\";\n\nexport interface VoerkaI18nScopeOptions<\n  TranslateComponent = any,\n  TranslateTransformResult = any\n> {\n  id?: string; // 作用域唯一id，一般可以使用package.json中的name字段\n  debug?: boolean; // 是否开启调试模式，开启后会输出调试信息\n  library?: boolean; // 当使用在库中时应该置为true\n  languages: VoerkaI18nLanguage[]; // 当前作用域支持的语言列表\n  fallback?: string; // 默认回退语言\n  messages: VoerkaI18nLanguageMessagePack; // 当前语言包\n  paragraphs: VoerkaI18nParagraphs; // 段落\n  idMap?: Voerkai18nIdMap; // 消息id映射列表\n  storage?: IVoerkaI18nStorage; // 语言包存储器\n  formatters?: VoerkaI18nFormatters; // 当前作用域的格式化\n  log?: VoerkaI18nLoggerOutput; // 日志记录器\n  attached?: boolean; // 是否挂接到appScope\n  storageKey?: string; // 保存到Storeage时的Key\n  loader?: VoerkaI18nLanguageLoader; // 从远程加载语言包\n  cachePatch?: boolean; // 是否缓存补丁语言包\n  injectLangAttr?: boolean | string; // 是否注入到html元素上注入一个langauge属性指向当前活动语言\n  namespaces?: Record<string, string>; // 命名空间\n  patterns?: string[]; // 源文件匹配清单，使用fast-glob匹配文件\n  component?: VoerkaI18nTranslateComponentBuilder<TranslateComponent>; // 翻译组件\n  // 对翻译结果进行变换，比如变换为vue/ref对象，当使用$t时生效\n  transform?: VoerkaI18nTranslateTransformBuilder<TranslateTransformResult>;\n  // 当翻译完成后的回调\n  onTranslated?: (result: string) => string;\n}\n\nexport class VoerkaI18nScope<\n  TranslateComponent = any,\n  TranslateTransformResult = any\n> extends Mixin(\n  EventEmitterMixin,\n  PatchMessageMixin,\n  ChangeLanguageMixin,\n  LanguageMixin,\n  TranslateMixin,\n  InterpolatorMixin,\n  RestoreMixin\n) {\n  __VoerkaI18nScope__ = true;\n  static idSeq: number = 0;\n  private _options: Required<VoerkaI18nScopeOptions<TranslateComponent>>;\n  private _manager!: VoerkaI18nManager; // 引用全局VoerkaI18nManager配置，注册后自动引用\n  private _formatterManager: VoerkaI18nFormatterManager | null = null;\n  private _logger!: VoerkaI18nLogger;\n  protected _defaultLanguage: string = \"zh-CN\"; // 默认语言名称\n  protected _activeLanguage: string = \"zh-CN\"; // 默认语言名称\n  protected _activeMessages: VoerkaI18nLanguageMessages = {}; // 当前语言包\n  protected _patchedMessages: VoerkaI18nLanguagePack = {}; // 补丁语言包\n  protected _translateComponent?: TranslateComponent;\n  protected _translateTransformer?: VoerkaI18nTranslateTransformer<TranslateTransformResult>;\n  protected _activeParagraphs: VoerkaI18nLanguageParagraphs = {}; // 当前段落\n\n  $id: number = ++VoerkaI18nScope.idSeq;\n\n  /**\n   *\n   * @param options\n   */\n  constructor(options: VoerkaI18nScopeOptions) {\n    super();\n    this._options = assignObject(\n      {\n        id: getId(), // 作用域唯一id\n        library: false, // 当使用在库中时应该置为true\n        debug: false, // 是否开启调试模式，开启后会输出调试信息\n        injectLangAttr: true, // 是否注入一个langauge属性到body元素，或者指定元素选择器\n        languages: [], // 当前作用域支持的语言列表\n        messages: {}, // 所有语言包={[language]:VoerkaI18nLanguageMessages}\n        paragraphs: {}, // 段落\n        idMap: {}, // 消息id映射列表\n        formatters: [], // 是否挂接到appScope\n        attached: true, // 是否挂接到appScope\n        storageKey: \"language\", // 保存语言配置到Storage时的Key\n        cachePatch: true, // 是否缓存补丁语言包\n      },\n      options\n    ) as Required<VoerkaI18nScopeOptions>;\n    this._init();\n  }\n  get id() {\n    return this._options.id;\n  } // 作用域唯一id\n  get options() {\n    return this._options;\n  } //\n  get attached() {\n    return this._options.attached;\n  } // 作用域唯一id\n  get debug() {\n    return this._options.debug;\n  } // 是否开启调试模式\n  get library() {\n    return this._options.library;\n  } // 是否是库\n  get formatters() {\n    return this._formatterManager!;\n  } // 格式化器管理器\n  get defaultLanguage() {\n    return this._defaultLanguage;\n  } // 默认语言名称\n  get defaultMessages() {\n    return this.messages[this.defaultLanguage];\n  } // 默认语言包\n  get messages() {\n    return this._options.messages;\n  } // 所有语言包\n  get paragraphs() {\n    return this._options.paragraphs;\n  } // 段落\n  get idMap() {\n    return this._options.idMap;\n  } // 消息id映射列表\n  get languages() {\n    return this._options.languages;\n  } // 当前作用域支持的语言列表[{name,title,fallback}]\n  get manager() {\n    return this._manager;\n  } // 引用全局VoerkaI18n配置，注册后自动引用\n  get appScope() {\n    return this._manager.scope;\n  } // 全局作用域\n  get interpolator() {\n    return this._flexVars!;\n  } // 变量插值处理器,使用flexvars\n  get logger() {\n    return this._logger!;\n  } // 日志记录器\n  get t(): VoerkaI18nTranslate {\n    return this.translate.bind(this) as VoerkaI18nTranslate;\n  }\n  set t(t: Function) {\n    this.translate = t.bind(this);\n  }\n  get Translate(): TranslateComponent {\n    return this._getTranslateComponent()! as TranslateComponent;\n  }\n  get activeMessages() {\n    return this._activeMessages;\n  } // 当前语言包\n  get activeParagraphs() {\n    return this._activeParagraphs;\n  } // 当前段落\n  get activeLanguage(): string {\n    return this._activeLanguage;\n  }\n  get storage() {\n    return this.getScopeOption<IVoerkaI18nStorage>(\"storage\");\n  }\n  get loader() {\n    return this.getScopeOption<VoerkaI18nLanguageLoader>(\"loader\");\n  }\n  get $t(): VoerkaI18nTranslate<TranslateTransformResult> {\n    return (\n      message: string,\n      vars?: VoerkaI18nTranslateVars,\n      options?: VoerkaI18nTranslateOptions\n    ) => {\n      this._getTranslateTransformer();\n      if (!options) options = {};\n      options.transform = true;\n      return this.translate(message, vars, options);\n    };\n  }\n  /**\n   * 有些配置项是以appScope为准\n   * @param name\n   * @returns\n   */\n  private getScopeOption<T>(name: string): T | undefined {\n    const scopeOpts = this._options as any;\n    // @ts-ignore\n    return (\n      this.attached\n        ? scopeOpts[name] ||\n          (this.library ? (this._manager as any)[name] : undefined)\n        : scopeOpts[name]\n    ) as T | undefined;\n  }\n\n  private _initOptions() {\n    // 1. 检测语言配置列表是否有效\n    if (!Array.isArray(this.languages)) {\n      this.logger.warn(\n        \"[VoerkaI18n] invalid language settings, will use default language settings.\"\n      );\n      this._options.languages = Object.assign([], DefaultLanguageSettings);\n    } else if (this.languages.length == 0) {\n      throw new Error(\"[VoerkaI18n] must provide valid language settings.\");\n    }\n    // 2.为语言配置默认回退语言，并且提取默认语言和活动语言\n    let activeLang: string, defaultLang: string;\n    this.languages.forEach((language) => {\n      if (language.default) defaultLang = language.name;\n      if (language.active) activeLang = language.name;\n    });\n    // 3. 确保提供了有效的默认语言和活动语言\n    const lanMessages = this._options.messages;\n    if (!(defaultLang! in lanMessages))\n      defaultLang = Object.keys(lanMessages)[0];\n    if (!(activeLang! in lanMessages)) activeLang = defaultLang!;\n    if (!(defaultLang! in lanMessages)) {\n      throw new Error(\n        \"[VoerkaI18n] invalid language configuration, must provide valid default and active languages.\"\n      );\n    }\n    this._activeLanguage = activeLang!;\n    this._defaultLanguage = defaultLang!;\n\n    if (!this._options.library && !this._options.storage) {\n      this._options.storage = LocalStorage;\n    }\n    // 初始化时，默认和激活的语言包只能是静态语言包，不能是动态语言包\n    // 因为初始化时激活语言需要马上显示，如果是异步语言包，会导致显示延迟\n    if (isFunction(this.messages[this._defaultLanguage])) {\n      throw new Error(\n        \"[VoerkaI18n] default language pack must be static content, can't use async load way.\"\n      );\n    }\n    this._activeMessages = this.messages[\n      this._activeLanguage\n    ] as VoerkaI18nLanguageMessages;\n    this._activeParagraphs = this.paragraphs[\n      this._activeLanguage\n    ] as VoerkaI18nLanguageParagraphs;\n  }\n  /**\n   * 对输入的语言配置进行处理\n   * - 将en配置为默认回退语言\n   * - 确保提供了有效的默认语言和活动语言\n   */\n  private _init() {\n    this._logger = createLogger(this._options.log);\n    // 处理初始化参数\n    this._initOptions();\n    // appScope需要从应用中恢复保存的\n    if (!this.library) this.restoreLanguage();\n    // 初始化格式化器\n    this._initInterpolators();\n    // 将当前实例注册到全局单例VoerkaI18nManager中\n    this.registerToManager();\n    // 初始化格式化器\n    this._formatterManager = new VoerkaI18nFormatterManager(this);\n  }\n  /**\n   *\n   * 当scope上在全局应用scope创建之后时，会调用此方法\n   * 本方法在注册到全局VoerkaI18nManager时由Manager调用，\n   *\n   * 注意：本方法仅当\n   * scope是在全局应用scope创建之前时才会调用\n   *\n   * 如果scope是在全局应用scope创建之后时创建的，则不会调用此方法\n   * 因为此时scope会直接注册到全局VoerkaI18nManager中，不会保存到全局变量__VoerkaI18nScopes__中\n   *\n   * @param manager\n   * @returns\n   */\n  bind(manager: VoerkaI18nManager) {\n    this._manager = manager;\n    this._manager.once(\"init\", this._initRefresh.bind(this));\n  }\n  /**\n   * 第一次初始化时刷新语言\n   */\n  private _initRefresh(getInitLanguage?: () => string) {\n    if (this.library) {\n      this.refresh(getInitLanguage && getInitLanguage());\n    } else {\n      const tasks: any[] = [];\n      if (\n        this._defaultLanguage !== this._activeLanguage ||\n        isFunction(this.activeMessages)\n      ) {\n        tasks.push(this.refresh(undefined, { patch: false }));\n      }\n      tasks.push(this._patch());\n      Promise.all(tasks).then(() => {\n        this.emit(\"ready\", this.activeLanguage, true);\n        this._setLanguageAttr();\n      });\n    }\n  }\n\n  /**\n   * 注册当前作用域到全局作用域\n   * @param callback\n   */\n  private registerToManager() {\n    if (!this.attached) return;\n    const isAppScope = !this.options.library;\n    if (isAppScope) {\n      if (globalThis.VoerkaI18n && globalThis.VoerkaI18n.scope && isBrowser()) {\n        console.warn(\"Only can have one i18nScope with library=false\");\n      }\n      this._manager = new VoerkaI18nManager(this);\n    }\n    // 当前作用域是库时，如果此时Manager和应用Scope还没创建就先保存到了全局变量__VoerkaI18nScopes__中\n    // 当应用Scope创建后，会再调用registerToManager方法注册到全局VoerkaI18nManager中\n    const manager = globalThis.VoerkaI18n as VoerkaI18nManager;\n    if (manager && isI18nManger(manager)) {\n      if (isAppScope) {\n        this._initRefresh();\n      } else {\n        manager.register(this);\n      }\n    } else {\n      if (!globalThis.__VoerkaI18nScopes__)\n        globalThis.__VoerkaI18nScopes__ = [];\n      globalThis.__VoerkaI18nScopes__.push(this);\n    }\n  }\n  async change(language: string) {\n    let finalLang: string = this.activeLanguage;\n    if (this.attached) {\n      finalLang = await this._manager.change(language);\n    } else {\n      finalLang = await this.refresh(language);\n    }\n    return finalLang;\n  }\n  /**\n   * 检查当前环境是是否是在浏览器环境中，如果是，则在body上添加language=<activeLanguage>属性\n   */\n  protected _setLanguageAttr() {\n    if (this.library || !isBrowser()) return;\n    try {\n      const injectLangAttr = this._options.injectLangAttr;\n      if (!injectLangAttr) return;\n      const ele =\n        injectLangAttr === true\n          ? document.body\n          : document.body.querySelector(injectLangAttr as string);\n      if (ele) {\n        ele.setAttribute(\"lang\", this.activeLanguage);\n      }\n    } catch {}\n  }\n  /**\n   *\n   * @param message\n   * @returns\n   */\n  getRawMessage(message: string) {\n    if (isMessageId(message)) {\n      if (message in this.defaultMessages) {\n        return (this.defaultMessages as any)[message];\n      }\n    } else {\n      return message;\n    }\n  }\n  getMessageId(message: any) {\n    if (isMessageId(message)) {\n      return message;\n    } else {\n      if (message in this.idMap) {\n        return this.idMap[message];\n      }\n    }\n  }\n}\n","/**\n * \n * 提供格式化相关逻辑\n * \n */\nimport type { VoerkaI18nScope } from \"@/scope\";\nimport { Dict, LanguageName  } from \"@/types\";\nimport type { VoerkaI18nFormatter } from \"./types\";  \nimport { VoerkaI18nFormatterBuilder } from './types';\n\n\nexport function createFormatter<Args extends Dict,Config extends  Dict = Args>(\n    formatter: VoerkaI18nFormatter<Args, Config>,\n    configs? : Partial<Record<LanguageName,Partial<Config>>>,\n    defaultConfig? : Partial<Config>\n){\n    return ((scope: VoerkaI18nScope)=>{\n        const oldNext = formatter.next\n        formatter.next = function (value, args, ctx) {\n            const langConfig = ctx.getConfig as any // 语言包中的$config\n            ctx.getConfig = () => {\n                return Object.assign({}, \n                    defaultConfig,\n                    configs?.[scope.activeLanguage],                    \n                    langConfig(formatter.name),                    \n                ) as Config;\n            }\n            return oldNext.call(this, value, args, ctx);\n        }  \n        return formatter as VoerkaI18nFormatter<Args, Config>\n    }) as VoerkaI18nFormatterBuilder<Args,Config>\n}\n \n","import type { VoerkaI18nPlugin } from \"./types\"\n\n\nexport function definePlugin(plugin:VoerkaI18nPlugin){    \n    const manager = globalThis.VoerkaI18n\n    if(manager){\n        manager.registerPlugin(plugin)\n    }else{\n        if(!globalThis.__VoerkaI18nPlugins__) globalThis.__VoerkaI18nPlugins__ = []\n        globalThis.__VoerkaI18nPlugins__.push(plugin)\n    }\n}"]}