UNPKG

@difizen/mana-syringe

Version:

117 lines (116 loc) 5.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SyringeModule = void 0; exports.isSyringeModule = isSyringeModule; var _inversify = require("inversify"); var _contributionRegister = require("../contribution/contribution-register"); var _core = require("../core"); var _register = require("../register"); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* eslint-disable @typescript-eslint/no-invalid-this */ /* eslint-disable @typescript-eslint/no-explicit-any */ var SyringeModule = exports.SyringeModule = /*#__PURE__*/function () { function SyringeModule(name) { var _this = this; _classCallCheck(this, SyringeModule); _defineProperty(this, "dependencies", []); /** * @readonly * module unique id */ _defineProperty(this, "id", void 0); _defineProperty(this, "moduleName", void 0); _defineProperty(this, "inversifyModule", void 0); _defineProperty(this, "optionCollection", void 0); _defineProperty(this, "inversifyRegister", function (bind, unbind, isBound, rebind) { var inversifyRegister = { bind: bind, unbind: unbind, isBound: isBound, rebind: rebind }; var register = function register(token) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (_core.Utils.isInjectOption(token)) { _register.Register.resolveOption({ container: inversifyRegister }, token); } else { _register.Register.resolveTarget({ container: inversifyRegister }, token, options); } }; if (_this.optionCollection) { _this.optionCollection.forEach(function (option) { return register(option); }); } }); this.moduleName = name; this.inversifyModule = new _inversify.ContainerModule(this.inversifyRegister); this.id = this.inversifyModule.id; } _createClass(SyringeModule, [{ key: "name", get: function get() { return this.moduleName; } }, { key: "options", get: function get() { if (!this.optionCollection) { this.optionCollection = []; } return this.optionCollection; } }, { key: "register", value: function register() { var _this2 = this; for (var _len = arguments.length, options = new Array(_len), _key = 0; _key < _len; _key++) { options[_key] = arguments[_key]; } options.forEach(function (option) { return _this2.options.push(option); }); return this; } }, { key: "contribution", value: function contribution() { var _this3 = this; for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { tokens[_key2] = arguments[_key2]; } tokens.forEach(function (token) { return _this3.options.push((0, _contributionRegister.contributionInjectOption)(token)); }); return this; } }, { key: "dependOn", value: function dependOn() { var _this$dependencies; (_this$dependencies = this.dependencies).push.apply(_this$dependencies, arguments); return this; } }, { key: "toLoader", value: function toLoader() { return { dependencies: this.dependencies.length > 0 ? this.dependencies : undefined }; } }]); return SyringeModule; }(); function isSyringeModule(data) { return data && 'inversifyModule' in data; }