react-decoupler
Advanced tools
Comparing version 0.1.5 to 0.2.0
@@ -151,3 +151,5 @@ (function (global, factory) { | ||
assertInDev(!this._deps.has(key), "Service key already used: " + toString(key)); | ||
if (this._deps.has(key) && !options.allowOverwrite) { | ||
throw new Error("Service key already used: " + toString(key)); | ||
} | ||
@@ -154,0 +156,0 @@ if (options.withParams && typeof service !== 'function') { |
@@ -1,2 +0,2 @@ | ||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["exports","react","prop-types"],r):r((e=e||self).ReactDecoupler={},e.React,e.PropTypes)}(this,(function(e,r,t){"use strict";function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function n(){return(n=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e}).apply(this,arguments)}function i(e,r){e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.__proto__=r}r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,t=t&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t;var s=function(e){return e.toString?e.toString():e},c=Symbol("Injector Lookup Symbol"),a=function(){function e(){var e=this;o(this,"_lookup",(function(r){e._deps.has(r),s(r);var t=e._deps.get(r),o=t.service,n=t.options;if(n.withParams){if(!e._boundLookups.has(r)){var i=e._makeDepArgs(n);e._boundLookups.set(r,o.bind.apply(o,[null].concat(i)))}var c=e._boundLookups.get(r);return n.asInstance?new c:c}return n.asInstance?new o:o})),o(this,"_makeDepArgs",(function(r){return Array.isArray(r.withParams)?r.withParams.map((function(r){return"object"==typeof r&&null!=r[c]?e._lookup(r[c]):r})):[]})),this._deps=new Map,this._boundLookups=new Map}e.fromServices=function(r){var t=new e;return Object.keys(r).forEach((function(e){t.register(e,r[e])})),t};var r=e.prototype;return r.register=function(e,r,t){if(void 0===t&&(t={}),this._deps.has(e),s(e),t.withParams&&"function"!=typeof r)throw new Error('Cannot use "withParams" option with '+e+" of type "+typeof r+"; must be function or class.");this._deps.set(e,{service:r,options:t})},r.resolve=function(e){var r=this;if(Array.isArray(e))return e.map(this._lookup);if(e&&"object"==typeof e)return Object.entries(e).reduce((function(e,t){var o=t[0];return e[t[1]]=r._lookup(o),e}),{});throw new Error("Unsupported dependency list. Only Arrays and Objects are supported. Got: "+JSON.stringify(e))},e}();function u(e,r){return e(r={exports:{}},r.exports),r.exports | ||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["exports","react","prop-types"],r):r((e=e||self).ReactDecoupler={},e.React,e.PropTypes)}(this,(function(e,r,t){"use strict";function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function n(){return(n=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e}).apply(this,arguments)}function i(e,r){e.prototype=Object.create(r.prototype),e.prototype.constructor=e,e.__proto__=r}r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,t=t&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t;var s=function(e){return e.toString?e.toString():e},c=Symbol("Injector Lookup Symbol"),a=function(){function e(){var e=this;o(this,"_lookup",(function(r){e._deps.has(r),s(r);var t=e._deps.get(r),o=t.service,n=t.options;if(n.withParams){if(!e._boundLookups.has(r)){var i=e._makeDepArgs(n);e._boundLookups.set(r,o.bind.apply(o,[null].concat(i)))}var c=e._boundLookups.get(r);return n.asInstance?new c:c}return n.asInstance?new o:o})),o(this,"_makeDepArgs",(function(r){return Array.isArray(r.withParams)?r.withParams.map((function(r){return"object"==typeof r&&null!=r[c]?e._lookup(r[c]):r})):[]})),this._deps=new Map,this._boundLookups=new Map}e.fromServices=function(r){var t=new e;return Object.keys(r).forEach((function(e){t.register(e,r[e])})),t};var r=e.prototype;return r.register=function(e,r,t){if(void 0===t&&(t={}),this._deps.has(e)&&!t.allowOverwrite)throw new Error("Service key already used: "+s(e));if(t.withParams&&"function"!=typeof r)throw new Error('Cannot use "withParams" option with '+e+" of type "+typeof r+"; must be function or class.");this._deps.set(e,{service:r,options:t})},r.resolve=function(e){var r=this;if(Array.isArray(e))return e.map(this._lookup);if(e&&"object"==typeof e)return Object.entries(e).reduce((function(e,t){var o=t[0];return e[t[1]]=r._lookup(o),e}),{});throw new Error("Unsupported dependency list. Only Arrays and Objects are supported. Got: "+JSON.stringify(e))},e}();function u(e,r){return e(r={exports:{}},r.exports),r.exports | ||
/** @license React v16.13.1 | ||
@@ -9,3 +9,3 @@ * react-is.production.min.js | ||
* LICENSE file in the root directory of this source tree. | ||
*/}var p="function"==typeof Symbol&&Symbol.for,f=p?Symbol.for("react.element"):60103,y=p?Symbol.for("react.portal"):60106,l=p?Symbol.for("react.fragment"):60107,d=p?Symbol.for("react.strict_mode"):60108,m=p?Symbol.for("react.profiler"):60114,v=p?Symbol.for("react.provider"):60109,b=p?Symbol.for("react.context"):60110,h=p?Symbol.for("react.async_mode"):60111,S=p?Symbol.for("react.concurrent_mode"):60111,w=p?Symbol.for("react.forward_ref"):60112,P=p?Symbol.for("react.suspense"):60113,g=p?Symbol.for("react.suspense_list"):60120,j=p?Symbol.for("react.memo"):60115,O=p?Symbol.for("react.lazy"):60116,$=p?Symbol.for("react.block"):60121,x=p?Symbol.for("react.fundamental"):60117,_=p?Symbol.for("react.responder"):60118,C=p?Symbol.for("react.scope"):60119;function M(e){if("object"==typeof e&&null!==e){var r=e.$$typeof;switch(r){case f:switch(e=e.type){case h:case S:case l:case m:case d:case P:return e;default:switch(e=e&&e.$$typeof){case b:case w:case O:case j:case v:return e;default:return r}}case y:return r}}}function E(e){return M(e)===S}var k={AsyncMode:h,ConcurrentMode:S,ContextConsumer:b,ContextProvider:v,Element:f,ForwardRef:w,Fragment:l,Lazy:O,Memo:j,Portal:y,Profiler:m,StrictMode:d,Suspense:P,isAsyncMode:function(e){return E(e)||M(e)===h},isConcurrentMode:E,isContextConsumer:function(e){return M(e)===b},isContextProvider:function(e){return M(e)===v},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===f},isForwardRef:function(e){return M(e)===w},isFragment:function(e){return M(e)===l},isLazy:function(e){return M(e)===O},isMemo:function(e){return M(e)===j},isPortal:function(e){return M(e)===y},isProfiler:function(e){return M(e)===m},isStrictMode:function(e){return M(e)===d},isSuspense:function(e){return M(e)===P},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===l||e===S||e===m||e===d||e===P||e===g||"object"==typeof e&&null!==e&&(e.$$typeof===O||e.$$typeof===j||e.$$typeof===v||e.$$typeof===b||e.$$typeof===w||e.$$typeof===x||e.$$typeof===_||e.$$typeof===C||e.$$typeof===$)},typeOf:M},A=u((function(e,r){0})),T=(A.AsyncMode,A.ConcurrentMode,A.ContextConsumer,A.ContextProvider,A.Element,A.ForwardRef,A.Fragment,A.Lazy,A.Memo,A.Portal,A.Profiler,A.StrictMode,A.Suspense,A.isAsyncMode,A.isConcurrentMode,A.isContextConsumer,A.isContextProvider,A.isElement,A.isForwardRef,A.isFragment,A.isLazy,A.isMemo,A.isPortal,A.isProfiler,A.isStrictMode,A.isSuspense,A.isValidElementType,A.typeOf,u((function(e){e.exports=k}))),F={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},L={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},I={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},R={};function D(e){return T.isMemo(e)?I:R[e.$$typeof]||F}R[T.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},R[T.Memo]=I;var N=Object.defineProperty,z=Object.getOwnPropertyNames,q=Object.getOwnPropertySymbols,V=Object.getOwnPropertyDescriptor,G=Object.getPrototypeOf,H=Object.prototype;var J=function e(r,t,o){if("string"!=typeof t){if(H){var n=G(t);n&&n!==H&&e(r,n,o)}var i=z(t);q&&(i=i.concat(q(t)));for(var s=D(r),c=D(t),a=0;a<i.length;++a){var u=i[a];if(!(L[u]||o&&o[u]||c&&c[u]||s&&s[u])){var p=V(t,u);try{N(r,u,p)}catch(e){}}}}return r},U=r.createContext(),B=function(e){function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(){var e=this.context;if(!e)throw new Error("Must be used inside a InjectorProvider");var r=this.props,t=r.children,o=r.deps;return t(e.resolve(o))},r}(r.Component);o(B,"contextType",U),o(B,"propTypes",{children:t.func.isRequired,deps:t.oneOfType([t.arrayOf(t.String),t.objectOf(t.String)])});var K=function(){if(!r.useContext)throw new Error("Hooks not found on React. Are you using React v16.8 or greater?");var e=r.useContext(U);if(!e)throw new Error("Must be used inside a InjectorProvider");return e};e.InjectServices=B,e.InjectorProvider=function(e){var t=e.services,o=e.injector,n=(e.value,e.children);if(!t&&!o)throw new Error("Must provide services or injector prop to InjectorProvider.");var i=o||a.fromServices(t);return r.createElement(U.Provider,{value:i},n)},e.Lookup=function(e){var r;if(null==e)throw new Error("Lookup() does not support nullish values");return(r={})[c]=e,r},e.ServiceInjector=a,e.useInjector=K,e.useServices=function(e){return K().resolve(e)},e.withServices=function(e){var t=e.displayName||e.name||e.constructor&&e.constructor.name||"Component",s=function(t){function o(){return t.apply(this,arguments)||this}return i(o,t),o.prototype.render=function(){var t=e.dependencies||[],o={};return Array.isArray(t)?o.services=this.context.resolve(t):o=this.context.resolve(t),r.createElement(e,n({},this.props,o))},o}(r.Component);return o(s,"displayName","withServices("+t+")"),o(s,"contextType",U),J(s,e)},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
*/}var p="function"==typeof Symbol&&Symbol.for,f=p?Symbol.for("react.element"):60103,y=p?Symbol.for("react.portal"):60106,l=p?Symbol.for("react.fragment"):60107,d=p?Symbol.for("react.strict_mode"):60108,m=p?Symbol.for("react.profiler"):60114,v=p?Symbol.for("react.provider"):60109,b=p?Symbol.for("react.context"):60110,h=p?Symbol.for("react.async_mode"):60111,w=p?Symbol.for("react.concurrent_mode"):60111,S=p?Symbol.for("react.forward_ref"):60112,P=p?Symbol.for("react.suspense"):60113,g=p?Symbol.for("react.suspense_list"):60120,j=p?Symbol.for("react.memo"):60115,O=p?Symbol.for("react.lazy"):60116,$=p?Symbol.for("react.block"):60121,x=p?Symbol.for("react.fundamental"):60117,_=p?Symbol.for("react.responder"):60118,C=p?Symbol.for("react.scope"):60119;function M(e){if("object"==typeof e&&null!==e){var r=e.$$typeof;switch(r){case f:switch(e=e.type){case h:case w:case l:case m:case d:case P:return e;default:switch(e=e&&e.$$typeof){case b:case S:case O:case j:case v:return e;default:return r}}case y:return r}}}function E(e){return M(e)===w}var k={AsyncMode:h,ConcurrentMode:w,ContextConsumer:b,ContextProvider:v,Element:f,ForwardRef:S,Fragment:l,Lazy:O,Memo:j,Portal:y,Profiler:m,StrictMode:d,Suspense:P,isAsyncMode:function(e){return E(e)||M(e)===h},isConcurrentMode:E,isContextConsumer:function(e){return M(e)===b},isContextProvider:function(e){return M(e)===v},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===f},isForwardRef:function(e){return M(e)===S},isFragment:function(e){return M(e)===l},isLazy:function(e){return M(e)===O},isMemo:function(e){return M(e)===j},isPortal:function(e){return M(e)===y},isProfiler:function(e){return M(e)===m},isStrictMode:function(e){return M(e)===d},isSuspense:function(e){return M(e)===P},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===l||e===w||e===m||e===d||e===P||e===g||"object"==typeof e&&null!==e&&(e.$$typeof===O||e.$$typeof===j||e.$$typeof===v||e.$$typeof===b||e.$$typeof===S||e.$$typeof===x||e.$$typeof===_||e.$$typeof===C||e.$$typeof===$)},typeOf:M},A=u((function(e,r){0})),T=(A.AsyncMode,A.ConcurrentMode,A.ContextConsumer,A.ContextProvider,A.Element,A.ForwardRef,A.Fragment,A.Lazy,A.Memo,A.Portal,A.Profiler,A.StrictMode,A.Suspense,A.isAsyncMode,A.isConcurrentMode,A.isContextConsumer,A.isContextProvider,A.isElement,A.isForwardRef,A.isFragment,A.isLazy,A.isMemo,A.isPortal,A.isProfiler,A.isStrictMode,A.isSuspense,A.isValidElementType,A.typeOf,u((function(e){e.exports=k}))),F={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},L={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},I={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},R={};function D(e){return T.isMemo(e)?I:R[e.$$typeof]||F}R[T.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},R[T.Memo]=I;var N=Object.defineProperty,z=Object.getOwnPropertyNames,q=Object.getOwnPropertySymbols,V=Object.getOwnPropertyDescriptor,G=Object.getPrototypeOf,H=Object.prototype;var J=function e(r,t,o){if("string"!=typeof t){if(H){var n=G(t);n&&n!==H&&e(r,n,o)}var i=z(t);q&&(i=i.concat(q(t)));for(var s=D(r),c=D(t),a=0;a<i.length;++a){var u=i[a];if(!(L[u]||o&&o[u]||c&&c[u]||s&&s[u])){var p=V(t,u);try{N(r,u,p)}catch(e){}}}}return r},U=r.createContext(),B=function(e){function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(){var e=this.context;if(!e)throw new Error("Must be used inside a InjectorProvider");var r=this.props,t=r.children,o=r.deps;return t(e.resolve(o))},r}(r.Component);o(B,"contextType",U),o(B,"propTypes",{children:t.func.isRequired,deps:t.oneOfType([t.arrayOf(t.String),t.objectOf(t.String)])});var K=function(){if(!r.useContext)throw new Error("Hooks not found on React. Are you using React v16.8 or greater?");var e=r.useContext(U);if(!e)throw new Error("Must be used inside a InjectorProvider");return e};e.InjectServices=B,e.InjectorProvider=function(e){var t=e.services,o=e.injector,n=(e.value,e.children);if(!t&&!o)throw new Error("Must provide services or injector prop to InjectorProvider.");var i=o||a.fromServices(t);return r.createElement(U.Provider,{value:i},n)},e.Lookup=function(e){var r;if(null==e)throw new Error("Lookup() does not support nullish values");return(r={})[c]=e,r},e.ServiceInjector=a,e.useInjector=K,e.useServices=function(e){return K().resolve(e)},e.withServices=function(e){var t=e.displayName||e.name||e.constructor&&e.constructor.name||"Component",s=function(t){function o(){return t.apply(this,arguments)||this}return i(o,t),o.prototype.render=function(){var t=e.dependencies||[],o={};return Array.isArray(t)?o.services=this.context.resolve(t):o=this.context.resolve(t),r.createElement(e,n({},this.props,o))},o}(r.Component);return o(s,"displayName","withServices("+t+")"),o(s,"contextType",U),J(s,e)},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=react-decoupler.production.min.js.map |
{ | ||
"name": "react-decoupler", | ||
"version": "0.1.5", | ||
"version": "0.2.0", | ||
"author": "Tommy Groshong <tom@groshong.software> (https://tommygroshong.com)", | ||
@@ -5,0 +5,0 @@ "description": "Simple Dependency Injection for React", |
@@ -318,2 +318,6 @@ # React Decoupler | ||
- `allowOverwrite: Boolean`: When true, will replace any existing service | ||
registration using the same key. An error is thrown if a key is already | ||
registered and then a client attempts to re-register without this option. | ||
- `withParams: Array<any>`: Binds the given array of parameters as | ||
@@ -320,0 +324,0 @@ arguments to the service (value of the service must be a callable that |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
217120
1320
561