di-tory
Version:
Compose applications with dependency injection
1 lines • 4 kB
JavaScript
;var DiTory=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,i={};((t,r)=>{for(var n in r)e(t,n,{get:r[n],enumerable:!0})})(i,{Module:()=>P,Scope:()=>g});var s,o=class e extends Error{static messages={0:"Stack is empty",1:"Item already exists in stack"};static Empty=new e(0);static Exists=new e(1);constructor(t){super(e.messages[t])}},c=class{constructor(e=[],t=new Set){this.items=e,this.set=t}push(e){if(this.set.has(e))throw new o(1);this.items.push(e),this.set.add(e)}pop(){const e=this.items.pop();if(null==e)throw new o(0);return this.set.delete(e),e}peek(){return this.items.at(-1)}toStringArray(){return this.items.map(String)}get length(){return this.items.length}},a=class extends Error{constructor(e,t,r,n){super(`${e} in attempting to resolve <${r}>${t.length>0?` with stack ${t.map((e=>`<${e}>`)).join(" <- ")}`:""}`,{cause:n}),this.code=e,this.resolutionStack=t,this.item=r}},l=new WeakMap,u={enter(){},run:e=>e(),getStore:()=>l,exit(){}},p=e=>[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)],w={transient:"transient",singleton:"singleton",module:"module",async:"async",forced:{module:"!module",async:"!async"}},h=e=>"!"===e?.charAt(0)?e.slice(1):e,g=w,d=new Map,f=(e,t,r,n={})=>{const i={...e,...t},s=new c,o=new Map,l=new Set(p(t)),g=new Proxy(Object.create(null),{get:(e,t)=>O(t)}),f=()=>{const e=u.getStore(),t=e.get(g);if(null!=t)return t;const r=new Map;return e.set(g,r),r};let y;const m=({scope:e})=>{const t=h(e);return"async"===t?f():"singleton"===t?d:"transient"===t?y:o},b=e=>{const t=s.peek();if(null==t)return;const r=i[t],n=((e,t)=>{if(void 0===t)return e;const r=h(t);return void 0===e?r:"!"===e.charAt(0)||e===w.singleton?e:e===w.module?r===w.async||r===w.transient?r:e:e===w.async&&r===w.transient?r:e})(r.scope,e);null!=n&&(r.scope=n)},O=e=>{0===s.length&&(y=new Map);const t=i[e];if(null==t)throw new a("ResolverIsNotDefined",s.toStringArray(),String(e));const o=m(t);if(o.has(e))return o.get(e);const c=s.toStringArray();try{s.push(e)}catch{throw new a("CircularDependencyFailure",s.toStringArray(),String(e))}let l;try{l=t(g,n)}catch(t){if(t instanceof a)throw t;throw new a("InstantiationFailure",c,String(e),t)}return s.pop(),b(t.scope),m(t).set(e,l),0===s.length&&r?.[e]?.call(l,g,n),l};return new Proxy(Object.create(null),{get(e,t){if(l.has(t))return O(t);throw new a("PrivateMemberAccessFailure",[],String(t))}})},y=(e,t)=>{const r=(t,r)=>e(t,r);return r.scope=t,Object.defineProperty(r,"name",{value:`${t}::${e.name}`}),r},m=(e,t)=>{const r={};for(const n of p(e))r[n]=y(e[n],t);return r},b=e=>t=>(...r)=>e(t,...r),O=e=>{const t={};for(const r of p(e)){const n=e[r];if("function"!=typeof n)throw new Error(`Expected ${String(r)} to be a function, but got ${typeof n}`);t[r]=b(n),t[r].scope=`!${g.module}`}return t},j=new WeakMap,P=()=>{const e={},t={},r={privateResolvers:e,publicResolvers:t,initializers:null},n={private(t,i){if(null!=r.initializers)throw new Error("Cannot extend initialized module");return Object.defineProperties(e,Object.getOwnPropertyDescriptors(null!=i?m(t,i):t)),n},privateImpl(t){if(null!=r.initializers)throw new Error("Cannot extend initialized module");return Object.defineProperties(e,Object.getOwnPropertyDescriptors(O(t))),n},public(e,i){if(null!=r.initializers)throw new Error("Cannot extend initialized module");return Object.defineProperties(t,Object.getOwnPropertyDescriptors(null!=i?m(e,i):e)),n},publicImpl(e){if(null!=r.initializers)throw new Error("Cannot extend initialized module");return Object.defineProperties(t,Object.getOwnPropertyDescriptors(O(e))),n},init:e=>(r.initializers=e,n),create:(n={})=>f(e,t,r.initializers,n)};return j.set(n,r),n};return s=i,((i,s,o,c)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let a of r(s))n.call(i,a)||a===o||e(i,a,{get:()=>s[a],enumerable:!(c=t(s,a))||c.enumerable});return i})(e({},"__esModule",{value:!0}),s)})();//# sourceMappingURL=di-tory.min.js.map