UNPKG

keep-observers

Version:

This is a monitoring service applied to the web side Support Elasticsearch+kiban The middleware extension interface is provided by means of plug-in service compositionkeep-observers

1,175 lines (869 loc) 32.3 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("@util/index")); else if(typeof define === 'function' && define.amd) define(["@util/index"], factory); else { var a = typeof exports === 'object' ? factory(require("@util/index")) : factory(root["@util/index"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(this, function(__WEBPACK_EXTERNAL_MODULE__util_index__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/instance/index.ts"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./src/constants/index.ts": /*!********************************!*\ !*** ./src/constants/index.ts ***! \********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); //上报数据类型 exports.reportType = ['unKownType', 'log', 'network', 'vue']; //版本号 exports.version = '2.0.0-alpha.5'; //公共中间件 exports.publicMiddleScopeNames = ['sendMessage', 'error']; /***/ }), /***/ "./src/instance/defaultConfig.ts": /*!***************************************!*\ !*** ./src/instance/defaultConfig.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* keepObserver 默认配置 */ var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); var index_2 = __webpack_require__(/*! ../constants/index */ "./src/constants/index.ts"); exports["default"] = { projectName: '', projectVersion: '', version: index_2.version, //唯一设备id deviceID: index_1.getDeviceId(), //是否检查重复注入 //这个主要用在jasmine spyOn 以及UglifyJS class = n o a b c ..可能出现的问题 isCheckRepeatUse: true }; /***/ }), /***/ "./src/instance/index.ts": /*!*******************************!*\ !*** ./src/instance/index.ts ***! \*******************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __importDefault = this && this.__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); var defaultConfig_1 = __importDefault(__webpack_require__(/*! ./defaultConfig */ "./src/instance/defaultConfig.ts")); var index_2 = __importDefault(__webpack_require__(/*! ./pipe/index */ "./src/instance/pipe/index.ts")); exports.keepObserverPipe = index_2["default"]; var index_3 = __importDefault(__webpack_require__(/*! ./pipe/PipeUser/index */ "./src/instance/pipe/PipeUser/index.ts")); exports.PipeUser = index_3["default"]; var index_4 = __importDefault(__webpack_require__(/*! ./pipe/WatchDog/index */ "./src/instance/pipe/WatchDog/index.ts")); exports.WatchDog = index_4["default"]; var index_5 = __importDefault(__webpack_require__(/*! ./pipe/MQ/index */ "./src/instance/pipe/MQ/index.ts")); exports.MessageQueue = index_5["default"]; var api_1 = __webpack_require__(/*! ./method/api */ "./src/instance/method/api.ts"); var middle_1 = __webpack_require__(/*! ./method/middle */ "./src/instance/method/middle.ts"); var base_1 = __webpack_require__(/*! ./method/base */ "./src/instance/method/base.ts"); var KeepObserver = /** @class */ function (_super) { __extends(KeepObserver, _super); function KeepObserver(config) { if (config === void 0) { config = {}; } var _this = _super.call(this, config = index_1.Tools.extend(__assign({}, defaultConfig_1["default"]), config)) || this; //method _this.registerApi = api_1.registerApi.bind(_this); //api _this.apis = api_1.apis.bind(_this); //主实例重载中间件服务 _this.useMiddle = middle_1.useMiddle.bind(_this); _this.getRunMiddle = middle_1.getRunMiddle.bind(_this); //扩展上报属性 _this.extendReportParams = base_1.extendReportParams.bind(_this); //挂载插件服务 _this.use = base_1.use.bind(_this); //获取实例配置 _this._config = config; //管道实例 _this._pipe = new index_2["default"](_this, _this._config); //扩展上报内容 var _a = _this._config, projectName = _a.projectName, projectVersion = _a.projectVersion, version = _a.version; _this.extendReportParams({ projectName: projectName, projectVersion: projectVersion, version: version }); //扩展中间件 _this.middleScopeNames = _this.middleScopeNames.concat(_this._publicMiddleScopeNames); return _this; } return KeepObserver; }(index_1.KeepObserverPublic); exports["default"] = KeepObserver; /***/ }), /***/ "./src/instance/method/api.ts": /*!************************************!*\ !*** ./src/instance/method/api.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __read = this && this.__read || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = this && this.__spread || function () { for (var ar = [], i = 0; i < arguments.length; i++) { ar = ar.concat(__read(arguments[i])); } return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); exports.registerApi = function (apiName, cb) { var _self = this; if (_self.apis[apiName]) { index_1.consoleTools.warnError("apiName:" + apiName + " is defined"); } _self.apis[apiName] = cb; }; exports.apis = function (apiName) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var _self = this; if (!_self.apis[apiName]) { var errorMsg = "apiName:" + apiName + " is undefined"; index_1.consoleTools.warnError(errorMsg); return _self.runMiddle('error', errorMsg); } var callback = _self.apis[apiName]; var res = null; try { var res = callback.apply(void 0, __spread(args)); } catch (e) { var errorMsg = "apiName:" + apiName + " is run find error:" + e; index_1.consoleTools.warnError(errorMsg); _self.runMiddle('error', errorMsg); } return res; }; /***/ }), /***/ "./src/instance/method/base.ts": /*!*************************************!*\ !*** ./src/instance/method/base.ts ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); //扩展上报属性 exports.extendReportParams = function (params) { return index_1.KeepObserverPublic.extendReport(params); }; //挂载插件服务 exports.use = function (Provider) { return this._pipe.use(Provider); }; /***/ }), /***/ "./src/instance/method/middle.ts": /*!***************************************!*\ !*** ./src/instance/method/middle.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); //主实例重载中间件服务 exports.useMiddle = function (scopeName, middlesFn) { if (this.middleScopeNames.indexOf(scopeName) === -1) { this.middleScopeNames.push(scopeName); } return index_1.KeepObserverMiddleWare.usePublishMiddles(scopeName, middlesFn); }; //当前正在运行的中间件实例 exports.getRunMiddle = function () { return index_1.KeepObserverMiddleWare.currentRunMiddle; }; /***/ }), /***/ "./src/instance/pipe/MQ/index.ts": /*!***************************************!*\ !*** ./src/instance/pipe/MQ/index.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var triggerQueue_1 = __webpack_require__(/*! ./triggerQueue */ "./src/instance/pipe/MQ/triggerQueue.ts"); var receiveQueue_1 = __webpack_require__(/*! ./receiveQueue */ "./src/instance/pipe/MQ/receiveQueue.ts"); var MessageQueue = /** @class */ function () { function MessageQueue(config, $pipe) { //method this.noticeListener = triggerQueue_1.noticeListener.bind(this); this.sendPipeMessage = triggerQueue_1.sendPipeMessage.bind(this); this.registerRecivePipeMessage = receiveQueue_1.registerRecivePipeMessage.bind(this); //消息是否在执行 this.isRun = false; //消息队列 this.messageQueue = []; //管道实例 this.$pipe = $pipe; //消费者集合 this.consumerMap = {}; } return MessageQueue; }(); exports["default"] = MessageQueue; /***/ }), /***/ "./src/instance/pipe/MQ/receiveQueue.ts": /*!**********************************************!*\ !*** ./src/instance/pipe/MQ/receiveQueue.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); //注册管道接收数据函数 exports.registerRecivePipeMessage = function (id, scope) { var _self = this; //修正索引 if (_self.consumerMap[id]) { var errMsg = 'register recive pipe index is Occupy'; index_1.consoleTools.warnError(errMsg); _self.$pipe.$keepObserver.runMiddle('error', errMsg); return false; } //返回一个闭包函数用来接收注册函数 return function (fn) { //接收函数 if (!fn || !index_1.Tools.isFunction(fn)) { var errMsg = 'registerRecivePipeMessage method receive function is not right'; index_1.consoleTools.warnError(errMsg); _self.$pipe.$keepObserver.runMiddle('error', errMsg); return; } //内部修改作用域调用 _self.consumerMap[id] = function () { var agrs = index_1.Tools.toArray(arguments); //向注册进来的接收函数发送数据 return fn.apply(scope, agrs); }; }; }; /***/ }), /***/ "./src/instance/pipe/MQ/triggerQueue.ts": /*!**********************************************!*\ !*** ./src/instance/pipe/MQ/triggerQueue.ts ***! \**********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); //发送消息在管道内流通 exports.sendPipeMessage = function (id, params) { var _self = this; var msgItem = { id: id, params: params }; return new Promise(function (res, rej) { //如果正在执行 if (_self.isRun) { return rej(false); } //是否消息队列加锁,并且防止异常消息 //进入消息队列 _self.messageQueue.push(msgItem); //异步执行消息队列分发 setTimeout(function () { //获取消息队列数组快照 var queue = _self.messageQueue.map(function (e) { return e; }); //清空队列 _self.messageQueue = []; //通知监听 _self.noticeListener(queue).then(res, res); }); }); }; //通知监听 exports.noticeListener = function (queue) { var _self = this; if (!index_1.Tools.isArray(queue) || queue.length === 0) { return Promise.reject(); } //接收消息进入等待状态 _self.isRun = true; //分发处理消息 return Promise.all(queue.map(function (item) { var id = item.id, params = item.params; //消息分发 return Promise.all(index_1.Tools.mapToArray(_self.consumerMap, function (cb, pipeId) { //id修正 pipeId = !index_1.Tools.isNumber(pipeId) ? parseInt(pipeId) : false; if (!index_1.Tools.isNumber(pipeId)) { return false; } //判断是否是正确注册接收函数 if (!index_1.Tools.isFunction(cb)) { return false; } //不允许自发自收 if (id === pipeId) { return false; } //分发 try { //执行分发 return cb(params) || Promise.resolve(); } catch (e) { var errMsg = 'handle message is runing error:' + e; index_1.consoleTools.warnError(errMsg); _self.$pipe.$keepObserver.runMiddle('error', errMsg); } })); }))["finally"](function () { //执行状态结束,放到下个阶段,屏蔽处理阶段立即发起的消息 _self.isRun = false; }); }; /***/ }), /***/ "./src/instance/pipe/PipeUser/index.ts": /*!*********************************************!*\ !*** ./src/instance/pipe/PipeUser/index.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; var __read = this && this.__read || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = this && this.__spread || function () { for (var ar = [], i = 0; i < arguments.length; i++) { ar = ar.concat(__read(arguments[i])); } return ar; }; var __importDefault = this && this.__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); var index_2 = __webpack_require__(/*! @util/index */ "@util/index"); var index_3 = __importDefault(__webpack_require__(/*! ../WatchDog/index */ "./src/instance/pipe/WatchDog/index.ts")); var PipeUser = /** @class */ function (_super) { __extends(PipeUser, _super); function PipeUser(index, $pipe, scope) { var _this = _super.call(this) || this; //index _this.pipeIndex = index; //register watchDog var $watchDog = new index_3["default"](); //provide sendMessage _this.sendMessage = $watchDog.sendMessageLimtWatch( /* watch fn */ function (catchParams, contendHashCode) { //mq handle process message ignore if ($pipe.$mq.isRun) return Promise.reject('mq handle process message ignore'); //send message var isError = true; var _a = __read($pipe._publicMiddleScopeNames, 1), sendMessage = _a[0]; var reportParams = _this.handleReportData(__assign({}, catchParams, { contendHashCode: contendHashCode })); // 1 -> 2 -> 3 -> 2 -> 1 return $pipe.$keepObserver.runMiddle(sendMessage, reportParams).then(function (middleReportParams) { isError = false; if (!middleReportParams) { _this.constructor.emitSendDoneCallback(); return false; } index_2.consoleTools.devLog($pipe._develop, middleReportParams); $pipe.$mq.sendPipeMessage(index, middleReportParams).then(function () { _this.constructor.emitSendDoneCallback(); }); }) //check middle exec error ["finally"](function () { if (isError) { index_2.consoleTools.devLog($pipe._develop, reportParams); $pipe.$mq.sendPipeMessage(index, reportParams).then(function () { _this.constructor.emitSendDoneCallback(); }); } }); }, /* anomaly callback */ function (anomalyMessage) { return $pipe.$keepObserver.runMiddle('error', anomalyMessage); }); //extend middle _this.runExtendMiddle = function (scopeName) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var _a; return (_a = $pipe.$keepObserver).runMiddle.apply(_a, __spread([scopeName], args)); }; _this.useExtendMiddle = function (scopeName, middlesFn) { return $pipe.$keepObserver.useMiddle(scopeName, middlesFn); }; //extend report params _this.extendsReportParams = function (params) { return $pipe.$keepObserver.extendReportParams(params); }; //provide reciveMessage _this.registerReciveMessage = $pipe.$mq.registerRecivePipeMessage(index, scope); //register send done callback _this.registerSendDoneCallback = function (callback) { _this.constructor.onSendDoneCallbackMap.push(callback); }; // middleScopeNames _this.middleScopeNames = $pipe.$keepObserver.middleScopeNames.map(function (e) { return e; }); return _this; } PipeUser.onSendDoneCallbackMap = []; PipeUser.emitSendDoneCallback = function () { this.onSendDoneCallbackMap.forEach(function (fn) { try { fn(); } catch (e) { index_2.consoleTools.warnError("emitSendDoneCallback find error:" + e); } }); }; return PipeUser; }(index_1.KeepObserverPublic); exports["default"] = PipeUser; /***/ }), /***/ "./src/instance/pipe/WatchDog/index.ts": /*!*********************************************!*\ !*** ./src/instance/pipe/WatchDog/index.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); var WatchDog = /** @class */ function () { function WatchDog(config) { if (config === void 0) { config = {}; } this._config = config; } //api WatchDog.prototype.sendMessageLimtWatch = function (fn, anomalyCallback) { var anomaly = false; var receiveCount = 1; var countBuff = {}; var resetCountFn = index_1.Tools.debounceWrap(1000)(function () { countBuff = {}, receiveCount = 1; }); var resetAnomaly = index_1.Tools.throttleWrap(3000)(function () { anomaly = false; }); var limtJudgeAnomaly = function limtJudgeAnomaly(count, catchParams, anomalyCallback) { //启动定时器每秒恢复一次计数 resetCountFn(); if (++receiveCount > 50) { var msg = 'send Message during 1000ms in Over 50 times,maybe Anomaly'; index_1.consoleTools.warnError(msg, catchParams); anomalyCallback(msg); return false; } //重复技术统计 if (count === 10) { var msg = 'send Message during 1000ms in Over 10 times,maybe Anomaly'; index_1.consoleTools.warnError(msg, catchParams); anomalyCallback(msg); return false; } if (count > 20) { var msg = 'send Message during 1000ms in Over 20 times,maybe happend Endless loop'; index_1.consoleTools.warnError(msg, catchParams); anomalyCallback(msg); return true; } return false; }; var watchWrap = function watchWrap(catchParams) { var _a = catchParams || {}, _b = _a.isIgnoreSendRepeat, isIgnoreSendRepeat = _b === void 0 ? false : _b, _c = _a.type, type = _c === void 0 ? "undefined" : _c, _d = _a.typeName, typeName = _d === void 0 ? "undefined" : _d, _e = _a.data, data = _e === void 0 ? {} : _e; //contendHashCode 本来不放这里的,但是因为要做校验,所以在这里生产 后面就不生成了 var contendHashCode = index_1.Tools.getHashCode(data); var key = isIgnoreSendRepeat ? 'ignore' : type + "_" + typeName + "_" + contendHashCode; var count = countBuff[key] ? ++countBuff[key] : countBuff[key] = 1; anomaly = !anomaly ? limtJudgeAnomaly(count, catchParams, anomalyCallback) : true; if (anomaly) { resetAnomaly(); //catch resolve Uncaught (in promise) error return Promise.reject('send Message during 1000ms in Over 20 times,maybe happend Endless loop')["catch"](function (e) { return e; }); } //catch resolve Uncaught (in promise) error return fn(catchParams, contendHashCode)["catch"](function (e) { return e; }); }; return watchWrap; }; return WatchDog; }(); exports["default"] = WatchDog; /***/ }), /***/ "./src/instance/pipe/index.ts": /*!************************************!*\ !*** ./src/instance/pipe/index.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __extends = this && this.__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __importDefault = this && this.__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); var index_2 = __importDefault(__webpack_require__(/*! ./MQ/index */ "./src/instance/pipe/MQ/index.ts")); var injection_1 = __webpack_require__(/*! ./injection */ "./src/instance/pipe/injection.ts"); var keepObserverPipe = /** @class */ function (_super) { __extends(keepObserverPipe, _super); function keepObserverPipe(keepObserver, config) { var _this = _super.call(this, config) || this; _this.pipeMap = {}; //method _this.injection = injection_1.injection.bind(_this); // api _this.use = injection_1.use.bind(_this); //获取实例配置 _this._config = config; //获取kp实例 _this.$keepObserver = keepObserver; //消息队列实例 _this.$mq = new index_2["default"](config, _this /* $pipe */ ); //管道用户 _this.pipeUser = []; return _this; } return keepObserverPipe; }(index_1.KeepObserverPublic); exports["default"] = keepObserverPipe; /***/ }), /***/ "./src/instance/pipe/injection.ts": /*!****************************************!*\ !*** ./src/instance/pipe/injection.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __importDefault = this && this.__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = __webpack_require__(/*! @util/index */ "@util/index"); var index_2 = __importDefault(__webpack_require__(/*! ./PipeUser/index */ "./src/instance/pipe/PipeUser/index.ts")); /* receive Plug-ins Server params @Provider type es6 class or classInstance explan: Provider class render apply function ,apply runing return method object ,on mounted is keepObsever class */ exports.use = function (Provider) { var _self = this; var isCheckRepeatUse = _self._config.isCheckRepeatUse; if (!Provider || !index_1.Tools.isFunction(Provider) && !index_1.Tools.isClassObject(Provider)) { var errorMsg = "use method receive provider is not right"; index_1.consoleTools.warnError(errorMsg); return _self.$keepObserver.runMiddle('error', errorMsg); } //初始化注入服务 var config = _self._config; var providerInstalcen = index_1.Tools.isFunction(Provider) ? new Provider(config) : Provider; //校验重复注入 //mind UglifyJS class = n o a b c ... if (isCheckRepeatUse) { var providerName = index_1.Tools.isObject(providerInstalcen) && providerInstalcen.constructor ? providerInstalcen.constructor.name : undefined; var serverId = providerName + '-' + index_1.Tools.getHashCode(providerInstalcen); if (!providerName || this.pipeMap[serverId]) { var errorMsg = !providerName ? "Provider.constructor is undefined" : providerName + " already injection server"; index_1.consoleTools.warnError(errorMsg); return _self.$keepObserver.runMiddle('error', errorMsg); } this.pipeMap[serverId] = true; } //检查注入方法是否存在存在apply,存在则加入到管道流中 //并检查是否存在返回方法,挂载在自身中,用于对外提供 var _a = providerInstalcen.apply, apply = _a === void 0 ? null : _a; if (apply && index_1.Tools.isFunction(apply)) { this.injection(providerInstalcen, apply); return Promise.resolve(providerInstalcen); } else { var errorMsg = "use method receive provider is not apply method"; index_1.consoleTools.warnError(errorMsg); return _self.$keepObserver.runMiddle('error', errorMsg); } }; /* 注入 params @scope type object explan:this指向 @applyFn type function explan: apply function */ exports.injection = function (scope, applyFn) { var _self = this; var config = this._config; //check data if (!applyFn || !index_1.Tools.isFunction(applyFn)) { var errorMsg = "injection receive because Provider apply is undefined or no function"; index_1.consoleTools.warnError(errorMsg); return _self.$keepObserver.runMiddle('error', errorMsg); } //cerate pipeUser and add quenen var pipeUser = new index_2["default"](_self.pipeUser.length, _self, scope); try { // runing apply var userRenderMethod = applyFn.call(scope, pipeUser, config); //new version mounte api method // 1. $keepObserver.registerApi // 2. userRenderMethod : {apiName:callback} if (_self.$keepObserver.registerApi && index_1.Tools.isObject(userRenderMethod) && !index_1.Tools.isEmptyObject(userRenderMethod)) { index_1.Tools.map(userRenderMethod, function (callback, apiName) { if (!apiName || !callback) { var errorMsg = "apiName is '' or callback is undefined"; index_1.consoleTools.warnError(errorMsg); return _self.$keepObserver.runMiddle('error', errorMsg); } _self.$keepObserver.registerApi(apiName, callback.bind(scope)); }); } _self.pipeUser[_self.pipeUser.length] = pipeUser; } catch (e) { var errorMsg = 'injection receive Provider apply is runing find error:' + e; index_1.consoleTools.warnError(errorMsg); return _self.$keepObserver.runMiddle('error', errorMsg); } }; /***/ }), /***/ "@util/index": /*!******************************!*\ !*** external "@util/index" ***! \******************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE__util_index__; /***/ }) /******/ }); });