@tsed/di 8.0.0-rc.3 → 8.0.0-rc.5
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/decorators/autoInjectable.js +22 -0
- package/lib/esm/common/decorators/autoInjectable.js.map +1 -1
- package/lib/esm/common/decorators/configuration.js +4 -8
- package/lib/esm/common/decorators/configuration.js.map +1 -1
- package/lib/esm/common/decorators/lazyInject.js +35 -55
- package/lib/esm/common/decorators/lazyInject.js.map +1 -1
- package/lib/esm/common/fn/configuration.js +9 -1
- package/lib/esm/common/fn/configuration.js.map +1 -1
- package/lib/esm/common/fn/constant.js +2 -2
- package/lib/esm/common/fn/constant.js.map +1 -1
- package/lib/esm/common/fn/lazyInject.js +26 -0
- package/lib/esm/common/fn/lazyInject.js.map +1 -0
- package/lib/esm/common/index.js +1 -0
- package/lib/esm/common/index.js.map +1 -1
- package/lib/esm/common/services/InjectorService.js +1 -11
- package/lib/esm/common/services/InjectorService.js.map +1 -1
- package/lib/types/common/decorators/autoInjectable.d.ts +22 -0
- package/lib/types/common/decorators/configuration.d.ts +2 -1
- package/lib/types/common/decorators/lazyInject.d.ts +18 -15
- package/lib/types/common/fn/configuration.d.ts +3 -0
- package/lib/types/common/fn/lazyInject.d.ts +10 -0
- package/lib/types/common/index.d.ts +1 -0
- package/lib/types/common/services/InjectorService.d.ts +1 -2
- 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:()=>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})()));
|
|
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:()=>Re,$alterAsync:()=>be,$emit:()=>Ie,AutoInjectable:()=>Z,Configuration:()=>b,Constant:()=>re,Container:()=>x,Controller:()=>ne,ControllerProvider:()=>S,DIConfiguration:()=>H,DI_INJECTABLE_PROPS:()=>t,DI_INTERCEPTOR_OPTIONS:()=>i,DI_INVOKE_OPTIONS:()=>e,DI_USE_OPTIONS:()=>r,DI_USE_PARAM_OPTIONS:()=>s,GlobalProviderRegistry:()=>T,GlobalProviders:()=>w,Inject:()=>P,Injectable:()=>L,InjectablePropertyType:()=>se,InjectionError:()=>$,InjectorService:()=>Q,Intercept:()=>ce,Interceptor:()=>ue,InvalidPropertyTokenError:()=>l,LOGGER:()=>Se,LazyInject:()=>de,LocalsContainer:()=>c,Module:()=>ge,OptionalLazyInject:()=>fe,Opts:()=>ve,OverrideProvider:()=>me,Provider:()=>C,ProviderScope:()=>I,ProviderType:()=>R,Scope:()=>ye,Service:()=>Oe,UseOpts:()=>Ee,Value:()=>Pe,bindConstant:()=>te,bindIntercept:()=>ae,bindValue:()=>ke,cleanAllLocalsContainer:()=>v,colors:()=>V,configuration:()=>u,constant:()=>ee,controller:()=>M,createContainer:()=>U,destroyInjector:()=>X,detachLocalsContainer:()=>y,getConfiguration:()=>we,getConstructorDependencies:()=>E,getInterceptorOptions:()=>ie,getTokens:()=>K,hasInjector:()=>Y,inject:()=>m,injectMany:()=>O,injectable:()=>D,injector:()=>W,interceptor:()=>_,invokeOptions:()=>g,lazyInject:()=>le,localsContainer:()=>f,mergeMount:()=>Te,optionalLazyInject:()=>he,providerBuilder:()=>A,refValue:()=>Ce,registerProvider:()=>j,resolveControllers:()=>B,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")}}function u(e,t){if(e){const r=a.Store.from(e);return t&&r.set("configuration",t),r.get("configuration",t)}return W().settings}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;class l 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 h,p={};const d=[];function f({providers:e,rebuild:t}={}){return h&&!e||(h=new c,e&&(e.forEach((e=>{h.set(e.token,e.use)})),h.set(Q,W())),t&&(p.rebuild=t)),h}function g(){return{...p}}function y(){h&&d.push(h),h=void 0,p={}}function v(){y(),d.map((e=>e.clear()))}function m(e,t){return W().invoke(e,t?.locals||f(),{...t,...g()})}function O(e,t){return W().getMany(e,t?.locals||f(),t)}function E(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 P(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=E(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 u=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 l(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[u]&&(this[u]=h===Array?O(n,p):m(t,p)),[].concat(this[u]).forEach(((e,t)=>{(0,a.isPromise)(this[u])&&e.then((e=>{this[u][t]=e,h!==Array&&(this[u]=e)}))})),i(this[u],{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:u(t[0],e);break;default:case a.DecoratorTypes.PARAM_CTOR:return P(b)(t[0],t[1],t[2])}}}var I,R;!function(e){e.SINGLETON="singleton",e.REQUEST="request",e.INSTANCE="instance"}(I||(I={})),function(e){e.VALUE="value",e.PROVIDER="provider",e.MODULE="module",e.CONTROLLER="controller",e.INTERCEPTOR="interceptor",e.MIDDLEWARE="middleware"}(R||(R={}));class C{constructor(e,t={}){this.type=R.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()?I.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 C{constructor(e,t={}){super(e,t),this.type=R.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 T 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=R.PROVIDER;if("string"==typeof e)t=e;else{const r=this.get(e);r&&(t=r.type)}return this.#e.get(t)||{model:C}}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||R.PROVIDER;if(!this.has(e)){const{model:s=C}=this.#e.get(r)||{},o=new s(e,t);this.set(e,o)}return this.get(e)}}const w=new T;function j(e){return w.merge(e.provide,e)}function A(e,t={}){return(r,s={})=>{const o=w.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=R.VALUE,this},class(e){return o.useClass=e,this},store:()=>o.store,inspect:()=>o,token:()=>o.token})}}w.createRegistry(R.CONTROLLER,S);const N=["type","scope","path","alias","hooks","deps","resolvers","imports","configuration"],D=A(N),_=A(N,{type:R.INTERCEPTOR}),M=A([...N,"middlewares"],{type:R.CONTROLLER});function L(e={}){return t=>{const r={...e,...e.provide?{useClass:t}:{provide:t}};D(r.provide,r)}}class x extends Map{add(e,t={}){const r=w.get(e)?.clone()||new C(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 F=e=>e=>(process.env.NO_COLOR,e),V={red:F(),yellow:F(),green:F()};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=V.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)+V.red("^"+"‾".repeat(r.length-1)))(n):"")}(e,{...t,message:r.message})),new $(e,r)}}function U(e){const t=new x(w.entries());return e&&t.delete(e),t}const G=["mount","imports"];function K(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 z(e){return e.map((({token:e})=>w.get(e))).filter((e=>e?.type===R.MODULE&&e.configuration)).flatMap((e=>B(e.configuration)))}function B(e){const t=G.flatMap((t=>K(e[t])));return[...z(t),...t].filter((e=>!!e.route))}class H{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 q;let J,Q=q=class extends x{#t;constructor(){super(),this.settings=new H,this.logger=console,this.hooks=new a.Hooks,this.resolvedConfiguration=!1,this.#t=new c,this.#t.set(q,this)}get resolvers(){return this.settings.resolvers}get scopes(){return this.settings.scopes||{}}scopeOf(e){return e.scope||this.scopes[String(e.type)]||I.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 I.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 I.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)!==I.SINGLETON||this.invoke(e.token)}bootstrap(e=U()){return this.addProviders(e),this.resolveConfiguration(),this.resolveImportsProviders(),this}loadModule(e){this.settings.routes=this.settings.routes.concat(B(this.settings));const t=U();return t.delete(e),t.addProvider(e,{type:"server:module",scope:I.SINGLETON}),this.load(t)}async load(e=U()){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}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)||!w.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&&w.onInvoke(p,r,{...n,injector:this});let f=!1;try{const e=e=>(t,n)=>{if(f={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,C,1)?p:this.invoke(t,r,{parent:e,useOpts:i})};h.forEach(e());const t=u.map(e(i));f=!1,d=l(t)}catch(e){$.throwInjectorError(i,f,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!==q)).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 C(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||E(n.useClass),o=e=>new n.useClass(...e)}return{token:e,scope:u||a.Store.from(e).get("scope")||I.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 W(e){return J&&!e?.rebuild||(J=new Q,e&&e.logger&&(J.logger=e.logger),e?.settings&&J.settings.set(e.settings)),J}function Y(){return!!J}async function X(){await(J?.destroy()),J=void 0}function Z(){return e=>class extends e{constructor(...t){super(...function(e,t){const r=W(),s=new c,o=E(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 ee(e,t){return W().settings.get(e,t)}function te(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=ee(r,s);return this[o]=Object.freeze((0,a.deepClone)(e)),this[o]},set(e){void 0===(ee(r,s)||this[o])&&void 0!==e&&(this[o]=e)},enumerable:!0,configurable:!0})}function re(e,t){return(r,s)=>te(r,s,e,t)}Q=q=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}([L({scope:I.SINGLETON}),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:paramtypes",[])],Q);var se,oe=o(953);function ne(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=>{M(e,s)}),r&&(0,oe.Path)(r),(0,oe.Children)(...t))}function ie(e,t){return a.Store.fromMethod(e,t).get(i)}function ae(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]||m(s,c),this[l].intercept({...a,options:o},i)},c}function ce(e,t){return(...r)=>{const[s,o]=r;switch((0,a.decoratorTypeOf)(r)){case a.DecoratorTypes.CLASS:(0,a.decorateMethodsOf)(s,ce(e,t));break;case a.DecoratorTypes.METHOD:return ae(s,o,e,t)}}}function ue(){return L({type:R.INTERCEPTOR})}async function le(e){const{default:t}=await e();let r=W().get(t);if(!r){r=await W().invoke(t);const e=r;"$onInit"in e&&(0,a.isFunction)(e.$onInit)&&await e.$onInit()}return r}async function he(e){try{return await le(e)}catch(e){return}}function pe(e,t=!1){function r(e,r){return async()=>{try{const{[e]:t}=await r();return{default:t}}catch(e){if(!t)throw e;return}}}return(0,a.isFunction)(e[0])?r("default",e[0]):r(e[0],e[1])}function de(...e){let t=pe(e);return(e,r)=>{(0,a.catchError)((()=>Reflect.deleteProperty(e,r))),Reflect.defineProperty(e,r,{get:async()=>le(t)})}}function fe(...e){const t=pe(e,!0);return(e,r)=>{(0,a.catchError)((()=>Reflect.deleteProperty(e,r))),Reflect.defineProperty(e,r,{get:async()=>he(t)})}}function ge(e={}){const{scopes:t,imports:r,resolvers:s,deps:o,scope:n,...i}=e;return(0,a.useDecorators)(b(i),L({type:R.MODULE,scope:I.SINGLETON,imports:r,deps:o,injectable:!1,resolvers:s}))}function ye(e=I.REQUEST){return(0,a.StoreSet)("scope",e)}function ve(e,t,r){ye(I.INSTANCE)((0,a.classOf)(e)),P(s)(e,t,r)}function me(e){return t=>{w.get(e).useClass=t}}function Oe(){return L()}function Ee(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(Ee,[t,o,n])}}}function ke(e,t,r,s){const o={get:()=>W().settings.get(r,s),set(e){W().settings.set(r,e)},enumerable:!0,configurable:!0};(0,a.catchError)((()=>Reflect.deleteProperty(e,t))),(0,a.catchError)((()=>Reflect.defineProperty(e,t,o)))}function Pe(e,t){return(r,s)=>ke(r,s,e,t)}function be(e,t,...r){return W().hooks.asyncAlter(e,t,r)}function Ie(e,...t){return W().hooks.asyncEmit(e,t)}function Re(e,t,...r){return W().hooks.alter(e,t,r)}function Ce(e,t){return Object.freeze({get value(){return W().settings.get(e,t)},set value(t){W().settings.set(e,t)}})}!function(e){e.METHOD="method",e.PROPERTY="property",e.CONSTANT="constant",e.VALUE="value",e.INTERCEPTOR="interceptor"}(se||(se={}));const Se=Symbol.for("LOGGER");function Te(e={},t={}){return Object.entries(t).reduce(((e,[t,r])=>({...e,[t]:(e[t]||[]).concat(r)})),e)}function we(e,t={}){const r=a.Store.from(e).get("configuration")||{};return{...r,...t,mount:Te(r.mount,t.mount)}}j({provide:Se,deps:[Q],useFactory:e=>e.logger})})(),n})()));
|
|
2
2
|
//# sourceMappingURL=di.umd.min.js.map
|