@tsed/di 8.0.0-beta.5 → 8.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/di.umd.min.js +1 -1
- package/lib/browser/di.umd.min.js.map +1 -1
- package/lib/esm/common/fn/configuration.js.map +1 -1
- package/lib/esm/common/fn/injectable.js.map +1 -1
- package/lib/esm/common/services/DIConfiguration.js +1 -14
- package/lib/esm/common/services/DIConfiguration.js.map +1 -1
- package/lib/types/common/decorators/configuration.d.ts +1 -1
- package/lib/types/common/fn/configuration.d.ts +1 -1
- package/lib/types/common/fn/injectable.d.ts +1 -1
- package/lib/types/common/interfaces/DIConfigurationOptions.d.ts +5 -0
- package/lib/types/common/services/DIConfiguration.d.ts +0 -6
- package/package.json +7 -7
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@tsed/core"),require("@tsed/schema")):"function"==typeof define&&define.amd?define(["@tsed/core","@tsed/schema"],t):"object"==typeof exports?exports["@tsed/di"]=t(require("@tsed/core"),require("@tsed/schema")):e["@tsed/di"]=t(e["@tsed/core"],e["@tsed/schema"])}(self,((e,t)=>(()=>{"use strict";var r={803:t=>{t.exports=e},953:e=>{e.exports=t}},s={};function o(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return r[e](n,n.exports,o),n.exports}o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{o.r(n),o.d(n,{$alter:()=>be,$alterAsync:()=>ke,$emit:()=>Ee,AutoInjectable:()=>X,Configuration:()=>b,Constant:()=>te,Container:()=>L,Controller:()=>oe,ControllerProvider:()=>S,DIConfiguration:()=>B,DI_INJECTABLE_PROPS:()=>t,DI_INTERCEPTOR_OPTIONS:()=>i,DI_INVOKE_OPTIONS:()=>e,DI_USE_OPTIONS:()=>r,DI_USE_PARAM_OPTIONS:()=>s,GlobalProviderRegistry:()=>C,GlobalProviders:()=>T,Inject:()=>E,Injectable:()=>M,InjectablePropertyType:()=>re,InjectionError:()=>$,InjectorService:()=>J,Intercept:()=>ae,Interceptor:()=>ce,InvalidPropertyTokenError:()=>u,LOGGER:()=>Ie,LazyInject:()=>ue,LocalsContainer:()=>c,Module:()=>he,OptionalLazyInject:()=>le,Opts:()=>de,OverrideProvider:()=>ge,Provider:()=>R,ProviderScope:()=>P,ProviderType:()=>I,Scope:()=>pe,Service:()=>fe,UseOpts:()=>ye,Value:()=>me,bindConstant:()=>ee,bindIntercept:()=>ie,bindValue:()=>ve,cleanAllLocalsContainer:()=>y,colors:()=>F,configuration:()=>Oe,constant:()=>Z,controller:()=>_,createContainer:()=>V,destroyInjector:()=>Y,detachLocalsContainer:()=>f,getConfiguration:()=>Se,getConstructorDependencies:()=>O,getInterceptorOptions:()=>ne,getTokens:()=>G,hasInjector:()=>W,inject:()=>v,injectMany:()=>m,injectable:()=>N,injector:()=>Q,interceptor:()=>D,invokeOptions:()=>g,localsContainer:()=>d,mergeMount:()=>Re,providerBuilder:()=>j,refValue:()=>Pe,registerProvider:()=>w,resolveControllers:()=>z,setConstructorDependencies:()=>k});const e=Symbol("DI_INVOKE_OPTIONS"),t=Symbol("DI_INJECTABLE_PROPS"),r="DI_USE_OPTIONS",s="DI_USE_PARAM_OPTIONS",i="DI_INTERCEPTOR_OPTIONS";var a=o(803);class c extends Map{constructor(){super(...arguments),this.hooks=new a.Hooks}async destroy(){await this.hooks.asyncEmit("$onDestroy")}}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;class u extends Error{constructor(e,t){super(`Object isn't a valid token. Please check the token set on ${(0,a.nameOf)((0,a.classOf)(e))}.${t}.\n- Check that it is not a circular reference.\n- Check that the token (class or symbol) exists`),this.name="INVALID_TOKEN_ERROR"}}let l,h={};const p=[];function d({providers:e,rebuild:t}={}){return l&&!e||(l=new c,e&&(e.forEach((e=>{l.set(e.token,e.use)})),l.set(J,Q())),t&&(h.rebuild=t)),l}function g(){return{...h}}function f(){l&&p.push(l),l=void 0,h={}}function y(){f(),p.map((e=>e.clear()))}function v(e,t){return Q().invoke(e,t?.locals||d(),{...t,...g()})}function m(e,t){return Q().getMany(e,t?.locals||d(),t)}function O(e,t){return a.Metadata.getOwn("override:ctor:design:paramtypes",e,t)||[...a.Metadata.getParamTypes(e,t)]||[]}function k(e,t){a.Metadata.set("override:ctor:design:paramtypes",t,e)}function E(s,o={}){return o="function"==typeof o?{transform:o}:o,(n,i,c)=>{switch((0,a.decoratorTypeOf)([n,i,c])){case a.DecoratorTypes.PARAM_CTOR:s&&function(e,{target:t,propertyKey:r,parameterIndex:s}){const o=O(t,r),n=o[s];o[s]=n===Array?[e]:e,a.Metadata.setParamTypes(t,r,o),k(t,o)}(s,{target:n,propertyKey:i,parameterIndex:c});break;case a.DecoratorTypes.PROP:!function(s,o,{token:n,transform:i=(e=>e),useOpts:c}){const l=Symbol();s[t]||Reflect.defineProperty(s,t,{value:new Set,enumerable:!1,configurable:!1}),s[t].add(o),(0,a.catchError)((()=>Reflect.deleteProperty(s,o))),Reflect.defineProperty(s,o,{get(){const t=function(e,t,r){const s=e||a.Metadata.getType(t,r);if(s===Object)throw new u(t,String(r));return s}(n,s,o),h=a.Metadata.getType(s,o),p={rebuild:!!this[e]?.rebuild,locals:this[e]?.locals,useOpts:c||a.Store.from(s,o).get(r)};return void 0===this[l]&&(this[l]=h===Array?m(n,p):v(t,p)),[].concat(this[l]).forEach(((e,t)=>{(0,a.isPromise)(this[l])&&e.then((e=>{this[l][t]=e,h!==Array&&(this[l]=e)}))})),i(this[l],{self:this,target:s,propertyKey:o})}})}(n,i,{...o,token:s})}}}function b(e={}){return(...t)=>{switch((0,a.decoratorTypeOf)(t)){case a.DecoratorTypes.CLASS:(0,a.StoreSet)("configuration",e)(t[0]);break;default:case a.DecoratorTypes.PARAM_CTOR:return E(b)(t[0],t[1],t[2])}}}var P,I;!function(e){e.SINGLETON="singleton",e.REQUEST="request",e.INSTANCE="instance"}(P||(P={})),function(e){e.VALUE="value",e.PROVIDER="provider",e.MODULE="module",e.CONTROLLER="controller",e.INTERCEPTOR="interceptor",e.MIDDLEWARE="middleware"}(I||(I={}));class R{constructor(e,t={}){this.type=I.PROVIDER,this.provide=e,this.useClass=e,Object.assign(this,{...t})}get token(){return this._provide}get provide(){return this._provide}set provide(e){e&&(this._provide=(0,a.getClassOrSymbol)(e),this._tokenStore=this._store=a.Store.from(e))}get useClass(){return this._useClass}set useClass(e){(0,a.isClass)(e)&&(this._useClass=(0,a.classOf)(e),this._store=a.Store.from(e),this.hooks=(0,a.methodsOf)(this._useClass).reduce(((e,{propertyKey:t})=>String(t).startsWith("$")?{...e,[t]:(e,...r)=>e[t](...r)}:e),{}))}get className(){return this.name}get name(){return(0,a.nameOf)(this.provide)}get store(){return this._store}get path(){return this.store.get("path","/")}set path(e){this.store.set("path",e)}get scope(){return this.isAsync()?P.SINGLETON:this.get("scope")}set scope(e){this.store.set("scope",e)}get configuration(){return this.get("configuration")}set configuration(e){this.store.set("configuration",e)}get children(){return this.store.get("childrenControllers",[])}set children(e){this.store.set("childrenControllers",e)}get(e){return this.store.get(e)||this._tokenStore.get(e)}isAsync(){return!!this.useAsyncFactory}clone(){return new((0,a.classOf)(this))(this._provide,this)}hasChildren(){return!!this.children.length}hasParent(){return!!this.store.get("parentController")}toString(){return["Token",this.name,this.useClass&&(0,a.nameOf)(this.useClass),this.useFactory&&"Factory",this.useValue&&"Value",this.useAsyncFactory&&"AsyncFactory"].filter(Boolean).join(":")}}class S extends R{constructor(e,t={}){super(e,t),this.type=I.CONTROLLER}get middlewares(){return Object.assign({use:[],useAfter:[],useBefore:[]},this.store.get("middlewares",{}))}set middlewares(e){const t=this.middlewares;Object.keys(e).forEach((r=>{((e,t,r)=>{t[e]=t[e].concat(r[e])})(r,t,e)})),this.store.set("middlewares",t)}}class C extends Map{#e=new Map;get(e){return super.get((0,a.getClassOrSymbol)(e))}has(e){return super.has((0,a.getClassOrSymbol)(e))}set(e,t){return super.set((0,a.getClassOrSymbol)(e),t),this}merge(e,t){const r=this.createIfNotExists(e,t);return Object.keys(t).forEach((e=>{r[e]=t[e]})),this.set(e,r),r}delete(e){return super.delete((0,a.getClassOrSymbol)(e))}createRegistry(e,t,r={}){const s=this.getRegistrySettings(e);return r=Object.assign(s,{...r,model:t}),this.#e.set(e,r),this}onInvoke(e,t,r){const s=this.#e.get(e.type);s?.onInvoke&&s.onInvoke(e,t,r)}getRegistrySettings(e){let t=I.PROVIDER;if("string"==typeof e)t=e;else{const r=this.get(e);r&&(t=r.type)}return this.#e.get(t)||{model:R}}createRegisterFn(e){return(t,r)=>{t=Object.assign({instance:r},t,{type:e}),this.merge(t.provide,t)}}createIfNotExists(e,t){const r=t.type||I.PROVIDER;if(!this.has(e)){const{model:s=R}=this.#e.get(r)||{},o=new s(e,t);this.set(e,o)}return this.get(e)}}const T=new C;function w(e){return T.merge(e.provide,e)}function j(e,t={}){return(r,s={})=>{const o=T.merge(r,{...s,...t,provide:r});return e.reduce(((e,t)=>({...e,[t]:function(e){return o[t]=e,this}})),{factory(e){return o.useFactory=e,this},asyncFactory(e){return o.useAsyncFactory=e,this},value(e){return o.useValue=e,o.type=I.VALUE,this},class(e){return o.useClass=e,this},store:()=>o.store,inspect:()=>o,token:()=>o.token})}}T.createRegistry(I.CONTROLLER,S);const A=["type","scope","path","alias","hooks","deps","resolvers","imports","configuration"],N=j(A),D=j(A,{type:I.INTERCEPTOR}),_=j([...A,"middlewares"],{type:I.CONTROLLER});function M(e={}){return t=>{const r={...e,...e.provide?{useClass:t}:{provide:t}};N(r.provide,r)}}class L extends Map{add(e,t={}){const r=T.get(e)?.clone()||new R(e);return Object.assign(r,t),super.set(e,r)}addProvider(e,t={}){return this.add(e,t)}hasProvider(e){return super.has(e)}setProvider(e,t){return super.set(e,t)}getProvider(e){return super.get(e)}getProviders(e){const t=[].concat(e).map(String);return[...this].reduce(((r,[s,o])=>t.includes(String(o.type))||!e?[...r,o]:r),[])}addProviders(e){e.forEach((e=>{this.hasProvider(e.provide)||this.setProvider(e.provide,e.clone())}))}}const x=e=>e=>(process.env.NO_COLOR,e),F={red:x(),yellow:x(),green:x()};class $ extends Error{constructor(e,t){super((0,a.isString)(t)?t:""),this.name="INJECTION_ERROR",this.tokens=[],this.tokens=[e],t&&((0,a.isString)(t)?this.origin={message:t,stack:this.stack}:t.tokens?(this.tokens=this.tokens.concat(t.tokens),this.origin=t.origin):(this.origin=t,this.stack=t.stack));const r=this.origin?"\nOrigin: "+this.origin.message:"",s=this.tokens.map((e=>(0,a.nameOf)(e))).join(" > ");this.message=`Injection failed on ${s}${r}`}static throwInjectorError(e,t,r){throw t&&(0,a.isClass)(e)&&(r.message=function(e,t){let r="";const s=(0,a.getConstructorArgNames)(e).map(((e,s)=>(t.index===s&&(r=e,e=F.red(e)),`${e}: ${(0,a.nameOf)(t.deps[s])}`))).join(", "),o=(0,a.nameOf)(e)+"->constructor("+s+")",n=o.indexOf(r)-5;return"Unable to inject dependency. "+t.message+"\n\n"+o+"\n"+(n>-1?(e=>" ".repeat(e)+F.red("^"+"‾".repeat(r.length-1)))(n):"")}(e,{...t,message:r.message})),new $(e,r)}}function V(e){const t=new L(T.entries());return e&&t.delete(e),t}const U=["mount","imports"];function G(e){return e?(0,a.isArray)(e)?e.filter(a.isClass).map((e=>({token:e}))):Object.keys(e).reduce(((t,r)=>[...t,...[].concat(e[r]).filter(a.isClass).map((e=>({route:r,token:e})))]),[]):[]}function K(e){return e.map((({token:e})=>T.get(e))).filter((e=>e?.type===I.MODULE&&e.configuration)).flatMap((e=>z(e.configuration)))}function z(e){const t=U.flatMap((t=>G(e[t])));return[...K(t),...t].filter((e=>!!e.route))}class B{constructor(e={}){return this.default=new Map,this.map=new Map,Object.entries({scopes:{},resolvers:[],imports:[],routes:[],logger:{},...e}).forEach((([e,t])=>{this.default.set(e,t)})),(0,a.proxyDelegation)(this,{ownKeys:e=>[...e.default.keys(),...e.map.keys()]})}get version(){return this.get("version")}set version(e){this.map.set("version",e)}get rootDir(){return this.get("rootDir")}set rootDir(e){this.map.set("rootDir",e)}get env(){return this.map.get("env")}set env(e){this.map.set("env",e)}get scopes(){return this.map.get("scopes")}set scopes(e){this.map.set("scopes",e)}get resolvers(){return this.getRaw("resolvers")}set resolvers(e){this.map.set("resolvers",e)}get imports(){return this.get("imports")}set imports(e){this.map.set("imports",e)}get routes(){return this.get("routes")}set routes(e){this.map.set("routes",e)}get logger(){return this.get("logger")}set logger(e){const t={...this.logger,...e};this.map.set("logger",t)}get debug(){return"debug"===this.logger.level}set debug(e){this.logger={...this.logger,level:e?"debug":"info"}}forEach(e,t){return new Set([...Array.from(this.default.keys()),...Array.from(this.map.keys())]).forEach((t=>{e(this.getRaw(t),t,this.map)}),t)}set(e,t){return"string"==typeof e?Reflect.has(this,e)?this[e]=t:this.setRaw(e,t):Object.entries(e).forEach((([e,t])=>{this.set(e,t)})),this}setRaw(e,t){return(0,a.setValue)(this.map,e,t),this}get(e,t){return this.getRaw(e,t)}resolve(e){return e.replace("${rootDir}",this.rootDir)}getRaw(e,t){const r=(0,a.getValue)(this.map,e);return void 0!==r?r:(0,a.getValue)(this.default,e,t)}}var H;let q,J=H=class extends L{#t;constructor(){super(),this.settings=new B,this.logger=console,this.resolvedConfiguration=!1,this.#t=new c,this.hooks=new a.Hooks,this.#t.set(H,this)}get resolvers(){return this.settings.resolvers}get scopes(){return this.settings.scopes||{}}scopeOf(e){return e.scope||this.scopes[String(e.type)]||P.SINGLETON}toArray(){return[...this.#t.values()]}get(e,t={}){const r=this.getInstance(e);if(void 0!==r)return r;if(!this.hasProvider(e))for(const r of this.resolvers){const s=r.get(e,t);if(void 0!==s)return s}}getMany(e,t,r){return this.getProviders(e).map((e=>this.invoke(e.token,t,r)))}has(e){return void 0!==this.#t.get(e)}alias(e,t){return this.#t.set(t,this.#t.get(e)),this}invoke(e,t,r={}){let o=t?t.get(e):void 0;if(void 0!==o)return o;if(e===b)return this.settings;if(o=r.rebuild?void 0:this.getInstance(e),null!=o)return o;if(e===s)return r.useOpts;const n=this.ensureProvider(e),i=t=>{this.#t.set(e,t),n?.alias&&this.alias(e,n.alias)};if(!n||r.rebuild)return o=this.resolve(e,t,r),this.hasProvider(e)&&i(o),o;switch(o=this.resolve(e,t,r),this.scopeOf(n)){case P.SINGLETON:return n.hooks&&!r.rebuild&&this.registerHooks(n,o),n.isAsync()&&(0,a.isPromise)(o)?(i(o),o=o.then((e=>(i(e),e))),o):(i(o),o);case P.REQUEST:return t&&(t.set(e,o),n.hooks&&n.hooks.$onDestroy&&t.hooks.on("$onDestroy",((...e)=>n.hooks.$onDestroy(o,...e)))),o}return o}async loadAsync(){for(const[,e]of this)!this.has(e.token)&&e.isAsync()&&await this.invoke(e.token)}loadSync(){for(const[,e]of this)this.has(e.token)||this.scopeOf(e)!==P.SINGLETON||this.invoke(e.token)}bootstrap(e=V()){return this.addProviders(e),this.resolveConfiguration(),this.resolveImportsProviders(),this}loadModule(e){this.settings.routes=this.settings.routes.concat(z(this.settings));const t=V();return t.delete(e),t.addProvider(e,{type:"server:module",scope:P.SINGLETON}),this.load(t)}async load(e=V()){this.bootstrap(e),await this.loadAsync(),this.loadSync(),await this.emit("$beforeInit"),await this.emit("$onInit")}resolveConfiguration(){if(this.resolvedConfiguration)return;const e=new Map;super.forEach((t=>{t.configuration&&"server:module"!==t.type&&Object.entries(t.configuration).forEach((([t,r])=>{["resolvers","mount","imports"].includes(t)||(r=e.has(t)?(0,a.deepMerge)(e.get(t),r):(0,a.deepClone)(r),e.set(t,r))})),t.resolvers&&(this.settings.resolvers=this.settings.resolvers.concat(t.resolvers))})),e.forEach(((e,t)=>{this.settings.set(t,(0,a.deepMerge)(e,this.settings.get(t)))})),this.resolvedConfiguration=!0}async lazyInvoke(e){let t=this.getInstance(e);return t||(t=await this.invoke(e),(0,a.isFunction)(t?.$onInit)&&await t.$onInit()),t}emit(e,...t){return this.hooks.asyncEmit(e,t)}alter(e,t,...r){return this.hooks.alter(e,t,r)}alterAsync(e,t,...r){return this.hooks.asyncAlter(e,t,r)}async destroy(){await this.emit("$onDestroy")}ensureProvider(e,t=!1){return this.hasProvider(e)||!T.has(e)&&!t||this.addProvider(e),this.getProvider(e)}getInstance(e){return this.#t.get(e)}resolve(t,r=new c,o={}){const n=this.mapInvokeOptions(t,r,o);if(!n)return;const{token:i,deps:u,construct:l,imports:h,provider:p}=n;let d;p&&T.onInvoke(p,r,{...n,injector:this});let g=!1;try{const e=e=>(t,n)=>{if(g={token:t,index:n,deps:u},(0,a.isArray)(t))return this.getMany(t[0],r,o);const i=p?.store?.get(`${s}:${n}`)||o.useOpts;return(0,a.isInheritedFrom)(t,R,1)?p:this.invoke(t,r,{parent:e,useOpts:i})};h.forEach(e());const t=u.map(e(i));g=!1,d=l(t)}catch(e){$.throwInjectorError(i,g,e)}if(void 0===d)throw new $(i,`Unable to create new instance from undefined value. Check your provider declaration for ${(0,a.nameOf)(i)}`);return d&&(0,a.isClass)((0,a.classOf)(d))&&Reflect.defineProperty(d,e,{get:()=>({rebuild:o.rebuild,locals:r})}),d}resolveImportsProviders(){this.settings.imports=this.settings.imports?.filter((e=>(0,a.isObject)(e)&&"token"in e&&e.token!==H)).map((e=>{if((0,a.isObject)(e)&&"token"in e){const{token:t,...r}=e,s=this.ensureProvider(t,!0);if(s){if(s.useValue=void 0,s.useAsyncFactory=void 0,s.useFactory=void 0,"useClass"in r)return void(s.useClass=r.useClass);if("useFactory"in r)return void(s.useFactory=r.useFactory);if("useAsyncFactory"in r)return void(s.useAsyncFactory=r.useAsyncFactory);if("use"in r)return void(s.useValue=r.use)}}return e})).filter(Boolean)}mapInvokeOptions(e,t,r){let o,n,i=r.imports,c=r.deps,u=r.scope;if(!e||e===Object)throw new Error("Given token is undefined. Could mean a circular dependency problem. Try to use @Inject(() => Token) to solve it.");if(this.hasProvider(e)?n=this.getProvider(e):(n=new R(e),this.resolvers.forEach((r=>{const o=r.get(e,t.get(s));void 0!==o&&(n.useFactory=()=>o)}))),u=u||this.scopeOf(n),c=c||n.deps,i=i||n.imports,void 0!==n.useValue)o=()=>(0,a.isFunction)(n.useValue)?n.useValue():n.useValue;else if(n.useFactory)o=e=>n.useFactory(...e);else if(n.useAsyncFactory)o=async e=>(e=await Promise.all(e),n.useAsyncFactory(...e));else{if(!n.useClass)return!1;c=c||O(n.useClass),o=e=>new n.useClass(...e)}return{token:e,scope:u||a.Store.from(e).get("scope")||P.SINGLETON,deps:c||[],imports:i||[],construct:o,provider:n}}registerHooks(e,t){e.hooks&&Object.entries(e.hooks).forEach((([r,s])=>{this.hooks.on(r,((...r)=>s(this.get(e.token)||t,...r)))}))}};function Q(e){return q&&!e?.rebuild||(q=new J,e&&e.logger&&(q.logger=e.logger),e?.settings&&q.settings.set(e.settings)),q}function W(){return!!q}async function Y(){await(q?.destroy()),q=void 0}function X(){return e=>class extends e{constructor(...t){super(...function(e,t){const r=Q(),s=new c,o=O(e),n=[],i=Math.max(o.length,t.length);for(let c=0;c<i;c++)if(void 0!==t[c])n.push(t[c]);else{const t=o[c],i=(0,a.isArray)(t)?r.getMany(t[0],s,{parent:e}):r.invoke(t,s,{parent:e});n.push(i)}return n}(e,t))}}}function Z(e,t){return Q().settings.get(e,t)}function ee(e,t,r,s){const o=Symbol();(0,a.catchError)((()=>Reflect.deleteProperty(e,t))),Reflect.defineProperty(e,t,{get(){if(void 0!==this[o])return this[o];const e=Z(r,s);return this[o]=Object.freeze((0,a.deepClone)(e)),this[o]},set(e){void 0===(Z(r,s)||this[o])&&void 0!==e&&(this[o]=e)},enumerable:!0,configurable:!0})}function te(e,t){return(r,s)=>ee(r,s,e,t)}J=H=function(e,t,r,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(i=(n<3?o(i):n>3?o(t,r,i):o(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i}([M({scope:P.SINGLETON}),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:paramtypes",[])],J);var re,se=o(953);function oe(e){const{children:t=[],path:r,...s}=function(e){return"string"==typeof e||e instanceof RegExp||(0,a.isArrayOrArrayClass)(e)?{path:e}:e}(e);return(0,a.useDecorators)((e=>{_(e,s)}),r&&(0,se.Path)(r),(0,se.Children)(...t))}function ne(e,t){return a.Store.fromMethod(e,t).get(i)}function ie(t,r,s,o){const n=(0,a.classOf)(t),c=Reflect.getOwnPropertyDescriptor(n.prototype,r),u=c.value,l=Symbol();return a.Store.fromMethod(n,r).set(i,o),c.value=function(...n){const i=e=>{if(!e)return u.apply(this,n);throw e},a={target:t,propertyKey:r,args:n,options:o,next:i},c={rebuild:!!this[e]?.rebuild,locals:this[e]?.locals};return this[l]=this[l]||v(s,c),this[l].intercept({...a,options:o},i)},c}function ae(e,t){return(...r)=>{const[s,o]=r;switch((0,a.decoratorTypeOf)(r)){case a.DecoratorTypes.CLASS:(0,a.decorateMethodsOf)(s,ae(e,t));break;case a.DecoratorTypes.METHOD:return ie(s,o,e,t)}}}function ce(){return M({type:I.INTERCEPTOR})}function ue(e,t,{optional:r=!1,packageName:s=t.toString()}={}){return(o,n)=>{let i,c;(0,a.catchError)((()=>Reflect.deleteProperty(o,n))),Reflect.defineProperty(o,n,{async get(){if(!c||!i){const o=await(0,a.importPackage)(s,t,r);if(c=o[e],!c&&!r)throw new Error(`Unable to lazy load the "${e}". The token isn't a valid token provider.`);i=c?await Q().lazyInvoke(c):{}}return i}})}}function le(e,t){return ue(e,t,{optional:!0})}function he(e={}){const{scopes:t,imports:r,resolvers:s,deps:o,scope:n,...i}=e;return(0,a.useDecorators)(b(i),M({type:I.MODULE,scope:P.SINGLETON,imports:r,deps:o,injectable:!1,resolvers:s}))}function pe(e=P.REQUEST){return(0,a.StoreSet)("scope",e)}function de(e,t,r){pe(P.INSTANCE)((0,a.classOf)(e)),E(s)(e,t,r)}function ge(e){return t=>{T.get(e).useClass=t}}function fe(){return M()}function ye(e){return(t,o,n)=>{switch((0,a.decoratorTypeOf)([t,o,n])){case a.DecoratorTypes.PARAM_CTOR:a.Store.from(t).merge(`${s}:${n}`,e);break;case a.DecoratorTypes.PROP:a.Store.from(t,o).set(r,e);break;default:throw new a.UnsupportedDecoratorType(ye,[t,o,n])}}}function ve(e,t,r,s){const o={get:()=>Q().settings.get(r,s),set(e){Q().settings.set(r,e)},enumerable:!0,configurable:!0};(0,a.catchError)((()=>Reflect.deleteProperty(e,t))),(0,a.catchError)((()=>Reflect.defineProperty(e,t,o)))}function me(e,t){return(r,s)=>ve(r,s,e,t)}function Oe(){return Q().settings}function ke(e,t,...r){return Q().hooks.asyncAlter(e,t,r)}function Ee(e,...t){return Q().hooks.asyncEmit(e,t)}function be(e,t,...r){return Q().hooks.alter(e,t,r)}function Pe(e,t){return Object.freeze({get value(){return Q().settings.get(e,t)},set value(t){Q().settings.set(e,t)}})}!function(e){e.METHOD="method",e.PROPERTY="property",e.CONSTANT="constant",e.VALUE="value",e.INTERCEPTOR="interceptor"}(re||(re={}));const Ie=Symbol.for("LOGGER");function Re(e={},t={}){return Object.entries(t).reduce(((e,[t,r])=>({...e,[t]:(e[t]||[]).concat(r)})),e)}function Se(e,t={}){const r=a.Store.from(e).get("configuration")||{};return{...r,...t,mount:Re(r.mount,t.mount)}}w({provide:Ie,deps:[J],useFactory:e=>e.logger})})(),n})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@tsed/core"),require("@tsed/schema")):"function"==typeof define&&define.amd?define(["@tsed/core","@tsed/schema"],t):"object"==typeof exports?exports["@tsed/di"]=t(require("@tsed/core"),require("@tsed/schema")):e["@tsed/di"]=t(e["@tsed/core"],e["@tsed/schema"])}(self,((e,t)=>(()=>{"use strict";var r={803:t=>{t.exports=e},953:e=>{e.exports=t}},s={};function o(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return r[e](n,n.exports,o),n.exports}o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{o.r(n),o.d(n,{$alter:()=>be,$alterAsync:()=>ke,$emit:()=>Ee,AutoInjectable:()=>X,Configuration:()=>b,Constant:()=>te,Container:()=>L,Controller:()=>oe,ControllerProvider:()=>S,DIConfiguration:()=>B,DI_INJECTABLE_PROPS:()=>t,DI_INTERCEPTOR_OPTIONS:()=>i,DI_INVOKE_OPTIONS:()=>e,DI_USE_OPTIONS:()=>r,DI_USE_PARAM_OPTIONS:()=>s,GlobalProviderRegistry:()=>C,GlobalProviders:()=>T,Inject:()=>E,Injectable:()=>M,InjectablePropertyType:()=>re,InjectionError:()=>V,InjectorService:()=>J,Intercept:()=>ae,Interceptor:()=>ce,InvalidPropertyTokenError:()=>u,LOGGER:()=>Ie,LazyInject:()=>ue,LocalsContainer:()=>c,Module:()=>he,OptionalLazyInject:()=>le,Opts:()=>de,OverrideProvider:()=>ge,Provider:()=>R,ProviderScope:()=>P,ProviderType:()=>I,Scope:()=>pe,Service:()=>fe,UseOpts:()=>ye,Value:()=>me,bindConstant:()=>ee,bindIntercept:()=>ie,bindValue:()=>ve,cleanAllLocalsContainer:()=>y,colors:()=>F,configuration:()=>Oe,constant:()=>Z,controller:()=>_,createContainer:()=>$,destroyInjector:()=>Y,detachLocalsContainer:()=>f,getConfiguration:()=>Se,getConstructorDependencies:()=>O,getInterceptorOptions:()=>ne,getTokens:()=>G,hasInjector:()=>W,inject:()=>v,injectMany:()=>m,injectable:()=>N,injector:()=>Q,interceptor:()=>D,invokeOptions:()=>g,localsContainer:()=>d,mergeMount:()=>Re,providerBuilder:()=>j,refValue:()=>Pe,registerProvider:()=>w,resolveControllers:()=>z,setConstructorDependencies:()=>k});const e=Symbol("DI_INVOKE_OPTIONS"),t=Symbol("DI_INJECTABLE_PROPS"),r="DI_USE_OPTIONS",s="DI_USE_PARAM_OPTIONS",i="DI_INTERCEPTOR_OPTIONS";var a=o(803);class c extends Map{constructor(){super(...arguments),this.hooks=new a.Hooks}async destroy(){await this.hooks.asyncEmit("$onDestroy")}}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;class u extends Error{constructor(e,t){super(`Object isn't a valid token. Please check the token set on ${(0,a.nameOf)((0,a.classOf)(e))}.${t}.\n- Check that it is not a circular reference.\n- Check that the token (class or symbol) exists`),this.name="INVALID_TOKEN_ERROR"}}let l,h={};const p=[];function d({providers:e,rebuild:t}={}){return l&&!e||(l=new c,e&&(e.forEach((e=>{l.set(e.token,e.use)})),l.set(J,Q())),t&&(h.rebuild=t)),l}function g(){return{...h}}function f(){l&&p.push(l),l=void 0,h={}}function y(){f(),p.map((e=>e.clear()))}function v(e,t){return Q().invoke(e,t?.locals||d(),{...t,...g()})}function m(e,t){return Q().getMany(e,t?.locals||d(),t)}function O(e,t){return a.Metadata.getOwn("override:ctor:design:paramtypes",e,t)||[...a.Metadata.getParamTypes(e,t)]||[]}function k(e,t){a.Metadata.set("override:ctor:design:paramtypes",t,e)}function E(s,o={}){return o="function"==typeof o?{transform:o}:o,(n,i,c)=>{switch((0,a.decoratorTypeOf)([n,i,c])){case a.DecoratorTypes.PARAM_CTOR:s&&function(e,{target:t,propertyKey:r,parameterIndex:s}){const o=O(t,r),n=o[s];o[s]=n===Array?[e]:e,a.Metadata.setParamTypes(t,r,o),k(t,o)}(s,{target:n,propertyKey:i,parameterIndex:c});break;case a.DecoratorTypes.PROP:!function(s,o,{token:n,transform:i=(e=>e),useOpts:c}){const l=Symbol();s[t]||Reflect.defineProperty(s,t,{value:new Set,enumerable:!1,configurable:!1}),s[t].add(o),(0,a.catchError)((()=>Reflect.deleteProperty(s,o))),Reflect.defineProperty(s,o,{get(){const t=function(e,t,r){const s=e||a.Metadata.getType(t,r);if(s===Object)throw new u(t,String(r));return s}(n,s,o),h=a.Metadata.getType(s,o),p={rebuild:!!this[e]?.rebuild,locals:this[e]?.locals,useOpts:c||a.Store.from(s,o).get(r)};return void 0===this[l]&&(this[l]=h===Array?m(n,p):v(t,p)),[].concat(this[l]).forEach(((e,t)=>{(0,a.isPromise)(this[l])&&e.then((e=>{this[l][t]=e,h!==Array&&(this[l]=e)}))})),i(this[l],{self:this,target:s,propertyKey:o})}})}(n,i,{...o,token:s})}}}function b(e={}){return(...t)=>{switch((0,a.decoratorTypeOf)(t)){case a.DecoratorTypes.CLASS:(0,a.StoreSet)("configuration",e)(t[0]);break;default:case a.DecoratorTypes.PARAM_CTOR:return E(b)(t[0],t[1],t[2])}}}var P,I;!function(e){e.SINGLETON="singleton",e.REQUEST="request",e.INSTANCE="instance"}(P||(P={})),function(e){e.VALUE="value",e.PROVIDER="provider",e.MODULE="module",e.CONTROLLER="controller",e.INTERCEPTOR="interceptor",e.MIDDLEWARE="middleware"}(I||(I={}));class R{constructor(e,t={}){this.type=I.PROVIDER,this.provide=e,this.useClass=e,Object.assign(this,{...t})}get token(){return this._provide}get provide(){return this._provide}set provide(e){e&&(this._provide=(0,a.getClassOrSymbol)(e),this._tokenStore=this._store=a.Store.from(e))}get useClass(){return this._useClass}set useClass(e){(0,a.isClass)(e)&&(this._useClass=(0,a.classOf)(e),this._store=a.Store.from(e),this.hooks=(0,a.methodsOf)(this._useClass).reduce(((e,{propertyKey:t})=>String(t).startsWith("$")?{...e,[t]:(e,...r)=>e[t](...r)}:e),{}))}get className(){return this.name}get name(){return(0,a.nameOf)(this.provide)}get store(){return this._store}get path(){return this.store.get("path","/")}set path(e){this.store.set("path",e)}get scope(){return this.isAsync()?P.SINGLETON:this.get("scope")}set scope(e){this.store.set("scope",e)}get configuration(){return this.get("configuration")}set configuration(e){this.store.set("configuration",e)}get children(){return this.store.get("childrenControllers",[])}set children(e){this.store.set("childrenControllers",e)}get(e){return this.store.get(e)||this._tokenStore.get(e)}isAsync(){return!!this.useAsyncFactory}clone(){return new((0,a.classOf)(this))(this._provide,this)}hasChildren(){return!!this.children.length}hasParent(){return!!this.store.get("parentController")}toString(){return["Token",this.name,this.useClass&&(0,a.nameOf)(this.useClass),this.useFactory&&"Factory",this.useValue&&"Value",this.useAsyncFactory&&"AsyncFactory"].filter(Boolean).join(":")}}class S extends R{constructor(e,t={}){super(e,t),this.type=I.CONTROLLER}get middlewares(){return Object.assign({use:[],useAfter:[],useBefore:[]},this.store.get("middlewares",{}))}set middlewares(e){const t=this.middlewares;Object.keys(e).forEach((r=>{((e,t,r)=>{t[e]=t[e].concat(r[e])})(r,t,e)})),this.store.set("middlewares",t)}}class C extends Map{#e=new Map;get(e){return super.get((0,a.getClassOrSymbol)(e))}has(e){return super.has((0,a.getClassOrSymbol)(e))}set(e,t){return super.set((0,a.getClassOrSymbol)(e),t),this}merge(e,t){const r=this.createIfNotExists(e,t);return Object.keys(t).forEach((e=>{r[e]=t[e]})),this.set(e,r),r}delete(e){return super.delete((0,a.getClassOrSymbol)(e))}createRegistry(e,t,r={}){const s=this.getRegistrySettings(e);return r=Object.assign(s,{...r,model:t}),this.#e.set(e,r),this}onInvoke(e,t,r){const s=this.#e.get(e.type);s?.onInvoke&&s.onInvoke(e,t,r)}getRegistrySettings(e){let t=I.PROVIDER;if("string"==typeof e)t=e;else{const r=this.get(e);r&&(t=r.type)}return this.#e.get(t)||{model:R}}createRegisterFn(e){return(t,r)=>{t=Object.assign({instance:r},t,{type:e}),this.merge(t.provide,t)}}createIfNotExists(e,t){const r=t.type||I.PROVIDER;if(!this.has(e)){const{model:s=R}=this.#e.get(r)||{},o=new s(e,t);this.set(e,o)}return this.get(e)}}const T=new C;function w(e){return T.merge(e.provide,e)}function j(e,t={}){return(r,s={})=>{const o=T.merge(r,{...s,...t,provide:r});return e.reduce(((e,t)=>({...e,[t]:function(e){return o[t]=e,this}})),{factory(e){return o.useFactory=e,this},asyncFactory(e){return o.useAsyncFactory=e,this},value(e){return o.useValue=e,o.type=I.VALUE,this},class(e){return o.useClass=e,this},store:()=>o.store,inspect:()=>o,token:()=>o.token})}}T.createRegistry(I.CONTROLLER,S);const A=["type","scope","path","alias","hooks","deps","resolvers","imports","configuration"],N=j(A),D=j(A,{type:I.INTERCEPTOR}),_=j([...A,"middlewares"],{type:I.CONTROLLER});function M(e={}){return t=>{const r={...e,...e.provide?{useClass:t}:{provide:t}};N(r.provide,r)}}class L extends Map{add(e,t={}){const r=T.get(e)?.clone()||new R(e);return Object.assign(r,t),super.set(e,r)}addProvider(e,t={}){return this.add(e,t)}hasProvider(e){return super.has(e)}setProvider(e,t){return super.set(e,t)}getProvider(e){return super.get(e)}getProviders(e){const t=[].concat(e).map(String);return[...this].reduce(((r,[s,o])=>t.includes(String(o.type))||!e?[...r,o]:r),[])}addProviders(e){e.forEach((e=>{this.hasProvider(e.provide)||this.setProvider(e.provide,e.clone())}))}}const x=e=>e=>(process.env.NO_COLOR,e),F={red:x(),yellow:x(),green:x()};class V extends Error{constructor(e,t){super((0,a.isString)(t)?t:""),this.name="INJECTION_ERROR",this.tokens=[],this.tokens=[e],t&&((0,a.isString)(t)?this.origin={message:t,stack:this.stack}:t.tokens?(this.tokens=this.tokens.concat(t.tokens),this.origin=t.origin):(this.origin=t,this.stack=t.stack));const r=this.origin?"\nOrigin: "+this.origin.message:"",s=this.tokens.map((e=>(0,a.nameOf)(e))).join(" > ");this.message=`Injection failed on ${s}${r}`}static throwInjectorError(e,t,r){throw t&&(0,a.isClass)(e)&&(r.message=function(e,t){let r="";const s=(0,a.getConstructorArgNames)(e).map(((e,s)=>(t.index===s&&(r=e,e=F.red(e)),`${e}: ${(0,a.nameOf)(t.deps[s])}`))).join(", "),o=(0,a.nameOf)(e)+"->constructor("+s+")",n=o.indexOf(r)-5;return"Unable to inject dependency. "+t.message+"\n\n"+o+"\n"+(n>-1?(e=>" ".repeat(e)+F.red("^"+"‾".repeat(r.length-1)))(n):"")}(e,{...t,message:r.message})),new V(e,r)}}function $(e){const t=new L(T.entries());return e&&t.delete(e),t}const U=["mount","imports"];function G(e){return e?(0,a.isArray)(e)?e.filter(a.isClass).map((e=>({token:e}))):Object.keys(e).reduce(((t,r)=>[...t,...[].concat(e[r]).filter(a.isClass).map((e=>({route:r,token:e})))]),[]):[]}function K(e){return e.map((({token:e})=>T.get(e))).filter((e=>e?.type===I.MODULE&&e.configuration)).flatMap((e=>z(e.configuration)))}function z(e){const t=U.flatMap((t=>G(e[t])));return[...K(t),...t].filter((e=>!!e.route))}class B{constructor(e={}){this.default=new Map,this.map=new Map,Object.entries({scopes:{},resolvers:[],imports:[],routes:[],logger:{},...e}).forEach((([e,t])=>{this.default.set(e,t)}))}get version(){return this.get("version")}set version(e){this.map.set("version",e)}get rootDir(){return this.get("rootDir")}set rootDir(e){this.map.set("rootDir",e)}get env(){return this.map.get("env")}set env(e){this.map.set("env",e)}get scopes(){return this.map.get("scopes")}set scopes(e){this.map.set("scopes",e)}get resolvers(){return this.getRaw("resolvers")}set resolvers(e){this.map.set("resolvers",e)}get imports(){return this.get("imports")}set imports(e){this.map.set("imports",e)}get routes(){return this.get("routes")}set routes(e){this.map.set("routes",e)}get logger(){return this.get("logger")}set logger(e){const t={...this.logger,...e};this.map.set("logger",t)}get debug(){return"debug"===this.logger.level}set debug(e){this.logger={...this.logger,level:e?"debug":"info"}}forEach(e,t){return new Set([...Array.from(this.default.keys()),...Array.from(this.map.keys())]).forEach((t=>{e(this.getRaw(t),t,this.map)}),t)}set(e,t){return"string"==typeof e?Reflect.has(this,e)?this[e]=t:this.setRaw(e,t):Object.entries(e).forEach((([e,t])=>{this.set(e,t)})),this}setRaw(e,t){return(0,a.setValue)(this.map,e,t),this}get(e,t){return this.getRaw(e,t)}getRaw(e,t){const r=(0,a.getValue)(this.map,e);return void 0!==r?r:(0,a.getValue)(this.default,e,t)}}var H;let q,J=H=class extends L{#t;constructor(){super(),this.settings=new B,this.logger=console,this.resolvedConfiguration=!1,this.#t=new c,this.hooks=new a.Hooks,this.#t.set(H,this)}get resolvers(){return this.settings.resolvers}get scopes(){return this.settings.scopes||{}}scopeOf(e){return e.scope||this.scopes[String(e.type)]||P.SINGLETON}toArray(){return[...this.#t.values()]}get(e,t={}){const r=this.getInstance(e);if(void 0!==r)return r;if(!this.hasProvider(e))for(const r of this.resolvers){const s=r.get(e,t);if(void 0!==s)return s}}getMany(e,t,r){return this.getProviders(e).map((e=>this.invoke(e.token,t,r)))}has(e){return void 0!==this.#t.get(e)}alias(e,t){return this.#t.set(t,this.#t.get(e)),this}invoke(e,t,r={}){let o=t?t.get(e):void 0;if(void 0!==o)return o;if(e===b)return this.settings;if(o=r.rebuild?void 0:this.getInstance(e),null!=o)return o;if(e===s)return r.useOpts;const n=this.ensureProvider(e),i=t=>{this.#t.set(e,t),n?.alias&&this.alias(e,n.alias)};if(!n||r.rebuild)return o=this.resolve(e,t,r),this.hasProvider(e)&&i(o),o;switch(o=this.resolve(e,t,r),this.scopeOf(n)){case P.SINGLETON:return n.hooks&&!r.rebuild&&this.registerHooks(n,o),n.isAsync()&&(0,a.isPromise)(o)?(i(o),o=o.then((e=>(i(e),e))),o):(i(o),o);case P.REQUEST:return t&&(t.set(e,o),n.hooks&&n.hooks.$onDestroy&&t.hooks.on("$onDestroy",((...e)=>n.hooks.$onDestroy(o,...e)))),o}return o}async loadAsync(){for(const[,e]of this)!this.has(e.token)&&e.isAsync()&&await this.invoke(e.token)}loadSync(){for(const[,e]of this)this.has(e.token)||this.scopeOf(e)!==P.SINGLETON||this.invoke(e.token)}bootstrap(e=$()){return this.addProviders(e),this.resolveConfiguration(),this.resolveImportsProviders(),this}loadModule(e){this.settings.routes=this.settings.routes.concat(z(this.settings));const t=$();return t.delete(e),t.addProvider(e,{type:"server:module",scope:P.SINGLETON}),this.load(t)}async load(e=$()){this.bootstrap(e),await this.loadAsync(),this.loadSync(),await this.emit("$beforeInit"),await this.emit("$onInit")}resolveConfiguration(){if(this.resolvedConfiguration)return;const e=new Map;super.forEach((t=>{t.configuration&&"server:module"!==t.type&&Object.entries(t.configuration).forEach((([t,r])=>{["resolvers","mount","imports"].includes(t)||(r=e.has(t)?(0,a.deepMerge)(e.get(t),r):(0,a.deepClone)(r),e.set(t,r))})),t.resolvers&&(this.settings.resolvers=this.settings.resolvers.concat(t.resolvers))})),e.forEach(((e,t)=>{this.settings.set(t,(0,a.deepMerge)(e,this.settings.get(t)))})),this.resolvedConfiguration=!0}async lazyInvoke(e){let t=this.getInstance(e);return t||(t=await this.invoke(e),(0,a.isFunction)(t?.$onInit)&&await t.$onInit()),t}emit(e,...t){return this.hooks.asyncEmit(e,t)}alter(e,t,...r){return this.hooks.alter(e,t,r)}alterAsync(e,t,...r){return this.hooks.asyncAlter(e,t,r)}async destroy(){await this.emit("$onDestroy")}ensureProvider(e,t=!1){return this.hasProvider(e)||!T.has(e)&&!t||this.addProvider(e),this.getProvider(e)}getInstance(e){return this.#t.get(e)}resolve(t,r=new c,o={}){const n=this.mapInvokeOptions(t,r,o);if(!n)return;const{token:i,deps:u,construct:l,imports:h,provider:p}=n;let d;p&&T.onInvoke(p,r,{...n,injector:this});let g=!1;try{const e=e=>(t,n)=>{if(g={token:t,index:n,deps:u},(0,a.isArray)(t))return this.getMany(t[0],r,o);const i=p?.store?.get(`${s}:${n}`)||o.useOpts;return(0,a.isInheritedFrom)(t,R,1)?p:this.invoke(t,r,{parent:e,useOpts:i})};h.forEach(e());const t=u.map(e(i));g=!1,d=l(t)}catch(e){V.throwInjectorError(i,g,e)}if(void 0===d)throw new V(i,`Unable to create new instance from undefined value. Check your provider declaration for ${(0,a.nameOf)(i)}`);return d&&(0,a.isClass)((0,a.classOf)(d))&&Reflect.defineProperty(d,e,{get:()=>({rebuild:o.rebuild,locals:r})}),d}resolveImportsProviders(){this.settings.imports=this.settings.imports?.filter((e=>(0,a.isObject)(e)&&"token"in e&&e.token!==H)).map((e=>{if((0,a.isObject)(e)&&"token"in e){const{token:t,...r}=e,s=this.ensureProvider(t,!0);if(s){if(s.useValue=void 0,s.useAsyncFactory=void 0,s.useFactory=void 0,"useClass"in r)return void(s.useClass=r.useClass);if("useFactory"in r)return void(s.useFactory=r.useFactory);if("useAsyncFactory"in r)return void(s.useAsyncFactory=r.useAsyncFactory);if("use"in r)return void(s.useValue=r.use)}}return e})).filter(Boolean)}mapInvokeOptions(e,t,r){let o,n,i=r.imports,c=r.deps,u=r.scope;if(!e||e===Object)throw new Error("Given token is undefined. Could mean a circular dependency problem. Try to use @Inject(() => Token) to solve it.");if(this.hasProvider(e)?n=this.getProvider(e):(n=new R(e),this.resolvers.forEach((r=>{const o=r.get(e,t.get(s));void 0!==o&&(n.useFactory=()=>o)}))),u=u||this.scopeOf(n),c=c||n.deps,i=i||n.imports,void 0!==n.useValue)o=()=>(0,a.isFunction)(n.useValue)?n.useValue():n.useValue;else if(n.useFactory)o=e=>n.useFactory(...e);else if(n.useAsyncFactory)o=async e=>(e=await Promise.all(e),n.useAsyncFactory(...e));else{if(!n.useClass)return!1;c=c||O(n.useClass),o=e=>new n.useClass(...e)}return{token:e,scope:u||a.Store.from(e).get("scope")||P.SINGLETON,deps:c||[],imports:i||[],construct:o,provider:n}}registerHooks(e,t){e.hooks&&Object.entries(e.hooks).forEach((([r,s])=>{this.hooks.on(r,((...r)=>s(this.get(e.token)||t,...r)))}))}};function Q(e){return q&&!e?.rebuild||(q=new J,e&&e.logger&&(q.logger=e.logger),e?.settings&&q.settings.set(e.settings)),q}function W(){return!!q}async function Y(){await(q?.destroy()),q=void 0}function X(){return e=>class extends e{constructor(...t){super(...function(e,t){const r=Q(),s=new c,o=O(e),n=[],i=Math.max(o.length,t.length);for(let c=0;c<i;c++)if(void 0!==t[c])n.push(t[c]);else{const t=o[c],i=(0,a.isArray)(t)?r.getMany(t[0],s,{parent:e}):r.invoke(t,s,{parent:e});n.push(i)}return n}(e,t))}}}function Z(e,t){return Q().settings.get(e,t)}function ee(e,t,r,s){const o=Symbol();(0,a.catchError)((()=>Reflect.deleteProperty(e,t))),Reflect.defineProperty(e,t,{get(){if(void 0!==this[o])return this[o];const e=Z(r,s);return this[o]=Object.freeze((0,a.deepClone)(e)),this[o]},set(e){void 0===(Z(r,s)||this[o])&&void 0!==e&&(this[o]=e)},enumerable:!0,configurable:!0})}function te(e,t){return(r,s)=>ee(r,s,e,t)}J=H=function(e,t,r,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(i=(n<3?o(i):n>3?o(t,r,i):o(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i}([M({scope:P.SINGLETON}),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:paramtypes",[])],J);var re,se=o(953);function oe(e){const{children:t=[],path:r,...s}=function(e){return"string"==typeof e||e instanceof RegExp||(0,a.isArrayOrArrayClass)(e)?{path:e}:e}(e);return(0,a.useDecorators)((e=>{_(e,s)}),r&&(0,se.Path)(r),(0,se.Children)(...t))}function ne(e,t){return a.Store.fromMethod(e,t).get(i)}function ie(t,r,s,o){const n=(0,a.classOf)(t),c=Reflect.getOwnPropertyDescriptor(n.prototype,r),u=c.value,l=Symbol();return a.Store.fromMethod(n,r).set(i,o),c.value=function(...n){const i=e=>{if(!e)return u.apply(this,n);throw e},a={target:t,propertyKey:r,args:n,options:o,next:i},c={rebuild:!!this[e]?.rebuild,locals:this[e]?.locals};return this[l]=this[l]||v(s,c),this[l].intercept({...a,options:o},i)},c}function ae(e,t){return(...r)=>{const[s,o]=r;switch((0,a.decoratorTypeOf)(r)){case a.DecoratorTypes.CLASS:(0,a.decorateMethodsOf)(s,ae(e,t));break;case a.DecoratorTypes.METHOD:return ie(s,o,e,t)}}}function ce(){return M({type:I.INTERCEPTOR})}function ue(e,t,{optional:r=!1,packageName:s=t.toString()}={}){return(o,n)=>{let i,c;(0,a.catchError)((()=>Reflect.deleteProperty(o,n))),Reflect.defineProperty(o,n,{async get(){if(!c||!i){const o=await(0,a.importPackage)(s,t,r);if(c=o[e],!c&&!r)throw new Error(`Unable to lazy load the "${e}". The token isn't a valid token provider.`);i=c?await Q().lazyInvoke(c):{}}return i}})}}function le(e,t){return ue(e,t,{optional:!0})}function he(e={}){const{scopes:t,imports:r,resolvers:s,deps:o,scope:n,...i}=e;return(0,a.useDecorators)(b(i),M({type:I.MODULE,scope:P.SINGLETON,imports:r,deps:o,injectable:!1,resolvers:s}))}function pe(e=P.REQUEST){return(0,a.StoreSet)("scope",e)}function de(e,t,r){pe(P.INSTANCE)((0,a.classOf)(e)),E(s)(e,t,r)}function ge(e){return t=>{T.get(e).useClass=t}}function fe(){return M()}function ye(e){return(t,o,n)=>{switch((0,a.decoratorTypeOf)([t,o,n])){case a.DecoratorTypes.PARAM_CTOR:a.Store.from(t).merge(`${s}:${n}`,e);break;case a.DecoratorTypes.PROP:a.Store.from(t,o).set(r,e);break;default:throw new a.UnsupportedDecoratorType(ye,[t,o,n])}}}function ve(e,t,r,s){const o={get:()=>Q().settings.get(r,s),set(e){Q().settings.set(r,e)},enumerable:!0,configurable:!0};(0,a.catchError)((()=>Reflect.deleteProperty(e,t))),(0,a.catchError)((()=>Reflect.defineProperty(e,t,o)))}function me(e,t){return(r,s)=>ve(r,s,e,t)}function Oe(){return Q().settings}function ke(e,t,...r){return Q().hooks.asyncAlter(e,t,r)}function Ee(e,...t){return Q().hooks.asyncEmit(e,t)}function be(e,t,...r){return Q().hooks.alter(e,t,r)}function Pe(e,t){return Object.freeze({get value(){return Q().settings.get(e,t)},set value(t){Q().settings.set(e,t)}})}!function(e){e.METHOD="method",e.PROPERTY="property",e.CONSTANT="constant",e.VALUE="value",e.INTERCEPTOR="interceptor"}(re||(re={}));const Ie=Symbol.for("LOGGER");function Re(e={},t={}){return Object.entries(t).reduce(((e,[t,r])=>({...e,[t]:(e[t]||[]).concat(r)})),e)}function Se(e,t={}){const r=a.Store.from(e).get("configuration")||{};return{...r,...t,mount:Re(r.mount,t.mount)}}w({provide:Ie,deps:[J],useFactory:e=>e.logger})})(),n})()));
|
|
2
2
|
//# sourceMappingURL=di.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.umd.min.js","mappings":"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","sources":["webpack://@tsed/di/webpack/universalModuleDefinition","webpack://@tsed/di/external umd \"@tsed/core\"","webpack://@tsed/di/external umd \"@tsed/schema\"","webpack://@tsed/di/webpack/bootstrap","webpack://@tsed/di/webpack/runtime/define property getters","webpack://@tsed/di/webpack/runtime/hasOwnProperty shorthand","webpack://@tsed/di/webpack/runtime/make namespace object","webpack://@tsed/di/./src/common/constants/constants.ts","webpack://@tsed/di/./src/common/domain/LocalsContainer.ts","webpack://@tsed/di/../../node_modules/tslib/tslib.es6.mjs","webpack://@tsed/di/./src/common/errors/InvalidPropertyTokenError.ts","webpack://@tsed/di/./src/common/fn/localsContainer.ts","webpack://@tsed/di/./src/common/fn/inject.ts","webpack://@tsed/di/./src/common/fn/injectMany.ts","webpack://@tsed/di/./src/common/utils/getConstructorDependencies.ts","webpack://@tsed/di/./src/common/decorators/inject.ts","webpack://@tsed/di/./src/common/decorators/configuration.ts","webpack://@tsed/di/./src/common/domain/ProviderScope.ts","webpack://@tsed/di/./src/common/domain/ProviderType.ts","webpack://@tsed/di/./src/common/domain/Provider.ts","webpack://@tsed/di/./src/common/domain/ControllerProvider.ts","webpack://@tsed/di/./src/common/registries/GlobalProviders.ts","webpack://@tsed/di/./src/common/registries/ProviderRegistry.ts","webpack://@tsed/di/./src/common/fn/injectable.ts","webpack://@tsed/di/./src/common/decorators/injectable.ts","webpack://@tsed/di/./src/common/domain/Container.ts","webpack://@tsed/di/./src/common/utils/colors.ts","webpack://@tsed/di/./src/common/errors/InjectionError.ts","webpack://@tsed/di/./src/common/utils/createContainer.ts","webpack://@tsed/di/./src/common/utils/resolveControllers.ts","webpack://@tsed/di/./src/common/services/DIConfiguration.ts","webpack://@tsed/di/./src/common/services/InjectorService.ts","webpack://@tsed/di/./src/common/fn/injector.ts","webpack://@tsed/di/./src/common/decorators/autoInjectable.ts","webpack://@tsed/di/./src/common/fn/constant.ts","webpack://@tsed/di/./src/common/decorators/constant.ts","webpack://@tsed/di/./src/common/domain/InjectablePropertyType.ts","webpack://@tsed/di/./src/common/decorators/controller.ts","webpack://@tsed/di/./src/common/decorators/intercept.ts","webpack://@tsed/di/./src/common/decorators/interceptor.ts","webpack://@tsed/di/./src/common/decorators/lazyInject.ts","webpack://@tsed/di/./src/common/decorators/module.ts","webpack://@tsed/di/./src/common/decorators/scope.ts","webpack://@tsed/di/./src/common/decorators/opts.ts","webpack://@tsed/di/./src/common/decorators/overrideProvider.ts","webpack://@tsed/di/./src/common/decorators/service.ts","webpack://@tsed/di/./src/common/decorators/useOpts.ts","webpack://@tsed/di/./src/common/decorators/value.ts","webpack://@tsed/di/./src/common/fn/configuration.ts","webpack://@tsed/di/./src/common/fn/events.ts","webpack://@tsed/di/./src/common/fn/refValue.ts","webpack://@tsed/di/./src/common/services/DILogger.ts","webpack://@tsed/di/./src/common/utils/getConfiguration.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@tsed/core\"), require(\"@tsed/schema\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@tsed/core\", \"@tsed/schema\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@tsed/di\"] = factory(require(\"@tsed/core\"), require(\"@tsed/schema\"));\n\telse\n\t\troot[\"@tsed/di\"] = factory(root[\"@tsed/core\"], root[\"@tsed/schema\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__803__, __WEBPACK_EXTERNAL_MODULE__953__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__803__;","module.exports = __WEBPACK_EXTERNAL_MODULE__953__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const DI_INVOKE_OPTIONS = Symbol(\"DI_INVOKE_OPTIONS\");\nexport const DI_INJECTABLE_PROPS = Symbol(\"DI_INJECTABLE_PROPS\");\nexport const DI_USE_OPTIONS = \"DI_USE_OPTIONS\";\nexport const DI_USE_PARAM_OPTIONS = \"DI_USE_PARAM_OPTIONS\";\nexport const DI_INTERCEPTOR_OPTIONS = \"DI_INTERCEPTOR_OPTIONS\";\n","import { Hooks } from \"@tsed/core\";\nexport class LocalsContainer extends Map {\n constructor() {\n super(...arguments);\n this.hooks = new Hooks();\n }\n async destroy() {\n await this.hooks.asyncEmit(\"$onDestroy\");\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { classOf, nameOf } from \"@tsed/core\";\nexport class InvalidPropertyTokenError extends Error {\n constructor(target, propertyKey) {\n super(`Object isn't a valid token. Please check the token set on ${nameOf(classOf(target))}.${propertyKey}.\\n- Check that it is not a circular reference.\\n- Check that the token (class or symbol) exists`);\n this.name = \"INVALID_TOKEN_ERROR\";\n }\n}\n","import { LocalsContainer } from \"../domain/LocalsContainer.js\";\nimport { InjectorService } from \"../services/InjectorService.js\";\nimport { injector } from \"./injector.js\";\nlet globalLocals;\nlet globalInvOpts = {};\nconst stagedLocals = [];\n/**\n * Get the locals container initiated by DITest or .bootstrap() method.\n */\nexport function localsContainer({ providers, rebuild } = {}) {\n if (!globalLocals || providers) {\n globalLocals = new LocalsContainer();\n if (providers) {\n providers.forEach((p) => {\n globalLocals.set(p.token, p.use);\n });\n globalLocals.set(InjectorService, injector());\n }\n if (rebuild) {\n globalInvOpts.rebuild = rebuild;\n }\n }\n return globalLocals;\n}\nexport function invokeOptions() {\n return { ...globalInvOpts };\n}\n/**\n * Reset the locals container.\n */\nexport function detachLocalsContainer() {\n globalLocals && stagedLocals.push(globalLocals);\n globalLocals = undefined;\n globalInvOpts = {};\n}\nexport function cleanAllLocalsContainer() {\n detachLocalsContainer();\n stagedLocals.map((item) => item.clear());\n}\n","import { injector } from \"./injector.js\";\nimport { invokeOptions, localsContainer } from \"./localsContainer.js\";\n/**\n * Inject a provider to another provider.\n *\n * Use this function to inject a custom provider on constructor parameter or property.\n *\n * ```typescript\n * @Injectable()\n * export class MyService {\n * connection = inject(CONNECTION);\n * }\n * ```\n *\n * @param token A token provider or token provider group\n * @param opts\n * @returns {Function}\n * @decorator\n */\nexport function inject(token, opts) {\n return injector().invoke(token, opts?.locals || localsContainer(), {\n ...opts,\n ...invokeOptions()\n });\n}\n","import { injector } from \"./injector.js\";\nimport { localsContainer } from \"./localsContainer.js\";\nexport function injectMany(token, opts) {\n return injector().getMany(token, opts?.locals || localsContainer(), opts);\n}\n","import { Metadata } from \"@tsed/core\";\nexport function getConstructorDependencies(target, propertyKey) {\n return Metadata.getOwn(\"override:ctor:design:paramtypes\", target, propertyKey) || [...Metadata.getParamTypes(target, propertyKey)] || [];\n}\nexport function setConstructorDependencies(target, deps) {\n Metadata.set(\"override:ctor:design:paramtypes\", deps, target);\n}\n","import { catchError, decoratorTypeOf, DecoratorTypes, isPromise, Metadata, Store } from \"@tsed/core\";\nimport { DI_INJECTABLE_PROPS, DI_INVOKE_OPTIONS, DI_USE_OPTIONS } from \"../constants/constants.js\";\nimport { InvalidPropertyTokenError } from \"../errors/InvalidPropertyTokenError.js\";\nimport { inject } from \"../fn/inject.js\";\nimport { injectMany } from \"../fn/injectMany.js\";\nimport { getConstructorDependencies, setConstructorDependencies } from \"../utils/getConstructorDependencies.js\";\nfunction setToken(token, { target, propertyKey, parameterIndex }) {\n const paramTypes = getConstructorDependencies(target, propertyKey);\n const type = paramTypes[parameterIndex];\n paramTypes[parameterIndex] = type === Array ? [token] : token;\n Metadata.setParamTypes(target, propertyKey, paramTypes);\n setConstructorDependencies(target, paramTypes);\n}\nfunction getTokenType(token, target, propertyKey) {\n const useType = token || Metadata.getType(target, propertyKey);\n if (useType === Object) {\n throw new InvalidPropertyTokenError(target, String(propertyKey));\n }\n return useType;\n}\nfunction bindInjectableProperty(target, propertyKey, { token, transform = (o) => o, useOpts }) {\n const symbol = Symbol();\n if (!target[DI_INJECTABLE_PROPS]) {\n Reflect.defineProperty(target, DI_INJECTABLE_PROPS, {\n value: new Set(),\n enumerable: false,\n configurable: false\n });\n }\n target[DI_INJECTABLE_PROPS].add(propertyKey);\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n Reflect.defineProperty(target, propertyKey, {\n get() {\n const useType = getTokenType(token, target, propertyKey);\n const originalType = Metadata.getType(target, propertyKey);\n const invokeOpts = {\n rebuild: !!this[DI_INVOKE_OPTIONS]?.rebuild,\n locals: this[DI_INVOKE_OPTIONS]?.locals,\n useOpts: useOpts || Store.from(target, propertyKey).get(DI_USE_OPTIONS)\n };\n if (this[symbol] === undefined) {\n this[symbol] = originalType === Array ? injectMany(token, invokeOpts) : inject(useType, invokeOpts);\n }\n [].concat(this[symbol]).forEach((instance, index) => {\n if (isPromise(this[symbol])) {\n instance.then((result) => {\n this[symbol][index] = result;\n if (originalType !== Array) {\n this[symbol] = result;\n }\n });\n }\n });\n return transform(this[symbol], { self: this, target, propertyKey });\n }\n });\n}\nexport function Inject(token, opts = {}) {\n opts = typeof opts === \"function\" ? { transform: opts } : opts;\n return (target, propertyKey, index) => {\n const bindingType = decoratorTypeOf([target, propertyKey, index]);\n switch (bindingType) {\n case DecoratorTypes.PARAM_CTOR:\n if (token) {\n setToken(token, { target, propertyKey, parameterIndex: index });\n }\n break;\n case DecoratorTypes.PROP:\n bindInjectableProperty(target, propertyKey, { ...opts, token });\n }\n };\n}\n","import { decoratorTypeOf, DecoratorTypes, StoreSet } from \"@tsed/core\";\nimport { Inject } from \"./inject.js\";\n/**\n * Get or set Configuration on a class.\n *\n * @decorator\n */\nexport function Configuration(configuration = {}) {\n return (...args) => {\n switch (decoratorTypeOf(args)) {\n case DecoratorTypes.CLASS:\n StoreSet(\"configuration\", configuration)(args[0]);\n break;\n default:\n case DecoratorTypes.PARAM_CTOR:\n return Inject(Configuration)(args[0], args[1], args[2]);\n }\n };\n}\n","export var ProviderScope;\n(function (ProviderScope) {\n ProviderScope[\"SINGLETON\"] = \"singleton\";\n ProviderScope[\"REQUEST\"] = \"request\";\n ProviderScope[\"INSTANCE\"] = \"instance\";\n})(ProviderScope || (ProviderScope = {}));\n","export var ProviderType;\n(function (ProviderType) {\n ProviderType[\"VALUE\"] = \"value\";\n ProviderType[\"PROVIDER\"] = \"provider\";\n ProviderType[\"MODULE\"] = \"module\";\n ProviderType[\"CONTROLLER\"] = \"controller\";\n ProviderType[\"INTERCEPTOR\"] = \"interceptor\";\n ProviderType[\"MIDDLEWARE\"] = \"middleware\";\n})(ProviderType || (ProviderType = {}));\n","import { classOf, getClassOrSymbol, isClass, methodsOf, nameOf, Store } from \"@tsed/core\";\nimport { ProviderScope } from \"./ProviderScope.js\";\nimport { ProviderType } from \"./ProviderType.js\";\nexport class Provider {\n constructor(token, options = {}) {\n /**\n * Token group provider to retrieve all provider from the same type\n */\n this.type = ProviderType.PROVIDER;\n this.provide = token;\n this.useClass = token;\n Object.assign(this, {\n ...options\n });\n }\n get token() {\n return this._provide;\n }\n get provide() {\n return this._provide;\n }\n set provide(value) {\n if (value) {\n this._provide = getClassOrSymbol(value);\n this._tokenStore = this._store = Store.from(value);\n }\n }\n get useClass() {\n return this._useClass;\n }\n /**\n * Create a new store if the given value is a class. Otherwise, the value is ignored.\n * @param value\n */\n set useClass(value) {\n if (isClass(value)) {\n this._useClass = classOf(value);\n this._store = Store.from(value);\n this.hooks = methodsOf(this._useClass).reduce((hooks, { propertyKey }) => {\n if (String(propertyKey).startsWith(\"$\")) {\n return {\n ...hooks,\n [propertyKey]: (instance, ...args) => instance[propertyKey](...args)\n };\n }\n return hooks;\n }, {});\n }\n }\n get className() {\n return this.name;\n }\n get name() {\n return nameOf(this.provide);\n }\n get store() {\n return this._store;\n }\n get path() {\n return this.store.get(\"path\", \"/\");\n }\n set path(path) {\n this.store.set(\"path\", path);\n }\n /**\n * Get the scope of the provider.\n *\n * ::: tip Note\n * Async provider is always a SINGLETON\n * :::\n *\n * @returns {boolean}\n */\n get scope() {\n if (this.isAsync()) {\n return ProviderScope.SINGLETON;\n }\n return this.get(\"scope\");\n }\n /**\n * Change the scope value of the provider.\n * @param scope\n */\n set scope(scope) {\n this.store.set(\"scope\", scope);\n }\n get configuration() {\n return this.get(\"configuration\");\n }\n set configuration(configuration) {\n this.store.set(\"configuration\", configuration);\n }\n get children() {\n return this.store.get(\"childrenControllers\", []);\n }\n set children(children) {\n this.store.set(\"childrenControllers\", children);\n }\n get(key) {\n return this.store.get(key) || this._tokenStore.get(key);\n }\n isAsync() {\n return !!this.useAsyncFactory;\n }\n clone() {\n return new (classOf(this))(this._provide, this);\n }\n /**\n *\n * @returns {boolean}\n */\n hasChildren() {\n return !!this.children.length;\n }\n /**\n *\n * @returns {boolean}\n */\n hasParent() {\n return !!this.store.get(\"parentController\");\n }\n toString() {\n return [\n \"Token\",\n this.name,\n this.useClass && nameOf(this.useClass),\n this.useFactory && \"Factory\",\n this.useValue && \"Value\",\n this.useAsyncFactory && \"AsyncFactory\"\n ]\n .filter(Boolean)\n .join(\":\");\n }\n}\n","import { Provider } from \"./Provider.js\";\nimport { ProviderType } from \"./ProviderType.js\";\nexport class ControllerProvider extends Provider {\n constructor(provide, options = {}) {\n super(provide, options);\n this.type = ProviderType.CONTROLLER;\n }\n /**\n *\n * @returns {any[]}\n */\n get middlewares() {\n return Object.assign({\n use: [],\n useAfter: [],\n useBefore: []\n }, this.store.get(\"middlewares\", {}));\n }\n /**\n *\n * @param middlewares\n */\n set middlewares(middlewares) {\n const mdlwrs = this.middlewares;\n const concat = (key, a, b) => (a[key] = a[key].concat(b[key]));\n Object.keys(middlewares).forEach((key) => {\n concat(key, mdlwrs, middlewares);\n });\n this.store.set(\"middlewares\", mdlwrs);\n }\n}\n","import { getClassOrSymbol } from \"@tsed/core\";\nimport { Provider } from \"../domain/Provider.js\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nexport class GlobalProviderRegistry extends Map {\n #settings = new Map();\n /**\n * The get() method returns a specified element from a Map object.\n * @param key Required. The key of the element to return from the Map object.\n * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.\n */\n get(key) {\n return super.get(getClassOrSymbol(key));\n }\n /**\n * The has() method returns a boolean indicating whether an element with the specified key exists or not.\n * @param key\n * @returns {boolean}\n */\n has(key) {\n return super.has(getClassOrSymbol(key));\n }\n /**\n * The set() method adds or updates an element with a specified key and value to a Map object.\n * @param key Required. The key of the element to add to the Map object.\n * @param metadata Required. The value of the element to add to the Map object.\n */\n set(key, metadata) {\n super.set(getClassOrSymbol(key), metadata);\n return this;\n }\n /**\n *\n * @param target\n * @param options\n */\n merge(target, options) {\n const meta = this.createIfNotExists(target, options);\n Object.keys(options).forEach((key) => {\n meta[key] = options[key];\n });\n this.set(target, meta);\n return meta;\n }\n /**\n * The delete() method removes the specified element from a Map object.\n * @param key Required. The key of the element to remove from the Map object.\n * @returns {boolean} Returns true if an element in the Map object existed and has been removed, or false if the element does not exist.\n */\n delete(key) {\n return super.delete(getClassOrSymbol(key));\n }\n createRegistry(type, model, options = {}) {\n const defaultOptions = this.getRegistrySettings(type);\n options = Object.assign(defaultOptions, {\n ...options,\n model\n });\n this.#settings.set(type, options);\n return this;\n }\n onInvoke(provider, locals, options) {\n const settings = this.#settings.get(provider.type);\n if (settings?.onInvoke) {\n settings.onInvoke(provider, locals, options);\n }\n }\n getRegistrySettings(target) {\n let type = ProviderType.PROVIDER;\n if (typeof target === \"string\") {\n type = target;\n }\n else {\n const provider = this.get(target);\n if (provider) {\n type = provider.type;\n }\n }\n return (this.#settings.get(type) || {\n model: Provider\n });\n }\n createRegisterFn(type) {\n return (provider, instance) => {\n provider = Object.assign({ instance }, provider, { type });\n this.merge(provider.provide, provider);\n };\n }\n /**\n *\n * @param key\n * @param options\n */\n createIfNotExists(key, options) {\n const type = options.type || ProviderType.PROVIDER;\n if (!this.has(key)) {\n const { model = Provider } = this.#settings.get(type) || {};\n const item = new model(key, options);\n this.set(key, item);\n }\n return this.get(key);\n }\n}\n/**\n *\n * @type {GlobalProviders}\n */\n// tslint:disable-next-line: variable-name\nexport const GlobalProviders = new GlobalProviderRegistry();\n","import { ControllerProvider } from \"../domain/ControllerProvider.js\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nimport { GlobalProviders } from \"./GlobalProviders.js\";\nGlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider);\n/**\n * Register a provider configuration.\n * @param {ProviderOpts<any>} provider\n */\nexport function registerProvider(provider) {\n return GlobalProviders.merge(provider.provide, provider);\n}\n","import \"../registries/ProviderRegistry.js\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nimport { GlobalProviders } from \"../registries/GlobalProviders.js\";\nexport function providerBuilder(props, baseOpts = {}) {\n return (token, options = {}) => {\n const provider = GlobalProviders.merge(token, {\n ...options,\n ...baseOpts,\n provide: token\n });\n return props.reduce((acc, prop) => {\n return {\n ...acc,\n [prop]: function (value) {\n provider[prop] = value;\n return this;\n }\n };\n }, {\n factory(factory) {\n provider.useFactory = factory;\n return this;\n },\n asyncFactory(asyncFactory) {\n provider.useAsyncFactory = asyncFactory;\n return this;\n },\n value(value) {\n provider.useValue = value;\n provider.type = ProviderType.VALUE;\n return this;\n },\n class(k) {\n provider.useClass = k;\n return this;\n },\n store() {\n return provider.store;\n },\n inspect() {\n return provider;\n },\n token() {\n return provider.token;\n }\n });\n };\n}\nconst Props = [\"type\", \"scope\", \"path\", \"alias\", \"hooks\", \"deps\", \"resolvers\", \"imports\", \"configuration\"];\nexport const injectable = providerBuilder(Props);\nexport const interceptor = providerBuilder(Props, {\n type: ProviderType.INTERCEPTOR\n});\nexport const controller = providerBuilder([...Props, \"middlewares\"], {\n type: ProviderType.CONTROLLER\n});\n","import { injectable } from \"../fn/injectable.js\";\n/**\n * The decorators `@Injectable()` declare a new service can be injected in other service, controller, interceptor, etc.. on there `constructor`.\n * All classes annotated with `@Injectable()` are built one time, excepted if you change the default provider configuration.\n *\n * ::: tip\n * `@Injectable()` use the `reflect-metadata` to collect and inject the built provided to other services.\n * :::\n *\n * ### Options\n *\n * - type (@@ProviderType@@ or `string`): Kind of provider. (Default: `ProviderType.PROVIDER`)\n * - scope (@@ProviderScope@@): Kind of provider. (Default: `ProviderScope.SINGLETON`)\n * - provide (@@TokenProvider@@): An injection token (Note: This option override default metadata generated by Typescript).\n * - deps (`Type<any>`): List of class or provider which will be injected to the constructor (Note: This options override default metadata generated by Typescript).\n *\n * @returns {Function}\n * @decorator\n */\nexport function Injectable(options = {}) {\n return (target) => {\n const opts = {\n ...options,\n ...(options.provide ? { useClass: target } : { provide: target })\n };\n injectable(opts.provide, opts);\n };\n}\n","import { GlobalProviders } from \"../registries/GlobalProviders.js\";\nimport { Provider } from \"./Provider.js\";\nexport class Container extends Map {\n /**\n *\n * @param token\n * @param settings\n */\n add(token, settings = {}) {\n const provider = GlobalProviders.get(token)?.clone() || new Provider(token);\n Object.assign(provider, settings);\n return super.set(token, provider);\n }\n /**\n * Add a provider to the\n * @param token\n * @param settings\n */\n addProvider(token, settings = {}) {\n return this.add(token, settings);\n }\n /**\n *\n * @param token\n */\n hasProvider(token) {\n return super.has(token);\n }\n /**\n * Add a provider to the\n * @param token\n * @param provider\n */\n setProvider(token, provider) {\n return super.set(token, provider);\n }\n /**\n * The getProvider() method returns a specified element from a Map object.\n * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.\n * @param token\n */\n getProvider(token) {\n return super.get(token);\n }\n /**\n * Get all providers registered in the injector container.\n *\n * @param type Filter the list by the given ProviderType.\n * @returns {[TokenProvider , Provider<any>][]}\n */\n getProviders(type) {\n const types = [].concat(type).map(String);\n return [...this].reduce((providers, [_, provider]) => {\n if (types.includes(String(provider.type)) || !type) {\n return [...providers, provider];\n }\n return providers;\n }, []);\n }\n addProviders(container) {\n container.forEach((provider) => {\n if (!this.hasProvider(provider.provide)) {\n this.setProvider(provider.provide, provider.clone());\n }\n });\n }\n}\n","// istanbul ignore next\nconst colorIfAllowed = (colorFn) => (text) => !process.env.NO_COLOR && process.env.NODE_ENV !== \"production\" ? colorFn(text) : text;\nconst red = colorIfAllowed((text) => `\\x1B[31m${text}\\x1B[39m`);\nconst yellow = colorIfAllowed((text) => `\\x1B[33m${text}\\x1B[39m`);\nconst green = colorIfAllowed((text) => `\\x1B[32m${text}\\x1B[39m`);\nexport const colors = { red, yellow, green };\n","import { getConstructorArgNames, isClass, isString, nameOf } from \"@tsed/core\";\nimport { colors } from \"../utils/colors.js\";\nexport class InjectionError extends Error {\n constructor(token, origin) {\n super(isString(origin) ? origin : \"\");\n this.name = \"INJECTION_ERROR\";\n this.tokens = [];\n this.tokens = [token];\n if (origin) {\n if (isString(origin)) {\n this.origin = {\n message: origin,\n stack: this.stack\n };\n }\n else {\n if (origin.tokens) {\n this.tokens = this.tokens.concat(origin.tokens);\n this.origin = origin.origin;\n }\n else {\n this.origin = origin;\n this.stack = origin.stack;\n }\n }\n }\n const originMessage = this.origin ? \"\\nOrigin: \" + this.origin.message : \"\";\n const tokensMessage = this.tokens.map((token) => nameOf(token)).join(\" > \");\n this.message = `Injection failed on ${tokensMessage}${originMessage}`;\n }\n static throwInjectorError(token, currentDependency, error) {\n if (currentDependency && isClass(token)) {\n error.message = printDependencyInjectionError(token, { ...currentDependency, message: error.message });\n }\n throw new InjectionError(token, error);\n }\n}\nfunction printDependencyInjectionError(token, options) {\n let erroredArg = \"\";\n const args = getConstructorArgNames(token)\n .map((arg, index) => {\n if (options.index === index) {\n erroredArg = arg;\n arg = colors.red(arg);\n }\n return `${arg}: ${nameOf(options.deps[index])}`;\n })\n .join(\", \");\n const signature = nameOf(token) + \"->constructor(\" + args + \")\";\n const indexOf = signature.indexOf(erroredArg) - 5;\n const drawline = (indexOf) => \" \".repeat(indexOf) + colors.red(\"^\" + \"‾\".repeat(erroredArg.length - 1));\n return \"Unable to inject dependency. \" + options.message + \"\\n\\n\" + signature + \"\\n\" + (indexOf > -1 ? drawline(indexOf) : \"\");\n}\n","import { Container } from \"../domain/Container.js\";\nimport { GlobalProviders } from \"../registries/GlobalProviders.js\";\nexport function createContainer(rootModule) {\n const container = new Container(GlobalProviders.entries());\n if (rootModule) {\n container.delete(rootModule);\n }\n return container;\n}\n","import { isArray, isClass } from \"@tsed/core\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nimport { GlobalProviders } from \"../registries/GlobalProviders.js\";\nconst lookupProperties = [\"mount\", \"imports\"];\nexport function getTokens(config) {\n if (!config) {\n return [];\n }\n if (isArray(config)) {\n return config.filter(isClass).map((value) => {\n return { token: value };\n });\n }\n return Object.keys(config).reduce((list, route) => {\n return [\n ...list,\n ...[]\n .concat(config[route])\n .filter(isClass)\n .map((token) => ({\n route,\n token\n }))\n ];\n }, []);\n}\nfunction resolveRecursively(providers) {\n return providers\n .map(({ token }) => GlobalProviders.get(token))\n .filter((provider) => provider?.type === ProviderType.MODULE && provider.configuration)\n .flatMap((provider) => resolveControllers(provider.configuration));\n}\n/**\n * Return controllers and is base route according to his configuration in module configuration.\n *\n * @param settings\n */\nexport function resolveControllers(settings) {\n const providers = lookupProperties.flatMap((property) => getTokens(settings[property]));\n return [...resolveRecursively(providers), ...providers].filter((provider) => !!provider.route);\n}\n","import { getValue, proxyDelegation, setValue } from \"@tsed/core\";\nexport class DIConfiguration {\n constructor(initialProps = {}) {\n this.default = new Map();\n this.map = new Map();\n Object.entries({\n scopes: {},\n resolvers: [],\n imports: [],\n routes: [],\n logger: {},\n ...initialProps\n }).forEach(([key, value]) => {\n this.default.set(key, value);\n });\n return proxyDelegation(this, {\n ownKeys(target) {\n return [...target.default.keys(), ...target.map.keys()];\n }\n });\n }\n get version() {\n return this.get(\"version\");\n }\n set version(v) {\n this.map.set(\"version\", v);\n }\n get rootDir() {\n return this.get(\"rootDir\");\n }\n set rootDir(value) {\n this.map.set(\"rootDir\", value);\n }\n get env() {\n return this.map.get(\"env\");\n }\n set env(value) {\n this.map.set(\"env\", value);\n }\n get scopes() {\n return this.map.get(\"scopes\");\n }\n set scopes(value) {\n this.map.set(\"scopes\", value);\n }\n get resolvers() {\n return this.getRaw(\"resolvers\");\n }\n set resolvers(resolvers) {\n this.map.set(\"resolvers\", resolvers);\n }\n get imports() {\n return this.get(\"imports\");\n }\n set imports(imports) {\n this.map.set(\"imports\", imports);\n }\n get routes() {\n return this.get(\"routes\");\n }\n set routes(routes) {\n this.map.set(\"routes\", routes);\n }\n get logger() {\n return this.get(\"logger\");\n }\n set logger(value) {\n const logger = { ...this.logger, ...value };\n this.map.set(\"logger\", logger);\n }\n get debug() {\n return this.logger.level === \"debug\";\n }\n set debug(debug) {\n this.logger = { ...this.logger, level: debug ? \"debug\" : \"info\" };\n }\n /**\n *\n * @param callbackfn\n * @param thisArg\n */\n forEach(callbackfn, thisArg) {\n return new Set([...Array.from(this.default.keys()), ...Array.from(this.map.keys())]).forEach((key) => {\n callbackfn(this.getRaw(key), key, this.map);\n }, thisArg);\n }\n /**\n *\n * @param propertyKey\n * @param value\n */\n set(propertyKey, value) {\n if (typeof propertyKey === \"string\") {\n if (Reflect.has(this, propertyKey)) {\n // @ts-ignore\n this[propertyKey] = value;\n }\n else {\n this.setRaw(propertyKey, value);\n }\n }\n else {\n Object.entries(propertyKey).forEach(([key, value]) => {\n this.set(key, value);\n });\n }\n return this;\n }\n setRaw(propertyKey, value) {\n setValue(this.map, propertyKey, value);\n return this;\n }\n /**\n *\n * @param propertyKey\n * @param defaultValue\n * @returns {undefined|any}\n */\n get(propertyKey, defaultValue) {\n return this.getRaw(propertyKey, defaultValue);\n }\n /**\n *\n * @param value\n * @returns {any}\n */\n resolve(value) {\n return value.replace(\"${rootDir}\", this.rootDir);\n }\n getRaw(propertyKey, defaultValue) {\n const value = getValue(this.map, propertyKey);\n if (value !== undefined) {\n return value;\n }\n return getValue(this.default, propertyKey, defaultValue);\n }\n}\n","var InjectorService_1;\nimport { __decorate, __metadata } from \"tslib\";\nimport { classOf, deepClone, deepMerge, Hooks, isArray, isClass, isFunction, isInheritedFrom, isObject, isPromise, nameOf, Store } from \"@tsed/core\";\nimport { DI_INVOKE_OPTIONS, DI_USE_PARAM_OPTIONS } from \"../constants/constants.js\";\nimport { Configuration } from \"../decorators/configuration.js\";\nimport { Injectable } from \"../decorators/injectable.js\";\nimport { Container } from \"../domain/Container.js\";\nimport { LocalsContainer } from \"../domain/LocalsContainer.js\";\nimport { Provider } from \"../domain/Provider.js\";\nimport { ProviderScope } from \"../domain/ProviderScope.js\";\nimport { InjectionError } from \"../errors/InjectionError.js\";\nimport { GlobalProviders } from \"../registries/GlobalProviders.js\";\nimport { createContainer } from \"../utils/createContainer.js\";\nimport { getConstructorDependencies } from \"../utils/getConstructorDependencies.js\";\nimport { resolveControllers } from \"../utils/resolveControllers.js\";\nimport { DIConfiguration } from \"./DIConfiguration.js\";\n/**\n * This service contain all services collected by `@Service` or services declared manually with `InjectorService.factory()` or `InjectorService.service()`.\n *\n * ### Example:\n *\n * ```typescript\n * import {InjectorService} from \"@tsed/di\";\n *\n * // Import the services (all services are decorated with @Service()\";\n * import MyService1 from \"./services/service1.js\";\n * import MyService2 from \"./services/service2.js\";\n * import MyService3 from \"./services/service3.js\";\n *\n * // When all services are imported, you can load InjectorService.\n * const injector = new InjectorService()\n *\n * await injector.load();\n *\n * const myService1 = injector.get<MyService1>(MyServcice1);\n * ```\n */\nlet InjectorService = InjectorService_1 = class InjectorService extends Container {\n #cache;\n constructor() {\n super();\n this.settings = new DIConfiguration();\n this.logger = console;\n this.resolvedConfiguration = false;\n this.#cache = new LocalsContainer();\n this.hooks = new Hooks();\n this.#cache.set(InjectorService_1, this);\n }\n get resolvers() {\n return this.settings.resolvers;\n }\n get scopes() {\n return this.settings.scopes || {};\n }\n /**\n * Retrieve default scope for a given provider.\n * @param provider\n */\n scopeOf(provider) {\n return provider.scope || this.scopes[String(provider.type)] || ProviderScope.SINGLETON;\n }\n /**\n * Return a list of instance build by the injector.\n */\n toArray() {\n return [...this.#cache.values()];\n }\n /**\n * Get a service or factory already constructed from his symbol or class.\n *\n * #### Example\n *\n * ```typescript\n * import {InjectorService} from \"@tsed/di\";\n * import MyService from \"./services.js\";\n *\n * class OtherService {\n * constructor(injectorService: InjectorService) {\n * const myService = injectorService.get<MyService>(MyService);\n * }\n * }\n * ```\n *\n * @param token The class or symbol registered in InjectorService.\n * @param options\n */\n get(token, options = {}) {\n const instance = this.getInstance(token);\n if (instance !== undefined) {\n return instance;\n }\n if (!this.hasProvider(token)) {\n for (const resolver of this.resolvers) {\n const result = resolver.get(token, options);\n if (result !== undefined) {\n return result;\n }\n }\n }\n }\n /**\n * Return all instance of the same provider type\n */\n getMany(type, locals, options) {\n return this.getProviders(type).map((provider) => {\n return this.invoke(provider.token, locals, options);\n });\n }\n /**\n * The has() method returns a boolean indicating whether an element with the specified key exists or not.\n */\n has(token) {\n return this.#cache.get(token) !== undefined;\n }\n /**\n * Declare an alias for a given token.\n */\n alias(token, alias) {\n this.#cache.set(alias, this.#cache.get(token));\n return this;\n }\n /**\n * Invoke the class and inject all services that required by the class constructor.\n *\n * #### Example\n *\n * ```typescript\n * import {InjectorService} from \"@tsed/di\";\n * import MyService from \"./services.js\";\n *\n * class OtherService {\n * constructor(injectorService: InjectorService) {\n * const myService = injectorService.invoke<MyService>(MyService);\n * }\n * }\n * ```\n *\n * @param token The injectable class to invoke. Class parameters are injected according constructor signature.\n * @param locals Optional object. If preset then any argument Class are read from this object first, before the `InjectorService` is consulted.\n * @param options\n * @returns {Type} The class constructed.\n */\n invoke(token, locals, options = {}) {\n let instance = locals ? locals.get(token) : undefined;\n if (instance !== undefined) {\n return instance;\n }\n if (token === Configuration) {\n return this.settings;\n }\n instance = !options.rebuild ? this.getInstance(token) : undefined;\n if (instance != undefined) {\n return instance;\n }\n if (token === DI_USE_PARAM_OPTIONS) {\n return options.useOpts;\n }\n const provider = this.ensureProvider(token);\n const set = (instance) => {\n this.#cache.set(token, instance);\n provider?.alias && this.alias(token, provider.alias);\n };\n if (!provider || options.rebuild) {\n instance = this.resolve(token, locals, options);\n if (this.hasProvider(token)) {\n set(instance);\n }\n return instance;\n }\n instance = this.resolve(token, locals, options);\n switch (this.scopeOf(provider)) {\n case ProviderScope.SINGLETON:\n if (provider.hooks && !options.rebuild) {\n this.registerHooks(provider, instance);\n }\n if (!provider.isAsync() || !isPromise(instance)) {\n set(instance);\n // locals?.delete(DI_USE_PARAM_OPTIONS);\n return instance;\n }\n // store promise to lock token in cache\n set(instance);\n instance = instance.then((instance) => {\n set(instance);\n return instance;\n });\n // locals?.delete(DI_USE_PARAM_OPTIONS);\n return instance;\n case ProviderScope.REQUEST:\n if (locals) {\n locals.set(token, instance);\n if (provider.hooks && provider.hooks.$onDestroy) {\n locals.hooks.on(\"$onDestroy\", (...args) => provider.hooks.$onDestroy(instance, ...args));\n }\n }\n // locals?.delete(DI_USE_PARAM_OPTIONS);\n return instance;\n }\n return instance;\n }\n /**\n * Build only providers which are asynchronous.\n */\n async loadAsync() {\n for (const [, provider] of this) {\n if (!this.has(provider.token) && provider.isAsync()) {\n await this.invoke(provider.token);\n }\n }\n }\n /**\n * Build only providers which are synchronous.\n */\n loadSync() {\n for (const [, provider] of this) {\n if (!this.has(provider.token) && this.scopeOf(provider) === ProviderScope.SINGLETON) {\n this.invoke(provider.token);\n }\n }\n }\n /**\n * Boostrap injector from container and resolve configuration.\n *\n * @param container\n */\n bootstrap(container = createContainer()) {\n // Clone all providers in the container\n this.addProviders(container);\n // Resolve all configuration\n this.resolveConfiguration();\n // allow mocking or changing provider instance before loading injector\n this.resolveImportsProviders();\n return this;\n }\n /**\n * Load injector from a given module\n * @param rootModule\n */\n loadModule(rootModule) {\n this.settings.routes = this.settings.routes.concat(resolveControllers(this.settings));\n const container = createContainer();\n container.delete(rootModule);\n container.addProvider(rootModule, {\n type: \"server:module\",\n scope: ProviderScope.SINGLETON\n });\n return this.load(container);\n }\n /**\n * Build all providers from given container (or GlobalProviders) and emit `$onInit` event.\n *\n * @param container\n */\n async load(container = createContainer()) {\n this.bootstrap(container);\n // build async and sync provider\n await this.loadAsync();\n // load sync provider\n this.loadSync();\n await this.emit(\"$beforeInit\");\n await this.emit(\"$onInit\");\n }\n /**\n * Load all configurations registered on providers\n */\n resolveConfiguration() {\n if (this.resolvedConfiguration) {\n return;\n }\n const mergedConfiguration = new Map();\n super.forEach((provider) => {\n if (provider.configuration && provider.type !== \"server:module\") {\n Object.entries(provider.configuration).forEach(([key, value]) => {\n if (![\"resolvers\", \"mount\", \"imports\"].includes(key)) {\n value = mergedConfiguration.has(key) ? deepMerge(mergedConfiguration.get(key), value) : deepClone(value);\n mergedConfiguration.set(key, value);\n }\n });\n }\n if (provider.resolvers) {\n this.settings.resolvers = this.settings.resolvers.concat(provider.resolvers);\n }\n });\n mergedConfiguration.forEach((value, key) => {\n this.settings.set(key, deepMerge(value, this.settings.get(key)));\n });\n this.resolvedConfiguration = true;\n }\n async lazyInvoke(token) {\n let instance = this.getInstance(token);\n if (!instance) {\n instance = await this.invoke(token);\n if (isFunction(instance?.$onInit)) {\n await instance.$onInit();\n }\n }\n return instance;\n }\n /**\n * Emit an event to all service. See service [lifecycle hooks](/docs/services.md#lifecycle-hooks).\n * @param eventName The event name to emit at all services.\n * @param args List of the parameters to give to each service.\n * @returns A list of promises.\n */\n emit(eventName, ...args) {\n return this.hooks.asyncEmit(eventName, args);\n }\n /**\n * Alter value attached to an event.\n * @param eventName\n * @param value\n * @param args\n */\n alter(eventName, value, ...args) {\n return this.hooks.alter(eventName, value, args);\n }\n /**\n * Alter value attached to an event asynchronously.\n * @param eventName\n * @param value\n * @param args\n */\n alterAsync(eventName, value, ...args) {\n return this.hooks.asyncAlter(eventName, value, args);\n }\n /**\n * Destroy the injector and all services.\n */\n async destroy() {\n await this.emit(\"$onDestroy\");\n }\n ensureProvider(token, force = false) {\n if (!this.hasProvider(token) && (GlobalProviders.has(token) || force)) {\n this.addProvider(token);\n }\n return this.getProvider(token);\n }\n getInstance(token) {\n return this.#cache.get(token);\n }\n /**\n * Invoke a class method and inject service.\n *\n * #### IInjectableMethod options\n *\n * * **target**: Optional. The class instance.\n * * **methodName**: `string` Optional. The method name.\n * * **designParamTypes**: `any[]` Optional. List of injectable types.\n * * **locals**: `Map<Function, any>` Optional. If preset then any argument Class are read from this object first, before the `InjectorService` is consulted.\n *\n * #### Example\n *\n * @param target\n * @param locals\n * @param options\n * @private\n */\n resolve(target, locals = new LocalsContainer(), options = {}) {\n const resolvedOpts = this.mapInvokeOptions(target, locals, options);\n if (!resolvedOpts) {\n return undefined;\n }\n const { token, deps, construct, imports, provider } = resolvedOpts;\n if (provider) {\n GlobalProviders.onInvoke(provider, locals, { ...resolvedOpts, injector: this });\n }\n let instance;\n let currentDependency = false;\n try {\n const invokeDependency = (parent) => (token, index) => {\n currentDependency = { token, index, deps };\n if (isArray(token)) {\n return this.getMany(token[0], locals, options);\n }\n const useOpts = provider?.store?.get(`${DI_USE_PARAM_OPTIONS}:${index}`) || options.useOpts;\n return isInheritedFrom(token, Provider, 1) ? provider : this.invoke(token, locals, { parent, useOpts });\n };\n // Invoke manually imported providers\n imports.forEach(invokeDependency());\n // Inject dependencies\n const services = deps.map(invokeDependency(token));\n currentDependency = false;\n instance = construct(services);\n }\n catch (error) {\n InjectionError.throwInjectorError(token, currentDependency, error);\n }\n if (instance === undefined) {\n throw new InjectionError(token, `Unable to create new instance from undefined value. Check your provider declaration for ${nameOf(token)}`);\n }\n if (instance && isClass(classOf(instance))) {\n Reflect.defineProperty(instance, DI_INVOKE_OPTIONS, {\n get: () => ({ rebuild: options.rebuild, locals })\n });\n }\n return instance;\n }\n resolveImportsProviders() {\n this.settings.imports = this.settings.imports\n ?.filter((meta) => isObject(meta) && \"token\" in meta && meta.token !== InjectorService_1)\n .map((meta) => {\n if (isObject(meta) && \"token\" in meta) {\n const { token, ...props } = meta;\n const provider = this.ensureProvider(token, true);\n if (provider) {\n provider.useValue = undefined;\n provider.useAsyncFactory = undefined;\n provider.useFactory = undefined;\n if (\"useClass\" in props) {\n provider.useClass = props.useClass;\n return;\n }\n if (\"useFactory\" in props) {\n provider.useFactory = props.useFactory;\n return;\n }\n if (\"useAsyncFactory\" in props) {\n provider.useAsyncFactory = props.useAsyncFactory;\n return;\n }\n if (\"use\" in props) {\n provider.useValue = props.use;\n return;\n }\n }\n }\n return meta;\n })\n .filter(Boolean);\n }\n /**\n * Create options to invoke a provider or class.\n * @param token\n * @param locals\n * @param options\n */\n mapInvokeOptions(token, locals, options) {\n let imports = options.imports;\n let deps = options.deps;\n let scope = options.scope;\n let construct;\n if (!token || token === Object) {\n throw new Error(\"Given token is undefined. Could mean a circular dependency problem. Try to use @Inject(() => Token) to solve it.\");\n }\n let provider;\n if (!this.hasProvider(token)) {\n provider = new Provider(token);\n this.resolvers.forEach((resolver) => {\n const result = resolver.get(token, locals.get(DI_USE_PARAM_OPTIONS));\n if (result !== undefined) {\n provider.useFactory = () => result;\n }\n });\n }\n else {\n provider = this.getProvider(token);\n }\n scope = scope || this.scopeOf(provider);\n deps = deps || provider.deps;\n imports = imports || provider.imports;\n if (provider.useValue !== undefined) {\n construct = () => (isFunction(provider.useValue) ? provider.useValue() : provider.useValue);\n }\n else if (provider.useFactory) {\n construct = (deps) => provider.useFactory(...deps);\n }\n else if (provider.useAsyncFactory) {\n construct = async (deps) => {\n deps = await Promise.all(deps);\n return provider.useAsyncFactory(...deps);\n };\n }\n else if (provider.useClass) {\n // useClass\n deps = deps || getConstructorDependencies(provider.useClass);\n construct = (deps) => new provider.useClass(...deps);\n }\n else {\n return false;\n }\n return {\n token,\n scope: scope || Store.from(token).get(\"scope\") || ProviderScope.SINGLETON,\n deps: deps || [],\n imports: imports || [],\n construct,\n provider\n };\n }\n registerHooks(provider, instance) {\n if (provider.hooks) {\n Object.entries(provider.hooks).forEach(([event, cb]) => {\n const callback = (...args) => cb(this.get(provider.token) || instance, ...args);\n this.hooks.on(event, callback);\n });\n }\n }\n};\nInjectorService = InjectorService_1 = __decorate([\n Injectable({\n scope: ProviderScope.SINGLETON\n }),\n __metadata(\"design:paramtypes\", [])\n], InjectorService);\nexport { InjectorService };\n","import { InjectorService } from \"../services/InjectorService.js\";\nlet globalInjector;\n/**\n * Create or return the existing injector service.\n *\n * Example:\n *\n * ```typescript\n * import {injector, Injectable} from \"@tsed/di\";\n *\n * @Injectable()\n * class MyService {\n * injector = injector();\n * }\n * ```\n */\nexport function injector(opts) {\n if (!globalInjector || opts?.rebuild) {\n globalInjector = new InjectorService();\n if (opts && opts.logger) {\n globalInjector.logger = opts.logger;\n }\n if (opts?.settings) {\n globalInjector.settings.set(opts.settings);\n }\n }\n return globalInjector;\n}\nexport function hasInjector() {\n return !!globalInjector;\n}\nexport async function destroyInjector() {\n await globalInjector?.destroy();\n globalInjector = undefined;\n}\n","import { isArray } from \"@tsed/core\";\nimport { LocalsContainer } from \"../domain/LocalsContainer.js\";\nimport { injector } from \"../fn/injector.js\";\nimport { getConstructorDependencies } from \"../utils/getConstructorDependencies.js\";\nfunction resolveAutoInjectableArgs(token, args) {\n const inj = injector();\n const locals = new LocalsContainer();\n const deps = getConstructorDependencies(token);\n const list = [];\n const length = Math.max(deps.length, args.length);\n for (let i = 0; i < length; i++) {\n if (args[i] !== undefined) {\n list.push(args[i]);\n }\n else {\n const value = deps[i];\n const instance = isArray(value) ? inj.getMany(value[0], locals, { parent: token }) : inj.invoke(value, locals, { parent: token });\n list.push(instance);\n }\n }\n return list;\n}\nexport function AutoInjectable() {\n return (constr) => {\n return class AutoInjectable extends constr {\n constructor(...args) {\n super(...resolveAutoInjectableArgs(constr, args));\n }\n };\n };\n}\n","import { injector as $injector } from \"./injector.js\";\nexport function constant(expression, defaultValue) {\n return $injector().settings.get(expression, defaultValue);\n}\n","import { catchError, deepClone } from \"@tsed/core\";\nimport { constant } from \"../fn/constant.js\";\nexport function bindConstant(target, propertyKey, expression, defaultValue) {\n const symbol = Symbol();\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n Reflect.defineProperty(target, propertyKey, {\n get() {\n if (this[symbol] !== undefined) {\n return this[symbol];\n }\n const value = constant(expression, defaultValue);\n this[symbol] = Object.freeze(deepClone(value));\n return this[symbol];\n },\n set(value) {\n const bean = constant(expression, defaultValue) || this[symbol];\n if (bean === undefined && value !== undefined) {\n this[symbol] = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n}\n/**\n * Return value from Configuration.\n *\n * ## Example\n *\n * ```typescript\n * import {Env} from \"@tsed/core\";\n * import {Constant, Value} from \"@tsed/di\";\n *\n * export class MyClass {\n *\n * @Constant(\"env\")\n * env: Env;\n *\n * @Value(\"swagger.path\")\n * swaggerPath: string;\n *\n * @Value(\"swagger.path\", \"defaultValue\")\n * swaggerPath: string;\n *\n * constructor() {\n * console.log(this.swaggerPath) // undefined. Not available on constructor\n * }\n *\n * $onInit() {\n * console.log(this.swaggerPath) // something\n * }\n * }\n * ```\n *\n * @param {string} expression\n * @param defaultValue\n * @returns {(targetClass: any, attributeName: string) => any}\n * @decorator\n */\nexport function Constant(expression, defaultValue) {\n return (target, propertyKey) => {\n return bindConstant(target, propertyKey, expression, defaultValue);\n };\n}\n","export var InjectablePropertyType;\n(function (InjectablePropertyType) {\n InjectablePropertyType[\"METHOD\"] = \"method\";\n InjectablePropertyType[\"PROPERTY\"] = \"property\";\n InjectablePropertyType[\"CONSTANT\"] = \"constant\";\n InjectablePropertyType[\"VALUE\"] = \"value\";\n InjectablePropertyType[\"INTERCEPTOR\"] = \"interceptor\";\n})(InjectablePropertyType || (InjectablePropertyType = {}));\n","import { isArrayOrArrayClass, useDecorators } from \"@tsed/core\";\nimport { Children, Path } from \"@tsed/schema\";\nimport { controller } from \"../fn/injectable.js\";\nfunction mapOptions(options) {\n if (typeof options === \"string\" || options instanceof RegExp || isArrayOrArrayClass(options)) {\n return {\n path: options\n };\n }\n return options;\n}\n/**\n * Declare a new controller with his Rest path. His methods annotated will be collected to build the routing list.\n * This routing listing will be built with the `express.Router` object.\n *\n * ::: tip\n * See [Controllers](/docs/controllers.md) section for more details\n * :::\n *\n * ```typescript\n * @Controller(\"/calendars\")\n * export provide CalendarCtrl {\n *\n * @Get(\"/:id\")\n * public get(\n * @Req() request: Req,\n * @Res() response: Res,\n * @Next() next: Next\n * ): void {\n *\n * }\n * }\n * ```\n *\n * @param options\n * @controller\n * @decorator\n * @classDecorator\n */\nexport function Controller(options) {\n const { children = [], path, ...opts } = mapOptions(options);\n return useDecorators((target) => {\n controller(target, opts);\n }, path && Path(path), Children(...children));\n}\n","import { classOf, decorateMethodsOf, decoratorTypeOf, DecoratorTypes, Store } from \"@tsed/core\";\nimport { DI_INTERCEPTOR_OPTIONS, DI_INVOKE_OPTIONS } from \"../constants/constants.js\";\nimport { inject } from \"../fn/inject.js\";\nexport function getInterceptorOptions(target, propertyKey) {\n return Store.fromMethod(target, propertyKey).get(DI_INTERCEPTOR_OPTIONS);\n}\nexport function bindIntercept(target, propertyKey, token, options) {\n const klass = classOf(target);\n const descriptor = Reflect.getOwnPropertyDescriptor(klass.prototype, propertyKey);\n const originalMethod = descriptor.value;\n const symbol = Symbol();\n Store.fromMethod(klass, propertyKey).set(DI_INTERCEPTOR_OPTIONS, options);\n descriptor.value = function (...args) {\n const next = (err) => {\n if (!err) {\n return originalMethod.apply(this, args);\n }\n throw err;\n };\n const context = {\n target,\n propertyKey,\n args,\n options,\n next\n };\n const invokeOpts = {\n rebuild: !!this[DI_INVOKE_OPTIONS]?.rebuild,\n locals: this[DI_INVOKE_OPTIONS]?.locals\n };\n this[symbol] = this[symbol] || inject(token, invokeOpts);\n return this[symbol].intercept({\n ...context,\n options\n }, next);\n };\n return descriptor;\n}\n/**\n * Attaches interceptor to method call and executes the before and after methods\n *\n * @param interceptor\n * @param options\n * @decorator\n */\nexport function Intercept(interceptor, options) {\n return (...args) => {\n const [target, propertyKey] = args;\n const type = decoratorTypeOf(args);\n switch (type) {\n case DecoratorTypes.CLASS:\n decorateMethodsOf(target, Intercept(interceptor, options));\n break;\n case DecoratorTypes.METHOD:\n return bindIntercept(target, propertyKey, interceptor, options);\n }\n };\n}\n","import { ProviderType } from \"../domain/ProviderType.js\";\nimport { Injectable } from \"./injectable.js\";\n/**\n * The decorators `@Interceptor()` declare a new service can be injected in other service or controller on there `constructor`.\n * All services annotated with `@Interceptor()` are constructed one time.\n *\n * > `@Service()` use the `reflect-metadata` to collect and inject service on controllers or other services.\n *\n * @returns {Function}\n * @decorator\n */\nexport function Interceptor() {\n return Injectable({\n type: ProviderType.INTERCEPTOR\n });\n}\n","import { catchError, importPackage } from \"@tsed/core\";\nimport { injector } from \"../fn/injector.js\";\n/**\n * Lazy load a provider from his package and invoke only when the provider is used\n *\n * ```typescript\n * import type {PlatformException} from \"@tsed/platform-exceptions\";\n *\n * @Injectable()\n * export class MyService {\n * @LazyInject(\"PlatformException\", () => import(\"@tsed/platform-exceptions\"))\n * exceptions: Promise<PlatformException>;\n * }\n * ```\n *\n * @param key\n * @param packageName\n * @param resolver\n * @param optional\n * @returns {Function}\n * @decorator\n */\nexport function LazyInject(key, resolver, { optional = false, packageName = resolver.toString() } = {}) {\n return (target, propertyKey) => {\n let bean, token;\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n Reflect.defineProperty(target, propertyKey, {\n async get() {\n if (!token || !bean) {\n const exports = await importPackage(packageName, resolver, optional);\n token = exports[key];\n if (!token) {\n if (!optional) {\n throw new Error(`Unable to lazy load the \"${key}\". The token isn\\'t a valid token provider.`);\n }\n }\n bean = token ? await injector().lazyInvoke(token) : {};\n }\n return bean;\n }\n });\n };\n}\n/**\n * Optionally Lazy load a provider from his package and invoke only when the provider is used\n *\n * ```typescript\n * import type {PlatformException} from \"@tsed/platform-exceptions\";\n *\n * @Injectable()\n * export class MyService {\n * @OptionalLazyInject(\"@tsed/platform-exceptions\")\n * exceptions: Promise<PlatformException>;\n * }\n * ```\n *\n * @param key\n * @param resolver\n * @returns {Function}\n * @decorator\n */\nexport function OptionalLazyInject(key, resolver) {\n return LazyInject(key, resolver, { optional: true });\n}\n","import { useDecorators } from \"@tsed/core\";\nimport { ProviderScope } from \"../domain/ProviderScope.js\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nimport { Configuration } from \"./configuration.js\";\nimport { Injectable } from \"./injectable.js\";\n/**\n * Declare a new Ts.ED module\n *\n * ## Options\n * - imports: List of Provider which must be built by injector before invoking the module\n * - resolvers: List of external DI must be used to resolve unknown provider\n * - deps: List of provider must be injected to the module constructor (explicit declaration)\n *\n * @param options\n * @decorator\n */\nexport function Module(options = {}) {\n const { scopes, imports, resolvers, deps, scope, ...configuration } = options;\n return useDecorators(Configuration(configuration), Injectable({\n type: ProviderType.MODULE,\n scope: ProviderScope.SINGLETON,\n imports,\n deps,\n injectable: false,\n resolvers\n }));\n}\n","import { StoreSet } from \"@tsed/core\";\nimport { ProviderScope } from \"../domain/ProviderScope.js\";\n/**\n *\n * @param {\"request\" | \"singleton\" | ProviderScope} scope\n * @returns {Function}\n * @constructor\n */\nexport function Scope(scope = ProviderScope.REQUEST) {\n return StoreSet(\"scope\", scope);\n}\n","import { classOf } from \"@tsed/core\";\nimport { DI_USE_PARAM_OPTIONS } from \"../constants/constants.js\";\nimport { ProviderScope } from \"../domain/ProviderScope.js\";\nimport { Inject } from \"./inject.js\";\nimport { Scope } from \"./scope.js\";\n/**\n * Get instance options. This options depending on his invocation context.\n *\n * ```typescript\n * import {Injectable, Opts, UseOpts} from \"@tsed/di\";\n *\n * @Injectable()\n * class MyConfigurableService {\n * source: string;\n * constructor(@Opts options: any = {}) {\n * console.log(\"Hello \", options.source); // log: Hello Service1 then Hello Service2\n *\n * this.source = options.source;\n * }\n * }\n *\n * @Injectable()\n * class MyService1 {\n * constructor(@UseOpts({source: 'Service1'}) service: MyConfigurableService) {\n * console.log(service.source) // log: Service1\n * }\n * }\n *\n * @Injectable()\n * class MyService2 {\n * constructor(@UseOpts({source: 'Service2'}) service: MyConfigurableService) {\n * console.log(service.source) // log: Service2\n * }\n * }\n * ```\n *\n * ::: warning\n * Using @@Opts@@ decorator on a constructor parameter change the Scope of the provider to `ProviderScope.INSTANCE`.\n * :::\n *\n * @param target\n * @param propertyKey\n * @param index\n * @decorator\n */\nexport function Opts(target, propertyKey, index) {\n Scope(ProviderScope.INSTANCE)(classOf(target));\n Inject(DI_USE_PARAM_OPTIONS)(target, propertyKey, index);\n}\n","import { GlobalProviders } from \"../registries/GlobalProviders.js\";\n/**\n * Override a provider which is already registered in ProviderRegistry.\n * @returns {Function}\n * @decorators\n * @param originalProvider\n */\nexport function OverrideProvider(originalProvider) {\n return (target) => {\n GlobalProviders.get(originalProvider).useClass = target;\n };\n}\n","import { Injectable } from \"./injectable.js\";\n/**\n * The decorators `@Service()` declare a new service can be injected in other service or controller on there `constructor`.\n * All services annotated with `@Service()` are constructed one time.\n *\n * > `@Service()` use the `reflect-metadata` to collect and inject service on controllers or other services.\n *\n * @returns {Function}\n * @decorator\n */\nexport function Service() {\n return Injectable();\n}\n","import { decoratorTypeOf, DecoratorTypes, Store, UnsupportedDecoratorType } from \"@tsed/core\";\nimport { DI_USE_OPTIONS, DI_USE_PARAM_OPTIONS } from \"../constants/constants.js\";\n/**\n * Add options to invoke the Service.\n *\n * ```typescript\n * import {Injectable, Opts, UseOpts} from \"@tsed/di\";\n *\n * @Injectable()\n * class MyConfigurableService {\n * source: string;\n * constructor(@Opts options: any = {}) {\n * console.log(\"Hello \", options.source); // log: Hello Service1 then Hello Service2\n *\n * this.source = options.source;\n * }\n * }\n *\n * @Injectable()\n * class MyService1 {\n * constructor(@UseOpts({source: 'Service1'}) service: MyConfigurableService) {\n * console.log(service.source) // log: Service1\n * }\n * }\n *\n * @Injectable()\n * class MyService2 {\n * constructor(@UseOpts({source: 'Service2'}) service: MyConfigurableService) {\n * console.log(service.source) // log: Service2\n * }\n * }\n * ```\n *\n * ::: warning\n * Using @@Opts@@ decorator on a constructor parameter change the Scope of the provider to `ProviderScope.INSTANCE`.\n * :::\n *\n * @returns {Function}\n * @decorator\n * @param options\n */\nexport function UseOpts(options) {\n return (target, propertyKey, index) => {\n const bindingType = decoratorTypeOf([target, propertyKey, index]);\n switch (bindingType) {\n case DecoratorTypes.PARAM_CTOR:\n Store.from(target).merge(`${DI_USE_PARAM_OPTIONS}:${index}`, options);\n break;\n case DecoratorTypes.PROP:\n Store.from(target, propertyKey).set(DI_USE_OPTIONS, options);\n break;\n default:\n throw new UnsupportedDecoratorType(UseOpts, [target, propertyKey, index]);\n }\n };\n}\n","import { catchError } from \"@tsed/core\";\nimport { injector } from \"../fn/injector.js\";\nexport function bindValue(target, propertyKey, expression, defaultValue) {\n const descriptor = {\n get() {\n return injector().settings.get(expression, defaultValue);\n },\n set(value) {\n injector().settings.set(expression, value);\n },\n enumerable: true,\n configurable: true\n };\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n catchError(() => Reflect.defineProperty(target, propertyKey, descriptor));\n}\n/**\n * Return value from Configuration.\n *\n * ## Example\n *\n * ```typescript\n * import {Env} from \"@tsed/core\";\n * import {Constant, Value} from \"@tsed/di\";\n *\n * export class MyClass {\n *\n * @Constant(\"env\")\n * env: Env;\n *\n * @Value(\"swagger.path\")\n * swaggerPath: string;\n *\n * @Value(\"swagger.path\", \"defaultValue\")\n * swaggerPath: string;\n *\n * constructor() {\n * console.log(this.swaggerPath) // undefined. Not available on constructor\n * }\n *\n * $onInit() {\n * console.log(this.swaggerPath) // something\n * }\n * }\n * ```\n *\n * @param expression\n * @param defaultValue\n * @returns {(targetClass: any, attributeName: string) => any}\n * @decorator\n */\nexport function Value(expression, defaultValue) {\n return (target, propertyKey) => {\n return bindValue(target, propertyKey, expression, defaultValue);\n };\n}\n","import { injector } from \"./injector.js\";\nexport function configuration() {\n return injector().settings;\n}\n","import { injector } from \"./injector.js\";\n/**\n * Alter value attached to an event asynchronously.\n * @param eventName\n * @param value\n * @param args\n * @param callThis\n */\nexport function $alterAsync(eventName, value, ...args) {\n return injector().hooks.asyncAlter(eventName, value, args);\n}\n/**\n * Emit an event to all service. See service [lifecycle hooks](/docs/services.md#lifecycle-hooks).\n * @param eventName The event name to emit at all services.\n * @param args List of the parameters to give to each service.\n * @returns A list of promises.\n */\nexport function $emit(eventName, ...args) {\n return injector().hooks.asyncEmit(eventName, args);\n}\n/**\n * Alter value attached to an event.\n * @param eventName\n * @param value\n * @param args\n * @param callThis\n */\nexport function $alter(eventName, value, ...args) {\n return injector().hooks.alter(eventName, value, args);\n}\n","import { injector } from \"./injector.js\";\nexport function refValue(expression, defaultValue) {\n return Object.freeze({\n get value() {\n return injector().settings.get(expression, defaultValue);\n },\n set value(value) {\n injector().settings.set(expression, value);\n }\n });\n}\n","import { registerProvider } from \"../registries/ProviderRegistry.js\";\nimport { InjectorService } from \"./InjectorService.js\";\nexport const LOGGER = Symbol.for(\"LOGGER\");\nregisterProvider({\n provide: LOGGER,\n deps: [InjectorService],\n useFactory(injector) {\n return injector.logger;\n }\n});\n","import { Store } from \"@tsed/core\";\nexport function mergeMount(m1 = {}, m2 = {}) {\n return Object.entries(m2).reduce((mount, [key, controllers]) => {\n return {\n ...mount,\n [key]: (mount[key] || []).concat(controllers)\n };\n }, m1);\n}\nexport function getConfiguration(module, configuration = {}) {\n const store = Store.from(module).get(\"configuration\") || {};\n return {\n ...store,\n ...configuration,\n mount: mergeMount(store.mount, configuration.mount)\n };\n}\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__803__","__WEBPACK_EXTERNAL_MODULE__953__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","DI_INVOKE_OPTIONS","DI_INJECTABLE_PROPS","DI_USE_OPTIONS","DI_USE_PARAM_OPTIONS","DI_INTERCEPTOR_OPTIONS","LocalsContainer","Map","constructor","super","arguments","this","hooks","Hooks","async","asyncEmit","create","SuppressedError","InvalidPropertyTokenError","Error","target","propertyKey","nameOf","classOf","name","globalLocals","globalInvOpts","stagedLocals","localsContainer","providers","rebuild","forEach","p","set","token","use","InjectorService","injector","invokeOptions","detachLocalsContainer","push","cleanAllLocalsContainer","map","item","clear","inject","opts","invoke","locals","injectMany","getMany","getConstructorDependencies","Metadata","setConstructorDependencies","deps","Inject","transform","index","decoratorTypeOf","DecoratorTypes","parameterIndex","paramTypes","type","Array","setToken","useOpts","symbol","Reflect","Set","configurable","add","catchError","deleteProperty","useType","String","getTokenType","originalType","invokeOpts","Store","concat","instance","isPromise","then","result","bindInjectableProperty","Configuration","configuration","args","StoreSet","ProviderScope","ProviderType","Provider","options","PROVIDER","provide","useClass","assign","_provide","getClassOrSymbol","_tokenStore","_store","_useClass","isClass","methodsOf","reduce","startsWith","className","store","path","scope","isAsync","SINGLETON","children","useAsyncFactory","clone","hasChildren","length","hasParent","toString","useFactory","useValue","filter","Boolean","join","ControllerProvider","CONTROLLER","middlewares","useAfter","useBefore","mdlwrs","keys","a","b","GlobalProviderRegistry","has","metadata","merge","meta","createIfNotExists","delete","createRegistry","model","defaultOptions","getRegistrySettings","onInvoke","provider","settings","createRegisterFn","GlobalProviders","registerProvider","providerBuilder","props","baseOpts","acc","asyncFactory","VALUE","class","k","inspect","Props","injectable","interceptor","INTERCEPTOR","controller","Injectable","Container","addProvider","hasProvider","setProvider","getProvider","getProviders","types","_","includes","addProviders","container","colorIfAllowed","colorFn","text","process","env","NO_COLOR","colors","red","yellow","green","InjectionError","origin","isString","tokens","message","stack","originMessage","tokensMessage","static","currentDependency","error","erroredArg","getConstructorArgNames","arg","signature","indexOf","repeat","drawline","printDependencyInjectionError","createContainer","rootModule","entries","lookupProperties","getTokens","config","isArray","list","route","resolveRecursively","MODULE","flatMap","resolveControllers","property","DIConfiguration","initialProps","default","scopes","resolvers","imports","routes","logger","proxyDelegation","ownKeys","version","v","rootDir","getRaw","debug","level","callbackfn","thisArg","from","setRaw","setValue","defaultValue","resolve","replace","getValue","InjectorService_1","globalInjector","console","resolvedConfiguration","scopeOf","toArray","values","getInstance","resolver","alias","ensureProvider","registerHooks","REQUEST","$onDestroy","on","loadSync","bootstrap","resolveConfiguration","resolveImportsProviders","loadModule","load","loadAsync","emit","mergedConfiguration","deepMerge","deepClone","isFunction","$onInit","eventName","alter","alterAsync","asyncAlter","force","resolvedOpts","mapInvokeOptions","construct","invokeDependency","parent","isInheritedFrom","services","throwInjectorError","isObject","Promise","all","event","cb","hasInjector","destroyInjector","destroy","AutoInjectable","constr","inj","Math","max","i","resolveAutoInjectableArgs","constant","expression","bindConstant","freeze","Constant","decorators","desc","c","getOwnPropertyDescriptor","decorate","__decorate","metadataKey","metadataValue","__metadata","InjectablePropertyType","Controller","RegExp","isArrayOrArrayClass","mapOptions","useDecorators","Path","Children","getInterceptorOptions","bindIntercept","klass","descriptor","originalMethod","next","err","apply","context","intercept","Intercept","decorateMethodsOf","Interceptor","LazyInject","optional","packageName","bean","importPackage","lazyInvoke","OptionalLazyInject","Module","Scope","Opts","INSTANCE","OverrideProvider","originalProvider","Service","UseOpts","UnsupportedDecoratorType","bindValue","Value","$alterAsync","$emit","$alter","refValue","LOGGER","for","mergeMount","m1","m2","mount","controllers","getConfiguration"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"di.umd.min.js","mappings":"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","sources":["webpack://@tsed/di/webpack/universalModuleDefinition","webpack://@tsed/di/external umd \"@tsed/core\"","webpack://@tsed/di/external umd \"@tsed/schema\"","webpack://@tsed/di/webpack/bootstrap","webpack://@tsed/di/webpack/runtime/define property getters","webpack://@tsed/di/webpack/runtime/hasOwnProperty shorthand","webpack://@tsed/di/webpack/runtime/make namespace object","webpack://@tsed/di/./src/common/constants/constants.ts","webpack://@tsed/di/./src/common/domain/LocalsContainer.ts","webpack://@tsed/di/../../node_modules/tslib/tslib.es6.mjs","webpack://@tsed/di/./src/common/errors/InvalidPropertyTokenError.ts","webpack://@tsed/di/./src/common/fn/localsContainer.ts","webpack://@tsed/di/./src/common/fn/inject.ts","webpack://@tsed/di/./src/common/fn/injectMany.ts","webpack://@tsed/di/./src/common/utils/getConstructorDependencies.ts","webpack://@tsed/di/./src/common/decorators/inject.ts","webpack://@tsed/di/./src/common/decorators/configuration.ts","webpack://@tsed/di/./src/common/domain/ProviderScope.ts","webpack://@tsed/di/./src/common/domain/ProviderType.ts","webpack://@tsed/di/./src/common/domain/Provider.ts","webpack://@tsed/di/./src/common/domain/ControllerProvider.ts","webpack://@tsed/di/./src/common/registries/GlobalProviders.ts","webpack://@tsed/di/./src/common/registries/ProviderRegistry.ts","webpack://@tsed/di/./src/common/fn/injectable.ts","webpack://@tsed/di/./src/common/decorators/injectable.ts","webpack://@tsed/di/./src/common/domain/Container.ts","webpack://@tsed/di/./src/common/utils/colors.ts","webpack://@tsed/di/./src/common/errors/InjectionError.ts","webpack://@tsed/di/./src/common/utils/createContainer.ts","webpack://@tsed/di/./src/common/utils/resolveControllers.ts","webpack://@tsed/di/./src/common/services/DIConfiguration.ts","webpack://@tsed/di/./src/common/services/InjectorService.ts","webpack://@tsed/di/./src/common/fn/injector.ts","webpack://@tsed/di/./src/common/decorators/autoInjectable.ts","webpack://@tsed/di/./src/common/fn/constant.ts","webpack://@tsed/di/./src/common/decorators/constant.ts","webpack://@tsed/di/./src/common/domain/InjectablePropertyType.ts","webpack://@tsed/di/./src/common/decorators/controller.ts","webpack://@tsed/di/./src/common/decorators/intercept.ts","webpack://@tsed/di/./src/common/decorators/interceptor.ts","webpack://@tsed/di/./src/common/decorators/lazyInject.ts","webpack://@tsed/di/./src/common/decorators/module.ts","webpack://@tsed/di/./src/common/decorators/scope.ts","webpack://@tsed/di/./src/common/decorators/opts.ts","webpack://@tsed/di/./src/common/decorators/overrideProvider.ts","webpack://@tsed/di/./src/common/decorators/service.ts","webpack://@tsed/di/./src/common/decorators/useOpts.ts","webpack://@tsed/di/./src/common/decorators/value.ts","webpack://@tsed/di/./src/common/fn/configuration.ts","webpack://@tsed/di/./src/common/fn/events.ts","webpack://@tsed/di/./src/common/fn/refValue.ts","webpack://@tsed/di/./src/common/services/DILogger.ts","webpack://@tsed/di/./src/common/utils/getConfiguration.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@tsed/core\"), require(\"@tsed/schema\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@tsed/core\", \"@tsed/schema\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@tsed/di\"] = factory(require(\"@tsed/core\"), require(\"@tsed/schema\"));\n\telse\n\t\troot[\"@tsed/di\"] = factory(root[\"@tsed/core\"], root[\"@tsed/schema\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__803__, __WEBPACK_EXTERNAL_MODULE__953__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__803__;","module.exports = __WEBPACK_EXTERNAL_MODULE__953__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const DI_INVOKE_OPTIONS = Symbol(\"DI_INVOKE_OPTIONS\");\nexport const DI_INJECTABLE_PROPS = Symbol(\"DI_INJECTABLE_PROPS\");\nexport const DI_USE_OPTIONS = \"DI_USE_OPTIONS\";\nexport const DI_USE_PARAM_OPTIONS = \"DI_USE_PARAM_OPTIONS\";\nexport const DI_INTERCEPTOR_OPTIONS = \"DI_INTERCEPTOR_OPTIONS\";\n","import { Hooks } from \"@tsed/core\";\nexport class LocalsContainer extends Map {\n constructor() {\n super(...arguments);\n this.hooks = new Hooks();\n }\n async destroy() {\n await this.hooks.asyncEmit(\"$onDestroy\");\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { classOf, nameOf } from \"@tsed/core\";\nexport class InvalidPropertyTokenError extends Error {\n constructor(target, propertyKey) {\n super(`Object isn't a valid token. Please check the token set on ${nameOf(classOf(target))}.${propertyKey}.\\n- Check that it is not a circular reference.\\n- Check that the token (class or symbol) exists`);\n this.name = \"INVALID_TOKEN_ERROR\";\n }\n}\n","import { LocalsContainer } from \"../domain/LocalsContainer.js\";\nimport { InjectorService } from \"../services/InjectorService.js\";\nimport { injector } from \"./injector.js\";\nlet globalLocals;\nlet globalInvOpts = {};\nconst stagedLocals = [];\n/**\n * Get the locals container initiated by DITest or .bootstrap() method.\n */\nexport function localsContainer({ providers, rebuild } = {}) {\n if (!globalLocals || providers) {\n globalLocals = new LocalsContainer();\n if (providers) {\n providers.forEach((p) => {\n globalLocals.set(p.token, p.use);\n });\n globalLocals.set(InjectorService, injector());\n }\n if (rebuild) {\n globalInvOpts.rebuild = rebuild;\n }\n }\n return globalLocals;\n}\nexport function invokeOptions() {\n return { ...globalInvOpts };\n}\n/**\n * Reset the locals container.\n */\nexport function detachLocalsContainer() {\n globalLocals && stagedLocals.push(globalLocals);\n globalLocals = undefined;\n globalInvOpts = {};\n}\nexport function cleanAllLocalsContainer() {\n detachLocalsContainer();\n stagedLocals.map((item) => item.clear());\n}\n","import { injector } from \"./injector.js\";\nimport { invokeOptions, localsContainer } from \"./localsContainer.js\";\n/**\n * Inject a provider to another provider.\n *\n * Use this function to inject a custom provider on constructor parameter or property.\n *\n * ```typescript\n * @Injectable()\n * export class MyService {\n * connection = inject(CONNECTION);\n * }\n * ```\n *\n * @param token A token provider or token provider group\n * @param opts\n * @returns {Function}\n * @decorator\n */\nexport function inject(token, opts) {\n return injector().invoke(token, opts?.locals || localsContainer(), {\n ...opts,\n ...invokeOptions()\n });\n}\n","import { injector } from \"./injector.js\";\nimport { localsContainer } from \"./localsContainer.js\";\nexport function injectMany(token, opts) {\n return injector().getMany(token, opts?.locals || localsContainer(), opts);\n}\n","import { Metadata } from \"@tsed/core\";\nexport function getConstructorDependencies(target, propertyKey) {\n return Metadata.getOwn(\"override:ctor:design:paramtypes\", target, propertyKey) || [...Metadata.getParamTypes(target, propertyKey)] || [];\n}\nexport function setConstructorDependencies(target, deps) {\n Metadata.set(\"override:ctor:design:paramtypes\", deps, target);\n}\n","import { catchError, decoratorTypeOf, DecoratorTypes, isPromise, Metadata, Store } from \"@tsed/core\";\nimport { DI_INJECTABLE_PROPS, DI_INVOKE_OPTIONS, DI_USE_OPTIONS } from \"../constants/constants.js\";\nimport { InvalidPropertyTokenError } from \"../errors/InvalidPropertyTokenError.js\";\nimport { inject } from \"../fn/inject.js\";\nimport { injectMany } from \"../fn/injectMany.js\";\nimport { getConstructorDependencies, setConstructorDependencies } from \"../utils/getConstructorDependencies.js\";\nfunction setToken(token, { target, propertyKey, parameterIndex }) {\n const paramTypes = getConstructorDependencies(target, propertyKey);\n const type = paramTypes[parameterIndex];\n paramTypes[parameterIndex] = type === Array ? [token] : token;\n Metadata.setParamTypes(target, propertyKey, paramTypes);\n setConstructorDependencies(target, paramTypes);\n}\nfunction getTokenType(token, target, propertyKey) {\n const useType = token || Metadata.getType(target, propertyKey);\n if (useType === Object) {\n throw new InvalidPropertyTokenError(target, String(propertyKey));\n }\n return useType;\n}\nfunction bindInjectableProperty(target, propertyKey, { token, transform = (o) => o, useOpts }) {\n const symbol = Symbol();\n if (!target[DI_INJECTABLE_PROPS]) {\n Reflect.defineProperty(target, DI_INJECTABLE_PROPS, {\n value: new Set(),\n enumerable: false,\n configurable: false\n });\n }\n target[DI_INJECTABLE_PROPS].add(propertyKey);\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n Reflect.defineProperty(target, propertyKey, {\n get() {\n const useType = getTokenType(token, target, propertyKey);\n const originalType = Metadata.getType(target, propertyKey);\n const invokeOpts = {\n rebuild: !!this[DI_INVOKE_OPTIONS]?.rebuild,\n locals: this[DI_INVOKE_OPTIONS]?.locals,\n useOpts: useOpts || Store.from(target, propertyKey).get(DI_USE_OPTIONS)\n };\n if (this[symbol] === undefined) {\n this[symbol] = originalType === Array ? injectMany(token, invokeOpts) : inject(useType, invokeOpts);\n }\n [].concat(this[symbol]).forEach((instance, index) => {\n if (isPromise(this[symbol])) {\n instance.then((result) => {\n this[symbol][index] = result;\n if (originalType !== Array) {\n this[symbol] = result;\n }\n });\n }\n });\n return transform(this[symbol], { self: this, target, propertyKey });\n }\n });\n}\nexport function Inject(token, opts = {}) {\n opts = typeof opts === \"function\" ? { transform: opts } : opts;\n return (target, propertyKey, index) => {\n const bindingType = decoratorTypeOf([target, propertyKey, index]);\n switch (bindingType) {\n case DecoratorTypes.PARAM_CTOR:\n if (token) {\n setToken(token, { target, propertyKey, parameterIndex: index });\n }\n break;\n case DecoratorTypes.PROP:\n bindInjectableProperty(target, propertyKey, { ...opts, token });\n }\n };\n}\n","import { decoratorTypeOf, DecoratorTypes, StoreSet } from \"@tsed/core\";\nimport { Inject } from \"./inject.js\";\n/**\n * Get or set Configuration on a class.\n *\n * @decorator\n */\nexport function Configuration(configuration = {}) {\n return (...args) => {\n switch (decoratorTypeOf(args)) {\n case DecoratorTypes.CLASS:\n StoreSet(\"configuration\", configuration)(args[0]);\n break;\n default:\n case DecoratorTypes.PARAM_CTOR:\n return Inject(Configuration)(args[0], args[1], args[2]);\n }\n };\n}\n","export var ProviderScope;\n(function (ProviderScope) {\n ProviderScope[\"SINGLETON\"] = \"singleton\";\n ProviderScope[\"REQUEST\"] = \"request\";\n ProviderScope[\"INSTANCE\"] = \"instance\";\n})(ProviderScope || (ProviderScope = {}));\n","export var ProviderType;\n(function (ProviderType) {\n ProviderType[\"VALUE\"] = \"value\";\n ProviderType[\"PROVIDER\"] = \"provider\";\n ProviderType[\"MODULE\"] = \"module\";\n ProviderType[\"CONTROLLER\"] = \"controller\";\n ProviderType[\"INTERCEPTOR\"] = \"interceptor\";\n ProviderType[\"MIDDLEWARE\"] = \"middleware\";\n})(ProviderType || (ProviderType = {}));\n","import { classOf, getClassOrSymbol, isClass, methodsOf, nameOf, Store } from \"@tsed/core\";\nimport { ProviderScope } from \"./ProviderScope.js\";\nimport { ProviderType } from \"./ProviderType.js\";\nexport class Provider {\n constructor(token, options = {}) {\n /**\n * Token group provider to retrieve all provider from the same type\n */\n this.type = ProviderType.PROVIDER;\n this.provide = token;\n this.useClass = token;\n Object.assign(this, {\n ...options\n });\n }\n get token() {\n return this._provide;\n }\n get provide() {\n return this._provide;\n }\n set provide(value) {\n if (value) {\n this._provide = getClassOrSymbol(value);\n this._tokenStore = this._store = Store.from(value);\n }\n }\n get useClass() {\n return this._useClass;\n }\n /**\n * Create a new store if the given value is a class. Otherwise, the value is ignored.\n * @param value\n */\n set useClass(value) {\n if (isClass(value)) {\n this._useClass = classOf(value);\n this._store = Store.from(value);\n this.hooks = methodsOf(this._useClass).reduce((hooks, { propertyKey }) => {\n if (String(propertyKey).startsWith(\"$\")) {\n return {\n ...hooks,\n [propertyKey]: (instance, ...args) => instance[propertyKey](...args)\n };\n }\n return hooks;\n }, {});\n }\n }\n get className() {\n return this.name;\n }\n get name() {\n return nameOf(this.provide);\n }\n get store() {\n return this._store;\n }\n get path() {\n return this.store.get(\"path\", \"/\");\n }\n set path(path) {\n this.store.set(\"path\", path);\n }\n /**\n * Get the scope of the provider.\n *\n * ::: tip Note\n * Async provider is always a SINGLETON\n * :::\n *\n * @returns {boolean}\n */\n get scope() {\n if (this.isAsync()) {\n return ProviderScope.SINGLETON;\n }\n return this.get(\"scope\");\n }\n /**\n * Change the scope value of the provider.\n * @param scope\n */\n set scope(scope) {\n this.store.set(\"scope\", scope);\n }\n get configuration() {\n return this.get(\"configuration\");\n }\n set configuration(configuration) {\n this.store.set(\"configuration\", configuration);\n }\n get children() {\n return this.store.get(\"childrenControllers\", []);\n }\n set children(children) {\n this.store.set(\"childrenControllers\", children);\n }\n get(key) {\n return this.store.get(key) || this._tokenStore.get(key);\n }\n isAsync() {\n return !!this.useAsyncFactory;\n }\n clone() {\n return new (classOf(this))(this._provide, this);\n }\n /**\n *\n * @returns {boolean}\n */\n hasChildren() {\n return !!this.children.length;\n }\n /**\n *\n * @returns {boolean}\n */\n hasParent() {\n return !!this.store.get(\"parentController\");\n }\n toString() {\n return [\n \"Token\",\n this.name,\n this.useClass && nameOf(this.useClass),\n this.useFactory && \"Factory\",\n this.useValue && \"Value\",\n this.useAsyncFactory && \"AsyncFactory\"\n ]\n .filter(Boolean)\n .join(\":\");\n }\n}\n","import { Provider } from \"./Provider.js\";\nimport { ProviderType } from \"./ProviderType.js\";\nexport class ControllerProvider extends Provider {\n constructor(provide, options = {}) {\n super(provide, options);\n this.type = ProviderType.CONTROLLER;\n }\n /**\n *\n * @returns {any[]}\n */\n get middlewares() {\n return Object.assign({\n use: [],\n useAfter: [],\n useBefore: []\n }, this.store.get(\"middlewares\", {}));\n }\n /**\n *\n * @param middlewares\n */\n set middlewares(middlewares) {\n const mdlwrs = this.middlewares;\n const concat = (key, a, b) => (a[key] = a[key].concat(b[key]));\n Object.keys(middlewares).forEach((key) => {\n concat(key, mdlwrs, middlewares);\n });\n this.store.set(\"middlewares\", mdlwrs);\n }\n}\n","import { getClassOrSymbol } from \"@tsed/core\";\nimport { Provider } from \"../domain/Provider.js\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nexport class GlobalProviderRegistry extends Map {\n #settings = new Map();\n /**\n * The get() method returns a specified element from a Map object.\n * @param key Required. The key of the element to return from the Map object.\n * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.\n */\n get(key) {\n return super.get(getClassOrSymbol(key));\n }\n /**\n * The has() method returns a boolean indicating whether an element with the specified key exists or not.\n * @param key\n * @returns {boolean}\n */\n has(key) {\n return super.has(getClassOrSymbol(key));\n }\n /**\n * The set() method adds or updates an element with a specified key and value to a Map object.\n * @param key Required. The key of the element to add to the Map object.\n * @param metadata Required. The value of the element to add to the Map object.\n */\n set(key, metadata) {\n super.set(getClassOrSymbol(key), metadata);\n return this;\n }\n /**\n *\n * @param target\n * @param options\n */\n merge(target, options) {\n const meta = this.createIfNotExists(target, options);\n Object.keys(options).forEach((key) => {\n meta[key] = options[key];\n });\n this.set(target, meta);\n return meta;\n }\n /**\n * The delete() method removes the specified element from a Map object.\n * @param key Required. The key of the element to remove from the Map object.\n * @returns {boolean} Returns true if an element in the Map object existed and has been removed, or false if the element does not exist.\n */\n delete(key) {\n return super.delete(getClassOrSymbol(key));\n }\n createRegistry(type, model, options = {}) {\n const defaultOptions = this.getRegistrySettings(type);\n options = Object.assign(defaultOptions, {\n ...options,\n model\n });\n this.#settings.set(type, options);\n return this;\n }\n onInvoke(provider, locals, options) {\n const settings = this.#settings.get(provider.type);\n if (settings?.onInvoke) {\n settings.onInvoke(provider, locals, options);\n }\n }\n getRegistrySettings(target) {\n let type = ProviderType.PROVIDER;\n if (typeof target === \"string\") {\n type = target;\n }\n else {\n const provider = this.get(target);\n if (provider) {\n type = provider.type;\n }\n }\n return (this.#settings.get(type) || {\n model: Provider\n });\n }\n createRegisterFn(type) {\n return (provider, instance) => {\n provider = Object.assign({ instance }, provider, { type });\n this.merge(provider.provide, provider);\n };\n }\n /**\n *\n * @param key\n * @param options\n */\n createIfNotExists(key, options) {\n const type = options.type || ProviderType.PROVIDER;\n if (!this.has(key)) {\n const { model = Provider } = this.#settings.get(type) || {};\n const item = new model(key, options);\n this.set(key, item);\n }\n return this.get(key);\n }\n}\n/**\n *\n * @type {GlobalProviders}\n */\n// tslint:disable-next-line: variable-name\nexport const GlobalProviders = new GlobalProviderRegistry();\n","import { ControllerProvider } from \"../domain/ControllerProvider.js\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nimport { GlobalProviders } from \"./GlobalProviders.js\";\nGlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider);\n/**\n * Register a provider configuration.\n * @param {ProviderOpts<any>} provider\n */\nexport function registerProvider(provider) {\n return GlobalProviders.merge(provider.provide, provider);\n}\n","import \"../registries/ProviderRegistry.js\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nimport { GlobalProviders } from \"../registries/GlobalProviders.js\";\nexport function providerBuilder(props, baseOpts = {}) {\n return (token, options = {}) => {\n const provider = GlobalProviders.merge(token, {\n ...options,\n ...baseOpts,\n provide: token\n });\n return props.reduce((acc, prop) => {\n return {\n ...acc,\n [prop]: function (value) {\n provider[prop] = value;\n return this;\n }\n };\n }, {\n factory(factory) {\n provider.useFactory = factory;\n return this;\n },\n asyncFactory(asyncFactory) {\n provider.useAsyncFactory = asyncFactory;\n return this;\n },\n value(value) {\n provider.useValue = value;\n provider.type = ProviderType.VALUE;\n return this;\n },\n class(k) {\n provider.useClass = k;\n return this;\n },\n store() {\n return provider.store;\n },\n inspect() {\n return provider;\n },\n token() {\n return provider.token;\n }\n });\n };\n}\nconst Props = [\"type\", \"scope\", \"path\", \"alias\", \"hooks\", \"deps\", \"resolvers\", \"imports\", \"configuration\"];\nexport const injectable = providerBuilder(Props);\nexport const interceptor = providerBuilder(Props, {\n type: ProviderType.INTERCEPTOR\n});\nexport const controller = providerBuilder([...Props, \"middlewares\"], {\n type: ProviderType.CONTROLLER\n});\n","import { injectable } from \"../fn/injectable.js\";\n/**\n * The decorators `@Injectable()` declare a new service can be injected in other service, controller, interceptor, etc.. on there `constructor`.\n * All classes annotated with `@Injectable()` are built one time, excepted if you change the default provider configuration.\n *\n * ::: tip\n * `@Injectable()` use the `reflect-metadata` to collect and inject the built provided to other services.\n * :::\n *\n * ### Options\n *\n * - type (@@ProviderType@@ or `string`): Kind of provider. (Default: `ProviderType.PROVIDER`)\n * - scope (@@ProviderScope@@): Kind of provider. (Default: `ProviderScope.SINGLETON`)\n * - provide (@@TokenProvider@@): An injection token (Note: This option override default metadata generated by Typescript).\n * - deps (`Type<any>`): List of class or provider which will be injected to the constructor (Note: This options override default metadata generated by Typescript).\n *\n * @returns {Function}\n * @decorator\n */\nexport function Injectable(options = {}) {\n return (target) => {\n const opts = {\n ...options,\n ...(options.provide ? { useClass: target } : { provide: target })\n };\n injectable(opts.provide, opts);\n };\n}\n","import { GlobalProviders } from \"../registries/GlobalProviders.js\";\nimport { Provider } from \"./Provider.js\";\nexport class Container extends Map {\n /**\n *\n * @param token\n * @param settings\n */\n add(token, settings = {}) {\n const provider = GlobalProviders.get(token)?.clone() || new Provider(token);\n Object.assign(provider, settings);\n return super.set(token, provider);\n }\n /**\n * Add a provider to the\n * @param token\n * @param settings\n */\n addProvider(token, settings = {}) {\n return this.add(token, settings);\n }\n /**\n *\n * @param token\n */\n hasProvider(token) {\n return super.has(token);\n }\n /**\n * Add a provider to the\n * @param token\n * @param provider\n */\n setProvider(token, provider) {\n return super.set(token, provider);\n }\n /**\n * The getProvider() method returns a specified element from a Map object.\n * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.\n * @param token\n */\n getProvider(token) {\n return super.get(token);\n }\n /**\n * Get all providers registered in the injector container.\n *\n * @param type Filter the list by the given ProviderType.\n * @returns {[TokenProvider , Provider<any>][]}\n */\n getProviders(type) {\n const types = [].concat(type).map(String);\n return [...this].reduce((providers, [_, provider]) => {\n if (types.includes(String(provider.type)) || !type) {\n return [...providers, provider];\n }\n return providers;\n }, []);\n }\n addProviders(container) {\n container.forEach((provider) => {\n if (!this.hasProvider(provider.provide)) {\n this.setProvider(provider.provide, provider.clone());\n }\n });\n }\n}\n","// istanbul ignore next\nconst colorIfAllowed = (colorFn) => (text) => !process.env.NO_COLOR && process.env.NODE_ENV !== \"production\" ? colorFn(text) : text;\nconst red = colorIfAllowed((text) => `\\x1B[31m${text}\\x1B[39m`);\nconst yellow = colorIfAllowed((text) => `\\x1B[33m${text}\\x1B[39m`);\nconst green = colorIfAllowed((text) => `\\x1B[32m${text}\\x1B[39m`);\nexport const colors = { red, yellow, green };\n","import { getConstructorArgNames, isClass, isString, nameOf } from \"@tsed/core\";\nimport { colors } from \"../utils/colors.js\";\nexport class InjectionError extends Error {\n constructor(token, origin) {\n super(isString(origin) ? origin : \"\");\n this.name = \"INJECTION_ERROR\";\n this.tokens = [];\n this.tokens = [token];\n if (origin) {\n if (isString(origin)) {\n this.origin = {\n message: origin,\n stack: this.stack\n };\n }\n else {\n if (origin.tokens) {\n this.tokens = this.tokens.concat(origin.tokens);\n this.origin = origin.origin;\n }\n else {\n this.origin = origin;\n this.stack = origin.stack;\n }\n }\n }\n const originMessage = this.origin ? \"\\nOrigin: \" + this.origin.message : \"\";\n const tokensMessage = this.tokens.map((token) => nameOf(token)).join(\" > \");\n this.message = `Injection failed on ${tokensMessage}${originMessage}`;\n }\n static throwInjectorError(token, currentDependency, error) {\n if (currentDependency && isClass(token)) {\n error.message = printDependencyInjectionError(token, { ...currentDependency, message: error.message });\n }\n throw new InjectionError(token, error);\n }\n}\nfunction printDependencyInjectionError(token, options) {\n let erroredArg = \"\";\n const args = getConstructorArgNames(token)\n .map((arg, index) => {\n if (options.index === index) {\n erroredArg = arg;\n arg = colors.red(arg);\n }\n return `${arg}: ${nameOf(options.deps[index])}`;\n })\n .join(\", \");\n const signature = nameOf(token) + \"->constructor(\" + args + \")\";\n const indexOf = signature.indexOf(erroredArg) - 5;\n const drawline = (indexOf) => \" \".repeat(indexOf) + colors.red(\"^\" + \"‾\".repeat(erroredArg.length - 1));\n return \"Unable to inject dependency. \" + options.message + \"\\n\\n\" + signature + \"\\n\" + (indexOf > -1 ? drawline(indexOf) : \"\");\n}\n","import { Container } from \"../domain/Container.js\";\nimport { GlobalProviders } from \"../registries/GlobalProviders.js\";\nexport function createContainer(rootModule) {\n const container = new Container(GlobalProviders.entries());\n if (rootModule) {\n container.delete(rootModule);\n }\n return container;\n}\n","import { isArray, isClass } from \"@tsed/core\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nimport { GlobalProviders } from \"../registries/GlobalProviders.js\";\nconst lookupProperties = [\"mount\", \"imports\"];\nexport function getTokens(config) {\n if (!config) {\n return [];\n }\n if (isArray(config)) {\n return config.filter(isClass).map((value) => {\n return { token: value };\n });\n }\n return Object.keys(config).reduce((list, route) => {\n return [\n ...list,\n ...[]\n .concat(config[route])\n .filter(isClass)\n .map((token) => ({\n route,\n token\n }))\n ];\n }, []);\n}\nfunction resolveRecursively(providers) {\n return providers\n .map(({ token }) => GlobalProviders.get(token))\n .filter((provider) => provider?.type === ProviderType.MODULE && provider.configuration)\n .flatMap((provider) => resolveControllers(provider.configuration));\n}\n/**\n * Return controllers and is base route according to his configuration in module configuration.\n *\n * @param settings\n */\nexport function resolveControllers(settings) {\n const providers = lookupProperties.flatMap((property) => getTokens(settings[property]));\n return [...resolveRecursively(providers), ...providers].filter((provider) => !!provider.route);\n}\n","import { getValue, setValue } from \"@tsed/core\";\nexport class DIConfiguration {\n constructor(initialProps = {}) {\n this.default = new Map();\n this.map = new Map();\n Object.entries({\n scopes: {},\n resolvers: [],\n imports: [],\n routes: [],\n logger: {},\n ...initialProps\n }).forEach(([key, value]) => {\n this.default.set(key, value);\n });\n }\n get version() {\n return this.get(\"version\");\n }\n set version(v) {\n this.map.set(\"version\", v);\n }\n get rootDir() {\n return this.get(\"rootDir\");\n }\n set rootDir(value) {\n this.map.set(\"rootDir\", value);\n }\n get env() {\n return this.map.get(\"env\");\n }\n set env(value) {\n this.map.set(\"env\", value);\n }\n get scopes() {\n return this.map.get(\"scopes\");\n }\n set scopes(value) {\n this.map.set(\"scopes\", value);\n }\n get resolvers() {\n return this.getRaw(\"resolvers\");\n }\n set resolvers(resolvers) {\n this.map.set(\"resolvers\", resolvers);\n }\n get imports() {\n return this.get(\"imports\");\n }\n set imports(imports) {\n this.map.set(\"imports\", imports);\n }\n get routes() {\n return this.get(\"routes\");\n }\n set routes(routes) {\n this.map.set(\"routes\", routes);\n }\n get logger() {\n return this.get(\"logger\");\n }\n set logger(value) {\n const logger = { ...this.logger, ...value };\n this.map.set(\"logger\", logger);\n }\n get debug() {\n return this.logger.level === \"debug\";\n }\n set debug(debug) {\n this.logger = { ...this.logger, level: debug ? \"debug\" : \"info\" };\n }\n /**\n *\n * @param callbackfn\n * @param thisArg\n */\n forEach(callbackfn, thisArg) {\n return new Set([...Array.from(this.default.keys()), ...Array.from(this.map.keys())]).forEach((key) => {\n callbackfn(this.getRaw(key), key, this.map);\n }, thisArg);\n }\n /**\n *\n * @param propertyKey\n * @param value\n */\n set(propertyKey, value) {\n if (typeof propertyKey === \"string\") {\n if (Reflect.has(this, propertyKey)) {\n // @ts-ignore\n this[propertyKey] = value;\n }\n else {\n this.setRaw(propertyKey, value);\n }\n }\n else {\n Object.entries(propertyKey).forEach(([key, value]) => {\n this.set(key, value);\n });\n }\n return this;\n }\n setRaw(propertyKey, value) {\n setValue(this.map, propertyKey, value);\n return this;\n }\n /**\n *\n * @param propertyKey\n * @param defaultValue\n * @returns {undefined|any}\n */\n get(propertyKey, defaultValue) {\n return this.getRaw(propertyKey, defaultValue);\n }\n getRaw(propertyKey, defaultValue) {\n const value = getValue(this.map, propertyKey);\n if (value !== undefined) {\n return value;\n }\n return getValue(this.default, propertyKey, defaultValue);\n }\n}\n","var InjectorService_1;\nimport { __decorate, __metadata } from \"tslib\";\nimport { classOf, deepClone, deepMerge, Hooks, isArray, isClass, isFunction, isInheritedFrom, isObject, isPromise, nameOf, Store } from \"@tsed/core\";\nimport { DI_INVOKE_OPTIONS, DI_USE_PARAM_OPTIONS } from \"../constants/constants.js\";\nimport { Configuration } from \"../decorators/configuration.js\";\nimport { Injectable } from \"../decorators/injectable.js\";\nimport { Container } from \"../domain/Container.js\";\nimport { LocalsContainer } from \"../domain/LocalsContainer.js\";\nimport { Provider } from \"../domain/Provider.js\";\nimport { ProviderScope } from \"../domain/ProviderScope.js\";\nimport { InjectionError } from \"../errors/InjectionError.js\";\nimport { GlobalProviders } from \"../registries/GlobalProviders.js\";\nimport { createContainer } from \"../utils/createContainer.js\";\nimport { getConstructorDependencies } from \"../utils/getConstructorDependencies.js\";\nimport { resolveControllers } from \"../utils/resolveControllers.js\";\nimport { DIConfiguration } from \"./DIConfiguration.js\";\n/**\n * This service contain all services collected by `@Service` or services declared manually with `InjectorService.factory()` or `InjectorService.service()`.\n *\n * ### Example:\n *\n * ```typescript\n * import {InjectorService} from \"@tsed/di\";\n *\n * // Import the services (all services are decorated with @Service()\";\n * import MyService1 from \"./services/service1.js\";\n * import MyService2 from \"./services/service2.js\";\n * import MyService3 from \"./services/service3.js\";\n *\n * // When all services are imported, you can load InjectorService.\n * const injector = new InjectorService()\n *\n * await injector.load();\n *\n * const myService1 = injector.get<MyService1>(MyServcice1);\n * ```\n */\nlet InjectorService = InjectorService_1 = class InjectorService extends Container {\n #cache;\n constructor() {\n super();\n this.settings = new DIConfiguration();\n this.logger = console;\n this.resolvedConfiguration = false;\n this.#cache = new LocalsContainer();\n this.hooks = new Hooks();\n this.#cache.set(InjectorService_1, this);\n }\n get resolvers() {\n return this.settings.resolvers;\n }\n get scopes() {\n return this.settings.scopes || {};\n }\n /**\n * Retrieve default scope for a given provider.\n * @param provider\n */\n scopeOf(provider) {\n return provider.scope || this.scopes[String(provider.type)] || ProviderScope.SINGLETON;\n }\n /**\n * Return a list of instance build by the injector.\n */\n toArray() {\n return [...this.#cache.values()];\n }\n /**\n * Get a service or factory already constructed from his symbol or class.\n *\n * #### Example\n *\n * ```typescript\n * import {InjectorService} from \"@tsed/di\";\n * import MyService from \"./services.js\";\n *\n * class OtherService {\n * constructor(injectorService: InjectorService) {\n * const myService = injectorService.get<MyService>(MyService);\n * }\n * }\n * ```\n *\n * @param token The class or symbol registered in InjectorService.\n * @param options\n */\n get(token, options = {}) {\n const instance = this.getInstance(token);\n if (instance !== undefined) {\n return instance;\n }\n if (!this.hasProvider(token)) {\n for (const resolver of this.resolvers) {\n const result = resolver.get(token, options);\n if (result !== undefined) {\n return result;\n }\n }\n }\n }\n /**\n * Return all instance of the same provider type\n */\n getMany(type, locals, options) {\n return this.getProviders(type).map((provider) => {\n return this.invoke(provider.token, locals, options);\n });\n }\n /**\n * The has() method returns a boolean indicating whether an element with the specified key exists or not.\n */\n has(token) {\n return this.#cache.get(token) !== undefined;\n }\n /**\n * Declare an alias for a given token.\n */\n alias(token, alias) {\n this.#cache.set(alias, this.#cache.get(token));\n return this;\n }\n /**\n * Invoke the class and inject all services that required by the class constructor.\n *\n * #### Example\n *\n * ```typescript\n * import {InjectorService} from \"@tsed/di\";\n * import MyService from \"./services.js\";\n *\n * class OtherService {\n * constructor(injectorService: InjectorService) {\n * const myService = injectorService.invoke<MyService>(MyService);\n * }\n * }\n * ```\n *\n * @param token The injectable class to invoke. Class parameters are injected according constructor signature.\n * @param locals Optional object. If preset then any argument Class are read from this object first, before the `InjectorService` is consulted.\n * @param options\n * @returns {Type} The class constructed.\n */\n invoke(token, locals, options = {}) {\n let instance = locals ? locals.get(token) : undefined;\n if (instance !== undefined) {\n return instance;\n }\n if (token === Configuration) {\n return this.settings;\n }\n instance = !options.rebuild ? this.getInstance(token) : undefined;\n if (instance != undefined) {\n return instance;\n }\n if (token === DI_USE_PARAM_OPTIONS) {\n return options.useOpts;\n }\n const provider = this.ensureProvider(token);\n const set = (instance) => {\n this.#cache.set(token, instance);\n provider?.alias && this.alias(token, provider.alias);\n };\n if (!provider || options.rebuild) {\n instance = this.resolve(token, locals, options);\n if (this.hasProvider(token)) {\n set(instance);\n }\n return instance;\n }\n instance = this.resolve(token, locals, options);\n switch (this.scopeOf(provider)) {\n case ProviderScope.SINGLETON:\n if (provider.hooks && !options.rebuild) {\n this.registerHooks(provider, instance);\n }\n if (!provider.isAsync() || !isPromise(instance)) {\n set(instance);\n // locals?.delete(DI_USE_PARAM_OPTIONS);\n return instance;\n }\n // store promise to lock token in cache\n set(instance);\n instance = instance.then((instance) => {\n set(instance);\n return instance;\n });\n // locals?.delete(DI_USE_PARAM_OPTIONS);\n return instance;\n case ProviderScope.REQUEST:\n if (locals) {\n locals.set(token, instance);\n if (provider.hooks && provider.hooks.$onDestroy) {\n locals.hooks.on(\"$onDestroy\", (...args) => provider.hooks.$onDestroy(instance, ...args));\n }\n }\n // locals?.delete(DI_USE_PARAM_OPTIONS);\n return instance;\n }\n return instance;\n }\n /**\n * Build only providers which are asynchronous.\n */\n async loadAsync() {\n for (const [, provider] of this) {\n if (!this.has(provider.token) && provider.isAsync()) {\n await this.invoke(provider.token);\n }\n }\n }\n /**\n * Build only providers which are synchronous.\n */\n loadSync() {\n for (const [, provider] of this) {\n if (!this.has(provider.token) && this.scopeOf(provider) === ProviderScope.SINGLETON) {\n this.invoke(provider.token);\n }\n }\n }\n /**\n * Boostrap injector from container and resolve configuration.\n *\n * @param container\n */\n bootstrap(container = createContainer()) {\n // Clone all providers in the container\n this.addProviders(container);\n // Resolve all configuration\n this.resolveConfiguration();\n // allow mocking or changing provider instance before loading injector\n this.resolveImportsProviders();\n return this;\n }\n /**\n * Load injector from a given module\n * @param rootModule\n */\n loadModule(rootModule) {\n this.settings.routes = this.settings.routes.concat(resolveControllers(this.settings));\n const container = createContainer();\n container.delete(rootModule);\n container.addProvider(rootModule, {\n type: \"server:module\",\n scope: ProviderScope.SINGLETON\n });\n return this.load(container);\n }\n /**\n * Build all providers from given container (or GlobalProviders) and emit `$onInit` event.\n *\n * @param container\n */\n async load(container = createContainer()) {\n this.bootstrap(container);\n // build async and sync provider\n await this.loadAsync();\n // load sync provider\n this.loadSync();\n await this.emit(\"$beforeInit\");\n await this.emit(\"$onInit\");\n }\n /**\n * Load all configurations registered on providers\n */\n resolveConfiguration() {\n if (this.resolvedConfiguration) {\n return;\n }\n const mergedConfiguration = new Map();\n super.forEach((provider) => {\n if (provider.configuration && provider.type !== \"server:module\") {\n Object.entries(provider.configuration).forEach(([key, value]) => {\n if (![\"resolvers\", \"mount\", \"imports\"].includes(key)) {\n value = mergedConfiguration.has(key) ? deepMerge(mergedConfiguration.get(key), value) : deepClone(value);\n mergedConfiguration.set(key, value);\n }\n });\n }\n if (provider.resolvers) {\n this.settings.resolvers = this.settings.resolvers.concat(provider.resolvers);\n }\n });\n mergedConfiguration.forEach((value, key) => {\n this.settings.set(key, deepMerge(value, this.settings.get(key)));\n });\n this.resolvedConfiguration = true;\n }\n async lazyInvoke(token) {\n let instance = this.getInstance(token);\n if (!instance) {\n instance = await this.invoke(token);\n if (isFunction(instance?.$onInit)) {\n await instance.$onInit();\n }\n }\n return instance;\n }\n /**\n * Emit an event to all service. See service [lifecycle hooks](/docs/services.md#lifecycle-hooks).\n * @param eventName The event name to emit at all services.\n * @param args List of the parameters to give to each service.\n * @returns A list of promises.\n */\n emit(eventName, ...args) {\n return this.hooks.asyncEmit(eventName, args);\n }\n /**\n * Alter value attached to an event.\n * @param eventName\n * @param value\n * @param args\n */\n alter(eventName, value, ...args) {\n return this.hooks.alter(eventName, value, args);\n }\n /**\n * Alter value attached to an event asynchronously.\n * @param eventName\n * @param value\n * @param args\n */\n alterAsync(eventName, value, ...args) {\n return this.hooks.asyncAlter(eventName, value, args);\n }\n /**\n * Destroy the injector and all services.\n */\n async destroy() {\n await this.emit(\"$onDestroy\");\n }\n ensureProvider(token, force = false) {\n if (!this.hasProvider(token) && (GlobalProviders.has(token) || force)) {\n this.addProvider(token);\n }\n return this.getProvider(token);\n }\n getInstance(token) {\n return this.#cache.get(token);\n }\n /**\n * Invoke a class method and inject service.\n *\n * #### IInjectableMethod options\n *\n * * **target**: Optional. The class instance.\n * * **methodName**: `string` Optional. The method name.\n * * **designParamTypes**: `any[]` Optional. List of injectable types.\n * * **locals**: `Map<Function, any>` Optional. If preset then any argument Class are read from this object first, before the `InjectorService` is consulted.\n *\n * #### Example\n *\n * @param target\n * @param locals\n * @param options\n * @private\n */\n resolve(target, locals = new LocalsContainer(), options = {}) {\n const resolvedOpts = this.mapInvokeOptions(target, locals, options);\n if (!resolvedOpts) {\n return undefined;\n }\n const { token, deps, construct, imports, provider } = resolvedOpts;\n if (provider) {\n GlobalProviders.onInvoke(provider, locals, { ...resolvedOpts, injector: this });\n }\n let instance;\n let currentDependency = false;\n try {\n const invokeDependency = (parent) => (token, index) => {\n currentDependency = { token, index, deps };\n if (isArray(token)) {\n return this.getMany(token[0], locals, options);\n }\n const useOpts = provider?.store?.get(`${DI_USE_PARAM_OPTIONS}:${index}`) || options.useOpts;\n return isInheritedFrom(token, Provider, 1) ? provider : this.invoke(token, locals, { parent, useOpts });\n };\n // Invoke manually imported providers\n imports.forEach(invokeDependency());\n // Inject dependencies\n const services = deps.map(invokeDependency(token));\n currentDependency = false;\n instance = construct(services);\n }\n catch (error) {\n InjectionError.throwInjectorError(token, currentDependency, error);\n }\n if (instance === undefined) {\n throw new InjectionError(token, `Unable to create new instance from undefined value. Check your provider declaration for ${nameOf(token)}`);\n }\n if (instance && isClass(classOf(instance))) {\n Reflect.defineProperty(instance, DI_INVOKE_OPTIONS, {\n get: () => ({ rebuild: options.rebuild, locals })\n });\n }\n return instance;\n }\n resolveImportsProviders() {\n this.settings.imports = this.settings.imports\n ?.filter((meta) => isObject(meta) && \"token\" in meta && meta.token !== InjectorService_1)\n .map((meta) => {\n if (isObject(meta) && \"token\" in meta) {\n const { token, ...props } = meta;\n const provider = this.ensureProvider(token, true);\n if (provider) {\n provider.useValue = undefined;\n provider.useAsyncFactory = undefined;\n provider.useFactory = undefined;\n if (\"useClass\" in props) {\n provider.useClass = props.useClass;\n return;\n }\n if (\"useFactory\" in props) {\n provider.useFactory = props.useFactory;\n return;\n }\n if (\"useAsyncFactory\" in props) {\n provider.useAsyncFactory = props.useAsyncFactory;\n return;\n }\n if (\"use\" in props) {\n provider.useValue = props.use;\n return;\n }\n }\n }\n return meta;\n })\n .filter(Boolean);\n }\n /**\n * Create options to invoke a provider or class.\n * @param token\n * @param locals\n * @param options\n */\n mapInvokeOptions(token, locals, options) {\n let imports = options.imports;\n let deps = options.deps;\n let scope = options.scope;\n let construct;\n if (!token || token === Object) {\n throw new Error(\"Given token is undefined. Could mean a circular dependency problem. Try to use @Inject(() => Token) to solve it.\");\n }\n let provider;\n if (!this.hasProvider(token)) {\n provider = new Provider(token);\n this.resolvers.forEach((resolver) => {\n const result = resolver.get(token, locals.get(DI_USE_PARAM_OPTIONS));\n if (result !== undefined) {\n provider.useFactory = () => result;\n }\n });\n }\n else {\n provider = this.getProvider(token);\n }\n scope = scope || this.scopeOf(provider);\n deps = deps || provider.deps;\n imports = imports || provider.imports;\n if (provider.useValue !== undefined) {\n construct = () => (isFunction(provider.useValue) ? provider.useValue() : provider.useValue);\n }\n else if (provider.useFactory) {\n construct = (deps) => provider.useFactory(...deps);\n }\n else if (provider.useAsyncFactory) {\n construct = async (deps) => {\n deps = await Promise.all(deps);\n return provider.useAsyncFactory(...deps);\n };\n }\n else if (provider.useClass) {\n // useClass\n deps = deps || getConstructorDependencies(provider.useClass);\n construct = (deps) => new provider.useClass(...deps);\n }\n else {\n return false;\n }\n return {\n token,\n scope: scope || Store.from(token).get(\"scope\") || ProviderScope.SINGLETON,\n deps: deps || [],\n imports: imports || [],\n construct,\n provider\n };\n }\n registerHooks(provider, instance) {\n if (provider.hooks) {\n Object.entries(provider.hooks).forEach(([event, cb]) => {\n const callback = (...args) => cb(this.get(provider.token) || instance, ...args);\n this.hooks.on(event, callback);\n });\n }\n }\n};\nInjectorService = InjectorService_1 = __decorate([\n Injectable({\n scope: ProviderScope.SINGLETON\n }),\n __metadata(\"design:paramtypes\", [])\n], InjectorService);\nexport { InjectorService };\n","import { InjectorService } from \"../services/InjectorService.js\";\nlet globalInjector;\n/**\n * Create or return the existing injector service.\n *\n * Example:\n *\n * ```typescript\n * import {injector, Injectable} from \"@tsed/di\";\n *\n * @Injectable()\n * class MyService {\n * injector = injector();\n * }\n * ```\n */\nexport function injector(opts) {\n if (!globalInjector || opts?.rebuild) {\n globalInjector = new InjectorService();\n if (opts && opts.logger) {\n globalInjector.logger = opts.logger;\n }\n if (opts?.settings) {\n globalInjector.settings.set(opts.settings);\n }\n }\n return globalInjector;\n}\nexport function hasInjector() {\n return !!globalInjector;\n}\nexport async function destroyInjector() {\n await globalInjector?.destroy();\n globalInjector = undefined;\n}\n","import { isArray } from \"@tsed/core\";\nimport { LocalsContainer } from \"../domain/LocalsContainer.js\";\nimport { injector } from \"../fn/injector.js\";\nimport { getConstructorDependencies } from \"../utils/getConstructorDependencies.js\";\nfunction resolveAutoInjectableArgs(token, args) {\n const inj = injector();\n const locals = new LocalsContainer();\n const deps = getConstructorDependencies(token);\n const list = [];\n const length = Math.max(deps.length, args.length);\n for (let i = 0; i < length; i++) {\n if (args[i] !== undefined) {\n list.push(args[i]);\n }\n else {\n const value = deps[i];\n const instance = isArray(value) ? inj.getMany(value[0], locals, { parent: token }) : inj.invoke(value, locals, { parent: token });\n list.push(instance);\n }\n }\n return list;\n}\nexport function AutoInjectable() {\n return (constr) => {\n return class AutoInjectable extends constr {\n constructor(...args) {\n super(...resolveAutoInjectableArgs(constr, args));\n }\n };\n };\n}\n","import { injector as $injector } from \"./injector.js\";\nexport function constant(expression, defaultValue) {\n return $injector().settings.get(expression, defaultValue);\n}\n","import { catchError, deepClone } from \"@tsed/core\";\nimport { constant } from \"../fn/constant.js\";\nexport function bindConstant(target, propertyKey, expression, defaultValue) {\n const symbol = Symbol();\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n Reflect.defineProperty(target, propertyKey, {\n get() {\n if (this[symbol] !== undefined) {\n return this[symbol];\n }\n const value = constant(expression, defaultValue);\n this[symbol] = Object.freeze(deepClone(value));\n return this[symbol];\n },\n set(value) {\n const bean = constant(expression, defaultValue) || this[symbol];\n if (bean === undefined && value !== undefined) {\n this[symbol] = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n}\n/**\n * Return value from Configuration.\n *\n * ## Example\n *\n * ```typescript\n * import {Env} from \"@tsed/core\";\n * import {Constant, Value} from \"@tsed/di\";\n *\n * export class MyClass {\n *\n * @Constant(\"env\")\n * env: Env;\n *\n * @Value(\"swagger.path\")\n * swaggerPath: string;\n *\n * @Value(\"swagger.path\", \"defaultValue\")\n * swaggerPath: string;\n *\n * constructor() {\n * console.log(this.swaggerPath) // undefined. Not available on constructor\n * }\n *\n * $onInit() {\n * console.log(this.swaggerPath) // something\n * }\n * }\n * ```\n *\n * @param {string} expression\n * @param defaultValue\n * @returns {(targetClass: any, attributeName: string) => any}\n * @decorator\n */\nexport function Constant(expression, defaultValue) {\n return (target, propertyKey) => {\n return bindConstant(target, propertyKey, expression, defaultValue);\n };\n}\n","export var InjectablePropertyType;\n(function (InjectablePropertyType) {\n InjectablePropertyType[\"METHOD\"] = \"method\";\n InjectablePropertyType[\"PROPERTY\"] = \"property\";\n InjectablePropertyType[\"CONSTANT\"] = \"constant\";\n InjectablePropertyType[\"VALUE\"] = \"value\";\n InjectablePropertyType[\"INTERCEPTOR\"] = \"interceptor\";\n})(InjectablePropertyType || (InjectablePropertyType = {}));\n","import { isArrayOrArrayClass, useDecorators } from \"@tsed/core\";\nimport { Children, Path } from \"@tsed/schema\";\nimport { controller } from \"../fn/injectable.js\";\nfunction mapOptions(options) {\n if (typeof options === \"string\" || options instanceof RegExp || isArrayOrArrayClass(options)) {\n return {\n path: options\n };\n }\n return options;\n}\n/**\n * Declare a new controller with his Rest path. His methods annotated will be collected to build the routing list.\n * This routing listing will be built with the `express.Router` object.\n *\n * ::: tip\n * See [Controllers](/docs/controllers.md) section for more details\n * :::\n *\n * ```typescript\n * @Controller(\"/calendars\")\n * export provide CalendarCtrl {\n *\n * @Get(\"/:id\")\n * public get(\n * @Req() request: Req,\n * @Res() response: Res,\n * @Next() next: Next\n * ): void {\n *\n * }\n * }\n * ```\n *\n * @param options\n * @controller\n * @decorator\n * @classDecorator\n */\nexport function Controller(options) {\n const { children = [], path, ...opts } = mapOptions(options);\n return useDecorators((target) => {\n controller(target, opts);\n }, path && Path(path), Children(...children));\n}\n","import { classOf, decorateMethodsOf, decoratorTypeOf, DecoratorTypes, Store } from \"@tsed/core\";\nimport { DI_INTERCEPTOR_OPTIONS, DI_INVOKE_OPTIONS } from \"../constants/constants.js\";\nimport { inject } from \"../fn/inject.js\";\nexport function getInterceptorOptions(target, propertyKey) {\n return Store.fromMethod(target, propertyKey).get(DI_INTERCEPTOR_OPTIONS);\n}\nexport function bindIntercept(target, propertyKey, token, options) {\n const klass = classOf(target);\n const descriptor = Reflect.getOwnPropertyDescriptor(klass.prototype, propertyKey);\n const originalMethod = descriptor.value;\n const symbol = Symbol();\n Store.fromMethod(klass, propertyKey).set(DI_INTERCEPTOR_OPTIONS, options);\n descriptor.value = function (...args) {\n const next = (err) => {\n if (!err) {\n return originalMethod.apply(this, args);\n }\n throw err;\n };\n const context = {\n target,\n propertyKey,\n args,\n options,\n next\n };\n const invokeOpts = {\n rebuild: !!this[DI_INVOKE_OPTIONS]?.rebuild,\n locals: this[DI_INVOKE_OPTIONS]?.locals\n };\n this[symbol] = this[symbol] || inject(token, invokeOpts);\n return this[symbol].intercept({\n ...context,\n options\n }, next);\n };\n return descriptor;\n}\n/**\n * Attaches interceptor to method call and executes the before and after methods\n *\n * @param interceptor\n * @param options\n * @decorator\n */\nexport function Intercept(interceptor, options) {\n return (...args) => {\n const [target, propertyKey] = args;\n const type = decoratorTypeOf(args);\n switch (type) {\n case DecoratorTypes.CLASS:\n decorateMethodsOf(target, Intercept(interceptor, options));\n break;\n case DecoratorTypes.METHOD:\n return bindIntercept(target, propertyKey, interceptor, options);\n }\n };\n}\n","import { ProviderType } from \"../domain/ProviderType.js\";\nimport { Injectable } from \"./injectable.js\";\n/**\n * The decorators `@Interceptor()` declare a new service can be injected in other service or controller on there `constructor`.\n * All services annotated with `@Interceptor()` are constructed one time.\n *\n * > `@Service()` use the `reflect-metadata` to collect and inject service on controllers or other services.\n *\n * @returns {Function}\n * @decorator\n */\nexport function Interceptor() {\n return Injectable({\n type: ProviderType.INTERCEPTOR\n });\n}\n","import { catchError, importPackage } from \"@tsed/core\";\nimport { injector } from \"../fn/injector.js\";\n/**\n * Lazy load a provider from his package and invoke only when the provider is used\n *\n * ```typescript\n * import type {PlatformException} from \"@tsed/platform-exceptions\";\n *\n * @Injectable()\n * export class MyService {\n * @LazyInject(\"PlatformException\", () => import(\"@tsed/platform-exceptions\"))\n * exceptions: Promise<PlatformException>;\n * }\n * ```\n *\n * @param key\n * @param packageName\n * @param resolver\n * @param optional\n * @returns {Function}\n * @decorator\n */\nexport function LazyInject(key, resolver, { optional = false, packageName = resolver.toString() } = {}) {\n return (target, propertyKey) => {\n let bean, token;\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n Reflect.defineProperty(target, propertyKey, {\n async get() {\n if (!token || !bean) {\n const exports = await importPackage(packageName, resolver, optional);\n token = exports[key];\n if (!token) {\n if (!optional) {\n throw new Error(`Unable to lazy load the \"${key}\". The token isn\\'t a valid token provider.`);\n }\n }\n bean = token ? await injector().lazyInvoke(token) : {};\n }\n return bean;\n }\n });\n };\n}\n/**\n * Optionally Lazy load a provider from his package and invoke only when the provider is used\n *\n * ```typescript\n * import type {PlatformException} from \"@tsed/platform-exceptions\";\n *\n * @Injectable()\n * export class MyService {\n * @OptionalLazyInject(\"@tsed/platform-exceptions\")\n * exceptions: Promise<PlatformException>;\n * }\n * ```\n *\n * @param key\n * @param resolver\n * @returns {Function}\n * @decorator\n */\nexport function OptionalLazyInject(key, resolver) {\n return LazyInject(key, resolver, { optional: true });\n}\n","import { useDecorators } from \"@tsed/core\";\nimport { ProviderScope } from \"../domain/ProviderScope.js\";\nimport { ProviderType } from \"../domain/ProviderType.js\";\nimport { Configuration } from \"./configuration.js\";\nimport { Injectable } from \"./injectable.js\";\n/**\n * Declare a new Ts.ED module\n *\n * ## Options\n * - imports: List of Provider which must be built by injector before invoking the module\n * - resolvers: List of external DI must be used to resolve unknown provider\n * - deps: List of provider must be injected to the module constructor (explicit declaration)\n *\n * @param options\n * @decorator\n */\nexport function Module(options = {}) {\n const { scopes, imports, resolvers, deps, scope, ...configuration } = options;\n return useDecorators(Configuration(configuration), Injectable({\n type: ProviderType.MODULE,\n scope: ProviderScope.SINGLETON,\n imports,\n deps,\n injectable: false,\n resolvers\n }));\n}\n","import { StoreSet } from \"@tsed/core\";\nimport { ProviderScope } from \"../domain/ProviderScope.js\";\n/**\n *\n * @param {\"request\" | \"singleton\" | ProviderScope} scope\n * @returns {Function}\n * @constructor\n */\nexport function Scope(scope = ProviderScope.REQUEST) {\n return StoreSet(\"scope\", scope);\n}\n","import { classOf } from \"@tsed/core\";\nimport { DI_USE_PARAM_OPTIONS } from \"../constants/constants.js\";\nimport { ProviderScope } from \"../domain/ProviderScope.js\";\nimport { Inject } from \"./inject.js\";\nimport { Scope } from \"./scope.js\";\n/**\n * Get instance options. This options depending on his invocation context.\n *\n * ```typescript\n * import {Injectable, Opts, UseOpts} from \"@tsed/di\";\n *\n * @Injectable()\n * class MyConfigurableService {\n * source: string;\n * constructor(@Opts options: any = {}) {\n * console.log(\"Hello \", options.source); // log: Hello Service1 then Hello Service2\n *\n * this.source = options.source;\n * }\n * }\n *\n * @Injectable()\n * class MyService1 {\n * constructor(@UseOpts({source: 'Service1'}) service: MyConfigurableService) {\n * console.log(service.source) // log: Service1\n * }\n * }\n *\n * @Injectable()\n * class MyService2 {\n * constructor(@UseOpts({source: 'Service2'}) service: MyConfigurableService) {\n * console.log(service.source) // log: Service2\n * }\n * }\n * ```\n *\n * ::: warning\n * Using @@Opts@@ decorator on a constructor parameter change the Scope of the provider to `ProviderScope.INSTANCE`.\n * :::\n *\n * @param target\n * @param propertyKey\n * @param index\n * @decorator\n */\nexport function Opts(target, propertyKey, index) {\n Scope(ProviderScope.INSTANCE)(classOf(target));\n Inject(DI_USE_PARAM_OPTIONS)(target, propertyKey, index);\n}\n","import { GlobalProviders } from \"../registries/GlobalProviders.js\";\n/**\n * Override a provider which is already registered in ProviderRegistry.\n * @returns {Function}\n * @decorators\n * @param originalProvider\n */\nexport function OverrideProvider(originalProvider) {\n return (target) => {\n GlobalProviders.get(originalProvider).useClass = target;\n };\n}\n","import { Injectable } from \"./injectable.js\";\n/**\n * The decorators `@Service()` declare a new service can be injected in other service or controller on there `constructor`.\n * All services annotated with `@Service()` are constructed one time.\n *\n * > `@Service()` use the `reflect-metadata` to collect and inject service on controllers or other services.\n *\n * @returns {Function}\n * @decorator\n */\nexport function Service() {\n return Injectable();\n}\n","import { decoratorTypeOf, DecoratorTypes, Store, UnsupportedDecoratorType } from \"@tsed/core\";\nimport { DI_USE_OPTIONS, DI_USE_PARAM_OPTIONS } from \"../constants/constants.js\";\n/**\n * Add options to invoke the Service.\n *\n * ```typescript\n * import {Injectable, Opts, UseOpts} from \"@tsed/di\";\n *\n * @Injectable()\n * class MyConfigurableService {\n * source: string;\n * constructor(@Opts options: any = {}) {\n * console.log(\"Hello \", options.source); // log: Hello Service1 then Hello Service2\n *\n * this.source = options.source;\n * }\n * }\n *\n * @Injectable()\n * class MyService1 {\n * constructor(@UseOpts({source: 'Service1'}) service: MyConfigurableService) {\n * console.log(service.source) // log: Service1\n * }\n * }\n *\n * @Injectable()\n * class MyService2 {\n * constructor(@UseOpts({source: 'Service2'}) service: MyConfigurableService) {\n * console.log(service.source) // log: Service2\n * }\n * }\n * ```\n *\n * ::: warning\n * Using @@Opts@@ decorator on a constructor parameter change the Scope of the provider to `ProviderScope.INSTANCE`.\n * :::\n *\n * @returns {Function}\n * @decorator\n * @param options\n */\nexport function UseOpts(options) {\n return (target, propertyKey, index) => {\n const bindingType = decoratorTypeOf([target, propertyKey, index]);\n switch (bindingType) {\n case DecoratorTypes.PARAM_CTOR:\n Store.from(target).merge(`${DI_USE_PARAM_OPTIONS}:${index}`, options);\n break;\n case DecoratorTypes.PROP:\n Store.from(target, propertyKey).set(DI_USE_OPTIONS, options);\n break;\n default:\n throw new UnsupportedDecoratorType(UseOpts, [target, propertyKey, index]);\n }\n };\n}\n","import { catchError } from \"@tsed/core\";\nimport { injector } from \"../fn/injector.js\";\nexport function bindValue(target, propertyKey, expression, defaultValue) {\n const descriptor = {\n get() {\n return injector().settings.get(expression, defaultValue);\n },\n set(value) {\n injector().settings.set(expression, value);\n },\n enumerable: true,\n configurable: true\n };\n catchError(() => Reflect.deleteProperty(target, propertyKey));\n catchError(() => Reflect.defineProperty(target, propertyKey, descriptor));\n}\n/**\n * Return value from Configuration.\n *\n * ## Example\n *\n * ```typescript\n * import {Env} from \"@tsed/core\";\n * import {Constant, Value} from \"@tsed/di\";\n *\n * export class MyClass {\n *\n * @Constant(\"env\")\n * env: Env;\n *\n * @Value(\"swagger.path\")\n * swaggerPath: string;\n *\n * @Value(\"swagger.path\", \"defaultValue\")\n * swaggerPath: string;\n *\n * constructor() {\n * console.log(this.swaggerPath) // undefined. Not available on constructor\n * }\n *\n * $onInit() {\n * console.log(this.swaggerPath) // something\n * }\n * }\n * ```\n *\n * @param expression\n * @param defaultValue\n * @returns {(targetClass: any, attributeName: string) => any}\n * @decorator\n */\nexport function Value(expression, defaultValue) {\n return (target, propertyKey) => {\n return bindValue(target, propertyKey, expression, defaultValue);\n };\n}\n","import { injector } from \"./injector.js\";\nexport function configuration() {\n return injector().settings;\n}\n","import { injector } from \"./injector.js\";\n/**\n * Alter value attached to an event asynchronously.\n * @param eventName\n * @param value\n * @param args\n * @param callThis\n */\nexport function $alterAsync(eventName, value, ...args) {\n return injector().hooks.asyncAlter(eventName, value, args);\n}\n/**\n * Emit an event to all service. See service [lifecycle hooks](/docs/services.md#lifecycle-hooks).\n * @param eventName The event name to emit at all services.\n * @param args List of the parameters to give to each service.\n * @returns A list of promises.\n */\nexport function $emit(eventName, ...args) {\n return injector().hooks.asyncEmit(eventName, args);\n}\n/**\n * Alter value attached to an event.\n * @param eventName\n * @param value\n * @param args\n * @param callThis\n */\nexport function $alter(eventName, value, ...args) {\n return injector().hooks.alter(eventName, value, args);\n}\n","import { injector } from \"./injector.js\";\nexport function refValue(expression, defaultValue) {\n return Object.freeze({\n get value() {\n return injector().settings.get(expression, defaultValue);\n },\n set value(value) {\n injector().settings.set(expression, value);\n }\n });\n}\n","import { registerProvider } from \"../registries/ProviderRegistry.js\";\nimport { InjectorService } from \"./InjectorService.js\";\nexport const LOGGER = Symbol.for(\"LOGGER\");\nregisterProvider({\n provide: LOGGER,\n deps: [InjectorService],\n useFactory(injector) {\n return injector.logger;\n }\n});\n","import { Store } from \"@tsed/core\";\nexport function mergeMount(m1 = {}, m2 = {}) {\n return Object.entries(m2).reduce((mount, [key, controllers]) => {\n return {\n ...mount,\n [key]: (mount[key] || []).concat(controllers)\n };\n }, m1);\n}\nexport function getConfiguration(module, configuration = {}) {\n const store = Store.from(module).get(\"configuration\") || {};\n return {\n ...store,\n ...configuration,\n mount: mergeMount(store.mount, configuration.mount)\n };\n}\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__803__","__WEBPACK_EXTERNAL_MODULE__953__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","DI_INVOKE_OPTIONS","DI_INJECTABLE_PROPS","DI_USE_OPTIONS","DI_USE_PARAM_OPTIONS","DI_INTERCEPTOR_OPTIONS","LocalsContainer","Map","constructor","super","arguments","this","hooks","Hooks","async","asyncEmit","create","SuppressedError","InvalidPropertyTokenError","Error","target","propertyKey","nameOf","classOf","name","globalLocals","globalInvOpts","stagedLocals","localsContainer","providers","rebuild","forEach","p","set","token","use","InjectorService","injector","invokeOptions","detachLocalsContainer","push","cleanAllLocalsContainer","map","item","clear","inject","opts","invoke","locals","injectMany","getMany","getConstructorDependencies","Metadata","setConstructorDependencies","deps","Inject","transform","index","decoratorTypeOf","DecoratorTypes","parameterIndex","paramTypes","type","Array","setToken","useOpts","symbol","Reflect","Set","configurable","add","catchError","deleteProperty","useType","String","getTokenType","originalType","invokeOpts","Store","concat","instance","isPromise","then","result","bindInjectableProperty","Configuration","configuration","args","StoreSet","ProviderScope","ProviderType","Provider","options","PROVIDER","provide","useClass","assign","_provide","getClassOrSymbol","_tokenStore","_store","_useClass","isClass","methodsOf","reduce","startsWith","className","store","path","scope","isAsync","SINGLETON","children","useAsyncFactory","clone","hasChildren","length","hasParent","toString","useFactory","useValue","filter","Boolean","join","ControllerProvider","CONTROLLER","middlewares","useAfter","useBefore","mdlwrs","keys","a","b","GlobalProviderRegistry","has","metadata","merge","meta","createIfNotExists","delete","createRegistry","model","defaultOptions","getRegistrySettings","onInvoke","provider","settings","createRegisterFn","GlobalProviders","registerProvider","providerBuilder","props","baseOpts","acc","asyncFactory","VALUE","class","k","inspect","Props","injectable","interceptor","INTERCEPTOR","controller","Injectable","Container","addProvider","hasProvider","setProvider","getProvider","getProviders","types","_","includes","addProviders","container","colorIfAllowed","colorFn","text","process","env","NO_COLOR","colors","red","yellow","green","InjectionError","origin","isString","tokens","message","stack","originMessage","tokensMessage","static","currentDependency","error","erroredArg","getConstructorArgNames","arg","signature","indexOf","repeat","drawline","printDependencyInjectionError","createContainer","rootModule","entries","lookupProperties","getTokens","config","isArray","list","route","resolveRecursively","MODULE","flatMap","resolveControllers","property","DIConfiguration","initialProps","default","scopes","resolvers","imports","routes","logger","version","v","rootDir","getRaw","debug","level","callbackfn","thisArg","from","setRaw","setValue","defaultValue","getValue","InjectorService_1","globalInjector","console","resolvedConfiguration","scopeOf","toArray","values","getInstance","resolver","alias","ensureProvider","resolve","registerHooks","REQUEST","$onDestroy","on","loadSync","bootstrap","resolveConfiguration","resolveImportsProviders","loadModule","load","loadAsync","emit","mergedConfiguration","deepMerge","deepClone","isFunction","$onInit","eventName","alter","alterAsync","asyncAlter","force","resolvedOpts","mapInvokeOptions","construct","invokeDependency","parent","isInheritedFrom","services","throwInjectorError","isObject","Promise","all","event","cb","hasInjector","destroyInjector","destroy","AutoInjectable","constr","inj","Math","max","i","resolveAutoInjectableArgs","constant","expression","bindConstant","freeze","Constant","decorators","desc","c","getOwnPropertyDescriptor","decorate","__decorate","metadataKey","metadataValue","__metadata","InjectablePropertyType","Controller","RegExp","isArrayOrArrayClass","mapOptions","useDecorators","Path","Children","getInterceptorOptions","bindIntercept","klass","descriptor","originalMethod","next","err","apply","context","intercept","Intercept","decorateMethodsOf","Interceptor","LazyInject","optional","packageName","bean","importPackage","lazyInvoke","OptionalLazyInject","Module","Scope","Opts","INSTANCE","OverrideProvider","originalProvider","Service","UseOpts","UnsupportedDecoratorType","bindValue","Value","$alterAsync","$emit","$alter","refValue","LOGGER","for","mergeMount","m1","m2","mount","controllers","getConfiguration"],"sourceRoot":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../../src/common/fn/configuration.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,MAAM,UAAU,aAAa;IAC3B,OAAO,QAAQ,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../../src/common/fn/configuration.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,MAAM,UAAU,aAAa;IAC3B,OAAO,QAAQ,EAAE,CAAC,QAAkD,CAAC;AACvE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/common/fn/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAM3C,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AAcjE,MAAM,UAAU,eAAe,CAA0C,KAAe,EAAE,WAA4C,EAAE;IACtI,OAAO,CACL,KAAY,EACZ,UAAuC,EAAE,EACiB,EAAE;QAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5C,GAAG,OAAO;YACV,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACZ,OAAO;gBACL,GAAG,GAAG;gBACN,CAAC,IAAI,CAAC,EAAE,UAAU,KAAU;oBACzB,QAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAChC,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;QACJ,CAAC,EACD;YACE,OAAO,CAAC,OAAY;gBAClB,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,YAAY,CAAC,YAAiB;gBAC5B,QAAQ,CAAC,eAAe,GAAG,YAAY,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,KAAU;gBACd,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC1B,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,CAAM;gBACV,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK;gBACH,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,OAAO;gBACL,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK;gBACH,OAAO,QAAQ,CAAC,KAAc,CAAC;YACjC,CAAC;SAC0D,CAC9D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../../src/common/fn/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAM3C,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AAcjE,MAAM,UAAU,eAAe,CAA0C,KAAe,EAAE,WAA4C,EAAE;IACtI,OAAO,CACL,KAAY,EACZ,UAAuC,EAAE,EACiB,EAAE;QAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5C,GAAG,OAAO;YACV,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACZ,OAAO;gBACL,GAAG,GAAG;gBACN,CAAC,IAAI,CAAC,EAAE,UAAU,KAAU;oBACzB,QAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAChC,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;QACJ,CAAC,EACD;YACE,OAAO,CAAC,OAAY;gBAClB,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,YAAY,CAAC,YAAiB;gBAC5B,QAAQ,CAAC,eAAe,GAAG,YAAY,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,KAAU;gBACd,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC1B,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,CAAM;gBACV,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK;gBACH,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,OAAO;gBACL,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK;gBACH,OAAO,QAAQ,CAAC,KAAc,CAAC;YACjC,CAAC;SAC0D,CAC9D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAID,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC3G,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAiC,KAAK,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAiC,KAAK,EAAE;IAChF,IAAI,EAAE,YAAY,CAAC,WAAW;CAC/B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAA+D,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC,EAAE;IACjI,IAAI,EAAE,YAAY,CAAC,UAAU;CAC9B,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getValue,
|
|
1
|
+
import { getValue, setValue } from "@tsed/core";
|
|
2
2
|
export class DIConfiguration {
|
|
3
3
|
constructor(initialProps = {}) {
|
|
4
4
|
this.default = new Map();
|
|
@@ -13,11 +13,6 @@ export class DIConfiguration {
|
|
|
13
13
|
}).forEach(([key, value]) => {
|
|
14
14
|
this.default.set(key, value);
|
|
15
15
|
});
|
|
16
|
-
return proxyDelegation(this, {
|
|
17
|
-
ownKeys(target) {
|
|
18
|
-
return [...target.default.keys(), ...target.map.keys()];
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
16
|
}
|
|
22
17
|
get version() {
|
|
23
18
|
return this.get("version");
|
|
@@ -119,14 +114,6 @@ export class DIConfiguration {
|
|
|
119
114
|
get(propertyKey, defaultValue) {
|
|
120
115
|
return this.getRaw(propertyKey, defaultValue);
|
|
121
116
|
}
|
|
122
|
-
/**
|
|
123
|
-
*
|
|
124
|
-
* @param value
|
|
125
|
-
* @returns {any}
|
|
126
|
-
*/
|
|
127
|
-
resolve(value) {
|
|
128
|
-
return value.replace("${rootDir}", this.rootDir);
|
|
129
|
-
}
|
|
130
117
|
getRaw(propertyKey, defaultValue) {
|
|
131
118
|
const value = getValue(this.map, propertyKey);
|
|
132
119
|
if (value !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DIConfiguration.js","sourceRoot":"","sources":["../../../../src/common/services/DIConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"DIConfiguration.js","sourceRoot":"","sources":["../../../../src/common/services/DIConfiguration.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,4 @@ import { DIConfiguration } from "../services/DIConfiguration.js";
|
|
|
5
5
|
* @decorator
|
|
6
6
|
*/
|
|
7
7
|
export declare function Configuration(configuration?: Partial<TsED.Configuration>): Function;
|
|
8
|
-
export type Configuration = TsED.
|
|
8
|
+
export type Configuration = TsED.DIConfiguration & DIConfiguration;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { DIConfiguration } from "../services/DIConfiguration.js";
|
|
2
|
-
export declare function configuration(): TsED.
|
|
2
|
+
export declare function configuration(): TsED.DIConfiguration & DIConfiguration;
|
|
@@ -16,7 +16,7 @@ type ProviderBuilder<Token extends TokenProvider, BaseProvider, T extends object
|
|
|
16
16
|
class(c: Type): ProviderBuilder<Token, BaseProvider, T>;
|
|
17
17
|
};
|
|
18
18
|
export declare function providerBuilder<Provider, Picked extends keyof Provider>(props: string[], baseOpts?: Partial<ProviderOpts<Provider>>): <Token extends TokenProvider>(token: Token, options?: Partial<ProviderOpts<Type>>) => ProviderBuilder<Token, Provider, Pick<Provider, Picked>>;
|
|
19
|
-
type PickedProps = "scope" | "path" | "alias" | "
|
|
19
|
+
type PickedProps = "scope" | "path" | "alias" | "hooks" | "deps" | "resolvers" | "imports" | "configuration";
|
|
20
20
|
export declare const injectable: <Token extends TokenProvider>(token: Token, options?: Partial<ProviderOpts<Type>>) => ProviderBuilder<Token, Provider<any>, Pick<Provider<any>, "type" | PickedProps>>;
|
|
21
21
|
export declare const interceptor: <Token extends TokenProvider>(token: Token, options?: Partial<ProviderOpts<Type>>) => ProviderBuilder<Token, Provider<any>, Pick<Provider<any>, "type" | PickedProps>>;
|
|
22
22
|
export declare const controller: <Token extends TokenProvider>(token: Token, options?: Partial<ProviderOpts<Type>>) => ProviderBuilder<Token, ControllerProvider<any>, Pick<ControllerProvider<any>, "children" | "middlewares" | PickedProps>>;
|
|
@@ -6,6 +6,11 @@ declare global {
|
|
|
6
6
|
namespace TsED {
|
|
7
7
|
interface Context {
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Here to allow extension on DIConfiguration base service
|
|
11
|
+
*/
|
|
12
|
+
interface DIConfiguration {
|
|
13
|
+
}
|
|
9
14
|
interface Configuration extends Record<string, any> {
|
|
10
15
|
scopes: {
|
|
11
16
|
[key: string]: ProviderScope;
|
|
@@ -47,11 +47,5 @@ export declare class DIConfiguration {
|
|
|
47
47
|
* @returns {undefined|any}
|
|
48
48
|
*/
|
|
49
49
|
get<T = any>(propertyKey: string, defaultValue?: T): T;
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
52
|
-
* @param value
|
|
53
|
-
* @returns {any}
|
|
54
|
-
*/
|
|
55
|
-
resolve(value: any): any;
|
|
56
50
|
protected getRaw(propertyKey: string, defaultValue?: any): any;
|
|
57
51
|
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@tsed/di",
|
|
3
3
|
"description": "DI module for Ts.ED Framework",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "8.0.0-beta.
|
|
5
|
+
"version": "8.0.0-beta.6",
|
|
6
6
|
"source": "./src/index.ts",
|
|
7
7
|
"main": "./lib/esm/index.js",
|
|
8
8
|
"module": "./lib/esm/index.js",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"uuid": "^10.0.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@tsed/barrels": "8.0.0-beta.
|
|
33
|
-
"@tsed/core": "8.0.0-beta.
|
|
32
|
+
"@tsed/barrels": "8.0.0-beta.6",
|
|
33
|
+
"@tsed/core": "8.0.0-beta.6",
|
|
34
34
|
"@tsed/logger": "^6.7.8",
|
|
35
|
-
"@tsed/schema": "8.0.0-beta.
|
|
36
|
-
"@tsed/typescript": "8.0.0-beta.
|
|
35
|
+
"@tsed/schema": "8.0.0-beta.6",
|
|
36
|
+
"@tsed/typescript": "8.0.0-beta.6",
|
|
37
37
|
"cross-env": "7.0.3",
|
|
38
38
|
"eslint": "9.12.0",
|
|
39
39
|
"typescript": "5.4.5",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"webpack": "^5.75.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"@tsed/core": "8.0.0-beta.
|
|
44
|
+
"@tsed/core": "8.0.0-beta.6",
|
|
45
45
|
"@tsed/logger": ">=6.7.5",
|
|
46
|
-
"@tsed/schema": "8.0.0-beta.
|
|
46
|
+
"@tsed/schema": "8.0.0-beta.6"
|
|
47
47
|
},
|
|
48
48
|
"peerDependenciesMeta": {
|
|
49
49
|
"@tsed/core": {
|