UNPKG

@ztes/corejs

Version:

Core-js is a better Javascript's framework

244 lines (204 loc) 7.61 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _Container2 = _interopRequireDefault(require("./container/Container")); var _Lib = _interopRequireDefault(require("./spanners/Lib")); var _Exception = _interopRequireDefault(require("./spanners/Exception")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * CoreJs * Class Application Container * */ var Application = /*#__PURE__*/function (_Container) { (0, _inherits2.default)(Application, _Container); var _super = _createSuper(Application); // VERSION // adapters // providers // services // lifecycle step // lifecycle function Application() { var _this; (0, _classCallCheck2.default)(this, Application); _this = _super.call(this); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_adapters", new WeakMap()); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_providers", []); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_services", []); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_step", null); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_lifecycle", function () { return { // Method create create: function create() { console.log('create'); if (!_this._step) { // Register providers Application.getInstance().registerProviders(Application.getInstance()._getProviders()); _this._step = 'create'; } else { throw new _Exception.default('Error', 'Lifecycle Error : An error occurred in the create method'); } }, // Method mounted mounted: function mounted() { console.log('mounted'); if (_this._step == 'create') { // _this._step = 'mounted'; } else { throw new _Exception.default('Error', 'Lifecycle Error : An error occurred in the mounted method'); } }, // Method unmounted unmounted: function unmounted() { console.log('unmounted'); if (_this._step == 'mounted') { // _this._step = 'unmounted'; } else { throw new _Exception.default('Error', 'Lifecycle Error : An error occurred in the unmounted method'); } } }; }); return _this; } /** * Get version * @returns */ (0, _createClass2.default)(Application, [{ key: "version", get: function get() { return Application.VERSION; } /** * Method getProviders * @returns */ }, { key: "_getProviders", value: function _getProviders() { return Application.getInstance()._providers; } /** * Method setProviders * @param {*} Providers */ }, { key: "setProviders", value: function setProviders() { var Providers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; Application.getInstance()._providers = Application.getInstance()._getProviders().concat(Providers); } /** * Method registerProvider * @param {*} Provider Class Provider */ }, { key: "registerProvider", value: function registerProvider(Provider) { new Provider(Application.getInstance()).register(); } /** * Method registerProviders * @param {*} Providers Class Provider [...Class] */ }, { key: "registerProviders", value: function registerProviders() { var Providers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; if (Array.isArray(Providers)) { Providers.map(function (Provider) { Application.getInstance().registerProvider(Provider); }); } else { // Single Provider Application.getInstance().registerProvider(Providers); } } /** * Static method getInstance * @returns */ }, { key: "bindAdapter", value: /** * Method bindAdapter * @param {*} Adapter * @param {*} payload */ function bindAdapter(Adapter) { var payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (!_Lib.default.isClass(Adapter)) { throw new _Exception.default('Error', 'Adapter Error : The first argument must be a class'); } var adapter = payload ? new Adapter(payload) : new Adapter(); this.setAdapter(Adapter, adapter); } /** * Method setAdapter * @param {*} Adapter * @param {*} adapter */ }, { key: "setAdapter", value: function setAdapter(Adapter, adapter) { Application.getInstance()._adapters.set(Adapter, adapter); } /** * Method getAdapter * @param {*} Adapter * @returns */ }, { key: "getAdapter", value: function getAdapter(Adapter) { if (!_Lib.default.isClass(Adapter)) { throw new _Exception.default('Error', 'Adapter Error : The argument must be a class'); } return Application.getInstance()._adapters.get(Adapter); } /** * Method run * @param {*} callback All services */ }, { key: "run", value: function run(callback) { // lifecycle var boot = this._lifecycle(); boot.create(); boot.mounted(); boot.unmounted(); // callback instance if (_Lib.default.isFunction(callback)) { callback(Application.getInstance().get()); } } }], [{ key: "getInstance", value: function getInstance() { var instance = Application._instance; if (!instance) { instance = Application._instance = new Application(); } return instance.proxyInstance(); } }]); return Application; }(_Container2.default); exports.default = Application; (0, _defineProperty2.default)(Application, "VERSION", '1.0.11');