@difizen/mana-syringe
Version:
117 lines (116 loc) • 5.23 kB
JavaScript
;
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;
}