This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-client-js.git

commit 452ab2424e81255fcb856341f6bd13b4cb109f6d
Author: Qiuxia Fan <fine0...@outlook.com>
AuthorDate: Sun Jan 5 14:01:07 2020 +0800

    feat: add params
---
 .gitignore               |    3 -
 .travis.yml              |   15 -
 dist/index.html          |    9 +
 dist/index.js            | 1239 +++++++++++++++++++++++++++++++++++++++++++++
 dist/monitor.js          | 1241 ++++++++++++++++++++++++++++++++++++++++++++++
 src/index.ts => index.js |    6 +-
 package.json             |    4 +-
 server.js                |   53 +-
 src/errors/jsErrors.ts   |    2 +-
 src/index.ts             |    4 +-
 src/monitor.ts           |   15 +-
 src/services/trace.ts    |   14 +-
 src/services/types.d.ts  |   22 +-
 test/index.html          |   26 -
 webpack.config.js        |    2 +-
 15 files changed, 2550 insertions(+), 105 deletions(-)

diff --git a/.gitignore b/.gitignore
index b81cc3b..4bfea38 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,6 @@
 # dependencies
 /node_modules
 
-# production
-/dist
-
 # misc
 .DS_Store
 .vscode/*
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 557edf3..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: node_js
-
-node_js:
-  - "8"
-
-env:
-  matrix:
-    - TEST_TYPE=build
-
-
-install:
-  - npm install
-
-script:
-  - npm run build
diff --git a/dist/index.html b/dist/index.html
new file mode 100644
index 0000000..929a90d
--- /dev/null
+++ b/dist/index.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title>Client Monitor</title>
+  </head>
+  <body>
+  <script type="text/javascript" src="/index.js"></script></body>
+</html>
\ No newline at end of file
diff --git a/dist/index.js b/dist/index.js
new file mode 100644
index 0000000..af1e4a8
--- /dev/null
+++ b/dist/index.js
@@ -0,0 +1,1239 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/       function hotDisposeChunk(chunkId) {
+/******/               delete installedChunks[chunkId];
+/******/       }
+/******/       var parentHotUpdateCallback = window["webpackHotUpdate"];
+/******/       window["webpackHotUpdate"] = // eslint-disable-next-line 
no-unused-vars
+/******/       function webpackHotUpdateCallback(chunkId, moreModules) {
+/******/               hotAddUpdateChunk(chunkId, moreModules);
+/******/               if (parentHotUpdateCallback) 
parentHotUpdateCallback(chunkId, moreModules);
+/******/       } ;
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotDownloadUpdateChunk(chunkId) {
+/******/               var script = document.createElement("script");
+/******/               script.charset = "utf-8";
+/******/               script.src = __webpack_require__.p + "" + chunkId + "." 
+ hotCurrentHash + ".hot-update.js";
+/******/               if (null) script.crossOrigin = null;
+/******/               document.head.appendChild(script);
+/******/       }
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotDownloadManifest(requestTimeout) {
+/******/               requestTimeout = requestTimeout || 10000;
+/******/               return new Promise(function(resolve, reject) {
+/******/                       if (typeof XMLHttpRequest === "undefined") {
+/******/                               return reject(new Error("No browser 
support"));
+/******/                       }
+/******/                       try {
+/******/                               var request = new XMLHttpRequest();
+/******/                               var requestPath = __webpack_require__.p 
+ "" + hotCurrentHash + ".hot-update.json";
+/******/                               request.open("GET", requestPath, true);
+/******/                               request.timeout = requestTimeout;
+/******/                               request.send(null);
+/******/                       } catch (err) {
+/******/                               return reject(err);
+/******/                       }
+/******/                       request.onreadystatechange = function() {
+/******/                               if (request.readyState !== 4) return;
+/******/                               if (request.status === 0) {
+/******/                                       // timeout
+/******/                                       reject(
+/******/                                               new Error("Manifest 
request to " + requestPath + " timed out.")
+/******/                                       );
+/******/                               } else if (request.status === 404) {
+/******/                                       // no update available
+/******/                                       resolve();
+/******/                               } else if (request.status !== 200 && 
request.status !== 304) {
+/******/                                       // other failure
+/******/                                       reject(new Error("Manifest 
request to " + requestPath + " failed."));
+/******/                               } else {
+/******/                                       // success
+/******/                                       try {
+/******/                                               var update = 
JSON.parse(request.responseText);
+/******/                                       } catch (e) {
+/******/                                               reject(e);
+/******/                                               return;
+/******/                                       }
+/******/                                       resolve(update);
+/******/                               }
+/******/                       };
+/******/               });
+/******/       }
+/******/
+/******/       var hotApplyOnUpdate = true;
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       var hotCurrentHash = "ab8e687b28fcc57b2874";
+/******/       var hotRequestTimeout = 10000;
+/******/       var hotCurrentModuleData = {};
+/******/       var hotCurrentChildModule;
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       var hotCurrentParents = [];
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       var hotCurrentParentsTemp = [];
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotCreateRequire(moduleId) {
+/******/               var me = installedModules[moduleId];
+/******/               if (!me) return __webpack_require__;
+/******/               var fn = function(request) {
+/******/                       if (me.hot.active) {
+/******/                               if (installedModules[request]) {
+/******/                                       if 
(installedModules[request].parents.indexOf(moduleId) === -1) {
+/******/                                               
installedModules[request].parents.push(moduleId);
+/******/                                       }
+/******/                               } else {
+/******/                                       hotCurrentParents = [moduleId];
+/******/                                       hotCurrentChildModule = request;
+/******/                               }
+/******/                               if (me.children.indexOf(request) === 
-1) {
+/******/                                       me.children.push(request);
+/******/                               }
+/******/                       } else {
+/******/                               console.warn(
+/******/                                       "[HMR] unexpected require(" +
+/******/                                               request +
+/******/                                               ") from disposed module 
" +
+/******/                                               moduleId
+/******/                               );
+/******/                               hotCurrentParents = [];
+/******/                       }
+/******/                       return __webpack_require__(request);
+/******/               };
+/******/               var ObjectFactory = function ObjectFactory(name) {
+/******/                       return {
+/******/                               configurable: true,
+/******/                               enumerable: true,
+/******/                               get: function() {
+/******/                                       return 
__webpack_require__[name];
+/******/                               },
+/******/                               set: function(value) {
+/******/                                       __webpack_require__[name] = 
value;
+/******/                               }
+/******/                       };
+/******/               };
+/******/               for (var name in __webpack_require__) {
+/******/                       if (
+/******/                               
Object.prototype.hasOwnProperty.call(__webpack_require__, name) &&
+/******/                               name !== "e" &&
+/******/                               name !== "t"
+/******/                       ) {
+/******/                               Object.defineProperty(fn, name, 
ObjectFactory(name));
+/******/                       }
+/******/               }
+/******/               fn.e = function(chunkId) {
+/******/                       if (hotStatus === "ready") 
hotSetStatus("prepare");
+/******/                       hotChunksLoading++;
+/******/                       return 
__webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {
+/******/                               finishChunkLoading();
+/******/                               throw err;
+/******/                       });
+/******/
+/******/                       function finishChunkLoading() {
+/******/                               hotChunksLoading--;
+/******/                               if (hotStatus === "prepare") {
+/******/                                       if 
(!hotWaitingFilesMap[chunkId]) {
+/******/                                               
hotEnsureUpdateChunk(chunkId);
+/******/                                       }
+/******/                                       if (hotChunksLoading === 0 && 
hotWaitingFiles === 0) {
+/******/                                               hotUpdateDownloaded();
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/               };
+/******/               fn.t = function(value, mode) {
+/******/                       if (mode & 1) value = fn(value);
+/******/                       return __webpack_require__.t(value, mode & ~1);
+/******/               };
+/******/               return fn;
+/******/       }
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotCreateModule(moduleId) {
+/******/               var hot = {
+/******/                       // private stuff
+/******/                       _acceptedDependencies: {},
+/******/                       _declinedDependencies: {},
+/******/                       _selfAccepted: false,
+/******/                       _selfDeclined: false,
+/******/                       _disposeHandlers: [],
+/******/                       _main: hotCurrentChildModule !== moduleId,
+/******/
+/******/                       // Module API
+/******/                       active: true,
+/******/                       accept: function(dep, callback) {
+/******/                               if (dep === undefined) 
hot._selfAccepted = true;
+/******/                               else if (typeof dep === "function") 
hot._selfAccepted = dep;
+/******/                               else if (typeof dep === "object")
+/******/                                       for (var i = 0; i < dep.length; 
i++)
+/******/                                               
hot._acceptedDependencies[dep[i]] = callback || function() {};
+/******/                               else hot._acceptedDependencies[dep] = 
callback || function() {};
+/******/                       },
+/******/                       decline: function(dep) {
+/******/                               if (dep === undefined) 
hot._selfDeclined = true;
+/******/                               else if (typeof dep === "object")
+/******/                                       for (var i = 0; i < dep.length; 
i++)
+/******/                                               
hot._declinedDependencies[dep[i]] = true;
+/******/                               else hot._declinedDependencies[dep] = 
true;
+/******/                       },
+/******/                       dispose: function(callback) {
+/******/                               hot._disposeHandlers.push(callback);
+/******/                       },
+/******/                       addDisposeHandler: function(callback) {
+/******/                               hot._disposeHandlers.push(callback);
+/******/                       },
+/******/                       removeDisposeHandler: function(callback) {
+/******/                               var idx = 
hot._disposeHandlers.indexOf(callback);
+/******/                               if (idx >= 0) 
hot._disposeHandlers.splice(idx, 1);
+/******/                       },
+/******/
+/******/                       // Management API
+/******/                       check: hotCheck,
+/******/                       apply: hotApply,
+/******/                       status: function(l) {
+/******/                               if (!l) return hotStatus;
+/******/                               hotStatusHandlers.push(l);
+/******/                       },
+/******/                       addStatusHandler: function(l) {
+/******/                               hotStatusHandlers.push(l);
+/******/                       },
+/******/                       removeStatusHandler: function(l) {
+/******/                               var idx = hotStatusHandlers.indexOf(l);
+/******/                               if (idx >= 0) 
hotStatusHandlers.splice(idx, 1);
+/******/                       },
+/******/
+/******/                       //inherit from previous dispose call
+/******/                       data: hotCurrentModuleData[moduleId]
+/******/               };
+/******/               hotCurrentChildModule = undefined;
+/******/               return hot;
+/******/       }
+/******/
+/******/       var hotStatusHandlers = [];
+/******/       var hotStatus = "idle";
+/******/
+/******/       function hotSetStatus(newStatus) {
+/******/               hotStatus = newStatus;
+/******/               for (var i = 0; i < hotStatusHandlers.length; i++)
+/******/                       hotStatusHandlers[i].call(null, newStatus);
+/******/       }
+/******/
+/******/       // while downloading
+/******/       var hotWaitingFiles = 0;
+/******/       var hotChunksLoading = 0;
+/******/       var hotWaitingFilesMap = {};
+/******/       var hotRequestedFilesMap = {};
+/******/       var hotAvailableFilesMap = {};
+/******/       var hotDeferred;
+/******/
+/******/       // The update info
+/******/       var hotUpdate, hotUpdateNewHash;
+/******/
+/******/       function toModuleId(id) {
+/******/               var isNumber = +id + "" === id;
+/******/               return isNumber ? +id : id;
+/******/       }
+/******/
+/******/       function hotCheck(apply) {
+/******/               if (hotStatus !== "idle") {
+/******/                       throw new Error("check() is only allowed in 
idle status");
+/******/               }
+/******/               hotApplyOnUpdate = apply;
+/******/               hotSetStatus("check");
+/******/               return 
hotDownloadManifest(hotRequestTimeout).then(function(update) {
+/******/                       if (!update) {
+/******/                               hotSetStatus("idle");
+/******/                               return null;
+/******/                       }
+/******/                       hotRequestedFilesMap = {};
+/******/                       hotWaitingFilesMap = {};
+/******/                       hotAvailableFilesMap = update.c;
+/******/                       hotUpdateNewHash = update.h;
+/******/
+/******/                       hotSetStatus("prepare");
+/******/                       var promise = new Promise(function(resolve, 
reject) {
+/******/                               hotDeferred = {
+/******/                                       resolve: resolve,
+/******/                                       reject: reject
+/******/                               };
+/******/                       });
+/******/                       hotUpdate = {};
+/******/                       var chunkId = "main";
+/******/                       // eslint-disable-next-line no-lone-blocks
+/******/                       {
+/******/                               /*globals chunkId */
+/******/                               hotEnsureUpdateChunk(chunkId);
+/******/                       }
+/******/                       if (
+/******/                               hotStatus === "prepare" &&
+/******/                               hotChunksLoading === 0 &&
+/******/                               hotWaitingFiles === 0
+/******/                       ) {
+/******/                               hotUpdateDownloaded();
+/******/                       }
+/******/                       return promise;
+/******/               });
+/******/       }
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotAddUpdateChunk(chunkId, moreModules) {
+/******/               if (!hotAvailableFilesMap[chunkId] || 
!hotRequestedFilesMap[chunkId])
+/******/                       return;
+/******/               hotRequestedFilesMap[chunkId] = false;
+/******/               for (var moduleId in moreModules) {
+/******/                       if 
(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/                               hotUpdate[moduleId] = 
moreModules[moduleId];
+/******/                       }
+/******/               }
+/******/               if (--hotWaitingFiles === 0 && hotChunksLoading === 0) {
+/******/                       hotUpdateDownloaded();
+/******/               }
+/******/       }
+/******/
+/******/       function hotEnsureUpdateChunk(chunkId) {
+/******/               if (!hotAvailableFilesMap[chunkId]) {
+/******/                       hotWaitingFilesMap[chunkId] = true;
+/******/               } else {
+/******/                       hotRequestedFilesMap[chunkId] = true;
+/******/                       hotWaitingFiles++;
+/******/                       hotDownloadUpdateChunk(chunkId);
+/******/               }
+/******/       }
+/******/
+/******/       function hotUpdateDownloaded() {
+/******/               hotSetStatus("ready");
+/******/               var deferred = hotDeferred;
+/******/               hotDeferred = null;
+/******/               if (!deferred) return;
+/******/               if (hotApplyOnUpdate) {
+/******/                       // Wrap deferred object in Promise to mark it 
as a well-handled Promise to
+/******/                       // avoid triggering uncaught exception warning 
in Chrome.
+/******/                       // See 
https://bugs.chromium.org/p/chromium/issues/detail?id=465666
+/******/                       Promise.resolve()
+/******/                               .then(function() {
+/******/                                       return 
hotApply(hotApplyOnUpdate);
+/******/                               })
+/******/                               .then(
+/******/                                       function(result) {
+/******/                                               
deferred.resolve(result);
+/******/                                       },
+/******/                                       function(err) {
+/******/                                               deferred.reject(err);
+/******/                                       }
+/******/                               );
+/******/               } else {
+/******/                       var outdatedModules = [];
+/******/                       for (var id in hotUpdate) {
+/******/                               if 
(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
+/******/                                       
outdatedModules.push(toModuleId(id));
+/******/                               }
+/******/                       }
+/******/                       deferred.resolve(outdatedModules);
+/******/               }
+/******/       }
+/******/
+/******/       function hotApply(options) {
+/******/               if (hotStatus !== "ready")
+/******/                       throw new Error("apply() is only allowed in 
ready status");
+/******/               options = options || {};
+/******/
+/******/               var cb;
+/******/               var i;
+/******/               var j;
+/******/               var module;
+/******/               var moduleId;
+/******/
+/******/               function getAffectedStuff(updateModuleId) {
+/******/                       var outdatedModules = [updateModuleId];
+/******/                       var outdatedDependencies = {};
+/******/
+/******/                       var queue = outdatedModules.map(function(id) {
+/******/                               return {
+/******/                                       chain: [id],
+/******/                                       id: id
+/******/                               };
+/******/                       });
+/******/                       while (queue.length > 0) {
+/******/                               var queueItem = queue.pop();
+/******/                               var moduleId = queueItem.id;
+/******/                               var chain = queueItem.chain;
+/******/                               module = installedModules[moduleId];
+/******/                               if (!module || 
module.hot._selfAccepted) continue;
+/******/                               if (module.hot._selfDeclined) {
+/******/                                       return {
+/******/                                               type: "self-declined",
+/******/                                               chain: chain,
+/******/                                               moduleId: moduleId
+/******/                                       };
+/******/                               }
+/******/                               if (module.hot._main) {
+/******/                                       return {
+/******/                                               type: "unaccepted",
+/******/                                               chain: chain,
+/******/                                               moduleId: moduleId
+/******/                                       };
+/******/                               }
+/******/                               for (var i = 0; i < 
module.parents.length; i++) {
+/******/                                       var parentId = 
module.parents[i];
+/******/                                       var parent = 
installedModules[parentId];
+/******/                                       if (!parent) continue;
+/******/                                       if 
(parent.hot._declinedDependencies[moduleId]) {
+/******/                                               return {
+/******/                                                       type: 
"declined",
+/******/                                                       chain: 
chain.concat([parentId]),
+/******/                                                       moduleId: 
moduleId,
+/******/                                                       parentId: 
parentId
+/******/                                               };
+/******/                                       }
+/******/                                       if 
(outdatedModules.indexOf(parentId) !== -1) continue;
+/******/                                       if 
(parent.hot._acceptedDependencies[moduleId]) {
+/******/                                               if 
(!outdatedDependencies[parentId])
+/******/                                                       
outdatedDependencies[parentId] = [];
+/******/                                               
addAllToSet(outdatedDependencies[parentId], [moduleId]);
+/******/                                               continue;
+/******/                                       }
+/******/                                       delete 
outdatedDependencies[parentId];
+/******/                                       outdatedModules.push(parentId);
+/******/                                       queue.push({
+/******/                                               chain: 
chain.concat([parentId]),
+/******/                                               id: parentId
+/******/                                       });
+/******/                               }
+/******/                       }
+/******/
+/******/                       return {
+/******/                               type: "accepted",
+/******/                               moduleId: updateModuleId,
+/******/                               outdatedModules: outdatedModules,
+/******/                               outdatedDependencies: 
outdatedDependencies
+/******/                       };
+/******/               }
+/******/
+/******/               function addAllToSet(a, b) {
+/******/                       for (var i = 0; i < b.length; i++) {
+/******/                               var item = b[i];
+/******/                               if (a.indexOf(item) === -1) 
a.push(item);
+/******/                       }
+/******/               }
+/******/
+/******/               // at begin all updates modules are outdated
+/******/               // the "outdated" status can propagate to parents if 
they don't accept the children
+/******/               var outdatedDependencies = {};
+/******/               var outdatedModules = [];
+/******/               var appliedUpdate = {};
+/******/
+/******/               var warnUnexpectedRequire = function 
warnUnexpectedRequire() {
+/******/                       console.warn(
+/******/                               "[HMR] unexpected require(" + 
result.moduleId + ") to disposed module"
+/******/                       );
+/******/               };
+/******/
+/******/               for (var id in hotUpdate) {
+/******/                       if 
(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
+/******/                               moduleId = toModuleId(id);
+/******/                               /** @type {TODO} */
+/******/                               var result;
+/******/                               if (hotUpdate[id]) {
+/******/                                       result = 
getAffectedStuff(moduleId);
+/******/                               } else {
+/******/                                       result = {
+/******/                                               type: "disposed",
+/******/                                               moduleId: id
+/******/                                       };
+/******/                               }
+/******/                               /** @type {Error|false} */
+/******/                               var abortError = false;
+/******/                               var doApply = false;
+/******/                               var doDispose = false;
+/******/                               var chainInfo = "";
+/******/                               if (result.chain) {
+/******/                                       chainInfo = "\nUpdate 
propagation: " + result.chain.join(" -> ");
+/******/                               }
+/******/                               switch (result.type) {
+/******/                                       case "self-declined":
+/******/                                               if (options.onDeclined) 
options.onDeclined(result);
+/******/                                               if 
(!options.ignoreDeclined)
+/******/                                                       abortError = 
new Error(
+/******/                                                               
"Aborted because of self decline: " +
+/******/                                                                       
result.moduleId +
+/******/                                                                       
chainInfo
+/******/                                                       );
+/******/                                               break;
+/******/                                       case "declined":
+/******/                                               if (options.onDeclined) 
options.onDeclined(result);
+/******/                                               if 
(!options.ignoreDeclined)
+/******/                                                       abortError = 
new Error(
+/******/                                                               
"Aborted because of declined dependency: " +
+/******/                                                                       
result.moduleId +
+/******/                                                                       
" in " +
+/******/                                                                       
result.parentId +
+/******/                                                                       
chainInfo
+/******/                                                       );
+/******/                                               break;
+/******/                                       case "unaccepted":
+/******/                                               if 
(options.onUnaccepted) options.onUnaccepted(result);
+/******/                                               if 
(!options.ignoreUnaccepted)
+/******/                                                       abortError = 
new Error(
+/******/                                                               
"Aborted because " + moduleId + " is not accepted" + chainInfo
+/******/                                                       );
+/******/                                               break;
+/******/                                       case "accepted":
+/******/                                               if (options.onAccepted) 
options.onAccepted(result);
+/******/                                               doApply = true;
+/******/                                               break;
+/******/                                       case "disposed":
+/******/                                               if (options.onDisposed) 
options.onDisposed(result);
+/******/                                               doDispose = true;
+/******/                                               break;
+/******/                                       default:
+/******/                                               throw new 
Error("Unexception type " + result.type);
+/******/                               }
+/******/                               if (abortError) {
+/******/                                       hotSetStatus("abort");
+/******/                                       return 
Promise.reject(abortError);
+/******/                               }
+/******/                               if (doApply) {
+/******/                                       appliedUpdate[moduleId] = 
hotUpdate[moduleId];
+/******/                                       addAllToSet(outdatedModules, 
result.outdatedModules);
+/******/                                       for (moduleId in 
result.outdatedDependencies) {
+/******/                                               if (
+/******/                                                       
Object.prototype.hasOwnProperty.call(
+/******/                                                               
result.outdatedDependencies,
+/******/                                                               moduleId
+/******/                                                       )
+/******/                                               ) {
+/******/                                                       if 
(!outdatedDependencies[moduleId])
+/******/                                                               
outdatedDependencies[moduleId] = [];
+/******/                                                       addAllToSet(
+/******/                                                               
outdatedDependencies[moduleId],
+/******/                                                               
result.outdatedDependencies[moduleId]
+/******/                                                       );
+/******/                                               }
+/******/                                       }
+/******/                               }
+/******/                               if (doDispose) {
+/******/                                       addAllToSet(outdatedModules, 
[result.moduleId]);
+/******/                                       appliedUpdate[moduleId] = 
warnUnexpectedRequire;
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // Store self accepted outdated modules to require them 
later by the module system
+/******/               var outdatedSelfAcceptedModules = [];
+/******/               for (i = 0; i < outdatedModules.length; i++) {
+/******/                       moduleId = outdatedModules[i];
+/******/                       if (
+/******/                               installedModules[moduleId] &&
+/******/                               
installedModules[moduleId].hot._selfAccepted &&
+/******/                               // removed self-accepted modules should 
not be required
+/******/                               appliedUpdate[moduleId] !== 
warnUnexpectedRequire
+/******/                       ) {
+/******/                               outdatedSelfAcceptedModules.push({
+/******/                                       module: moduleId,
+/******/                                       errorHandler: 
installedModules[moduleId].hot._selfAccepted
+/******/                               });
+/******/                       }
+/******/               }
+/******/
+/******/               // Now in "dispose" phase
+/******/               hotSetStatus("dispose");
+/******/               
Object.keys(hotAvailableFilesMap).forEach(function(chunkId) {
+/******/                       if (hotAvailableFilesMap[chunkId] === false) {
+/******/                               hotDisposeChunk(chunkId);
+/******/                       }
+/******/               });
+/******/
+/******/               var idx;
+/******/               var queue = outdatedModules.slice();
+/******/               while (queue.length > 0) {
+/******/                       moduleId = queue.pop();
+/******/                       module = installedModules[moduleId];
+/******/                       if (!module) continue;
+/******/
+/******/                       var data = {};
+/******/
+/******/                       // Call dispose handlers
+/******/                       var disposeHandlers = 
module.hot._disposeHandlers;
+/******/                       for (j = 0; j < disposeHandlers.length; j++) {
+/******/                               cb = disposeHandlers[j];
+/******/                               cb(data);
+/******/                       }
+/******/                       hotCurrentModuleData[moduleId] = data;
+/******/
+/******/                       // disable module (this disables requires from 
this module)
+/******/                       module.hot.active = false;
+/******/
+/******/                       // remove module from cache
+/******/                       delete installedModules[moduleId];
+/******/
+/******/                       // when disposing there is no need to call 
dispose handler
+/******/                       delete outdatedDependencies[moduleId];
+/******/
+/******/                       // remove "parents" references from all children
+/******/                       for (j = 0; j < module.children.length; j++) {
+/******/                               var child = 
installedModules[module.children[j]];
+/******/                               if (!child) continue;
+/******/                               idx = child.parents.indexOf(moduleId);
+/******/                               if (idx >= 0) {
+/******/                                       child.parents.splice(idx, 1);
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // remove outdated dependency from module children
+/******/               var dependency;
+/******/               var moduleOutdatedDependencies;
+/******/               for (moduleId in outdatedDependencies) {
+/******/                       if (
+/******/                               
Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
+/******/                       ) {
+/******/                               module = installedModules[moduleId];
+/******/                               if (module) {
+/******/                                       moduleOutdatedDependencies = 
outdatedDependencies[moduleId];
+/******/                                       for (j = 0; j < 
moduleOutdatedDependencies.length; j++) {
+/******/                                               dependency = 
moduleOutdatedDependencies[j];
+/******/                                               idx = 
module.children.indexOf(dependency);
+/******/                                               if (idx >= 0) 
module.children.splice(idx, 1);
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // Now in "apply" phase
+/******/               hotSetStatus("apply");
+/******/
+/******/               hotCurrentHash = hotUpdateNewHash;
+/******/
+/******/               // insert new code
+/******/               for (moduleId in appliedUpdate) {
+/******/                       if 
(Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {
+/******/                               modules[moduleId] = 
appliedUpdate[moduleId];
+/******/                       }
+/******/               }
+/******/
+/******/               // call accept handlers
+/******/               var error = null;
+/******/               for (moduleId in outdatedDependencies) {
+/******/                       if (
+/******/                               
Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
+/******/                       ) {
+/******/                               module = installedModules[moduleId];
+/******/                               if (module) {
+/******/                                       moduleOutdatedDependencies = 
outdatedDependencies[moduleId];
+/******/                                       var callbacks = [];
+/******/                                       for (i = 0; i < 
moduleOutdatedDependencies.length; i++) {
+/******/                                               dependency = 
moduleOutdatedDependencies[i];
+/******/                                               cb = 
module.hot._acceptedDependencies[dependency];
+/******/                                               if (cb) {
+/******/                                                       if 
(callbacks.indexOf(cb) !== -1) continue;
+/******/                                                       
callbacks.push(cb);
+/******/                                               }
+/******/                                       }
+/******/                                       for (i = 0; i < 
callbacks.length; i++) {
+/******/                                               cb = callbacks[i];
+/******/                                               try {
+/******/                                                       
cb(moduleOutdatedDependencies);
+/******/                                               } catch (err) {
+/******/                                                       if 
(options.onErrored) {
+/******/                                                               
options.onErrored({
+/******/                                                                       
type: "accept-errored",
+/******/                                                                       
moduleId: moduleId,
+/******/                                                                       
dependencyId: moduleOutdatedDependencies[i],
+/******/                                                                       
error: err
+/******/                                                               });
+/******/                                                       }
+/******/                                                       if 
(!options.ignoreErrored) {
+/******/                                                               if 
(!error) error = err;
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // Load self accepted modules
+/******/               for (i = 0; i < outdatedSelfAcceptedModules.length; 
i++) {
+/******/                       var item = outdatedSelfAcceptedModules[i];
+/******/                       moduleId = item.module;
+/******/                       hotCurrentParents = [moduleId];
+/******/                       try {
+/******/                               __webpack_require__(moduleId);
+/******/                       } catch (err) {
+/******/                               if (typeof item.errorHandler === 
"function") {
+/******/                                       try {
+/******/                                               item.errorHandler(err);
+/******/                                       } catch (err2) {
+/******/                                               if (options.onErrored) {
+/******/                                                       
options.onErrored({
+/******/                                                               type: 
"self-accept-error-handler-errored",
+/******/                                                               
moduleId: moduleId,
+/******/                                                               error: 
err2,
+/******/                                                               
originalError: err
+/******/                                                       });
+/******/                                               }
+/******/                                               if 
(!options.ignoreErrored) {
+/******/                                                       if (!error) 
error = err2;
+/******/                                               }
+/******/                                               if (!error) error = err;
+/******/                                       }
+/******/                               } else {
+/******/                                       if (options.onErrored) {
+/******/                                               options.onErrored({
+/******/                                                       type: 
"self-accept-errored",
+/******/                                                       moduleId: 
moduleId,
+/******/                                                       error: err
+/******/                                               });
+/******/                                       }
+/******/                                       if (!options.ignoreErrored) {
+/******/                                               if (!error) error = err;
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // handle errors in accept handlers and self accepted 
module load
+/******/               if (error) {
+/******/                       hotSetStatus("fail");
+/******/                       return Promise.reject(error);
+/******/               }
+/******/
+/******/               hotSetStatus("idle");
+/******/               return new Promise(function(resolve) {
+/******/                       resolve(outdatedModules);
+/******/               });
+/******/       }
+/******/
+/******/       // 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: {},
+/******/                       hot: hotCreateModule(moduleId),
+/******/                       parents: (hotCurrentParentsTemp = 
hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),
+/******/                       children: []
+/******/               };
+/******/
+/******/               // Execute the module function
+/******/               modules[moduleId].call(module.exports, module, 
module.exports, hotCreateRequire(moduleId));
+/******/
+/******/               // 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, { 
enumerable: true, get: getter });
+/******/               }
+/******/       };
+/******/
+/******/       // define __esModule on exports
+/******/       __webpack_require__.r = function(exports) {
+/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) 
{
+/******/                       Object.defineProperty(exports, 
Symbol.toStringTag, { value: 'Module' });
+/******/               }
+/******/               Object.defineProperty(exports, '__esModule', { value: 
true });
+/******/       };
+/******/
+/******/       // create a fake namespace object
+/******/       // mode & 1: value is a module id, require it
+/******/       // mode & 2: merge all properties of value into the ns
+/******/       // mode & 4: return value when already ns object
+/******/       // mode & 8|1: behave like require
+/******/       __webpack_require__.t = function(value, mode) {
+/******/               if(mode & 1) value = __webpack_require__(value);
+/******/               if(mode & 8) return value;
+/******/               if((mode & 4) && typeof value === 'object' && value && 
value.__esModule) return value;
+/******/               var ns = Object.create(null);
+/******/               __webpack_require__.r(ns);
+/******/               Object.defineProperty(ns, 'default', { enumerable: 
true, value: value });
+/******/               if(mode & 2 && typeof value != 'string') for(var key in 
value) __webpack_require__.d(ns, key, function(key) { return value[key]; 
}.bind(null, key));
+/******/               return ns;
+/******/       };
+/******/
+/******/       // 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 = "/";
+/******/
+/******/       // __webpack_hash__
+/******/       __webpack_require__.h = function() { return hotCurrentHash; };
+/******/
+/******/
+/******/       // Load entry module and return exports
+/******/       return hotCreateRequire("./src/index.ts")(__webpack_require__.s 
= "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/errors/jsErrors.ts":
+/*!********************************!*\
+  !*** ./src/errors/jsErrors.ts ***!
+  \********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _services_trace__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ../services/trace */ "./src/services/trace.ts");
+/* harmony import */ var _services_constant__WEBPACK_IMPORTED_MODULE_1__ = 
__webpack_require__(/*! ../services/constant */ "./src/services/constant.ts");
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __extends = (undefined && undefined.__extends) || (function () {
+    var extendStatics = function (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 JSErrors = /** @class */ (function (_super) {
+    __extends(JSErrors, _super);
+    function JSErrors() {
+        return _super !== null && _super.apply(this, arguments) || this;
+    }
+    JSErrors.prototype.handleErrors = function (options) {
+        var _this = this;
+        window.onerror = function (message, url, line, col, error) {
+            _this.logInfo = {
+                reportUrl: options.reportUrl,
+                category: 
_services_constant__WEBPACK_IMPORTED_MODULE_1__["ErrorsCategory"].JS_ERROR,
+                grade: 
_services_constant__WEBPACK_IMPORTED_MODULE_1__["GradeTypeEnum"].WARNING,
+                errorUrl: url,
+                line: line,
+                col: col,
+                errorInfo: error,
+                message: message,
+            };
+            _this.traceInfo();
+        };
+    };
+    return JSErrors;
+}(_services_trace__WEBPACK_IMPORTED_MODULE_0__["default"]));
+/* harmony default export */ __webpack_exports__["default"] = (new JSErrors());
+
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+  !*** ./src/index.ts ***!
+  \**********************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _monitor__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ./monitor */ "./src/monitor.ts");
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+window.ClientMonitor = _monitor__WEBPACK_IMPORTED_MODULE_0__["default"];
+/* harmony default export */ __webpack_exports__["default"] = 
(_monitor__WEBPACK_IMPORTED_MODULE_0__["default"]);
+
+
+/***/ }),
+
+/***/ "./src/monitor.ts":
+/*!************************!*\
+  !*** ./src/monitor.ts ***!
+  \************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _errors_jsErrors__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ./errors/jsErrors */ "./src/errors/jsErrors.ts");
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var ClientMonitor = {
+    errorTypes: {
+        jsErrors: true,
+        promiseErrors: true,
+        consoleErrors: false,
+        vueErrors: false,
+        reactErrors: false,
+        ajaxErrors: true,
+        resourceErrors: true,
+    },
+    register: function (options) {
+        this.errorTypes = options;
+        if (this.errorTypes.jsErrors) {
+            this.errorTypes.jsErrors = options.jsErrors;
+            
_errors_jsErrors__WEBPACK_IMPORTED_MODULE_0__["default"].handleErrors({ 
reportUrl: options.reportUrl });
+        }
+        if (this.errorTypes.promiseErrors) {
+            this.errorTypes.promiseErrors = options.promiseErrors || 
this.errorTypes.promiseErrors;
+        }
+        if (this.errorTypes.resourceErrors) {
+            this.errorTypes.resourceErrors = options.resourceErrors;
+        }
+        if (this.errorTypes.ajaxErrors) {
+            this.errorTypes.ajaxErrors = options.ajaxErrors || 
this.errorTypes.ajaxErrors;
+        }
+    },
+};
+/* harmony default export */ __webpack_exports__["default"] = (ClientMonitor);
+
+
+/***/ }),
+
+/***/ "./src/services/constant.ts":
+/*!**********************************!*\
+  !*** ./src/services/constant.ts ***!
+  \**********************************/
+/*! exports provided: ErrorsCategory, GradeTypeEnum */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, 
"ErrorsCategory", function() { return ErrorsCategory; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, 
"GradeTypeEnum", function() { return GradeTypeEnum; });
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var ErrorsCategory;
+(function (ErrorsCategory) {
+    ErrorsCategory["AJAX_ERROR"] = "ajaxError";
+    ErrorsCategory["RESOURCE_ERROR"] = "resourceError";
+    ErrorsCategory["VUE_ERROR"] = "vueError";
+    ErrorsCategory["PROMISE_ERROR"] = "promiseError";
+    ErrorsCategory["JS_ERROR"] = "jsError";
+    ErrorsCategory["CONSOLE_INFO"] = "consoleInfo";
+    ErrorsCategory["CONSOLE_WARN"] = "consoleWarn";
+    ErrorsCategory["CONSOLE_ERROR"] = "consoleError";
+    ErrorsCategory["CROSS_SCRIPT_ERROR"] = "crossSrciptError";
+    ErrorsCategory["UNKNOW_ERROR"] = "unknowError";
+})(ErrorsCategory || (ErrorsCategory = {}));
+var GradeTypeEnum;
+(function (GradeTypeEnum) {
+    GradeTypeEnum["INFO"] = "Info";
+    GradeTypeEnum["WARNING"] = "Warning";
+    GradeTypeEnum["ERROR"] = "Error";
+})(GradeTypeEnum || (GradeTypeEnum = {}));
+
+
+/***/ }),
+
+/***/ "./src/services/report.ts":
+/*!********************************!*\
+  !*** ./src/services/report.ts ***!
+  \********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var Report = /** @class */ (function () {
+    function Report(url) {
+        this.url = '';
+        this.url = url;
+    }
+    Report.prototype.sendByXhr = function (data) {
+        if (!this.checkUrl(this.url)) {
+            return;
+        }
+        try {
+            var xhr = new XMLHttpRequest();
+            xhr.open('POST', this.url, true);
+            xhr.setRequestHeader('Content-Type', 'application/json');
+            console.log(data);
+            xhr.send(JSON.stringify(data));
+        }
+        catch (error) {
+            //   console.log(error);
+        }
+    };
+    Report.prototype.reportByImg = function (data) {
+        if (!this.checkUrl(this.url)) {
+            return;
+        }
+        try {
+            var imgObj = new Image();
+            imgObj.src = this.url + "?v=" + new Date().getTime() + "&" + 
this.formatParams(data);
+        }
+        catch (error) {
+            // console.log(error);
+        }
+    };
+    Report.prototype.formatParams = function (data) {
+        return Object.keys(data).map(function (name) {
+            return encodeURIComponent(name) + "=" + 
encodeURIComponent(data[name]);
+        }).join('&');
+    };
+    Report.prototype.checkUrl = function (url) {
+        if (!url) {
+            return;
+        }
+        var urlRule = /^[hH][tT][tT][pP]([sS]?):\/\//;
+        return urlRule.test(url);
+    };
+    return Report;
+}());
+/* harmony default export */ __webpack_exports__["default"] = (Report);
+
+
+/***/ }),
+
+/***/ "./src/services/task.ts":
+/*!******************************!*\
+  !*** ./src/services/task.ts ***!
+  \******************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ./report */ "./src/services/report.ts");
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var TaskQueue = /** @class */ (function () {
+    function TaskQueue() {
+        this.queues = [];
+    }
+    TaskQueue.prototype.addTask = function (reportUrl, data) {
+        this.queues.push({ reportUrl: reportUrl, data: data });
+    };
+    TaskQueue.prototype.fireTasks = function () {
+        if (!this.queues || !this.queues.length) {
+            return;
+        }
+        var item = this.queues[0];
+        if (item.reportUrl) {
+            new 
_report__WEBPACK_IMPORTED_MODULE_0__["default"](item.reportUrl).sendByXhr(item.data);
+        }
+        this.queues.splice(0, 1);
+        this.fireTasks();
+    };
+    return TaskQueue;
+}());
+/* harmony default export */ __webpack_exports__["default"] = (new 
TaskQueue());
+
+
+/***/ }),
+
+/***/ "./src/services/trace.ts":
+/*!*******************************!*\
+  !*** ./src/services/trace.ts ***!
+  \*******************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _task__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ./task */ "./src/services/task.ts");
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = 
__webpack_require__(/*! ./constant */ "./src/services/constant.ts");
+var __assign = (undefined && undefined.__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);
+};
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+var Trace = /** @class */ (function () {
+    function Trace() {
+        this.logInfo = {
+            category: 
_constant__WEBPACK_IMPORTED_MODULE_1__["ErrorsCategory"].UNKNOW_ERROR,
+            grade: 
_constant__WEBPACK_IMPORTED_MODULE_1__["GradeTypeEnum"].INFO,
+            errorUrl: '',
+            line: 0,
+            col: 0,
+            errorInfo: '',
+            message: '',
+            reportUrl: '',
+        };
+    }
+    Trace.prototype.traceInfo = function () {
+        this.handleRecordError();
+        setTimeout(function () {
+            _task__WEBPACK_IMPORTED_MODULE_0__["default"].fireTasks();
+        }, 100);
+    };
+    Trace.prototype.handleRecordError = function () {
+        try {
+            if (!this.logInfo.message) {
+                return;
+            }
+            if (this.logInfo.reportUrl && this.logInfo.errorUrl &&
+                
this.logInfo.errorUrl.toLowerCase().includes(this.logInfo.reportUrl.toLowerCase()))
 {
+                return;
+            }
+            var errorInfo = this.handleErrorInfo();
+            
_task__WEBPACK_IMPORTED_MODULE_0__["default"].addTask(this.logInfo.reportUrl, 
errorInfo);
+        }
+        catch (error) {
+            // console.log(error);
+        }
+    };
+    Trace.prototype.handleErrorInfo = function () {
+        var message = "error category:" + this.logInfo.category + "\r\n log 
info:" + this.logInfo.message + "\r\n\n      error url: " + 
this.logInfo.errorUrl + "\r\n ";
+        switch (this.logInfo.category) {
+            case 
_constant__WEBPACK_IMPORTED_MODULE_1__["ErrorsCategory"].JS_ERROR:
+                message += "error line number: " + this.logInfo.line + "\r\n 
error col number:" + this.logInfo.col + "\r\n";
+                if (this.logInfo.errorInfo && this.logInfo.errorInfo.stack) {
+                    message += "error stack: " + this.logInfo.errorInfo.stack 
+ "\r\n";
+                }
+                break;
+            default:
+                message += "other error: " + this.logInfo.errorInfo + "\r\n";
+                break;
+        }
+        var recordInfo = __assign(__assign({}, this.logInfo), { message: 
message });
+        return recordInfo;
+    };
+    return Trace;
+}());
+/* harmony default export */ __webpack_exports__["default"] = (Trace);
+
+
+/***/ })
+
+/******/ });
+//# 
sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Vycm9ycy9qc0Vycm9ycy50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL21vbml0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3NlcnZpY2VzL2NvbnN0YW50LnRzIiwid2VicGFjazovLy8uL3NyYy9zZXJ2aWNlcy9yZXBvcnQudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3NlcnZpY2VzL3Rhc2sudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3NlcnZpY2VzL3RyYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGlu
 [...]
\ No newline at end of file
diff --git a/dist/monitor.js b/dist/monitor.js
new file mode 100644
index 0000000..732215a
--- /dev/null
+++ b/dist/monitor.js
@@ -0,0 +1,1241 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/       function hotDisposeChunk(chunkId) {
+/******/               delete installedChunks[chunkId];
+/******/       }
+/******/       var parentHotUpdateCallback = window["webpackHotUpdate"];
+/******/       window["webpackHotUpdate"] = // eslint-disable-next-line 
no-unused-vars
+/******/       function webpackHotUpdateCallback(chunkId, moreModules) {
+/******/               hotAddUpdateChunk(chunkId, moreModules);
+/******/               if (parentHotUpdateCallback) 
parentHotUpdateCallback(chunkId, moreModules);
+/******/       } ;
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotDownloadUpdateChunk(chunkId) {
+/******/               var script = document.createElement("script");
+/******/               script.charset = "utf-8";
+/******/               script.src = __webpack_require__.p + "" + chunkId + "." 
+ hotCurrentHash + ".hot-update.js";
+/******/               if (null) script.crossOrigin = null;
+/******/               document.head.appendChild(script);
+/******/       }
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotDownloadManifest(requestTimeout) {
+/******/               requestTimeout = requestTimeout || 10000;
+/******/               return new Promise(function(resolve, reject) {
+/******/                       if (typeof XMLHttpRequest === "undefined") {
+/******/                               return reject(new Error("No browser 
support"));
+/******/                       }
+/******/                       try {
+/******/                               var request = new XMLHttpRequest();
+/******/                               var requestPath = __webpack_require__.p 
+ "" + hotCurrentHash + ".hot-update.json";
+/******/                               request.open("GET", requestPath, true);
+/******/                               request.timeout = requestTimeout;
+/******/                               request.send(null);
+/******/                       } catch (err) {
+/******/                               return reject(err);
+/******/                       }
+/******/                       request.onreadystatechange = function() {
+/******/                               if (request.readyState !== 4) return;
+/******/                               if (request.status === 0) {
+/******/                                       // timeout
+/******/                                       reject(
+/******/                                               new Error("Manifest 
request to " + requestPath + " timed out.")
+/******/                                       );
+/******/                               } else if (request.status === 404) {
+/******/                                       // no update available
+/******/                                       resolve();
+/******/                               } else if (request.status !== 200 && 
request.status !== 304) {
+/******/                                       // other failure
+/******/                                       reject(new Error("Manifest 
request to " + requestPath + " failed."));
+/******/                               } else {
+/******/                                       // success
+/******/                                       try {
+/******/                                               var update = 
JSON.parse(request.responseText);
+/******/                                       } catch (e) {
+/******/                                               reject(e);
+/******/                                               return;
+/******/                                       }
+/******/                                       resolve(update);
+/******/                               }
+/******/                       };
+/******/               });
+/******/       }
+/******/
+/******/       var hotApplyOnUpdate = true;
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       var hotCurrentHash = "53390ba4e755db226212";
+/******/       var hotRequestTimeout = 10000;
+/******/       var hotCurrentModuleData = {};
+/******/       var hotCurrentChildModule;
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       var hotCurrentParents = [];
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       var hotCurrentParentsTemp = [];
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotCreateRequire(moduleId) {
+/******/               var me = installedModules[moduleId];
+/******/               if (!me) return __webpack_require__;
+/******/               var fn = function(request) {
+/******/                       if (me.hot.active) {
+/******/                               if (installedModules[request]) {
+/******/                                       if 
(installedModules[request].parents.indexOf(moduleId) === -1) {
+/******/                                               
installedModules[request].parents.push(moduleId);
+/******/                                       }
+/******/                               } else {
+/******/                                       hotCurrentParents = [moduleId];
+/******/                                       hotCurrentChildModule = request;
+/******/                               }
+/******/                               if (me.children.indexOf(request) === 
-1) {
+/******/                                       me.children.push(request);
+/******/                               }
+/******/                       } else {
+/******/                               console.warn(
+/******/                                       "[HMR] unexpected require(" +
+/******/                                               request +
+/******/                                               ") from disposed module 
" +
+/******/                                               moduleId
+/******/                               );
+/******/                               hotCurrentParents = [];
+/******/                       }
+/******/                       return __webpack_require__(request);
+/******/               };
+/******/               var ObjectFactory = function ObjectFactory(name) {
+/******/                       return {
+/******/                               configurable: true,
+/******/                               enumerable: true,
+/******/                               get: function() {
+/******/                                       return 
__webpack_require__[name];
+/******/                               },
+/******/                               set: function(value) {
+/******/                                       __webpack_require__[name] = 
value;
+/******/                               }
+/******/                       };
+/******/               };
+/******/               for (var name in __webpack_require__) {
+/******/                       if (
+/******/                               
Object.prototype.hasOwnProperty.call(__webpack_require__, name) &&
+/******/                               name !== "e" &&
+/******/                               name !== "t"
+/******/                       ) {
+/******/                               Object.defineProperty(fn, name, 
ObjectFactory(name));
+/******/                       }
+/******/               }
+/******/               fn.e = function(chunkId) {
+/******/                       if (hotStatus === "ready") 
hotSetStatus("prepare");
+/******/                       hotChunksLoading++;
+/******/                       return 
__webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {
+/******/                               finishChunkLoading();
+/******/                               throw err;
+/******/                       });
+/******/
+/******/                       function finishChunkLoading() {
+/******/                               hotChunksLoading--;
+/******/                               if (hotStatus === "prepare") {
+/******/                                       if 
(!hotWaitingFilesMap[chunkId]) {
+/******/                                               
hotEnsureUpdateChunk(chunkId);
+/******/                                       }
+/******/                                       if (hotChunksLoading === 0 && 
hotWaitingFiles === 0) {
+/******/                                               hotUpdateDownloaded();
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/               };
+/******/               fn.t = function(value, mode) {
+/******/                       if (mode & 1) value = fn(value);
+/******/                       return __webpack_require__.t(value, mode & ~1);
+/******/               };
+/******/               return fn;
+/******/       }
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotCreateModule(moduleId) {
+/******/               var hot = {
+/******/                       // private stuff
+/******/                       _acceptedDependencies: {},
+/******/                       _declinedDependencies: {},
+/******/                       _selfAccepted: false,
+/******/                       _selfDeclined: false,
+/******/                       _disposeHandlers: [],
+/******/                       _main: hotCurrentChildModule !== moduleId,
+/******/
+/******/                       // Module API
+/******/                       active: true,
+/******/                       accept: function(dep, callback) {
+/******/                               if (dep === undefined) 
hot._selfAccepted = true;
+/******/                               else if (typeof dep === "function") 
hot._selfAccepted = dep;
+/******/                               else if (typeof dep === "object")
+/******/                                       for (var i = 0; i < dep.length; 
i++)
+/******/                                               
hot._acceptedDependencies[dep[i]] = callback || function() {};
+/******/                               else hot._acceptedDependencies[dep] = 
callback || function() {};
+/******/                       },
+/******/                       decline: function(dep) {
+/******/                               if (dep === undefined) 
hot._selfDeclined = true;
+/******/                               else if (typeof dep === "object")
+/******/                                       for (var i = 0; i < dep.length; 
i++)
+/******/                                               
hot._declinedDependencies[dep[i]] = true;
+/******/                               else hot._declinedDependencies[dep] = 
true;
+/******/                       },
+/******/                       dispose: function(callback) {
+/******/                               hot._disposeHandlers.push(callback);
+/******/                       },
+/******/                       addDisposeHandler: function(callback) {
+/******/                               hot._disposeHandlers.push(callback);
+/******/                       },
+/******/                       removeDisposeHandler: function(callback) {
+/******/                               var idx = 
hot._disposeHandlers.indexOf(callback);
+/******/                               if (idx >= 0) 
hot._disposeHandlers.splice(idx, 1);
+/******/                       },
+/******/
+/******/                       // Management API
+/******/                       check: hotCheck,
+/******/                       apply: hotApply,
+/******/                       status: function(l) {
+/******/                               if (!l) return hotStatus;
+/******/                               hotStatusHandlers.push(l);
+/******/                       },
+/******/                       addStatusHandler: function(l) {
+/******/                               hotStatusHandlers.push(l);
+/******/                       },
+/******/                       removeStatusHandler: function(l) {
+/******/                               var idx = hotStatusHandlers.indexOf(l);
+/******/                               if (idx >= 0) 
hotStatusHandlers.splice(idx, 1);
+/******/                       },
+/******/
+/******/                       //inherit from previous dispose call
+/******/                       data: hotCurrentModuleData[moduleId]
+/******/               };
+/******/               hotCurrentChildModule = undefined;
+/******/               return hot;
+/******/       }
+/******/
+/******/       var hotStatusHandlers = [];
+/******/       var hotStatus = "idle";
+/******/
+/******/       function hotSetStatus(newStatus) {
+/******/               hotStatus = newStatus;
+/******/               for (var i = 0; i < hotStatusHandlers.length; i++)
+/******/                       hotStatusHandlers[i].call(null, newStatus);
+/******/       }
+/******/
+/******/       // while downloading
+/******/       var hotWaitingFiles = 0;
+/******/       var hotChunksLoading = 0;
+/******/       var hotWaitingFilesMap = {};
+/******/       var hotRequestedFilesMap = {};
+/******/       var hotAvailableFilesMap = {};
+/******/       var hotDeferred;
+/******/
+/******/       // The update info
+/******/       var hotUpdate, hotUpdateNewHash;
+/******/
+/******/       function toModuleId(id) {
+/******/               var isNumber = +id + "" === id;
+/******/               return isNumber ? +id : id;
+/******/       }
+/******/
+/******/       function hotCheck(apply) {
+/******/               if (hotStatus !== "idle") {
+/******/                       throw new Error("check() is only allowed in 
idle status");
+/******/               }
+/******/               hotApplyOnUpdate = apply;
+/******/               hotSetStatus("check");
+/******/               return 
hotDownloadManifest(hotRequestTimeout).then(function(update) {
+/******/                       if (!update) {
+/******/                               hotSetStatus("idle");
+/******/                               return null;
+/******/                       }
+/******/                       hotRequestedFilesMap = {};
+/******/                       hotWaitingFilesMap = {};
+/******/                       hotAvailableFilesMap = update.c;
+/******/                       hotUpdateNewHash = update.h;
+/******/
+/******/                       hotSetStatus("prepare");
+/******/                       var promise = new Promise(function(resolve, 
reject) {
+/******/                               hotDeferred = {
+/******/                                       resolve: resolve,
+/******/                                       reject: reject
+/******/                               };
+/******/                       });
+/******/                       hotUpdate = {};
+/******/                       var chunkId = "main";
+/******/                       // eslint-disable-next-line no-lone-blocks
+/******/                       {
+/******/                               /*globals chunkId */
+/******/                               hotEnsureUpdateChunk(chunkId);
+/******/                       }
+/******/                       if (
+/******/                               hotStatus === "prepare" &&
+/******/                               hotChunksLoading === 0 &&
+/******/                               hotWaitingFiles === 0
+/******/                       ) {
+/******/                               hotUpdateDownloaded();
+/******/                       }
+/******/                       return promise;
+/******/               });
+/******/       }
+/******/
+/******/       // eslint-disable-next-line no-unused-vars
+/******/       function hotAddUpdateChunk(chunkId, moreModules) {
+/******/               if (!hotAvailableFilesMap[chunkId] || 
!hotRequestedFilesMap[chunkId])
+/******/                       return;
+/******/               hotRequestedFilesMap[chunkId] = false;
+/******/               for (var moduleId in moreModules) {
+/******/                       if 
(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/                               hotUpdate[moduleId] = 
moreModules[moduleId];
+/******/                       }
+/******/               }
+/******/               if (--hotWaitingFiles === 0 && hotChunksLoading === 0) {
+/******/                       hotUpdateDownloaded();
+/******/               }
+/******/       }
+/******/
+/******/       function hotEnsureUpdateChunk(chunkId) {
+/******/               if (!hotAvailableFilesMap[chunkId]) {
+/******/                       hotWaitingFilesMap[chunkId] = true;
+/******/               } else {
+/******/                       hotRequestedFilesMap[chunkId] = true;
+/******/                       hotWaitingFiles++;
+/******/                       hotDownloadUpdateChunk(chunkId);
+/******/               }
+/******/       }
+/******/
+/******/       function hotUpdateDownloaded() {
+/******/               hotSetStatus("ready");
+/******/               var deferred = hotDeferred;
+/******/               hotDeferred = null;
+/******/               if (!deferred) return;
+/******/               if (hotApplyOnUpdate) {
+/******/                       // Wrap deferred object in Promise to mark it 
as a well-handled Promise to
+/******/                       // avoid triggering uncaught exception warning 
in Chrome.
+/******/                       // See 
https://bugs.chromium.org/p/chromium/issues/detail?id=465666
+/******/                       Promise.resolve()
+/******/                               .then(function() {
+/******/                                       return 
hotApply(hotApplyOnUpdate);
+/******/                               })
+/******/                               .then(
+/******/                                       function(result) {
+/******/                                               
deferred.resolve(result);
+/******/                                       },
+/******/                                       function(err) {
+/******/                                               deferred.reject(err);
+/******/                                       }
+/******/                               );
+/******/               } else {
+/******/                       var outdatedModules = [];
+/******/                       for (var id in hotUpdate) {
+/******/                               if 
(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
+/******/                                       
outdatedModules.push(toModuleId(id));
+/******/                               }
+/******/                       }
+/******/                       deferred.resolve(outdatedModules);
+/******/               }
+/******/       }
+/******/
+/******/       function hotApply(options) {
+/******/               if (hotStatus !== "ready")
+/******/                       throw new Error("apply() is only allowed in 
ready status");
+/******/               options = options || {};
+/******/
+/******/               var cb;
+/******/               var i;
+/******/               var j;
+/******/               var module;
+/******/               var moduleId;
+/******/
+/******/               function getAffectedStuff(updateModuleId) {
+/******/                       var outdatedModules = [updateModuleId];
+/******/                       var outdatedDependencies = {};
+/******/
+/******/                       var queue = outdatedModules.map(function(id) {
+/******/                               return {
+/******/                                       chain: [id],
+/******/                                       id: id
+/******/                               };
+/******/                       });
+/******/                       while (queue.length > 0) {
+/******/                               var queueItem = queue.pop();
+/******/                               var moduleId = queueItem.id;
+/******/                               var chain = queueItem.chain;
+/******/                               module = installedModules[moduleId];
+/******/                               if (!module || 
module.hot._selfAccepted) continue;
+/******/                               if (module.hot._selfDeclined) {
+/******/                                       return {
+/******/                                               type: "self-declined",
+/******/                                               chain: chain,
+/******/                                               moduleId: moduleId
+/******/                                       };
+/******/                               }
+/******/                               if (module.hot._main) {
+/******/                                       return {
+/******/                                               type: "unaccepted",
+/******/                                               chain: chain,
+/******/                                               moduleId: moduleId
+/******/                                       };
+/******/                               }
+/******/                               for (var i = 0; i < 
module.parents.length; i++) {
+/******/                                       var parentId = 
module.parents[i];
+/******/                                       var parent = 
installedModules[parentId];
+/******/                                       if (!parent) continue;
+/******/                                       if 
(parent.hot._declinedDependencies[moduleId]) {
+/******/                                               return {
+/******/                                                       type: 
"declined",
+/******/                                                       chain: 
chain.concat([parentId]),
+/******/                                                       moduleId: 
moduleId,
+/******/                                                       parentId: 
parentId
+/******/                                               };
+/******/                                       }
+/******/                                       if 
(outdatedModules.indexOf(parentId) !== -1) continue;
+/******/                                       if 
(parent.hot._acceptedDependencies[moduleId]) {
+/******/                                               if 
(!outdatedDependencies[parentId])
+/******/                                                       
outdatedDependencies[parentId] = [];
+/******/                                               
addAllToSet(outdatedDependencies[parentId], [moduleId]);
+/******/                                               continue;
+/******/                                       }
+/******/                                       delete 
outdatedDependencies[parentId];
+/******/                                       outdatedModules.push(parentId);
+/******/                                       queue.push({
+/******/                                               chain: 
chain.concat([parentId]),
+/******/                                               id: parentId
+/******/                                       });
+/******/                               }
+/******/                       }
+/******/
+/******/                       return {
+/******/                               type: "accepted",
+/******/                               moduleId: updateModuleId,
+/******/                               outdatedModules: outdatedModules,
+/******/                               outdatedDependencies: 
outdatedDependencies
+/******/                       };
+/******/               }
+/******/
+/******/               function addAllToSet(a, b) {
+/******/                       for (var i = 0; i < b.length; i++) {
+/******/                               var item = b[i];
+/******/                               if (a.indexOf(item) === -1) 
a.push(item);
+/******/                       }
+/******/               }
+/******/
+/******/               // at begin all updates modules are outdated
+/******/               // the "outdated" status can propagate to parents if 
they don't accept the children
+/******/               var outdatedDependencies = {};
+/******/               var outdatedModules = [];
+/******/               var appliedUpdate = {};
+/******/
+/******/               var warnUnexpectedRequire = function 
warnUnexpectedRequire() {
+/******/                       console.warn(
+/******/                               "[HMR] unexpected require(" + 
result.moduleId + ") to disposed module"
+/******/                       );
+/******/               };
+/******/
+/******/               for (var id in hotUpdate) {
+/******/                       if 
(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
+/******/                               moduleId = toModuleId(id);
+/******/                               /** @type {TODO} */
+/******/                               var result;
+/******/                               if (hotUpdate[id]) {
+/******/                                       result = 
getAffectedStuff(moduleId);
+/******/                               } else {
+/******/                                       result = {
+/******/                                               type: "disposed",
+/******/                                               moduleId: id
+/******/                                       };
+/******/                               }
+/******/                               /** @type {Error|false} */
+/******/                               var abortError = false;
+/******/                               var doApply = false;
+/******/                               var doDispose = false;
+/******/                               var chainInfo = "";
+/******/                               if (result.chain) {
+/******/                                       chainInfo = "\nUpdate 
propagation: " + result.chain.join(" -> ");
+/******/                               }
+/******/                               switch (result.type) {
+/******/                                       case "self-declined":
+/******/                                               if (options.onDeclined) 
options.onDeclined(result);
+/******/                                               if 
(!options.ignoreDeclined)
+/******/                                                       abortError = 
new Error(
+/******/                                                               
"Aborted because of self decline: " +
+/******/                                                                       
result.moduleId +
+/******/                                                                       
chainInfo
+/******/                                                       );
+/******/                                               break;
+/******/                                       case "declined":
+/******/                                               if (options.onDeclined) 
options.onDeclined(result);
+/******/                                               if 
(!options.ignoreDeclined)
+/******/                                                       abortError = 
new Error(
+/******/                                                               
"Aborted because of declined dependency: " +
+/******/                                                                       
result.moduleId +
+/******/                                                                       
" in " +
+/******/                                                                       
result.parentId +
+/******/                                                                       
chainInfo
+/******/                                                       );
+/******/                                               break;
+/******/                                       case "unaccepted":
+/******/                                               if 
(options.onUnaccepted) options.onUnaccepted(result);
+/******/                                               if 
(!options.ignoreUnaccepted)
+/******/                                                       abortError = 
new Error(
+/******/                                                               
"Aborted because " + moduleId + " is not accepted" + chainInfo
+/******/                                                       );
+/******/                                               break;
+/******/                                       case "accepted":
+/******/                                               if (options.onAccepted) 
options.onAccepted(result);
+/******/                                               doApply = true;
+/******/                                               break;
+/******/                                       case "disposed":
+/******/                                               if (options.onDisposed) 
options.onDisposed(result);
+/******/                                               doDispose = true;
+/******/                                               break;
+/******/                                       default:
+/******/                                               throw new 
Error("Unexception type " + result.type);
+/******/                               }
+/******/                               if (abortError) {
+/******/                                       hotSetStatus("abort");
+/******/                                       return 
Promise.reject(abortError);
+/******/                               }
+/******/                               if (doApply) {
+/******/                                       appliedUpdate[moduleId] = 
hotUpdate[moduleId];
+/******/                                       addAllToSet(outdatedModules, 
result.outdatedModules);
+/******/                                       for (moduleId in 
result.outdatedDependencies) {
+/******/                                               if (
+/******/                                                       
Object.prototype.hasOwnProperty.call(
+/******/                                                               
result.outdatedDependencies,
+/******/                                                               moduleId
+/******/                                                       )
+/******/                                               ) {
+/******/                                                       if 
(!outdatedDependencies[moduleId])
+/******/                                                               
outdatedDependencies[moduleId] = [];
+/******/                                                       addAllToSet(
+/******/                                                               
outdatedDependencies[moduleId],
+/******/                                                               
result.outdatedDependencies[moduleId]
+/******/                                                       );
+/******/                                               }
+/******/                                       }
+/******/                               }
+/******/                               if (doDispose) {
+/******/                                       addAllToSet(outdatedModules, 
[result.moduleId]);
+/******/                                       appliedUpdate[moduleId] = 
warnUnexpectedRequire;
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // Store self accepted outdated modules to require them 
later by the module system
+/******/               var outdatedSelfAcceptedModules = [];
+/******/               for (i = 0; i < outdatedModules.length; i++) {
+/******/                       moduleId = outdatedModules[i];
+/******/                       if (
+/******/                               installedModules[moduleId] &&
+/******/                               
installedModules[moduleId].hot._selfAccepted &&
+/******/                               // removed self-accepted modules should 
not be required
+/******/                               appliedUpdate[moduleId] !== 
warnUnexpectedRequire
+/******/                       ) {
+/******/                               outdatedSelfAcceptedModules.push({
+/******/                                       module: moduleId,
+/******/                                       errorHandler: 
installedModules[moduleId].hot._selfAccepted
+/******/                               });
+/******/                       }
+/******/               }
+/******/
+/******/               // Now in "dispose" phase
+/******/               hotSetStatus("dispose");
+/******/               
Object.keys(hotAvailableFilesMap).forEach(function(chunkId) {
+/******/                       if (hotAvailableFilesMap[chunkId] === false) {
+/******/                               hotDisposeChunk(chunkId);
+/******/                       }
+/******/               });
+/******/
+/******/               var idx;
+/******/               var queue = outdatedModules.slice();
+/******/               while (queue.length > 0) {
+/******/                       moduleId = queue.pop();
+/******/                       module = installedModules[moduleId];
+/******/                       if (!module) continue;
+/******/
+/******/                       var data = {};
+/******/
+/******/                       // Call dispose handlers
+/******/                       var disposeHandlers = 
module.hot._disposeHandlers;
+/******/                       for (j = 0; j < disposeHandlers.length; j++) {
+/******/                               cb = disposeHandlers[j];
+/******/                               cb(data);
+/******/                       }
+/******/                       hotCurrentModuleData[moduleId] = data;
+/******/
+/******/                       // disable module (this disables requires from 
this module)
+/******/                       module.hot.active = false;
+/******/
+/******/                       // remove module from cache
+/******/                       delete installedModules[moduleId];
+/******/
+/******/                       // when disposing there is no need to call 
dispose handler
+/******/                       delete outdatedDependencies[moduleId];
+/******/
+/******/                       // remove "parents" references from all children
+/******/                       for (j = 0; j < module.children.length; j++) {
+/******/                               var child = 
installedModules[module.children[j]];
+/******/                               if (!child) continue;
+/******/                               idx = child.parents.indexOf(moduleId);
+/******/                               if (idx >= 0) {
+/******/                                       child.parents.splice(idx, 1);
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // remove outdated dependency from module children
+/******/               var dependency;
+/******/               var moduleOutdatedDependencies;
+/******/               for (moduleId in outdatedDependencies) {
+/******/                       if (
+/******/                               
Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
+/******/                       ) {
+/******/                               module = installedModules[moduleId];
+/******/                               if (module) {
+/******/                                       moduleOutdatedDependencies = 
outdatedDependencies[moduleId];
+/******/                                       for (j = 0; j < 
moduleOutdatedDependencies.length; j++) {
+/******/                                               dependency = 
moduleOutdatedDependencies[j];
+/******/                                               idx = 
module.children.indexOf(dependency);
+/******/                                               if (idx >= 0) 
module.children.splice(idx, 1);
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // Now in "apply" phase
+/******/               hotSetStatus("apply");
+/******/
+/******/               hotCurrentHash = hotUpdateNewHash;
+/******/
+/******/               // insert new code
+/******/               for (moduleId in appliedUpdate) {
+/******/                       if 
(Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {
+/******/                               modules[moduleId] = 
appliedUpdate[moduleId];
+/******/                       }
+/******/               }
+/******/
+/******/               // call accept handlers
+/******/               var error = null;
+/******/               for (moduleId in outdatedDependencies) {
+/******/                       if (
+/******/                               
Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
+/******/                       ) {
+/******/                               module = installedModules[moduleId];
+/******/                               if (module) {
+/******/                                       moduleOutdatedDependencies = 
outdatedDependencies[moduleId];
+/******/                                       var callbacks = [];
+/******/                                       for (i = 0; i < 
moduleOutdatedDependencies.length; i++) {
+/******/                                               dependency = 
moduleOutdatedDependencies[i];
+/******/                                               cb = 
module.hot._acceptedDependencies[dependency];
+/******/                                               if (cb) {
+/******/                                                       if 
(callbacks.indexOf(cb) !== -1) continue;
+/******/                                                       
callbacks.push(cb);
+/******/                                               }
+/******/                                       }
+/******/                                       for (i = 0; i < 
callbacks.length; i++) {
+/******/                                               cb = callbacks[i];
+/******/                                               try {
+/******/                                                       
cb(moduleOutdatedDependencies);
+/******/                                               } catch (err) {
+/******/                                                       if 
(options.onErrored) {
+/******/                                                               
options.onErrored({
+/******/                                                                       
type: "accept-errored",
+/******/                                                                       
moduleId: moduleId,
+/******/                                                                       
dependencyId: moduleOutdatedDependencies[i],
+/******/                                                                       
error: err
+/******/                                                               });
+/******/                                                       }
+/******/                                                       if 
(!options.ignoreErrored) {
+/******/                                                               if 
(!error) error = err;
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // Load self accepted modules
+/******/               for (i = 0; i < outdatedSelfAcceptedModules.length; 
i++) {
+/******/                       var item = outdatedSelfAcceptedModules[i];
+/******/                       moduleId = item.module;
+/******/                       hotCurrentParents = [moduleId];
+/******/                       try {
+/******/                               __webpack_require__(moduleId);
+/******/                       } catch (err) {
+/******/                               if (typeof item.errorHandler === 
"function") {
+/******/                                       try {
+/******/                                               item.errorHandler(err);
+/******/                                       } catch (err2) {
+/******/                                               if (options.onErrored) {
+/******/                                                       
options.onErrored({
+/******/                                                               type: 
"self-accept-error-handler-errored",
+/******/                                                               
moduleId: moduleId,
+/******/                                                               error: 
err2,
+/******/                                                               
originalError: err
+/******/                                                       });
+/******/                                               }
+/******/                                               if 
(!options.ignoreErrored) {
+/******/                                                       if (!error) 
error = err2;
+/******/                                               }
+/******/                                               if (!error) error = err;
+/******/                                       }
+/******/                               } else {
+/******/                                       if (options.onErrored) {
+/******/                                               options.onErrored({
+/******/                                                       type: 
"self-accept-errored",
+/******/                                                       moduleId: 
moduleId,
+/******/                                                       error: err
+/******/                                               });
+/******/                                       }
+/******/                                       if (!options.ignoreErrored) {
+/******/                                               if (!error) error = err;
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/               }
+/******/
+/******/               // handle errors in accept handlers and self accepted 
module load
+/******/               if (error) {
+/******/                       hotSetStatus("fail");
+/******/                       return Promise.reject(error);
+/******/               }
+/******/
+/******/               hotSetStatus("idle");
+/******/               return new Promise(function(resolve) {
+/******/                       resolve(outdatedModules);
+/******/               });
+/******/       }
+/******/
+/******/       // 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: {},
+/******/                       hot: hotCreateModule(moduleId),
+/******/                       parents: (hotCurrentParentsTemp = 
hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),
+/******/                       children: []
+/******/               };
+/******/
+/******/               // Execute the module function
+/******/               modules[moduleId].call(module.exports, module, 
module.exports, hotCreateRequire(moduleId));
+/******/
+/******/               // 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, { 
enumerable: true, get: getter });
+/******/               }
+/******/       };
+/******/
+/******/       // define __esModule on exports
+/******/       __webpack_require__.r = function(exports) {
+/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) 
{
+/******/                       Object.defineProperty(exports, 
Symbol.toStringTag, { value: 'Module' });
+/******/               }
+/******/               Object.defineProperty(exports, '__esModule', { value: 
true });
+/******/       };
+/******/
+/******/       // create a fake namespace object
+/******/       // mode & 1: value is a module id, require it
+/******/       // mode & 2: merge all properties of value into the ns
+/******/       // mode & 4: return value when already ns object
+/******/       // mode & 8|1: behave like require
+/******/       __webpack_require__.t = function(value, mode) {
+/******/               if(mode & 1) value = __webpack_require__(value);
+/******/               if(mode & 8) return value;
+/******/               if((mode & 4) && typeof value === 'object' && value && 
value.__esModule) return value;
+/******/               var ns = Object.create(null);
+/******/               __webpack_require__.r(ns);
+/******/               Object.defineProperty(ns, 'default', { enumerable: 
true, value: value });
+/******/               if(mode & 2 && typeof value != 'string') for(var key in 
value) __webpack_require__.d(ns, key, function(key) { return value[key]; 
}.bind(null, key));
+/******/               return ns;
+/******/       };
+/******/
+/******/       // 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 = "/";
+/******/
+/******/       // __webpack_hash__
+/******/       __webpack_require__.h = function() { return hotCurrentHash; };
+/******/
+/******/
+/******/       // Load entry module and return exports
+/******/       return hotCreateRequire("./src/index.ts")(__webpack_require__.s 
= "./src/index.ts");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/errors/jsErrors.ts":
+/*!********************************!*\
+  !*** ./src/errors/jsErrors.ts ***!
+  \********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _services_trace__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ../services/trace */ "./src/services/trace.ts");
+/* harmony import */ var _services_constant__WEBPACK_IMPORTED_MODULE_1__ = 
__webpack_require__(/*! ../services/constant */ "./src/services/constant.ts");
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var __extends = (undefined && undefined.__extends) || (function () {
+    var extendStatics = function (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 JSErrors = /** @class */ (function (_super) {
+    __extends(JSErrors, _super);
+    function JSErrors() {
+        return _super !== null && _super.apply(this, arguments) || this;
+    }
+    JSErrors.prototype.handleErrors = function (options) {
+        var _this = this;
+        window.onerror = function (message, url, line, col, error) {
+            _this.logInfo = {
+                reportUrl: options.reportUrl,
+                category: 
_services_constant__WEBPACK_IMPORTED_MODULE_1__["ErrorsCategory"].JS_ERROR,
+                grade: 
_services_constant__WEBPACK_IMPORTED_MODULE_1__["GradeTypeEnum"].WARNING,
+                errorUrl: url,
+                line: line,
+                col: col,
+                errorInfo: error,
+                message: message,
+            };
+            _this.traceInfo();
+        };
+    };
+    return JSErrors;
+}(_services_trace__WEBPACK_IMPORTED_MODULE_0__["default"]));
+/* harmony default export */ __webpack_exports__["default"] = (new JSErrors());
+
+
+/***/ }),
+
+/***/ "./src/index.ts":
+/*!**********************!*\
+  !*** ./src/index.ts ***!
+  \**********************/
+/*! exports provided: ClientMonitor */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _monitor__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ./monitor */ "./src/monitor.ts");
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, 
"ClientMonitor", function() { return 
_monitor__WEBPACK_IMPORTED_MODULE_0__["default"]; });
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+window.ClientMonitor = _monitor__WEBPACK_IMPORTED_MODULE_0__["default"];
+
+
+
+/***/ }),
+
+/***/ "./src/monitor.ts":
+/*!************************!*\
+  !*** ./src/monitor.ts ***!
+  \************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _errors_jsErrors__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ./errors/jsErrors */ "./src/errors/jsErrors.ts");
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var ClientMonitor = {
+    errorTypes: {
+        jsErrors: true,
+        promiseErrors: true,
+        consoleErrors: false,
+        vueErrors: false,
+        reactErrors: false,
+        ajaxErrors: true,
+        resourceErrors: true,
+    },
+    init: function (options) {
+        this.errorTypes = options;
+        if (this.errorTypes.jsErrors) {
+            this.errorTypes.jsErrors = options.jsErrors;
+            
_errors_jsErrors__WEBPACK_IMPORTED_MODULE_0__["default"].handleErrors({ 
reportUrl: options.reportUrl });
+        }
+        if (this.errorTypes.promiseErrors) {
+            this.errorTypes.promiseErrors = options.promiseErrors || 
this.errorTypes.promiseErrors;
+        }
+        if (this.errorTypes.resourceErrors) {
+            this.errorTypes.resourceErrors = options.resourceErrors;
+        }
+        if (this.errorTypes.ajaxErrors) {
+            this.errorTypes.ajaxErrors = options.ajaxErrors || 
this.errorTypes.ajaxErrors;
+        }
+    },
+};
+/* harmony default export */ __webpack_exports__["default"] = (ClientMonitor);
+
+
+/***/ }),
+
+/***/ "./src/services/constant.ts":
+/*!**********************************!*\
+  !*** ./src/services/constant.ts ***!
+  \**********************************/
+/*! exports provided: ErrorsCategory, GradeTypeEnum */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, 
"ErrorsCategory", function() { return ErrorsCategory; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, 
"GradeTypeEnum", function() { return GradeTypeEnum; });
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var ErrorsCategory;
+(function (ErrorsCategory) {
+    ErrorsCategory["AJAX_ERROR"] = "ajaxError";
+    ErrorsCategory["RESOURCE_ERROR"] = "resourceError";
+    ErrorsCategory["VUE_ERROR"] = "vueError";
+    ErrorsCategory["PROMISE_ERROR"] = "promiseError";
+    ErrorsCategory["JS_ERROR"] = "jsError";
+    ErrorsCategory["CONSOLE_INFO"] = "consoleInfo";
+    ErrorsCategory["CONSOLE_WARN"] = "consoleWarn";
+    ErrorsCategory["CONSOLE_ERROR"] = "consoleError";
+    ErrorsCategory["CROSS_SCRIPT_ERROR"] = "crossSrciptError";
+    ErrorsCategory["UNKNOW_ERROR"] = "unknowError";
+})(ErrorsCategory || (ErrorsCategory = {}));
+var GradeTypeEnum;
+(function (GradeTypeEnum) {
+    GradeTypeEnum["INFO"] = "Info";
+    GradeTypeEnum["WARNING"] = "Warning";
+    GradeTypeEnum["ERROR"] = "Error";
+})(GradeTypeEnum || (GradeTypeEnum = {}));
+
+
+/***/ }),
+
+/***/ "./src/services/report.ts":
+/*!********************************!*\
+  !*** ./src/services/report.ts ***!
+  \********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var Report = /** @class */ (function () {
+    function Report(url) {
+        this.url = '';
+        this.url = url;
+    }
+    Report.prototype.sendByXhr = function (data) {
+        if (!this.checkUrl(this.url)) {
+            return;
+        }
+        try {
+            var xhr = new XMLHttpRequest();
+            xhr.open('POST', this.url, true);
+            xhr.setRequestHeader('Content-Type', 'application/json');
+            console.log(data);
+            xhr.send(JSON.stringify(data));
+        }
+        catch (error) {
+            //   console.log(error);
+        }
+    };
+    Report.prototype.reportByImg = function (data) {
+        if (!this.checkUrl(this.url)) {
+            return;
+        }
+        try {
+            var imgObj = new Image();
+            imgObj.src = this.url + "?v=" + new Date().getTime() + "&" + 
this.formatParams(data);
+        }
+        catch (error) {
+            // console.log(error);
+        }
+    };
+    Report.prototype.formatParams = function (data) {
+        return Object.keys(data).map(function (name) {
+            return encodeURIComponent(name) + "=" + 
encodeURIComponent(data[name]);
+        }).join('&');
+    };
+    Report.prototype.checkUrl = function (url) {
+        if (!url) {
+            return;
+        }
+        var urlRule = /^[hH][tT][tT][pP]([sS]?):\/\//;
+        return urlRule.test(url);
+    };
+    return Report;
+}());
+/* harmony default export */ __webpack_exports__["default"] = (Report);
+
+
+/***/ }),
+
+/***/ "./src/services/task.ts":
+/*!******************************!*\
+  !*** ./src/services/task.ts ***!
+  \******************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _report__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ./report */ "./src/services/report.ts");
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var TaskQueue = /** @class */ (function () {
+    function TaskQueue() {
+        this.queues = [];
+    }
+    TaskQueue.prototype.addTask = function (reportUrl, data) {
+        this.queues.push({ reportUrl: reportUrl, data: data });
+    };
+    TaskQueue.prototype.fireTasks = function () {
+        if (!this.queues || !this.queues.length) {
+            return;
+        }
+        var item = this.queues[0];
+        if (item.reportUrl) {
+            new 
_report__WEBPACK_IMPORTED_MODULE_0__["default"](item.reportUrl).sendByXhr(item.data);
+        }
+        this.queues.splice(0, 1);
+        this.fireTasks();
+    };
+    return TaskQueue;
+}());
+/* harmony default export */ __webpack_exports__["default"] = (new 
TaskQueue());
+
+
+/***/ }),
+
+/***/ "./src/services/trace.ts":
+/*!*******************************!*\
+  !*** ./src/services/trace.ts ***!
+  \*******************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _task__WEBPACK_IMPORTED_MODULE_0__ = 
__webpack_require__(/*! ./task */ "./src/services/task.ts");
+/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = 
__webpack_require__(/*! ./constant */ "./src/services/constant.ts");
+var __assign = (undefined && undefined.__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);
+};
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+var Trace = /** @class */ (function () {
+    function Trace() {
+        this.logInfo = {
+            category: 
_constant__WEBPACK_IMPORTED_MODULE_1__["ErrorsCategory"].UNKNOW_ERROR,
+            grade: 
_constant__WEBPACK_IMPORTED_MODULE_1__["GradeTypeEnum"].INFO,
+            errorUrl: '',
+            line: 0,
+            col: 0,
+            errorInfo: '',
+            message: '',
+            reportUrl: '',
+        };
+    }
+    Trace.prototype.traceInfo = function () {
+        this.handleRecordError();
+        setTimeout(function () {
+            _task__WEBPACK_IMPORTED_MODULE_0__["default"].fireTasks();
+        }, 100);
+    };
+    Trace.prototype.handleRecordError = function () {
+        try {
+            if (!this.logInfo.message) {
+                return;
+            }
+            if (this.logInfo.reportUrl && this.logInfo.errorUrl &&
+                
this.logInfo.errorUrl.toLowerCase().includes(this.logInfo.reportUrl.toLowerCase()))
 {
+                return;
+            }
+            var errorInfo = this.handleErrorInfo();
+            
_task__WEBPACK_IMPORTED_MODULE_0__["default"].addTask(this.logInfo.reportUrl, 
errorInfo);
+        }
+        catch (error) {
+            // console.log(error);
+        }
+    };
+    Trace.prototype.handleErrorInfo = function () {
+        var message = "error category:" + this.logInfo.category + "\r\n log 
info:" + this.logInfo.message + "\r\n\n      error url: " + 
this.logInfo.errorUrl + "\r\n ";
+        switch (this.logInfo.category) {
+            case 
_constant__WEBPACK_IMPORTED_MODULE_1__["ErrorsCategory"].JS_ERROR:
+                message += "error line number: " + this.logInfo.line + "\r\n 
error col number:" + this.logInfo.col + "\r\n";
+                if (this.logInfo.errorInfo && this.logInfo.errorInfo.stack) {
+                    message += "error stack: " + this.logInfo.errorInfo.stack 
+ "\r\n";
+                }
+                break;
+            default:
+                message += "other error: " + this.logInfo.errorInfo + "\r\n";
+                break;
+        }
+        var recordInfo = __assign(__assign({}, this.logInfo), { message: 
message });
+        return recordInfo;
+    };
+    return Trace;
+}());
+/* harmony default export */ __webpack_exports__["default"] = (Trace);
+
+
+/***/ })
+
+/******/ });
+//# 
sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Vycm9ycy9qc0Vycm9ycy50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL21vbml0b3IudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3NlcnZpY2VzL2NvbnN0YW50LnRzIiwid2VicGFjazovLy8uL3NyYy9zZXJ2aWNlcy9yZXBvcnQudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3NlcnZpY2VzL3Rhc2sudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3NlcnZpY2VzL3RyYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGlu
 [...]
\ No newline at end of file
diff --git a/src/index.ts b/index.js
similarity index 86%
copy from src/index.ts
copy to index.js
index 319921d..564fb76 100644
--- a/src/index.ts
+++ b/index.js
@@ -15,8 +15,6 @@
  * limitations under the License.
  */
 
-import ClientMonitor from './monitor';
+import './src/index';
 
-(window as any).ClientMonitor = new ClientMonitor();
-
-export default new ClientMonitor();
+export default ClientMonitor;
diff --git a/package.json b/package.json
index 3e7f1c5..e003d86 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,8 @@
 {
   "name": "skywalking-client-js",
-  "version": "1.0.0",
+  "version": "0.0.1",
   "description": "js monitor",
   "main": "index.js",
-  "author": "Qiuxia Fan",
-  "license": "MIT",
   "dependencies": {
     "clean-webpack-plugin": "3.0.0",
     "express": "^4.17.1",
diff --git a/server.js b/server.js
index c2f6683..345cf7e 100644
--- a/server.js
+++ b/server.js
@@ -1,34 +1,35 @@
 /**
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License.  You may obtain a copy of the License at
-*
-*      http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-const express = require('express');
-const webpack = require('webpack');
-const webpackDevMiddleware = require('webpack-dev-middleware');
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+const express = require("express");
+const webpack = require("webpack");
+const webpackDevMiddleware = require("webpack-dev-middleware");
 
 const app = express();
-const config = require('./webpack.config.js');
+const config = require("./webpack.config.js");
 const compiler = webpack(config);
 
 // Tell express to use the webpack-dev-middleware and use the webpack.config.js
 // configuration file as a base.
-app.use(webpackDevMiddleware(compiler, {
-  publicPath: config.output.publicPath
-}));
-
+app.use(
+  webpackDevMiddleware(compiler, {
+    publicPath: config.output.publicPath
+  })
+);
 // Serve the files on port 3000.
-app.listen(3000, function () {
-  console.log('Example app listening on port 3000!\n');
-});
\ No newline at end of file
+app.listen(3000, function() {
+  console.log("Example app listening on port 3000!\n");
+});
diff --git a/src/errors/jsErrors.ts b/src/errors/jsErrors.ts
index 29e9b79..2d1a391 100644
--- a/src/errors/jsErrors.ts
+++ b/src/errors/jsErrors.ts
@@ -26,7 +26,7 @@ class JSErrors extends Trace {
         reportUrl: options.reportUrl,
         category: ErrorsCategory.JS_ERROR,
         grade: GradeTypeEnum.WARNING,
-        url,
+        errorUrl: url,
         line,
         col,
         errorInfo: error,
diff --git a/src/index.ts b/src/index.ts
index 319921d..f14b4c3 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -17,6 +17,6 @@
 
 import ClientMonitor from './monitor';
 
-(window as any).ClientMonitor = new ClientMonitor();
+(window as any).ClientMonitor = ClientMonitor;
 
-export default new ClientMonitor();
+export default ClientMonitor;
diff --git a/src/monitor.ts b/src/monitor.ts
index 8a1cb61..b24faf0 100644
--- a/src/monitor.ts
+++ b/src/monitor.ts
@@ -17,9 +17,8 @@
 import JSErrors from './errors/jsErrors';
 import { TClientMonitor, TErrorsType } from './types';
 
-export default class ClientMonitor {
-
-  private errorTypes: TErrorsType = {
+const ClientMonitor = {
+  errorTypes: {
     jsErrors: true,
     promiseErrors: true,
     consoleErrors: false,
@@ -27,9 +26,9 @@ export default class ClientMonitor {
     reactErrors: false,
     ajaxErrors: true,
     resourceErrors: true,
-  };
+  } as TErrorsType,
 
-  public init(options: TClientMonitor & TErrorsType) {
+  register(options: TClientMonitor & TErrorsType) {
     this.errorTypes = options;
     if (this.errorTypes.jsErrors) {
       this.errorTypes.jsErrors = options.jsErrors;
@@ -44,5 +43,7 @@ export default class ClientMonitor {
     if (this.errorTypes.ajaxErrors) {
       this.errorTypes.ajaxErrors = options.ajaxErrors || 
this.errorTypes.ajaxErrors;
     }
-  }
-}
+  },
+};
+
+export default ClientMonitor;
diff --git a/src/services/trace.ts b/src/services/trace.ts
index 7bc6f4a..1478fc4 100644
--- a/src/services/trace.ts
+++ b/src/services/trace.ts
@@ -16,18 +16,18 @@
  */
 import Task from './task';
 import { ErrorsCategory, GradeTypeEnum } from './constant';
-import { TraceFields } from './types';
+import { errorInfoFeilds } from './types';
 
 export default class Trace {
-  public logInfo: TraceFields = {
+  public logInfo: errorInfoFeilds & {reportUrl: string} = {
     category: ErrorsCategory.UNKNOW_ERROR,
     grade: GradeTypeEnum.INFO,
-    url: '',
+    errorUrl: '',
     line: 0,
     col: 0,
     errorInfo: '',
-    reportUrl: '',
     message: '',
+    reportUrl: '',
   };
 
   public traceInfo() {
@@ -42,8 +42,8 @@ export default class Trace {
       if (!this.logInfo.message) {
         return;
       }
-      if (this.logInfo.reportUrl && this.logInfo.url &&
-        
this.logInfo.url.toLowerCase().includes(this.logInfo.reportUrl.toLowerCase())) {
+      if (this.logInfo.reportUrl && this.logInfo.errorUrl &&
+        
this.logInfo.errorUrl.toLowerCase().includes(this.logInfo.reportUrl.toLowerCase()))
 {
         return;
       }
       const errorInfo = this.handleErrorInfo();
@@ -57,7 +57,7 @@ export default class Trace {
 
   private handleErrorInfo() {
     let message = `error category:${this.logInfo.category}\r\n log 
info:${this.logInfo.message}\r\n
-      error url: ${this.logInfo.url}\r\n `;
+      error url: ${this.logInfo.errorUrl}\r\n `;
     switch (this.logInfo.category) {
         case ErrorsCategory.JS_ERROR:
           message += `error line number: ${this.logInfo.line}\r\n error col 
number:${this.logInfo.col}\r\n`;
diff --git a/src/services/types.d.ts b/src/services/types.d.ts
index 6662d8c..d296077 100644
--- a/src/services/types.d.ts
+++ b/src/services/types.d.ts
@@ -16,18 +16,10 @@
  */
 export interface TraceFields {
   reportUrl: string;
-  category: string;
-  grade: string;
-  message: any;
-  url: string;
-  line: number; 
-  col: number;
-  errorInfo: any;
+  serviceName?: string;
+  errorInfo: errorInfoFeilds;
   performanceInfo?: performanceInfoFields;
   resources?: any;
-  time?: string;
-  userId?: string;
-  pageUv?: string;
   pageId?: string;
   deviceInfo?: any;
 }
@@ -40,3 +32,13 @@ export interface performanceInfoFields {
   domReadyTime: string;
   loadPage: string;
 }
+
+export interface errorInfoFeilds {
+  category: string;
+  grade: string;
+  message: any;
+  errorUrl: string;
+  line: number; 
+  col: number;
+  errorInfo: any;
+}
diff --git a/test/index.html b/test/index.html
deleted file mode 100644
index 181f999..0000000
--- a/test/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <meta http-equiv="X-UA-Compatible" content="ie=edge">
-  <title>Document</title>
-</head>
-<body>
-  <div>console test</div>
-  <script src="../dist/monitor.js"></script>
-  <script>
-    ClientMonitor.init({
-      reportUrl: "http://baidu.com";,
-      consoleErrors:true,
-      jsErrors: true,
-      promiseErrors: false,
-      vueErrors: false,
-      reactErrors: false,
-      ajaxErrors: false,
-      resourceErrors: false
-    });
-    ss();
-  </script>
-</body>
-</html>
diff --git a/webpack.config.js b/webpack.config.js
index b37677e..812f1d0 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -35,7 +35,7 @@ module.exports = {
     extensions: [ '.tsx', '.ts', '.js' ]
   },
   output: {
-    filename: 'monitor.js',
+    filename: 'index.js',
     path: path.resolve(__dirname, 'dist'),
     publicPath: '/'
   },

Reply via email to