From c238007c22633067f46e90adbec0bedf8693264c Mon Sep 17 00:00:00 2001 From: Vikas Burman Date: Fri, 10 May 2019 23:55:21 -0400 Subject: [PATCH] ... --- dist/flair.app.js | 82 +++++++++--------- dist/flair.app.min.js | 6 +- dist/flair.app.min.js.gz | Bin 8345 -> 8388 bytes dist/flair.js | 8 +- dist/flair.min.js | 6 +- dist/flair.min.js.gz | Bin 25009 -> 25008 bytes dist/preamble.js | 4 +- docs/v1/examples/js/flair.js | 8 +- package.json | 2 +- src/flair.app/flair.app/ClientHost.js | 30 +++---- src/flair.app/flair.app/ServerHost.js | 10 +-- src/flair.app/flair.boot/ClientRouter.js | 4 +- src/flair.app/flair.boot/Middlewares.js | 2 +- src/flair.app/flair.boot/NodeEnv.js | 6 +- src/flair.app/flair.boot/ServerRouter.js | 2 +- .../flair.ui.vue/@3-VueComponentMembers.js | 4 +- src/flair.app/flair.ui.vue/VuePlugin.js | 4 +- src/flair.app/flair.ui.vue/VueSetup.js | 10 +-- src/flair.app/flair.ui.vue/VueView.js | 2 +- src/flair.app/settings.json | 4 +- 20 files changed, 98 insertions(+), 96 deletions(-) diff --git a/dist/flair.app.js b/dist/flair.app.js index 5592bde5..cac71848 100644 --- a/dist/flair.app.js +++ b/dist/flair.app.js @@ -5,8 +5,8 @@ * * Assembly: flair.app * File: ./flair.app.js - * Version: 0.6.6 - * Sat, 11 May 2019 03:36:59 GMT + * Version: 0.6.7 + * Sat, 11 May 2019 03:55:13 GMT * * (c) 2017-2019 Vikas Burman * MIT @@ -58,7 +58,7 @@ AppDomain.loadPathOf('flair.app', __currentPath); // settings of this assembly - let settings = JSON.parse('{"boot":{"load":[]},"di":{"container":{}},"client":{"view":{"el":"main","title":"","transition":""},"url":{"404":"/404","hashbang":false,"i18n":false,"home":"/"},"vue":{"components":[],"filters":[],"mixins":[],"directives":[],"plugins":[],"pluginOptions":{}},"i18n":{"enabled":true,"locale":"en","locales":[{"code":"en","name":"English","native":"English"}]},"routing":{"mounts":{"main":"/"},"main-options":[],"main-interceptors":[]}},"server":{"express":{"server-http":{"enable":false,"port":80,"timeout":-1},"server-https":{"enable":false,"port":443,"timeout":-1,"privateKey":"","publicCert":""}},"envVars":{"vars":[],"options":{"overwrite":true}},"routing":{"mounts":{"main":"/"},"main-appSettings":[],"main-middlewares":[],"main-interceptors":[]}}}'); + let settings = JSON.parse('{"boot":{"load":[]},"di":{"container":{}},"client":{"view":{"el":"main","title":"","transition":""},"url":{"404":"/404","hashbang":false,"i18n":false,"home":"/"},"vue":{"components":[],"filters":[],"mixins":[],"directives":[],"plugins":[],"pluginOptions":{}},"i18n":{"enabled":true,"locale":"en","locales":[{"code":"en","name":"English","native":"English"}]},"routing":{"mounts":{"main":"/"},"main-options":[],"main-interceptors":[]}},"server":{"express":{"server-http":{"enable":false,"port":80,"timeout":-1},"server-https":{"enable":false,"port":443,"timeout":-1,"privateKey":"","publicCert":""}},"envVars":{"vars":[],"options":{"overwrite":true}},"routing":{"mounts":{"main":"/"},"main-appSettings":[],"main-middlewares":[],"main-interceptors":[],"main-resHeaders":[]}}}'); let settingsReader = flair.Port('settingsReader'); if (typeof settingsReader === 'function') { let externalSettings = settingsReader('flair.app'); @@ -286,7 +286,7 @@ // each i18n resource file is defined as: // "ns": "json-file-name" // when loaded, each ns will convert into JSON object from defined file - if(settings.i18n.enabled && this.i18n) { + if(settings.client.i18n.enabled && this.i18n) { let i18ResFile = ''; for(let i18nNs in this.i18n) { if (this.i18n.hasOwnProperty(i18nNs)) { @@ -376,7 +376,7 @@ component.methods['route'] = (routeName, placeholders) => { return _this.route(routeName, placeholders); }; // i18n specific built-in methods - if (settings.i18n.enabled) { + if (settings.client.i18n.enabled) { // supporting built-in method: locale // e.g., {{ locale() }} will give: 'en' component.methods['locale'] = (value) => { return _this.locale(value); }; @@ -829,18 +829,18 @@ // localization support (start) $$('state'); $$('private'); - this.currentLocale = settings.i18n.locale; + this.currentLocale = settings.client.i18n.locale; this.defaultLocale = { - get: () => { return settings.i18n.locale; }, + get: () => { return settings.client.i18n.locale; }, set: noop }; this.supportedLocales = { - get: () => { return settings.i18n.locales.slice(); }, + get: () => { return settings.client.i18n.locales.slice(); }, set: noop }; this.locale = (newLocale, isSuppressRefresh) => { - if (!settings.i18n.enabled) { return ''; } + if (!settings.client.i18n.enabled) { return ''; } // update value and refresh for changes (if required) if (newLocale && this.currentLocale !== newLocale) { @@ -848,7 +848,7 @@ // change url and then redirect to new URL if (!isSuppressRefresh) { - if (settings.url.i18n) { + if (settings.client.url.i18n) { // set new path with replaced locale // this change will also go in history window.location.hash = this.replaceLocale(window.location.hash); @@ -878,7 +878,7 @@ }; $$('private'); this.extractLocale = (path) => { - if (!settings.url.i18n) { return ''; } + if (!settings.client.url.i18n) { return ''; } // pick first path element let idx = path.indexOf('/'); @@ -904,7 +904,7 @@ $$('private'); this.replaceLocale = (path) => { // replace current locale with given locale - if (settings.url.i18n) { + if (settings.client.url.i18n) { // clean path first path = this.cleanPath(path); @@ -930,14 +930,14 @@ path = this.cleanPath(path); // add hash - if (settings.url.hashbang) { + if (settings.client.url.hashbang) { path = '/#!/' + path; } else { path = '/#/' + path; } // add i18n - if (settings.i18n.enabled && settings.url.i18n) { + if (settings.client.i18n.enabled && settings.client.url.i18n) { path = (this.currentLocale || this.defaultLocale) + '/' + path; } @@ -993,7 +993,7 @@ // each item is: { name: '', value: } // name: as in above link (as-is) // value: as defined in above link - let pageOptions = settings[`${mountName}-options`]; + let pageOptions = settings.client.routing[`${mountName}-options`]; if (pageOptions && pageOptions.length > 0) { for(let pageOption of pageOptions) { appOptions[pageOption.name] = pageOption.value; @@ -1019,13 +1019,13 @@ mainApp.base('/'); // create one instance of page app for each mounted path - for(let mountName of Object.keys(settings.routing.mounts)) { + for(let mountName of Object.keys(settings.client.routing.mounts)) { if (mountName === 'main') { mountPath = '/'; mount = mainApp; } else { appOptions = getOptions(mountName); - mountPath = settings.routing.mounts[mountName]; + mountPath = settings.client.routing.mounts[mountName]; mount = page.create(appOptions); // create a sub-app mount.strict(appOptions.strict); mount.base(mountPath); @@ -1052,8 +1052,8 @@ let path = this.cleanPath(window.location.hash); // handle i18n specific routing - if (settings.i18n.enabled) { - if (settings.url.i18n) { // if i18n type urls are being used + if (settings.client.i18n.enabled) { + if (settings.client.url.i18n) { // if i18n type urls are being used // extract locale from path let extractedLocale = this.extractLocale(path); @@ -1112,7 +1112,7 @@ window.addEventListener('hashchange', hashChangeHandler); // navigate to home - this.app.redirect(settings.url.home); + this.app.redirect(settings.client.url.home); // ready console.log(`${AppDomain.app().info.name}, v${AppDomain.app().info.version}`); // eslint-disable-line no-console @@ -1148,8 +1148,8 @@ let mountedApps = {}, httpServer = null, httpsServer = null, - httpSettings = settings.express['server-http'], - httpsSettings = settings.express['server-https']; + httpSettings = settings.server.express['server-http'], + httpsSettings = settings.server.express['server-https']; $$('override'); this.construct = (base) => { @@ -1176,7 +1176,7 @@ // each item is: { name: '', value: } // name: as in above link (as-is) // value: as defined in above link - let appSettings = settings[`${mountName}-appSettings`]; + let appSettings = settings.server.routing[`${mountName}-appSettings`]; if (appSettings && appSettings.length > 0) { for(let appSetting of appSettings) { mount.set(appSetting.name, appSetting.value); @@ -1191,12 +1191,12 @@ // create one instance of express app for each mounted path let mountPath = '', mount = null; - for(let mountName of Object.keys(settings.routing.mounts)) { + for(let mountName of Object.keys(settings.server.routing.mounts)) { if (mountName === 'main') { mountPath = '/'; mount = mainApp; } else { - mountPath = settings.routing.mounts[mountName]; + mountPath = settings.server.routing.mounts[mountName]; mount = express(); // create a sub-app } @@ -1435,7 +1435,7 @@ // each interceptor is derived from ViewInterceptor and // run method of it takes ctx, can update it // each item is: "InterceptorTypeQualifiedName" - let mountInterceptors = settings[`${mount.name}-interceptors`] || []; + let mountInterceptors = settings.client.routing[`${mount.name}-interceptors`] || []; runInterceptors(mountInterceptors, ctx).then(() => { if (!ctx.$stop) { handleRoute(); @@ -1462,7 +1462,7 @@ // catch 404 for this mount and forward to error handler mount.app("*", (ctx) => { // mount.app = page object/func // redirect to 404 route, which has to be defined route - let url404 = settings.url['404']; + let url404 = settings.client.url['404']; if (url404) { ctx.handled = true; if (ctx.pathname !== url404) { @@ -1535,7 +1535,7 @@ // define it as: "return (res, path, stat) => { res.set('x-timestamp', Date.now()) }" // this string will be passed to new Function(...) and returned values will be used as value of option // all object type arguments will be scanned for string values that start with 'return ' and will be tried to convert into a function - let middlewares = settings[`${mount.name}-middlewares`]; + let middlewares = settings.server.routing[`${mount.name}-middlewares`]; if (middlewares && middlewares.length > 0) { let mod = null, func = null; @@ -1608,12 +1608,12 @@ this.boot = async (base) => { base(); - if (settings.envVars.vars.length > 0) { + if (settings.server.nsenvVars.vars.length > 0) { const nodeEnv = await include('node-env-file | x'); if (nodeEnv) { - for(let envVar of settings.envVars.vars) { - nodeEnv(AppDomain.resolvePath(envVar), settings.envVars.options); + for(let envVar of settings.server.envVars.vars) { + nodeEnv(AppDomain.resolvePath(envVar), settings.server.envVars.options); } } } @@ -1771,7 +1771,7 @@ // each interceptor is derived from RestInterceptor and // run method of it takes req, can update it, also takes res method and can generate response, in case request is being stopped // each item is: "InterceptorTypeQualifiedName" - let mountInterceptors = settings[`${mount.name}-interceptors`] || []; + let mountInterceptors = settings.server.routing[`${mount.name}-interceptors`] || []; runInterceptors(mountInterceptors, req, res).then(() => { if (!req.$stop) { handleRoute(); @@ -2212,8 +2212,8 @@ Class('VuePlugin', function() { this.construct = (name) => { // load options, if name and corresponding options are defined - if (settings.vue.pluginOptions[name]) { - this.options = Object.assign({}, settings.vue.pluginOptions[name]); // keep a copy + if (settings.client.vue.pluginOptions[name]) { + this.options = Object.assign({}, settings.client.vue.pluginOptions[name]); // keep a copy } }; @@ -2252,7 +2252,7 @@ // load Vue global plugins // each plugin in array is defined as: // { "name": "name", "type": "ns.typeName" } - let plugins = settings.vue.plugins, + let plugins = settings.client.vue.plugins, PluginType = null, plugin = null; for(let item of plugins) { @@ -2275,7 +2275,7 @@ // load Vue global mixins // each mixin in array is defined as: // { "name": "name", "type": "ns.typeName" } - let mixins = settings.vue.mixins, + let mixins = settings.client.vue.mixins, MixinType = null, mixin = null; for(let item of mixins) { @@ -2298,7 +2298,7 @@ // load Vue global directives // each directive in array is defined as: // { "name": "name", "type": "ns.typeName" } - let directives = settings.vue.directives, + let directives = settings.client.vue.directives, DirectiveType = null, directive = null; for(let item of directives) { @@ -2321,7 +2321,7 @@ // load Vue global filters // each filter in array is defined as: // { "name": "name", "type": "ns.typeName" } - let filters = settings.vue.filters, + let filters = settings.client.vue.filters, FilterType = null, filter = null; for(let item of filters) { @@ -2344,7 +2344,7 @@ // register global components // each component in array is defined as: // { "name": "name", "type": "ns.typeName" } - let components = settings.vue.components, + let components = settings.client.vue.components, ComponentType = null, component = null; for(let item of components) { @@ -2386,7 +2386,7 @@ $$('override'); this.construct = (base) => { - base(settings.view.el, settings.view.title, settings.view.transition); + base(settings.client.view.el, settings.client.view.title, settings.client.view.transition); }; $$('private'); @@ -2481,7 +2481,7 @@ AppDomain.context.current().currentAssemblyBeingLoaded(''); // register assembly definition object - AppDomain.registerAdo('{"name":"flair.app","file":"./flair.app{.min}.js","mainAssembly":"flair","desc":"True Object Oriented JavaScript","title":"Flair.js","version":"0.6.6","lupdate":"Sat, 11 May 2019 03:36:59 GMT","builder":{"name":"flairBuild","version":"1","format":"fasm","formatVersion":"1","contains":["init","func","type","vars","reso","asst","rout","sreg"]},"copyright":"(c) 2017-2019 Vikas Burman","license":"MIT","types":["flair.app.Bootware","flair.app.Handler","flair.app.App","flair.app.Host","flair.ui.vue.VueComponentMembers","flair.api.RestHandler","flair.api.RestInterceptor","flair.app.BootEngine","flair.app.ClientHost","flair.app.ServerHost","flair.boot.ClientRouter","flair.boot.DIContainer","flair.boot.Middlewares","flair.boot.NodeEnv","flair.boot.ResHeaders","flair.boot.ServerRouter","flair.ui.ViewHandler","flair.ui.ViewInterceptor","flair.ui.ViewState","flair.ui.ViewTransition","flair.ui.vue.VueComponent","flair.ui.vue.VueDirective","flair.ui.vue.VueFilter","flair.ui.vue.VueLayout","flair.ui.vue.VueMixin","flair.ui.vue.VuePlugin","flair.ui.vue.VueSetup","flair.ui.vue.VueView"],"resources":[],"assets":[],"routes":[{"name":"flair.ui.vue.test2","mount":"main","index":101,"verbs":[],"path":"test/:id","handler":"abc.xyz.Test"},{"name":"flair.ui.vue.exit2","mount":"main","index":103,"verbs":[],"path":"exit","handler":"abc.xyz.Exit"}]}'); + AppDomain.registerAdo('{"name":"flair.app","file":"./flair.app{.min}.js","mainAssembly":"flair","desc":"True Object Oriented JavaScript","title":"Flair.js","version":"0.6.7","lupdate":"Sat, 11 May 2019 03:55:13 GMT","builder":{"name":"flairBuild","version":"1","format":"fasm","formatVersion":"1","contains":["init","func","type","vars","reso","asst","rout","sreg"]},"copyright":"(c) 2017-2019 Vikas Burman","license":"MIT","types":["flair.app.Bootware","flair.app.Handler","flair.app.App","flair.app.Host","flair.ui.vue.VueComponentMembers","flair.api.RestHandler","flair.api.RestInterceptor","flair.app.BootEngine","flair.app.ClientHost","flair.app.ServerHost","flair.boot.ClientRouter","flair.boot.DIContainer","flair.boot.Middlewares","flair.boot.NodeEnv","flair.boot.ResHeaders","flair.boot.ServerRouter","flair.ui.ViewHandler","flair.ui.ViewInterceptor","flair.ui.ViewState","flair.ui.ViewTransition","flair.ui.vue.VueComponent","flair.ui.vue.VueDirective","flair.ui.vue.VueFilter","flair.ui.vue.VueLayout","flair.ui.vue.VueMixin","flair.ui.vue.VuePlugin","flair.ui.vue.VueSetup","flair.ui.vue.VueView"],"resources":[],"assets":[],"routes":[{"name":"flair.ui.vue.test2","mount":"main","index":101,"verbs":[],"path":"test/:id","handler":"abc.xyz.Test"},{"name":"flair.ui.vue.exit2","mount":"main","index":103,"verbs":[],"path":"exit","handler":"abc.xyz.Exit"}]}'); // assembly load complete if (typeof onLoadComplete === 'function') { diff --git a/dist/flair.app.min.js b/dist/flair.app.min.js index 98a7eaf3..7016ca69 100644 --- a/dist/flair.app.min.js +++ b/dist/flair.app.min.js @@ -5,10 +5,10 @@ * * Assembly: flair.app * File: ./flair.app.js - * Version: 0.6.6 - * Sat, 11 May 2019 03:36:59 GMT + * Version: 0.6.7 + * Sat, 11 May 2019 03:55:13 GMT * * (c) 2017-2019 Vikas Burman * MIT */ -!function(t,e){"use strict";"function"==typeof!0&&(!0).amd?(!0)(e):"object"==typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=e),module.exports=exports=e):t["flair.app"]=e}(this,async function(t){"use strict";const e=void 0!==!0?require("flairjs"):(!0).flair,{Class:i,Struct:a,Enum:n,Interface:r,Mixin:s,Aspects:o,AppDomain:l,$$:c,attr:p,bring:h,Container:u,include:d,Port:f,on:m,post:y,telemetry:v,Reflector:w,Serializer:$,Tasks:g,as:b,is:x,isComplies:O,isDerivedFrom:V,isAbstract:A,isSealed:S,isStatic:F,isSingleton:I,isDeprecated:C,isImplements:E,isInstanceOf:M,isMixed:D,getAssembly:P,getAttr:L,getContext:H,getResource:j,getRoute:T,getType:B,ns:R,getTypeOf:k,getTypeName:W,typeOf:z,dispose:N,using:q,Args:J,Exception:U,noop:K,nip:G,nim:_,nie:Q,event:X}=e,{TaskInfo:Y}=e.Tasks,{env:Z}=e.options,{forEachAsync:tt,replaceAll:et,splitAndTrim:it,findIndexByProp:at,findItemByProp:nt,which:rt,guid:st,isArrowFunc:ot,isASyncFunc:lt,sieve:ct,deepMerge:pt,b64EncodeUnicode:ht,b64DecodeUnicode:ut}=e.utils,{$$static:dt,$$abstract:ft,$$virtual:mt,$$override:yt,$$sealed:vt,$$private:wt,$$privateSet:$t,$$protected:gt,$$protectedSet:bt,$$readonly:xt,$$async:Ot,$$overload:Vt,$$enumerate:At,$$dispose:St,$$post:Ft,$$on:It,$$timer:Ct,$$type:Et,$$args:Mt,$$inject:Dt,$$resource:Pt,$$asset:Lt,$$singleton:Ht,$$serialize:jt,$$deprecate:Tt,$$session:Bt,$$state:Rt,$$conditional:kt,$$noserialize:Wt,$$ns:zt}=c,Nt=Z.isServer||Z.isWorker?null:(!0).document,qt=l.context.current().name,Jt=t,Ut=Jt.substr(0,Jt.lastIndexOf("/")+1);l.loadPathOf("flair.app",Ut);let Kt=JSON.parse('{"boot":{"load":[]},"di":{"container":{}},"client":{"view":{"el":"main","title":"","transition":""},"url":{"404":"/404","hashbang":false,"i18n":false,"home":"/"},"vue":{"components":[],"filters":[],"mixins":[],"directives":[],"plugins":[],"pluginOptions":{}},"i18n":{"enabled":true,"locale":"en","locales":[{"code":"en","name":"English","native":"English"}]},"routing":{"mounts":{"main":"/"},"main-options":[],"main-interceptors":[]}},"server":{"express":{"server-http":{"enable":false,"port":80,"timeout":-1},"server-https":{"enable":false,"port":443,"timeout":-1,"privateKey":"","publicCert":""}},"envVars":{"vars":[],"options":{"overwrite":true}},"routing":{"mounts":{"main":"/"},"main-appSettings":[],"main-middlewares":[],"main-interceptors":[]}}}'),Gt=e.Port("settingsReader");if("function"==typeof Gt){let t=Gt("flair.app");t&&(Kt=pt([Kt,t],!1))}Kt=Object.freeze(Kt);let _t=JSON.parse("{}");_t=Object.freeze(_t);let Qt=()=>{};l.context.current().currentAssemblyBeingLoaded("./flair.app{.min}.js"),await(async()=>{c("abstract"),c("ns","flair.app"),i("Bootware",function(){c("virtual"),this.construct=((t,e,i)=>{let a=J("name: string, version: string","name: string, version: string, isMountSpecific: boolean","name: string, isMountSpecific: boolean","name: string")(t,e,i);a.throwOnError(this.construct),this.info=Object.freeze({name:a.values.name||"",version:a.values.version||"",isMountSpecific:a.values.isMountSpecific||!1})}),c("virtual"),c("async"),this.boot=K,c("readonly"),this.info=null,c("virtual"),c("async"),this.ready=K,c("virtual"),this.dispose=K})})(),await(async()=>{const{IDisposable:t}=R();c("ns","flair.app"),i("Handler",[t],function(){c("virtual"),this.construct=(()=>{}),c("virtual"),this.dispose=(()=>{})})})(),await(async()=>{const{IDisposable:t}=R(),{Bootware:e}=R("flair.app");c("ns","flair.app"),i("App",e,[t],function(){c("override"),this.construct=(t=>{let e=P(this);t(e.title,e.version)}),c("override"),this.boot=(async t=>{t(),l.host().error.add(this.onError)}),c("virtual"),this.start=(async()=>{if(!Z.isServer&&!Z.isWorker){const{ViewState:t}=R("flair.ui");new t}}),c("virtual"),this.stop=(async()=>{if(!Z.isServer&&!Z.isWorker){const{ViewState:t}=R("flair.ui");(new t).clear()}}),c("virtual"),this.onError=(t=>{throw U.OperationFailed(t.error,this.onError)}),c("override"),this.dispose=(t=>{t(),l.host().error.remove(this.onError)})})})(),await(async()=>{const{IDisposable:t}=R(),{Bootware:e}=R("flair.app");c("ns","flair.app"),i("Host",e,[t],function(){c("privateSet"),this.isStarted=!1,c("virtual"),this.start=(async()=>{this.isStarted=!0}),c("virtual"),this.stop=(async()=>{this.isStarted=!1}),this.restart=(async()=>{await this.stop(),await this.start()}),this.error=X(t=>({error:t})),this.raiseError=(t=>{this.error(t)})})})(),await(async()=>{c("ns","flair.ui.vue"),s("VueComponentMembers",function(){var t=this;c("private"),this.define=(async()=>{const e=await d("vue/vue{.min}.js"),{ViewState:i}=R("flair.ui"),{VueFilter:a,VueMixin:n,VueDirective:r,VueComponent:s}=R("flair.ui.vue");let o=new i,l={},c=f("clientFile");if(this.style&&this.style.endsWith(".css")&&(this.style=await c(this.style)),this.html&&this.html.endsWith(".html")&&(this.html=await c(this.html)),Kt.i18n.enabled&&this.i18n){let t="";for(let e in this.i18n)this.i18n.hasOwnProperty(e)&&(t=this.$self.assemblyName+"/locales/"+this.locale()+"/"+this.i18n[e],this.i18n[e]=await c(t))}if(this.template?l.template=this.template:this.style&&this.html?l.template="
"+this.html.trim()+"
":this.html&&(l.template=this.html.trim()),this.render&&"function"==typeof this.render&&(l.render=this.render),"boolean"==typeof this.functional&&(l.functional=this.functional),this.computed)for(let t in this.computed)this.computed.hasOwnProperty(t)&&(l.computed=l.computed||{},l.computed[t]=this.computed[t]);if(this.state&&Array.isArray(this.state))for(let t of this.state){if(l.computed[t.name])throw U.InvalidDefinition(`Computed (state) property already defined. (${t.name})`);l.computed=l.computed||{},l.computed[t.name]={get:function(){return o.get(t.path,t.name)||t.value},set:function(e){o.set(t.path,t.name,e)}}}if(this.methods)for(let t in this.methods)this.methods.hasOwnProperty(t)&&(l.methods=l.methods||{},l.methods[t]=this.methods[t]);if(l.methods=l.methods||{},l.methods["path"]=(e=>t.path(e)),l.methods=l.methods||{},l.methods["route"]=((e,i)=>t.route(e,i)),Kt.i18n.enabled&&(l.methods["locale"]=(e=>t.locale(e)),l.methods["i18n"]=((e,i,a)=>t.i18n&&t.i18n[e]&&t.i18n[e][i]?t.i18n[e][i]||a||"(i18n: 404)":a||"(i18n: 404)")),this.watch)for(let t in this.watch)this.watch.hasOwnProperty(t)&&(l.watch=l.watch||{},l.watch[t]=this.watch[t]);if(this.lifecycle)for(let t in this.lifecycle)this.lifecycle.hasOwnProperty(t)&&(l[t]=this.lifecycle[t]);if(this.components&&Array.isArray(this.components)){let t=null,i=null;for(let a of this.components){if(!a.name)throw U.OperationFailed(`Component name cannot be empty. (${a.type})`);if(!a.type)throw U.OperationFailed(`Component type cannot be empty. (${a.name})`);if(!(t=b(await d(a.name),s)))throw U.InvalidArgument(a.type);try{if(i=new t,e.options.components[a.name])throw U.Duplicate(`Component already registered. (${a.name})`);if(i.components&&i.components[a.name])throw U.Duplicate(`Component already registered. (${a.name})`);i.components=i.components||{},i.components[a.name]=await i.factory()}catch(t){throw U.OperationFailed(`Component registration failed. (${a.type})`,t)}}}if(this.mixins&&Array.isArray(this.mixins)){let t=null,e=null;for(let i of this.mixins){if(!i.name)throw U.OperationFailed(`Mixin name cannot be empty. (${i.type})`);if(!i.type)throw U.OperationFailed(`Mixin type cannot be empty. (${i.name})`);if(!(t=b(await d(i.type),n)))throw U.InvalidArgument(i.type);try{if(e=new t,l.mixins&&l.mixins[i.name])throw U.Duplicate(`Mixin already registered. (${i.name})`);l.mixins=l.mixins||{},l.mixins[i.name]=await e.factory()}catch(t){throw U.OperationFailed(`Mixin registration failed. (${i.type})`,t)}}}if(this.directives&&Array.isArray(this.directives)){let t=null,e=null;for(let i of this.directives){if(!i.name)throw U.OperationFailed(`Directive name cannot be empty. (${i.type})`);if(!i.type)throw U.OperationFailed(`Directive type cannot be empty. (${i.name})`);if(!(t=b(await d(i.type),r)))throw U.InvalidArgument(i.type);try{if(e=new t,l.directives&&l.directives[i.name])throw U.Duplicate(`Directive already registered. (${i.name})`);l.directives=l.directives||{},l.directives[i.name]=await e.factory()}catch(t){throw U.OperationFailed(`Directive registration failed. (${i.type})`,t)}}}if(this.filters&&Array.isArray(this.filters)){let t=null,e=null;for(let i of this.filters){if(!i.name)throw U.OperationFailed(`Filter name cannot be empty. (${i.type})`);if(!i.type)throw U.OperationFailed(`Filter type cannot be empty. (${i.name})`);if(!(t=b(await d(i.type),a)))throw U.InvalidArgument(i.type);try{if(e=new t,l.filters&&l.filters[i.name])throw U.Duplicate(`Filter already registered. (${i.name})`);l.filters=l.filters||{},l.filters[i.name]=await e.factory()}catch(t){throw U.OperationFailed(`Filter registration failed. (${i.type})`,t)}}}return this.provide&&Array.isArray(this.provide)&&(l.provide=this.provide),this.inject&&Array.isArray(this.inject)&&(l.inject=this.inject),l}),c("protected"),this.locale=(t=>l.host().locale(t)),c("protected"),this.path=(t=>l.host().path(t)),c("protected"),this.route=((t,e)=>l.host().route(t,e)),c("protected"),this.i18n=null,c("protected"),this.style="",c("protected"),this.html="",c("protected"),this.template=null,c("protected"),this.render=null,c("protected"),this.functional=!1,c("protected"),this.computed=null,c("protected"),this.state=null,c("protected"),this.methods=null,c("protected"),this.watch=null,c("protected"),this.lifecycle=null,c("protected"),this.components=null,c("protected"),this.mixins=null,c("protected"),this.directives=null,c("protected"),this.filters=null,c("protected"),this.provide=null,c("protected"),this.inject=null})})(),await(async()=>{const{Handler:t}=R("flair.app");c("ns","flair.api"),i("RestHandler",t,function(){c("virtual"),this.get=K,c("virtual"),this.post=K,c("virtual"),this.put=K,c("virtual"),this.delete=K})})(),await(async()=>{c("ns","flair.api"),i("RestInterceptor",function(){c("virtual"),c("async"),this.run=K})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("static"),c("ns","flair.app"),i("BootEngine",function(){this.start=async function(){let e=[],i=[];const a=async()=>{let a=null,n=null,r=null;for(let s of Kt.boot.load)(s=rt(s))&&(a=await d(s))&&"boolean"!=typeof a&&(n=b(a,t))&&(r=new n,e.push(r),r.info.isMountSpecific&&i.push(r))},n=async t=>{if(Z.isWorker){0!==i.length&&console.warn("Mount specific bootwares are not supported for worker environment. Revisit worker:flair.app->load setting.");for(let i of e)i.info.isMountSpecific||await i[t]()}else{let a=l.host().mounts,n=Object.keys(a),r="",s=null;s=a[r="main"];for(let i of e)await i[t](s);for(let e of n)if("main"!==e){s=a[e];for(let e of i)await e[t](s)}}},r=async()=>{const t=await d("flair.app.ServerHost | flair.app.ClientHost"),e=await d("flair.app.App");if(!Z.isWorker){let e=new t;await e.boot(),l.host(e)}await n("boot");let i=new e;await i.boot(),l.app(i)},s=async()=>{Z.isWorker||await l.host().start(),await l.app().start()},o=()=>new Promise((t,e)=>{"loading"!==document.readyState?t():(!0).document.addEventListener("DOMContentLoaded",()=>{t()})}),c=()=>new Promise((t,e)=>{(!0).document.addEventListener("deviceready",()=>{t()},!1)}),p=async()=>{Z.isClient&&!Z.isWorker&&(await o(),Z.isCordova&&await c()),Z.isWorker||await l.host().ready(),await n("ready"),await l.app().ready()};await a(),await r(),await s(),await p(),console.log("ready!")}})})(),await(async()=>{const{Host:t}=R("flair.app");c("sealed"),c("ns","flair.app"),i("ClientHost",t,function(){let t={},e=null;c("override"),this.construct=(t=>{t("Page","1.x")}),this.app={get:()=>this.mounts["main"].app,set:K},this.mounts={get:()=>t,set:K},c("state"),c("private"),this.currentLocale=Kt.i18n.locale,this.defaultLocale={get:()=>Kt.i18n.locale,set:K},this.supportedLocales={get:()=>Kt.i18n.locales.slice(),set:K},this.locale=((t,i)=>Kt.i18n.enabled?(t&&this.currentLocale!==t&&(this.currentLocale=t,i||(Kt.url.i18n?window.location.hash=this.replaceLocale((!0).location.hash):e&&e())),this.currentLocale):""),c("private"),this.cleanPath=(t=>("/"===t.substr(0,1)&&(t=t.substr(1)),"#!/"===t.substr(0,3)&&(t=t.substr(3)),"#!"===t.substr(0,2)&&(t=t.substr(2)),"#/"===t.substr(0,2)&&(t=t.substr(2)),"#"===t.substr(0,1)&&(t=t.substr(1)),"/"===t.substr(0,1)&&(t=t.substr(1)),t)),c("private"),this.extractLocale=(t=>{if(!Kt.url.i18n)return"";let e=t.indexOf("/");if(-1!==e){let i=t.substr(0,e);if(-1!==this.supportedLocales.indexOf(i))return i}return""}),c("private"),this.trimLocale=((t,e)=>{let i=e+"/",a=t.indexOf(i);return-1!==a?t.substr(a+i.length):t}),c("private"),this.replaceLocale=(t=>{if(Kt.url.i18n){t=this.cleanPath(t);let e=this.extractLocale(t);e&&(t=this.trimLocale(t,e)),t=this.path(t)}return t}),this.path=(t=>t?(t=this.cleanPath(t),t=Kt.url.hashbang?"/#!/"+t:"/#/"+t,Kt.i18n.enabled&&Kt.url.i18n&&(t=(this.currentLocale||this.defaultLocale)+"/"+t),t):""),this.route=((t,e)=>{if(!t)return;let i="",a=l.context.current().getRoute(t);if(a&&(i=a.path),i&&e){let t=i.indexOf(":"),a=-1,n="";for(;-1!==t;)n=-1===(a=i.substr(t+1).indexOf("/"))?i.substr(t+1):i.substr(t+1,a),t=(i=et(i,":"+n,e[n])).indexOf(":")}return this.path(i)}),c("override"),this.boot=(async e=>{e();const i=await d("page/page{.min}.js","page");let a=null,n="",r=null;const s=t=>{let e={},i=Kt[`${t}-options`];if(i&&i.length>0)for(let t of i)e[t.name]=t.value;return e.click=!1,e.popstate=!1,e.dispatch=!1,e.hashbang=!1,e.decodeURLComponents=!0,e.window=!0,e};i(a=s("main"));let o=i;o.strict(a.strict),o.base("/");for(let e of Object.keys(Kt.routing.mounts))"main"===e?(n="/",r=o):(a=s(e),n=Kt.routing.mounts[e],(r=i.create(a)).strict(a.strict),r.base(n)),t[e]=Object.freeze({name:e,root:n,app:r});t=Object.freeze(t)}),c("override"),this.start=(async t=>{t(),e=(()=>{let t=this.cleanPath((!0).location.hash);if(Kt.i18n.enabled&&Kt.url.i18n){let e=this.extractLocale(t);e&&(t=this.trimLocale(t,e),this.locale(e,!0))}t=("/"!==t.substr(0,1)?"/":"")+t;let e=null,i="";for(let a of this.mounts)if(t.startsWith(a.root)){e=a.app,t=t.substr(a.root.length),i=a;break}e||(i="main",e=this.mounts[i]),"/"!==t.substr(0,1)&&(t="/"+t),setTimeout(()=>{try{e(t)}catch(t){this.error(t)}},0)})}),c("override"),this.ready=(async t=>{t(),(!0).addEventListener("hashchange",e),this.app.redirect(Kt.url.home),console.log(`${l.app().info.name}, v${l.app().info.version}`)}),c("override"),this.stop=(async t=>{t(),(!0).removeEventListener("hashchange",e)}),c("override"),this.dispose=(e=>{e(),t=null})})})(),await(async()=>{const{Host:t}=R("flair.app");c("sealed"),c("ns","flair.app"),i("ServerHost",t,function(){let t={},e=null,i=null,a=Kt.express["server-http"],n=Kt.express["server-https"];c("override"),this.construct=(t=>{t("Express","4.x")}),this.app={get:()=>this.mounts["main"].app,set:K},this.mounts={get:()=>t,set:K},c("override"),this.boot=(async e=>{e();const i=await d("express | x"),a=(t,e)=>{let i=Kt[`${t}-appSettings`];if(i&&i.length>0)for(let t of i)e.set(t.name,t.value)};let n=i();a("main",n);let r="",s=null;for(let e of Object.keys(Kt.routing.mounts))"main"===e?(r="/",s=n):(r=Kt.routing.mounts[e],s=i()),t[e]=Object.freeze({name:e,root:r,app:s}),"main"!==e&&(a(e,s),n.use(r,s));t=Object.freeze(t)}),c("override"),this.start=(async t=>{t();const r=await d("fs | x"),s=await d("http | x"),o=await d("https | x"),c=await d("http-shutdown | x");if(a.enable&&((e=c(e=s.createServer(this.app))).on("error",t=>{this.error(t)}),-1!==a.timeout&&(e.timeout=a.timeout)),n.enable){const t=r.readFileSync(l.resolvePath(n.privateKey),"utf8"),e=r.readFileSync(l.resolvePath(n.publicCert),"utf8"),a={key:t,cert:e};(i=c(i=o.createServer(a,this.app))).on("error",t=>{this.error(t)}),-1!==n.timeout&&(i.timeout=n.timeout)}}),c("override"),this.ready=(t=>new Promise((r,s)=>{t();let o=a.port||80,c=process.env.PORT||n.port||443;e&&i?e.listen(o,()=>{i.listen(c,()=>{console.log(`${l.app().info.name}, v${l.app().info.version} (http: ${o}, https: ${c})`),r()})}):e?e.listen(o,()=>{console.log(`${l.app().info.name}, v${l.app().info.version} (http: ${o})`),r()}):i?i.listen(c,()=>{console.log(`${l.app().info.name}, v${l.app().info.version} (https: ${c})`),r()}):(console.log(`${l.app().info.name}, v${l.app().info.version}`),r())})),c("override"),this.stop=(async t=>{t(),e&&(console.log("http server is shutting down..."),e.shutdown(()=>{e=null,console.log("http server is cleanly shutdown!")})),i&&(console.log("https server is shutting down..."),i.shutdown(()=>{i=null,console.log("https server is cleanly shutdown!")}))}),c("override"),this.dispose=(e=>{e(),t=null})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("ClientRouter",t,function(){const{ViewHandler:t,ViewInterceptor:e}=R("flair.ui");let i=null;c("override"),this.construct=(t=>{t("Client Router",!0)}),c("override"),this.boot=(async(a,n)=>{a(),i||(i=l.context.current().allRoutes(!0)).sort((t,e)=>t.indexe.index?1:0);const r=(t,e)=>new Promise((i,a)=>{try{let n;(new t).run(e).then(()=>{e.$stop?a():i()}).catch(a)}catch(t){a(t)}}),s=(t,i)=>tt(t,(t,a,n)=>{d(n).then(s=>{let o=b(s,e);o?r(o,i).then(t).catch(a):a(U.InvalidDefinition(`Invalid interceptor type. (${n})`))}).catch(a)});let o="view";for(let e of i)e.mount===n.name&&n.app(e.path,i=>{const a=t=>{l.host().raiseError(t)},r=t=>{n.app.redirect(t)},c=()=>{d(e.handler).then(n=>{let s=b(n,t);if(s)try{q(new s,t=>{t[o](i).then(()=>{i.handled=!0,i.$redirect&&r(i.$redirect)}).catch(a)})}catch(t){a(t)}else a(U.InvalidDefinition(`Invalid route handler. (${e.handler})`))}).catch(a)};i.$stop=!1,i.$redirect="";let p=Kt[`${n.name}-interceptors`]||[];s(p,i).then(()=>{i.$stop?(i.handled=!0,i.$redirect&&r(i.$redirect)):c()}).catch(t=>{i.$stop?(i.handled=!0,i.$redirect&&r(i.$redirect)):a(t)})});n.app("*",t=>{let e=Kt.url["404"];e?(t.handled=!0,t.pathname!==e&&n.app.redirect(e)):(!0).history.back()})})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("DIContainer",t,function(){c("override"),this.construct=(t=>{t("DI Container")}),c("override"),this.boot=(async t=>{t();let e=Kt.di.container;for(let t in e)e.hasOwnProperty(t)&&u.register(t,e[t])})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("Middlewares",t,function(){c("override"),this.construct=(t=>{t("Express Middlewares",!0)}),c("override"),this.boot=(async(t,e)=>{t();let i=Kt[`${e.name}-middlewares`];if(i&&i.length>0){let t=null,a=null;for(let n of i)if(n.name)try{t=require(n.name),a=n.func?t[n.func]:t;let i=[],r=null;n.args=n.args||[];for(let t of n.args){if("string"==typeof t&&t.startsWith("return "))r=new Function(t)();else if("object"==typeof t){for(let e in t)t.hasOwnProperty(e)&&"string"==typeof(r=t[e])&&r.startsWith("return ")&&(r=new Function(t)(),t[e]=r);r=t}else r=t;i.push(r)}e.app.use(a(...i))}catch(t){throw U.OperationFailed(`Middleware ${n.module} load failed.`,t,this.boot)}}})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("NodeEnv",t,function(){c("override"),this.construct=(t=>{t("Node Server Environment")}),c("override"),this.boot=(async t=>{if(t(),Kt.envVars.vars.length>0){const t=await d("node-env-file | x");if(t)for(let e of Kt.envVars.vars)t(l.resolvePath(e),Kt.envVars.options)}})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("ResHeaders",t,function(){c("override"),this.construct=(t=>{t("Server Response Headers",!0)}),c("override"),this.boot=(async(t,e)=>{t();let i=Kt[`${e.name}-resHeaders`];i&&i.length>0&&e.app.use((t,e,a)=>{for(let t of i)e.setHeader(t.name,t.value);a()})})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("ServerRouter",t,function(){const{RestHandler:t,RestInterceptor:e}=R("flair.api");let i=null;c("override"),this.construct=(t=>{t("Server Router",!0)}),c("override"),this.boot=(async(a,n)=>{a(),i||(i=l.context.current().allRoutes(!0)).sort((t,e)=>t.indexe.index?1:0);let r=!1;const s=(t,e,i)=>new Promise((a,n)=>{try{let r;(new t).run(e,i).then(()=>{e.$stop?n():a()}).catch(n)}catch(t){n(t)}}),o=(t,i,a)=>tt(t,(t,n,r)=>{d(r).then(o=>{let l=b(o,e);l?s(l,i,a).then(t).catch(n):n(U.InvalidDefinition(`Invalid interceptor type. (${r})`))}).catch(n)});for(let e of i)e.mount===n.name&&e.verbs.forEach(i=>{n.app[i](e.path,(a,s,l)=>{const c=t=>{l(t)},p=t=>{t||l()},h=()=>{d(e.handler).then(n=>{let o=b(n,t);if(o)try{q(new o,t=>{(r=t[i](a,s))&&"function"==typeof r.then?r.then(t=>{p(t)}).catch(c):p(r)})}catch(t){c(t)}else c(U.InvalidDefinition(`Invalid route handler. ${e.handler}`))}).catch(c)};a.$stop=!1;let u=Kt[`${n.name}-interceptors`]||[];o(u,a,s).then(()=>{a.$stop?s.end():h()}).catch(t=>{a.stop?s.end():c(t)})})});n.app.use((t,e,i)=>{var a=new Error("Not Found");a.status=404,i(a)}),Z.isProd,n.app.use((t,e,i)=>{i.status(t.status||500),e.xhr?i.status(500).send({error:t.toString()}):i.render("error",{message:t.message,error:t}),i.end()})})})})(),await(async()=>{const{Handler:t}=R("flair.app");c("ns","flair.ui"),i("ViewHandler",t,function(){let t="";c("override"),this.construct=((e,i,a,n)=>{e(),t=i||"main",this.viewTransition=n,this.title=this.title+(a?" - "+a:"")}),c("privateSet"),this.viewTransition="",c("protectedSet"),this.name="",c("protectedSet"),this.title="",c("protectedSet"),this.meta=null,this.view=(async e=>{const{ViewTransition:i}=R("flair.ui");if(this.name=this.name||this.$self.id+"_"+st(),this.viewTransition){let t=b(await d(this.viewTransition),i);this.viewTransition=t?new t:""}let a=Nt.createElement("div"),n=Nt.getElementById(t);a.id=this.name,a.setAttribute("hidden",""),n.appendChild(a),this.load(e,a),await this.swap()}),c("protected"),c("virtual"),c("async"),this.loadView=K,c("private"),this.swap=(async()=>{let e=Nt.getElementById(this.name);if(this.$static.currentView){let i=Nt.getElementById(this.$static.currentView),a;for(let t of this.meta)Nt.head.removeChild(Nt.querySelector('meta[name="'+t+'"]'));this.viewTransition?(await this.viewTransition.leave(i,e),await this.viewTransition.enter(e,i)):(i.hidden=!0,e.hidden=!1),Nt.getElementById(t).removeChild(i)}for(let t of this.meta){var i=document.createElement("meta");for(let e in t)i[e]=t[e];Nt.head.appendChild(i)}this.$static.currentView||(e.hidden=!1),Nt.title=this.title,this.$static.currentView=this.name,this.$static.currentViewMeta=this.meta}),c("static"),this.currentView="",c("static"),this.currentViewMeta=[]})})(),await(async()=>{c("ns","flair.ui"),i("ViewInterceptor",function(){c("virtual"),c("async"),this.run=K})})(),await(async()=>{c("singleton"),c("ns","flair.ui"),i("ViewState",function(){c("state"),c("private"),this.store={},this.get=((t,e)=>(t=t||"",e=e||"",this.store[t+"/"+e]||null)),this.set=((t,e,i)=>{t=t||"",e=e||"","boolean"==typeof i||i?this.store[t+"/"+e]=i:delete this.store[t+"/"+e]}),this.clear=(()=>{this.store=null})})})(),await(async()=>{c("ns","flair.ui"),i("ViewTransition",function(){c("virtual"),c("async"),this.enter=K,c("virtual"),c("async"),this.leave=K})})(),await(async()=>{const{VueComponentMembers:t}=R("flair.ui.vue");c("ns","flair.ui.vue"),i("VueComponent",[t],function(){this.factory=(async()=>{let t=this.define();return this.props&&Array.isArray(this.props)&&(t.props=this.props),this.data&&"function"==typeof this.data&&(t.data=this.data),this.name&&(t.name=this.name),this.model&&(t.model=this.model),"boolean"==typeof this.inheritAttrs&&(t.inheritAttrs=this.inheritAttrs),t}),c("protected"),this.props=null,c("protected"),this.data=null,c("protected"),this.model=null,c("protected"),this.inheritAttrs=null})})(),await(async()=>{c("ns","flair.ui.vue"),i("VueDirective",function(){c("virtual"),c("async"),this.factory=K})})(),await(async()=>{c("ns","flair.ui.vue"),i("VueFilter",function(){c("virtual"),c("async"),this.factory=K})})(),await(async()=>{c("ns","flair.ui.vue"),i("VueLayout",function(){c("protected"),this.html="",c("protected"),this.style="",c("protected"),this.viewArea="view",c("protectedSet"),this.areas=[],this.merge=(async t=>{let e=f("clientFile");this.style&&this.style.endsWith(".css")&&(this.style=await e(this.style)),this.html&&this.html.endsWith(".html")&&(this.html=await e(this.html));let i=Nt.createElement("div");if(this.style){let t=Nt.createElement("style");t.innerHTML=this.style.trim(),t.setAttribute("scoped",""),i.append(t)}if(this.html){let t=Nt.createElement("div");t.innerHTML=this.html.trim(),i.append(t)}this.viewArea=this.viewArea||"view";let a=i.content.getElementById(this.viewArea);a&&(a.innerHTML=t);let n=null;if(this.layout&&this.layout.areas&&Array.isArray(this.layout.areas))for(let t of this.layout.areas)if(n=i.content.getElementById(t.area)){let e=Nt.createElement("component");e.setAttribute("is",t.component),n.append(e)}return i.innerHTML})})})(),await(async()=>{c("ns","flair.ui.vue"),i("VueMixin",function(){c("virtual"),c("async"),this.factory=K})})(),await(async()=>{c("ns","flair.ui.vue"),i("VuePlugin",function(){this.construct=(t=>{Kt.vue.pluginOptions[t]&&(this.options=Object.assign({},Kt.vue.pluginOptions[t]))}),c("virtual"),c("async"),this.factory=K,this.options=null})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("ns","flair.ui.vue"),i("VueSetup",t,function(){c("override"),this.construct=(t=>{t("Vue Setup")}),c("override"),this.boot=(async t=>{t();const e=await d("vue/vue{.min}.js"),{VueComponent:i,VueFilter:a,VueDirective:n,VuePlugin:r,VueMixin:s}=R("flair.ui.vue");let o=Kt.vue.plugins,l=null,c=null;for(let t of o){if(!t.name)throw U.OperationFailed(`Plugin name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Plugin type cannot be empty. (${t.name})`);if(!(l=b(await d(t.type),r)))throw U.InvalidArgument(t.type);try{c=new l(t.name),e.use(await c.factory(),c.options||{})}catch(e){throw U.OperationFailed(`Plugin registration failed. (${t.type})`,e)}}let p=Kt.vue.mixins,h=null,u=null;for(let t of p){if(!t.name)throw U.OperationFailed(`Mixin name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Mixin type cannot be empty. (${t.name})`);if(!(h=b(await d(t.type),s)))throw U.InvalidArgument(t.type);try{u=new h,e.mixin(await u.factory())}catch(e){throw U.OperationFailed(`Mixin registration failed. (${t.type})`,e)}}let f=Kt.vue.directives,m=null,y=null;for(let t of f){if(!t.name)throw U.OperationFailed(`Directive name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Directive type cannot be empty. (${t.name})`);if(!(m=b(await d(t.type),n)))throw U.InvalidArgument(t.type);try{y=new m,e.directive(t.name,await y.factory())}catch(e){throw U.OperationFailed(`Directive registration failed. (${t.type})`,e)}}let v=Kt.vue.filters,w=null,$=null;for(let t of v){if(!t.name)throw U.OperationFailed(`Filter name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Filter type cannot be empty. (${t.name})`);if(!(w=b(await d(t.type),a)))throw U.InvalidArgument(t.type);try{$=new w,e.filter(t.name,await $.factory())}catch(e){throw U.OperationFailed(`Filter registration failed. (${t.type})`,e)}}let g=Kt.vue.components,x=null,O=null;for(let t of g){if(!t.name)throw U.OperationFailed(`Component name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Component type cannot be empty. (${t.name})`);if(!(x=b(await d(t.name),i)))throw U.InvalidArgument(t.type);try{if(O=new x,e.options.components[t.name])throw U.Duplicate(`Component already registered. (${t.name})`);e.component(t.name,await O.factory())}catch(e){throw U.OperationFailed(`Component registration failed. (${t.type})`,e)}}})})})(),await(async()=>{const{ViewHandler:t}=R("flair.ui"),{VueComponentMembers:e}=R("flair.ui.vue");c("ns","flair.ui.vue"),i("VueView",t,[e],function(){let t=!1;c("override"),this.construct=(t=>{t(Kt.view.el,Kt.view.title,Kt.view.transition)}),c("private"),this.factory=(async()=>{if(this.layout&&this.layout.areas&&Array.isArray(this.layout.areas)){this.components=this.components||[];for(let t of this.layout.areas)this.components.push({name:t.component,type:t.type})}let t=this.define();return t.el="#"+this.name,this.propsData&&(t.propsData=this.propsData),this.data&&"function"!=typeof this.data&&(t.data=this.data),this.layout&&(t.template=await this.layout.merge(t.template)),t}),c("protected"),c("override"),c("sealed"),this.loadView=(async(e,i,a)=>{if(!t){t=!0,e();const n=await d("vue/vue{.min}.js");await this.load(i,a),new n(await this.factory())}}),c("protected"),c("virtual"),c("async"),this.load=K,c("protected"),this.el=null,c("protected"),this.propsData=null,c("protected"),this.data=null,c("protected"),this.layout=null})})(),l.context.current().currentAssemblyBeingLoaded(""),l.registerAdo('{"name":"flair.app","file":"./flair.app{.min}.js","mainAssembly":"flair","desc":"True Object Oriented JavaScript","title":"Flair.js","version":"0.6.6","lupdate":"Sat, 11 May 2019 03:36:59 GMT","builder":{"name":"flairBuild","version":"1","format":"fasm","formatVersion":"1","contains":["init","func","type","vars","reso","asst","rout","sreg"]},"copyright":"(c) 2017-2019 Vikas Burman","license":"MIT","types":["flair.app.Bootware","flair.app.Handler","flair.app.App","flair.app.Host","flair.ui.vue.VueComponentMembers","flair.api.RestHandler","flair.api.RestInterceptor","flair.app.BootEngine","flair.app.ClientHost","flair.app.ServerHost","flair.boot.ClientRouter","flair.boot.DIContainer","flair.boot.Middlewares","flair.boot.NodeEnv","flair.boot.ResHeaders","flair.boot.ServerRouter","flair.ui.ViewHandler","flair.ui.ViewInterceptor","flair.ui.ViewState","flair.ui.ViewTransition","flair.ui.vue.VueComponent","flair.ui.vue.VueDirective","flair.ui.vue.VueFilter","flair.ui.vue.VueLayout","flair.ui.vue.VueMixin","flair.ui.vue.VuePlugin","flair.ui.vue.VueSetup","flair.ui.vue.VueView"],"resources":[],"assets":[],"routes":[{"name":"flair.ui.vue.test2","mount":"main","index":101,"verbs":[],"path":"test/:id","handler":"abc.xyz.Test"},{"name":"flair.ui.vue.exit2","mount":"main","index":103,"verbs":[],"path":"exit","handler":"abc.xyz.Exit"}]}')}); \ No newline at end of file +!function(t,e){"use strict";"function"==typeof!0&&(!0).amd?(!0)(e):"object"==typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=e),module.exports=exports=e):t["flair.app"]=e}(this,async function(t){"use strict";const e=void 0!==!0?require("flairjs"):(!0).flair,{Class:i,Struct:a,Enum:n,Interface:r,Mixin:s,Aspects:o,AppDomain:l,$$:c,attr:p,bring:h,Container:u,include:d,Port:f,on:m,post:y,telemetry:v,Reflector:w,Serializer:$,Tasks:g,as:b,is:x,isComplies:O,isDerivedFrom:V,isAbstract:A,isSealed:S,isStatic:F,isSingleton:I,isDeprecated:C,isImplements:E,isInstanceOf:M,isMixed:D,getAssembly:P,getAttr:H,getContext:L,getResource:j,getRoute:T,getType:B,ns:R,getTypeOf:k,getTypeName:W,typeOf:z,dispose:N,using:q,Args:J,Exception:U,noop:K,nip:G,nim:_,nie:Q,event:X}=e,{TaskInfo:Y}=e.Tasks,{env:Z}=e.options,{forEachAsync:tt,replaceAll:et,splitAndTrim:it,findIndexByProp:at,findItemByProp:nt,which:rt,guid:st,isArrowFunc:ot,isASyncFunc:lt,sieve:ct,deepMerge:pt,b64EncodeUnicode:ht,b64DecodeUnicode:ut}=e.utils,{$$static:dt,$$abstract:ft,$$virtual:mt,$$override:yt,$$sealed:vt,$$private:wt,$$privateSet:$t,$$protected:gt,$$protectedSet:bt,$$readonly:xt,$$async:Ot,$$overload:Vt,$$enumerate:At,$$dispose:St,$$post:Ft,$$on:It,$$timer:Ct,$$type:Et,$$args:Mt,$$inject:Dt,$$resource:Pt,$$asset:Ht,$$singleton:Lt,$$serialize:jt,$$deprecate:Tt,$$session:Bt,$$state:Rt,$$conditional:kt,$$noserialize:Wt,$$ns:zt}=c,Nt=Z.isServer||Z.isWorker?null:(!0).document,qt=l.context.current().name,Jt=t,Ut=Jt.substr(0,Jt.lastIndexOf("/")+1);l.loadPathOf("flair.app",Ut);let Kt=JSON.parse('{"boot":{"load":[]},"di":{"container":{}},"client":{"view":{"el":"main","title":"","transition":""},"url":{"404":"/404","hashbang":false,"i18n":false,"home":"/"},"vue":{"components":[],"filters":[],"mixins":[],"directives":[],"plugins":[],"pluginOptions":{}},"i18n":{"enabled":true,"locale":"en","locales":[{"code":"en","name":"English","native":"English"}]},"routing":{"mounts":{"main":"/"},"main-options":[],"main-interceptors":[]}},"server":{"express":{"server-http":{"enable":false,"port":80,"timeout":-1},"server-https":{"enable":false,"port":443,"timeout":-1,"privateKey":"","publicCert":""}},"envVars":{"vars":[],"options":{"overwrite":true}},"routing":{"mounts":{"main":"/"},"main-appSettings":[],"main-middlewares":[],"main-interceptors":[],"main-resHeaders":[]}}}'),Gt=e.Port("settingsReader");if("function"==typeof Gt){let t=Gt("flair.app");t&&(Kt=pt([Kt,t],!1))}Kt=Object.freeze(Kt);let _t=JSON.parse("{}");_t=Object.freeze(_t);let Qt=()=>{};l.context.current().currentAssemblyBeingLoaded("./flair.app{.min}.js"),await(async()=>{c("abstract"),c("ns","flair.app"),i("Bootware",function(){c("virtual"),this.construct=((t,e,i)=>{let a=J("name: string, version: string","name: string, version: string, isMountSpecific: boolean","name: string, isMountSpecific: boolean","name: string")(t,e,i);a.throwOnError(this.construct),this.info=Object.freeze({name:a.values.name||"",version:a.values.version||"",isMountSpecific:a.values.isMountSpecific||!1})}),c("virtual"),c("async"),this.boot=K,c("readonly"),this.info=null,c("virtual"),c("async"),this.ready=K,c("virtual"),this.dispose=K})})(),await(async()=>{const{IDisposable:t}=R();c("ns","flair.app"),i("Handler",[t],function(){c("virtual"),this.construct=(()=>{}),c("virtual"),this.dispose=(()=>{})})})(),await(async()=>{const{IDisposable:t}=R(),{Bootware:e}=R("flair.app");c("ns","flair.app"),i("App",e,[t],function(){c("override"),this.construct=(t=>{let e=P(this);t(e.title,e.version)}),c("override"),this.boot=(async t=>{t(),l.host().error.add(this.onError)}),c("virtual"),this.start=(async()=>{if(!Z.isServer&&!Z.isWorker){const{ViewState:t}=R("flair.ui");new t}}),c("virtual"),this.stop=(async()=>{if(!Z.isServer&&!Z.isWorker){const{ViewState:t}=R("flair.ui");(new t).clear()}}),c("virtual"),this.onError=(t=>{throw U.OperationFailed(t.error,this.onError)}),c("override"),this.dispose=(t=>{t(),l.host().error.remove(this.onError)})})})(),await(async()=>{const{IDisposable:t}=R(),{Bootware:e}=R("flair.app");c("ns","flair.app"),i("Host",e,[t],function(){c("privateSet"),this.isStarted=!1,c("virtual"),this.start=(async()=>{this.isStarted=!0}),c("virtual"),this.stop=(async()=>{this.isStarted=!1}),this.restart=(async()=>{await this.stop(),await this.start()}),this.error=X(t=>({error:t})),this.raiseError=(t=>{this.error(t)})})})(),await(async()=>{c("ns","flair.ui.vue"),s("VueComponentMembers",function(){var t=this;c("private"),this.define=(async()=>{const e=await d("vue/vue{.min}.js"),{ViewState:i}=R("flair.ui"),{VueFilter:a,VueMixin:n,VueDirective:r,VueComponent:s}=R("flair.ui.vue");let o=new i,l={},c=f("clientFile");if(this.style&&this.style.endsWith(".css")&&(this.style=await c(this.style)),this.html&&this.html.endsWith(".html")&&(this.html=await c(this.html)),Kt.client.i18n.enabled&&this.i18n){let t="";for(let e in this.i18n)this.i18n.hasOwnProperty(e)&&(t=this.$self.assemblyName+"/locales/"+this.locale()+"/"+this.i18n[e],this.i18n[e]=await c(t))}if(this.template?l.template=this.template:this.style&&this.html?l.template="
"+this.html.trim()+"
":this.html&&(l.template=this.html.trim()),this.render&&"function"==typeof this.render&&(l.render=this.render),"boolean"==typeof this.functional&&(l.functional=this.functional),this.computed)for(let t in this.computed)this.computed.hasOwnProperty(t)&&(l.computed=l.computed||{},l.computed[t]=this.computed[t]);if(this.state&&Array.isArray(this.state))for(let t of this.state){if(l.computed[t.name])throw U.InvalidDefinition(`Computed (state) property already defined. (${t.name})`);l.computed=l.computed||{},l.computed[t.name]={get:function(){return o.get(t.path,t.name)||t.value},set:function(e){o.set(t.path,t.name,e)}}}if(this.methods)for(let t in this.methods)this.methods.hasOwnProperty(t)&&(l.methods=l.methods||{},l.methods[t]=this.methods[t]);if(l.methods=l.methods||{},l.methods["path"]=(e=>t.path(e)),l.methods=l.methods||{},l.methods["route"]=((e,i)=>t.route(e,i)),Kt.client.i18n.enabled&&(l.methods["locale"]=(e=>t.locale(e)),l.methods["i18n"]=((e,i,a)=>t.i18n&&t.i18n[e]&&t.i18n[e][i]?t.i18n[e][i]||a||"(i18n: 404)":a||"(i18n: 404)")),this.watch)for(let t in this.watch)this.watch.hasOwnProperty(t)&&(l.watch=l.watch||{},l.watch[t]=this.watch[t]);if(this.lifecycle)for(let t in this.lifecycle)this.lifecycle.hasOwnProperty(t)&&(l[t]=this.lifecycle[t]);if(this.components&&Array.isArray(this.components)){let t=null,i=null;for(let a of this.components){if(!a.name)throw U.OperationFailed(`Component name cannot be empty. (${a.type})`);if(!a.type)throw U.OperationFailed(`Component type cannot be empty. (${a.name})`);if(!(t=b(await d(a.name),s)))throw U.InvalidArgument(a.type);try{if(i=new t,e.options.components[a.name])throw U.Duplicate(`Component already registered. (${a.name})`);if(i.components&&i.components[a.name])throw U.Duplicate(`Component already registered. (${a.name})`);i.components=i.components||{},i.components[a.name]=await i.factory()}catch(t){throw U.OperationFailed(`Component registration failed. (${a.type})`,t)}}}if(this.mixins&&Array.isArray(this.mixins)){let t=null,e=null;for(let i of this.mixins){if(!i.name)throw U.OperationFailed(`Mixin name cannot be empty. (${i.type})`);if(!i.type)throw U.OperationFailed(`Mixin type cannot be empty. (${i.name})`);if(!(t=b(await d(i.type),n)))throw U.InvalidArgument(i.type);try{if(e=new t,l.mixins&&l.mixins[i.name])throw U.Duplicate(`Mixin already registered. (${i.name})`);l.mixins=l.mixins||{},l.mixins[i.name]=await e.factory()}catch(t){throw U.OperationFailed(`Mixin registration failed. (${i.type})`,t)}}}if(this.directives&&Array.isArray(this.directives)){let t=null,e=null;for(let i of this.directives){if(!i.name)throw U.OperationFailed(`Directive name cannot be empty. (${i.type})`);if(!i.type)throw U.OperationFailed(`Directive type cannot be empty. (${i.name})`);if(!(t=b(await d(i.type),r)))throw U.InvalidArgument(i.type);try{if(e=new t,l.directives&&l.directives[i.name])throw U.Duplicate(`Directive already registered. (${i.name})`);l.directives=l.directives||{},l.directives[i.name]=await e.factory()}catch(t){throw U.OperationFailed(`Directive registration failed. (${i.type})`,t)}}}if(this.filters&&Array.isArray(this.filters)){let t=null,e=null;for(let i of this.filters){if(!i.name)throw U.OperationFailed(`Filter name cannot be empty. (${i.type})`);if(!i.type)throw U.OperationFailed(`Filter type cannot be empty. (${i.name})`);if(!(t=b(await d(i.type),a)))throw U.InvalidArgument(i.type);try{if(e=new t,l.filters&&l.filters[i.name])throw U.Duplicate(`Filter already registered. (${i.name})`);l.filters=l.filters||{},l.filters[i.name]=await e.factory()}catch(t){throw U.OperationFailed(`Filter registration failed. (${i.type})`,t)}}}return this.provide&&Array.isArray(this.provide)&&(l.provide=this.provide),this.inject&&Array.isArray(this.inject)&&(l.inject=this.inject),l}),c("protected"),this.locale=(t=>l.host().locale(t)),c("protected"),this.path=(t=>l.host().path(t)),c("protected"),this.route=((t,e)=>l.host().route(t,e)),c("protected"),this.i18n=null,c("protected"),this.style="",c("protected"),this.html="",c("protected"),this.template=null,c("protected"),this.render=null,c("protected"),this.functional=!1,c("protected"),this.computed=null,c("protected"),this.state=null,c("protected"),this.methods=null,c("protected"),this.watch=null,c("protected"),this.lifecycle=null,c("protected"),this.components=null,c("protected"),this.mixins=null,c("protected"),this.directives=null,c("protected"),this.filters=null,c("protected"),this.provide=null,c("protected"),this.inject=null})})(),await(async()=>{const{Handler:t}=R("flair.app");c("ns","flair.api"),i("RestHandler",t,function(){c("virtual"),this.get=K,c("virtual"),this.post=K,c("virtual"),this.put=K,c("virtual"),this.delete=K})})(),await(async()=>{c("ns","flair.api"),i("RestInterceptor",function(){c("virtual"),c("async"),this.run=K})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("static"),c("ns","flair.app"),i("BootEngine",function(){this.start=async function(){let e=[],i=[];const a=async()=>{let a=null,n=null,r=null;for(let s of Kt.boot.load)(s=rt(s))&&(a=await d(s))&&"boolean"!=typeof a&&(n=b(a,t))&&(r=new n,e.push(r),r.info.isMountSpecific&&i.push(r))},n=async t=>{if(Z.isWorker){0!==i.length&&console.warn("Mount specific bootwares are not supported for worker environment. Revisit worker:flair.app->load setting.");for(let i of e)i.info.isMountSpecific||await i[t]()}else{let a=l.host().mounts,n=Object.keys(a),r="",s=null;s=a[r="main"];for(let i of e)await i[t](s);for(let e of n)if("main"!==e){s=a[e];for(let e of i)await e[t](s)}}},r=async()=>{const t=await d("flair.app.ServerHost | flair.app.ClientHost"),e=await d("flair.app.App");if(!Z.isWorker){let e=new t;await e.boot(),l.host(e)}await n("boot");let i=new e;await i.boot(),l.app(i)},s=async()=>{Z.isWorker||await l.host().start(),await l.app().start()},o=()=>new Promise((t,e)=>{"loading"!==document.readyState?t():(!0).document.addEventListener("DOMContentLoaded",()=>{t()})}),c=()=>new Promise((t,e)=>{(!0).document.addEventListener("deviceready",()=>{t()},!1)}),p=async()=>{Z.isClient&&!Z.isWorker&&(await o(),Z.isCordova&&await c()),Z.isWorker||await l.host().ready(),await n("ready"),await l.app().ready()};await a(),await r(),await s(),await p(),console.log("ready!")}})})(),await(async()=>{const{Host:t}=R("flair.app");c("sealed"),c("ns","flair.app"),i("ClientHost",t,function(){let t={},e=null;c("override"),this.construct=(t=>{t("Page","1.x")}),this.app={get:()=>this.mounts["main"].app,set:K},this.mounts={get:()=>t,set:K},c("state"),c("private"),this.currentLocale=Kt.client.i18n.locale,this.defaultLocale={get:()=>Kt.client.i18n.locale,set:K},this.supportedLocales={get:()=>Kt.client.i18n.locales.slice(),set:K},this.locale=((t,i)=>Kt.client.i18n.enabled?(t&&this.currentLocale!==t&&(this.currentLocale=t,i||(Kt.client.url.i18n?window.location.hash=this.replaceLocale((!0).location.hash):e&&e())),this.currentLocale):""),c("private"),this.cleanPath=(t=>("/"===t.substr(0,1)&&(t=t.substr(1)),"#!/"===t.substr(0,3)&&(t=t.substr(3)),"#!"===t.substr(0,2)&&(t=t.substr(2)),"#/"===t.substr(0,2)&&(t=t.substr(2)),"#"===t.substr(0,1)&&(t=t.substr(1)),"/"===t.substr(0,1)&&(t=t.substr(1)),t)),c("private"),this.extractLocale=(t=>{if(!Kt.client.url.i18n)return"";let e=t.indexOf("/");if(-1!==e){let i=t.substr(0,e);if(-1!==this.supportedLocales.indexOf(i))return i}return""}),c("private"),this.trimLocale=((t,e)=>{let i=e+"/",a=t.indexOf(i);return-1!==a?t.substr(a+i.length):t}),c("private"),this.replaceLocale=(t=>{if(Kt.client.url.i18n){t=this.cleanPath(t);let e=this.extractLocale(t);e&&(t=this.trimLocale(t,e)),t=this.path(t)}return t}),this.path=(t=>t?(t=this.cleanPath(t),t=Kt.client.url.hashbang?"/#!/"+t:"/#/"+t,Kt.client.i18n.enabled&&Kt.client.url.i18n&&(t=(this.currentLocale||this.defaultLocale)+"/"+t),t):""),this.route=((t,e)=>{if(!t)return;let i="",a=l.context.current().getRoute(t);if(a&&(i=a.path),i&&e){let t=i.indexOf(":"),a=-1,n="";for(;-1!==t;)n=-1===(a=i.substr(t+1).indexOf("/"))?i.substr(t+1):i.substr(t+1,a),t=(i=et(i,":"+n,e[n])).indexOf(":")}return this.path(i)}),c("override"),this.boot=(async e=>{e();const i=await d("page/page{.min}.js","page");let a=null,n="",r=null;const s=t=>{let e={},i=Kt.client.routing[`${t}-options`];if(i&&i.length>0)for(let t of i)e[t.name]=t.value;return e.click=!1,e.popstate=!1,e.dispatch=!1,e.hashbang=!1,e.decodeURLComponents=!0,e.window=!0,e};i(a=s("main"));let o=i;o.strict(a.strict),o.base("/");for(let e of Object.keys(Kt.client.routing.mounts))"main"===e?(n="/",r=o):(a=s(e),n=Kt.client.routing.mounts[e],(r=i.create(a)).strict(a.strict),r.base(n)),t[e]=Object.freeze({name:e,root:n,app:r});t=Object.freeze(t)}),c("override"),this.start=(async t=>{t(),e=(()=>{let t=this.cleanPath((!0).location.hash);if(Kt.client.i18n.enabled&&Kt.client.url.i18n){let e=this.extractLocale(t);e&&(t=this.trimLocale(t,e),this.locale(e,!0))}t=("/"!==t.substr(0,1)?"/":"")+t;let e=null,i="";for(let a of this.mounts)if(t.startsWith(a.root)){e=a.app,t=t.substr(a.root.length),i=a;break}e||(i="main",e=this.mounts[i]),"/"!==t.substr(0,1)&&(t="/"+t),setTimeout(()=>{try{e(t)}catch(t){this.error(t)}},0)})}),c("override"),this.ready=(async t=>{t(),(!0).addEventListener("hashchange",e),this.app.redirect(Kt.client.url.home),console.log(`${l.app().info.name}, v${l.app().info.version}`)}),c("override"),this.stop=(async t=>{t(),(!0).removeEventListener("hashchange",e)}),c("override"),this.dispose=(e=>{e(),t=null})})})(),await(async()=>{const{Host:t}=R("flair.app");c("sealed"),c("ns","flair.app"),i("ServerHost",t,function(){let t={},e=null,i=null,a=Kt.server.express["server-http"],n=Kt.server.express["server-https"];c("override"),this.construct=(t=>{t("Express","4.x")}),this.app={get:()=>this.mounts["main"].app,set:K},this.mounts={get:()=>t,set:K},c("override"),this.boot=(async e=>{e();const i=await d("express | x"),a=(t,e)=>{let i=Kt.server.routing[`${t}-appSettings`];if(i&&i.length>0)for(let t of i)e.set(t.name,t.value)};let n=i();a("main",n);let r="",s=null;for(let e of Object.keys(Kt.server.routing.mounts))"main"===e?(r="/",s=n):(r=Kt.server.routing.mounts[e],s=i()),t[e]=Object.freeze({name:e,root:r,app:s}),"main"!==e&&(a(e,s),n.use(r,s));t=Object.freeze(t)}),c("override"),this.start=(async t=>{t();const r=await d("fs | x"),s=await d("http | x"),o=await d("https | x"),c=await d("http-shutdown | x");if(a.enable&&((e=c(e=s.createServer(this.app))).on("error",t=>{this.error(t)}),-1!==a.timeout&&(e.timeout=a.timeout)),n.enable){const t=r.readFileSync(l.resolvePath(n.privateKey),"utf8"),e=r.readFileSync(l.resolvePath(n.publicCert),"utf8"),a={key:t,cert:e};(i=c(i=o.createServer(a,this.app))).on("error",t=>{this.error(t)}),-1!==n.timeout&&(i.timeout=n.timeout)}}),c("override"),this.ready=(t=>new Promise((r,s)=>{t();let o=a.port||80,c=process.env.PORT||n.port||443;e&&i?e.listen(o,()=>{i.listen(c,()=>{console.log(`${l.app().info.name}, v${l.app().info.version} (http: ${o}, https: ${c})`),r()})}):e?e.listen(o,()=>{console.log(`${l.app().info.name}, v${l.app().info.version} (http: ${o})`),r()}):i?i.listen(c,()=>{console.log(`${l.app().info.name}, v${l.app().info.version} (https: ${c})`),r()}):(console.log(`${l.app().info.name}, v${l.app().info.version}`),r())})),c("override"),this.stop=(async t=>{t(),e&&(console.log("http server is shutting down..."),e.shutdown(()=>{e=null,console.log("http server is cleanly shutdown!")})),i&&(console.log("https server is shutting down..."),i.shutdown(()=>{i=null,console.log("https server is cleanly shutdown!")}))}),c("override"),this.dispose=(e=>{e(),t=null})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("ClientRouter",t,function(){const{ViewHandler:t,ViewInterceptor:e}=R("flair.ui");let i=null;c("override"),this.construct=(t=>{t("Client Router",!0)}),c("override"),this.boot=(async(a,n)=>{a(),i||(i=l.context.current().allRoutes(!0)).sort((t,e)=>t.indexe.index?1:0);const r=(t,e)=>new Promise((i,a)=>{try{let n;(new t).run(e).then(()=>{e.$stop?a():i()}).catch(a)}catch(t){a(t)}}),s=(t,i)=>tt(t,(t,a,n)=>{d(n).then(s=>{let o=b(s,e);o?r(o,i).then(t).catch(a):a(U.InvalidDefinition(`Invalid interceptor type. (${n})`))}).catch(a)});let o="view";for(let e of i)e.mount===n.name&&n.app(e.path,i=>{const a=t=>{l.host().raiseError(t)},r=t=>{n.app.redirect(t)},c=()=>{d(e.handler).then(n=>{let s=b(n,t);if(s)try{q(new s,t=>{t[o](i).then(()=>{i.handled=!0,i.$redirect&&r(i.$redirect)}).catch(a)})}catch(t){a(t)}else a(U.InvalidDefinition(`Invalid route handler. (${e.handler})`))}).catch(a)};i.$stop=!1,i.$redirect="";let p=Kt.client.routing[`${n.name}-interceptors`]||[];s(p,i).then(()=>{i.$stop?(i.handled=!0,i.$redirect&&r(i.$redirect)):c()}).catch(t=>{i.$stop?(i.handled=!0,i.$redirect&&r(i.$redirect)):a(t)})});n.app("*",t=>{let e=Kt.client.url["404"];e?(t.handled=!0,t.pathname!==e&&n.app.redirect(e)):(!0).history.back()})})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("DIContainer",t,function(){c("override"),this.construct=(t=>{t("DI Container")}),c("override"),this.boot=(async t=>{t();let e=Kt.di.container;for(let t in e)e.hasOwnProperty(t)&&u.register(t,e[t])})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("Middlewares",t,function(){c("override"),this.construct=(t=>{t("Express Middlewares",!0)}),c("override"),this.boot=(async(t,e)=>{t();let i=Kt.server.routing[`${e.name}-middlewares`];if(i&&i.length>0){let t=null,a=null;for(let n of i)if(n.name)try{t=require(n.name),a=n.func?t[n.func]:t;let i=[],r=null;n.args=n.args||[];for(let t of n.args){if("string"==typeof t&&t.startsWith("return "))r=new Function(t)();else if("object"==typeof t){for(let e in t)t.hasOwnProperty(e)&&"string"==typeof(r=t[e])&&r.startsWith("return ")&&(r=new Function(t)(),t[e]=r);r=t}else r=t;i.push(r)}e.app.use(a(...i))}catch(t){throw U.OperationFailed(`Middleware ${n.module} load failed.`,t,this.boot)}}})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("NodeEnv",t,function(){c("override"),this.construct=(t=>{t("Node Server Environment")}),c("override"),this.boot=(async t=>{if(t(),Kt.server.nsenvVars.vars.length>0){const t=await d("node-env-file | x");if(t)for(let e of Kt.server.envVars.vars)t(l.resolvePath(e),Kt.server.envVars.options)}})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("ResHeaders",t,function(){c("override"),this.construct=(t=>{t("Server Response Headers",!0)}),c("override"),this.boot=(async(t,e)=>{t();let i=Kt[`${e.name}-resHeaders`];i&&i.length>0&&e.app.use((t,e,a)=>{for(let t of i)e.setHeader(t.name,t.value);a()})})})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("sealed"),c("ns","flair.boot"),i("ServerRouter",t,function(){const{RestHandler:t,RestInterceptor:e}=R("flair.api");let i=null;c("override"),this.construct=(t=>{t("Server Router",!0)}),c("override"),this.boot=(async(a,n)=>{a(),i||(i=l.context.current().allRoutes(!0)).sort((t,e)=>t.indexe.index?1:0);let r=!1;const s=(t,e,i)=>new Promise((a,n)=>{try{let r;(new t).run(e,i).then(()=>{e.$stop?n():a()}).catch(n)}catch(t){n(t)}}),o=(t,i,a)=>tt(t,(t,n,r)=>{d(r).then(o=>{let l=b(o,e);l?s(l,i,a).then(t).catch(n):n(U.InvalidDefinition(`Invalid interceptor type. (${r})`))}).catch(n)});for(let e of i)e.mount===n.name&&e.verbs.forEach(i=>{n.app[i](e.path,(a,s,l)=>{const c=t=>{l(t)},p=t=>{t||l()},h=()=>{d(e.handler).then(n=>{let o=b(n,t);if(o)try{q(new o,t=>{(r=t[i](a,s))&&"function"==typeof r.then?r.then(t=>{p(t)}).catch(c):p(r)})}catch(t){c(t)}else c(U.InvalidDefinition(`Invalid route handler. ${e.handler}`))}).catch(c)};a.$stop=!1;let u=Kt.server.routing[`${n.name}-interceptors`]||[];o(u,a,s).then(()=>{a.$stop?s.end():h()}).catch(t=>{a.stop?s.end():c(t)})})});n.app.use((t,e,i)=>{var a=new Error("Not Found");a.status=404,i(a)}),Z.isProd,n.app.use((t,e,i)=>{i.status(t.status||500),e.xhr?i.status(500).send({error:t.toString()}):i.render("error",{message:t.message,error:t}),i.end()})})})})(),await(async()=>{const{Handler:t}=R("flair.app");c("ns","flair.ui"),i("ViewHandler",t,function(){let t="";c("override"),this.construct=((e,i,a,n)=>{e(),t=i||"main",this.viewTransition=n,this.title=this.title+(a?" - "+a:"")}),c("privateSet"),this.viewTransition="",c("protectedSet"),this.name="",c("protectedSet"),this.title="",c("protectedSet"),this.meta=null,this.view=(async e=>{const{ViewTransition:i}=R("flair.ui");if(this.name=this.name||this.$self.id+"_"+st(),this.viewTransition){let t=b(await d(this.viewTransition),i);this.viewTransition=t?new t:""}let a=Nt.createElement("div"),n=Nt.getElementById(t);a.id=this.name,a.setAttribute("hidden",""),n.appendChild(a),this.load(e,a),await this.swap()}),c("protected"),c("virtual"),c("async"),this.loadView=K,c("private"),this.swap=(async()=>{let e=Nt.getElementById(this.name);if(this.$static.currentView){let i=Nt.getElementById(this.$static.currentView),a;for(let t of this.meta)Nt.head.removeChild(Nt.querySelector('meta[name="'+t+'"]'));this.viewTransition?(await this.viewTransition.leave(i,e),await this.viewTransition.enter(e,i)):(i.hidden=!0,e.hidden=!1),Nt.getElementById(t).removeChild(i)}for(let t of this.meta){var i=document.createElement("meta");for(let e in t)i[e]=t[e];Nt.head.appendChild(i)}this.$static.currentView||(e.hidden=!1),Nt.title=this.title,this.$static.currentView=this.name,this.$static.currentViewMeta=this.meta}),c("static"),this.currentView="",c("static"),this.currentViewMeta=[]})})(),await(async()=>{c("ns","flair.ui"),i("ViewInterceptor",function(){c("virtual"),c("async"),this.run=K})})(),await(async()=>{c("singleton"),c("ns","flair.ui"),i("ViewState",function(){c("state"),c("private"),this.store={},this.get=((t,e)=>(t=t||"",e=e||"",this.store[t+"/"+e]||null)),this.set=((t,e,i)=>{t=t||"",e=e||"","boolean"==typeof i||i?this.store[t+"/"+e]=i:delete this.store[t+"/"+e]}),this.clear=(()=>{this.store=null})})})(),await(async()=>{c("ns","flair.ui"),i("ViewTransition",function(){c("virtual"),c("async"),this.enter=K,c("virtual"),c("async"),this.leave=K})})(),await(async()=>{const{VueComponentMembers:t}=R("flair.ui.vue");c("ns","flair.ui.vue"),i("VueComponent",[t],function(){this.factory=(async()=>{let t=this.define();return this.props&&Array.isArray(this.props)&&(t.props=this.props),this.data&&"function"==typeof this.data&&(t.data=this.data),this.name&&(t.name=this.name),this.model&&(t.model=this.model),"boolean"==typeof this.inheritAttrs&&(t.inheritAttrs=this.inheritAttrs),t}),c("protected"),this.props=null,c("protected"),this.data=null,c("protected"),this.model=null,c("protected"),this.inheritAttrs=null})})(),await(async()=>{c("ns","flair.ui.vue"),i("VueDirective",function(){c("virtual"),c("async"),this.factory=K})})(),await(async()=>{c("ns","flair.ui.vue"),i("VueFilter",function(){c("virtual"),c("async"),this.factory=K})})(),await(async()=>{c("ns","flair.ui.vue"),i("VueLayout",function(){c("protected"),this.html="",c("protected"),this.style="",c("protected"),this.viewArea="view",c("protectedSet"),this.areas=[],this.merge=(async t=>{let e=f("clientFile");this.style&&this.style.endsWith(".css")&&(this.style=await e(this.style)),this.html&&this.html.endsWith(".html")&&(this.html=await e(this.html));let i=Nt.createElement("div");if(this.style){let t=Nt.createElement("style");t.innerHTML=this.style.trim(),t.setAttribute("scoped",""),i.append(t)}if(this.html){let t=Nt.createElement("div");t.innerHTML=this.html.trim(),i.append(t)}this.viewArea=this.viewArea||"view";let a=i.content.getElementById(this.viewArea);a&&(a.innerHTML=t);let n=null;if(this.layout&&this.layout.areas&&Array.isArray(this.layout.areas))for(let t of this.layout.areas)if(n=i.content.getElementById(t.area)){let e=Nt.createElement("component");e.setAttribute("is",t.component),n.append(e)}return i.innerHTML})})})(),await(async()=>{c("ns","flair.ui.vue"),i("VueMixin",function(){c("virtual"),c("async"),this.factory=K})})(),await(async()=>{c("ns","flair.ui.vue"),i("VuePlugin",function(){this.construct=(t=>{Kt.client.vue.pluginOptions[t]&&(this.options=Object.assign({},Kt.client.vue.pluginOptions[t]))}),c("virtual"),c("async"),this.factory=K,this.options=null})})(),await(async()=>{const{Bootware:t}=R("flair.app");c("ns","flair.ui.vue"),i("VueSetup",t,function(){c("override"),this.construct=(t=>{t("Vue Setup")}),c("override"),this.boot=(async t=>{t();const e=await d("vue/vue{.min}.js"),{VueComponent:i,VueFilter:a,VueDirective:n,VuePlugin:r,VueMixin:s}=R("flair.ui.vue");let o=Kt.client.vue.plugins,l=null,c=null;for(let t of o){if(!t.name)throw U.OperationFailed(`Plugin name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Plugin type cannot be empty. (${t.name})`);if(!(l=b(await d(t.type),r)))throw U.InvalidArgument(t.type);try{c=new l(t.name),e.use(await c.factory(),c.options||{})}catch(e){throw U.OperationFailed(`Plugin registration failed. (${t.type})`,e)}}let p=Kt.client.vue.mixins,h=null,u=null;for(let t of p){if(!t.name)throw U.OperationFailed(`Mixin name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Mixin type cannot be empty. (${t.name})`);if(!(h=b(await d(t.type),s)))throw U.InvalidArgument(t.type);try{u=new h,e.mixin(await u.factory())}catch(e){throw U.OperationFailed(`Mixin registration failed. (${t.type})`,e)}}let f=Kt.client.vue.directives,m=null,y=null;for(let t of f){if(!t.name)throw U.OperationFailed(`Directive name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Directive type cannot be empty. (${t.name})`);if(!(m=b(await d(t.type),n)))throw U.InvalidArgument(t.type);try{y=new m,e.directive(t.name,await y.factory())}catch(e){throw U.OperationFailed(`Directive registration failed. (${t.type})`,e)}}let v=Kt.client.vue.filters,w=null,$=null;for(let t of v){if(!t.name)throw U.OperationFailed(`Filter name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Filter type cannot be empty. (${t.name})`);if(!(w=b(await d(t.type),a)))throw U.InvalidArgument(t.type);try{$=new w,e.filter(t.name,await $.factory())}catch(e){throw U.OperationFailed(`Filter registration failed. (${t.type})`,e)}}let g=Kt.client.vue.components,x=null,O=null;for(let t of g){if(!t.name)throw U.OperationFailed(`Component name cannot be empty. (${t.type})`);if(!t.type)throw U.OperationFailed(`Component type cannot be empty. (${t.name})`);if(!(x=b(await d(t.name),i)))throw U.InvalidArgument(t.type);try{if(O=new x,e.options.components[t.name])throw U.Duplicate(`Component already registered. (${t.name})`);e.component(t.name,await O.factory())}catch(e){throw U.OperationFailed(`Component registration failed. (${t.type})`,e)}}})})})(),await(async()=>{const{ViewHandler:t}=R("flair.ui"),{VueComponentMembers:e}=R("flair.ui.vue");c("ns","flair.ui.vue"),i("VueView",t,[e],function(){let t=!1;c("override"),this.construct=(t=>{t(Kt.client.view.el,Kt.client.view.title,Kt.client.view.transition)}),c("private"),this.factory=(async()=>{if(this.layout&&this.layout.areas&&Array.isArray(this.layout.areas)){this.components=this.components||[];for(let t of this.layout.areas)this.components.push({name:t.component,type:t.type})}let t=this.define();return t.el="#"+this.name,this.propsData&&(t.propsData=this.propsData),this.data&&"function"!=typeof this.data&&(t.data=this.data),this.layout&&(t.template=await this.layout.merge(t.template)),t}),c("protected"),c("override"),c("sealed"),this.loadView=(async(e,i,a)=>{if(!t){t=!0,e();const n=await d("vue/vue{.min}.js");await this.load(i,a),new n(await this.factory())}}),c("protected"),c("virtual"),c("async"),this.load=K,c("protected"),this.el=null,c("protected"),this.propsData=null,c("protected"),this.data=null,c("protected"),this.layout=null})})(),l.context.current().currentAssemblyBeingLoaded(""),l.registerAdo('{"name":"flair.app","file":"./flair.app{.min}.js","mainAssembly":"flair","desc":"True Object Oriented JavaScript","title":"Flair.js","version":"0.6.7","lupdate":"Sat, 11 May 2019 03:55:13 GMT","builder":{"name":"flairBuild","version":"1","format":"fasm","formatVersion":"1","contains":["init","func","type","vars","reso","asst","rout","sreg"]},"copyright":"(c) 2017-2019 Vikas Burman","license":"MIT","types":["flair.app.Bootware","flair.app.Handler","flair.app.App","flair.app.Host","flair.ui.vue.VueComponentMembers","flair.api.RestHandler","flair.api.RestInterceptor","flair.app.BootEngine","flair.app.ClientHost","flair.app.ServerHost","flair.boot.ClientRouter","flair.boot.DIContainer","flair.boot.Middlewares","flair.boot.NodeEnv","flair.boot.ResHeaders","flair.boot.ServerRouter","flair.ui.ViewHandler","flair.ui.ViewInterceptor","flair.ui.ViewState","flair.ui.ViewTransition","flair.ui.vue.VueComponent","flair.ui.vue.VueDirective","flair.ui.vue.VueFilter","flair.ui.vue.VueLayout","flair.ui.vue.VueMixin","flair.ui.vue.VuePlugin","flair.ui.vue.VueSetup","flair.ui.vue.VueView"],"resources":[],"assets":[],"routes":[{"name":"flair.ui.vue.test2","mount":"main","index":101,"verbs":[],"path":"test/:id","handler":"abc.xyz.Test"},{"name":"flair.ui.vue.exit2","mount":"main","index":103,"verbs":[],"path":"exit","handler":"abc.xyz.Exit"}]}')}); \ No newline at end of file diff --git a/dist/flair.app.min.js.gz b/dist/flair.app.min.js.gz index b0d42dabfdf8b6f0089f58529e58957329e18ab2..4ead85cb552e8daf330ea1507d40b4bf773e46f3 100644 GIT binary patch literal 8388 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 jyW{if(!f){f=!0;const{AppDomain:r,include:n,env:i}=p;let s=i.isServer?"":(!0).document.scripts[(!0).document.scripts.length-1].src,a=i.isServer?i.isWorker?"":t:i.isWorker?"":s,o=i.isServer?a.substr(0,a.lastIndexOf("/")+1):"./",l="flairjs/preamble.js",c=e,u="flair.app.BootEngine",m=null;r.root(o),r.entryPoint(a),await r.config(c),await n(l),(m=await n(u)).start()}};if(e){let e=process.argv;t&&(e=require("worker_threads").workerData.argv);let r=e.findIndex(e=>!!e.startsWith("--flairSymbols"));-1!==r&&(u=e[r].substr(2).split("=")[1])}else u=(!0).flairSymbols||"";u&&(n=u.split(",").map(e=>e.trim())),o.symbols=Object.freeze(n),o.env=Object.freeze({type:e?"server":"client",isTesting:-1!==n.indexOf("TEST"),isServer:e,isClient:!e,isWorker:t,isMain:!t,cores:(e?require("os").cpus().length:(!0).navigator.hardwareConcurrency)||4,isCordova:!e&&!!(!0).cordova,isNodeWebkit:e&&process.versions["node-webkit"],isProd:-1===n.indexOf("DEBUG")&&-1!==n.indexOf("PROD"),isDebug:-1!==n.indexOf("DEBUG")}),p.info=Object.freeze({name:"flairjs",title:"Flair.js",file:r,version:"0.6.6",copyright:"(c) 2017-2019 Vikas Burman",license:"MIT",lupdate:new Date("Sat, 11 May 2019 03:36:56 GMT")}),p.members=[],p.options=Object.freeze(o),p.env=p.options.env;const m=(e,t,r)=>{p[e]=Object.freeze(t),p.members.push(e),"function"==typeof r&&a.push(r)},d=()=>{};m("noop",d);const h={get:()=>{throw g.NotImplemented("prop",h.get)},set:()=>{throw g.NotImplemented("prop",h.set)},ni:!0};m("nip",h);const y=()=>{throw g.NotImplemented("func",y)};y.ni=!0,m("nim",y);const g=function(e,t,r,n){let i=new Error,s=g;switch(typeof e){case"string":switch(i.name=e,typeof t){case"string":switch(i.message=t,typeof r){case"object":i.error=r,"function"==typeof n&&(s=n);break;case"function":s=r;break}break;case"object":i.message=t.message||"",i.error=t,"function"==typeof r&&(s=r);break;case"function":s=t;break}break;case"object":i.name=e.name||"Unknown",i.message=e.message||"",i.error=e,"function"==typeof t&&(s=t);break}return i.name=i.name||"Undefined",i.name.endsWith("Exception")||(i.name+="Exception"),"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(i,s),i.error&&(i.message+="["+i.error+"]"),Object.freeze(i)};g.InvalidArgument=((e,t=g.InvalidArgument)=>new g("InvalidArgument",`Argument type is invalid. (${e})`,t)),g.OperationFailed=((e,t,r=g.OperationFailed)=>new g("OperationFailed",`Operation failed with error. (${e})`,t,r)),g.Duplicate=((e,t=g.Duplicate)=>new g("Duplicate",`Item already exists.(${e})`,t)),g.NotFound=((e,t=g.NotFound)=>new g("NotFound",`Item not found. (${e})`,t)),g.InvalidDefinition=((e,t=g.InvalidDefinition)=>new g("InvalidDefinition",`Item definition is invalid. (${e})`,t)),g.InvalidOperation=((e,t=g.InvalidOperation)=>new g("InvalidOperation",`Operation is invalid in current context. (${e})`,t)),g.Circular=((e,t=g.Circular)=>new g("Circular",`Circular calls found. (${e})`,t)),g.NotImplemented=((e,t=g.NotImplemented)=>new g("NotImplemented",`Member is not implemented. (${e})`,t)),m("Exception",g);const b=()=>"_xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx".replace(/[xy]/g,e=>{var t=16*Math.random()|0,r;return("x"==e?t:3&t|8).toString(16)}),v=(e,t)=>{if(t){if(-1!==e.indexOf("{.min}"))return o.env.isProd?e.replace("{.min}",".min"):e.replace("{.min}","")}else if(-1!==e.indexOf("|")){let t=e.split("|"),r="";return"x"===(r=o.env.isServer?t[0].trim():t[1].trim())&&(r=""),-1!==r.indexOf("~")&&(t=r.split("~"),"x"===(r=o.env.isWorker?t[1].trim():t[0].trim())&&(r="")),r}return e},w=e=>!e.hasOwnProperty("prototype")&&"Function"===e.constructor.name,x=e=>"AsyncFunction"===e.constructor.name,O=(e,t,r)=>e.findIndex(e=>e[t]===r),I=(e,t,r)=>{let n=e.findIndex(e=>e[t]===r);return-1!==n?e[n]:null},A=(e,t)=>(t||(t=","),e.split(t).map(e=>e.trim())),$=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),k=(e,t,r)=>e.replace(new RegExp($(t),"g"),r),j=(e,t,r,n)=>{n||(n=[]);for(let i in t)if(t.hasOwnProperty(i)&&-1===n.indexOf(i)){if(!r&&i in e)continue;e[i]=t[i]}return e},T=t=>new Promise((r,n)=>{let i=null;(i=B(e?"serverFile":"clientFile"))(t).then(r).catch(n)}),S=(r,n,i)=>new Promise((s,a)=>{e?B("serverModule").require(r).then(s).catch(a):B("clientModule").require(r).then(e=>{e||"string"!=typeof n||(t?(e=(!0)[n]||null,i&&delete WorkerGlobalScope[n]):(e=(!0)[n]||null,i&&delete window[n])),e?s(e):s()}).catch(a)}),P=(t,r,n)=>new Promise((i,s)=>{let a=null;(a=B(e?"serverFetch":"clientFetch"))(t,r,n).then(i).catch(s)}),N=(e,t,r,n)=>{let i=t?A(t):Object.keys(e);const s=t=>{let s={};if(i.length>0)for(let e of i)s[e]=t[e];else for(let t in e)e.hasOwnProperty(t)&&(s[t]=e[t]);if(n)for(let e in n)s[e]=n[e];return r&&(s=Object.freeze(s)),s};if(Array.isArray(e)){let t=[];for(let r of e)t.push(s(r));return t}return s(e)},C=e=>btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,function e(t,r){return String.fromCharCode("0x"+r)})),D=e=>decodeURIComponent(atob(e).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join("")),E=t=>{e?B("serverModule").undef(t):B("clientModule").undef(t)},F=(e,t)=>new Promise((r,n)=>{const i=e=>{e&&0!==e.length?Promise((r,n)=>{t(r,n,e.shift())}).then(()=>{i(e)}).catch(n):r()};i(e.slice())}),z=(e,t=!0)=>{const r=e=>e&&"object"==typeof e;return e.reduce((e,n)=>(Object.keys(n).forEach(i=>{const s=e[i],a=n[i];Array.isArray(s)&&Array.isArray(a)?e[i]=t?s.concat(...a):[].concat(...a):r(s)&&r(a)?e[i]=z([s,a],t):e[i]=a}),e),{})},M=e=>{let t="";return void 0===e&&(t="undefined"),t||null!==e||(t="null"),t||"number"!=typeof e||!1!==isFinite(e)||(t="infinity"),!t&&Array.isArray(e)&&(t="array"),!t&&e instanceof Date&&(t="date"),!t&&e[i]&&(t=e[i].type),t||(t=typeof e),t};m("typeOf",M);const R=(e,t)=>{if(t[i]&&(t=t[i].name),"string"!==M(t))throw g.InvalidArgument("type",R);let r=!1;if(e)switch(t){case"NaN":r=isNaN(e);break;case"infinity":r="number"==typeof e&&!1===isFinite(e);break;case"array":case"Array":r=Array.isArray(e);break;case"date":case"Date":r=e instanceof Date;break;case"flairtype":r=e[i]&&-1!==l.indexOf(e[i].type);break;case"flairinstance":r=e[i]&&-1!==c.indexOf(e[i].type);break;case"flair":r=void 0!==e[i];break;case"cfunction":r="function"==typeof e&&!w(e);break;case"afunction":r="function"==typeof e&&w(e);break;default:r||(r=typeof e===t),!r&&e[i]&&(r||(r=t===e[i].type),r||-1===c.indexOf(e[i].type)||(r=be(e,t)),r||"class"!==e[i].type||(r=pe(e,t)),r||-1===l.indexOf(e[i].type)||(r=e[i].name===t))}else switch(t){case"undefined":r=void 0===e;break;case"null":r=null===e;break;case"NaN":r=isNaN(e);break}return r};m("is",R);const W=(...e)=>{if(0===e.length)throw g.InvalidArgument("patterns",W);let t=(...r)=>{let n=null,i=null,s="",a="",o=-1,l=-1,c=!1,u=0,f="",p={raw:r||[],index:-1,isInvalid:!1,error:null,values:{}};if(e)for(let t of e){o++,l=-1,c=!1,u=0,n=t.split(",");for(let e of n){if(l++,2!==(i=e.split(":")).length?(s=`_${o}_${l}`,a=e.trim()||""):(s=i[0].trim()||"",a=i[1].trim()||""),l>p.raw.length){c=!1;break}if(!R(p.raw[l],a)){c=!1,f=s;break}p.values[s]=p.raw[l],c=!0,u++}if(c&&u===n.length){p.index=o;break}}return p.isInvalid=-1===p.index,p.error=p.isInvalid?g.InvalidArgument(f):null,p.throwOnError=(e=>{if(p.error)throw new g(p.error,e||t)}),Object.freeze(p)};return Object.freeze(t)};m("Args",W);const U=e=>{let t;return W("argsProcessor: undefined","argsProcessor: afunction")(e).throwOnError(U),(e=e||((...e)=>e)).event=!0,e};m("event",U);const _=U(()=>{throw g.NotImplemented("event",_)});_.ni=!0,m("nie",_);const q=function(e){let t={};e=e||"",this.add=((e,r)=>{let n;W("event: string, handler: afunction")(e,r).throwOnError(this.add),t[e]||(t[e]=[]),t[e].push(r)}),this.remove=((e,r)=>{let n;if(W("event: string, handler: afunction")(e,r).throwOnError(this.remove),t[e]){let n=t[e].indexOf(r);-1!==n&&t[e].splice(n,1)}}),this.dispatch=((r,n)=>{let i;W("event: string")(r).throwOnError(this.dispatch),t[r]&&t[r].forEach(t=>{setTimeout(()=>{t(Object.freeze({host:e,name:r,args:n||[]}))},0)})}),this.count=(e=>{let r;return W("event: string")(e).throwOnError(this.count),t[e]?t[e].length:0}),this.clear=(()=>{t={}})};let L={};const B=e=>{if("string"!=typeof e)throw g.InvalidArgument("name",B);return L[e]?L[e].handler?L[e].handler:L[e].inbuilt:null};B.define=((e,t,r)=>{let n=W("name: string, members: array, inbuilt: afunction","name: string, inbuilt: afunction","name: string, members: array","name: string")(e,t,r);if(n.throwOnError(B.define),L[e])throw g.Duplicate(e,B.define);L[e]={type:n.values.members?"object":"function",members:n.values.members||null,handler:null,inbuilt:n.values.inbuilt?n.values.inbuilt(o.env):null}}),B.connect=((e,t)=>{let r;if(W("name: string, handler: afunction")(e,t).throwOnError(B.connect),!L[e])throw g.NotFound(e,B.connect);let n=t(o.env);if(typeof n!==L[e].type)throw g.InvalidArgument("handler",B.connect);let i=L[e].members;if(i)for(let e of i)if(void 0===n[e])throw g.NotImplemented(e,B.connect);L[e].handler=n}),B.disconnect=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",B.disconnect);L[e]&&(L[e].handler=null)}),B.isDefined=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",B.isDefined);return!!L[e]}),B.isConnected=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",B.isConnected);return!L[e]||!L[e].handler}),m("Port",B,()=>{for(let e in L)L.hasOwnProperty(e)&&(L[e].handler=null);L={}});const V=function(e,t,r,n,s){let a={},o={},c={},u={},f={},p={},m=!1,d="";this.name=e,this.domain=t,this.isUnloaded=(()=>m||t.isUnloaded()),this.unload=(()=>{if(!m){m=!0,delete s[e];for(let e in u)e.hasOwnProperty(e)&&ke(u[e]);a={},f={},o={},c={},u={},p={}}}),this.current=(()=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.current);return 0===n.length?r||this:n[n.length-1]}),this.registerType=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.registerType);let t="",r="",n=e[i];if(n.Type?(t=n.Type[i].name,r=n.Type[i].type):(t=n.name,r=n.type),-1===l.indexOf(r))throw g.InvalidArgument("Type",this.registerType);let s=t.substr(0,t.lastIndexOf(".")),u=t.replace(s+".","");if(a[t])throw g.Duplicate(t,this.registerType);if(o[t])throw g.Duplicate(`Already registered as Resource. (${t})`,this.registerType);if(c[t])throw g.Duplicate(`Already registered as Route. (${t})`,this.registerType);return a[t]=e,s?(p[s]||(p[s]={}),p[s][u]=e):p[u]=e,s}),this.getType=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.getType);if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",this.getType);return a[e]||null}),this.ensureType=(e=>new Promise((r,n)=>{if(this.isUnloaded())return void n(g.InvalidOperation(`Context is already unloaded. (${this.name})`));if("string"!=typeof e)return void n(g.InvalidArgument("qualifiedName"));let i=this.getType(e);if(i)r(i);else{let s=t.resolve(e);s?this.loadAssembly(s).then(()=>{(i=this.getType(e))?r(i):n(g.OperationFailed(`Assembly could not be loaded. (${s})`))}).catch(n):n(g.NotFound(e))}})),this.allTypes=(()=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.allTypes);return Object.keys(a)}),this.execute=((e,t)=>new Promise((r,n)=>{if(this.isUnloaded())return void n(g.InvalidOperation(`Context is already unloaded. (${this.name})`));e.type=e.type||"",e.typeArgs=e.typeArgs||[],e.func=e.func||"",e.args=e.args||[],e.ctx=e.ctx||{},e.keepAlive=void 0!==e.keepAlive&&e.keepAlive;const i=()=>new Promise((r,n)=>{let i=null;this.ensureType(e.type).then(s=>{try{i=new s(...e.typeArgs),"function"==typeof t&&R(i,"IProgressReporter")&&i.progress.add(t),r(i)}catch(e){n(e)}}).catch(n)}),s=t=>new Promise((r,n)=>{let i=null;(i=t[e.func](...e.args))&&"function"==typeof i.then?i.then(r).catch(n):r(i)});let a=null;e.keepAlive?u[e.type]?(a=u[e.type],s(a).then(r).catch(n)):i().then(t=>{a=t,u[e.type]=a,s(a).then(r).catch(n)}).catch(n):u[e.type]?(a=u[e.type],e.func?s(a).then(r).catch(n).finally(()=>{ke(a),delete u[e.type]}):(ke(a),delete u[e.type],r())):i().then(e=>{s(e).then(r).catch(n).finally(()=>{ke(e)})}).catch(n)})),this.namespace=(e=>{e&&"(root)"===e&&(e="");let t=null;return(t=e?p[e]||null:p)?Object.freeze(j({},t)):null}),this.currentAssemblyBeingLoaded=(e=>(void 0!==e&&(d=v(e,!0)),d)),this.loadAssembly=(e=>new Promise((t,r)=>{if(this.isUnloaded())r(g.InvalidOperation(`Context is already unloaded. (${this.name})`));else if(f[e]||this.currentAssemblyBeingLoaded()===e)t();else{n.push(this),E(e);let i=this.domain.getAdo(e),s=e;i&&i.mainAssembly&&(s.startsWith("./")&&(s=s.substr(2)),s=this.domain.loadPathOf(i.mainAssembly)+s),S(s,i.name,!0).then(a=>{a(s).then(()=>{n.pop(),f[e]=Object.freeze(new G(i,this)),t()}).catch(e=>{n.pop(),r(e)})}).catch(e=>{n.pop(),r(e)})}})),this.getAssembly=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.getAssembly);if("string"!=typeof e)throw g.InvalidArgument("file",this.getAssembly);return f[e]||null}),this.allAssemblies=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.allAssemblies);if(e){let e=[],t=Object.keys(f);for(let r of t)e.push(f[r]);return e}return Object.keys(f)}),this.registerResource=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.registerResource);if("string"!=typeof e.name||""===e.name||"string"!=typeof e.encodingType||""===e.encodingType||"string"!=typeof e.file||""===e.file||"string"!=typeof e.data||""===e.data)throw g.InvalidArgument("rdo",this.registerResource);let t=e.name.substr(0,e.name.lastIndexOf(".")),r=e.name.replace(t+".","");if(o[e.name])throw g.Duplicate(e.name,this.registerResource);if(a[e.name])throw g.Duplicate(`Already registered as Type. (${e.name})`,this.registerResource);if(c[e.name])throw g.Duplicate(`Already registered as Route. (${e.name})`,this.registerResource);return o[e.name]=Object.freeze(new J(e,t,this)),t?(p[t]||(p[t]={}),p[t][r]=o[e.name]):p[r]=o[e.name],t}),this.getResource=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.getResource);if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",this.getResource);return o[e]||null}),this.allResources=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.allResources);if(e){let e=[],t=Object.keys(o);for(let r of t)e.push(o[r]);return e}return Object.keys(o)}),this.registerRoutes=((e,t)=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.registerRoutes);for(let r of e){if("string"!=typeof r.name||""===r.name||"number"!=typeof r.index||"string"!=typeof r.mount||""===r.mount||"string"!=typeof r.path||""===r.path||"string"!=typeof r.handler||""===r.handler)throw g.InvalidArgument("route: "+r.name,this.registerRoutes);let e=r.name.substr(0,r.name.lastIndexOf(".")),n=r.name.replace(e+".","");if(c[r.name])throw g.Duplicate(r.name,this.registerRoutes);if(a[r.name])throw g.Duplicate(`Already registered as Type. (${r.name})`,this.registerRoutes);if(o[r.name])throw g.Duplicate(`Already registered as Resource. (${r.name})`,this.registerRoutes);c[r.name]=Object.freeze(new H(t,r,e,this)),e?(p[e]||(p[e]={}),p[e][n]=c[r.name]):p[n]=c[r.name]}}),this.getRoute=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.getRoute);if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",this.getRoute);return c[e]||null}),this.allRoutes=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.allRoutes);if(e){let e=[],t=Object.keys(c);for(let r of t)e.push(c[r]);return e}return Object.keys(c)}),this.isBusy=(()=>!1),this.hasActiveInstances=(()=>Object.keys(u).length)},G=function(e,t){this.context=t,this.name=e.name,this.file=e.file,this.mainAssembly=e.mainAssembly,this.desc=e.desc,this.title=e.title,this.version=e.version,this.copyright=e.copyright,this.license=e.license,this.lupdate=e.lupdate,this.builder=e.builder.name,this.flairVersion=e.builder.version,this.format=Object.freeze({name:e.builder.format,version:e.builder.formatVersion,contains:e.builder.contains.slice()}),this.types=(()=>e.types.slice()),this.getType=(t=>{if("string"!=typeof t)throw g.InvalidArgument("qualifiedName",this.getType);if(-1===e.types.indexOf(t))throw g.NotFound(t,this.getType);return this.context.getType(t)}),this.getTypes=(t=>{if(["string","interface"]!==M(t))throw g.InvalidArgument("intf",this.getTypes);let r=[];for(let n of e.types)try{let e=this.context.getType(n);xe(e,t)&&r.push(e)}catch(e){}return r}),this.resources=(()=>e.resources.slice()),this.getResource=(t=>{if("string"!=typeof t)throw g.InvalidArgument("qualifiedName",this.getResource);if(-1===e.resources.indexOf(t))throw g.NotFound(t,this.getResource);return this.context.getResource(t)}),this.routes=(()=>e.routes.slice()),this.getRoute=(t=>{if("string"!=typeof t)throw g.InvalidArgument("qualifiedName",this.getRoute);if(-1===e.routes.indexOf(t))throw g.NotFound(t,this.getRoute);return this.context.getRoute(t)}),this.assets=(()=>e.assets.slice()),this.assetsRoot=this.file.replace(".js","/"),this.getAsset=(t=>{if("string"!=typeof t)throw g.InvalidArgument("file",this.getAsset);let r=t.replace("./",this.assetsRoot);if(-1===e.assets.indexOf(t))throw g.NotFound(r,this.getAsset);return r})},J=function(t,r,n){this.context=n,this.name=t.name,this.ns=r,this.assembly=(()=>n.getAssembly(v(t.asmFile,!0))||null),this.encodingType=t.encodingType,this.file=t.file,this.type=t.file.substr(t.file.lastIndexOf(".")+1).toLowerCase(),this.data=t.data;try{if(-1!==t.encodingType.indexOf("utf8;"))if(e){let e=Buffer.from(t.data,"base64");this.data=e.toString("utf8")}else this.data=D(t.data);else e&&(this.data=Buffer.from(t.data,"base64"))}catch(e){throw g.OperationFailed(`Resource data could not be decoded. (${t.name})`,J)}"json"===this.type&&(this.data=Object.freeze(JSON.parse(this.data)))},H=function(t,r,n,i){this.context=i,this.name=r.name,this.ns=n,this.assembly=(()=>i.getAssembly(t)||null),this.index=r.index,this.mount=r.mount,this.verbs=r.verbs||(e?["get"]:["view"]),this.path=r.path,this.handler=r.handler},X=function(t,r){let n={},i=0,s=null,a=null;const o=function(){let e,t=null;const r=e=>{let r=e.data.func,n=null;const i=r=>{t.postMessage({data:{id:e.data.id,isComplete:!0,isError:!1,error:null,ctx:e.data.ctx,result:e.data.returnsAsIs?r:!!r}})},s=r=>{t.postMessage({data:{id:e.data.id,isComplete:!1,isError:!1,error:null,ctx:e.data.ctx,result:r}})},a=r=>{t.postMessage({data:{id:e.data.id,isComplete:!0,isError:!0,error:r?r.toString():"UnknownError",ctx:e.data.ctx,result:null}})},o=()=>{try{"alc"===e.data.obj&&"execute"===r&&e.data.args.push(e=>{s(e.args)});let t=n(...e.data.args);t&&"function"==typeof t.then?t.then(i).catch(a):i(t)}catch(e){a(e)}};switch(e.data.obj){case"ad":n=Y[r],o();break;case"alc":n=Y.contexts(e.data.name)[r],o();break}};if("<<{{isServer}}>>"=="true"){require("<<{{entryPoint}}>>");let e=require("worker_threads").parentPort;t=e,e.once("message",e=>{(t=e.privatePort).on("message",r)})}else importScripts("<<{{entryPoint}}>>"),(t=this).onmessage=r};let l=o.toString().replace("<<{{entryPoint}}>>",Y.entryPoint());l=`(${l=l.replace("<<{{isServer}}>>",e.toString())})();`;const c=(e,t,r,s,o,l,c)=>new Promise((u,f)=>{let p=b();n[p]={resolve:u,reject:f,progressListener:c},i++,a.postMessage({data:{id:p,obj:e,name:t,returnsAsIs:r,ctx:l||{},func:s,args:o&&Array.isArray(o)?o:[]}})}),u=e=>{if(n[e.data.id]){let t=n[e.data.id];e.data.isComplete?(delete n[e.data.id],i--,e.data.isError?t.reject(e.data.error):t.resolve(Object.freeze({ctx:e.data.ctx,result:e.data.result}))):"function"==typeof progressListener&&t.progressListener&&setTimeout(()=>{t.progressListener(Object.freeze({host:e.data.ctx._?e.data.ctx._.host:"",name:"progress",args:e.data.result}))},0)}else r(`Unknown operation is not supported. (${e.data.id})`)};if(e){const{Worker:e,MessageChannel:t}=require("worker_threads");a=new e(l,{eval:!0,workerData:{argv:process.argv}});const n=new t;a.postMessage({privatePort:n.port1},[n.port1]),n.port2.on("error",r),n.port2.on("message",u)}else{let e=new Blob([l]),t=(!0).URL.createObjectURL(e,{type:"application/javascript; charset=utf-8"});(a=new(!0).Worker(t)).onmessage=u,a.onerror=r}this.remoteCall=c,this.close=(()=>{e&&(s.close(),a.unref()),a.terminate()}),this.isBusy=(()=>i)},K=function(e,t,r){let n=!1,i={},s=new X(r,e=>{throw g.OperationFailed("Remote operation failed.",e)});this.name=e,this.isRemote=!0,this.isUnloaded=(()=>n),this.unload=(()=>{n||(n=!0,delete t[e],i={},s.remoteCall("ad","",!1,"unload").finally(()=>{s.close()}))}),this.context=Object.freeze(new Q("default",this,s)),this.contexts=(e=>i[e]||null),this.createContext=(e=>new Promise((t,r)=>{"string"!=typeof e||e&&"default"===e||i[e]?r(g.InvalidArguments("name")):s.remoteCall("ad","",!1,"createContext",[e]).then(n=>{if(n){let r=Object.freeze(new Q(e,this,s));i[e]=r,t(r)}else r(g.OperationFailed("Context could not be created."))}).catch(r)})),this.loadScripts=((...e)=>{if(this.isUnloaded())throw g.InvalidOperation(`AppDomain is already unloaded. (${this.name})`,this.loadScripts);return s.remoteCall("ad","",!1,"loadScripts",e)})},Q=function(e,t,r){let n=!1;this.name=e,this.domain=t,this.isUnloaded=(()=>n||t.isUnloaded()),this.unload=(()=>{n||(n=!0,r.remoteCall("alc",e,!1,"unload"))}),this.execute=((t,n)=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.execute);let i=t.ctx||{};return i._={host:t.type},r.remoteCall("alc",e,!0,"execute",[t],i,n)}),this.loadAssembly=(t=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.loadAssembly);return r.remoteCall("alc",e,!1,"loadAssembly",[t])}),this.isBusy=(()=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.isBusy);return r.isBusy()}),this.hasActiveInstances=(()=>{r.remoteCall("alc",e,!1,"hasActiveInstances")})},Y=function(e){let r={},n={},i={},s={},a=[],o=[],l={},c="",u="",f=null,p=null,m=null,d=null,h=null,y=!1;d=new V("default",this,null,a,s),h=d.unload,delete d.unload,d=Object.freeze(d),s[d.name]=d,i[e]=this,this.name=e,this.isRemote=!1,this.isUnloaded=(()=>y),this.unload=(async()=>{if(!y){y=!0,p&&"function"==typeof p.stop&&(await p.stop(),ke(p)),m&&"function"==typeof m.stop&&(await m.stop(),ke(m));for(let e in s)s.hasOwnProperty(e)&&"function"==typeof s[e].unload&&s[e].unload();h();for(let e in i)i.hasOwnProperty(e)&&i[e]!==this&&i[e].unload();r={},n={},s={},i={},l={},c="",u="",o=[]}}),this.createDomain=(e=>new Promise((t,r)=>{if("string"!=typeof e||e&&"default"===e||i[e])return void r(g.InvalidArguments("name"));let n=Object.freeze(new K(e,i,o));i[e]=n,t(n)})),this.domains=(e=>i[e]||null),this.context=d,this.contexts=(e=>s[e]||null),this.createContext=(e=>new Promise((t,r)=>{if("string"!=typeof e||e&&"default"===e||s[e])return void r(g.InvalidArguments("name"));let n=Object.freeze(new V(e,this,d,a,s));s[e]=n,t(n)})),this.registerAdo=((...e)=>{let i=!0,s=!1;if(1===e.length&&"string"==typeof e[0]){let t=JSON.parse(e[0]);e=Array.isArray(t)?t:[t],i=!1,s=!0}e.forEach(e=>{if("array"!==M(e.types)||"array"!==M(e.resources)||"array"!==M(e.routes)||"array"!==M(e.assets)||"string"!=typeof e.name||"string"!=typeof e.file||""===e.file)throw g.InvalidArgument("ado",this.registerAdo);if(e.file=v(e.file,!0),r[e.file]){if(i||t)throw g.Duplicate(e.file,this.registerAdo)}else r[e.file]=Object.freeze(e),e.types.forEach(t=>{if(n[t])throw g.Duplicate(t,this.registerAdo);n[t]=e.file}),e.resources.forEach(t=>{if(n[t])throw g.Duplicate(t,this.registerAdo);n[t]=e.file}),s||this.context.registerRoutes(e.routes,e.file)}),o.push(...e)}),this.getAdo=(e=>{if("string"!=typeof e)throw g.InvalidArgument("file",this.getAdo);return r[e]||null}),this.allAdos=(()=>Object.keys(r)),this.resolve=(e=>{if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",this.resolve);return n[e]||null}),this.allTypes=(()=>Object.keys(n)),this.config=(e=>!f&&e?new Promise((t,r)=>{$e(e).then(e=>{f=e,t(Object.assign({},f))}).catch(r)}):f?Object.assign({},f):null),this.entryPoint=(e=>{if(!c){if("string"!=typeof e)throw g.InvalidArgument("file",this.entryPoint);t||(c=v(e||""))}return c}),this.app=(e=>(e&&!p&&(p=e),p)),this.host=(e=>(e&&(m=e),m)),this.loadPathOf=((e,t)=>{if("string"!=typeof e)throw g.InvalidArgument("file",this.loadPath);return t&&(l[e]||(l[e]=t)),l[e]||""}),this.root=(e=>{if(!u){if("string"!=typeof e)throw g.InvalidArgument("path",this.root);(u=e).endsWith("/")||(u+="/")}return u}),this.resolvePath=(e=>{if("string"!=typeof e)throw g.InvalidArgument("path",this.resolvePath);return e.replace("./",this.root())}),this.loadScripts=((...e)=>new Promise((t,r)=>{try{Ae(e,()=>{t()})}catch(e){r(e)}})),this.onError=(e=>{if(!m)throw e;m.raiseError(e)})};let Z=new Y("default"),ee=Z.unload;delete Z.unload;const te=Z;m("AppDomain",te,()=>{ee()});const re=(e,t,r)=>{let n=W("obj: flairinstance, memberName: string","obj: flairinstance, memberName: string, attrName: string","obj: flairtype","obj: flairtype, attrName: string")(e,t,r);n.throwOnError(re);let s=[],a=e[i],o=null,l=null;return n.values.attrName?(l=n.index>1?a.attrs.type.probe(n.values.attrName).current():a.attrs.members.probe(n.values.attrName,n.values.memberName).current())&&s.push(N(l,"name, isCustom, args, type",!0)):(o=n.index>1?a.attrs.type.all().current():a.attrs.members.all(n.values.memberName).current())&&s.push(...N(o,"name, isCustom, args, type",!0)),s};m("getAttr",re);const ne=e=>{let t=W("Type: flairtype","Type: flairinstance","Type: string")(e);t.throwOnError(ne);let r=null,n="";switch(t.index){case 0:r=e[i].assembly();break;case 1:r=e[i].Type[i].assembly();break;case 2:(n=te.resolve(e))&&(r=te.context.getAssembly(n));break}return r};m("getAssembly",ne);const ie=e=>{let t;return W("Type: string")(e).throwOnError(ie),te.resolve(e)};m("getAssemblyOf",ie);const se=e=>{let t;return W("Type: flairtype")(e).throwOnError(se),e[i].context};m("getContext",se);const ae=e=>{let t;W("qualifiedName: string")(e).throwOnError(ae);let r=te.context.getResource(e)||null;return r?r.data:null};m("getResource",ae);const oe=e=>{let t;W("qualifiedName: string")(e).throwOnError(oe),te.context.getRoute(e)};m("getRoute",oe);const le=e=>{let t;return W("qualifiedName: string")(e).throwOnError(le),te.context.getType(e)};m("getType",le);const ce=e=>{let t;W("obj: flair")(e).throwOnError(ce);let r=e[i];return r&&r.Type||null};m("getTypeOf",ce);const ue=e=>{let t;W("obj: flair")(e).throwOnError(ue);let r=e[i].Type?e[i].Type[i]:e[i];return r&&r.name||""};m("getTypeName",ue);const fe=(e,t)=>{let r;return W("name: undefined","name: string","name: string, asInType: string")(e,t).throwOnError(fe),"string"==typeof t?new Promise((r,n)=>{$e(t).then(()=>{r(te.context.namespace(e))}).catch(n)}):te.context.namespace(e)};m("ns",fe);const pe=(e,t)=>{if("class"!==M(e))throw g.InvalidArgument("Type",pe);if(-1===["string","class"].indexOf(M(t)))throw g.InvalidArgument("Parent",pe);return e[i].isDerivedFrom(t)};m("isDerivedFrom",pe);const me=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",me);return e[i].isAbstract()};m("isAbstract",me);const de=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",de);return e[i].isSealed()};m("isSealed",de);const he=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",he);return e[i].isStatic()};m("isStatic",he);const ye=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",ye);return e[i].isSingleton()};m("isSingleton",ye);const ge=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",ge);return e[i].isDeprecated()};m("isDeprecated",ge);const be=(e,t)=>{let r=M(e),n=M(t),s=!1;if(-1===c.indexOf(r))throw g.InvalidArgument("obj",be);if(-1===l.indexOf(n)&&"string"!==n)throw g.InvalidArgument("Type",be);let a=e[i];switch(n){case"class":(s=a.isInstanceOf(t))||(s=a.Type[i].isDerivedFrom(t));break;case"struct":s=a.isInstanceOf(t);break;case"interface":s=a.isImplements(t);break;case"mixin":s=a.isMixed(t);break;case"string":(s=a.isInstanceOf(t))||"function"!=typeof a.isImplements||(s=a.isImplements(t)),s||"function"!=typeof a.isMixed||(s=a.isMixed(t));break}return s};m("isInstanceOf",be);const ve=(e,t)=>{if(t[i]&&(t=t[i].name),"string"!==M(t))throw g.InvalidArgument("type",ve);return R(e,t)?e:null};m("as",ve);const we=(e,t)=>{if(!e)throw g.InvalidArgument("obj",we);if("interface"!==M(t))throw g.InvalidArgument("intf",we);let r=!0;for(let n in t)if(t.hasOwnProperty(n)&&n!==i){if(!e[n]){r=!1;break}if("function"==typeof t[n]&&"function"!=typeof e[n]){r=!1;break}}return r};m("isComplies",we);const xe=(e,t)=>{if(-1===["class","instance"].indexOf(M(e)))throw g.InvalidArgument("obj",xe);if(-1===["string","interface"].indexOf(M(t)))throw g.InvalidArgument("intf",xe);return e[i].isImplements(t)};m("isImplements",xe);const Oe=(e,t)=>{if(-1===["class","instance"].indexOf(M(e)))throw g.InvalidArgument("obj",Oe);if(-1===["string","mixin"].indexOf(M(t)))throw g.InvalidArgument("mixin",Oe);return e[i].isMixed(t)};m("isMixed",Oe);const Ie=[],Ae=(t,r)=>{let n=W("deps: string, fn: afunction","deps: array, fn: afunction")(t,r);n.throwOnError(Ae),0===n.index&&(t=[t]);let i=[],a=t.slice(),o=()=>{r(...i)},l=()=>{if(0!==a.length){let t=a.shift().trim(),r=null,n=e=>{if(t.startsWith("[")&&t.endsWith("]")&&-1===t.indexOf(".")){let e=t.substr(1,t.length-2).trim();"string"==typeof(r=Ke.resolve(e,!1))&&(t=r,r=null)}e()},o=e=>{-1===t.indexOf("/")&&((r=le(t))||(r=ae(t))),e()},c=e=>{if(-1===t.indexOf("/")){let n=ie(t);n?te.context.loadAssembly(n).then(()=>{(r=le(t))||(r=ae(t)),e()}).catch(e=>{throw g.OperationFailed(`Assembly could not be loaded. (${n})`,e,Ae)}):e()}else e()},u=n=>{if(t.startsWith("./")){let i=t.substr(t.lastIndexOf(".")+1).toLowerCase();if(t=te.resolvePath(t),i)if("js"===i||"mjs"===i)t=v(t,!0),S(t).then(e=>{r=e||!0,n()}).catch(e=>{throw g.OperationFailed(`Module/File could not be loaded. (${t})`,e,Ae)});else if(e)if("json"===i)S(t).then(e=>{r=e||!0,n()}).catch(e=>{throw g.OperationFailed(`Local Module/File could not be loaded. (${t})`,e,Ae)});else{let e=require("fs");try{r=e.readFileSync(t),n()}catch(e){throw g.OperationFailed(`Local File could not be read. (${t})`,e,Ae)}}else T(t).then(e=>{r=e,n()}).catch(e=>{throw g.OperationFailed(`File could not be loaded. (${t})`,e,Ae)});else n()}else n()},f=n=>{t.startsWith("./")?n():(e||(t=`./${s}/${t}`),t=v(t,!0),S(t).then(e=>{r=e||!0,n()}).catch(e=>{throw g.OperationFailed(`Module could not be loaded. (${t})`,e,Ae)}))},p=e=>{i.push(r),e||Ie.pop(),l()};if(""===(t=v(t)))return r=!0,void p(!0);if(-1!==Ie.indexOf(t))throw g.Circular(t,Ae);Ie.push(t),n(()=>{r?p():o(()=>{r?p():c(()=>{r?p():u(()=>{r?p():f(()=>{if(!r)throw g.OperationFailed(`Dependency could not be resolved. (${t})`,Ae);p()})})})})})}else o()};l()};m("bring",Ae,()=>{Ie.length=0});const $e=(e,t)=>new Promise((r,n)=>{if("string"==typeof e)try{Ae([e],i=>{i?"boolean"!=typeof i||"string"!=typeof t||(i=(!0)[t])?r(i):n(g.OperationFailed(`Dependency object could not be located. (${e})`)):n(g.OperationFailed(`Dependency could not be resolved. (${e})`))})}catch(e){n(e)}else n(g.InvalidArgument("dep"))});m("include",$e);const ke=e=>{let t=W("obj: instance","obj: boolean")(e);t.throwOnError(ke),1===t.index&&!0===e?(Re(),a.forEach(e=>{e()}),a.length=0):"function"==typeof e[i].dispose&&e[i].dispose()};m("dispose",ke);const je=(e,t)=>{let r=W("obj: instance, fn: afunction","obj: string, fn: afunction")(e,t);if(r.throwOnError(je),1===r.index){let t=le(e);if(!t)throw g.NotFound(e,je);e=new t}let n=null,s=!1,a=!1,o=()=>{s||"function"!=typeof e[i].dispose||(s=!0,e[i].dispose())};try{(n=t(e))&&"function"==typeof n.finally&&(a=!0,n=n.finally(()=>{o()}))}finally{a||o()}return n};m("using",je);const Te=(e,...t)=>{let r=W("name: string","name: Attribute")(e);r.throwOnError(Te);let n=null,s=null,a=null;if(0===r.index){if(!(a=Ne.inbuilt[e]||null)){if(!(n=le(e)))throw g.NotFound(e,Te);e=n[i].name}}else e=(n=e)[i].name;if(-1!==O(Ne.bucket,"name",e))throw g.Duplicate(e,Te);if(n){try{s=new n(...t)}catch(e){throw new g(e,Te)}a=new Se(s.constraints)}Ne.bucket.push({name:e,cfg:a,isCustom:null!==s,attr:s,args:t})},Se=function(e,t){let r=W("isModifier: boolean, constraints: string","constraints: string","isModifier: boolean,")(e,t),n;return r.throwOnError(Se),{isModifier:r.values.isModifier||!1,constraints:r.values.constraints}},Pe=(e,...t)=>Te(e,...t),Ne=Pe[i]=Object.freeze({bucket:[],inbuilt:Object.freeze({static:new Se(!0,"(class && !$abstract) || ((class && (prop || func)) && !($abstract || $virtual || $override))"),abstract:new Se(!0,"(class && !$sealed && !$static) || ((class && (prop || func || event)) && !($override || $sealed || $static))"),virtual:new Se(!0,"class && (prop || func || construct || dispose || event) && !($abstract || $override || $sealed || $static)"),override:new Se(!0,"(class && (prop || func || construct || dispose || event) && ((@virtual || @abstract || @override) && !(virtual || abstract)) && !(@sealed || $static))"),sealed:new Se(!0,"(class || ((class && (prop || func || event)) && override))"),private:new Se(!0,"(class || struct) && (prop || func || event) && !($protected || @private || $static)"),protected:new Se(!0,"(class) && (prop || func || event) && !($private || $static)"),readonly:new Se(!0,"(class || struct) && prop && !abstract"),async:new Se(!0,"(class || struct) && func"),privateSet:new Se(!0,"(class || struct) && prop && !($private || $static)"),protectedSet:new Se(!0,"(class) && prop && !($protected || $private || $static)"),overload:new Se("((class || struct) && (func || construct) && !($virtual || $abstract || $override || $args))"),enumerate:new Se("(class || struct) && prop || func || event"),dispose:new Se("class && prop"),post:new Se("(class || struct) && event"),fetch:new Se("(class || struct) && (func && async) && !(timer || on || @fetch)"),on:new Se("class && func && !(event || $async || $args || $overload || $inject || $static)"),timer:new Se("class && func && !(event || $async || $args || $inject || @timer || $static)"),type:new Se("(class || struct) && prop"),args:new Se("(class || struct) && (func || construct) && !$on && !$overload"),inject:new Se("class && (prop || func || construct) && !(static || session || state)"),resource:new Se("class && prop && !(session || state || inject || asset)"),asset:new Se("class && prop && !(session || state || inject || resource)"),singleton:new Se("(class && !(prop || func || event) && !($abstract || $static))"),serialize:new Se("((class || struct) || ((class || struct) && prop)) && !($abstract || $static || noserialize)"),deprecate:new Se("!construct && !dispose"),session:new Se("(class && prop) && !($static || $state || $readonly || $abstract || $virtual)"),state:new Se("(class && prop) && !($static || $session || $readonly || $abstract || $virtual)"),conditional:new Se("(class || struct) && (prop || func || event)"),noserialize:new Se("(class || struct) && prop"),aspects:new Se("(class && func)"),ns:new Se("(class || struct || mixin || interface || enum) && !(prop || func || event || construct || dispose)"),mixin:new Se("class && (prop || func || event)"),interface:new Se("class && (prop || func || event)")})});for(let e in Ne.inbuilt)Ne.inbuilt.hasOwnProperty(e)&&(Te[`$$${e}`]=((...t)=>{Te(e,...t)}));Pe.collect=(()=>{let e=Ne.bucket.slice();return Pe.clear(),e}),Pe.has=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name");return-1!==Ne.bucket.findIndex(t=>t.name===e)}),Pe.get=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name");let t=Ne.bucket.findIndex(t=>t.name===e);return-1!==t?Ne.bucket[t]:null}),Pe.count=(()=>Ne.bucket.length),Pe.clear=(()=>{Ne.bucket.length=0}),m("$$",Te);const Ce=(e,t,r,n,s)=>{let a=Pe.collect(),o=null,c=null,u=De(!0,e,t),f=De(!1,e,t),p="";if(n?(o=t.attrs.type,c=t.modifiers.type,p=`${t.name}`):(o=e.attrs.members[r],c=e.modifiers.members[r],p=`${e.name}::${r}`),!s)for(let e of a)if(e.isCustom)throw g.InvalidOperation(`Custom attribute cannot be applied. (${e.name})`,We);const m=s=>{let a=!1,o=l,c=["prop","func","construct","dispose","event"],m=["static","abstract","sealed","virtual","override","private","privateSet","protected","protectedSet","readonly","async"],d=[],h=[],y=s.cfg.constraints;const b=e=>{let t={withWhat:"",matchType:"",original:e,name:"",value:!1};switch(e.substr(0,1)){case"$":t.matchType="anywhere",t.name=e.substr(1);break;case"@":t.matchType="inherited",t.name=e.substr(1);break;default:t.matchType="current",t.name=e;break}e.endsWith("^")?(t.withWhat="typeName",t.name=t.name.replace("^","")):-1!==o.indexOf(t.name)?(t.withWhat="typeType",t.matchType="current"):-1!==c.indexOf(t.name)?(t.withWhat="memberType",t.matchType="current"):m.indexOf(t.name)!==0-1?t.withWhat="modifier":t.withWhat="attribute","struct"===t.name?h.push(t):d.push(t)},v=()=>{let e=new RegExp("[^!&!|()]","g"),t="",r=[],n=0;for(;1&&null!==(t=e.exec(y));)r.push(t);t="",n=0;for(let e of r)n++," "!==e[0]?(t+=e[0],n===r.length&&(""!==t&&b(t),t="")):(""!==t&&b(t),t="");d=d.concat(h)};v();for(let s of d){switch(s.withWhat){case"typeName":switch(s.matchType){case"anywhere":s.value=s.name===t.name||t.Type[i].isDerivedFrom(s.name);break;case"inherited":s.value=t.Type[i].isDerivedFrom(s.name);break;case"current":s.value=s.name===t.name;break}break;case"typeType":s.value=t.type===s.name;break;case"memberType":s.value=!n&&e.members[r]===s.name;break;case"modifier":s.value=n?!!u.type.probe(s.name)[s.matchType]():!!u.members.probe(s.name,r)[s.matchType]();break;case"attribute":s.value=n?!!f.type.probe(s.name)[s.matchType]():!!f.members.probe(s.name,r)[s.matchType]();break}y=k(y,s.original,s.value.toString())}try{if(!(a=new Function("try {return ("+y+");}catch(e){return false;}")()))throw g.InvalidOperation(`${s.cfg.isModifier?"Modifier":"Attribute"} ${s.name} could not be applied. (${p} --\x3e [${y}])`,We)}catch(e){throw g.OperationFailed(`${s.cfg.isModifier?"Modifier":"Attribute"} ${s.name} could not be applied. (${p} --\x3e [${y}])`,e,We)}return a};for(let r of a)m(r)&&((r=N(r,null,!1,{type:n?t.name:e.name})).isCustom?o.push(r):r.cfg.isModifier?c.push(r):o.push(r))},De=(e,t,r)=>{let n=e?"modifiers":"attrs",i=(e,i,s,a)=>{let o=null;if(i&&"construct"===i&&(i="_construct"),i&&"dispose"===i&&(i="_dispose"),a)if(s){let t=r.previous();for(;1&&null!==t&&(t[n]&&t[n].type&&(o=I(t[n].type,"name",e)),!o);)t=t.previous()}else r[n]&&r[n].type&&(o=I(r[n].type,"name",e));else if(s){let r=t.previous();for(;1&&null!==r&&(r[n]&&r[n].members[i]&&(o=I(r[n].members[i],"name",e)),!o);)r=r.previous()}else t[n]&&t[n].members[i]&&(o=I(t[n].members[i],"name",e));return o},s=(e,t,r,n)=>null!==i(e,t,r,n);const a=(e,t)=>{let r;return Object.freeze({anywhere:()=>i(e,t,!1,!1)||i(e,t,!0,!1),current:()=>i(e,t,!1,!1),inherited:()=>i(e,t,!0,!1),only:Object.freeze({current:()=>i(e,t,!1,!1)&&!i(e,t,!0,!1),inherited:()=>!i(e,t,!1,!1)&&i(e,t,!0,!1)})})},o=e=>{let t;return Object.freeze({anywhere:()=>i(e,null,!1,!0)||i(e,null,!0,!0),current:()=>i(e,null,!1,!0),inherited:()=>i(e,null,!0,!0),only:Object.freeze({current:()=>i(e,null,!1,!0)&&!i(e,null,!0,!0),inherited:()=>!i(e,null,!1,!0)&&i(e,null,!0,!0)})})},l=e=>{let r=Object.freeze({current:()=>t[n].members[e].slice(),inherited:()=>{let r=[],i=null,s=t.previous();for(;1&&null!==s;)s[n]&&s[n].members&&(i=I(s[n].members,"name",e)),i&&r.push(...i),s=s.previous();return r},anywhere:()=>[...r.current(),...r.inherited()]});return r},c=()=>{let e=Object.freeze({current:()=>r[n].type.slice(),inherited:()=>{let e=[],t=null,i=r.previous();for(;1&&null!==i;)i[n]&&i[n].type&&(t=i[n].type.slice()),t&&e.push(...t),i=i.previous();return e},anywhere:()=>[...e.current(),...e.inherited()]});return e},u={type:Object.freeze({get:(e,t)=>i(e,null,t,!0),has:(e,t)=>s(e,null,t,!0),all:c,probe:o}),members:{get:(e,t,r)=>i(e,t,r,!1),has:(e,t,r)=>s(e,t,r,!1),all:l,probe:a}};return e&&(u.members.is=((e,t)=>{let r=a(e,t);switch(e){case"static":return r.anywhere();case"abstract":return r.anywhere()&&!(a("virtual",t).anywhere()||a("override",t).anywhere());case"virtual":return r.anywhere()&&!a("override",t).anywhere();case"override":return r.anywhere()&&!a("sealed",t).anywhere();case"sealed":return r.anywhere();case"private":return r.anywhere();case"protected":return r.anywhere();case"readonly":return r.anywhere();case"async":return r.anywhere()}}),u.members.type=(e=>{let r,n="";if(!("type"===t.level)){let r=t;for(;1&&null!==r&&(r.members[e]&&(n=r.members[e]),!n);)r=r.previous()}return n}),u.members.isProperty=(e=>"prop"===u.members.type(e)),u.members.isFunction=(e=>"func"===u.members.type(e)),u.members.isEvent=(e=>"event"===u.members.type(e))),u.members=Object.freeze(u.members),Object.freeze(u)},Ee=e=>{let t={getType:function(){let e;return this.instance.def.Type}},r={id:b()};e.ex.instance=j(e.ex.instance,t,!1),e.mex.instance=j(e.mex.instance,r,!1);let n={getName:function(){let e;return this.type.def.name}},i={id:b()};e.ex.type=j(e.ex.type,n,!1),e.mex.type=j(e.mex.type,i,!1)},Fe=(e,t,r,n,i,s)=>{let a={type:{Type:t,def:n,attrs:i,modifiers:s}};for(let t in e)e.hasOwnProperty(t)&&("function"==typeof e[t]?Object.defineProperty(r,t,{configurable:!0,enumerable:!1,value:e[t].bind(a)}):Object.defineProperty(r,t,{configurable:!0,enumerable:!1,value:e[t]}))},ze=(e,t,r,n,i,s,a,o,l,c)=>{let u={instance:{obj:t,def:i,attrs:a,modifiers:o},type:{Type:n,typeDef:s,attrs:l,modifiers:c}};for(let t in e)"function"==typeof e[t]?Object.defineProperty(r,t,{configurable:!0,enumerable:!1,value:e[t].bind(u)}):Object.defineProperty(r,t,{configurable:!0,enumerable:!1,value:e[t]})},Me=(e,t,r,n,s,...a)=>{let l=t[i],c=l.def(),u="___flag___",f={_flagName:u};if(void 0!==n&&n===u?(f.isNeedProtected=!0,f.isTopLevelInstance=!1,f.staticInterface=e.static?s:null,f.args=a):(f.isNeedProtected=!1,f.isTopLevelInstance=!0,f.staticInterface=e.static?t:null,f.args=void 0!==n?void 0!==s?[n,s].concat(a):[n]:[]),e.singleton&&!c.staticConstructionCycle&&!It&&f.isTopLevelInstance&&l.singleInstance.value)return l.singleInstance.value;let p={},m=null,h=null,y=null,b="_construct",v="_dispose",O={},I={},$=null,T={name:e.params.typeName,type:e.types.type,Type:t,level:"object",members:{},attrs:{members:{}},modifiers:{members:{}},previous:()=>$},S=null,N=!1,C=null,D=e.storage?B("sessionStorage"):null,E=e.storage?B("localStorage"):null;const F=Object.freeze({id:k(T.name,".","_"),name:T.name,assemblyName:ie(T.name),Type:T.Type,members:()=>{let e={};for(let t in T.members){e[t]={name:t,type:T.members[t],modifiers:[],attrs:[]};for(let r of T.modifiers.members[t])e[t].modifiers.push(r.name);for(let r of T.attrs.members[t])e[t].attrs.push(r.name);e[t].modifiers=Object.freeze(e[t].modifiers),e[t].attrs=Object.freeze(e[t].attrs),e[t]=Object.freeze(e[t])}return Object.freeze(e)}}),z=(e,t,r,n)=>{for(let i of se.members.all(t).current())if(i.isCustom){if("prop"===r){let r=i.attr.decorateProperty(T.name,t,n);if(!r.get||!r.set)throw g.OperationFailed(`${i.name} decoration result is unexpected. (${T.name}::${t})`,We);r.get=r.get.bind(e),r.set=r.set.bind(e),n=r}else{let s=null;if("func"===r){if(s=i.attr.decorateFunction(T.name,t,n),x(n)!==x(s))throw g.OperationFailed(`${i.name} decoration result is unexpected. (${T.name}::${t})`,We)}else s=i.attr.decorateEvent(T.name,t,n);if(!s)throw g.OperationFailed(`${i.name} decoration result is unexpected. (${T.name}::${t})`,We);n=s.bind(e)}i.attr=null}return n},U=(e,t,r)=>{let n=null,i=[];return i=nt(T.name,e,r),T.aspects.members[e]=i,i.length>0&&(n=it(t,T.name,e,i))&&(t=n),t},L=()=>{let n=!1,s=e=>{Object.defineProperty(p,e,Object.getOwnPropertyDescriptor(r,e))},a=Object.getOwnPropertyDescriptor(r,i);a.enumerable=!1,Object.defineProperty(p,i,a),h=p[i];for(let e in r)if(n=!1,r.hasOwnProperty(e)&&e!==i){if(n=!0,T.members[e]?(ne.members.probe("private",e).current()&&(n=!1),n&&ne.members.probe("protected",e).current()&&!f.isNeedProtected&&(n=!1)):ne.members.probe("protected",e).anywhere()&&!f.isNeedProtected&&(n=!1),n&&s(e),n&&ne.members.isProperty(e))if(ne.members.probe("privateSet",e).current()){let t=Object.getOwnPropertyDescriptor(p,e);t.set=d,Object.defineProperty(p,e,t)}else if(ne.members.probe("protectedSet",e).current()&&!f.isNeedProtected){let t=Object.getOwnPropertyDescriptor(p,e);t.set=d,Object.defineProperty(p,e,t)}if(n&&ne.members.is("abstract",e)){if(!f.isNeedProtected)throw g.NotImplemented(`Abstract member is not implemented. (${T.name}::${e})`,We);if(!ne.type.probe("abstract").current())throw g.InvalidDefinition(`Abstract member can exists only in abstract type. (${T.name}::${e})`,We)}if(n){let t=se.members.probe("enumerate",e).current();if(t&&!1===t.args[0]){let t=Object.getOwnPropertyDescriptor(p,e);t.enumerable=!1,Object.defineProperty(p,e,t)}}n&&!f.isNeedProtected&&ne.members.isEvent(e)&&p[e].strip(p)}f.isTopLevelInstance&&(ze(e.ex.instance,p,p,t,T,c,se,ne,l.attrs,l.modifiers),ze(e.mex.instance,p,h,t,T,c,se,ne,l.attrs,l.modifiers)),f.isTopLevelInstance||(h.def=T)},V=(t,r)=>{if((-1===Object.keys(p).indexOf(t)||ne.members.type(t)!==r[i].modifiers.members.type(t))&&("dispose"!==t||"function"!=typeof p[v]&&"function"!=typeof h.dispose))throw g.NotImplemented(`Interface member is not implemented. (${r[i].name+":"+t})`,We);Pe("interface",r[i].name),Ce(T,c,t,!1,e.customAttrs)},G=()=>{if(T.interfaces){for(let e of T.interfaces)for(let t in e)e.hasOwnProperty(t)&&V(t,e);delete T.interfaces}},J=(t,r,n)=>{switch(-1!==["func","prop","event"].indexOf(r)&&t.startsWith("_")&&new g("InvalidName",`Name is not valid. (${T.name}::${t})`),r){case"func":if(!e.func)throw g.InvalidOperation(`Function cannot be defined on this type. (${T.name})`,We);break;case"prop":if(!e.prop)throw g.InvalidOperation(`Property cannot be defined on this type. (${T.name})`,We);break;case"event":if(!e.event)throw g.InvalidOperation(`Event cannot be defined on this type. (${T.name})`,We);break;case"construct":if(!e.construct)throw g.InvalidOperation(`Constructor cannot be defined on this type. (${T.name})`,We);r="func";break;case"dispose":if(!e.dispose)throw g.InvalidOperation(`Dispose cannot be defined on this type. (${T.name})`,We);r="func";break}return r},H=(t,n,i)=>{let s=!0,a=se.members.probe("conditional",t).current();if(a){let e=A(a.args[0]||[]);for(let t of e){if("test"!==(t=t.toLowerCase())||!o.env.isTesting){s=!1;break}if("server"!==t||!o.env.isServer){s=!1;break}if("client"!==t||!o.env.isClient){s=!1;break}if("worker"!==t||!o.env.isWorker){s=!1;break}if("main"!==t||!o.env.isMain){s=!1;break}if("debug"!==t||!o.env.isDebug){s=!1;break}if("prod"!==t||!o.env.isProd){s=!1;break}if("cordova"!==t||!o.env.isCordova){s=!1;break}if("nodewebkit"!==t||!o.env.isNodeWebkit){s=!1;break}if(-1===o.symbols.indexOf(t)){s=!1;break}}if(!s)return s}if(e.inheritance&&ne.members.probe("abstract",t).current()&&!0!==i.ni)throw g.InvalidDefinition(`Abstract member must not be implemented. (${T.name}::${t})`,We);if((a=ne.type.probe("static").current())&&e.static)if(l.isStatic()){if(e.construct&&t===b&&0!==i.length)throw g.InvalidDefinition(`Static constructors cannot have arguments. (${T.name}::construct)`,We);if(e.dispose&&t===v)throw g.InvalidDefinition(`Static types cannot have destructors. (${T.name}::dispose)`,We)}else{if(e.construct&&t===b)throw g.InvalidDefinition(`Non-static types cannot have static constructors. (${T.name}::construct)`,We);if(e.dispose&&t===v)throw g.InvalidDefinition(`Static destructors cannot be defined. (${T.name}::dispose)`,We)}if(e.dispose&&t===v&&0!==i.length&&(i.length>1||1===i.length&&!ne.members.probe("override",t).current()))throw g.InvalidDefinition(`Destructor method cannot have arguments. (${T.name}::dispose)`,We);if(-1!==Object.keys(r).indexOf(t)&&(!e.inheritance||e.inheritance&&!ne.members.probe("override",t).current()))throw g.Duplicate(T.name+"::"+t,We);if(e.inheritance&&ne.members.probe("override",t).current()){if(-1===Object.keys(r).indexOf(t))throw g.InvalidDefinition(`Member not found to override. (${T.name}::${t})`,We);if(ne.members.type(t)!==n)throw g.InvalidDefinition(`Overriding member type is invalid. (${T.name}::${t})`,We)}if(e.static&&(ne.members.probe("static",t).current()||l.isStatic()))if("func"===n){if(w(i))throw g.InvalidDefinition(`Static functions cannot be defined as an arrow function. (${T.name}::${t})`,We)}else if("prop"===n){if(i.get&&"function"==typeof i.get&&w(i))throw g.InvalidDefinition(`Static property getters cannot be defined as an arrow function. (${T.name}::${t})`,We);if(i.set&&"function"==typeof i.set&&w(i))throw g.InvalidDefinition(`Static property setters cannot be defined as an arrow function. (${T.name}::${t})`,We)}if(e.storage&&se.members.probe("session",t).current()&&i.get&&"function"==typeof i.get)throw g.InvalidDefinition(`Session properties cannot be defined with a custom getter/setter. (${T.name}::${t})`,We);if(e.storage&&se.members.probe("state",t).current()){if(i.get&&"function"==typeof i.get)throw g.InvalidDefinition(`State properties cannot be defined with a custom getter/setter. (${T.name}::${t})`,We);if(!E)throw g.InvalidOperation("Port is not configured. (localStorage)",We)}return s},X=(t,n,s)=>{let a={get:null,set:null},o=d,l=d,c=ne.members.probe("readonly",t).anywhere(),u=ne.members.probe("static",t).anywhere(),p=se.members.probe("session",t).anywhere(),m=se.members.probe("state",t).anywhere(),h=se.members.probe("deprecate",t).current(),y=se.members.probe("inject",t).current(),b=se.members.probe("asset",t).current(),v=se.members.probe("resource",t).current(),w=se.members.probe("type",t).current(),x=null!==h,I=x?h.args[0]||`Event is marked as deprecate. (${T.name}::${t})`:"",A=O,$=r,k=T.name+"_"+t,j=!1,S=null;if(s&&(s.get||s.set)){if(!e.propGetterSetter)throw g.InvalidDefinition(`Getter/Setter are not allowed. (${T.name}::${t})`,We);s.get&&"function"==typeof s.get&&(o=s.get),s.set&&"function"==typeof s.set&&(l=s.set),e.static&&u&&($=f.staticInterface),a.get=function(){return x&&console.log(I),o.apply($)}.bind($),a.set=function(e){if(x&&console.log(I),c&&!$[i].constructing)throw g.InvalidOperation(`Property is readonly. (${T.name}::${t})`,We);if(w&&w.args[0]&&!R(e,w.args[0]))throw g.InvalidArgument("value",We);return l.apply($,[e])}.bind($)}else{if(e.static&&u){if(A=f.staticInterface[i].props,$=f.staticInterface,w&&w.args[0]&&!R(s,w.args[0]))throw g.InvalidArgument("value",We);A[k]=s}else if(e.storage&&(p||m)){if(j=!0,p?(A=D,k=r[i].id+"_"+k):A=E,re(p?"session":"state",k),!A.key(k)){if(w&&w.args[0]&&!R(s,w.args[0]))throw g.InvalidArgument("value",We);A.setItem(k,JSON.stringify({value:s}))}}else{if(w&&w.args[0]&&!R(s,w.args[0]))throw g.InvalidArgument("value",We);if(e.numOnlyProps&&"number"!=typeof s)throw g.InvalidArgument("value",We);A[k]=s}a.get=function(){return x&&console.log(I),j?JSON.parse(A.getItem(k)).value:A[k]}.bind($),a.set=function(e){if(x&&console.log(I),c&&!$[i].constructing)throw g.InvalidOperation(`Property is readonly. (${T.name}::${t})`,We);if(w&&w.args[0]&&!R(e,w.args[0]))throw g.InvalidArgument("value",We);j?A.setItem(k,JSON.stringify({value:e})):A[k]=e}.bind($)}if(y&&!u&&!j){let e=y.args[0],t=y.args.length>0?y.args[1]:[],r=y.args.length>1&&y.args[2],n=null;try{switch(M(e)){case"class":case"struct":n=t;break;case"string":if(n=le(e)){if(-1===["class","struct"].indexOf(M(n)))throw g.InvalidArgument("inject",We)}else S=Ke.resolve(e,t,r),Array.isArray(S)||(S=[S]);break;default:throw g.InvalidArgument("inject",We)}!S&&n&&(S=[],t.length>0?S.push(new n(...t)):S.push(new n))}catch(e){throw new g(e,We)}a.set(S)}if((se.members.probe("dispose",t).anywhere()||y)&&re("prop",t),(v||b)&&!j){let e=null;if(v)v.args[0]&&(e=ae(v.args[0]));else if(b.args[0]){let t=b.args[0];t.startsWith("../")&&(t=t.substr(3)),t.startsWith("./")&&(t=t.substr(2)),t.startsWith("/")&&(t=t.substr(1)),e=ie(T.name)+"/"+t}e&&a.set(e)}return e.customAttrs&&(a=z($,t,n,a)),a},K=(t,n,i)=>{if("func"===n){let n=Pe.get("overload");if(n){let s,a=e.static&&ne.members.probe("static",t).current()?f.staticInterface:r;if(Q(t,i,n),a[t]){if(Pe.count()>1)throw g.InvalidDefinition(`Overloaded function cannot define additional modifiers or attributes. (${T.name}::${t})`,We);return!0}}}return!1},Q=(t,n,s)=>{let a=e.static&&ne.members.probe("static",t).current(),o=a?f.staticInterface:r,l,c,u;(a?o[i].overloads:I)[t+"_"+A(s.args[0]).join("_")]=n},Y=(t,...n)=>{let s=e.static&&ne.members.probe("static",t).current(),a=s?f.staticInterface:r,o=s?a[i].overloads:I,l="",c="";for(let e of n)l+="_"+typeof e;return l.startsWith("_")&&(l=l.substr(1)),o[c=t+"_"+l]||null},Z=(t,n,s)=>{let a=null,o=r,l=e.inheritance&&ne.members.probe("override",t).current(),c=e.static&&ne.members.probe("static",t).current(),u=ne.members.probe("async",t).current(),p=se.members.probe("deprecate",t).current(),m=se.members.probe("inject",t).current(),h=se.members.probe("on",t).current(),y=se.members.probe("timer",t).current(),b=se.members.probe("args",t).current(),v=se.members.probe("aspects",t).current(),w=se.members.probe("fetch",t).current(),O=se.members.probe("overload",t).current(),I=null!==p,A=I?p.args[0]||`Function is marked as deprecate. (${T.name}::${t})`:"",$=null,k="",j="",S="",N=null,C=[];if(l?!0!==($=r[t].bind(o)).ni&&$!==d||($=null):c&&(o=f.staticInterface),m){let e=m.args[0],t=m.args.length>0?m.args[1]:[],r=m.args.length>1&&m.args[2];C=Ke.resolve(e,t,r),Array.isArray(C)||(C=[C])}if((u=u||x(s))?(w&&w.args.length>0?(k=w.args[0],j=w.args[1],S=w.args[2],N=((e={})=>(e.method=k,P(S,j,e)))):N=null,a=async function(...e){return new Promise(function(r,n){I&&console.log(A);let i=[];if($&&i.push($),N&&i.push(N),C.length>0&&i.push(C),b&&b.args.length>0){let t=W(...b.args)(...e);t.error&&n(t.error,s),i.push(t)}else i=i.concat(e);O&&(s=Y(t,...i));try{let e=s.apply(o,i);e&&"function"==typeof e.then?e.then(r).catch(e=>{n(e,s)}):r(e)}catch(e){n(e,s)}}.bind(o))}.bind(o)):a=function(...e){I&&console.log(A);let r=[];if($&&r.push($),C.length>0&&r.push(C),b&&b.args.length>0){let t=W(...b.args)(...e);t.throwOnError(We),r.push(t)}else r=r.concat(e);return O&&(s=Y(t,...r)),s.apply(o,r)}.bind(o),e.customAttrs&&(a=z(o,t,n,a)),e.aop){let e=[];v&&v.args.length>0&&(v.args.forEach(e=>{if(!R(e,"Aspect"))throw g.InvalidArgument(`Only Aspect types can be statically weaved on function. (${T.name}::${t})`,We)}),e=v.args),a=U(t,a,e)}if(h&&h.args.length>0&&(Je(h.args[0],a),re("handler",{name:h.args[0],handler:a})),y&&y.args.length>0){let e=!1,n=setInterval(()=>{o[i].constructing||e||(e=!0,r[t](),e=!1)},1e3*y.args[0]);re("timer",n)}return a},ee=(t,n,s)=>{let a=null,o=null,l=null,c=null,u=e.inheritance&&ne.members.probe("override",t).current(),f=se.members.probe("deprecate",t).current(),m=se.members.probe("post",t).current(),d=null!==f,h=d?f.args[0]||`Event is marked as deprecate. (${T.name}::${t})`:"",y=r;return C||(C=new q(T.name),re("event",C)),u&&!0===(l=r[t][i].processor).ni&&(l=null),a=function(...e){return d&&console.log(h),c=l?[l].concat(e):e,s.apply(y,c)}.bind(y),e.customAttrs&&(a=z(y,t,n,a)),o=a,(a=function(...e){let r=e;"function"==typeof o&&(r=o(...e)),C.dispatch(t,r),m&&m.args.length>0&&He(m.args[0],r)}.bind(y))[i]=Object.freeze({processor:o}),a.add=(e=>{C.add(t,e)}),a.remove=(e=>{C.remove(t,e)}),a.strip=(e=>{let r=j({},a,!0,["strip"]);delete a.strip,delete e.strip,Object.defineProperty(p,t,{configurable:!0,enumerable:!0,value:Object.freeze(r)})}),a},te=(t,n,s)=>{if(n=J(t,n,s),K(t,n,s))return;T.members[t]=n,T.attrs.members[t]=[],T.modifiers.members[t]=[],e.aop&&(T.aspects={members:{}}),e.mixins&&null!==y&&Pe("mixin",y[i].name),Ce(T,c,t,!1,e.customAttrs);let a=null,o=e.static&&ne.members.probe("static",t).current(),l=o?f.staticInterface:r;if(o){if(!c.staticConstructionCycle)return}else if(c.staticConstructionCycle)return;if(H(t,n,s))switch(n){case"func":a=Z(t,n,s),Object.defineProperty(l,t,{configurable:!0,enumerable:!0,value:a});break;case"prop":a=X(t,n,s),Object.defineProperty(l,t,{configurable:!0,enumerable:!0,get:a.get,set:a.set});break;case"event":a=ee(t,n,s),Object.defineProperty(l,t,{configurable:!0,enumerable:!0,value:a});break}},re=(e,t)=>{m.disposables.push({type:e,data:t})},ne=De(!0,T,c),se=De(!1,T,c);if(e.inheritance){if(f.isTopLevelInstance&&!c.staticConstructionCycle&&!It&&ne.type.probe("abstract").current())throw g.InvalidOperation(`Cannot create instance of an abstract type. (${T.name})`,We);let e=l.inherits,t=null;if(e){if((t=e[i]).isSealed()||t.isSingleton()||t.isStatic())throw g.InvalidDefinition(`Cannot inherit from a sealed, static or singleton type. (${t.name})`,We);if(t.type!==l.type)throw g.InvalidDefinition(`Cannot inherit from another type family. (${t.type})`,We);if(t.context&&t.context.isUnloaded())throw g.InvalidOperation(`Parent context is not active anymore. (${t.name})`,We);r=new e(f._flagName,f.staticInterface,f.args),m=r[i],$=m.def,delete m.def}else if(l.context&&l.context.isUnloaded())throw g.InvalidOperation(`Type context is not active anymore. (${l.name})`,We)}if(void 0===r[i]&&(r[i]={},m=r[i],e.dispose&&(m.disposables=[])),e.mixins&&(T.mixins=e.params.mixins),e.interfaces&&(T.interfaces=e.params.interfaces),m.type=e.types.instance,f.isTopLevelInstance&&(m.Type=t,e.new&&(m.isInstanceOf=(e=>{if(e[i]&&(e=e[i].name),!e)throw g.InvalidArgument("name",We);return l.name===e||l.isDerivedFrom(e)})),e.mixins&&(m.isMixed=(e=>l.isMixed(e))),e.interfaces&&(m.isImplements=(e=>l.isImplements(e))),m.modifiers=ne,m.attrs=se,It&&(m.def=T,m.typeDef=c,m.obj=r)),S=new Proxy({},{get:(t,n)=>{if(e.new){if("$self"===n)return F;if("$static"===n)return f.staticInterface}return r[n]},set:(t,n,i)=>{if(e.new&&-1!==["$self","$static"].indexOf(n))throw g.InvalidOperation(`Special members cannot be custom defined. (${n})`,We);if(N){let e="";"construct"===n?(e="construct",n=b):"dispose"===n?(e="dispose",n=v):"function"==typeof i?!0===i.event?(i!==_&&delete i.event,e="event"):e="func":e="prop",te(n,e,i)}else{if("function"==typeof i)throw g.InvalidOperation(`Redefinition of members is not allowed. (${n})`,We);r[n]=i}return!0}}),N=!0,e.mixins&&T.mixins&&!c.staticConstructionCycle){for(let e of T.mixins)y=e,e.apply(S),y=null;delete T.mixins}if(e.params.factory.apply(S),Pe.clear(),N=!1,f.isTopLevelInstance&&(e.construct&&"function"==typeof r[b]&&(m.construct=r[b],delete r[b]),e.dispose&&"function"==typeof r[v])){let e=r[v];delete r[v],m.dispose=(()=>{for(let e of m.disposables)switch(e.type){case"session":D.removeItem(e.data);break;case"state":E.removeItem(e.data);break;case"prop":r[e.data]=null;break;case"event":e.data.clear();break;case"handler":Je(e.data.name,e.data.handler,!0);break;case"timer":clearInterval(e.data);break}"function"==typeof e&&e(),m.disposables.length=0,O=null,$=null,T=null,S=null,C=null,p=null,r=null})}return e.static&&l.isStatic()&&c.staticConstructionCycle&&t.construct&&"function"==typeof t[b]&&(l.construct=t[b],delete t[b]),L(),!e.interfaces||c.staticConstructionCycle||It||G(),e.construct&&f.isTopLevelInstance&&!c.staticConstructionCycle&&!It&&"function"==typeof h.construct&&(h.constructing=!0,h.construct(...f.args),delete h.constructing),e.construct&&c.staticConstructionCycle&&"function"==typeof l.construct&&(l.constructing=!0,l.construct(),delete l.constructing),!f.isTopLevelInstance||c.staticConstructionCycle||It||e.singleton&&se.type.probe("singleton").current()&&(l.singleInstance.value=p),!f.isTopLevelInstance||c.staticConstructionCycle||It||(h=Object.freeze(h),p=Object.seal(p)),p},Re=()=>{let t=B("sessionStorage");t?t.clear():e?(!0).sessionStorage&&delete global.sessionStorage:sessionStorage.clear()},We=e=>{if(e.new=e.new||!1,e.mixins=e.mixins||!1,e.interfaces=e.interfaces||!1,e.inheritance=e.inheritance||!1,e.singleton=e.singleton||!1,e.static=e.static||!1,e.const=e.const||!1,e.func=e.func||!1,e.construct=e.construct||!1,e.dispose=e.dispose||!1,e.prop=e.prop||!1,e.propGetterSetter=e.propGetterSetter||!1,e.numOnlyProps=e.numOnlyProps||!1,e.event=e.event||!1,e.storage=e.storage||!1,e.aop=e.aop||!1,e.customAttrs=e.customAttrs||!1,e.types=e.types||{},e.types.instance=e.types.instance||"unknown",e.types.type=e.types.type||"unknown",e.params=e.params||{},e.params.typeName=e.params.typeName||"",e.params.inherits=e.params.inherits||null,e.params.mixinsAndInterfaces=e.params.mixinsAndInterfaces||null,e.params.factory=e.params.factory||null,e.mex=e.mex||{},e.mex.instance=e.mex&&e.mex.instance?e.mex.instance:{},e.mex.type=e.mex&&e.mex.type?e.mex.type:{},e.ex=e.ex||{},e.ex.instance=e.ex&&e.ex.instance?e.ex.instance:{},e.ex.type=e.ex&&e.ex.type?e.ex.type:{},e.params.ns="",e.params.mixins=[],e.params.interfaces=[],e.func||(e.construct=!1,e.dispose=!1),e.prop||(e.storage=!1),e.inheritance||(e.singleton=!1),e.func||e.prop||e.event||(e.aop=!1),e.new&&(e.const=!1),!e.params.typeName||-1!==e.params.typeName.indexOf("."))throw g.InvalidDefinition(`Type name is invalid. (${e.params.typeName})`,We);let t=Pe.get("ns"),r=t?t.args[0]:"";if(r)switch(r){case"(auto)":throw g.InvalidDefinition(`Namespace '(auto)' should be used only when bundling the type in an assembly. (${r})`,We);case"(root)":break;default:if(r.startsWith(".")||r.endsWith(".")||/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g.test(r))throw`Namespace name is invalid. (${r})`;e.params.typeName=r+"."+e.params.typeName,e.params.ns=r;break}if(e.params.mixinsAndInterfaces)for(let t of e.params.mixinsAndInterfaces)if(t[i])switch(t[i].type){case"mixin":e.params.mixins.push(t);break;case"interface":e.params.interfaces.push(t);break}delete e.params.mixinsAndInterfaces,Ee(e);let n=te.context.current(),s=n.currentAssemblyBeingLoaded()||"",a=null,o=null;if(e.new)if(e.inheritance){if(e.params.inherits&&(he(e.params.inherits)||ye(e.params.inherits)||de(e.params.inherits)))throw g.InvalidDefinition(`Cannot inherit from a sealed, static or singleton type. (${e.params.inherits[i].name})`,We);a=function(t,r,...n){return Me(e,a,{},t,r,...n)}}else a=function(...t){return Me(e,a,{},null,null,...t)};else a=e.const?function(){return Me(e,a,{})}:function(...t){if(new.target)throw g.InvalidOperation(`Construction cannot be done for this type. (${e.params.typeName})`,a);e.params.factory.apply(this,...t)};let l={name:e.params.typeName,type:e.types.type,Type:a,level:"type",attrs:{type:[]},modifiers:{type:[]},previous:()=>a[i].inherits?a[i].inherits[i].def():null};const c=De(!0,null,l),u=De(!1,null,l);if(a[i]={},(o=a[i]).name=e.params.typeName,o.type=e.types.type,o.namespace=null,o.assembly=(()=>n.getAssembly(s)||null),o.context=n,e.inheritance&&(o.inherits=e.params.inherits||null,o.isAbstract=(()=>!!c.type.probe("abstract").current()),o.isSealed=(()=>!!c.type.probe("sealed").current()),o.isDerivedFrom=(t=>{if(t[i]&&(t=t[i].name),"string"!=typeof t)throw g.InvalidArgument("name",o.isDerivedFrom);let r=!1,n=e.params.inherits;if(!r)for(;1&&null!==n;){if(n[i].name===t){r=!0;break}n=n[i].inherits}return r}),o.inherits)){let e=u.type.probe("deprecate").anywhere();if(e){let t=e.args[0]||`Type is marked as deprecated. (${o.name})`;console.log(t)}}if(e.static&&(o.isStatic=(()=>!!c.type.probe("static").current()),o.props={},o.overloads={}),e.singleton&&(o.isSingleton=(()=>!!u.type.probe("singleton").current()),o.singleInstance={value:null}),e.mixins&&(o.mixins=e.params.mixins,o.isMixed=(e=>{if(e[i]&&(e=e[i].name),"string"!=typeof e)throw g.InvalidArgument("name",o.isMixed);let t=!1,r=a;for(;1&&null!==r&&(r[i].mixins&&(t=-1!==I(r[i].mixins,"name",e)),!t);)r=r[i].inherits;return t})),e.interfaces&&(o.interfaces=e.params.interfaces,o.isImplements=(e=>{if(e[i]&&(e=e[i].name),"string"!=typeof e)throw g.InvalidArgument("name",o.isImplements);let t=!1,r=a;for(;1&&null!==r&&(r[i].interfaces&&(t=-1!==I(r[i].interfaces,"name",e)),!t);)r=r[i].inherits;return t})),o.isDeprecated=(()=>!!u.type.probe("deprecate").current()),o.def=(()=>l),o.modifiers=c,o.attrs=u,Ce(null,l,null,!0,e.customAttrs),e.static&&c.type.probe("static").current()){if(e.params.interfaces.length>0)throw g.InvalidDefinition("Static types cannot implement interfaces.",We);if(e.params.mixins.length>0)throw g.InvalidDefinition("Static types cannot implement mixins.",We)}if(e.static){let t=e.params.factory?e.params.factory.toString():"";if(o.isStatic()||-1!==t.indexOf(`$$('static')`)||-1!==t.indexOf(`$$("static")`)){l.staticConstructionCycle=!0;let e=new a;ke(e),delete l.staticConstructionCycle}}Fe(e.ex.type,a,a,l,u,c),Fe(e.mex.type,a,o,l,u,c);let f=null,p=!1;return e.static&&o.isStatic()||e.const?(f=new a,e.const&&(p=!0)):(p=!0,f=a),r&&(o.namespace=te.context.current().registerType(f)),a[i]=Object.freeze(o),p&&Object.freeze(f),f},Ue=(e,t,r,n)=>{let i=W("name: string, inherits: class, factory: cfunction","name: string, inherits: class, mixints: array, factory: cfunction","name: string, factory: cfunction","name: string, mixints: array, factory: cfunction")(e,t,r,n);i.throwOnError(Ue);let s={new:!0,mixins:!0,interfaces:!0,inheritance:!0,singleton:!0,static:!0,func:!0,construct:!0,dispose:!0,prop:!0,propGetterSetter:!0,event:!0,storage:!0,aop:!0,customAttrs:!0,types:{instance:"instance",type:"class"},params:{typeName:i.values.name,inherits:i.values.inherits,mixinsAndInterfaces:i.values.mixints,factory:i.values.factory},mex:{instance:{},type:{}},ex:{instance:{},type:{}}};return We(s)};m("Class",Ue);const _e=(e,t)=>{let r=W("name: string, factory: cfunction")(e,t);r.throwOnError(_e);let n={const:!0,func:!0,dispose:!0,prop:!0,propGetterSetter:!0,event:!0,types:{instance:"interface",type:"interface"},params:{typeName:r.values.name,factory:r.values.factory}};return We(n)};m("Interface",_e);const qe=(e,t)=>{let r=W("name: string, factory: cfunction")(e,t);r.throwOnError(qe);let n={new:!0,func:!0,construct:!0,prop:!0,propGetterSetter:!0,types:{instance:"sinstance",type:"struct"},params:{typeName:r.values.name,factory:r.values.factory}};return We(n)};m("Struct",qe);const Le=(e,t)=>{let r=W("name: string, factory: cfunction")(e,t);r.throwOnError(Le);let n={const:!0,prop:!0,numOnlyProps:!0,types:{instance:"enum",type:"enum"},params:{typeName:r.values.name,factory:r.values.factory},mex:{instance:{getName:function(e){let t=this.instance.obj,r=this.instance.def,n="";for(let i in r.members)if(r.members.hasOwnProperty(i)&&"prop"===r.members[i]&&t[i]===e){n=i;break}return n},getNames:function(){let e=this.instance.def,t=[];for(let r in e.members)e.members.hasOwnProperty(r)&&"prop"===e.members[r]&&t.push(r);return t},getValues:function(){let e=this.instance.def,t=this.instance.obj,r=[];for(let n in e.members)e.members.hasOwnProperty(n)&&"prop"===e.members[n]&&r.push(t[n]);return r}}}};return We(n)};Le.getName=((e,t)=>{let r;return W("enumType: enum, enumValue: number")(e,t).throwOnError(Le.getName),e[i].getName(t)}),Le.getNames=(e=>{let t;return W("enumType: enum")(e).throwOnError(Le.getNames),e[i].getNames()}),Le.getValues=(e=>{let t;return W("enumType: enum")(e).throwOnError(Le.getValues),e[i].getValues()}),Le.isDefined=((e,t)=>{let r=W("enumType: enum, nameOrValue: number","enumType: enum, nameOrValue: string")(e,t);return r.throwOnError(Le.isDefined),1===r.index?-1!==e[i].getNames().indexOf(t):""!==e[i].getName(t)}),m("Enum",Le);const Be=(e,t)=>{let r=W("name: string, factory: cfunction")(e,t);r.throwOnError(Be);let n={func:!0,prop:!0,propGetterSetter:!0,event:!0,customAttrs:!0,types:{type:"mixin"},params:{typeName:r.values.name,factory:r.values.factory}};return We(n)};m("Mixin",Be);const Ve=new q,Ge=Ve.dispatch,Je=(e,t,r)=>{let n;W("event: string, handler: afunction")(e,t).throwOnError(Je),r?Ve.remove(e,t):Ve.add(e,t)};m("on",Je,()=>{Ve.clear()});const He=(e,t)=>{if("string"!=typeof e)throw g.InvalidArgument("event",He);Ge(e,t)};m("post",He);let Xe={};const Ke={isRegistered:e=>{if("string"!=typeof e)throw g.InvalidArgument("alias",Ke.isRegistered);return void 0!==Xe[e]&&Xe[e].length>0},get:(e,t)=>{if("string"!=typeof e)throw g.InvalidArgument("alias",Ke.get);return t?Xe[e]?Xe[e].slice():[]:Xe[e]?Xe[e][0]:null},register:(e,t)=>{if("string"!=typeof e)throw g.InvalidArgument("alias",Ke.register);if(!t)throw g.InvalidArgument("item",Ke.register);if(-1!==e.indexOf("."))throw g.InvalidArgument("alias",Ke.register);"string"==typeof t&&((t=v(t)).endsWith(".js")||t.endsWith(".mjs"))&&(t=v(t,!0)),Xe[e]||(Xe[e]=[]),Xe[e].push(t)},resolve:(e,t,...r)=>{if("string"!=typeof e)throw g.InvalidArgument("alias",Ke.resolve);if("boolean"!=typeof t)throw g.InvalidArgument("isAll",Ke.resolve);let n=null;const s=e=>{let t=e;if("string"==typeof e)if(e.endsWith(".js")||e.endsWith(".mjs"));else{let t=le(e);t&&(e=t)}if(-1!==["class","struct"].indexOf(M(e)))try{t=r?new e(...r):new e}catch(t){throw g.OperationFailed(`Type could not be instantiated. (${e[i].name})`,Ke.resolve)}return t};return Xe[e]&&Xe[e].length>0&&(t?(n=[],Xe[e].forEach(e=>{n.push(s(e))})):n=s(Xe[e][0])),n}};m("Container",Ke,()=>{Xe={}});let Qe=d,Ye=[],Ze=500;const et={on:(e,...t)=>{Qe===d&&("string"==typeof e?t.unshift(e):"function"==typeof e&&Je("telemetry",e),Qe=((e,r)=>{if(0===t.length||-1!==t.indexOf(e)){let t=Object.freeze({type:e,data:r});Ye.push(t),Ye.length>Ze-25&&Ye.splice(0,25),He("telemetry",t)}}))},collect:()=>{if(Qe!==d){let e=Ye.slice();return Ye.length=0,e}return[]},off:e=>Qe!==d?("function"==typeof e&&Je("telemetry",e,!0),Qe=d,et.collect()):[],isOn:()=>Qe!==d,types:Object.freeze({RAW:"raw",EXEC:"exec",INFO:"info",INCL:"incl"})};m("telemetry",et,()=>{Ye.length=0});const tt=[],rt={register:(e,t)=>{let r;W("pointcut: string, aspect: Aspect")(e,t).throwOnError(rt.register);let n=e,i="",s="",a="",o="",l=null;-1!==n.indexOf(":")&&(n=(l=n.split(":"))[0].trim(),a=l[1].trim()||"*"),-1!==n.indexOf(".")?(i=n.substr(0,n.lastIndexOf(".")),s=n.substr(n.lastIndexOf(".")+1)):(i="",s=n),o=k(o=i+"/"+s+":"+a,".","[.]"),o=k(o,"?","."),o=k(o,"*",".*"),tt.push({rex:new RegExp(o),Aspect:t})}},nt=(e,t,r)=>{let n=[],s="",a="",o=t.trim(),l="";return-1!==e.indexOf(".")?(s=e.substr(0,e.lastIndexOf(".")).trim(),a=e.substr(e.lastIndexOf(".")+1).trim()):(s="",a=e.trim()),l=s+"/"+a+":"+o,r&&n.push(...r),tt.forEach(e=>{e.rex.test(l)&&-1===O(n,"name",e.Aspect[i].name)&&n.push({name:e.Aspect[i].name,Aspect:e.Aspect})}),n},it=(e,t,r,n)=>{let i=[],s=[],a=[],o=null,l;for(let e of n)(o=new e.Aspect).before!==d&&i.push(o.before),o.around!==d&&a.push(o.around),o.after!==d&&s.push(o.after);return a.length>0&&a.reverse(),function(...n){let o=null,l=null,c={typeName:()=>t,funcName:()=>r,error:e=>(e&&(o=e),o),result:e=>(void 0!==e&&(l=e),l),args:()=>n,data:{}};for(let e of i)try{e(c)}catch(e){o=e}const u=e=>{for(let t of s)try{t(e)}catch(e){c.error(e)}};let f=e,p=null;for(let e of a)f=e(c,f);try{(p=f(...n))&&"function"==typeof p.then?c.result(new Promise((e,t)=>{p.then(t=>{c.result(t),u(c),e(c.result())}).catch(e=>{c.error(e),u(c),t(c.error())})})):(c.result(p),u(c))}catch(e){c.error(e)}return c.result()}};m("Aspects",rt,()=>{tt.length=0});const st=(e,t)=>{let r=null,n=null,s=t?JSON.parse(e):e,a=t?null:e[i].Type,o=a[i];const l=(e,t)=>{let r=e[i],n=r.attrs,s=r.modifiers,a=[],o=!1;for(let r in e)e.hasOwnProperty(r)&&r!==i&&((o=s.members.isProperty(r))&&(o=t?!n.members.probe("noserialize",r).anywhere():n.members.probe("serialize",r).anywhere())&&(o=!(s.members.is("private",r)||s.members.is("protected",r)||s.members.is("static",r)||s.members.is("readonly",r)||n.members.probe("resource",r).anywhere()||n.members.probe("asset",r).anywhere()||n.members.probe("inject",r).anywhere())),o&&a.push(r));return a};if(t){if(!s.type&&!s.data)throw g.InvalidArgument("json");if(!(a=le(s.type)))throw g.NotFound(s.type,at.deserialize);try{r=new a}catch(e){throw g.OperationFailed(`Object could not be deserialized. (${s.type})`,e,at.deserialize)}n=o.attrs.type.probe("serialize").anywhere()?l(r,!0):l(r,!1);for(let e of n)r[e]=s.data[e]}else{n=o.attrs.type.probe("serialize").anywhere()?l(s,!0):l(s,!1),r={type:s[i].Type[i].name,data:{}};for(let e of n)r.data[e]=s[e];try{r=JSON.stringify(r)}catch(e){throw g.OperationFailed(`Object could not be serialized. (${s[i].Type[i].name})`,e,at.serialize)}}return r},at={serialize:e=>{if(c.indexOf(-1===M(e)))throw g.InvalidArgument("instance",at.serialize);return st(e)},deserialize:e=>{if(!e||"string"!=typeof e)throw g.InvalidArgument("json",at.deserialize);return st(e,!0)}};m("Serializer",at);const ot=4*o.env.cores,lt=Math.round(ot/4),ct=[],ut=()=>{if(ct.length<=lt)return;let e=ct.slice(0),t=()=>{if(0!==e.length){let r=e.shift();r.context.isBusy()?t():r.context.hasActiveInstances().then(e=>{0===e?(r.unload(),ct.shift(),ct.length>lt&&t()):t()}).catch(()=>{t()})}};t()},ft=()=>new Promise((e,t)=>{let r=ct.slice(0),n=()=>{if(0!==r.length){let i=r.shift();i.context.isBusy()?n():i.context.hasActiveInstances().then(t=>{0===t?e(i):n()}).catch(t)}else ct.length{e(t)}).catch(t):t(g.OperationFailed("AppDomain pool limit reached."))};n()}),pt={TaskInfo:function(e,...t){if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",pt.TaskInfo);return Object.freeze({type:e,typeArgs:t})},getHandle:(e,t)=>new Promise((r,n)=>{ft().then(n=>{let i;r({run:(...r)=>new Promise((i,s)=>{n.context.execute({type:e.type,typeArgs:e.typeArgs,func:"run",args:r,keepAlive:!0},t).then(i).catch(s)}),close:()=>new Promise((r,i)=>{n.context.execute({type:e.type,typeArgs:e.typeArgs,func:"",args:[],keepAlive:!1},t).then(r).catch(i).finally(ut)})})}).catch(n)}),invoke:(e,t)=>new Promise((r,n)=>{ft().then(i=>{i.context.execute({type:e.type,typeArgs:e.typeArgs,func:"run",args:[],keepAlive:!1},t).then(r).catch(n).finally(ut)}).catch(n)}),parallel:Object.freeze({invokeMany:(...e)=>{let t=[];for(let r of e)t.push(pt.invoke(r));return t},invoke:Object.freeze({any:(...e)=>Promise.race(pt.parallel.invokeMany(...e)),all:(...e)=>Promise.all(pt.parallel.invokeMany(...e)),each:(e,t,...r)=>new Promise((n,i)=>{let s=pt.parallel.invokeMany(...r),a=0;for(let r of s)r.then(e).catch(t).finally(()=>{a++,s.length===a&&n()})})})}),sequence:Object.freeze({invoke:(...e)=>new Promise((t,r)=>{let n=e.slice(0),i=[],s=()=>{if(0===n.length)return void t(...i);let e=n.shift();pt.invoke(e).then(e=>{i.push(e),s()}).catch(r)};n.length>0?s():t(...i)})})};m("Tasks",pt,()=>{ct.forEach(e=>{e.unload()}),ct.length=0});const mt=e=>{if(e.isServer){if(!(!0).sessionStorage){const e=function(){let e={};this.key=(t=>{if(!t)throw g.InvalidArgument("key",this.key);return!!e.key}),this.getItem=(t=>{if(!t)throw g.InvalidArgument("key",this.getItem);return e.key||null}),this.setItem=((t,r)=>{if(!t)throw g.InvalidArgument("key",this.setItem);if(void 0===r)throw g.InvalidArgument("value",this.setItem);e[t]=r}),this.removeItem=(t=>{if(!t)throw g.InvalidArgument("key",this.removeItem);delete e[t]}),this.clear=(()=>{e={}})};global.sessionStorage=new e}return(!0).sessionStorage}return(!0).sessionStorage};B.define("sessionStorage",["key","getItem","setItem","removeItem","clear"],mt);const dt=e=>e.isServer?mt(e):(!0).localStorage;B.define("localStorage",["key","getItem","setItem","removeItem","clear"],dt);const ht=e=>{let t={require:e=>new Promise((t,r)=>{if("string"==typeof e)try{t(require(e))}catch(e){r(new g(e))}else r(g.InvalidArgument("module"))}),undef:e=>{if("string"!=typeof e)throw g.InvalidArgument("module",t.undef);try{delete require.cache[require.resolve(e)]}catch(e){throw new g(e,t.undef)}}};return t};B.define("serverModule",["require","undef"],ht);const yt=e=>{let t={require:t=>new Promise((r,n)=>{if("string"!=typeof t)return void n(g.InvalidArgument("module"));let i=t.substr(t.lastIndexOf(".")+1).toLowerCase();try{if("undefined"!=typeof require)try{require([t],r,n)}catch(e){n(new g(e))}else if(e.isWorker)try{importScripts(t),r()}catch(e){n(new g(e))}else{let e=(!0).document.createElement("script");e.type="mjs"===i?"module":"text/javascript",e.name=t,e.src=t,e.onload=(()=>{r()}),e.onerror=(e=>{n(new g(e))}),(!0).document.head.appendChild(e)}}catch(e){n(new g(e))}}),undef:e=>{if("string"!=typeof e)throw g.InvalidArgument("module",t.undef);let r=null;(r=(!0).requirejs||null)&&r.undef(e)}};return t};B.define("clientModule",["require","undef"],yt);const gt=e=>e=>new Promise((t,r)=>{if("string"!=typeof e)return void r(g.InvalidArgument("file"));let n=e.substr(e.lastIndexOf(".")+1).toLowerCase();try{let i=null,s="";(i=e.startsWith("https")?require("https"):require("http")).get(e,e=>{e.on("data",e=>{s+=e}),e.on("end",()=>{let i=e.headers["content-type"];if("json"===n||/^application\/json/.test(i))try{let e=JSON.parse(s);t(e)}catch(e){r(new g(e))}else t(s)})}).on("error",e=>{r(new g(e))})}catch(e){r(new g(e))}});B.define("serverFile",gt);const bt=e=>e=>new Promise((t,r)=>{if("string"!=typeof e)return void r(g.InvalidArgument("file"));let n=e.substr(e.lastIndexOf(".")+1).toLowerCase();fetch(e).then(i=>{if(i.ok){let e=i.headers["content-type"];"json"===n||/^application\/json/.test(e)?i.json().then(t).catch(e=>{r(new g(e))}):i.text().then(t).catch(e=>{r(new g(e))})}else r(g.OperationFailed(e,i.status))}).catch(e=>{r(new g(e))})});B.define("clientFile",bt);const vt=e=>t=>{let r={},n=te.config();return n&&n[t]&&(r=z([r,n[t]],!1)),e.isWorker&&n&&n[`worker:${t}`]&&(r=z([r,n[`worker:${t}`]],!1)),r};B.define("settingsReader",vt);const wt=(e,t,r,n)=>new Promise((i,s)=>{"string"==typeof t?"string"==typeof r&&-1!==["text","json","buffer","form","blob"].indexOf(r)?n?e(t,n).then(e=>{if(e.ok){let t="";switch(r){case"text":t="text";break;case"json":t="json";break;case"buffer":t="arrayBuffer";break;case"form":t="formData";break;case"blob":t="blob";break}e[t]().then(i).catch(e=>{s(new g(e))})}else s(g.OperationFailed(t,e.status))}).catch(e=>{s(new g(e))}):s(g.InvalidArgument("reqData")):s(g.InvalidArgument("resDataType")):s(g.InvalidArgument("url"))}),xt=e=>(e,t,r)=>wt(require("node-fetch"),e,t,r);B.define("serverFetch",xt);const Ot=e=>(e,t,r)=>wt(fetch,e,t,r);B.define("clientFetch",Ot);let It=!1;const At=[],$t=function(e){if(!e||!e[i]&&-1!==l.indexOf(e[i].type))throw g.InvalidArgument("Type",$t);let t=null,r=null,n=null,s=null,a=null,o=null,c=null;const u=function(e){this.getType=(()=>"modifier"),this.getName=(()=>e.name),this.getArgs=(()=>e.args.slice()),this.getConstraints=(()=>e.cfg.constraints)},f=function(e){this.getType=(()=>"attribute"),this.getName=(()=>e.name),this.getArgs=(()=>e.args.slice()),this.getConstraints=(()=>e.cfg.constraints),this.isCustom=(()=>e.isCustom)},p=function(){this.getTarget=(()=>n),this.getTargetType=(()=>t.type),this.getName=(()=>t.name||""),this.getType=(()=>t.type),this.getId=(()=>t.id),this.getNamespace=(()=>t.namespace),this.getAssembly=(()=>t.assembly()),this.getContext=(()=>t.context),this.isClass=(()=>"class"===t.type),this.isEnum=(()=>"enum"===t.type),this.isStruct=(()=>"struct"===t.type),this.isMixin=(()=>"mixin"===t.type),this.isInterface=(()=>"interface"===t.type),this.isDeprecated=(()=>t.isDeprecated()),this.getModifiers=(()=>{let e=[];for(let t of o.modifiers.type)e.push(u(t));return e}),this.getAttributes=(()=>{let e=[];for(let t of o.attrs.type)e.push(f(t));return e}),this.getAttribute=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",this.getAttribute);let t=I(o.attrs.type,"name",e);return t?f(t):null}),this.getModifier=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",this.getModifier);let t=I(o.modifiers.type,"name",e);return t?u(t):null})},m=function(e){e.getMixins=(()=>{let e=[];if(t.mixins)for(let r of t.mixins)e.push($t(r));return e}),e.isMixed=(r=>{if(!r)throw g.InvalidArgument("name",e.isMixed);return!!t.isMixed&&t.isMixed(r)})},d=function(e){e.getInterfaces=(()=>{let e=[];if(t.interfaces)for(let r of t.interfaces)e.push($t(r));return e}),e.isImplements=(r=>{if(!r)throw g.InvalidArgument("name",e.isImplements);return!!t.isImplements&&t.isImplements(r)})},h=function(e){e.getInstanceType=(()=>r.type),e.isInstanceOf=(t=>{if(!t)throw g.InvalidArgument("name",e.isInstanceOf);return!!r.isInstanceOf&&r.isInstanceOf(t)})},y=e=>{let t=r.def;for(;1&&null!==t&&!t.members[e];)t=t.previous();return t},b=()=>{let e=null,t=null;c={};for(let n in r.obj){switch((e=y(n)).members[n]){case"prop":t=new x(n,e);break;case"func":t=new A(n,e);break;case"event":t=new $(n,e);break;case"construct":t=new A(n,e);break;case"dispose":t=new A(n,e);break}c[n]=t}},v=()=>{c||b()},w=function(e,r){this.getType=(()=>"member"),this.getMemberType=(()=>r.members[e]),this.getName=(()=>e),this.getModifiers=(()=>{let t=[];for(let r of a.modifiers[e])t.push(u(r));return t}),this.getAttributes=(()=>{let t=[];for(let r of a.attrs[e])t.push(f(r));return t}),this.getAttribute=(t=>{if("string"!=typeof t)throw g.InvalidArgument("name",this.getAttribute);let r=I(a.attrs[e],"name",t);return r?f(r):null}),this.getModifier=(t=>{if("string"!=typeof t)throw g.InvalidArgument("name",this.getModifier);let r=I(a.modifiers[e],"name",t);return r?u(r):null}),this.isPrivate=(()=>null!==I(a.modifiers[e],"name","private")),this.isProtected=(()=>null!==I(a.modifiers[e],"name","protected")),this.isPublic=(()=>!this.isPrivate()&&!this.isProtected()),this.isStatic=(()=>null!==I(a.modifiers[e],"name","static")),this.isSealed=(()=>null!==I(a.modifiers[e],"name","sealed")),this.isAbstract=(()=>null!==I(a.modifiers[e],"name","abstract")),this.isVirtual=(()=>null!==I(a.modifiers[e],"name","virtual")),this.isOverride=(()=>null!==I(a.modifiers[e],"name","virtual")),this.isEnumerable=(()=>Object.getOwnPropertyDescriptor(s,e).enumerable),this.isDeprecated=(()=>null!==I(a.attrs[e],"name","deprecate")),this.isConditional=(()=>null!==I(a.attrs[e],"name","conditional")),this.isMixed=(()=>null!==I(a.attrs[e],"name","mixin")),this.isInterfaced=(()=>null!==I(a.attrs[e],"name","interface")),this.getMixin=(()=>{let r=null,n=I(a.attrs[e],"name","mixin");if(n&&t.mixins)for(let e of t.mixins)if(e===n.name){r=$t(e);break}return r}),this.getInterface=(()=>{let r=null,n=I(a.attrs[e],"name","interface");if(n&&t.interfaces)for(let e of t.interfaces)if(e===n.name){r=$t(e);break}return r})},x=function(e,t){let r=new w(e,t);return r.isReadOnly=(()=>null!==I(a.modifiers[e],"name","readonly")),r.isSerializable=(()=>null!==I(a.attrs[e],"name","serialize")||null===I(a.attrs[e],"name","noserialize")&&null!==I(o.attrs.type,"name","serialize")),r.getValueType=(()=>{let t=I(a.attrs[e],"name","type");if(t)return t.args[0]}),r.isDisposable=(()=>null!==I(a.attrs[e],"name","dispose")),r.isInjectable=(()=>null!==I(a.attrs[e],"name","inject")),r.isResource=(()=>null!==I(a.attrs[e],"name","resource")),r.isAsset=(()=>null!==I(a.attrs[e],"name","asset")),r.isSession=(()=>null!==I(a.attrs[e],"name","session")),r.isState=(()=>null!==I(a.attrs[e],"name","state")),r},A=function(e,t){let r=new w(e,t);return r.isASync=(()=>null!==I(a.modifiers[e],"name","async")),r.isConstructor=(()=>"_construct"===e),r.isDestructor=(()=>"_dispose"===e),r.isSub=(()=>null!==I(a.attrs[e],"name","on")),r.isTimered=(()=>null!==I(a.attrs[e],"name","timer")),r.isInjectable=(()=>null!==I(a.attrs[e],"name","inject")),r.getArgs=(()=>{let t=I(a.attrs[e],"name","args");return t?t.args.slice():null}),r.getAspects=(()=>{if(a.aspects&&a.aspects[e].length>0){let t=[];for(let r of a.aspects[e])t.push($t(r));return t}return null}),r.getAspect=(t=>{if("string"!=typeof t)throw g.InvalidArgument("name",r.getAspect);if(a.aspects&&a.aspects[e].length>0){let r=I(a.aspects[e],"name",t);if(r)return $t(r)}return null}),r},$=function(e,t){let r=new w(e,t);return delete r.isStatic,r.isPub=(()=>null!==I(a.attrs[e],"name","post")),r},k=function(e){e.getMembers=(e=>{(e=e||{}).types=e.types||[],e.modifiers=e.modifiers||[],e.attrs=e.attrs||[],e.aspects=e.aspects||[],e.inherited=void 0===e.inherited||e.inherited,v();let t=null,r=!0,n=[];for(let i in c)if(r=!0,c.hasOwnProperty(i)){if(t=c[i],e.types.length>0&&-1===e.types.indexOf(t.getMemberType())&&(r=!1),!r||e.inherited||a.members[i]||(r=!1),r&&e.modifiers.length>0)for(let t of e.modifiers)if(-1===O(a.modifiers[i],"name",t)){r=!1;break}if(r&&e.attrs.length>0)for(let t of e.attrs)if(-1===O(a.attrs[i],"name",t)){r=!1;break}if(r&&e.aspects.length>0&&"func"===t.getMemberType())for(let t of e.aspects)if(-1===O(a.aspects[i],"name",t)){r=!1;break}r&&n.push(c[i])}return n}),e.getMember=(t=>{if("string"!=typeof t)throw g.InvalidArgument("memberName",e.getMember);return v(),c[t]||null})},j=function(){let e=new p;return e.getParent=(()=>null!==t.inherits?$t(t.inherits):null),e.isDerivedFrom=(r=>{if(!r)throw g.InvalidArgument("name",e.isDerivedFrom);return!!t.isDerivedFrom&&t.isDerivedFrom(r)}),e.getFamily=(()=>{let e=[],r=t.inherits;for(null!==t.inherits&&e.push($t(t.inherits));1&&null!==r;)e.push($t(r)),r=r[i].inherits;return e}),e.isSealed=(()=>!!t.isSealed&&t.isSealed()),e.isAbstract=(()=>!!t.isAbstract&&t.isAbstract()),m(e),d(e),e.isSerializable=(()=>null!==I(o.attrs.type,"name","serialize")),e.isStatic=(()=>!!t.isStatic&&t.isStatic()),e.isSingleton=(()=>!!t.isSingleton&&t.isSingleton()),e.isSingleInstanceCreated=(()=>!!t.singleInstance.value),h(e),k(e),e},T=function(){let e=new p;return e.isSerializable=(()=>null!==I(o.attrs.type,"name","serialize")),h(e),k(e),e},S=function(){let e=new p;return k(e),e},P=function(){let e=new p;return k(e),e},N=function(){let e=new p;return e.getNames=(()=>{let e=[];for(let t of Le.getNames(s))e.push(x(t,a));return e}),e.getName=(t=>{if(!t)throw g.InvalidArgument("enumValue",e.getName);let r=Le.getName(s,t);return r?x(r,a):null}),e.getValues=(()=>Le.getValues(s)),e.isDefined=(t=>{if(!t)throw g.InvalidArgument("nameOrValue",e.isDefined);return Le.isDefined(s,t)}),e};let C=null,D=null,E=!1;switch(It=!0,e[i].type){case"class":n=e,s=new e,E=!0,C=new j;break;case"struct":n=e,s=new e,E=!0,C=new T;break;case"enum":n=e[i].Type,s=e,C=new N;break;case"mixin":D=Ue("temp",[n=e],function(){}),s=new D,E=!0,C=new S;break;case"interface":n=e[i].Type,s=e,C=new P;break}return It=!1,E&&At.push(s),t=n[i],r=s[i],a=r.def,o=r.typeDef,C};$t.dispose=(()=>{if(At.length>0)for(let e of At)ke(e);At.length=0}),m("Reflector",$t,()=>{$t.dispose()});const kt=()=>{};return kt.forEachAsync=F,kt.replaceAll=k,kt.splitAndTrim=A,kt.findIndexByProp=O,kt.findItemByProp=I,kt.which=v,kt.isArrowFunc=w,kt.isASyncFunc=x,kt.sieve=N,kt.deepMerge=z,kt.b64EncodeUnicode=C,kt.b64DecodeUnicode=D,m("utils",kt),p.members=Object.freeze(p.members),(e=>{const{Class:t,Struct:r,Enum:n,Interface:i,Mixin:s,Aspects:a,AppDomain:o,$$:l,attr:c,bring:u,Container:f,include:m,Port:d,on:h,post:y,telemetry:g,Reflector:b,Serializer:v,Tasks:w,as:x,is:O,isComplies:I,isDerivedFrom:A,isAbstract:$,isSealed:k,isStatic:j,isSingleton:T,isDeprecated:S,isImplements:P,isInstanceOf:N,isMixed:C,getAssembly:D,getAttr:E,getContext:F,getResource:z,getRoute:M,getType:R,ns:W,getTypeOf:U,getTypeName:_,typeOf:q,dispose:L,using:B,Args:V,Exception:G,noop:J,nip:H,nim:X,nie:K,event:Q}=p,{TaskInfo:Y}=p.Tasks,{env:Z}=p.options,{forEachAsync:ee,replaceAll:te,splitAndTrim:re,findIndexByProp:ne,findItemByProp:ie,which:se,guid:ae,isArrowFunc:oe,isASyncFunc:le,sieve:ce,deepMerge:ue,b64EncodeUnicode:fe,b64DecodeUnicode:pe}=p.utils,{$$static:me,$$abstract:de,$$virtual:he,$$override:ye,$$sealed:ge,$$private:be,$$privateSet:ve,$$protected:we,$$protectedSet:xe,$$readonly:Oe,$$async:Ie,$$overload:Ae,$$enumerate:$e,$$dispose:ke,$$post:je,$$on:Te,$$timer:Se,$$type:Pe,$$args:Ne,$$inject:Ce,$$resource:De,$$asset:Ee,$$singleton:Fe,$$serialize:ze,$$deprecate:Me,$$session:Re,$$state:We,$$conditional:Ue,$$noserialize:_e,$$ns:qe}=l,Le=Z.isServer||Z.isWorker?null:(!0).document,Be=o.context.current().name,Ve=e,Ge=Ve.substr(0,Ve.lastIndexOf("/")+1);o.loadPathOf("flair",Ge);let Je=JSON.parse("{}"),He=p.Port("settingsReader");if("function"==typeof He){let e=He("flair");e&&(Je=ue([Je,e],!1))}Je=Object.freeze(Je);let Xe=JSON.parse("{}");Xe=Object.freeze(Xe),o.context.current().currentAssemblyBeingLoaded("./flair{.min}.js"),l("abstract"),l("ns","(root)"),t("Aspect",function(){l("virtual"),this.before=X,l("virtual"),this.around=X,l("virtual"),this.after=X}),l("abstract"),l("ns","(root)"),t("Attribute",function(){l("virtual"),this.construct=(e=>{this.args=e}),l("readonly"),this.args=[],l("readonly"),this.constraints="",l("virtual"),this.decorateProperty=X,l("virtual"),this.decorateFunction=X,l("virtual"),this.decorateEvent=X}),l("ns","(root)"),i("IDisposable",function(){this.dispose=X}),l("ns","(root)"),i("IProgressReporter",function(){this.progress=K}),(()=>{const{IProgressReporter:e,IDisposable:r}=W();l("ns","(root)"),t("Task",[e,r],function(){let e=!1,t=!1,r=o.context.current().name;this.construct=((...e)=>{this.args=e,this.context=o.contexts(r),this.domain=this.context.domain}),l("abstract"),this.dispose=X,l("protected"),this.args=[],l("protected"),this.context=null,l("protected"),this.domain=null,this.run=(async(...r)=>{if(t)throw G.InvalidOperation("Task is already running",this.run);if(t=!0,!e)try{await this.setup(),e=!0}catch(e){throw t=!1,e}try{let e;return await this.onRun(...r)}catch(e){throw e}finally{t=!1}}),this.progress=Q(e=>({data:e})),l("virtual"),l("protected"),l("async"),this.setup=J,l("abstract"),l("protected"),l("async"),this.onRun=X})})(),o.context.current().currentAssemblyBeingLoaded(""),"function"==typeof onLoadComplete&&onLoadComplete()})(r),Object.freeze(p)}); \ No newline at end of file +!function(e,t){"use strict";"function"==typeof!0&&(!0).amd?(!0)(t):"object"==typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=t()),module.exports=exports=t()):e.flair=t()}(this,function(){"use strict";let e=new Function("try {return this===global;}catch(e){return false;}")(),t=e?!require("worker_threads").isMainThread:void 0!==!0,r=e?__filename:t?self.location.href:(!0).document.currentScript.src,n=[],i=Symbol("[meta]"),s="modules",a=[],o={},l=["class","enum","interface","mixin","struct"],c=["instance","sinstance"],u="",f=!1,p=async(e,t)=>{if(!f){f=!0;const{AppDomain:r,include:n,env:i}=p;let s=i.isServer?"":(!0).document.scripts[(!0).document.scripts.length-1].src,a=i.isServer?i.isWorker?"":t:i.isWorker?"":s,o=i.isServer?a.substr(0,a.lastIndexOf("/")+1):"./",l="flairjs/preamble.js",c=e,u="flair.app.BootEngine",m=null;r.root(o),r.entryPoint(a),await r.config(c),await n(l),(m=await n(u)).start()}};if(e){let e=process.argv;t&&(e=require("worker_threads").workerData.argv);let r=e.findIndex(e=>!!e.startsWith("--flairSymbols"));-1!==r&&(u=e[r].substr(2).split("=")[1])}else u=(!0).flairSymbols||"";u&&(n=u.split(",").map(e=>e.trim())),o.symbols=Object.freeze(n),o.env=Object.freeze({type:e?"server":"client",isTesting:-1!==n.indexOf("TEST"),isServer:e,isClient:!e,isWorker:t,isMain:!t,cores:(e?require("os").cpus().length:(!0).navigator.hardwareConcurrency)||4,isCordova:!e&&!!(!0).cordova,isNodeWebkit:e&&process.versions["node-webkit"],isProd:-1===n.indexOf("DEBUG")&&-1!==n.indexOf("PROD"),isDebug:-1!==n.indexOf("DEBUG")}),p.info=Object.freeze({name:"flairjs",title:"Flair.js",file:r,version:"0.6.7",copyright:"(c) 2017-2019 Vikas Burman",license:"MIT",lupdate:new Date("Sat, 11 May 2019 03:55:11 GMT")}),p.members=[],p.options=Object.freeze(o),p.env=p.options.env;const m=(e,t,r)=>{p[e]=Object.freeze(t),p.members.push(e),"function"==typeof r&&a.push(r)},d=()=>{};m("noop",d);const h={get:()=>{throw g.NotImplemented("prop",h.get)},set:()=>{throw g.NotImplemented("prop",h.set)},ni:!0};m("nip",h);const y=()=>{throw g.NotImplemented("func",y)};y.ni=!0,m("nim",y);const g=function(e,t,r,n){let i=new Error,s=g;switch(typeof e){case"string":switch(i.name=e,typeof t){case"string":switch(i.message=t,typeof r){case"object":i.error=r,"function"==typeof n&&(s=n);break;case"function":s=r;break}break;case"object":i.message=t.message||"",i.error=t,"function"==typeof r&&(s=r);break;case"function":s=t;break}break;case"object":i.name=e.name||"Unknown",i.message=e.message||"",i.error=e,"function"==typeof t&&(s=t);break}return i.name=i.name||"Undefined",i.name.endsWith("Exception")||(i.name+="Exception"),"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(i,s),i.error&&(i.message+="["+i.error+"]"),Object.freeze(i)};g.InvalidArgument=((e,t=g.InvalidArgument)=>new g("InvalidArgument",`Argument type is invalid. (${e})`,t)),g.OperationFailed=((e,t,r=g.OperationFailed)=>new g("OperationFailed",`Operation failed with error. (${e})`,t,r)),g.Duplicate=((e,t=g.Duplicate)=>new g("Duplicate",`Item already exists.(${e})`,t)),g.NotFound=((e,t=g.NotFound)=>new g("NotFound",`Item not found. (${e})`,t)),g.InvalidDefinition=((e,t=g.InvalidDefinition)=>new g("InvalidDefinition",`Item definition is invalid. (${e})`,t)),g.InvalidOperation=((e,t=g.InvalidOperation)=>new g("InvalidOperation",`Operation is invalid in current context. (${e})`,t)),g.Circular=((e,t=g.Circular)=>new g("Circular",`Circular calls found. (${e})`,t)),g.NotImplemented=((e,t=g.NotImplemented)=>new g("NotImplemented",`Member is not implemented. (${e})`,t)),m("Exception",g);const b=()=>"_xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx".replace(/[xy]/g,e=>{var t=16*Math.random()|0,r;return("x"==e?t:3&t|8).toString(16)}),v=(e,t)=>{if(t){if(-1!==e.indexOf("{.min}"))return o.env.isProd?e.replace("{.min}",".min"):e.replace("{.min}","")}else if(-1!==e.indexOf("|")){let t=e.split("|"),r="";return"x"===(r=o.env.isServer?t[0].trim():t[1].trim())&&(r=""),-1!==r.indexOf("~")&&(t=r.split("~"),"x"===(r=o.env.isWorker?t[1].trim():t[0].trim())&&(r="")),r}return e},w=e=>!e.hasOwnProperty("prototype")&&"Function"===e.constructor.name,x=e=>"AsyncFunction"===e.constructor.name,O=(e,t,r)=>e.findIndex(e=>e[t]===r),I=(e,t,r)=>{let n=e.findIndex(e=>e[t]===r);return-1!==n?e[n]:null},A=(e,t)=>(t||(t=","),e.split(t).map(e=>e.trim())),$=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),k=(e,t,r)=>e.replace(new RegExp($(t),"g"),r),j=(e,t,r,n)=>{n||(n=[]);for(let i in t)if(t.hasOwnProperty(i)&&-1===n.indexOf(i)){if(!r&&i in e)continue;e[i]=t[i]}return e},T=t=>new Promise((r,n)=>{let i=null;(i=B(e?"serverFile":"clientFile"))(t).then(r).catch(n)}),S=(r,n,i)=>new Promise((s,a)=>{e?B("serverModule").require(r).then(s).catch(a):B("clientModule").require(r).then(e=>{e||"string"!=typeof n||(t?(e=(!0)[n]||null,i&&delete WorkerGlobalScope[n]):(e=(!0)[n]||null,i&&delete window[n])),e?s(e):s()}).catch(a)}),P=(t,r,n)=>new Promise((i,s)=>{let a=null;(a=B(e?"serverFetch":"clientFetch"))(t,r,n).then(i).catch(s)}),N=(e,t,r,n)=>{let i=t?A(t):Object.keys(e);const s=t=>{let s={};if(i.length>0)for(let e of i)s[e]=t[e];else for(let t in e)e.hasOwnProperty(t)&&(s[t]=e[t]);if(n)for(let e in n)s[e]=n[e];return r&&(s=Object.freeze(s)),s};if(Array.isArray(e)){let t=[];for(let r of e)t.push(s(r));return t}return s(e)},C=e=>btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,function e(t,r){return String.fromCharCode("0x"+r)})),D=e=>decodeURIComponent(atob(e).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join("")),E=t=>{e?B("serverModule").undef(t):B("clientModule").undef(t)},F=(e,t)=>new Promise((r,n)=>{const i=e=>{e&&0!==e.length?Promise((r,n)=>{t(r,n,e.shift())}).then(()=>{i(e)}).catch(n):r()};i(e.slice())}),z=(e,t=!0)=>{const r=e=>e&&"object"==typeof e;return e.reduce((e,n)=>(Object.keys(n).forEach(i=>{const s=e[i],a=n[i];Array.isArray(s)&&Array.isArray(a)?e[i]=t?s.concat(...a):[].concat(...a):r(s)&&r(a)?e[i]=z([s,a],t):e[i]=a}),e),{})},M=e=>{let t="";return void 0===e&&(t="undefined"),t||null!==e||(t="null"),t||"number"!=typeof e||!1!==isFinite(e)||(t="infinity"),!t&&Array.isArray(e)&&(t="array"),!t&&e instanceof Date&&(t="date"),!t&&e[i]&&(t=e[i].type),t||(t=typeof e),t};m("typeOf",M);const R=(e,t)=>{if(t[i]&&(t=t[i].name),"string"!==M(t))throw g.InvalidArgument("type",R);let r=!1;if(e)switch(t){case"NaN":r=isNaN(e);break;case"infinity":r="number"==typeof e&&!1===isFinite(e);break;case"array":case"Array":r=Array.isArray(e);break;case"date":case"Date":r=e instanceof Date;break;case"flairtype":r=e[i]&&-1!==l.indexOf(e[i].type);break;case"flairinstance":r=e[i]&&-1!==c.indexOf(e[i].type);break;case"flair":r=void 0!==e[i];break;case"cfunction":r="function"==typeof e&&!w(e);break;case"afunction":r="function"==typeof e&&w(e);break;default:r||(r=typeof e===t),!r&&e[i]&&(r||(r=t===e[i].type),r||-1===c.indexOf(e[i].type)||(r=be(e,t)),r||"class"!==e[i].type||(r=pe(e,t)),r||-1===l.indexOf(e[i].type)||(r=e[i].name===t))}else switch(t){case"undefined":r=void 0===e;break;case"null":r=null===e;break;case"NaN":r=isNaN(e);break}return r};m("is",R);const W=(...e)=>{if(0===e.length)throw g.InvalidArgument("patterns",W);let t=(...r)=>{let n=null,i=null,s="",a="",o=-1,l=-1,c=!1,u=0,f="",p={raw:r||[],index:-1,isInvalid:!1,error:null,values:{}};if(e)for(let t of e){o++,l=-1,c=!1,u=0,n=t.split(",");for(let e of n){if(l++,2!==(i=e.split(":")).length?(s=`_${o}_${l}`,a=e.trim()||""):(s=i[0].trim()||"",a=i[1].trim()||""),l>p.raw.length){c=!1;break}if(!R(p.raw[l],a)){c=!1,f=s;break}p.values[s]=p.raw[l],c=!0,u++}if(c&&u===n.length){p.index=o;break}}return p.isInvalid=-1===p.index,p.error=p.isInvalid?g.InvalidArgument(f):null,p.throwOnError=(e=>{if(p.error)throw new g(p.error,e||t)}),Object.freeze(p)};return Object.freeze(t)};m("Args",W);const U=e=>{let t;return W("argsProcessor: undefined","argsProcessor: afunction")(e).throwOnError(U),(e=e||((...e)=>e)).event=!0,e};m("event",U);const _=U(()=>{throw g.NotImplemented("event",_)});_.ni=!0,m("nie",_);const q=function(e){let t={};e=e||"",this.add=((e,r)=>{let n;W("event: string, handler: afunction")(e,r).throwOnError(this.add),t[e]||(t[e]=[]),t[e].push(r)}),this.remove=((e,r)=>{let n;if(W("event: string, handler: afunction")(e,r).throwOnError(this.remove),t[e]){let n=t[e].indexOf(r);-1!==n&&t[e].splice(n,1)}}),this.dispatch=((r,n)=>{let i;W("event: string")(r).throwOnError(this.dispatch),t[r]&&t[r].forEach(t=>{setTimeout(()=>{t(Object.freeze({host:e,name:r,args:n||[]}))},0)})}),this.count=(e=>{let r;return W("event: string")(e).throwOnError(this.count),t[e]?t[e].length:0}),this.clear=(()=>{t={}})};let L={};const B=e=>{if("string"!=typeof e)throw g.InvalidArgument("name",B);return L[e]?L[e].handler?L[e].handler:L[e].inbuilt:null};B.define=((e,t,r)=>{let n=W("name: string, members: array, inbuilt: afunction","name: string, inbuilt: afunction","name: string, members: array","name: string")(e,t,r);if(n.throwOnError(B.define),L[e])throw g.Duplicate(e,B.define);L[e]={type:n.values.members?"object":"function",members:n.values.members||null,handler:null,inbuilt:n.values.inbuilt?n.values.inbuilt(o.env):null}}),B.connect=((e,t)=>{let r;if(W("name: string, handler: afunction")(e,t).throwOnError(B.connect),!L[e])throw g.NotFound(e,B.connect);let n=t(o.env);if(typeof n!==L[e].type)throw g.InvalidArgument("handler",B.connect);let i=L[e].members;if(i)for(let e of i)if(void 0===n[e])throw g.NotImplemented(e,B.connect);L[e].handler=n}),B.disconnect=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",B.disconnect);L[e]&&(L[e].handler=null)}),B.isDefined=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",B.isDefined);return!!L[e]}),B.isConnected=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",B.isConnected);return!L[e]||!L[e].handler}),m("Port",B,()=>{for(let e in L)L.hasOwnProperty(e)&&(L[e].handler=null);L={}});const V=function(e,t,r,n,s){let a={},o={},c={},u={},f={},p={},m=!1,d="";this.name=e,this.domain=t,this.isUnloaded=(()=>m||t.isUnloaded()),this.unload=(()=>{if(!m){m=!0,delete s[e];for(let e in u)e.hasOwnProperty(e)&&ke(u[e]);a={},f={},o={},c={},u={},p={}}}),this.current=(()=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.current);return 0===n.length?r||this:n[n.length-1]}),this.registerType=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.registerType);let t="",r="",n=e[i];if(n.Type?(t=n.Type[i].name,r=n.Type[i].type):(t=n.name,r=n.type),-1===l.indexOf(r))throw g.InvalidArgument("Type",this.registerType);let s=t.substr(0,t.lastIndexOf(".")),u=t.replace(s+".","");if(a[t])throw g.Duplicate(t,this.registerType);if(o[t])throw g.Duplicate(`Already registered as Resource. (${t})`,this.registerType);if(c[t])throw g.Duplicate(`Already registered as Route. (${t})`,this.registerType);return a[t]=e,s?(p[s]||(p[s]={}),p[s][u]=e):p[u]=e,s}),this.getType=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.getType);if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",this.getType);return a[e]||null}),this.ensureType=(e=>new Promise((r,n)=>{if(this.isUnloaded())return void n(g.InvalidOperation(`Context is already unloaded. (${this.name})`));if("string"!=typeof e)return void n(g.InvalidArgument("qualifiedName"));let i=this.getType(e);if(i)r(i);else{let s=t.resolve(e);s?this.loadAssembly(s).then(()=>{(i=this.getType(e))?r(i):n(g.OperationFailed(`Assembly could not be loaded. (${s})`))}).catch(n):n(g.NotFound(e))}})),this.allTypes=(()=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.allTypes);return Object.keys(a)}),this.execute=((e,t)=>new Promise((r,n)=>{if(this.isUnloaded())return void n(g.InvalidOperation(`Context is already unloaded. (${this.name})`));e.type=e.type||"",e.typeArgs=e.typeArgs||[],e.func=e.func||"",e.args=e.args||[],e.ctx=e.ctx||{},e.keepAlive=void 0!==e.keepAlive&&e.keepAlive;const i=()=>new Promise((r,n)=>{let i=null;this.ensureType(e.type).then(s=>{try{i=new s(...e.typeArgs),"function"==typeof t&&R(i,"IProgressReporter")&&i.progress.add(t),r(i)}catch(e){n(e)}}).catch(n)}),s=t=>new Promise((r,n)=>{let i=null;(i=t[e.func](...e.args))&&"function"==typeof i.then?i.then(r).catch(n):r(i)});let a=null;e.keepAlive?u[e.type]?(a=u[e.type],s(a).then(r).catch(n)):i().then(t=>{a=t,u[e.type]=a,s(a).then(r).catch(n)}).catch(n):u[e.type]?(a=u[e.type],e.func?s(a).then(r).catch(n).finally(()=>{ke(a),delete u[e.type]}):(ke(a),delete u[e.type],r())):i().then(e=>{s(e).then(r).catch(n).finally(()=>{ke(e)})}).catch(n)})),this.namespace=(e=>{e&&"(root)"===e&&(e="");let t=null;return(t=e?p[e]||null:p)?Object.freeze(j({},t)):null}),this.currentAssemblyBeingLoaded=(e=>(void 0!==e&&(d=v(e,!0)),d)),this.loadAssembly=(e=>new Promise((t,r)=>{if(this.isUnloaded())r(g.InvalidOperation(`Context is already unloaded. (${this.name})`));else if(f[e]||this.currentAssemblyBeingLoaded()===e)t();else{n.push(this),E(e);let i=this.domain.getAdo(e),s=e;i&&i.mainAssembly&&(s.startsWith("./")&&(s=s.substr(2)),s=this.domain.loadPathOf(i.mainAssembly)+s),S(s,i.name,!0).then(a=>{a(s).then(()=>{n.pop(),f[e]=Object.freeze(new G(i,this)),t()}).catch(e=>{n.pop(),r(e)})}).catch(e=>{n.pop(),r(e)})}})),this.getAssembly=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.getAssembly);if("string"!=typeof e)throw g.InvalidArgument("file",this.getAssembly);return f[e]||null}),this.allAssemblies=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.allAssemblies);if(e){let e=[],t=Object.keys(f);for(let r of t)e.push(f[r]);return e}return Object.keys(f)}),this.registerResource=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.registerResource);if("string"!=typeof e.name||""===e.name||"string"!=typeof e.encodingType||""===e.encodingType||"string"!=typeof e.file||""===e.file||"string"!=typeof e.data||""===e.data)throw g.InvalidArgument("rdo",this.registerResource);let t=e.name.substr(0,e.name.lastIndexOf(".")),r=e.name.replace(t+".","");if(o[e.name])throw g.Duplicate(e.name,this.registerResource);if(a[e.name])throw g.Duplicate(`Already registered as Type. (${e.name})`,this.registerResource);if(c[e.name])throw g.Duplicate(`Already registered as Route. (${e.name})`,this.registerResource);return o[e.name]=Object.freeze(new J(e,t,this)),t?(p[t]||(p[t]={}),p[t][r]=o[e.name]):p[r]=o[e.name],t}),this.getResource=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.getResource);if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",this.getResource);return o[e]||null}),this.allResources=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.allResources);if(e){let e=[],t=Object.keys(o);for(let r of t)e.push(o[r]);return e}return Object.keys(o)}),this.registerRoutes=((e,t)=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.registerRoutes);for(let r of e){if("string"!=typeof r.name||""===r.name||"number"!=typeof r.index||"string"!=typeof r.mount||""===r.mount||"string"!=typeof r.path||""===r.path||"string"!=typeof r.handler||""===r.handler)throw g.InvalidArgument("route: "+r.name,this.registerRoutes);let e=r.name.substr(0,r.name.lastIndexOf(".")),n=r.name.replace(e+".","");if(c[r.name])throw g.Duplicate(r.name,this.registerRoutes);if(a[r.name])throw g.Duplicate(`Already registered as Type. (${r.name})`,this.registerRoutes);if(o[r.name])throw g.Duplicate(`Already registered as Resource. (${r.name})`,this.registerRoutes);c[r.name]=Object.freeze(new H(t,r,e,this)),e?(p[e]||(p[e]={}),p[e][n]=c[r.name]):p[n]=c[r.name]}}),this.getRoute=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.getRoute);if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",this.getRoute);return c[e]||null}),this.allRoutes=(e=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.allRoutes);if(e){let e=[],t=Object.keys(c);for(let r of t)e.push(c[r]);return e}return Object.keys(c)}),this.isBusy=(()=>!1),this.hasActiveInstances=(()=>Object.keys(u).length)},G=function(e,t){this.context=t,this.name=e.name,this.file=e.file,this.mainAssembly=e.mainAssembly,this.desc=e.desc,this.title=e.title,this.version=e.version,this.copyright=e.copyright,this.license=e.license,this.lupdate=e.lupdate,this.builder=e.builder.name,this.flairVersion=e.builder.version,this.format=Object.freeze({name:e.builder.format,version:e.builder.formatVersion,contains:e.builder.contains.slice()}),this.types=(()=>e.types.slice()),this.getType=(t=>{if("string"!=typeof t)throw g.InvalidArgument("qualifiedName",this.getType);if(-1===e.types.indexOf(t))throw g.NotFound(t,this.getType);return this.context.getType(t)}),this.getTypes=(t=>{if(["string","interface"]!==M(t))throw g.InvalidArgument("intf",this.getTypes);let r=[];for(let n of e.types)try{let e=this.context.getType(n);xe(e,t)&&r.push(e)}catch(e){}return r}),this.resources=(()=>e.resources.slice()),this.getResource=(t=>{if("string"!=typeof t)throw g.InvalidArgument("qualifiedName",this.getResource);if(-1===e.resources.indexOf(t))throw g.NotFound(t,this.getResource);return this.context.getResource(t)}),this.routes=(()=>e.routes.slice()),this.getRoute=(t=>{if("string"!=typeof t)throw g.InvalidArgument("qualifiedName",this.getRoute);if(-1===e.routes.indexOf(t))throw g.NotFound(t,this.getRoute);return this.context.getRoute(t)}),this.assets=(()=>e.assets.slice()),this.assetsRoot=this.file.replace(".js","/"),this.getAsset=(t=>{if("string"!=typeof t)throw g.InvalidArgument("file",this.getAsset);let r=t.replace("./",this.assetsRoot);if(-1===e.assets.indexOf(t))throw g.NotFound(r,this.getAsset);return r})},J=function(t,r,n){this.context=n,this.name=t.name,this.ns=r,this.assembly=(()=>n.getAssembly(v(t.asmFile,!0))||null),this.encodingType=t.encodingType,this.file=t.file,this.type=t.file.substr(t.file.lastIndexOf(".")+1).toLowerCase(),this.data=t.data;try{if(-1!==t.encodingType.indexOf("utf8;"))if(e){let e=Buffer.from(t.data,"base64");this.data=e.toString("utf8")}else this.data=D(t.data);else e&&(this.data=Buffer.from(t.data,"base64"))}catch(e){throw g.OperationFailed(`Resource data could not be decoded. (${t.name})`,J)}"json"===this.type&&(this.data=Object.freeze(JSON.parse(this.data)))},H=function(t,r,n,i){this.context=i,this.name=r.name,this.ns=n,this.assembly=(()=>i.getAssembly(t)||null),this.index=r.index,this.mount=r.mount,this.verbs=r.verbs||(e?["get"]:["view"]),this.path=r.path,this.handler=r.handler},X=function(t,r){let n={},i=0,s=null,a=null;const o=function(){let e,t=null;const r=e=>{let r=e.data.func,n=null;const i=r=>{t.postMessage({data:{id:e.data.id,isComplete:!0,isError:!1,error:null,ctx:e.data.ctx,result:e.data.returnsAsIs?r:!!r}})},s=r=>{t.postMessage({data:{id:e.data.id,isComplete:!1,isError:!1,error:null,ctx:e.data.ctx,result:r}})},a=r=>{t.postMessage({data:{id:e.data.id,isComplete:!0,isError:!0,error:r?r.toString():"UnknownError",ctx:e.data.ctx,result:null}})},o=()=>{try{"alc"===e.data.obj&&"execute"===r&&e.data.args.push(e=>{s(e.args)});let t=n(...e.data.args);t&&"function"==typeof t.then?t.then(i).catch(a):i(t)}catch(e){a(e)}};switch(e.data.obj){case"ad":n=Y[r],o();break;case"alc":n=Y.contexts(e.data.name)[r],o();break}};if("<<{{isServer}}>>"=="true"){require("<<{{entryPoint}}>>");let e=require("worker_threads").parentPort;t=e,e.once("message",e=>{(t=e.privatePort).on("message",r)})}else importScripts("<<{{entryPoint}}>>"),(t=this).onmessage=r};let l=o.toString().replace("<<{{entryPoint}}>>",Y.entryPoint());l=`(${l=l.replace("<<{{isServer}}>>",e.toString())})();`;const c=(e,t,r,s,o,l,c)=>new Promise((u,f)=>{let p=b();n[p]={resolve:u,reject:f,progressListener:c},i++,a.postMessage({data:{id:p,obj:e,name:t,returnsAsIs:r,ctx:l||{},func:s,args:o&&Array.isArray(o)?o:[]}})}),u=e=>{if(n[e.data.id]){let t=n[e.data.id];e.data.isComplete?(delete n[e.data.id],i--,e.data.isError?t.reject(e.data.error):t.resolve(Object.freeze({ctx:e.data.ctx,result:e.data.result}))):"function"==typeof progressListener&&t.progressListener&&setTimeout(()=>{t.progressListener(Object.freeze({host:e.data.ctx._?e.data.ctx._.host:"",name:"progress",args:e.data.result}))},0)}else r(`Unknown operation is not supported. (${e.data.id})`)};if(e){const{Worker:e,MessageChannel:t}=require("worker_threads");a=new e(l,{eval:!0,workerData:{argv:process.argv}});const n=new t;a.postMessage({privatePort:n.port1},[n.port1]),n.port2.on("error",r),n.port2.on("message",u)}else{let e=new Blob([l]),t=(!0).URL.createObjectURL(e,{type:"application/javascript; charset=utf-8"});(a=new(!0).Worker(t)).onmessage=u,a.onerror=r}this.remoteCall=c,this.close=(()=>{e&&(s.close(),a.unref()),a.terminate()}),this.isBusy=(()=>i)},K=function(e,t,r){let n=!1,i={},s=new X(r,e=>{throw g.OperationFailed("Remote operation failed.",e)});this.name=e,this.isRemote=!0,this.isUnloaded=(()=>n),this.unload=(()=>{n||(n=!0,delete t[e],i={},s.remoteCall("ad","",!1,"unload").finally(()=>{s.close()}))}),this.context=Object.freeze(new Q("default",this,s)),this.contexts=(e=>i[e]||null),this.createContext=(e=>new Promise((t,r)=>{"string"!=typeof e||e&&"default"===e||i[e]?r(g.InvalidArguments("name")):s.remoteCall("ad","",!1,"createContext",[e]).then(n=>{if(n){let r=Object.freeze(new Q(e,this,s));i[e]=r,t(r)}else r(g.OperationFailed("Context could not be created."))}).catch(r)})),this.loadScripts=((...e)=>{if(this.isUnloaded())throw g.InvalidOperation(`AppDomain is already unloaded. (${this.name})`,this.loadScripts);return s.remoteCall("ad","",!1,"loadScripts",e)})},Q=function(e,t,r){let n=!1;this.name=e,this.domain=t,this.isUnloaded=(()=>n||t.isUnloaded()),this.unload=(()=>{n||(n=!0,r.remoteCall("alc",e,!1,"unload"))}),this.execute=((t,n)=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.execute);let i=t.ctx||{};return i._={host:t.type},r.remoteCall("alc",e,!0,"execute",[t],i,n)}),this.loadAssembly=(t=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.loadAssembly);return r.remoteCall("alc",e,!1,"loadAssembly",[t])}),this.isBusy=(()=>{if(this.isUnloaded())throw g.InvalidOperation(`Context is already unloaded. (${this.name})`,this.isBusy);return r.isBusy()}),this.hasActiveInstances=(()=>{r.remoteCall("alc",e,!1,"hasActiveInstances")})},Y=function(e){let r={},n={},i={},s={},a=[],o=[],l={},c="",u="",f=null,p=null,m=null,d=null,h=null,y=!1;d=new V("default",this,null,a,s),h=d.unload,delete d.unload,d=Object.freeze(d),s[d.name]=d,i[e]=this,this.name=e,this.isRemote=!1,this.isUnloaded=(()=>y),this.unload=(async()=>{if(!y){y=!0,p&&"function"==typeof p.stop&&(await p.stop(),ke(p)),m&&"function"==typeof m.stop&&(await m.stop(),ke(m));for(let e in s)s.hasOwnProperty(e)&&"function"==typeof s[e].unload&&s[e].unload();h();for(let e in i)i.hasOwnProperty(e)&&i[e]!==this&&i[e].unload();r={},n={},s={},i={},l={},c="",u="",o=[]}}),this.createDomain=(e=>new Promise((t,r)=>{if("string"!=typeof e||e&&"default"===e||i[e])return void r(g.InvalidArguments("name"));let n=Object.freeze(new K(e,i,o));i[e]=n,t(n)})),this.domains=(e=>i[e]||null),this.context=d,this.contexts=(e=>s[e]||null),this.createContext=(e=>new Promise((t,r)=>{if("string"!=typeof e||e&&"default"===e||s[e])return void r(g.InvalidArguments("name"));let n=Object.freeze(new V(e,this,d,a,s));s[e]=n,t(n)})),this.registerAdo=((...e)=>{let i=!0,s=!1;if(1===e.length&&"string"==typeof e[0]){let t=JSON.parse(e[0]);e=Array.isArray(t)?t:[t],i=!1,s=!0}e.forEach(e=>{if("array"!==M(e.types)||"array"!==M(e.resources)||"array"!==M(e.routes)||"array"!==M(e.assets)||"string"!=typeof e.name||"string"!=typeof e.file||""===e.file)throw g.InvalidArgument("ado",this.registerAdo);if(e.file=v(e.file,!0),r[e.file]){if(i||t)throw g.Duplicate(e.file,this.registerAdo)}else r[e.file]=Object.freeze(e),e.types.forEach(t=>{if(n[t])throw g.Duplicate(t,this.registerAdo);n[t]=e.file}),e.resources.forEach(t=>{if(n[t])throw g.Duplicate(t,this.registerAdo);n[t]=e.file}),s||this.context.registerRoutes(e.routes,e.file)}),o.push(...e)}),this.getAdo=(e=>{if("string"!=typeof e)throw g.InvalidArgument("file",this.getAdo);return r[e]||null}),this.allAdos=(()=>Object.keys(r)),this.resolve=(e=>{if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",this.resolve);return n[e]||null}),this.allTypes=(()=>Object.keys(n)),this.config=(e=>!f&&e?new Promise((t,r)=>{$e(e).then(e=>{f=e,t(Object.assign({},f))}).catch(r)}):f?Object.assign({},f):null),this.entryPoint=(e=>{if(!c){if("string"!=typeof e)throw g.InvalidArgument("file",this.entryPoint);t||(c=v(e||""))}return c}),this.app=(e=>(e&&!p&&(p=e),p)),this.host=(e=>(e&&(m=e),m)),this.loadPathOf=((e,t)=>{if("string"!=typeof e)throw g.InvalidArgument("file",this.loadPath);return t&&(l[e]||(l[e]=t)),l[e]||""}),this.root=(e=>{if(!u){if("string"!=typeof e)throw g.InvalidArgument("path",this.root);(u=e).endsWith("/")||(u+="/")}return u}),this.resolvePath=(e=>{if("string"!=typeof e)throw g.InvalidArgument("path",this.resolvePath);return e.replace("./",this.root())}),this.loadScripts=((...e)=>new Promise((t,r)=>{try{Ae(e,()=>{t()})}catch(e){r(e)}})),this.onError=(e=>{if(!m)throw e;m.raiseError(e)})};let Z=new Y("default"),ee=Z.unload;delete Z.unload;const te=Z;m("AppDomain",te,()=>{ee()});const re=(e,t,r)=>{let n=W("obj: flairinstance, memberName: string","obj: flairinstance, memberName: string, attrName: string","obj: flairtype","obj: flairtype, attrName: string")(e,t,r);n.throwOnError(re);let s=[],a=e[i],o=null,l=null;return n.values.attrName?(l=n.index>1?a.attrs.type.probe(n.values.attrName).current():a.attrs.members.probe(n.values.attrName,n.values.memberName).current())&&s.push(N(l,"name, isCustom, args, type",!0)):(o=n.index>1?a.attrs.type.all().current():a.attrs.members.all(n.values.memberName).current())&&s.push(...N(o,"name, isCustom, args, type",!0)),s};m("getAttr",re);const ne=e=>{let t=W("Type: flairtype","Type: flairinstance","Type: string")(e);t.throwOnError(ne);let r=null,n="";switch(t.index){case 0:r=e[i].assembly();break;case 1:r=e[i].Type[i].assembly();break;case 2:(n=te.resolve(e))&&(r=te.context.getAssembly(n));break}return r};m("getAssembly",ne);const ie=e=>{let t;return W("Type: string")(e).throwOnError(ie),te.resolve(e)};m("getAssemblyOf",ie);const se=e=>{let t;return W("Type: flairtype")(e).throwOnError(se),e[i].context};m("getContext",se);const ae=e=>{let t;W("qualifiedName: string")(e).throwOnError(ae);let r=te.context.getResource(e)||null;return r?r.data:null};m("getResource",ae);const oe=e=>{let t;W("qualifiedName: string")(e).throwOnError(oe),te.context.getRoute(e)};m("getRoute",oe);const le=e=>{let t;return W("qualifiedName: string")(e).throwOnError(le),te.context.getType(e)};m("getType",le);const ce=e=>{let t;W("obj: flair")(e).throwOnError(ce);let r=e[i];return r&&r.Type||null};m("getTypeOf",ce);const ue=e=>{let t;W("obj: flair")(e).throwOnError(ue);let r=e[i].Type?e[i].Type[i]:e[i];return r&&r.name||""};m("getTypeName",ue);const fe=(e,t)=>{let r;return W("name: undefined","name: string","name: string, asInType: string")(e,t).throwOnError(fe),"string"==typeof t?new Promise((r,n)=>{$e(t).then(()=>{r(te.context.namespace(e))}).catch(n)}):te.context.namespace(e)};m("ns",fe);const pe=(e,t)=>{if("class"!==M(e))throw g.InvalidArgument("Type",pe);if(-1===["string","class"].indexOf(M(t)))throw g.InvalidArgument("Parent",pe);return e[i].isDerivedFrom(t)};m("isDerivedFrom",pe);const me=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",me);return e[i].isAbstract()};m("isAbstract",me);const de=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",de);return e[i].isSealed()};m("isSealed",de);const he=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",he);return e[i].isStatic()};m("isStatic",he);const ye=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",ye);return e[i].isSingleton()};m("isSingleton",ye);const ge=e=>{if("class"!==M(e))throw g.InvalidArgument("Type",ge);return e[i].isDeprecated()};m("isDeprecated",ge);const be=(e,t)=>{let r=M(e),n=M(t),s=!1;if(-1===c.indexOf(r))throw g.InvalidArgument("obj",be);if(-1===l.indexOf(n)&&"string"!==n)throw g.InvalidArgument("Type",be);let a=e[i];switch(n){case"class":(s=a.isInstanceOf(t))||(s=a.Type[i].isDerivedFrom(t));break;case"struct":s=a.isInstanceOf(t);break;case"interface":s=a.isImplements(t);break;case"mixin":s=a.isMixed(t);break;case"string":(s=a.isInstanceOf(t))||"function"!=typeof a.isImplements||(s=a.isImplements(t)),s||"function"!=typeof a.isMixed||(s=a.isMixed(t));break}return s};m("isInstanceOf",be);const ve=(e,t)=>{if(t[i]&&(t=t[i].name),"string"!==M(t))throw g.InvalidArgument("type",ve);return R(e,t)?e:null};m("as",ve);const we=(e,t)=>{if(!e)throw g.InvalidArgument("obj",we);if("interface"!==M(t))throw g.InvalidArgument("intf",we);let r=!0;for(let n in t)if(t.hasOwnProperty(n)&&n!==i){if(!e[n]){r=!1;break}if("function"==typeof t[n]&&"function"!=typeof e[n]){r=!1;break}}return r};m("isComplies",we);const xe=(e,t)=>{if(-1===["class","instance"].indexOf(M(e)))throw g.InvalidArgument("obj",xe);if(-1===["string","interface"].indexOf(M(t)))throw g.InvalidArgument("intf",xe);return e[i].isImplements(t)};m("isImplements",xe);const Oe=(e,t)=>{if(-1===["class","instance"].indexOf(M(e)))throw g.InvalidArgument("obj",Oe);if(-1===["string","mixin"].indexOf(M(t)))throw g.InvalidArgument("mixin",Oe);return e[i].isMixed(t)};m("isMixed",Oe);const Ie=[],Ae=(t,r)=>{let n=W("deps: string, fn: afunction","deps: array, fn: afunction")(t,r);n.throwOnError(Ae),0===n.index&&(t=[t]);let i=[],a=t.slice(),o=()=>{r(...i)},l=()=>{if(0!==a.length){let t=a.shift().trim(),r=null,n=e=>{if(t.startsWith("[")&&t.endsWith("]")&&-1===t.indexOf(".")){let e=t.substr(1,t.length-2).trim();"string"==typeof(r=Ke.resolve(e,!1))&&(t=r,r=null)}e()},o=e=>{-1===t.indexOf("/")&&((r=le(t))||(r=ae(t))),e()},c=e=>{if(-1===t.indexOf("/")){let n=ie(t);n?te.context.loadAssembly(n).then(()=>{(r=le(t))||(r=ae(t)),e()}).catch(e=>{throw g.OperationFailed(`Assembly could not be loaded. (${n})`,e,Ae)}):e()}else e()},u=n=>{if(t.startsWith("./")){let i=t.substr(t.lastIndexOf(".")+1).toLowerCase();if(t=te.resolvePath(t),i)if("js"===i||"mjs"===i)t=v(t,!0),S(t).then(e=>{r=e||!0,n()}).catch(e=>{throw g.OperationFailed(`Module/File could not be loaded. (${t})`,e,Ae)});else if(e)if("json"===i)S(t).then(e=>{r=e||!0,n()}).catch(e=>{throw g.OperationFailed(`Local Module/File could not be loaded. (${t})`,e,Ae)});else{let e=require("fs");try{r=e.readFileSync(t),n()}catch(e){throw g.OperationFailed(`Local File could not be read. (${t})`,e,Ae)}}else T(t).then(e=>{r=e,n()}).catch(e=>{throw g.OperationFailed(`File could not be loaded. (${t})`,e,Ae)});else n()}else n()},f=n=>{t.startsWith("./")?n():(e||(t=`./${s}/${t}`),t=v(t,!0),S(t).then(e=>{r=e||!0,n()}).catch(e=>{throw g.OperationFailed(`Module could not be loaded. (${t})`,e,Ae)}))},p=e=>{i.push(r),e||Ie.pop(),l()};if(""===(t=v(t)))return r=!0,void p(!0);if(-1!==Ie.indexOf(t))throw g.Circular(t,Ae);Ie.push(t),n(()=>{r?p():o(()=>{r?p():c(()=>{r?p():u(()=>{r?p():f(()=>{if(!r)throw g.OperationFailed(`Dependency could not be resolved. (${t})`,Ae);p()})})})})})}else o()};l()};m("bring",Ae,()=>{Ie.length=0});const $e=(e,t)=>new Promise((r,n)=>{if("string"==typeof e)try{Ae([e],i=>{i?"boolean"!=typeof i||"string"!=typeof t||(i=(!0)[t])?r(i):n(g.OperationFailed(`Dependency object could not be located. (${e})`)):n(g.OperationFailed(`Dependency could not be resolved. (${e})`))})}catch(e){n(e)}else n(g.InvalidArgument("dep"))});m("include",$e);const ke=e=>{let t=W("obj: instance","obj: boolean")(e);t.throwOnError(ke),1===t.index&&!0===e?(Re(),a.forEach(e=>{e()}),a.length=0):"function"==typeof e[i].dispose&&e[i].dispose()};m("dispose",ke);const je=(e,t)=>{let r=W("obj: instance, fn: afunction","obj: string, fn: afunction")(e,t);if(r.throwOnError(je),1===r.index){let t=le(e);if(!t)throw g.NotFound(e,je);e=new t}let n=null,s=!1,a=!1,o=()=>{s||"function"!=typeof e[i].dispose||(s=!0,e[i].dispose())};try{(n=t(e))&&"function"==typeof n.finally&&(a=!0,n=n.finally(()=>{o()}))}finally{a||o()}return n};m("using",je);const Te=(e,...t)=>{let r=W("name: string","name: Attribute")(e);r.throwOnError(Te);let n=null,s=null,a=null;if(0===r.index){if(!(a=Ne.inbuilt[e]||null)){if(!(n=le(e)))throw g.NotFound(e,Te);e=n[i].name}}else e=(n=e)[i].name;if(-1!==O(Ne.bucket,"name",e))throw g.Duplicate(e,Te);if(n){try{s=new n(...t)}catch(e){throw new g(e,Te)}a=new Se(s.constraints)}Ne.bucket.push({name:e,cfg:a,isCustom:null!==s,attr:s,args:t})},Se=function(e,t){let r=W("isModifier: boolean, constraints: string","constraints: string","isModifier: boolean,")(e,t),n;return r.throwOnError(Se),{isModifier:r.values.isModifier||!1,constraints:r.values.constraints}},Pe=(e,...t)=>Te(e,...t),Ne=Pe[i]=Object.freeze({bucket:[],inbuilt:Object.freeze({static:new Se(!0,"(class && !$abstract) || ((class && (prop || func)) && !($abstract || $virtual || $override))"),abstract:new Se(!0,"(class && !$sealed && !$static) || ((class && (prop || func || event)) && !($override || $sealed || $static))"),virtual:new Se(!0,"class && (prop || func || construct || dispose || event) && !($abstract || $override || $sealed || $static)"),override:new Se(!0,"(class && (prop || func || construct || dispose || event) && ((@virtual || @abstract || @override) && !(virtual || abstract)) && !(@sealed || $static))"),sealed:new Se(!0,"(class || ((class && (prop || func || event)) && override))"),private:new Se(!0,"(class || struct) && (prop || func || event) && !($protected || @private || $static)"),protected:new Se(!0,"(class) && (prop || func || event) && !($private || $static)"),readonly:new Se(!0,"(class || struct) && prop && !abstract"),async:new Se(!0,"(class || struct) && func"),privateSet:new Se(!0,"(class || struct) && prop && !($private || $static)"),protectedSet:new Se(!0,"(class) && prop && !($protected || $private || $static)"),overload:new Se("((class || struct) && (func || construct) && !($virtual || $abstract || $override || $args))"),enumerate:new Se("(class || struct) && prop || func || event"),dispose:new Se("class && prop"),post:new Se("(class || struct) && event"),fetch:new Se("(class || struct) && (func && async) && !(timer || on || @fetch)"),on:new Se("class && func && !(event || $async || $args || $overload || $inject || $static)"),timer:new Se("class && func && !(event || $async || $args || $inject || @timer || $static)"),type:new Se("(class || struct) && prop"),args:new Se("(class || struct) && (func || construct) && !$on && !$overload"),inject:new Se("class && (prop || func || construct) && !(static || session || state)"),resource:new Se("class && prop && !(session || state || inject || asset)"),asset:new Se("class && prop && !(session || state || inject || resource)"),singleton:new Se("(class && !(prop || func || event) && !($abstract || $static))"),serialize:new Se("((class || struct) || ((class || struct) && prop)) && !($abstract || $static || noserialize)"),deprecate:new Se("!construct && !dispose"),session:new Se("(class && prop) && !($static || $state || $readonly || $abstract || $virtual)"),state:new Se("(class && prop) && !($static || $session || $readonly || $abstract || $virtual)"),conditional:new Se("(class || struct) && (prop || func || event)"),noserialize:new Se("(class || struct) && prop"),aspects:new Se("(class && func)"),ns:new Se("(class || struct || mixin || interface || enum) && !(prop || func || event || construct || dispose)"),mixin:new Se("class && (prop || func || event)"),interface:new Se("class && (prop || func || event)")})});for(let e in Ne.inbuilt)Ne.inbuilt.hasOwnProperty(e)&&(Te[`$$${e}`]=((...t)=>{Te(e,...t)}));Pe.collect=(()=>{let e=Ne.bucket.slice();return Pe.clear(),e}),Pe.has=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name");return-1!==Ne.bucket.findIndex(t=>t.name===e)}),Pe.get=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name");let t=Ne.bucket.findIndex(t=>t.name===e);return-1!==t?Ne.bucket[t]:null}),Pe.count=(()=>Ne.bucket.length),Pe.clear=(()=>{Ne.bucket.length=0}),m("$$",Te);const Ce=(e,t,r,n,s)=>{let a=Pe.collect(),o=null,c=null,u=De(!0,e,t),f=De(!1,e,t),p="";if(n?(o=t.attrs.type,c=t.modifiers.type,p=`${t.name}`):(o=e.attrs.members[r],c=e.modifiers.members[r],p=`${e.name}::${r}`),!s)for(let e of a)if(e.isCustom)throw g.InvalidOperation(`Custom attribute cannot be applied. (${e.name})`,We);const m=s=>{let a=!1,o=l,c=["prop","func","construct","dispose","event"],m=["static","abstract","sealed","virtual","override","private","privateSet","protected","protectedSet","readonly","async"],d=[],h=[],y=s.cfg.constraints;const b=e=>{let t={withWhat:"",matchType:"",original:e,name:"",value:!1};switch(e.substr(0,1)){case"$":t.matchType="anywhere",t.name=e.substr(1);break;case"@":t.matchType="inherited",t.name=e.substr(1);break;default:t.matchType="current",t.name=e;break}e.endsWith("^")?(t.withWhat="typeName",t.name=t.name.replace("^","")):-1!==o.indexOf(t.name)?(t.withWhat="typeType",t.matchType="current"):-1!==c.indexOf(t.name)?(t.withWhat="memberType",t.matchType="current"):m.indexOf(t.name)!==0-1?t.withWhat="modifier":t.withWhat="attribute","struct"===t.name?h.push(t):d.push(t)},v=()=>{let e=new RegExp("[^!&!|()]","g"),t="",r=[],n=0;for(;1&&null!==(t=e.exec(y));)r.push(t);t="",n=0;for(let e of r)n++," "!==e[0]?(t+=e[0],n===r.length&&(""!==t&&b(t),t="")):(""!==t&&b(t),t="");d=d.concat(h)};v();for(let s of d){switch(s.withWhat){case"typeName":switch(s.matchType){case"anywhere":s.value=s.name===t.name||t.Type[i].isDerivedFrom(s.name);break;case"inherited":s.value=t.Type[i].isDerivedFrom(s.name);break;case"current":s.value=s.name===t.name;break}break;case"typeType":s.value=t.type===s.name;break;case"memberType":s.value=!n&&e.members[r]===s.name;break;case"modifier":s.value=n?!!u.type.probe(s.name)[s.matchType]():!!u.members.probe(s.name,r)[s.matchType]();break;case"attribute":s.value=n?!!f.type.probe(s.name)[s.matchType]():!!f.members.probe(s.name,r)[s.matchType]();break}y=k(y,s.original,s.value.toString())}try{if(!(a=new Function("try {return ("+y+");}catch(e){return false;}")()))throw g.InvalidOperation(`${s.cfg.isModifier?"Modifier":"Attribute"} ${s.name} could not be applied. (${p} --\x3e [${y}])`,We)}catch(e){throw g.OperationFailed(`${s.cfg.isModifier?"Modifier":"Attribute"} ${s.name} could not be applied. (${p} --\x3e [${y}])`,e,We)}return a};for(let r of a)m(r)&&((r=N(r,null,!1,{type:n?t.name:e.name})).isCustom?o.push(r):r.cfg.isModifier?c.push(r):o.push(r))},De=(e,t,r)=>{let n=e?"modifiers":"attrs",i=(e,i,s,a)=>{let o=null;if(i&&"construct"===i&&(i="_construct"),i&&"dispose"===i&&(i="_dispose"),a)if(s){let t=r.previous();for(;1&&null!==t&&(t[n]&&t[n].type&&(o=I(t[n].type,"name",e)),!o);)t=t.previous()}else r[n]&&r[n].type&&(o=I(r[n].type,"name",e));else if(s){let r=t.previous();for(;1&&null!==r&&(r[n]&&r[n].members[i]&&(o=I(r[n].members[i],"name",e)),!o);)r=r.previous()}else t[n]&&t[n].members[i]&&(o=I(t[n].members[i],"name",e));return o},s=(e,t,r,n)=>null!==i(e,t,r,n);const a=(e,t)=>{let r;return Object.freeze({anywhere:()=>i(e,t,!1,!1)||i(e,t,!0,!1),current:()=>i(e,t,!1,!1),inherited:()=>i(e,t,!0,!1),only:Object.freeze({current:()=>i(e,t,!1,!1)&&!i(e,t,!0,!1),inherited:()=>!i(e,t,!1,!1)&&i(e,t,!0,!1)})})},o=e=>{let t;return Object.freeze({anywhere:()=>i(e,null,!1,!0)||i(e,null,!0,!0),current:()=>i(e,null,!1,!0),inherited:()=>i(e,null,!0,!0),only:Object.freeze({current:()=>i(e,null,!1,!0)&&!i(e,null,!0,!0),inherited:()=>!i(e,null,!1,!0)&&i(e,null,!0,!0)})})},l=e=>{let r=Object.freeze({current:()=>t[n].members[e].slice(),inherited:()=>{let r=[],i=null,s=t.previous();for(;1&&null!==s;)s[n]&&s[n].members&&(i=I(s[n].members,"name",e)),i&&r.push(...i),s=s.previous();return r},anywhere:()=>[...r.current(),...r.inherited()]});return r},c=()=>{let e=Object.freeze({current:()=>r[n].type.slice(),inherited:()=>{let e=[],t=null,i=r.previous();for(;1&&null!==i;)i[n]&&i[n].type&&(t=i[n].type.slice()),t&&e.push(...t),i=i.previous();return e},anywhere:()=>[...e.current(),...e.inherited()]});return e},u={type:Object.freeze({get:(e,t)=>i(e,null,t,!0),has:(e,t)=>s(e,null,t,!0),all:c,probe:o}),members:{get:(e,t,r)=>i(e,t,r,!1),has:(e,t,r)=>s(e,t,r,!1),all:l,probe:a}};return e&&(u.members.is=((e,t)=>{let r=a(e,t);switch(e){case"static":return r.anywhere();case"abstract":return r.anywhere()&&!(a("virtual",t).anywhere()||a("override",t).anywhere());case"virtual":return r.anywhere()&&!a("override",t).anywhere();case"override":return r.anywhere()&&!a("sealed",t).anywhere();case"sealed":return r.anywhere();case"private":return r.anywhere();case"protected":return r.anywhere();case"readonly":return r.anywhere();case"async":return r.anywhere()}}),u.members.type=(e=>{let r,n="";if(!("type"===t.level)){let r=t;for(;1&&null!==r&&(r.members[e]&&(n=r.members[e]),!n);)r=r.previous()}return n}),u.members.isProperty=(e=>"prop"===u.members.type(e)),u.members.isFunction=(e=>"func"===u.members.type(e)),u.members.isEvent=(e=>"event"===u.members.type(e))),u.members=Object.freeze(u.members),Object.freeze(u)},Ee=e=>{let t={getType:function(){let e;return this.instance.def.Type}},r={id:b()};e.ex.instance=j(e.ex.instance,t,!1),e.mex.instance=j(e.mex.instance,r,!1);let n={getName:function(){let e;return this.type.def.name}},i={id:b()};e.ex.type=j(e.ex.type,n,!1),e.mex.type=j(e.mex.type,i,!1)},Fe=(e,t,r,n,i,s)=>{let a={type:{Type:t,def:n,attrs:i,modifiers:s}};for(let t in e)e.hasOwnProperty(t)&&("function"==typeof e[t]?Object.defineProperty(r,t,{configurable:!0,enumerable:!1,value:e[t].bind(a)}):Object.defineProperty(r,t,{configurable:!0,enumerable:!1,value:e[t]}))},ze=(e,t,r,n,i,s,a,o,l,c)=>{let u={instance:{obj:t,def:i,attrs:a,modifiers:o},type:{Type:n,typeDef:s,attrs:l,modifiers:c}};for(let t in e)"function"==typeof e[t]?Object.defineProperty(r,t,{configurable:!0,enumerable:!1,value:e[t].bind(u)}):Object.defineProperty(r,t,{configurable:!0,enumerable:!1,value:e[t]})},Me=(e,t,r,n,s,...a)=>{let l=t[i],c=l.def(),u="___flag___",f={_flagName:u};if(void 0!==n&&n===u?(f.isNeedProtected=!0,f.isTopLevelInstance=!1,f.staticInterface=e.static?s:null,f.args=a):(f.isNeedProtected=!1,f.isTopLevelInstance=!0,f.staticInterface=e.static?t:null,f.args=void 0!==n?void 0!==s?[n,s].concat(a):[n]:[]),e.singleton&&!c.staticConstructionCycle&&!It&&f.isTopLevelInstance&&l.singleInstance.value)return l.singleInstance.value;let p={},m=null,h=null,y=null,b="_construct",v="_dispose",O={},I={},$=null,T={name:e.params.typeName,type:e.types.type,Type:t,level:"object",members:{},attrs:{members:{}},modifiers:{members:{}},previous:()=>$},S=null,N=!1,C=null,D=e.storage?B("sessionStorage"):null,E=e.storage?B("localStorage"):null;const F=Object.freeze({id:k(T.name,".","_"),name:T.name,assemblyName:ie(T.name),Type:T.Type,members:()=>{let e={};for(let t in T.members){e[t]={name:t,type:T.members[t],modifiers:[],attrs:[]};for(let r of T.modifiers.members[t])e[t].modifiers.push(r.name);for(let r of T.attrs.members[t])e[t].attrs.push(r.name);e[t].modifiers=Object.freeze(e[t].modifiers),e[t].attrs=Object.freeze(e[t].attrs),e[t]=Object.freeze(e[t])}return Object.freeze(e)}}),z=(e,t,r,n)=>{for(let i of se.members.all(t).current())if(i.isCustom){if("prop"===r){let r=i.attr.decorateProperty(T.name,t,n);if(!r.get||!r.set)throw g.OperationFailed(`${i.name} decoration result is unexpected. (${T.name}::${t})`,We);r.get=r.get.bind(e),r.set=r.set.bind(e),n=r}else{let s=null;if("func"===r){if(s=i.attr.decorateFunction(T.name,t,n),x(n)!==x(s))throw g.OperationFailed(`${i.name} decoration result is unexpected. (${T.name}::${t})`,We)}else s=i.attr.decorateEvent(T.name,t,n);if(!s)throw g.OperationFailed(`${i.name} decoration result is unexpected. (${T.name}::${t})`,We);n=s.bind(e)}i.attr=null}return n},U=(e,t,r)=>{let n=null,i=[];return i=nt(T.name,e,r),T.aspects.members[e]=i,i.length>0&&(n=it(t,T.name,e,i))&&(t=n),t},L=()=>{let n=!1,s=e=>{Object.defineProperty(p,e,Object.getOwnPropertyDescriptor(r,e))},a=Object.getOwnPropertyDescriptor(r,i);a.enumerable=!1,Object.defineProperty(p,i,a),h=p[i];for(let e in r)if(n=!1,r.hasOwnProperty(e)&&e!==i){if(n=!0,T.members[e]?(ne.members.probe("private",e).current()&&(n=!1),n&&ne.members.probe("protected",e).current()&&!f.isNeedProtected&&(n=!1)):ne.members.probe("protected",e).anywhere()&&!f.isNeedProtected&&(n=!1),n&&s(e),n&&ne.members.isProperty(e))if(ne.members.probe("privateSet",e).current()){let t=Object.getOwnPropertyDescriptor(p,e);t.set=d,Object.defineProperty(p,e,t)}else if(ne.members.probe("protectedSet",e).current()&&!f.isNeedProtected){let t=Object.getOwnPropertyDescriptor(p,e);t.set=d,Object.defineProperty(p,e,t)}if(n&&ne.members.is("abstract",e)){if(!f.isNeedProtected)throw g.NotImplemented(`Abstract member is not implemented. (${T.name}::${e})`,We);if(!ne.type.probe("abstract").current())throw g.InvalidDefinition(`Abstract member can exists only in abstract type. (${T.name}::${e})`,We)}if(n){let t=se.members.probe("enumerate",e).current();if(t&&!1===t.args[0]){let t=Object.getOwnPropertyDescriptor(p,e);t.enumerable=!1,Object.defineProperty(p,e,t)}}n&&!f.isNeedProtected&&ne.members.isEvent(e)&&p[e].strip(p)}f.isTopLevelInstance&&(ze(e.ex.instance,p,p,t,T,c,se,ne,l.attrs,l.modifiers),ze(e.mex.instance,p,h,t,T,c,se,ne,l.attrs,l.modifiers)),f.isTopLevelInstance||(h.def=T)},V=(t,r)=>{if((-1===Object.keys(p).indexOf(t)||ne.members.type(t)!==r[i].modifiers.members.type(t))&&("dispose"!==t||"function"!=typeof p[v]&&"function"!=typeof h.dispose))throw g.NotImplemented(`Interface member is not implemented. (${r[i].name+":"+t})`,We);Pe("interface",r[i].name),Ce(T,c,t,!1,e.customAttrs)},G=()=>{if(T.interfaces){for(let e of T.interfaces)for(let t in e)e.hasOwnProperty(t)&&V(t,e);delete T.interfaces}},J=(t,r,n)=>{switch(-1!==["func","prop","event"].indexOf(r)&&t.startsWith("_")&&new g("InvalidName",`Name is not valid. (${T.name}::${t})`),r){case"func":if(!e.func)throw g.InvalidOperation(`Function cannot be defined on this type. (${T.name})`,We);break;case"prop":if(!e.prop)throw g.InvalidOperation(`Property cannot be defined on this type. (${T.name})`,We);break;case"event":if(!e.event)throw g.InvalidOperation(`Event cannot be defined on this type. (${T.name})`,We);break;case"construct":if(!e.construct)throw g.InvalidOperation(`Constructor cannot be defined on this type. (${T.name})`,We);r="func";break;case"dispose":if(!e.dispose)throw g.InvalidOperation(`Dispose cannot be defined on this type. (${T.name})`,We);r="func";break}return r},H=(t,n,i)=>{let s=!0,a=se.members.probe("conditional",t).current();if(a){let e=A(a.args[0]||[]);for(let t of e){if("test"!==(t=t.toLowerCase())||!o.env.isTesting){s=!1;break}if("server"!==t||!o.env.isServer){s=!1;break}if("client"!==t||!o.env.isClient){s=!1;break}if("worker"!==t||!o.env.isWorker){s=!1;break}if("main"!==t||!o.env.isMain){s=!1;break}if("debug"!==t||!o.env.isDebug){s=!1;break}if("prod"!==t||!o.env.isProd){s=!1;break}if("cordova"!==t||!o.env.isCordova){s=!1;break}if("nodewebkit"!==t||!o.env.isNodeWebkit){s=!1;break}if(-1===o.symbols.indexOf(t)){s=!1;break}}if(!s)return s}if(e.inheritance&&ne.members.probe("abstract",t).current()&&!0!==i.ni)throw g.InvalidDefinition(`Abstract member must not be implemented. (${T.name}::${t})`,We);if((a=ne.type.probe("static").current())&&e.static)if(l.isStatic()){if(e.construct&&t===b&&0!==i.length)throw g.InvalidDefinition(`Static constructors cannot have arguments. (${T.name}::construct)`,We);if(e.dispose&&t===v)throw g.InvalidDefinition(`Static types cannot have destructors. (${T.name}::dispose)`,We)}else{if(e.construct&&t===b)throw g.InvalidDefinition(`Non-static types cannot have static constructors. (${T.name}::construct)`,We);if(e.dispose&&t===v)throw g.InvalidDefinition(`Static destructors cannot be defined. (${T.name}::dispose)`,We)}if(e.dispose&&t===v&&0!==i.length&&(i.length>1||1===i.length&&!ne.members.probe("override",t).current()))throw g.InvalidDefinition(`Destructor method cannot have arguments. (${T.name}::dispose)`,We);if(-1!==Object.keys(r).indexOf(t)&&(!e.inheritance||e.inheritance&&!ne.members.probe("override",t).current()))throw g.Duplicate(T.name+"::"+t,We);if(e.inheritance&&ne.members.probe("override",t).current()){if(-1===Object.keys(r).indexOf(t))throw g.InvalidDefinition(`Member not found to override. (${T.name}::${t})`,We);if(ne.members.type(t)!==n)throw g.InvalidDefinition(`Overriding member type is invalid. (${T.name}::${t})`,We)}if(e.static&&(ne.members.probe("static",t).current()||l.isStatic()))if("func"===n){if(w(i))throw g.InvalidDefinition(`Static functions cannot be defined as an arrow function. (${T.name}::${t})`,We)}else if("prop"===n){if(i.get&&"function"==typeof i.get&&w(i))throw g.InvalidDefinition(`Static property getters cannot be defined as an arrow function. (${T.name}::${t})`,We);if(i.set&&"function"==typeof i.set&&w(i))throw g.InvalidDefinition(`Static property setters cannot be defined as an arrow function. (${T.name}::${t})`,We)}if(e.storage&&se.members.probe("session",t).current()&&i.get&&"function"==typeof i.get)throw g.InvalidDefinition(`Session properties cannot be defined with a custom getter/setter. (${T.name}::${t})`,We);if(e.storage&&se.members.probe("state",t).current()){if(i.get&&"function"==typeof i.get)throw g.InvalidDefinition(`State properties cannot be defined with a custom getter/setter. (${T.name}::${t})`,We);if(!E)throw g.InvalidOperation("Port is not configured. (localStorage)",We)}return s},X=(t,n,s)=>{let a={get:null,set:null},o=d,l=d,c=ne.members.probe("readonly",t).anywhere(),u=ne.members.probe("static",t).anywhere(),p=se.members.probe("session",t).anywhere(),m=se.members.probe("state",t).anywhere(),h=se.members.probe("deprecate",t).current(),y=se.members.probe("inject",t).current(),b=se.members.probe("asset",t).current(),v=se.members.probe("resource",t).current(),w=se.members.probe("type",t).current(),x=null!==h,I=x?h.args[0]||`Event is marked as deprecate. (${T.name}::${t})`:"",A=O,$=r,k=T.name+"_"+t,j=!1,S=null;if(s&&(s.get||s.set)){if(!e.propGetterSetter)throw g.InvalidDefinition(`Getter/Setter are not allowed. (${T.name}::${t})`,We);s.get&&"function"==typeof s.get&&(o=s.get),s.set&&"function"==typeof s.set&&(l=s.set),e.static&&u&&($=f.staticInterface),a.get=function(){return x&&console.log(I),o.apply($)}.bind($),a.set=function(e){if(x&&console.log(I),c&&!$[i].constructing)throw g.InvalidOperation(`Property is readonly. (${T.name}::${t})`,We);if(w&&w.args[0]&&!R(e,w.args[0]))throw g.InvalidArgument("value",We);return l.apply($,[e])}.bind($)}else{if(e.static&&u){if(A=f.staticInterface[i].props,$=f.staticInterface,w&&w.args[0]&&!R(s,w.args[0]))throw g.InvalidArgument("value",We);A[k]=s}else if(e.storage&&(p||m)){if(j=!0,p?(A=D,k=r[i].id+"_"+k):A=E,re(p?"session":"state",k),!A.key(k)){if(w&&w.args[0]&&!R(s,w.args[0]))throw g.InvalidArgument("value",We);A.setItem(k,JSON.stringify({value:s}))}}else{if(w&&w.args[0]&&!R(s,w.args[0]))throw g.InvalidArgument("value",We);if(e.numOnlyProps&&"number"!=typeof s)throw g.InvalidArgument("value",We);A[k]=s}a.get=function(){return x&&console.log(I),j?JSON.parse(A.getItem(k)).value:A[k]}.bind($),a.set=function(e){if(x&&console.log(I),c&&!$[i].constructing)throw g.InvalidOperation(`Property is readonly. (${T.name}::${t})`,We);if(w&&w.args[0]&&!R(e,w.args[0]))throw g.InvalidArgument("value",We);j?A.setItem(k,JSON.stringify({value:e})):A[k]=e}.bind($)}if(y&&!u&&!j){let e=y.args[0],t=y.args.length>0?y.args[1]:[],r=y.args.length>1&&y.args[2],n=null;try{switch(M(e)){case"class":case"struct":n=t;break;case"string":if(n=le(e)){if(-1===["class","struct"].indexOf(M(n)))throw g.InvalidArgument("inject",We)}else S=Ke.resolve(e,t,r),Array.isArray(S)||(S=[S]);break;default:throw g.InvalidArgument("inject",We)}!S&&n&&(S=[],t.length>0?S.push(new n(...t)):S.push(new n))}catch(e){throw new g(e,We)}a.set(S)}if((se.members.probe("dispose",t).anywhere()||y)&&re("prop",t),(v||b)&&!j){let e=null;if(v)v.args[0]&&(e=ae(v.args[0]));else if(b.args[0]){let t=b.args[0];t.startsWith("../")&&(t=t.substr(3)),t.startsWith("./")&&(t=t.substr(2)),t.startsWith("/")&&(t=t.substr(1)),e=ie(T.name)+"/"+t}e&&a.set(e)}return e.customAttrs&&(a=z($,t,n,a)),a},K=(t,n,i)=>{if("func"===n){let n=Pe.get("overload");if(n){let s,a=e.static&&ne.members.probe("static",t).current()?f.staticInterface:r;if(Q(t,i,n),a[t]){if(Pe.count()>1)throw g.InvalidDefinition(`Overloaded function cannot define additional modifiers or attributes. (${T.name}::${t})`,We);return!0}}}return!1},Q=(t,n,s)=>{let a=e.static&&ne.members.probe("static",t).current(),o=a?f.staticInterface:r,l,c,u;(a?o[i].overloads:I)[t+"_"+A(s.args[0]).join("_")]=n},Y=(t,...n)=>{let s=e.static&&ne.members.probe("static",t).current(),a=s?f.staticInterface:r,o=s?a[i].overloads:I,l="",c="";for(let e of n)l+="_"+typeof e;return l.startsWith("_")&&(l=l.substr(1)),o[c=t+"_"+l]||null},Z=(t,n,s)=>{let a=null,o=r,l=e.inheritance&&ne.members.probe("override",t).current(),c=e.static&&ne.members.probe("static",t).current(),u=ne.members.probe("async",t).current(),p=se.members.probe("deprecate",t).current(),m=se.members.probe("inject",t).current(),h=se.members.probe("on",t).current(),y=se.members.probe("timer",t).current(),b=se.members.probe("args",t).current(),v=se.members.probe("aspects",t).current(),w=se.members.probe("fetch",t).current(),O=se.members.probe("overload",t).current(),I=null!==p,A=I?p.args[0]||`Function is marked as deprecate. (${T.name}::${t})`:"",$=null,k="",j="",S="",N=null,C=[];if(l?!0!==($=r[t].bind(o)).ni&&$!==d||($=null):c&&(o=f.staticInterface),m){let e=m.args[0],t=m.args.length>0?m.args[1]:[],r=m.args.length>1&&m.args[2];C=Ke.resolve(e,t,r),Array.isArray(C)||(C=[C])}if((u=u||x(s))?(w&&w.args.length>0?(k=w.args[0],j=w.args[1],S=w.args[2],N=((e={})=>(e.method=k,P(S,j,e)))):N=null,a=async function(...e){return new Promise(function(r,n){I&&console.log(A);let i=[];if($&&i.push($),N&&i.push(N),C.length>0&&i.push(C),b&&b.args.length>0){let t=W(...b.args)(...e);t.error&&n(t.error,s),i.push(t)}else i=i.concat(e);O&&(s=Y(t,...i));try{let e=s.apply(o,i);e&&"function"==typeof e.then?e.then(r).catch(e=>{n(e,s)}):r(e)}catch(e){n(e,s)}}.bind(o))}.bind(o)):a=function(...e){I&&console.log(A);let r=[];if($&&r.push($),C.length>0&&r.push(C),b&&b.args.length>0){let t=W(...b.args)(...e);t.throwOnError(We),r.push(t)}else r=r.concat(e);return O&&(s=Y(t,...r)),s.apply(o,r)}.bind(o),e.customAttrs&&(a=z(o,t,n,a)),e.aop){let e=[];v&&v.args.length>0&&(v.args.forEach(e=>{if(!R(e,"Aspect"))throw g.InvalidArgument(`Only Aspect types can be statically weaved on function. (${T.name}::${t})`,We)}),e=v.args),a=U(t,a,e)}if(h&&h.args.length>0&&(Je(h.args[0],a),re("handler",{name:h.args[0],handler:a})),y&&y.args.length>0){let e=!1,n=setInterval(()=>{o[i].constructing||e||(e=!0,r[t](),e=!1)},1e3*y.args[0]);re("timer",n)}return a},ee=(t,n,s)=>{let a=null,o=null,l=null,c=null,u=e.inheritance&&ne.members.probe("override",t).current(),f=se.members.probe("deprecate",t).current(),m=se.members.probe("post",t).current(),d=null!==f,h=d?f.args[0]||`Event is marked as deprecate. (${T.name}::${t})`:"",y=r;return C||(C=new q(T.name),re("event",C)),u&&!0===(l=r[t][i].processor).ni&&(l=null),a=function(...e){return d&&console.log(h),c=l?[l].concat(e):e,s.apply(y,c)}.bind(y),e.customAttrs&&(a=z(y,t,n,a)),o=a,(a=function(...e){let r=e;"function"==typeof o&&(r=o(...e)),C.dispatch(t,r),m&&m.args.length>0&&He(m.args[0],r)}.bind(y))[i]=Object.freeze({processor:o}),a.add=(e=>{C.add(t,e)}),a.remove=(e=>{C.remove(t,e)}),a.strip=(e=>{let r=j({},a,!0,["strip"]);delete a.strip,delete e.strip,Object.defineProperty(p,t,{configurable:!0,enumerable:!0,value:Object.freeze(r)})}),a},te=(t,n,s)=>{if(n=J(t,n,s),K(t,n,s))return;T.members[t]=n,T.attrs.members[t]=[],T.modifiers.members[t]=[],e.aop&&(T.aspects={members:{}}),e.mixins&&null!==y&&Pe("mixin",y[i].name),Ce(T,c,t,!1,e.customAttrs);let a=null,o=e.static&&ne.members.probe("static",t).current(),l=o?f.staticInterface:r;if(o){if(!c.staticConstructionCycle)return}else if(c.staticConstructionCycle)return;if(H(t,n,s))switch(n){case"func":a=Z(t,n,s),Object.defineProperty(l,t,{configurable:!0,enumerable:!0,value:a});break;case"prop":a=X(t,n,s),Object.defineProperty(l,t,{configurable:!0,enumerable:!0,get:a.get,set:a.set});break;case"event":a=ee(t,n,s),Object.defineProperty(l,t,{configurable:!0,enumerable:!0,value:a});break}},re=(e,t)=>{m.disposables.push({type:e,data:t})},ne=De(!0,T,c),se=De(!1,T,c);if(e.inheritance){if(f.isTopLevelInstance&&!c.staticConstructionCycle&&!It&&ne.type.probe("abstract").current())throw g.InvalidOperation(`Cannot create instance of an abstract type. (${T.name})`,We);let e=l.inherits,t=null;if(e){if((t=e[i]).isSealed()||t.isSingleton()||t.isStatic())throw g.InvalidDefinition(`Cannot inherit from a sealed, static or singleton type. (${t.name})`,We);if(t.type!==l.type)throw g.InvalidDefinition(`Cannot inherit from another type family. (${t.type})`,We);if(t.context&&t.context.isUnloaded())throw g.InvalidOperation(`Parent context is not active anymore. (${t.name})`,We);r=new e(f._flagName,f.staticInterface,f.args),m=r[i],$=m.def,delete m.def}else if(l.context&&l.context.isUnloaded())throw g.InvalidOperation(`Type context is not active anymore. (${l.name})`,We)}if(void 0===r[i]&&(r[i]={},m=r[i],e.dispose&&(m.disposables=[])),e.mixins&&(T.mixins=e.params.mixins),e.interfaces&&(T.interfaces=e.params.interfaces),m.type=e.types.instance,f.isTopLevelInstance&&(m.Type=t,e.new&&(m.isInstanceOf=(e=>{if(e[i]&&(e=e[i].name),!e)throw g.InvalidArgument("name",We);return l.name===e||l.isDerivedFrom(e)})),e.mixins&&(m.isMixed=(e=>l.isMixed(e))),e.interfaces&&(m.isImplements=(e=>l.isImplements(e))),m.modifiers=ne,m.attrs=se,It&&(m.def=T,m.typeDef=c,m.obj=r)),S=new Proxy({},{get:(t,n)=>{if(e.new){if("$self"===n)return F;if("$static"===n)return f.staticInterface}return r[n]},set:(t,n,i)=>{if(e.new&&-1!==["$self","$static"].indexOf(n))throw g.InvalidOperation(`Special members cannot be custom defined. (${n})`,We);if(N){let e="";"construct"===n?(e="construct",n=b):"dispose"===n?(e="dispose",n=v):"function"==typeof i?!0===i.event?(i!==_&&delete i.event,e="event"):e="func":e="prop",te(n,e,i)}else{if("function"==typeof i)throw g.InvalidOperation(`Redefinition of members is not allowed. (${n})`,We);r[n]=i}return!0}}),N=!0,e.mixins&&T.mixins&&!c.staticConstructionCycle){for(let e of T.mixins)y=e,e.apply(S),y=null;delete T.mixins}if(e.params.factory.apply(S),Pe.clear(),N=!1,f.isTopLevelInstance&&(e.construct&&"function"==typeof r[b]&&(m.construct=r[b],delete r[b]),e.dispose&&"function"==typeof r[v])){let e=r[v];delete r[v],m.dispose=(()=>{for(let e of m.disposables)switch(e.type){case"session":D.removeItem(e.data);break;case"state":E.removeItem(e.data);break;case"prop":r[e.data]=null;break;case"event":e.data.clear();break;case"handler":Je(e.data.name,e.data.handler,!0);break;case"timer":clearInterval(e.data);break}"function"==typeof e&&e(),m.disposables.length=0,O=null,$=null,T=null,S=null,C=null,p=null,r=null})}return e.static&&l.isStatic()&&c.staticConstructionCycle&&t.construct&&"function"==typeof t[b]&&(l.construct=t[b],delete t[b]),L(),!e.interfaces||c.staticConstructionCycle||It||G(),e.construct&&f.isTopLevelInstance&&!c.staticConstructionCycle&&!It&&"function"==typeof h.construct&&(h.constructing=!0,h.construct(...f.args),delete h.constructing),e.construct&&c.staticConstructionCycle&&"function"==typeof l.construct&&(l.constructing=!0,l.construct(),delete l.constructing),!f.isTopLevelInstance||c.staticConstructionCycle||It||e.singleton&&se.type.probe("singleton").current()&&(l.singleInstance.value=p),!f.isTopLevelInstance||c.staticConstructionCycle||It||(h=Object.freeze(h),p=Object.seal(p)),p},Re=()=>{let t=B("sessionStorage");t?t.clear():e?(!0).sessionStorage&&delete global.sessionStorage:sessionStorage.clear()},We=e=>{if(e.new=e.new||!1,e.mixins=e.mixins||!1,e.interfaces=e.interfaces||!1,e.inheritance=e.inheritance||!1,e.singleton=e.singleton||!1,e.static=e.static||!1,e.const=e.const||!1,e.func=e.func||!1,e.construct=e.construct||!1,e.dispose=e.dispose||!1,e.prop=e.prop||!1,e.propGetterSetter=e.propGetterSetter||!1,e.numOnlyProps=e.numOnlyProps||!1,e.event=e.event||!1,e.storage=e.storage||!1,e.aop=e.aop||!1,e.customAttrs=e.customAttrs||!1,e.types=e.types||{},e.types.instance=e.types.instance||"unknown",e.types.type=e.types.type||"unknown",e.params=e.params||{},e.params.typeName=e.params.typeName||"",e.params.inherits=e.params.inherits||null,e.params.mixinsAndInterfaces=e.params.mixinsAndInterfaces||null,e.params.factory=e.params.factory||null,e.mex=e.mex||{},e.mex.instance=e.mex&&e.mex.instance?e.mex.instance:{},e.mex.type=e.mex&&e.mex.type?e.mex.type:{},e.ex=e.ex||{},e.ex.instance=e.ex&&e.ex.instance?e.ex.instance:{},e.ex.type=e.ex&&e.ex.type?e.ex.type:{},e.params.ns="",e.params.mixins=[],e.params.interfaces=[],e.func||(e.construct=!1,e.dispose=!1),e.prop||(e.storage=!1),e.inheritance||(e.singleton=!1),e.func||e.prop||e.event||(e.aop=!1),e.new&&(e.const=!1),!e.params.typeName||-1!==e.params.typeName.indexOf("."))throw g.InvalidDefinition(`Type name is invalid. (${e.params.typeName})`,We);let t=Pe.get("ns"),r=t?t.args[0]:"";if(r)switch(r){case"(auto)":throw g.InvalidDefinition(`Namespace '(auto)' should be used only when bundling the type in an assembly. (${r})`,We);case"(root)":break;default:if(r.startsWith(".")||r.endsWith(".")||/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g.test(r))throw`Namespace name is invalid. (${r})`;e.params.typeName=r+"."+e.params.typeName,e.params.ns=r;break}if(e.params.mixinsAndInterfaces)for(let t of e.params.mixinsAndInterfaces)if(t[i])switch(t[i].type){case"mixin":e.params.mixins.push(t);break;case"interface":e.params.interfaces.push(t);break}delete e.params.mixinsAndInterfaces,Ee(e);let n=te.context.current(),s=n.currentAssemblyBeingLoaded()||"",a=null,o=null;if(e.new)if(e.inheritance){if(e.params.inherits&&(he(e.params.inherits)||ye(e.params.inherits)||de(e.params.inherits)))throw g.InvalidDefinition(`Cannot inherit from a sealed, static or singleton type. (${e.params.inherits[i].name})`,We);a=function(t,r,...n){return Me(e,a,{},t,r,...n)}}else a=function(...t){return Me(e,a,{},null,null,...t)};else a=e.const?function(){return Me(e,a,{})}:function(...t){if(new.target)throw g.InvalidOperation(`Construction cannot be done for this type. (${e.params.typeName})`,a);e.params.factory.apply(this,...t)};let l={name:e.params.typeName,type:e.types.type,Type:a,level:"type",attrs:{type:[]},modifiers:{type:[]},previous:()=>a[i].inherits?a[i].inherits[i].def():null};const c=De(!0,null,l),u=De(!1,null,l);if(a[i]={},(o=a[i]).name=e.params.typeName,o.type=e.types.type,o.namespace=null,o.assembly=(()=>n.getAssembly(s)||null),o.context=n,e.inheritance&&(o.inherits=e.params.inherits||null,o.isAbstract=(()=>!!c.type.probe("abstract").current()),o.isSealed=(()=>!!c.type.probe("sealed").current()),o.isDerivedFrom=(t=>{if(t[i]&&(t=t[i].name),"string"!=typeof t)throw g.InvalidArgument("name",o.isDerivedFrom);let r=!1,n=e.params.inherits;if(!r)for(;1&&null!==n;){if(n[i].name===t){r=!0;break}n=n[i].inherits}return r}),o.inherits)){let e=u.type.probe("deprecate").anywhere();if(e){let t=e.args[0]||`Type is marked as deprecated. (${o.name})`;console.log(t)}}if(e.static&&(o.isStatic=(()=>!!c.type.probe("static").current()),o.props={},o.overloads={}),e.singleton&&(o.isSingleton=(()=>!!u.type.probe("singleton").current()),o.singleInstance={value:null}),e.mixins&&(o.mixins=e.params.mixins,o.isMixed=(e=>{if(e[i]&&(e=e[i].name),"string"!=typeof e)throw g.InvalidArgument("name",o.isMixed);let t=!1,r=a;for(;1&&null!==r&&(r[i].mixins&&(t=-1!==I(r[i].mixins,"name",e)),!t);)r=r[i].inherits;return t})),e.interfaces&&(o.interfaces=e.params.interfaces,o.isImplements=(e=>{if(e[i]&&(e=e[i].name),"string"!=typeof e)throw g.InvalidArgument("name",o.isImplements);let t=!1,r=a;for(;1&&null!==r&&(r[i].interfaces&&(t=-1!==I(r[i].interfaces,"name",e)),!t);)r=r[i].inherits;return t})),o.isDeprecated=(()=>!!u.type.probe("deprecate").current()),o.def=(()=>l),o.modifiers=c,o.attrs=u,Ce(null,l,null,!0,e.customAttrs),e.static&&c.type.probe("static").current()){if(e.params.interfaces.length>0)throw g.InvalidDefinition("Static types cannot implement interfaces.",We);if(e.params.mixins.length>0)throw g.InvalidDefinition("Static types cannot implement mixins.",We)}if(e.static){let t=e.params.factory?e.params.factory.toString():"";if(o.isStatic()||-1!==t.indexOf(`$$('static')`)||-1!==t.indexOf(`$$("static")`)){l.staticConstructionCycle=!0;let e=new a;ke(e),delete l.staticConstructionCycle}}Fe(e.ex.type,a,a,l,u,c),Fe(e.mex.type,a,o,l,u,c);let f=null,p=!1;return e.static&&o.isStatic()||e.const?(f=new a,e.const&&(p=!0)):(p=!0,f=a),r&&(o.namespace=te.context.current().registerType(f)),a[i]=Object.freeze(o),p&&Object.freeze(f),f},Ue=(e,t,r,n)=>{let i=W("name: string, inherits: class, factory: cfunction","name: string, inherits: class, mixints: array, factory: cfunction","name: string, factory: cfunction","name: string, mixints: array, factory: cfunction")(e,t,r,n);i.throwOnError(Ue);let s={new:!0,mixins:!0,interfaces:!0,inheritance:!0,singleton:!0,static:!0,func:!0,construct:!0,dispose:!0,prop:!0,propGetterSetter:!0,event:!0,storage:!0,aop:!0,customAttrs:!0,types:{instance:"instance",type:"class"},params:{typeName:i.values.name,inherits:i.values.inherits,mixinsAndInterfaces:i.values.mixints,factory:i.values.factory},mex:{instance:{},type:{}},ex:{instance:{},type:{}}};return We(s)};m("Class",Ue);const _e=(e,t)=>{let r=W("name: string, factory: cfunction")(e,t);r.throwOnError(_e);let n={const:!0,func:!0,dispose:!0,prop:!0,propGetterSetter:!0,event:!0,types:{instance:"interface",type:"interface"},params:{typeName:r.values.name,factory:r.values.factory}};return We(n)};m("Interface",_e);const qe=(e,t)=>{let r=W("name: string, factory: cfunction")(e,t);r.throwOnError(qe);let n={new:!0,func:!0,construct:!0,prop:!0,propGetterSetter:!0,types:{instance:"sinstance",type:"struct"},params:{typeName:r.values.name,factory:r.values.factory}};return We(n)};m("Struct",qe);const Le=(e,t)=>{let r=W("name: string, factory: cfunction")(e,t);r.throwOnError(Le);let n={const:!0,prop:!0,numOnlyProps:!0,types:{instance:"enum",type:"enum"},params:{typeName:r.values.name,factory:r.values.factory},mex:{instance:{getName:function(e){let t=this.instance.obj,r=this.instance.def,n="";for(let i in r.members)if(r.members.hasOwnProperty(i)&&"prop"===r.members[i]&&t[i]===e){n=i;break}return n},getNames:function(){let e=this.instance.def,t=[];for(let r in e.members)e.members.hasOwnProperty(r)&&"prop"===e.members[r]&&t.push(r);return t},getValues:function(){let e=this.instance.def,t=this.instance.obj,r=[];for(let n in e.members)e.members.hasOwnProperty(n)&&"prop"===e.members[n]&&r.push(t[n]);return r}}}};return We(n)};Le.getName=((e,t)=>{let r;return W("enumType: enum, enumValue: number")(e,t).throwOnError(Le.getName),e[i].getName(t)}),Le.getNames=(e=>{let t;return W("enumType: enum")(e).throwOnError(Le.getNames),e[i].getNames()}),Le.getValues=(e=>{let t;return W("enumType: enum")(e).throwOnError(Le.getValues),e[i].getValues()}),Le.isDefined=((e,t)=>{let r=W("enumType: enum, nameOrValue: number","enumType: enum, nameOrValue: string")(e,t);return r.throwOnError(Le.isDefined),1===r.index?-1!==e[i].getNames().indexOf(t):""!==e[i].getName(t)}),m("Enum",Le);const Be=(e,t)=>{let r=W("name: string, factory: cfunction")(e,t);r.throwOnError(Be);let n={func:!0,prop:!0,propGetterSetter:!0,event:!0,customAttrs:!0,types:{type:"mixin"},params:{typeName:r.values.name,factory:r.values.factory}};return We(n)};m("Mixin",Be);const Ve=new q,Ge=Ve.dispatch,Je=(e,t,r)=>{let n;W("event: string, handler: afunction")(e,t).throwOnError(Je),r?Ve.remove(e,t):Ve.add(e,t)};m("on",Je,()=>{Ve.clear()});const He=(e,t)=>{if("string"!=typeof e)throw g.InvalidArgument("event",He);Ge(e,t)};m("post",He);let Xe={};const Ke={isRegistered:e=>{if("string"!=typeof e)throw g.InvalidArgument("alias",Ke.isRegistered);return void 0!==Xe[e]&&Xe[e].length>0},get:(e,t)=>{if("string"!=typeof e)throw g.InvalidArgument("alias",Ke.get);return t?Xe[e]?Xe[e].slice():[]:Xe[e]?Xe[e][0]:null},register:(e,t)=>{if("string"!=typeof e)throw g.InvalidArgument("alias",Ke.register);if(!t)throw g.InvalidArgument("item",Ke.register);if(-1!==e.indexOf("."))throw g.InvalidArgument("alias",Ke.register);"string"==typeof t&&((t=v(t)).endsWith(".js")||t.endsWith(".mjs"))&&(t=v(t,!0)),Xe[e]||(Xe[e]=[]),Xe[e].push(t)},resolve:(e,t,...r)=>{if("string"!=typeof e)throw g.InvalidArgument("alias",Ke.resolve);if("boolean"!=typeof t)throw g.InvalidArgument("isAll",Ke.resolve);let n=null;const s=e=>{let t=e;if("string"==typeof e)if(e.endsWith(".js")||e.endsWith(".mjs"));else{let t=le(e);t&&(e=t)}if(-1!==["class","struct"].indexOf(M(e)))try{t=r?new e(...r):new e}catch(t){throw g.OperationFailed(`Type could not be instantiated. (${e[i].name})`,Ke.resolve)}return t};return Xe[e]&&Xe[e].length>0&&(t?(n=[],Xe[e].forEach(e=>{n.push(s(e))})):n=s(Xe[e][0])),n}};m("Container",Ke,()=>{Xe={}});let Qe=d,Ye=[],Ze=500;const et={on:(e,...t)=>{Qe===d&&("string"==typeof e?t.unshift(e):"function"==typeof e&&Je("telemetry",e),Qe=((e,r)=>{if(0===t.length||-1!==t.indexOf(e)){let t=Object.freeze({type:e,data:r});Ye.push(t),Ye.length>Ze-25&&Ye.splice(0,25),He("telemetry",t)}}))},collect:()=>{if(Qe!==d){let e=Ye.slice();return Ye.length=0,e}return[]},off:e=>Qe!==d?("function"==typeof e&&Je("telemetry",e,!0),Qe=d,et.collect()):[],isOn:()=>Qe!==d,types:Object.freeze({RAW:"raw",EXEC:"exec",INFO:"info",INCL:"incl"})};m("telemetry",et,()=>{Ye.length=0});const tt=[],rt={register:(e,t)=>{let r;W("pointcut: string, aspect: Aspect")(e,t).throwOnError(rt.register);let n=e,i="",s="",a="",o="",l=null;-1!==n.indexOf(":")&&(n=(l=n.split(":"))[0].trim(),a=l[1].trim()||"*"),-1!==n.indexOf(".")?(i=n.substr(0,n.lastIndexOf(".")),s=n.substr(n.lastIndexOf(".")+1)):(i="",s=n),o=k(o=i+"/"+s+":"+a,".","[.]"),o=k(o,"?","."),o=k(o,"*",".*"),tt.push({rex:new RegExp(o),Aspect:t})}},nt=(e,t,r)=>{let n=[],s="",a="",o=t.trim(),l="";return-1!==e.indexOf(".")?(s=e.substr(0,e.lastIndexOf(".")).trim(),a=e.substr(e.lastIndexOf(".")+1).trim()):(s="",a=e.trim()),l=s+"/"+a+":"+o,r&&n.push(...r),tt.forEach(e=>{e.rex.test(l)&&-1===O(n,"name",e.Aspect[i].name)&&n.push({name:e.Aspect[i].name,Aspect:e.Aspect})}),n},it=(e,t,r,n)=>{let i=[],s=[],a=[],o=null,l;for(let e of n)(o=new e.Aspect).before!==d&&i.push(o.before),o.around!==d&&a.push(o.around),o.after!==d&&s.push(o.after);return a.length>0&&a.reverse(),function(...n){let o=null,l=null,c={typeName:()=>t,funcName:()=>r,error:e=>(e&&(o=e),o),result:e=>(void 0!==e&&(l=e),l),args:()=>n,data:{}};for(let e of i)try{e(c)}catch(e){o=e}const u=e=>{for(let t of s)try{t(e)}catch(e){c.error(e)}};let f=e,p=null;for(let e of a)f=e(c,f);try{(p=f(...n))&&"function"==typeof p.then?c.result(new Promise((e,t)=>{p.then(t=>{c.result(t),u(c),e(c.result())}).catch(e=>{c.error(e),u(c),t(c.error())})})):(c.result(p),u(c))}catch(e){c.error(e)}return c.result()}};m("Aspects",rt,()=>{tt.length=0});const st=(e,t)=>{let r=null,n=null,s=t?JSON.parse(e):e,a=t?null:e[i].Type,o=a[i];const l=(e,t)=>{let r=e[i],n=r.attrs,s=r.modifiers,a=[],o=!1;for(let r in e)e.hasOwnProperty(r)&&r!==i&&((o=s.members.isProperty(r))&&(o=t?!n.members.probe("noserialize",r).anywhere():n.members.probe("serialize",r).anywhere())&&(o=!(s.members.is("private",r)||s.members.is("protected",r)||s.members.is("static",r)||s.members.is("readonly",r)||n.members.probe("resource",r).anywhere()||n.members.probe("asset",r).anywhere()||n.members.probe("inject",r).anywhere())),o&&a.push(r));return a};if(t){if(!s.type&&!s.data)throw g.InvalidArgument("json");if(!(a=le(s.type)))throw g.NotFound(s.type,at.deserialize);try{r=new a}catch(e){throw g.OperationFailed(`Object could not be deserialized. (${s.type})`,e,at.deserialize)}n=o.attrs.type.probe("serialize").anywhere()?l(r,!0):l(r,!1);for(let e of n)r[e]=s.data[e]}else{n=o.attrs.type.probe("serialize").anywhere()?l(s,!0):l(s,!1),r={type:s[i].Type[i].name,data:{}};for(let e of n)r.data[e]=s[e];try{r=JSON.stringify(r)}catch(e){throw g.OperationFailed(`Object could not be serialized. (${s[i].Type[i].name})`,e,at.serialize)}}return r},at={serialize:e=>{if(c.indexOf(-1===M(e)))throw g.InvalidArgument("instance",at.serialize);return st(e)},deserialize:e=>{if(!e||"string"!=typeof e)throw g.InvalidArgument("json",at.deserialize);return st(e,!0)}};m("Serializer",at);const ot=4*o.env.cores,lt=Math.round(ot/4),ct=[],ut=()=>{if(ct.length<=lt)return;let e=ct.slice(0),t=()=>{if(0!==e.length){let r=e.shift();r.context.isBusy()?t():r.context.hasActiveInstances().then(e=>{0===e?(r.unload(),ct.shift(),ct.length>lt&&t()):t()}).catch(()=>{t()})}};t()},ft=()=>new Promise((e,t)=>{let r=ct.slice(0),n=()=>{if(0!==r.length){let i=r.shift();i.context.isBusy()?n():i.context.hasActiveInstances().then(t=>{0===t?e(i):n()}).catch(t)}else ct.length{e(t)}).catch(t):t(g.OperationFailed("AppDomain pool limit reached."))};n()}),pt={TaskInfo:function(e,...t){if("string"!=typeof e)throw g.InvalidArgument("qualifiedName",pt.TaskInfo);return Object.freeze({type:e,typeArgs:t})},getHandle:(e,t)=>new Promise((r,n)=>{ft().then(n=>{let i;r({run:(...r)=>new Promise((i,s)=>{n.context.execute({type:e.type,typeArgs:e.typeArgs,func:"run",args:r,keepAlive:!0},t).then(i).catch(s)}),close:()=>new Promise((r,i)=>{n.context.execute({type:e.type,typeArgs:e.typeArgs,func:"",args:[],keepAlive:!1},t).then(r).catch(i).finally(ut)})})}).catch(n)}),invoke:(e,t)=>new Promise((r,n)=>{ft().then(i=>{i.context.execute({type:e.type,typeArgs:e.typeArgs,func:"run",args:[],keepAlive:!1},t).then(r).catch(n).finally(ut)}).catch(n)}),parallel:Object.freeze({invokeMany:(...e)=>{let t=[];for(let r of e)t.push(pt.invoke(r));return t},invoke:Object.freeze({any:(...e)=>Promise.race(pt.parallel.invokeMany(...e)),all:(...e)=>Promise.all(pt.parallel.invokeMany(...e)),each:(e,t,...r)=>new Promise((n,i)=>{let s=pt.parallel.invokeMany(...r),a=0;for(let r of s)r.then(e).catch(t).finally(()=>{a++,s.length===a&&n()})})})}),sequence:Object.freeze({invoke:(...e)=>new Promise((t,r)=>{let n=e.slice(0),i=[],s=()=>{if(0===n.length)return void t(...i);let e=n.shift();pt.invoke(e).then(e=>{i.push(e),s()}).catch(r)};n.length>0?s():t(...i)})})};m("Tasks",pt,()=>{ct.forEach(e=>{e.unload()}),ct.length=0});const mt=e=>{if(e.isServer){if(!(!0).sessionStorage){const e=function(){let e={};this.key=(t=>{if(!t)throw g.InvalidArgument("key",this.key);return!!e.key}),this.getItem=(t=>{if(!t)throw g.InvalidArgument("key",this.getItem);return e.key||null}),this.setItem=((t,r)=>{if(!t)throw g.InvalidArgument("key",this.setItem);if(void 0===r)throw g.InvalidArgument("value",this.setItem);e[t]=r}),this.removeItem=(t=>{if(!t)throw g.InvalidArgument("key",this.removeItem);delete e[t]}),this.clear=(()=>{e={}})};global.sessionStorage=new e}return(!0).sessionStorage}return(!0).sessionStorage};B.define("sessionStorage",["key","getItem","setItem","removeItem","clear"],mt);const dt=e=>e.isServer?mt(e):(!0).localStorage;B.define("localStorage",["key","getItem","setItem","removeItem","clear"],dt);const ht=e=>{let t={require:e=>new Promise((t,r)=>{if("string"==typeof e)try{t(require(e))}catch(e){r(new g(e))}else r(g.InvalidArgument("module"))}),undef:e=>{if("string"!=typeof e)throw g.InvalidArgument("module",t.undef);try{delete require.cache[require.resolve(e)]}catch(e){throw new g(e,t.undef)}}};return t};B.define("serverModule",["require","undef"],ht);const yt=e=>{let t={require:t=>new Promise((r,n)=>{if("string"!=typeof t)return void n(g.InvalidArgument("module"));let i=t.substr(t.lastIndexOf(".")+1).toLowerCase();try{if("undefined"!=typeof require)try{require([t],r,n)}catch(e){n(new g(e))}else if(e.isWorker)try{importScripts(t),r()}catch(e){n(new g(e))}else{let e=(!0).document.createElement("script");e.type="mjs"===i?"module":"text/javascript",e.name=t,e.src=t,e.onload=(()=>{r()}),e.onerror=(e=>{n(new g(e))}),(!0).document.head.appendChild(e)}}catch(e){n(new g(e))}}),undef:e=>{if("string"!=typeof e)throw g.InvalidArgument("module",t.undef);let r=null;(r=(!0).requirejs||null)&&r.undef(e)}};return t};B.define("clientModule",["require","undef"],yt);const gt=e=>e=>new Promise((t,r)=>{if("string"!=typeof e)return void r(g.InvalidArgument("file"));let n=e.substr(e.lastIndexOf(".")+1).toLowerCase();try{let i=null,s="";(i=e.startsWith("https")?require("https"):require("http")).get(e,e=>{e.on("data",e=>{s+=e}),e.on("end",()=>{let i=e.headers["content-type"];if("json"===n||/^application\/json/.test(i))try{let e=JSON.parse(s);t(e)}catch(e){r(new g(e))}else t(s)})}).on("error",e=>{r(new g(e))})}catch(e){r(new g(e))}});B.define("serverFile",gt);const bt=e=>e=>new Promise((t,r)=>{if("string"!=typeof e)return void r(g.InvalidArgument("file"));let n=e.substr(e.lastIndexOf(".")+1).toLowerCase();fetch(e).then(i=>{if(i.ok){let e=i.headers["content-type"];"json"===n||/^application\/json/.test(e)?i.json().then(t).catch(e=>{r(new g(e))}):i.text().then(t).catch(e=>{r(new g(e))})}else r(g.OperationFailed(e,i.status))}).catch(e=>{r(new g(e))})});B.define("clientFile",bt);const vt=e=>t=>{let r={},n=te.config();return n&&n[t]&&(r=z([r,n[t]],!1)),e.isWorker&&n&&n[`worker:${t}`]&&(r=z([r,n[`worker:${t}`]],!1)),r};B.define("settingsReader",vt);const wt=(e,t,r,n)=>new Promise((i,s)=>{"string"==typeof t?"string"==typeof r&&-1!==["text","json","buffer","form","blob"].indexOf(r)?n?e(t,n).then(e=>{if(e.ok){let t="";switch(r){case"text":t="text";break;case"json":t="json";break;case"buffer":t="arrayBuffer";break;case"form":t="formData";break;case"blob":t="blob";break}e[t]().then(i).catch(e=>{s(new g(e))})}else s(g.OperationFailed(t,e.status))}).catch(e=>{s(new g(e))}):s(g.InvalidArgument("reqData")):s(g.InvalidArgument("resDataType")):s(g.InvalidArgument("url"))}),xt=e=>(e,t,r)=>wt(require("node-fetch"),e,t,r);B.define("serverFetch",xt);const Ot=e=>(e,t,r)=>wt(fetch,e,t,r);B.define("clientFetch",Ot);let It=!1;const At=[],$t=function(e){if(!e||!e[i]&&-1!==l.indexOf(e[i].type))throw g.InvalidArgument("Type",$t);let t=null,r=null,n=null,s=null,a=null,o=null,c=null;const u=function(e){this.getType=(()=>"modifier"),this.getName=(()=>e.name),this.getArgs=(()=>e.args.slice()),this.getConstraints=(()=>e.cfg.constraints)},f=function(e){this.getType=(()=>"attribute"),this.getName=(()=>e.name),this.getArgs=(()=>e.args.slice()),this.getConstraints=(()=>e.cfg.constraints),this.isCustom=(()=>e.isCustom)},p=function(){this.getTarget=(()=>n),this.getTargetType=(()=>t.type),this.getName=(()=>t.name||""),this.getType=(()=>t.type),this.getId=(()=>t.id),this.getNamespace=(()=>t.namespace),this.getAssembly=(()=>t.assembly()),this.getContext=(()=>t.context),this.isClass=(()=>"class"===t.type),this.isEnum=(()=>"enum"===t.type),this.isStruct=(()=>"struct"===t.type),this.isMixin=(()=>"mixin"===t.type),this.isInterface=(()=>"interface"===t.type),this.isDeprecated=(()=>t.isDeprecated()),this.getModifiers=(()=>{let e=[];for(let t of o.modifiers.type)e.push(u(t));return e}),this.getAttributes=(()=>{let e=[];for(let t of o.attrs.type)e.push(f(t));return e}),this.getAttribute=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",this.getAttribute);let t=I(o.attrs.type,"name",e);return t?f(t):null}),this.getModifier=(e=>{if("string"!=typeof e)throw g.InvalidArgument("name",this.getModifier);let t=I(o.modifiers.type,"name",e);return t?u(t):null})},m=function(e){e.getMixins=(()=>{let e=[];if(t.mixins)for(let r of t.mixins)e.push($t(r));return e}),e.isMixed=(r=>{if(!r)throw g.InvalidArgument("name",e.isMixed);return!!t.isMixed&&t.isMixed(r)})},d=function(e){e.getInterfaces=(()=>{let e=[];if(t.interfaces)for(let r of t.interfaces)e.push($t(r));return e}),e.isImplements=(r=>{if(!r)throw g.InvalidArgument("name",e.isImplements);return!!t.isImplements&&t.isImplements(r)})},h=function(e){e.getInstanceType=(()=>r.type),e.isInstanceOf=(t=>{if(!t)throw g.InvalidArgument("name",e.isInstanceOf);return!!r.isInstanceOf&&r.isInstanceOf(t)})},y=e=>{let t=r.def;for(;1&&null!==t&&!t.members[e];)t=t.previous();return t},b=()=>{let e=null,t=null;c={};for(let n in r.obj){switch((e=y(n)).members[n]){case"prop":t=new x(n,e);break;case"func":t=new A(n,e);break;case"event":t=new $(n,e);break;case"construct":t=new A(n,e);break;case"dispose":t=new A(n,e);break}c[n]=t}},v=()=>{c||b()},w=function(e,r){this.getType=(()=>"member"),this.getMemberType=(()=>r.members[e]),this.getName=(()=>e),this.getModifiers=(()=>{let t=[];for(let r of a.modifiers[e])t.push(u(r));return t}),this.getAttributes=(()=>{let t=[];for(let r of a.attrs[e])t.push(f(r));return t}),this.getAttribute=(t=>{if("string"!=typeof t)throw g.InvalidArgument("name",this.getAttribute);let r=I(a.attrs[e],"name",t);return r?f(r):null}),this.getModifier=(t=>{if("string"!=typeof t)throw g.InvalidArgument("name",this.getModifier);let r=I(a.modifiers[e],"name",t);return r?u(r):null}),this.isPrivate=(()=>null!==I(a.modifiers[e],"name","private")),this.isProtected=(()=>null!==I(a.modifiers[e],"name","protected")),this.isPublic=(()=>!this.isPrivate()&&!this.isProtected()),this.isStatic=(()=>null!==I(a.modifiers[e],"name","static")),this.isSealed=(()=>null!==I(a.modifiers[e],"name","sealed")),this.isAbstract=(()=>null!==I(a.modifiers[e],"name","abstract")),this.isVirtual=(()=>null!==I(a.modifiers[e],"name","virtual")),this.isOverride=(()=>null!==I(a.modifiers[e],"name","virtual")),this.isEnumerable=(()=>Object.getOwnPropertyDescriptor(s,e).enumerable),this.isDeprecated=(()=>null!==I(a.attrs[e],"name","deprecate")),this.isConditional=(()=>null!==I(a.attrs[e],"name","conditional")),this.isMixed=(()=>null!==I(a.attrs[e],"name","mixin")),this.isInterfaced=(()=>null!==I(a.attrs[e],"name","interface")),this.getMixin=(()=>{let r=null,n=I(a.attrs[e],"name","mixin");if(n&&t.mixins)for(let e of t.mixins)if(e===n.name){r=$t(e);break}return r}),this.getInterface=(()=>{let r=null,n=I(a.attrs[e],"name","interface");if(n&&t.interfaces)for(let e of t.interfaces)if(e===n.name){r=$t(e);break}return r})},x=function(e,t){let r=new w(e,t);return r.isReadOnly=(()=>null!==I(a.modifiers[e],"name","readonly")),r.isSerializable=(()=>null!==I(a.attrs[e],"name","serialize")||null===I(a.attrs[e],"name","noserialize")&&null!==I(o.attrs.type,"name","serialize")),r.getValueType=(()=>{let t=I(a.attrs[e],"name","type");if(t)return t.args[0]}),r.isDisposable=(()=>null!==I(a.attrs[e],"name","dispose")),r.isInjectable=(()=>null!==I(a.attrs[e],"name","inject")),r.isResource=(()=>null!==I(a.attrs[e],"name","resource")),r.isAsset=(()=>null!==I(a.attrs[e],"name","asset")),r.isSession=(()=>null!==I(a.attrs[e],"name","session")),r.isState=(()=>null!==I(a.attrs[e],"name","state")),r},A=function(e,t){let r=new w(e,t);return r.isASync=(()=>null!==I(a.modifiers[e],"name","async")),r.isConstructor=(()=>"_construct"===e),r.isDestructor=(()=>"_dispose"===e),r.isSub=(()=>null!==I(a.attrs[e],"name","on")),r.isTimered=(()=>null!==I(a.attrs[e],"name","timer")),r.isInjectable=(()=>null!==I(a.attrs[e],"name","inject")),r.getArgs=(()=>{let t=I(a.attrs[e],"name","args");return t?t.args.slice():null}),r.getAspects=(()=>{if(a.aspects&&a.aspects[e].length>0){let t=[];for(let r of a.aspects[e])t.push($t(r));return t}return null}),r.getAspect=(t=>{if("string"!=typeof t)throw g.InvalidArgument("name",r.getAspect);if(a.aspects&&a.aspects[e].length>0){let r=I(a.aspects[e],"name",t);if(r)return $t(r)}return null}),r},$=function(e,t){let r=new w(e,t);return delete r.isStatic,r.isPub=(()=>null!==I(a.attrs[e],"name","post")),r},k=function(e){e.getMembers=(e=>{(e=e||{}).types=e.types||[],e.modifiers=e.modifiers||[],e.attrs=e.attrs||[],e.aspects=e.aspects||[],e.inherited=void 0===e.inherited||e.inherited,v();let t=null,r=!0,n=[];for(let i in c)if(r=!0,c.hasOwnProperty(i)){if(t=c[i],e.types.length>0&&-1===e.types.indexOf(t.getMemberType())&&(r=!1),!r||e.inherited||a.members[i]||(r=!1),r&&e.modifiers.length>0)for(let t of e.modifiers)if(-1===O(a.modifiers[i],"name",t)){r=!1;break}if(r&&e.attrs.length>0)for(let t of e.attrs)if(-1===O(a.attrs[i],"name",t)){r=!1;break}if(r&&e.aspects.length>0&&"func"===t.getMemberType())for(let t of e.aspects)if(-1===O(a.aspects[i],"name",t)){r=!1;break}r&&n.push(c[i])}return n}),e.getMember=(t=>{if("string"!=typeof t)throw g.InvalidArgument("memberName",e.getMember);return v(),c[t]||null})},j=function(){let e=new p;return e.getParent=(()=>null!==t.inherits?$t(t.inherits):null),e.isDerivedFrom=(r=>{if(!r)throw g.InvalidArgument("name",e.isDerivedFrom);return!!t.isDerivedFrom&&t.isDerivedFrom(r)}),e.getFamily=(()=>{let e=[],r=t.inherits;for(null!==t.inherits&&e.push($t(t.inherits));1&&null!==r;)e.push($t(r)),r=r[i].inherits;return e}),e.isSealed=(()=>!!t.isSealed&&t.isSealed()),e.isAbstract=(()=>!!t.isAbstract&&t.isAbstract()),m(e),d(e),e.isSerializable=(()=>null!==I(o.attrs.type,"name","serialize")),e.isStatic=(()=>!!t.isStatic&&t.isStatic()),e.isSingleton=(()=>!!t.isSingleton&&t.isSingleton()),e.isSingleInstanceCreated=(()=>!!t.singleInstance.value),h(e),k(e),e},T=function(){let e=new p;return e.isSerializable=(()=>null!==I(o.attrs.type,"name","serialize")),h(e),k(e),e},S=function(){let e=new p;return k(e),e},P=function(){let e=new p;return k(e),e},N=function(){let e=new p;return e.getNames=(()=>{let e=[];for(let t of Le.getNames(s))e.push(x(t,a));return e}),e.getName=(t=>{if(!t)throw g.InvalidArgument("enumValue",e.getName);let r=Le.getName(s,t);return r?x(r,a):null}),e.getValues=(()=>Le.getValues(s)),e.isDefined=(t=>{if(!t)throw g.InvalidArgument("nameOrValue",e.isDefined);return Le.isDefined(s,t)}),e};let C=null,D=null,E=!1;switch(It=!0,e[i].type){case"class":n=e,s=new e,E=!0,C=new j;break;case"struct":n=e,s=new e,E=!0,C=new T;break;case"enum":n=e[i].Type,s=e,C=new N;break;case"mixin":D=Ue("temp",[n=e],function(){}),s=new D,E=!0,C=new S;break;case"interface":n=e[i].Type,s=e,C=new P;break}return It=!1,E&&At.push(s),t=n[i],r=s[i],a=r.def,o=r.typeDef,C};$t.dispose=(()=>{if(At.length>0)for(let e of At)ke(e);At.length=0}),m("Reflector",$t,()=>{$t.dispose()});const kt=()=>{};return kt.forEachAsync=F,kt.replaceAll=k,kt.splitAndTrim=A,kt.findIndexByProp=O,kt.findItemByProp=I,kt.which=v,kt.isArrowFunc=w,kt.isASyncFunc=x,kt.sieve=N,kt.deepMerge=z,kt.b64EncodeUnicode=C,kt.b64DecodeUnicode=D,m("utils",kt),p.members=Object.freeze(p.members),(e=>{const{Class:t,Struct:r,Enum:n,Interface:i,Mixin:s,Aspects:a,AppDomain:o,$$:l,attr:c,bring:u,Container:f,include:m,Port:d,on:h,post:y,telemetry:g,Reflector:b,Serializer:v,Tasks:w,as:x,is:O,isComplies:I,isDerivedFrom:A,isAbstract:$,isSealed:k,isStatic:j,isSingleton:T,isDeprecated:S,isImplements:P,isInstanceOf:N,isMixed:C,getAssembly:D,getAttr:E,getContext:F,getResource:z,getRoute:M,getType:R,ns:W,getTypeOf:U,getTypeName:_,typeOf:q,dispose:L,using:B,Args:V,Exception:G,noop:J,nip:H,nim:X,nie:K,event:Q}=p,{TaskInfo:Y}=p.Tasks,{env:Z}=p.options,{forEachAsync:ee,replaceAll:te,splitAndTrim:re,findIndexByProp:ne,findItemByProp:ie,which:se,guid:ae,isArrowFunc:oe,isASyncFunc:le,sieve:ce,deepMerge:ue,b64EncodeUnicode:fe,b64DecodeUnicode:pe}=p.utils,{$$static:me,$$abstract:de,$$virtual:he,$$override:ye,$$sealed:ge,$$private:be,$$privateSet:ve,$$protected:we,$$protectedSet:xe,$$readonly:Oe,$$async:Ie,$$overload:Ae,$$enumerate:$e,$$dispose:ke,$$post:je,$$on:Te,$$timer:Se,$$type:Pe,$$args:Ne,$$inject:Ce,$$resource:De,$$asset:Ee,$$singleton:Fe,$$serialize:ze,$$deprecate:Me,$$session:Re,$$state:We,$$conditional:Ue,$$noserialize:_e,$$ns:qe}=l,Le=Z.isServer||Z.isWorker?null:(!0).document,Be=o.context.current().name,Ve=e,Ge=Ve.substr(0,Ve.lastIndexOf("/")+1);o.loadPathOf("flair",Ge);let Je=JSON.parse("{}"),He=p.Port("settingsReader");if("function"==typeof He){let e=He("flair");e&&(Je=ue([Je,e],!1))}Je=Object.freeze(Je);let Xe=JSON.parse("{}");Xe=Object.freeze(Xe),o.context.current().currentAssemblyBeingLoaded("./flair{.min}.js"),l("abstract"),l("ns","(root)"),t("Aspect",function(){l("virtual"),this.before=X,l("virtual"),this.around=X,l("virtual"),this.after=X}),l("abstract"),l("ns","(root)"),t("Attribute",function(){l("virtual"),this.construct=(e=>{this.args=e}),l("readonly"),this.args=[],l("readonly"),this.constraints="",l("virtual"),this.decorateProperty=X,l("virtual"),this.decorateFunction=X,l("virtual"),this.decorateEvent=X}),l("ns","(root)"),i("IDisposable",function(){this.dispose=X}),l("ns","(root)"),i("IProgressReporter",function(){this.progress=K}),(()=>{const{IProgressReporter:e,IDisposable:r}=W();l("ns","(root)"),t("Task",[e,r],function(){let e=!1,t=!1,r=o.context.current().name;this.construct=((...e)=>{this.args=e,this.context=o.contexts(r),this.domain=this.context.domain}),l("abstract"),this.dispose=X,l("protected"),this.args=[],l("protected"),this.context=null,l("protected"),this.domain=null,this.run=(async(...r)=>{if(t)throw G.InvalidOperation("Task is already running",this.run);if(t=!0,!e)try{await this.setup(),e=!0}catch(e){throw t=!1,e}try{let e;return await this.onRun(...r)}catch(e){throw e}finally{t=!1}}),this.progress=Q(e=>({data:e})),l("virtual"),l("protected"),l("async"),this.setup=J,l("abstract"),l("protected"),l("async"),this.onRun=X})})(),o.context.current().currentAssemblyBeingLoaded(""),"function"==typeof onLoadComplete&&onLoadComplete()})(r),Object.freeze(p)}); \ No newline at end of file diff --git a/dist/flair.min.js.gz b/dist/flair.min.js.gz index f2fc4252d44fea48fc208f2316c629ecb2a20e9e..1571ddee5c11cdc0da321d220b10e11e73af636e 100644 GIT binary patch delta 21111 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 delta 21112 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

V+7))vtl-~+r7 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 { const flair = (typeof global !== 'undefined' ? require('flairjs') : (typeof WorkerGlobalScope !== 'undefined' ? WorkerGlobalScope.flair : window.flair)); - flair.AppDomain.registerAdo(...JSON.parse('[{"name":"flair.app","file":"./flair.app{.min}.js","mainAssembly":"flair","desc":"True Object Oriented JavaScript","title":"Flair.js","version":"0.6.6","lupdate":"Sat, 11 May 2019 03:36:59 GMT","builder":{"name":"flairBuild","version":"1","format":"fasm","formatVersion":"1","contains":["init","func","type","vars","reso","asst","rout","sreg"]},"copyright":"(c) 2017-2019 Vikas Burman","license":"MIT","types":["flair.app.Bootware","flair.app.Handler","flair.app.App","flair.app.Host","flair.ui.vue.VueComponentMembers","flair.api.RestHandler","flair.api.RestInterceptor","flair.app.BootEngine","flair.app.ClientHost","flair.app.ServerHost","flair.boot.ClientRouter","flair.boot.DIContainer","flair.boot.Middlewares","flair.boot.NodeEnv","flair.boot.ResHeaders","flair.boot.ServerRouter","flair.ui.ViewHandler","flair.ui.ViewInterceptor","flair.ui.ViewState","flair.ui.ViewTransition","flair.ui.vue.VueComponent","flair.ui.vue.VueDirective","flair.ui.vue.VueFilter","flair.ui.vue.VueLayout","flair.ui.vue.VueMixin","flair.ui.vue.VuePlugin","flair.ui.vue.VueSetup","flair.ui.vue.VueView"],"resources":[],"assets":[],"routes":[{"name":"flair.ui.vue.test2","mount":"main","index":101,"verbs":[],"path":"test/:id","handler":"abc.xyz.Test"},{"name":"flair.ui.vue.exit2","mount":"main","index":103,"verbs":[],"path":"exit","handler":"abc.xyz.Exit"}]}]')); + flair.AppDomain.registerAdo(...JSON.parse('[{"name":"flair.app","file":"./flair.app{.min}.js","mainAssembly":"flair","desc":"True Object Oriented JavaScript","title":"Flair.js","version":"0.6.7","lupdate":"Sat, 11 May 2019 03:55:13 GMT","builder":{"name":"flairBuild","version":"1","format":"fasm","formatVersion":"1","contains":["init","func","type","vars","reso","asst","rout","sreg"]},"copyright":"(c) 2017-2019 Vikas Burman","license":"MIT","types":["flair.app.Bootware","flair.app.Handler","flair.app.App","flair.app.Host","flair.ui.vue.VueComponentMembers","flair.api.RestHandler","flair.api.RestInterceptor","flair.app.BootEngine","flair.app.ClientHost","flair.app.ServerHost","flair.boot.ClientRouter","flair.boot.DIContainer","flair.boot.Middlewares","flair.boot.NodeEnv","flair.boot.ResHeaders","flair.boot.ServerRouter","flair.ui.ViewHandler","flair.ui.ViewInterceptor","flair.ui.ViewState","flair.ui.ViewTransition","flair.ui.vue.VueComponent","flair.ui.vue.VueDirective","flair.ui.vue.VueFilter","flair.ui.vue.VueLayout","flair.ui.vue.VueMixin","flair.ui.vue.VuePlugin","flair.ui.vue.VueSetup","flair.ui.vue.VueView"],"resources":[],"assets":[],"routes":[{"name":"flair.ui.vue.test2","mount":"main","index":101,"verbs":[],"path":"test/:id","handler":"abc.xyz.Test"},{"name":"flair.ui.vue.exit2","mount":"main","index":103,"verbs":[],"path":"exit","handler":"abc.xyz.Exit"}]}]')); })(); \ No newline at end of file diff --git a/docs/v1/examples/js/flair.js b/docs/v1/examples/js/flair.js index 3a042066..25eda2e1 100644 --- a/docs/v1/examples/js/flair.js +++ b/docs/v1/examples/js/flair.js @@ -5,8 +5,8 @@ * * Assembly: flair * File: ./flair.js - * Version: 0.6.6 - * Sat, 11 May 2019 03:36:56 GMT + * Version: 0.6.7 + * Sat, 11 May 2019 03:55:11 GMT * * (c) 2017-2019 Vikas Burman * MIT @@ -105,10 +105,10 @@ name: 'flairjs', title: 'Flair.js', file: currentFile, - version: '0.6.6', + version: '0.6.7', copyright: '(c) 2017-2019 Vikas Burman', license: 'MIT', - lupdate: new Date('Sat, 11 May 2019 03:36:56 GMT') + lupdate: new Date('Sat, 11 May 2019 03:55:11 GMT') }); flair.members = []; diff --git a/package.json b/package.json index 64f1a337..81e1068c 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "title": "Flair.js", "description": "True Object Oriented JavaScript", "copyright": "(c) 2017-2019 Vikas Burman", - "version": "0.6.6", + "version": "0.6.7", "author": "Vikas Burman ", "keywords": [ "javascript", diff --git a/src/flair.app/flair.app/ClientHost.js b/src/flair.app/flair.app/ClientHost.js index 250f2e94..2505b11e 100644 --- a/src/flair.app/flair.app/ClientHost.js +++ b/src/flair.app/flair.app/ClientHost.js @@ -27,18 +27,18 @@ Class('(auto)', Host, function() { // localization support (start) $$('state'); $$('private'); - this.currentLocale = settings.i18n.locale; + this.currentLocale = settings.client.i18n.locale; this.defaultLocale = { - get: () => { return settings.i18n.locale; }, + get: () => { return settings.client.i18n.locale; }, set: noop }; this.supportedLocales = { - get: () => { return settings.i18n.locales.slice(); }, + get: () => { return settings.client.i18n.locales.slice(); }, set: noop }; this.locale = (newLocale, isSuppressRefresh) => { - if (!settings.i18n.enabled) { return ''; } + if (!settings.client.i18n.enabled) { return ''; } // update value and refresh for changes (if required) if (newLocale && this.currentLocale !== newLocale) { @@ -46,7 +46,7 @@ Class('(auto)', Host, function() { // change url and then redirect to new URL if (!isSuppressRefresh) { - if (settings.url.i18n) { + if (settings.client.url.i18n) { // set new path with replaced locale // this change will also go in history window.location.hash = this.replaceLocale(window.location.hash); @@ -76,7 +76,7 @@ Class('(auto)', Host, function() { }; $$('private'); this.extractLocale = (path) => { - if (!settings.url.i18n) { return ''; } + if (!settings.client.url.i18n) { return ''; } // pick first path element let idx = path.indexOf('/'); @@ -102,7 +102,7 @@ Class('(auto)', Host, function() { $$('private'); this.replaceLocale = (path) => { // replace current locale with given locale - if (settings.url.i18n) { + if (settings.client.url.i18n) { // clean path first path = this.cleanPath(path); @@ -128,14 +128,14 @@ Class('(auto)', Host, function() { path = this.cleanPath(path); // add hash - if (settings.url.hashbang) { + if (settings.client.url.hashbang) { path = '/#!/' + path; } else { path = '/#/' + path; } // add i18n - if (settings.i18n.enabled && settings.url.i18n) { + if (settings.client.i18n.enabled && settings.client.url.i18n) { path = (this.currentLocale || this.defaultLocale) + '/' + path; } @@ -191,7 +191,7 @@ Class('(auto)', Host, function() { // each item is: { name: '', value: } // name: as in above link (as-is) // value: as defined in above link - let pageOptions = settings[`${mountName}-options`]; + let pageOptions = settings.client.routing[`${mountName}-options`]; if (pageOptions && pageOptions.length > 0) { for(let pageOption of pageOptions) { appOptions[pageOption.name] = pageOption.value; @@ -217,13 +217,13 @@ Class('(auto)', Host, function() { mainApp.base('/'); // create one instance of page app for each mounted path - for(let mountName of Object.keys(settings.routing.mounts)) { + for(let mountName of Object.keys(settings.client.routing.mounts)) { if (mountName === 'main') { mountPath = '/'; mount = mainApp; } else { appOptions = getOptions(mountName); - mountPath = settings.routing.mounts[mountName]; + mountPath = settings.client.routing.mounts[mountName]; mount = page.create(appOptions); // create a sub-app mount.strict(appOptions.strict); mount.base(mountPath); @@ -250,8 +250,8 @@ Class('(auto)', Host, function() { let path = this.cleanPath(window.location.hash); // handle i18n specific routing - if (settings.i18n.enabled) { - if (settings.url.i18n) { // if i18n type urls are being used + if (settings.client.i18n.enabled) { + if (settings.client.url.i18n) { // if i18n type urls are being used // extract locale from path let extractedLocale = this.extractLocale(path); @@ -310,7 +310,7 @@ Class('(auto)', Host, function() { window.addEventListener('hashchange', hashChangeHandler); // navigate to home - this.app.redirect(settings.url.home); + this.app.redirect(settings.client.url.home); // ready console.log(`${AppDomain.app().info.name}, v${AppDomain.app().info.version}`); // eslint-disable-line no-console diff --git a/src/flair.app/flair.app/ServerHost.js b/src/flair.app/flair.app/ServerHost.js index 0963d30c..cdaef934 100644 --- a/src/flair.app/flair.app/ServerHost.js +++ b/src/flair.app/flair.app/ServerHost.js @@ -10,8 +10,8 @@ Class('(auto)', Host, function() { let mountedApps = {}, httpServer = null, httpsServer = null, - httpSettings = settings.express['server-http'], - httpsSettings = settings.express['server-https']; + httpSettings = settings.server.express['server-http'], + httpsSettings = settings.server.express['server-https']; $$('override'); this.construct = (base) => { @@ -38,7 +38,7 @@ Class('(auto)', Host, function() { // each item is: { name: '', value: } // name: as in above link (as-is) // value: as defined in above link - let appSettings = settings[`${mountName}-appSettings`]; + let appSettings = settings.server.routing[`${mountName}-appSettings`]; if (appSettings && appSettings.length > 0) { for(let appSetting of appSettings) { mount.set(appSetting.name, appSetting.value); @@ -53,12 +53,12 @@ Class('(auto)', Host, function() { // create one instance of express app for each mounted path let mountPath = '', mount = null; - for(let mountName of Object.keys(settings.routing.mounts)) { + for(let mountName of Object.keys(settings.server.routing.mounts)) { if (mountName === 'main') { mountPath = '/'; mount = mainApp; } else { - mountPath = settings.routing.mounts[mountName]; + mountPath = settings.server.routing.mounts[mountName]; mount = express(); // create a sub-app } diff --git a/src/flair.app/flair.boot/ClientRouter.js b/src/flair.app/flair.boot/ClientRouter.js index 5a616327..2885240f 100644 --- a/src/flair.app/flair.boot/ClientRouter.js +++ b/src/flair.app/flair.boot/ClientRouter.js @@ -108,7 +108,7 @@ Class('(auto)', Bootware, function () { // each interceptor is derived from ViewInterceptor and // run method of it takes ctx, can update it // each item is: "InterceptorTypeQualifiedName" - let mountInterceptors = settings[`${mount.name}-interceptors`] || []; + let mountInterceptors = settings.client.routing[`${mount.name}-interceptors`] || []; runInterceptors(mountInterceptors, ctx).then(() => { if (!ctx.$stop) { handleRoute(); @@ -135,7 +135,7 @@ Class('(auto)', Bootware, function () { // catch 404 for this mount and forward to error handler mount.app("*", (ctx) => { // mount.app = page object/func // redirect to 404 route, which has to be defined route - let url404 = settings.url['404']; + let url404 = settings.client.url['404']; if (url404) { ctx.handled = true; if (ctx.pathname !== url404) { diff --git a/src/flair.app/flair.boot/Middlewares.js b/src/flair.app/flair.boot/Middlewares.js index 41ba76c8..57a91220 100644 --- a/src/flair.app/flair.boot/Middlewares.js +++ b/src/flair.app/flair.boot/Middlewares.js @@ -26,7 +26,7 @@ Class('(auto)', Bootware, function() { // define it as: "return (res, path, stat) => { res.set('x-timestamp', Date.now()) }" // this string will be passed to new Function(...) and returned values will be used as value of option // all object type arguments will be scanned for string values that start with 'return ' and will be tried to convert into a function - let middlewares = settings[`${mount.name}-middlewares`]; + let middlewares = settings.server.routing[`${mount.name}-middlewares`]; if (middlewares && middlewares.length > 0) { let mod = null, func = null; diff --git a/src/flair.app/flair.boot/NodeEnv.js b/src/flair.app/flair.boot/NodeEnv.js index 078d7d7e..a3a549d3 100644 --- a/src/flair.app/flair.boot/NodeEnv.js +++ b/src/flair.app/flair.boot/NodeEnv.js @@ -16,12 +16,12 @@ Class('(auto)', Bootware, function() { this.boot = async (base) => { base(); - if (settings.envVars.vars.length > 0) { + if (settings.server.nsenvVars.vars.length > 0) { const nodeEnv = await include('node-env-file | x'); if (nodeEnv) { - for(let envVar of settings.envVars.vars) { - nodeEnv(AppDomain.resolvePath(envVar), settings.envVars.options); + for(let envVar of settings.server.envVars.vars) { + nodeEnv(AppDomain.resolvePath(envVar), settings.server.envVars.options); } } } diff --git a/src/flair.app/flair.boot/ServerRouter.js b/src/flair.app/flair.boot/ServerRouter.js index 50353d2f..80e3740d 100644 --- a/src/flair.app/flair.boot/ServerRouter.js +++ b/src/flair.app/flair.boot/ServerRouter.js @@ -112,7 +112,7 @@ Class('(auto)', Bootware, function () { // each interceptor is derived from RestInterceptor and // run method of it takes req, can update it, also takes res method and can generate response, in case request is being stopped // each item is: "InterceptorTypeQualifiedName" - let mountInterceptors = settings[`${mount.name}-interceptors`] || []; + let mountInterceptors = settings.server.routing[`${mount.name}-interceptors`] || []; runInterceptors(mountInterceptors, req, res).then(() => { if (!req.$stop) { handleRoute(); diff --git a/src/flair.app/flair.ui.vue/@3-VueComponentMembers.js b/src/flair.app/flair.ui.vue/@3-VueComponentMembers.js index 44a463d2..59971920 100644 --- a/src/flair.app/flair.ui.vue/@3-VueComponentMembers.js +++ b/src/flair.app/flair.ui.vue/@3-VueComponentMembers.js @@ -32,7 +32,7 @@ Mixin('(auto)', function() { // each i18n resource file is defined as: // "ns": "json-file-name" // when loaded, each ns will convert into JSON object from defined file - if(settings.i18n.enabled && this.i18n) { + if(settings.client.i18n.enabled && this.i18n) { let i18ResFile = ''; for(let i18nNs in this.i18n) { if (this.i18n.hasOwnProperty(i18nNs)) { @@ -122,7 +122,7 @@ Mixin('(auto)', function() { component.methods['route'] = (routeName, placeholders) => { return _this.route(routeName, placeholders); }; // i18n specific built-in methods - if (settings.i18n.enabled) { + if (settings.client.i18n.enabled) { // supporting built-in method: locale // e.g., {{ locale() }} will give: 'en' component.methods['locale'] = (value) => { return _this.locale(value); }; diff --git a/src/flair.app/flair.ui.vue/VuePlugin.js b/src/flair.app/flair.ui.vue/VuePlugin.js index f9d29547..041d7527 100644 --- a/src/flair.app/flair.ui.vue/VuePlugin.js +++ b/src/flair.app/flair.ui.vue/VuePlugin.js @@ -6,8 +6,8 @@ $$('ns', '(auto)'); Class('(auto)', function() { this.construct = (name) => { // load options, if name and corresponding options are defined - if (settings.vue.pluginOptions[name]) { - this.options = Object.assign({}, settings.vue.pluginOptions[name]); // keep a copy + if (settings.client.vue.pluginOptions[name]) { + this.options = Object.assign({}, settings.client.vue.pluginOptions[name]); // keep a copy } }; diff --git a/src/flair.app/flair.ui.vue/VueSetup.js b/src/flair.app/flair.ui.vue/VueSetup.js index bf87009a..01a7f470 100644 --- a/src/flair.app/flair.ui.vue/VueSetup.js +++ b/src/flair.app/flair.ui.vue/VueSetup.js @@ -24,7 +24,7 @@ Class('(auto)', Bootware, function() { // load Vue global plugins // each plugin in array is defined as: // { "name": "name", "type": "ns.typeName" } - let plugins = settings.vue.plugins, + let plugins = settings.client.vue.plugins, PluginType = null, plugin = null; for(let item of plugins) { @@ -47,7 +47,7 @@ Class('(auto)', Bootware, function() { // load Vue global mixins // each mixin in array is defined as: // { "name": "name", "type": "ns.typeName" } - let mixins = settings.vue.mixins, + let mixins = settings.client.vue.mixins, MixinType = null, mixin = null; for(let item of mixins) { @@ -70,7 +70,7 @@ Class('(auto)', Bootware, function() { // load Vue global directives // each directive in array is defined as: // { "name": "name", "type": "ns.typeName" } - let directives = settings.vue.directives, + let directives = settings.client.vue.directives, DirectiveType = null, directive = null; for(let item of directives) { @@ -93,7 +93,7 @@ Class('(auto)', Bootware, function() { // load Vue global filters // each filter in array is defined as: // { "name": "name", "type": "ns.typeName" } - let filters = settings.vue.filters, + let filters = settings.client.vue.filters, FilterType = null, filter = null; for(let item of filters) { @@ -116,7 +116,7 @@ Class('(auto)', Bootware, function() { // register global components // each component in array is defined as: // { "name": "name", "type": "ns.typeName" } - let components = settings.vue.components, + let components = settings.client.vue.components, ComponentType = null, component = null; for(let item of components) { diff --git a/src/flair.app/flair.ui.vue/VueView.js b/src/flair.app/flair.ui.vue/VueView.js index 6c9a3d22..e04b289e 100644 --- a/src/flair.app/flair.ui.vue/VueView.js +++ b/src/flair.app/flair.ui.vue/VueView.js @@ -11,7 +11,7 @@ Class('(auto)', ViewHandler, [VueComponentMembers], function() { $$('override'); this.construct = (base) => { - base(settings.view.el, settings.view.title, settings.view.transition); + base(settings.client.view.el, settings.client.view.title, settings.client.view.transition); }; $$('private'); diff --git a/src/flair.app/settings.json b/src/flair.app/settings.json index 0c4d3bd1..8aba6714 100644 --- a/src/flair.app/settings.json +++ b/src/flair.app/settings.json @@ -85,7 +85,9 @@ "main-middlewares": [ ], "main-interceptors": [ - ] + ], + "main-resHeaders": [ + ] } } } \ No newline at end of file