This repository has been archived by the owner on Mar 20, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathContainer.min.js
1 lines (1 loc) · 1.88 KB
/
Container.min.js
1
!function(n,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():n.Container=e()}(this,function(){"use strict";function n(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol?"symbol":typeof n},t=function(){function n(n,e){for(var t=0;t<e.length;t++){var o=e[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(n,o.key,o)}}return function(e,t,o){return t&&n(e.prototype,t),o&&n(e,o),e}}(),o=Symbol("Elements Collection"),i=function(){function i(e){n(this,i),e=e||{},this[o]={},Object.keys(e).forEach(function(n){this.bind(n,e[n])}.bind(this))}return t(i,[{key:"has",value:function(n){return this[o].hasOwnProperty(n)}},{key:"bind",value:function(n,e,t){if("function"!=typeof e)throw new TypeError("Given `instance` does not seem like Class definition.");if(!0===this.has(n))throw new Error('Element "'+n+'" is already bound.');!1===Array.isArray(t)&&(t=[]),this[o][n]={instance:e,parameters:t,isSingleton:!1}}},{key:"singleton",value:function(n,t){if("object"!==("undefined"==typeof t?"undefined":e(t)))throw new TypeError("Given `instance` does not seem like class instance.");if(!0===this.has(n))throw new Error('Element "'+n+'" is already bound.');this[o][n]={instance:t,parameters:[],isSingleton:!0}}},{key:"get",value:function(n){if(!1===this.has(n))throw new Error('Element "'+n+'" does not exist.');var e=this[o][n];if(!0===e.isSingleton)return e.instance;var t=[];return e.parameters.forEach(function(n){var e="function"==typeof n?n():this.get(n);t.push(e)}.bind(this)),new(Function.prototype.bind.apply(e.instance,[null].concat(t)))}},{key:"remove",value:function(n){delete this[o][n]}}]),i}();return i.version="2.0.0",i});