UNPKG

@zoranwong/acc-engine.js

Version:

A javascript framework to accelerate your applicatin developement

266 lines (212 loc) 9.71 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck")); 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 _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); var _pureContainer = _interopRequireDefault(require("@zoranwong/pure-container")); var _md = _interopRequireDefault(require("md5")); var _Client = _interopRequireDefault(require("../io/http/Client")); var _Adapter = _interopRequireDefault(require("../io/http/Adapter")); var _Dispatcher = _interopRequireDefault(require("../events/Dispatcher")); var _Repository = _interopRequireDefault(require("../config/Repository")); var _Database = _interopRequireDefault(require("../database/Database")); var _WorkerManager = _interopRequireDefault(require("../worker/WorkerManager")); 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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var providers = new WeakMap(); var globalProviderRegistered = new WeakMap(); var NONE = 'NONE'; var INITIALING = 'INITIALING'; var RUNNING = 'RUNNING'; var DESTROYED = 'DESTROYED'; /** * @property {WorkerManager} workerManager * @property {Database} db * @property {Map} commands * @property {Repository|Proxy<Repository>} config * @property {Dispatcher} dispatcher * @property {Adapter} httpAdapter * @property {Client} http * @property {Function} bindMethod * @property {Function} callMethodBinding * @property {Function} instance * @property {Function} bind * @property {Function} singleton * @property {Function} hasMethodBinding * @property {Function} make * @property {Function} get * @property {Function} mixin * @property {Function} extend * @property {Function} registerCommand * @property {Function} command * @property {Function} on * @property {Function} once * @property {Function} emitter * @property {Function} getProxy * @property {Function} getDBDriver * @static {Function} getInstance * */ var _rootPath = (0, _classPrivateFieldLooseKey2["default"])("rootPath"); var _serviceProviders = (0, _classPrivateFieldLooseKey2["default"])("serviceProviders"); var _providerRegistered = (0, _classPrivateFieldLooseKey2["default"])("providerRegistered"); var _registerProviders = (0, _classPrivateFieldLooseKey2["default"])("registerProviders"); var _lifeCycles = (0, _classPrivateFieldLooseKey2["default"])("lifeCycles"); var Application = /*#__PURE__*/function (_Container) { (0, _inherits2["default"])(Application, _Container); var _super = _createSuper(Application); /**@property {WeakMap} #serviceProviders*/ /**@property {WeakMap} #providerRegistered*/ function Application() { var _this2 = this; var _this; (0, _classCallCheck2["default"])(this, Application); _this = _super.call(this); Object.defineProperty((0, _assertThisInitialized2["default"])(_this), _rootPath, { writable: true, value: null }); Object.defineProperty((0, _assertThisInitialized2["default"])(_this), _serviceProviders, { writable: true, value: void 0 }); Object.defineProperty((0, _assertThisInitialized2["default"])(_this), _providerRegistered, { writable: true, value: void 0 }); Object.defineProperty((0, _assertThisInitialized2["default"])(_this), _registerProviders, { writable: true, value: [] }); _this.status = void 0; _this.beforeCreated = function () {}; _this.created = function () {}; _this.beforeDestroy = function () {}; _this.destroied = function () {}; Object.defineProperty((0, _assertThisInitialized2["default"])(_this), _lifeCycles, { writable: true, value: { beforeCreated: function beforeCreated() { (0, _newArrowCheck2["default"])(this, _this2); Application.getInstance().registerServiceProviders(); Application.getInstance().beforeCreated(); }.bind(this), created: function created() { (0, _newArrowCheck2["default"])(this, _this2); Application.getInstance().boot(); Application.getInstance().status = RUNNING; Application.getInstance().created(); }.bind(this), beforeDestroy: function beforeDestroy() { (0, _newArrowCheck2["default"])(this, _this2); Application.getInstance().beforeDestroy(); }.bind(this), onDestroy: function onDestroy() { (0, _newArrowCheck2["default"])(this, _this2); Application.getInstance().status = DESTROYED; Application.getInstance().destroied(); }.bind(this) } }); _this.status = NONE; (0, _classPrivateFieldLooseBase2["default"])((0, _assertThisInitialized2["default"])(_this), _serviceProviders)[_serviceProviders] = providers; (0, _classPrivateFieldLooseBase2["default"])((0, _assertThisInitialized2["default"])(_this), _providerRegistered)[_providerRegistered] = globalProviderRegistered; return _this; } /** * 获取容器代理对象 * @return {Container|Application|Proxy} */ (0, _createClass2["default"])(Application, [{ key: "register", value: function register(provider) { (0, _classPrivateFieldLooseBase2["default"])(this, _registerProviders)[_registerProviders].push(provider); } /** * @return WeakMap * */ }, { key: "providerRegistered", value: function providerRegistered(provider) { return (0, _classPrivateFieldLooseBase2["default"])(this, _providerRegistered)[_providerRegistered].has(provider); } }, { key: "registerProvider", value: function registerProvider(provider) { var p = new provider(this); p.register(); this.providers.set(provider, p); (0, _classPrivateFieldLooseBase2["default"])(this, _providerRegistered)[_providerRegistered].set(provider, true); } }, { key: "boot", value: function boot() { var _this3 = this; if (this.config && this.config.app && this.config.app.providers) { this.config.app.providers.forEach(function (p) { (0, _newArrowCheck2["default"])(this, _this3); if (this.providers.has(p)) { var provider = this.providers.get(p); provider.boot(); } }.bind(this)); } } }, { key: "registerServiceProviders", value: function registerServiceProviders() { var _this4 = this; var config = this.config; var appConfig = null; if (config && (appConfig = config.app)) { if (appConfig.bootstrapProviders) { appConfig.providers = appConfig.bootstrapProviders.concat(appConfig.providers ? appConfig.providers : []).concat((0, _classPrivateFieldLooseBase2["default"])(this, _registerProviders)[_registerProviders]); } if (appConfig.providers) { appConfig.providers.forEach(function (provider) { (0, _newArrowCheck2["default"])(this, _this4); if (!this.providerRegistered(provider)) { this.registerProvider(provider); } }.bind(this)); } } } }, { key: "run", value: function run() { this.status = INITIALING; //before app run (0, _classPrivateFieldLooseBase2["default"])(this, _lifeCycles)[_lifeCycles].beforeCreated(); //after (0, _classPrivateFieldLooseBase2["default"])(this, _lifeCycles)[_lifeCycles].created(); } }, { key: "providers", get: function get() { return (0, _classPrivateFieldLooseBase2["default"])(this, _serviceProviders)[_serviceProviders]; }, set: function set(providers) { return (0, _classPrivateFieldLooseBase2["default"])(this, _serviceProviders)[_serviceProviders] = providers; } }], [{ key: "getInstance", value: function getInstance() { /**@var {Application} instance*/ var instance = Application._instance; if (!instance) { Application._instance = instance = new Application(); } return instance.getProxy(); } }]); return Application; }(_pureContainer["default"]); exports["default"] = Application;