@zoranwong/acc-engine.js
Version:
A javascript framework to accelerate your applicatin developement
266 lines (212 loc) • 9.71 kB
JavaScript
"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;