UNPKG

@homer0/jimple

Version:

An extended version of the Jimple lib, with extra features

2 lines 3.61 kB
var _=Object.create;var x=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var N=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var b=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of T(e))!w.call(t,n)&&n!==r&&x(t,n,{get:()=>e[n],enumerable:!(o=D(e,n))||o.enumerable});return t};var G=(t,e,r)=>(r=t!=null?_(J(t)):{},b(e||!t||!t.__esModule?x(r,"default",{value:t,enumerable:!0}):r,t));var g=N((q,R)=>{"use strict";function d(t,e){if(!t)throw new Error(e)}function u(t){return Object.prototype.toString.call(t)==="[object Function]"&&t.constructor.name==="Function"}function O(t){if(Object.prototype.toString.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.prototype}function y(t,e){d(t.has(e),`Identifier "${e}" is not defined.`)}function h(t,e){return d(u(e),"Service definition is not a Closure or invokable object"),t.add(e),e}var f=class{static provider(e){return{register:e}}constructor(e){this._items={},this._instances=new Map,this._factories=new Set,this._protected=new Set,e=O(e)?e:{},Object.keys(e).forEach(function(r){this.set(r,e[r])},this)}get(e){y(this,e);let r=this._items[e],o;return u(r)?this._protected.has(r)?o=r:this._instances.has(r)?o=this._instances.get(r):(o=r(this),this._factories.has(r)||this._instances.set(r,o)):o=r,o}set(e,r){this._items[e]=r}has(e){return this._items.hasOwnProperty(e)}factory(e){return h(this._factories,e)}protect(e){return h(this._protected,e)}keys(){return Object.keys(this._items)}extend(e,r){y(this,e);let o=this._items[e];d(u(o)&&this._protected.has(o)===!1,`Identifier '${e}' does not contain a service definition`),d(u(r),`The 'new' service definition for '${e}' is not a invokable object.`),this._items[e]=function(n){return r(o(n),n)},this._factories.has(o)&&(this._factories.delete(o),this._factories.add(this._items[e]))}register(e){e.register(this)}raw(e){return y(this,e),this._items[e]}};R.exports=f});var C=G(g(),1),j=C.default;var l=class extends j{try(e){if(this.has(e))return this.get(e)}},L=(...t)=>new l(...t);var p=()=>(t,e,r)=>({[t]:!0,[e]:r});var v=()=>(t,e,r)=>{let o=(...s)=>{let i=r(...s);return p()(t,e,i)},n={name:t,resource:null,get(s,i){let c;if(i===this.name)c=!0;else if(i===e){if(this.resource===null){let m=r();this.resource=m}c=this.resource}else c=s[i];return c},has(s,i){return i===this.name||i===e?!0:i in s}};return new Proxy(o,n)};var K=()=>(t,e,r)=>{let o=p();return n=>{let s=[t,e],i=Object.keys(n);if(i.some(a=>s.includes(String(a))))throw new Error(`No item on the collection can have the keys \`${t}\` nor \`${e}\``);let m=i.find(a=>typeof n[a]?.[e]!="function");if(m)throw new Error(`The item \`${String(m)}\` is invalid: it doesn't have a \`${e}\` function`);return{...o(t,e,r?(...a)=>r(n,...a):(...a)=>{i.forEach(P=>{let I=n[P][e];I(...a)})}),...n}}};var F=class{get(e,r,o){let n=e[r];return typeof n<"u"?n:o()}resolve(e,r,o){return e.reduce((s,i)=>{if(o[i])return s[i]=r.get(o[i]),s;let c=i;return r.has(c)&&(s[i]=r.get(c)),s},{})}},re=()=>new F;var S=()=>{let t=p();return e=>t("provider","register",e)},ie=S();var $=()=>{let t=v();return e=>t("provider","register",e)},ae=$();var E=()=>K()("provider","register"),ue=E();export{F as InjectHelper,l as Jimple,S as createProvider,$ as createProviderCreator,E as createProviders,re as injectHelper,L as jimple,ie as provider,ae as providerCreator,ue as providers,v as resourceCreatorFactory,p as resourceFactory,K as resourcesCollectionFactory}; //# sourceMappingURL=index.js.map