From 5fade48f5e6d7782a70dc8187f3de477985a7356 Mon Sep 17 00:00:00 2001 From: Park Byung Eun Date: Mon, 10 Aug 2020 14:04:56 +0900 Subject: [PATCH] sync --- .gitignore | 1 + package-lock.json | 6003 ----------------- package.json | 39 +- projects/common/package.json | 13 +- projects/common/src/lib/api/app/attacher.ts | 86 + projects/common/src/lib/api/app/builder.ts | 15 + .../lib/api/app/decorators/app-settings.ts | 30 + .../common/src/lib/api/app/decorators/on.ts | 26 + projects/common/src/lib/api/app/index.ts | 28 + .../lib/api/app/models/app-configuration.ts | 9 + .../api/app/models/event-handler.metadata.ts | 73 + .../app/registries/event-handler.registry.ts | 94 + .../lib/api/app/types/event-attach.type.ts | 3 + .../src/lib/api/auto-updater/attacher.ts | 89 + .../src/lib/api/auto-updater/builder.ts | 16 + .../decorators/auto-updater-settings.ts | 31 + .../src/lib/api/auto-updater/decorators/on.ts | 26 + .../common/src/lib/api/auto-updater/index.ts | 31 + .../models/auto-updater-configuration.ts | 3 + .../models/event-handler.metadata.ts | 74 + .../registries/event-handler.registry.ts | 95 + .../auto-updater/types/event-attach.type.ts | 3 + .../src/lib/api/browser-window/attacher.ts | 55 + .../src/lib/api/browser-window/builder.ts | 36 + .../browser-window-configuration.ts | 29 + .../lib/api/browser-window/decorators/on.ts | 26 + .../browser-window/electron-browser-window.ts | 5 + .../src/lib/api/browser-window/index.ts | 34 + .../models/browser-window-configuration.ts | 12 + .../models/event-handler.metadata.ts | 74 + .../registries/event-handler.registry.ts | 97 + .../browser-window/types/event-attach.type.ts | 3 + .../common/src/lib/api/ipc-main/attacher.ts | 118 + .../api/ipc-main/decorators/handle-once.ts | 24 + .../src/lib/api/ipc-main/decorators/handle.ts | 24 + .../src/lib/api/ipc-main/decorators/on.ts | 24 + .../src/lib/api/ipc-main/decorators/once.ts | 24 + projects/common/src/lib/api/ipc-main/index.ts | 27 + .../ipc-main/models/event-handler.metadata.ts | 72 + .../registries/event-handler.registry.ts | 92 + .../api/ipc-main/types/event-attach.type.ts | 6 + projects/common/src/lib/app/app.ts | 91 - .../src/lib/app/decorators/app-settings.ts | 10 - .../src/lib/app/decorators/electron-app.ts | 14 - .../lib/app/services/app-settings.service.ts | 16 - projects/common/src/lib/platform/attacher.ts | 25 + projects/common/src/lib/platform/hooks.ts | 39 + projects/common/src/lib/platform/index.ts | 21 + projects/common/src/lib/platform/platform.ts | 157 + .../src/lib/platform/service-builder.ts | 13 + projects/common/src/public-api.ts | 11 +- projects/core/package.json | 7 +- .../core/src/lib/types/app-channel.type.ts | 36 + .../lib/types/auto-updater-channel.type.ts | 11 + .../core/src/lib/types/browser-window.type.ts | 36 + projects/core/src/lib/types/channel.type.ts | 39 - .../lib/types/web-contents-channel.type.ts | 57 + .../core/src/lib/utils/browser-window.util.ts | 22 + projects/core/src/lib/utils/file.util.ts | 192 + projects/core/src/lib/utils/platform.util.ts | 65 + projects/core/src/public-api.ts | 9 +- projects/i18n/package.json | 14 + .../i18n/src/lib/services/i18n.service.ts | 1 + projects/i18n/src/public-api.ts | 7 + projects/i18n/tsconfig.lib.json | 12 + projects/i18n/tsconfig.lib.prod.json | 3 + projects/i18n/tsconfig.spec.json | 9 + projects/i18n/tslint.json | 3 + projects/i18n/ucap-package.json | 7 + projects/logger/package.json | 13 + .../lib/appenders/electron-log.appender.ts | 49 + projects/logger/src/public-api.ts | 5 + projects/logger/tsconfig.lib.json | 12 + projects/logger/tsconfig.lib.prod.json | 3 + projects/logger/tsconfig.spec.json | 9 + projects/logger/tslint.json | 3 + projects/logger/ucap-package.json | 7 + projects/native/package.json | 20 + .../lib/services/electron-native.service.ts | 717 ++ projects/native/src/lib/types/channel.type.ts | 65 + projects/native/src/public-api.ts | 7 + projects/native/tsconfig.lib.json | 12 + projects/native/tsconfig.lib.prod.json | 3 + projects/native/tsconfig.spec.json | 9 + projects/native/tslint.json | 3 + projects/native/ucap-package.json | 7 + projects/notify-window/package.json | 12 +- .../src/lib/models/notify-window-options.ts | 4 +- .../src/lib/services/notify-window.service.ts | 82 +- projects/notify-window/src/public-api.ts | 8 + projects/updater-window/package.json | 10 +- scripts/build.js | 42 +- 92 files changed, 3325 insertions(+), 6274 deletions(-) delete mode 100644 package-lock.json create mode 100644 projects/common/src/lib/api/app/attacher.ts create mode 100644 projects/common/src/lib/api/app/builder.ts create mode 100644 projects/common/src/lib/api/app/decorators/app-settings.ts create mode 100644 projects/common/src/lib/api/app/decorators/on.ts create mode 100644 projects/common/src/lib/api/app/index.ts create mode 100644 projects/common/src/lib/api/app/models/app-configuration.ts create mode 100644 projects/common/src/lib/api/app/models/event-handler.metadata.ts create mode 100644 projects/common/src/lib/api/app/registries/event-handler.registry.ts create mode 100644 projects/common/src/lib/api/app/types/event-attach.type.ts create mode 100644 projects/common/src/lib/api/auto-updater/attacher.ts create mode 100644 projects/common/src/lib/api/auto-updater/builder.ts create mode 100644 projects/common/src/lib/api/auto-updater/decorators/auto-updater-settings.ts create mode 100644 projects/common/src/lib/api/auto-updater/decorators/on.ts create mode 100644 projects/common/src/lib/api/auto-updater/index.ts create mode 100644 projects/common/src/lib/api/auto-updater/models/auto-updater-configuration.ts create mode 100644 projects/common/src/lib/api/auto-updater/models/event-handler.metadata.ts create mode 100644 projects/common/src/lib/api/auto-updater/registries/event-handler.registry.ts create mode 100644 projects/common/src/lib/api/auto-updater/types/event-attach.type.ts create mode 100644 projects/common/src/lib/api/browser-window/attacher.ts create mode 100644 projects/common/src/lib/api/browser-window/builder.ts create mode 100644 projects/common/src/lib/api/browser-window/decorators/browser-window-configuration.ts create mode 100644 projects/common/src/lib/api/browser-window/decorators/on.ts create mode 100644 projects/common/src/lib/api/browser-window/electron-browser-window.ts create mode 100644 projects/common/src/lib/api/browser-window/index.ts create mode 100644 projects/common/src/lib/api/browser-window/models/browser-window-configuration.ts create mode 100644 projects/common/src/lib/api/browser-window/models/event-handler.metadata.ts create mode 100644 projects/common/src/lib/api/browser-window/registries/event-handler.registry.ts create mode 100644 projects/common/src/lib/api/browser-window/types/event-attach.type.ts create mode 100644 projects/common/src/lib/api/ipc-main/attacher.ts create mode 100644 projects/common/src/lib/api/ipc-main/decorators/handle-once.ts create mode 100644 projects/common/src/lib/api/ipc-main/decorators/handle.ts create mode 100644 projects/common/src/lib/api/ipc-main/decorators/on.ts create mode 100644 projects/common/src/lib/api/ipc-main/decorators/once.ts create mode 100644 projects/common/src/lib/api/ipc-main/index.ts create mode 100644 projects/common/src/lib/api/ipc-main/models/event-handler.metadata.ts create mode 100644 projects/common/src/lib/api/ipc-main/registries/event-handler.registry.ts create mode 100644 projects/common/src/lib/api/ipc-main/types/event-attach.type.ts delete mode 100644 projects/common/src/lib/app/app.ts delete mode 100644 projects/common/src/lib/app/decorators/app-settings.ts delete mode 100644 projects/common/src/lib/app/decorators/electron-app.ts delete mode 100644 projects/common/src/lib/app/services/app-settings.service.ts create mode 100644 projects/common/src/lib/platform/attacher.ts create mode 100644 projects/common/src/lib/platform/hooks.ts create mode 100644 projects/common/src/lib/platform/index.ts create mode 100644 projects/common/src/lib/platform/platform.ts create mode 100644 projects/common/src/lib/platform/service-builder.ts create mode 100644 projects/core/src/lib/types/app-channel.type.ts create mode 100644 projects/core/src/lib/types/auto-updater-channel.type.ts create mode 100644 projects/core/src/lib/types/browser-window.type.ts delete mode 100644 projects/core/src/lib/types/channel.type.ts create mode 100644 projects/core/src/lib/types/web-contents-channel.type.ts create mode 100644 projects/core/src/lib/utils/browser-window.util.ts create mode 100644 projects/core/src/lib/utils/file.util.ts create mode 100644 projects/core/src/lib/utils/platform.util.ts create mode 100644 projects/i18n/package.json create mode 100644 projects/i18n/src/lib/services/i18n.service.ts create mode 100644 projects/i18n/src/public-api.ts create mode 100644 projects/i18n/tsconfig.lib.json create mode 100644 projects/i18n/tsconfig.lib.prod.json create mode 100644 projects/i18n/tsconfig.spec.json create mode 100644 projects/i18n/tslint.json create mode 100644 projects/i18n/ucap-package.json create mode 100644 projects/logger/package.json create mode 100644 projects/logger/src/lib/appenders/electron-log.appender.ts create mode 100644 projects/logger/src/public-api.ts create mode 100644 projects/logger/tsconfig.lib.json create mode 100644 projects/logger/tsconfig.lib.prod.json create mode 100644 projects/logger/tsconfig.spec.json create mode 100644 projects/logger/tslint.json create mode 100644 projects/logger/ucap-package.json create mode 100644 projects/native/package.json create mode 100644 projects/native/src/lib/services/electron-native.service.ts create mode 100644 projects/native/src/lib/types/channel.type.ts create mode 100644 projects/native/src/public-api.ts create mode 100644 projects/native/tsconfig.lib.json create mode 100644 projects/native/tsconfig.lib.prod.json create mode 100644 projects/native/tsconfig.spec.json create mode 100644 projects/native/tslint.json create mode 100644 projects/native/ucap-package.json diff --git a/.gitignore b/.gitignore index f399cac..3948efd 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # compiled output /dist +/pack /docs /tmp /out-tsc diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index b877083..0000000 --- a/package-lock.json +++ /dev/null @@ -1,6003 +0,0 @@ -{ - "name": "ucap-electron", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@electron/get": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@electron/get/-/get-1.9.0.tgz", - "integrity": "sha512-OBIKtF6ttIJotDXe4KJMUyTBO4xMii+mFjlA8R4CORuD4HvCUaCK3lPjhdTRCvuEv6gzWNbAvd9DNBv0v780lw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "global-agent": "^2.0.2", - "global-tunnel-ng": "^2.7.1", - "got": "^9.6.0", - "progress": "^2.0.3", - "sanitize-filename": "^1.6.2", - "sumchecker": "^3.0.1" - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@tsed/core": { - "version": "5.44.13", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@tsed/core/-/core-5.44.13.tgz", - "integrity": "sha512-rlCpn7rGYYDXR+iZM6aphSruFuXLpD20n9fVn+7gPPAcBxQhRW8JkTQqZJyIogNtcCVWT7+4DC89ykQ2UfRPEg==", - "dev": true, - "requires": { - "reflect-metadata": "^0.1.13", - "source-map-support": "0.5.16", - "tslib": "1.11.1" - } - }, - "@tsed/di": { - "version": "5.44.13", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@tsed/di/-/di-5.44.13.tgz", - "integrity": "sha512-/kTqhGkPZ1b4hMHVyE2Gih6jWcEb32af6gK+WG/tAU50/xLUG36lo5V/VLFp1vPiTC0KFB1KKKV9zED/KfIrzg==", - "dev": true, - "requires": { - "@tsed/core": "5.44.13", - "chalk": "3.0.0", - "tslib": "1.11.1" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/fs-extra": { - "version": "8.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/node": { - "version": "12.12.31", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/node/-/node-12.12.31.tgz", - "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", - "dev": true - }, - "@ucap/electron-core": { - "version": "file:dist/core/ucap-electron-core-0.0.1.tgz", - "integrity": "sha512-GPbqbDbI6D7wMaeyACwZ0T87LsHkpeqkWeoy0b5L6WX89LXn66J6zHKv+z2lX5H062Gg3/QcMcbbeV+91I3IHA==" - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "6.4.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arg": { - "version": "4.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "backbone": { - "version": "1.4.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/backbone/-/backbone-1.4.0.tgz", - "integrity": "sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ==", - "dev": true, - "requires": { - "underscore": ">=1.8.3" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "boolean": { - "version": "3.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/boolean/-/boolean-3.0.1.tgz", - "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==", - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "cacache": { - "version": "13.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "dev": true, - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concurrently": { - "version": "5.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/concurrently/-/concurrently-5.1.0.tgz", - "integrity": "sha512-9ViZMu3OOCID3rBgU31mjBftro2chOop0G2u1olq1OuwRBVRw/GxHTg80TVJBUTJfoswMmEUeuOg1g1yu1X2dA==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "config-chain": { - "version": "1.1.12", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "optional": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "3.6.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "date-fns": { - "version": "2.11.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/date-fns/-/date-fns-2.11.1.tgz", - "integrity": "sha512-3RdUoinZ43URd2MJcquzBbDQo+J87cSzB8NkXdZiN5ia1UNyep0oCyitfiL88+R7clGTeq/RniXAc16gWyAu1w==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "des.js": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "detect-node": { - "version": "2.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true, - "optional": true - }, - "diff": { - "version": "4.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "electron": { - "version": "8.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/electron/-/electron-8.2.0.tgz", - "integrity": "sha512-mnV43gKCrCUMHLmGws/DU/l8LhaxrFD53A4ofwtthdCqOZWGIdk1+eMphiVumXR5a3lC64XVvmXQ2k28i7F/zw==", - "dev": true, - "requires": { - "@electron/get": "^1.0.1", - "@types/node": "^12.0.12", - "extract-zip": "^1.0.3" - } - }, - "electron-log": { - "version": "4.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/electron-log/-/electron-log-4.1.0.tgz", - "integrity": "sha512-F3KVUe4s0MKs7mjkvz8g6WrfL1gCITfbVOcU9qLI5KjRbtIWeC8OfAneloz8zdW99TI2xcNc639ppgRXUpKjHw==", - "dev": true - }, - "elliptic": { - "version": "6.5.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "optional": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, - "env-paths": { - "version": "2.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/env-paths/-/env-paths-2.2.0.tgz", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.17.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, - "optional": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "events": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extract-zip": { - "version": "1.7.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "dev": true, - "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.12", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "global-agent": { - "version": "2.1.8", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/global-agent/-/global-agent-2.1.8.tgz", - "integrity": "sha512-VpBe/rhY6Rw2VDOTszAMNambg+4Qv8j0yiTNDYEXXXxkUNGWLHp8A3ztK4YDBbFNcWF4rgsec6/5gPyryya/+A==", - "dev": true, - "optional": true, - "requires": { - "boolean": "^3.0.0", - "core-js": "^3.6.4", - "es6-error": "^4.1.1", - "matcher": "^2.1.0", - "roarr": "^2.15.2", - "semver": "^7.1.2", - "serialize-error": "^5.0.0" - }, - "dependencies": { - "semver": { - "version": "7.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", - "dev": true, - "optional": true - } - } - }, - "global-tunnel-ng": { - "version": "2.7.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", - "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", - "dev": true, - "optional": true, - "requires": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" - } - }, - "globalthis": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/globalthis/-/globalthis-1.0.1.tgz", - "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", - "dev": true, - "optional": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "got": { - "version": "9.6.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "handlebars": { - "version": "4.7.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/handlebars/-/handlebars-4.7.3.tgz", - "integrity": "sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, - "has": { - "version": "1.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "highlight.js": { - "version": "9.18.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/highlight.js/-/highlight.js-9.18.1.tgz", - "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "ieee754": { - "version": "1.1.13", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true, - "optional": true - }, - "interpret": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "jest-worker": { - "version": "25.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jest-worker/-/jest-worker-25.2.1.tgz", - "integrity": "sha512-IHnpekk8H/hCUbBlfeaPZzU6v75bqwJp3n4dUrQuQOAgOneI4tx3jV2o8pvlXnDfcRsfkFIUD//HWXpCmR+evQ==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "jquery": { - "version": "3.4.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jquery/-/jquery-3.4.1.tgz", - "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true - }, - "json5": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "lunr": { - "version": "2.3.8", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lunr/-/lunr-2.3.8.tgz", - "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", - "dev": true - }, - "make-dir": { - "version": "3.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "marked": { - "version": "0.8.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/marked/-/marked-0.8.2.tgz", - "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", - "dev": true - }, - "matcher": { - "version": "2.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/matcher/-/matcher-2.1.0.tgz", - "integrity": "sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==", - "dev": true, - "optional": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "optional": true - } - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "memory-fs": { - "version": "0.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "minipass": { - "version": "3.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nan": { - "version": "2.14.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "neo-async": { - "version": "2.6.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - }, - "npm-conf": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "optional": true, - "requires": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - } - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "p-limit": { - "version": "2.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pidtree": { - "version": "0.3.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "proto-list": { - "version": "1.2.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true, - "optional": true - }, - "prr": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "read-pkg": { - "version": "4.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve": { - "version": "1.15.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "roarr": { - "version": "2.15.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/roarr/-/roarr-2.15.2.tgz", - "integrity": "sha512-jmaDhK9CO4YbQAV8zzCnq9vjAqeO489MS5ehZ+rXmFiPFFE6B+S9KYO6prjmLJ5A0zY3QxVlQdrIya7E/azz/Q==", - "dev": true, - "optional": true, - "requires": { - "boolean": "^3.0.0", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.5.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "sanitize-filename": { - "version": "1.6.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dev": true, - "requires": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true, - "optional": true - }, - "serialize-error": { - "version": "5.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/serialize-error/-/serialize-error-5.0.0.tgz", - "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", - "dev": true, - "optional": true, - "requires": { - "type-fest": "^0.8.0" - } - }, - "serialize-javascript": { - "version": "2.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true - }, - "shelljs": { - "version": "0.8.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.16", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true, - "optional": true - }, - "ssri": { - "version": "7.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "string.prototype.padend": { - "version": "3.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", - "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "sumchecker": { - "version": "3.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dev": true, - "requires": { - "debug": "^4.1.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "terser": { - "version": "4.6.7", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/terser/-/terser-4.6.7.tgz", - "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - }, - "terser-webpack-plugin": { - "version": "2.3.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", - "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", - "dev": true, - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.2.0", - "jest-worker": "^25.1.0", - "p-limit": "^2.2.2", - "schema-utils": "^2.6.4", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.4.3", - "webpack-sources": "^1.4.3" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "to-regex": { - "version": "3.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", - "dev": true, - "requires": { - "utf8-byte-length": "^1.0.1" - } - }, - "ts-loader": { - "version": "6.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ts-loader/-/ts-loader-6.2.2.tgz", - "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "ts-node": { - "version": "8.8.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ts-node/-/ts-node-8.8.1.tgz", - "integrity": "sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "3.1.1" - } - }, - "tslib": { - "version": "1.11.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - }, - "tslint": { - "version": "6.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tslint/-/tslint-6.1.0.tgz", - "integrity": "sha512-fXjYd/61vU6da04E505OZQGb2VCN2Mq3doeWcOIryuG+eqdmFUXTYVwdhnbEu2k46LNLgUYt9bI5icQze/j0bQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.10.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel": { - "version": "0.0.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "optional": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "optional": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typedoc": { - "version": "0.16.11", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/typedoc/-/typedoc-0.16.11.tgz", - "integrity": "sha512-YEa5i0/n0yYmLJISJ5+po6seYfJQJ5lQYcHCPF9ffTF92DB/TAZO/QrazX5skPHNPtmlIht5FdTXCM2kC7jQFQ==", - "dev": true, - "requires": { - "@types/minimatch": "3.0.3", - "fs-extra": "^8.1.0", - "handlebars": "^4.7.2", - "highlight.js": "^9.17.1", - "lodash": "^4.17.15", - "marked": "^0.8.0", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.3", - "typedoc-default-themes": "^0.7.2", - "typescript": "3.7.x" - }, - "dependencies": { - "typescript": { - "version": "3.7.5", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", - "dev": true - } - } - }, - "typedoc-default-themes": { - "version": "0.7.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/typedoc-default-themes/-/typedoc-default-themes-0.7.2.tgz", - "integrity": "sha512-fiFKlFO6VTqjcno8w6WpTsbCgXmfPHVjnLfYkmByZE7moaz+E2DSpAT+oHtDHv7E0BM5kAhPrHJELP2J2Y2T9A==", - "dev": true, - "requires": { - "backbone": "^1.4.0", - "jquery": "^3.4.1", - "lunr": "^2.3.8", - "underscore": "^1.9.1" - } - }, - "typescript": { - "version": "3.8.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", - "dev": true - }, - "uglify-js": { - "version": "3.8.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/uglify-js/-/uglify-js-3.8.0.tgz", - "integrity": "sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - } - }, - "underscore": { - "version": "1.9.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/underscore/-/underscore-1.9.2.tgz", - "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "utf8-byte-length": { - "version": "1.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "watchpack": { - "version": "1.6.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/watchpack/-/watchpack-1.6.1.tgz", - "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", - "dev": true, - "requires": { - "chokidar": "^2.1.8", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webpack": { - "version": "4.42.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack/-/webpack-4.42.1.tgz", - "integrity": "sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "cacache": { - "version": "12.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "ssri": { - "version": "6.0.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-node-externals": { - "version": "1.7.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", - "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yauzl": { - "version": "2.10.0", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json index c8df9d2..b8fe881 100644 --- a/package.json +++ b/package.json @@ -4,29 +4,44 @@ "private": true, "scripts": { "clean:all": "rimraf dist/*", - "build:all": "npm-run-all -s build:core build:common build:notify-window build:updater-window", + "build:all": "npm-run-all -s build:logger build:core build:common build:notify-window build:updater-window build:native", "build:core": "node ./scripts/build.js core", "build:common": "node ./scripts/build.js common", + "build:logger": "node ./scripts/build.js logger", "build:notify-window": "node ./scripts/build.js notify-window", "build:updater-window": "node ./scripts/build.js updater-window", - "publish:all": "npm-run-all -s publish:core publish:notify-window publish:updater-window", + "build:native": "node ./scripts/build.js native", + "publish:all": "npm-run-all -s publish:logger publish:core publish:common publish:notify-window publish:updater-window", "publish:core": "cd ./dist/core && npm publish", "publish:common": "cd ./dist/common && npm publish", - "publish:notify-window": "cd ./dist/core && npm publish", - "publish:updater-window": "cd ./dist/core && npm publish" + "publish:logger": "cd ./dist/logger && npm publish", + "publish:notify-window": "cd ./dist/notify-window && npm publish", + "publish:updater-window": "cd ./dist/updater-window && npm publish", + "publish:native": "cd ./dist/native && npm publish" }, "dependencies": {}, "devDependencies": { - "@tsed/core": "^5.44.11", - "@tsed/di": "^5.44.11", - "@types/fs-extra": "^8.1.0", + "@types/fs-extra": "^9.0.1", "@types/node": "^12.11.1", - "@ucap/electron-core": "file:dist/core/ucap-electron-core-0.0.1.tgz", - "concurrently": "^5.1.0", - "electron": "^8.1.1", - "electron-log": "^4.1.0", - "fs-extra": "^8.1.0", + "@ucap/core": "~0.0.15", + "@ucap/domain-common": "~0.0.1", + "@ucap/domain-organization": "~0.0.1", + "@ucap/domain-status": "~0.0.1", + "@ucap/electron-common": "file:pack/ucap-electron-common-0.0.32.tgz", + "@ucap/electron-core": "file:pack/ucap-electron-core-0.0.16.tgz", + "@ucap/electron-logger": "file:pack/ucap-electron-logger-0.0.1.tgz", + "@ucap/electron-native": "file:pack/ucap-electron-native-0.0.19.tgz", + "@ucap/electron-notify-window": "file:pack/ucap-electron-notify-window-0.0.13.tgz", + "@ucap/logger": "~0.0.14", + "@ucap/native": "~0.0.27", + "axios": "^0.19.2", + "concurrently": "^5.2.0", + "electron": "^9.0.3", + "electron-log": "^4.2.1", + "file-type": "^14.1.4", + "fs-extra": "^9.0.1", "npm-run-all": "^4.1.5", + "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^6.5.4", "terser-webpack-plugin": "^2.3.5", diff --git a/projects/common/package.json b/projects/common/package.json index 9c55fc7..6cdf738 100644 --- a/projects/common/package.json +++ b/projects/common/package.json @@ -1,15 +1,12 @@ { "name": "@ucap/electron-common", - "version": "0.0.1", + "version": "0.0.32", "publishConfig": { - "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, "scripts": {}, - "dependencies": { - "@tsed/core": "^5.44.11", - "@tsed/di": "^5.44.11", - "electron": "^8.0.0", + "peerDependencies": { + "electron": "^9.0.3", "rxjs": "^6.5.4" - }, - "devDependencies": {} + } } diff --git a/projects/common/src/lib/api/app/attacher.ts b/projects/common/src/lib/api/app/attacher.ts new file mode 100644 index 0000000..d09b407 --- /dev/null +++ b/projects/common/src/lib/api/app/attacher.ts @@ -0,0 +1,86 @@ +import * as Electron from 'electron'; + +import { ObjectUtil } from '@ucap/core'; + +import { EventHandlerRegistry } from './registries/event-handler.registry'; +import { EventAttachType } from './types/event-attach.type'; +import { EventHandlerMetadata } from './models/event-handler.metadata'; + +export abstract class Attacher { + private static readonly eventHandlerMap: Map< + any, + { channel: string; listener: (...args: any[]) => void }[] + > = new Map(); + + static attach(instance: any) { + const metadatas = EventHandlerRegistry.getEventHandlers( + ObjectUtil.classOf(instance) + ); + + if (!!metadatas) { + metadatas.reverse().forEach((metadata) => { + metadata.eventHandlers.forEach((channels, attachType) => { + switch (attachType) { + case EventAttachType.on: + { + channels.forEach((channel) => { + const listener = (...args: any[]) => { + Attacher.invoke(metadata, instance, args); + }; + + Electron.app.on(channel as any, listener); + Attacher.addEventHandler(instance, channel, listener); + }); + } + break; + } + }); + }); + } + } + + static dettach(instance: any) { + Attacher.removeEventHandler(instance); + } + + static dettachAll() { + Electron.app.removeAllListeners(); + } + + static invoke( + metadata: EventHandlerMetadata, + instance: any, + args: any[] + ): any { + if (!!metadata.parent) { + return Attacher.invoke(metadata.parent, instance, args); + } + + // tslint:disable-next-line: ban-types + return (metadata.target.prototype[metadata.propertyKey] as Function).call( + instance, + ...args + ); + } + + private static addEventHandler(instance: any, channel: any, listener: any) { + let listeners = Attacher.eventHandlerMap.get(instance); + if (!listeners) { + listeners = []; + Attacher.eventHandlerMap.set(instance, listeners); + } + + listeners.push({ channel, listener }); + } + + private static removeEventHandler(instance: any) { + const listeners = Attacher.eventHandlerMap.get(instance); + if (!listeners) { + return; + } + + for (const listener of listeners) { + Electron.app.removeListener(listener.channel as any, listener.listener); + } + } +} diff --git a/projects/common/src/lib/api/app/builder.ts b/projects/common/src/lib/api/app/builder.ts new file mode 100644 index 0000000..69daefa --- /dev/null +++ b/projects/common/src/lib/api/app/builder.ts @@ -0,0 +1,15 @@ +import * as Electron from 'electron'; + +import { Type } from '@ucap/core'; +import { AppConfiguration } from './models/app-configuration'; + +export abstract class Builder { + static build( + appType: Type, + configuration: Partial + ): T { + const app = new appType(configuration); + + return app; + } +} diff --git a/projects/common/src/lib/api/app/decorators/app-settings.ts b/projects/common/src/lib/api/app/decorators/app-settings.ts new file mode 100644 index 0000000..109106e --- /dev/null +++ b/projects/common/src/lib/api/app/decorators/app-settings.ts @@ -0,0 +1,30 @@ +import { Type, DecoratorUtil, Store } from '@ucap/core'; + +import { AppConfiguration } from '../models/app-configuration'; + +export const STORE_KEY_APP_SETTINGS = '@ucap::electron::app::app-settings'; + +export function AppSettings( + configuration: Partial = {} + // tslint:disable-next-line: ban-types +): Function { + return (target: Type): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target])) { + case 'class': + Store.setBy(STORE_KEY_APP_SETTINGS, configuration)(target); + break; + } + }; +} + +export function getAppSettings( + target: Type, + configuration: Partial = {} +): AppConfiguration { + const store = Store.from(target).get(STORE_KEY_APP_SETTINGS) || {}; + + return { + ...store, + ...configuration + }; +} diff --git a/projects/common/src/lib/api/app/decorators/on.ts b/projects/common/src/lib/api/app/decorators/on.ts new file mode 100644 index 0000000..266eda4 --- /dev/null +++ b/projects/common/src/lib/api/app/decorators/on.ts @@ -0,0 +1,26 @@ +import { DecoratorUtil } from '@ucap/core'; + +import { AppChannel } from '@ucap/electron-core'; + +import { EventHandlerRegistry } from '../registries/event-handler.registry'; +import { EventAttachType } from '../types/event-attach.type'; + +export function On(channel: AppChannel) { + return ( + target: any, + targetKey?: string, + descriptor?: TypedPropertyDescriptor + ): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target, targetKey, descriptor])) { + case 'method': + EventHandlerRegistry.use( + target, + targetKey!, + EventAttachType.on, + channel + ); + + return descriptor; + } + }; +} diff --git a/projects/common/src/lib/api/app/index.ts b/projects/common/src/lib/api/app/index.ts new file mode 100644 index 0000000..8285cf0 --- /dev/null +++ b/projects/common/src/lib/api/app/index.ts @@ -0,0 +1,28 @@ +import { AppSettings, getAppSettings } from './decorators/app-settings'; +import { On } from './decorators/on'; + +import { AppConfiguration } from './models/app-configuration'; +import { + EventHandlerConstructorOptions, + EventHandlerMetadata +} from './models/event-handler.metadata'; + +import { EventHandlerRegistry } from './registries/event-handler.registry'; + +import { EventAttachType } from './types/event-attach.type'; + +import { Attacher } from './attacher'; +import { Builder } from './builder'; + +export { + AppSettings, + getAppSettings, + On, + AppConfiguration, + EventHandlerConstructorOptions, + EventHandlerMetadata, + EventHandlerRegistry, + EventAttachType, + Attacher, + Builder +}; diff --git a/projects/common/src/lib/api/app/models/app-configuration.ts b/projects/common/src/lib/api/app/models/app-configuration.ts new file mode 100644 index 0000000..4d0eede --- /dev/null +++ b/projects/common/src/lib/api/app/models/app-configuration.ts @@ -0,0 +1,9 @@ +import { Type } from '@ucap/core'; + +export interface AppConfiguration { + rootDir?: string; + bootstrap?: Type; + services?: Type[]; + + [key: string]: any; +} diff --git a/projects/common/src/lib/api/app/models/event-handler.metadata.ts b/projects/common/src/lib/api/app/models/event-handler.metadata.ts new file mode 100644 index 0000000..e3f2605 --- /dev/null +++ b/projects/common/src/lib/api/app/models/event-handler.metadata.ts @@ -0,0 +1,73 @@ +import { Type, Metadata, ReflectUtil, ObjectUtil, Store } from '@ucap/core'; +import { AppChannel } from '@ucap/electron-core'; + +import { EventAttachType } from '../types/event-attach.type'; + +export interface EventHandlerConstructorOptions { + target: Type; + propertyKey: string | symbol; + eventHandlers?: Map; + type?: any; + parent?: EventHandlerMetadata; +} + +export class EventHandlerMetadata extends Metadata + implements EventHandlerConstructorOptions { + eventHandlers: Map = new Map(); + + readonly parent: EventHandlerMetadata | undefined; + + constructor(options: EventHandlerConstructorOptions) { + super( + options.target, + options.propertyKey, + Object.getOwnPropertyDescriptor(options.target, options.propertyKey) + ); + const { + target, + parent, + propertyKey, + eventHandlers = new Map(), + type + } = options; + + this._type = ReflectUtil.getReturnType(target, propertyKey); + + this.eventHandlers = eventHandlers; + this.type = type; + this.parent = parent; + } + + get type(): Type { + return ObjectUtil.isPromise(this._type) || + ObjectUtil.isArrayOrArrayClass(this._type) || + this._type === Object + ? undefined! + : this._type; + } + + set type(type: Type) { + this._type = type; + } + + get(key: any) { + const ctrlValue = Store.from(this.target).get(key); + let meta = ObjectUtil.deepExtends(undefined, ctrlValue); + const endpointValue = this.store.get(key); + if (endpointValue !== undefined) { + meta = ObjectUtil.deepExtends(meta, endpointValue); + } + + return meta; + } + + merge(attachType: EventAttachType, channel: AppChannel): this { + if (!this.eventHandlers.has(attachType)) { + this.eventHandlers.set(attachType, []); + } + + this.eventHandlers.get(attachType).push(channel); + + return this; + } +} diff --git a/projects/common/src/lib/api/app/registries/event-handler.registry.ts b/projects/common/src/lib/api/app/registries/event-handler.registry.ts new file mode 100644 index 0000000..aee5177 --- /dev/null +++ b/projects/common/src/lib/api/app/registries/event-handler.registry.ts @@ -0,0 +1,94 @@ +import { Type, ReflectUtil, ObjectUtil } from '@ucap/core'; + +import { AppChannel } from '@ucap/electron-core'; + +import { EventHandlerMetadata } from '../models/event-handler.metadata'; +import { EventAttachType } from '../types/event-attach.type'; + +export const REFLECT_KEY_EVENTHANDLERS = 'ucap_electron_app_event_handlers'; + +export class EventHandlerRegistry { + static getOwnEventHandlers(target: Type): EventHandlerMetadata[] { + if (!this.hasEventHandlers(target)) { + ReflectUtil.set(REFLECT_KEY_EVENTHANDLERS, [], target); + } + + return ReflectUtil.getOwn(REFLECT_KEY_EVENTHANDLERS, target); + } + + static getEventHandlers(target: Type): EventHandlerMetadata[] { + return this.getOwnEventHandlers(target).concat(this.inherit(target)); + } + + static hasEventHandlers(target: Type): boolean { + return ReflectUtil.hasOwn(REFLECT_KEY_EVENTHANDLERS, target); + } + + static get( + target: Type, + propertyKey: string | symbol + ): EventHandlerMetadata { + if (!this.has(target, propertyKey)) { + const evnetHandler = new EventHandlerMetadata({ + target, + propertyKey + }); + this.getOwnEventHandlers(target).push(evnetHandler); + ReflectUtil.set( + REFLECT_KEY_EVENTHANDLERS, + evnetHandler, + target, + propertyKey + ); + } + + return ReflectUtil.getOwn(REFLECT_KEY_EVENTHANDLERS, target, propertyKey); + } + + static has(target: Type, method: string | symbol): boolean { + return ReflectUtil.hasOwn(REFLECT_KEY_EVENTHANDLERS, target, method); + } + + static use( + target: Type, + targetKey: string | symbol, + attachType: EventAttachType, + channel: AppChannel + ) { + this.get(target, targetKey).merge(attachType, channel); + + return this; + } + + private static inherit(clazz: Type) { + const eventHandlers: EventHandlerMetadata[] = []; + let inheritedClass = ObjectUtil.getInheritedClass(clazz); + + while ( + inheritedClass && + EventHandlerRegistry.hasEventHandlers(inheritedClass) + ) { + this.getOwnEventHandlers(inheritedClass).forEach( + (eventHandler: EventHandlerMetadata) => { + eventHandlers.push(inheritEndpoint(clazz, eventHandler)); + } + ); + + inheritedClass = ObjectUtil.getInheritedClass(inheritedClass); + } + + return eventHandlers; + } +} + +function inheritEndpoint( + target: Type, + eventHandler: EventHandlerMetadata +): EventHandlerMetadata { + return new EventHandlerMetadata({ + ...eventHandler, + target, + type: eventHandler.type, + parent: eventHandler + }); +} diff --git a/projects/common/src/lib/api/app/types/event-attach.type.ts b/projects/common/src/lib/api/app/types/event-attach.type.ts new file mode 100644 index 0000000..5df57ee --- /dev/null +++ b/projects/common/src/lib/api/app/types/event-attach.type.ts @@ -0,0 +1,3 @@ +export enum EventAttachType { + on = 'on' +} diff --git a/projects/common/src/lib/api/auto-updater/attacher.ts b/projects/common/src/lib/api/auto-updater/attacher.ts new file mode 100644 index 0000000..2341491 --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/attacher.ts @@ -0,0 +1,89 @@ +import * as Electron from 'electron'; + +import { ObjectUtil } from '@ucap/core'; + +import { EventHandlerRegistry } from './registries/event-handler.registry'; +import { EventAttachType } from './types/event-attach.type'; +import { EventHandlerMetadata } from './models/event-handler.metadata'; + +export abstract class Attacher { + private static readonly eventHandlerMap: Map< + any, + { channel: string; listener: (...args: any[]) => void }[] + > = new Map(); + + static attach(instance: any) { + const metadatas = EventHandlerRegistry.getEventHandlers( + ObjectUtil.classOf(instance) + ); + + if (!!metadatas) { + metadatas.reverse().forEach((metadata) => { + metadata.eventHandlers.forEach((channels, attachType) => { + switch (attachType) { + case EventAttachType.on: + { + channels.forEach((channel) => { + const listener = (...args: any[]) => { + Attacher.invoke(metadata, instance, args); + }; + + Electron.autoUpdater.on(channel as any, listener); + Attacher.addEventHandler(instance, channel, listener); + }); + } + break; + } + }); + }); + } + } + + static dettach(instance: any) { + Attacher.removeEventHandler(instance); + } + + static dettachAll() { + Electron.autoUpdater.removeAllListeners(); + } + + static invoke( + metadata: EventHandlerMetadata, + instance: any, + args: any[] + ): any { + if (!!metadata.parent) { + return Attacher.invoke(metadata.parent, instance, args); + } + + // tslint:disable-next-line: ban-types + return (metadata.target.prototype[metadata.propertyKey] as Function).call( + instance, + ...args + ); + } + + private static addEventHandler(instance: any, channel: any, listener: any) { + let listeners = Attacher.eventHandlerMap.get(instance); + if (!listeners) { + listeners = []; + Attacher.eventHandlerMap.set(instance, listeners); + } + + listeners.push({ channel, listener }); + } + + private static removeEventHandler(instance: any) { + const listeners = Attacher.eventHandlerMap.get(instance); + if (!listeners) { + return; + } + + for (const listener of listeners) { + Electron.autoUpdater.removeListener( + listener.channel as any, + listener.listener + ); + } + } +} diff --git a/projects/common/src/lib/api/auto-updater/builder.ts b/projects/common/src/lib/api/auto-updater/builder.ts new file mode 100644 index 0000000..283b66a --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/builder.ts @@ -0,0 +1,16 @@ +import * as Electron from 'electron'; + +import { Type } from '@ucap/core'; + +import { AutoUpdaterConfiguration } from './models/auto-updater-configuration'; + +export abstract class Builder { + static build( + autoUpdaterType: Type, + configuration: Partial + ): T { + const autoUpdater = new autoUpdaterType(configuration); + + return autoUpdater; + } +} diff --git a/projects/common/src/lib/api/auto-updater/decorators/auto-updater-settings.ts b/projects/common/src/lib/api/auto-updater/decorators/auto-updater-settings.ts new file mode 100644 index 0000000..c606e25 --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/decorators/auto-updater-settings.ts @@ -0,0 +1,31 @@ +import { Type, DecoratorUtil, Store } from '@ucap/core'; + +import { AutoUpdaterConfiguration } from '../models/auto-updater-configuration'; + +export const STORE_KEY_AUTO_UPDATER_SETTINGS = + '@ucap::electron::auto-updater::auto-updater-settings'; + +export function AutoUpdaterSettings( + configuration: Partial = {} + // tslint:disable-next-line: ban-types +): Function { + return (target: Type): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target])) { + case 'class': + Store.setBy(STORE_KEY_AUTO_UPDATER_SETTINGS, configuration)(target); + break; + } + }; +} + +export function getAppSettings( + target: Type, + configuration: Partial = {} +): AutoUpdaterConfiguration { + const store = Store.from(target).get(STORE_KEY_AUTO_UPDATER_SETTINGS) || {}; + + return { + ...store, + ...configuration + }; +} diff --git a/projects/common/src/lib/api/auto-updater/decorators/on.ts b/projects/common/src/lib/api/auto-updater/decorators/on.ts new file mode 100644 index 0000000..2783671 --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/decorators/on.ts @@ -0,0 +1,26 @@ +import { DecoratorUtil } from '@ucap/core'; + +import { AutoUpdaterChannel } from '@ucap/electron-core'; + +import { EventHandlerRegistry } from '../registries/event-handler.registry'; +import { EventAttachType } from '../types/event-attach.type'; + +export function On(channel: AutoUpdaterChannel) { + return ( + target: any, + targetKey?: string, + descriptor?: TypedPropertyDescriptor + ): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target, targetKey, descriptor])) { + case 'method': + EventHandlerRegistry.use( + target, + targetKey!, + EventAttachType.on, + channel + ); + + return descriptor; + } + }; +} diff --git a/projects/common/src/lib/api/auto-updater/index.ts b/projects/common/src/lib/api/auto-updater/index.ts new file mode 100644 index 0000000..d7d28d6 --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/index.ts @@ -0,0 +1,31 @@ +import { + AutoUpdaterSettings, + getAppSettings +} from './decorators/auto-updater-settings'; +import { On } from './decorators/on'; + +import { AutoUpdaterConfiguration } from './models/auto-updater-configuration'; +import { + EventHandlerConstructorOptions, + EventHandlerMetadata +} from './models/event-handler.metadata'; + +import { EventHandlerRegistry } from './registries/event-handler.registry'; + +import { EventAttachType } from './types/event-attach.type'; + +import { Attacher } from './attacher'; +import { Builder } from './builder'; + +export { + AutoUpdaterSettings, + getAppSettings, + On, + AutoUpdaterConfiguration, + EventHandlerConstructorOptions, + EventHandlerMetadata, + EventHandlerRegistry, + EventAttachType, + Attacher, + Builder +}; diff --git a/projects/common/src/lib/api/auto-updater/models/auto-updater-configuration.ts b/projects/common/src/lib/api/auto-updater/models/auto-updater-configuration.ts new file mode 100644 index 0000000..380ebf1 --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/models/auto-updater-configuration.ts @@ -0,0 +1,3 @@ +export interface AutoUpdaterConfiguration { + rootDir?: string; +} diff --git a/projects/common/src/lib/api/auto-updater/models/event-handler.metadata.ts b/projects/common/src/lib/api/auto-updater/models/event-handler.metadata.ts new file mode 100644 index 0000000..8e6d07e --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/models/event-handler.metadata.ts @@ -0,0 +1,74 @@ +import { Type, Metadata, ReflectUtil, ObjectUtil, Store } from '@ucap/core'; + +import { AutoUpdaterChannel } from '@ucap/electron-core'; + +import { EventAttachType } from '../types/event-attach.type'; + +export interface EventHandlerConstructorOptions { + target: Type; + propertyKey: string | symbol; + eventHandlers?: Map; + type?: any; + parent?: EventHandlerMetadata; +} + +export class EventHandlerMetadata extends Metadata + implements EventHandlerConstructorOptions { + eventHandlers: Map = new Map(); + + readonly parent: EventHandlerMetadata | undefined; + + constructor(options: EventHandlerConstructorOptions) { + super( + options.target, + options.propertyKey, + Object.getOwnPropertyDescriptor(options.target, options.propertyKey) + ); + const { + target, + parent, + propertyKey, + eventHandlers = new Map(), + type + } = options; + + this._type = ReflectUtil.getReturnType(target, propertyKey); + + this.eventHandlers = eventHandlers; + this.type = type; + this.parent = parent; + } + + get type(): Type { + return ObjectUtil.isPromise(this._type) || + ObjectUtil.isArrayOrArrayClass(this._type) || + this._type === Object + ? undefined! + : this._type; + } + + set type(type: Type) { + this._type = type; + } + + get(key: any) { + const ctrlValue = Store.from(this.target).get(key); + let meta = ObjectUtil.deepExtends(undefined, ctrlValue); + const endpointValue = this.store.get(key); + if (endpointValue !== undefined) { + meta = ObjectUtil.deepExtends(meta, endpointValue); + } + + return meta; + } + + merge(attachType: EventAttachType, channel: AutoUpdaterChannel): this { + if (!this.eventHandlers.has(attachType)) { + this.eventHandlers.set(attachType, []); + } + + this.eventHandlers.get(attachType).push(channel); + + return this; + } +} diff --git a/projects/common/src/lib/api/auto-updater/registries/event-handler.registry.ts b/projects/common/src/lib/api/auto-updater/registries/event-handler.registry.ts new file mode 100644 index 0000000..98e5721 --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/registries/event-handler.registry.ts @@ -0,0 +1,95 @@ +import { Type, ReflectUtil, ObjectUtil } from '@ucap/core'; + +import { AutoUpdaterChannel } from '@ucap/electron-core'; + +import { EventHandlerMetadata } from '../models/event-handler.metadata'; +import { EventAttachType } from '../types/event-attach.type'; + +export const REFLECT_KEY_EVENTHANDLERS = + 'ucap_electron_auto_updater_event_handlers'; + +export class EventHandlerRegistry { + static getOwnEventHandlers(target: Type) { + if (!this.hasEventHandlers(target)) { + ReflectUtil.set(REFLECT_KEY_EVENTHANDLERS, [], target); + } + + return ReflectUtil.getOwn(REFLECT_KEY_EVENTHANDLERS, target); + } + + static getEventHandlers(target: Type): EventHandlerMetadata[] { + return this.getOwnEventHandlers(target).concat(this.inherit(target)); + } + + static hasEventHandlers(target: Type): boolean { + return ReflectUtil.hasOwn(REFLECT_KEY_EVENTHANDLERS, target); + } + + static get( + target: Type, + propertyKey: string | symbol + ): EventHandlerMetadata { + if (!this.has(target, propertyKey)) { + const evnetHandler = new EventHandlerMetadata({ + target, + propertyKey + }); + this.getOwnEventHandlers(target).push(evnetHandler); + ReflectUtil.set( + REFLECT_KEY_EVENTHANDLERS, + evnetHandler, + target, + propertyKey + ); + } + + return ReflectUtil.getOwn(REFLECT_KEY_EVENTHANDLERS, target, propertyKey); + } + + static has(target: Type, method: string | symbol): boolean { + return ReflectUtil.hasOwn(REFLECT_KEY_EVENTHANDLERS, target, method); + } + + static use( + target: Type, + targetKey: string | symbol, + attachType: EventAttachType, + channel: AutoUpdaterChannel + ) { + this.get(target, targetKey).merge(attachType, channel); + + return this; + } + + private static inherit(clazz: Type) { + const eventHandlers: EventHandlerMetadata[] = []; + let inheritedClass = ObjectUtil.getInheritedClass(clazz); + + while ( + inheritedClass && + EventHandlerRegistry.hasEventHandlers(inheritedClass) + ) { + this.getOwnEventHandlers(inheritedClass).forEach( + (eventHandler: EventHandlerMetadata) => { + eventHandlers.push(inheritEndpoint(clazz, eventHandler)); + } + ); + + inheritedClass = ObjectUtil.getInheritedClass(inheritedClass); + } + + return eventHandlers; + } +} + +function inheritEndpoint( + target: Type, + eventHandler: EventHandlerMetadata +): EventHandlerMetadata { + return new EventHandlerMetadata({ + ...eventHandler, + target, + type: eventHandler.type, + parent: eventHandler + }); +} diff --git a/projects/common/src/lib/api/auto-updater/types/event-attach.type.ts b/projects/common/src/lib/api/auto-updater/types/event-attach.type.ts new file mode 100644 index 0000000..5df57ee --- /dev/null +++ b/projects/common/src/lib/api/auto-updater/types/event-attach.type.ts @@ -0,0 +1,3 @@ +export enum EventAttachType { + on = 'on' +} diff --git a/projects/common/src/lib/api/browser-window/attacher.ts b/projects/common/src/lib/api/browser-window/attacher.ts new file mode 100644 index 0000000..6786776 --- /dev/null +++ b/projects/common/src/lib/api/browser-window/attacher.ts @@ -0,0 +1,55 @@ +import * as Electron from 'electron'; + +import { ObjectUtil } from '@ucap/core'; + +import { EventHandlerRegistry } from './registries/event-handler.registry'; +import { EventAttachType } from './types/event-attach.type'; +import { EventHandlerMetadata } from './models/event-handler.metadata'; + +import { ElectronBrowserWindow } from './electron-browser-window'; + +export abstract class Attacher { + static attach(instance: T) { + const metadatas = EventHandlerRegistry.getEventHandlers( + ObjectUtil.classOf(instance) + ); + + if (!!metadatas) { + metadatas.reverse().forEach((metadata) => { + metadata.eventHandlers.forEach((channels, attachType) => { + switch (attachType) { + case EventAttachType.on: + { + channels.forEach((channel) => { + instance.native.on(channel as any, (...args: any[]) => { + Attacher.invoke(metadata, instance, args); + }); + }); + } + break; + } + }); + }); + } + } + + static dettach(instance: T) { + instance.native.removeAllListeners(); + } + + static invoke( + metadata: EventHandlerMetadata, + instance: any, + args: any[] + ): any { + if (!!metadata.parent) { + return Attacher.invoke(metadata.parent, instance, args); + } + + // tslint:disable-next-line: ban-types + return (metadata.target.prototype[metadata.propertyKey] as Function).call( + instance, + ...args + ); + } +} diff --git a/projects/common/src/lib/api/browser-window/builder.ts b/projects/common/src/lib/api/browser-window/builder.ts new file mode 100644 index 0000000..b254316 --- /dev/null +++ b/projects/common/src/lib/api/browser-window/builder.ts @@ -0,0 +1,36 @@ +import * as Electron from 'electron'; + +import { Type, ObjectUtil } from '@ucap/core'; + +import { getBrowserWindowSettings } from './decorators/browser-window-configuration'; +import { AppConfiguration } from '../app'; +import { Attacher } from './attacher'; +import { ElectronBrowserWindow } from './electron-browser-window'; + +export abstract class Builder { + static build( + configuration: Partial, + browserWindowType: Type + ): T { + const _configuration = getBrowserWindowSettings( + ObjectUtil.classOf(browserWindowType) + ); + + const constructorOptions = ObjectUtil.isFunction( + _configuration.constructorOptions + ) + ? _configuration.constructorOptions(configuration) + : _configuration.constructorOptions; + + const _browserWindow = new Electron.BrowserWindow(constructorOptions); + const browserWindow = new browserWindowType(_configuration, _browserWindow); + + Attacher.attach(browserWindow); + + return browserWindow; + } + + static destroy(instance: T) { + Attacher.dettach(instance); + } +} diff --git a/projects/common/src/lib/api/browser-window/decorators/browser-window-configuration.ts b/projects/common/src/lib/api/browser-window/decorators/browser-window-configuration.ts new file mode 100644 index 0000000..13f88bf --- /dev/null +++ b/projects/common/src/lib/api/browser-window/decorators/browser-window-configuration.ts @@ -0,0 +1,29 @@ +import * as Elctron from 'electron'; + +import { Type, DecoratorUtil, Store } from '@ucap/core'; + +import { BrowserWindowConfiguration } from '../models/browser-window-configuration'; + +export const STORE_KEY_BROWSER_WINDOW_SETTINGS = + '@ucap::electron::browser-window::browser-window-settings'; + +export function BrowserWindowSettings( + configuration: Partial = {} + // tslint:disable-next-line: ban-types +): Function { + return ( + target: Type + ): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target])) { + case 'class': + Store.setBy(STORE_KEY_BROWSER_WINDOW_SETTINGS, configuration)(target); + break; + } + }; +} + +export function getBrowserWindowSettings( + target: Type +): BrowserWindowConfiguration { + return Store.from(target).get(STORE_KEY_BROWSER_WINDOW_SETTINGS) || {}; +} diff --git a/projects/common/src/lib/api/browser-window/decorators/on.ts b/projects/common/src/lib/api/browser-window/decorators/on.ts new file mode 100644 index 0000000..e141e89 --- /dev/null +++ b/projects/common/src/lib/api/browser-window/decorators/on.ts @@ -0,0 +1,26 @@ +import { DecoratorUtil } from '@ucap/core'; + +import { BrowserWindowChannel } from '@ucap/electron-core'; + +import { EventHandlerRegistry } from '../registries/event-handler.registry'; +import { EventAttachType } from '../types/event-attach.type'; + +export function On(channel: BrowserWindowChannel) { + return ( + target: any, + targetKey?: string, + descriptor?: TypedPropertyDescriptor + ): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target, targetKey, descriptor])) { + case 'method': + EventHandlerRegistry.use( + target, + targetKey!, + EventAttachType.on, + channel + ); + + return descriptor; + } + }; +} diff --git a/projects/common/src/lib/api/browser-window/electron-browser-window.ts b/projects/common/src/lib/api/browser-window/electron-browser-window.ts new file mode 100644 index 0000000..a3ede91 --- /dev/null +++ b/projects/common/src/lib/api/browser-window/electron-browser-window.ts @@ -0,0 +1,5 @@ +import * as Electron from 'electron'; + +export interface ElectronBrowserWindow { + native: Electron.BrowserWindow; +} diff --git a/projects/common/src/lib/api/browser-window/index.ts b/projects/common/src/lib/api/browser-window/index.ts new file mode 100644 index 0000000..c7d9b98 --- /dev/null +++ b/projects/common/src/lib/api/browser-window/index.ts @@ -0,0 +1,34 @@ +import { + BrowserWindowSettings, + getBrowserWindowSettings +} from './decorators/browser-window-configuration'; +import { On } from './decorators/on'; + +import { BrowserWindowConfiguration } from './models/browser-window-configuration'; +import { + EventHandlerConstructorOptions, + EventHandlerMetadata +} from './models/event-handler.metadata'; + +import { EventHandlerRegistry } from './registries/event-handler.registry'; + +import { EventAttachType } from './types/event-attach.type'; + +import { Attacher } from './attacher'; +import { Builder } from './builder'; + +import { ElectronBrowserWindow } from './electron-browser-window'; + +export { + BrowserWindowSettings, + getBrowserWindowSettings, + On, + BrowserWindowConfiguration, + EventHandlerConstructorOptions, + EventHandlerMetadata, + EventHandlerRegistry, + EventAttachType, + Attacher, + Builder, + ElectronBrowserWindow +}; diff --git a/projects/common/src/lib/api/browser-window/models/browser-window-configuration.ts b/projects/common/src/lib/api/browser-window/models/browser-window-configuration.ts new file mode 100644 index 0000000..b9c548d --- /dev/null +++ b/projects/common/src/lib/api/browser-window/models/browser-window-configuration.ts @@ -0,0 +1,12 @@ +import * as Electron from 'electron'; +import { AppConfiguration } from '../../app'; + +export type BrowserWindowConstructorOptionsFunc = ( + appConfiguration: AppConfiguration +) => Electron.BrowserWindowConstructorOptions; + +export interface BrowserWindowConfiguration { + constructorOptions?: + | Electron.BrowserWindowConstructorOptions + | BrowserWindowConstructorOptionsFunc; +} diff --git a/projects/common/src/lib/api/browser-window/models/event-handler.metadata.ts b/projects/common/src/lib/api/browser-window/models/event-handler.metadata.ts new file mode 100644 index 0000000..9ba9c94 --- /dev/null +++ b/projects/common/src/lib/api/browser-window/models/event-handler.metadata.ts @@ -0,0 +1,74 @@ +import { Type, Metadata, ReflectUtil, ObjectUtil, Store } from '@ucap/core'; + +import { BrowserWindowChannel } from '@ucap/electron-core'; + +import { EventAttachType } from '../types/event-attach.type'; + +export interface EventHandlerConstructorOptions { + target: Type; + propertyKey: string | symbol; + eventHandlers?: Map; + type?: any; + parent?: EventHandlerMetadata; +} + +export class EventHandlerMetadata extends Metadata + implements EventHandlerConstructorOptions { + eventHandlers: Map = new Map(); + + readonly parent: EventHandlerMetadata | undefined; + + constructor(options: EventHandlerConstructorOptions) { + super( + options.target, + options.propertyKey, + Object.getOwnPropertyDescriptor(options.target, options.propertyKey) + ); + const { + target, + parent, + propertyKey, + eventHandlers = new Map(), + type + } = options; + + this._type = ReflectUtil.getReturnType(target, propertyKey); + + this.eventHandlers = eventHandlers; + this.type = type; + this.parent = parent; + } + + get type(): Type { + return ObjectUtil.isPromise(this._type) || + ObjectUtil.isArrayOrArrayClass(this._type) || + this._type === Object + ? undefined! + : this._type; + } + + set type(type: Type) { + this._type = type; + } + + get(key: any) { + const ctrlValue = Store.from(this.target).get(key); + let meta = ObjectUtil.deepExtends(undefined, ctrlValue); + const endpointValue = this.store.get(key); + if (endpointValue !== undefined) { + meta = ObjectUtil.deepExtends(meta, endpointValue); + } + + return meta; + } + + merge(attachType: EventAttachType, channel: BrowserWindowChannel): this { + if (!this.eventHandlers.has(attachType)) { + this.eventHandlers.set(attachType, []); + } + + this.eventHandlers.get(attachType).push(channel); + + return this; + } +} diff --git a/projects/common/src/lib/api/browser-window/registries/event-handler.registry.ts b/projects/common/src/lib/api/browser-window/registries/event-handler.registry.ts new file mode 100644 index 0000000..948cd06 --- /dev/null +++ b/projects/common/src/lib/api/browser-window/registries/event-handler.registry.ts @@ -0,0 +1,97 @@ +import { Type, ReflectUtil, ObjectUtil } from '@ucap/core'; + +import { BrowserWindowChannel } from '@ucap/electron-core'; + +import { EventHandlerMetadata } from '../models/event-handler.metadata'; +import { EventAttachType } from '../types/event-attach.type'; + +export const REFLECT_KEY_EVENTHANDLERS = + 'ucap_electron_browser_window_event_handlers'; + +export class EventHandlerRegistry { + static getOwnEventHandlers(target: Type) { + if (!EventHandlerRegistry.hasEventHandlers(target)) { + ReflectUtil.set(REFLECT_KEY_EVENTHANDLERS, [], target); + } + + return ReflectUtil.getOwn(REFLECT_KEY_EVENTHANDLERS, target); + } + + static getEventHandlers(target: Type): EventHandlerMetadata[] { + return EventHandlerRegistry.getOwnEventHandlers(target).concat( + EventHandlerRegistry.inherit(target) + ); + } + + static hasEventHandlers(target: Type): boolean { + return ReflectUtil.hasOwn(REFLECT_KEY_EVENTHANDLERS, target); + } + + static get( + target: Type, + propertyKey: string | symbol + ): EventHandlerMetadata { + if (!EventHandlerRegistry.has(target, propertyKey)) { + const evnetHandler = new EventHandlerMetadata({ + target, + propertyKey + }); + EventHandlerRegistry.getOwnEventHandlers(target).push(evnetHandler); + ReflectUtil.set( + REFLECT_KEY_EVENTHANDLERS, + evnetHandler, + target, + propertyKey + ); + } + + return ReflectUtil.getOwn(REFLECT_KEY_EVENTHANDLERS, target, propertyKey); + } + + static has(target: Type, method: string | symbol): boolean { + return ReflectUtil.hasOwn(REFLECT_KEY_EVENTHANDLERS, target, method); + } + + static use( + target: Type, + targetKey: string | symbol, + attachType: EventAttachType, + channel: BrowserWindowChannel + ) { + EventHandlerRegistry.get(target, targetKey).merge(attachType, channel); + + return EventHandlerRegistry; + } + + private static inherit(clazz: Type) { + const eventHandlers: EventHandlerMetadata[] = []; + let inheritedClass = ObjectUtil.getInheritedClass(clazz); + + while ( + inheritedClass && + EventHandlerRegistry.hasEventHandlers(inheritedClass) + ) { + EventHandlerRegistry.getOwnEventHandlers(inheritedClass).forEach( + (eventHandler: EventHandlerMetadata) => { + eventHandlers.push(inheritEndpoint(clazz, eventHandler)); + } + ); + + inheritedClass = ObjectUtil.getInheritedClass(inheritedClass); + } + + return eventHandlers; + } +} + +function inheritEndpoint( + target: Type, + eventHandler: EventHandlerMetadata +): EventHandlerMetadata { + return new EventHandlerMetadata({ + ...eventHandler, + target, + type: eventHandler.type, + parent: eventHandler + }); +} diff --git a/projects/common/src/lib/api/browser-window/types/event-attach.type.ts b/projects/common/src/lib/api/browser-window/types/event-attach.type.ts new file mode 100644 index 0000000..5df57ee --- /dev/null +++ b/projects/common/src/lib/api/browser-window/types/event-attach.type.ts @@ -0,0 +1,3 @@ +export enum EventAttachType { + on = 'on' +} diff --git a/projects/common/src/lib/api/ipc-main/attacher.ts b/projects/common/src/lib/api/ipc-main/attacher.ts new file mode 100644 index 0000000..d9567e7 --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/attacher.ts @@ -0,0 +1,118 @@ +import * as Electron from 'electron'; + +import { ObjectUtil } from '@ucap/core'; + +import { EventHandlerRegistry } from './registries/event-handler.registry'; +import { EventAttachType } from './types/event-attach.type'; +import { EventHandlerMetadata } from './models/event-handler.metadata'; + +export abstract class Attacher { + private static readonly eventHandlerMap: Map< + any, + { channel: string; listener: (...args: any[]) => void }[] + > = new Map(); + + static attach(instance: any) { + const metadatas = EventHandlerRegistry.getEventHandlers( + ObjectUtil.classOf(instance) + ); + + if (!!metadatas) { + metadatas.reverse().forEach((metadata) => { + metadata.eventHandlers.forEach((channels, attachType) => { + switch (attachType) { + case EventAttachType.on: + { + channels.forEach((channel) => { + const listener = (...args: any[]) => { + Attacher.invoke(metadata, instance, args); + }; + Electron.ipcMain.on(channel as any, listener); + Attacher.addEventHandler(instance, channel, listener); + }); + } + break; + case EventAttachType.once: + { + channels.forEach((channel) => { + const listener = (...args: any[]) => { + Attacher.invoke(metadata, instance, args); + }; + Electron.ipcMain.once(channel as any, listener); + Attacher.addEventHandler(instance, channel, listener); + }); + } + break; + case EventAttachType.handle: + { + channels.forEach((channel) => { + const listener = (...args: any[]) => { + return Attacher.invoke(metadata, instance, args); + }; + Electron.ipcMain.handle(channel as any, listener); + Attacher.addEventHandler(instance, channel, listener); + }); + } + break; + case EventAttachType.handleOnce: + { + channels.forEach((channel) => { + const listener = (...args: any[]) => { + return Attacher.invoke(metadata, instance, args); + }; + Electron.ipcMain.handleOnce(channel as any, listener); + Attacher.addEventHandler(instance, channel, listener); + }); + } + break; + } + }); + }); + } + } + + static dettach(instance: any) { + Attacher.removeEventHandler(instance); + } + + static dettachAll() { + Electron.ipcMain.removeAllListeners(); + } + + static invoke( + metadata: EventHandlerMetadata, + instance: any, + args: any[] + ): any { + if (!!metadata.parent) { + return Attacher.invoke(metadata.parent, instance, args); + } + + // tslint:disable-next-line: ban-types + return (metadata.target.prototype[metadata.propertyKey] as Function).call( + instance, + ...args + ); + } + + private static addEventHandler(instance: any, channel: any, listener: any) { + let listeners = Attacher.eventHandlerMap.get(instance); + if (!listeners) { + listeners = []; + Attacher.eventHandlerMap.set(instance, listeners); + } + + listeners.push({ channel, listener }); + } + + private static removeEventHandler(instance: any) { + const listeners = Attacher.eventHandlerMap.get(instance); + if (!listeners) { + return; + } + + for (const listener of listeners) { + Electron.ipcMain.removeListener(listener.channel, listener.listener); + } + } +} diff --git a/projects/common/src/lib/api/ipc-main/decorators/handle-once.ts b/projects/common/src/lib/api/ipc-main/decorators/handle-once.ts new file mode 100644 index 0000000..05825e0 --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/decorators/handle-once.ts @@ -0,0 +1,24 @@ +import { DecoratorUtil } from '@ucap/core'; + +import { EventHandlerRegistry } from '../registries/event-handler.registry'; +import { EventAttachType } from '../types/event-attach.type'; + +export function HandleOnce(channel: string) { + return ( + target: any, + targetKey?: string, + descriptor?: TypedPropertyDescriptor + ): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target, targetKey, descriptor])) { + case 'method': + EventHandlerRegistry.use( + target, + targetKey!, + EventAttachType.handleOnce, + channel + ); + + return descriptor; + } + }; +} diff --git a/projects/common/src/lib/api/ipc-main/decorators/handle.ts b/projects/common/src/lib/api/ipc-main/decorators/handle.ts new file mode 100644 index 0000000..312c9aa --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/decorators/handle.ts @@ -0,0 +1,24 @@ +import { DecoratorUtil } from '@ucap/core'; + +import { EventHandlerRegistry } from '../registries/event-handler.registry'; +import { EventAttachType } from '../types/event-attach.type'; + +export function Handle(channel: string) { + return ( + target: any, + targetKey?: string, + descriptor?: TypedPropertyDescriptor + ): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target, targetKey, descriptor])) { + case 'method': + EventHandlerRegistry.use( + target, + targetKey!, + EventAttachType.handle, + channel + ); + + return descriptor; + } + }; +} diff --git a/projects/common/src/lib/api/ipc-main/decorators/on.ts b/projects/common/src/lib/api/ipc-main/decorators/on.ts new file mode 100644 index 0000000..f4c9216 --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/decorators/on.ts @@ -0,0 +1,24 @@ +import { DecoratorUtil } from '@ucap/core'; + +import { EventHandlerRegistry } from '../registries/event-handler.registry'; +import { EventAttachType } from '../types/event-attach.type'; + +export function On(channel: string) { + return ( + target: any, + targetKey?: string, + descriptor?: TypedPropertyDescriptor + ): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target, targetKey, descriptor])) { + case 'method': + EventHandlerRegistry.use( + target, + targetKey!, + EventAttachType.on, + channel + ); + + return descriptor; + } + }; +} diff --git a/projects/common/src/lib/api/ipc-main/decorators/once.ts b/projects/common/src/lib/api/ipc-main/decorators/once.ts new file mode 100644 index 0000000..da5abce --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/decorators/once.ts @@ -0,0 +1,24 @@ +import { DecoratorUtil } from '@ucap/core'; + +import { EventHandlerRegistry } from '../registries/event-handler.registry'; +import { EventAttachType } from '../types/event-attach.type'; + +export function Once(channel: string) { + return ( + target: any, + targetKey?: string, + descriptor?: TypedPropertyDescriptor + ): TypedPropertyDescriptor | void => { + switch (DecoratorUtil.getDecoratorType([target, targetKey, descriptor])) { + case 'method': + EventHandlerRegistry.use( + target, + targetKey!, + EventAttachType.once, + channel + ); + + return descriptor; + } + }; +} diff --git a/projects/common/src/lib/api/ipc-main/index.ts b/projects/common/src/lib/api/ipc-main/index.ts new file mode 100644 index 0000000..07112ac --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/index.ts @@ -0,0 +1,27 @@ +import { Handle } from './decorators/handle'; +import { HandleOnce } from './decorators/handle-once'; +import { On } from './decorators/on'; +import { Once } from './decorators/once'; + +import { + EventHandlerConstructorOptions, + EventHandlerMetadata +} from './models/event-handler.metadata'; + +import { EventHandlerRegistry } from './registries/event-handler.registry'; + +import { EventAttachType } from './types/event-attach.type'; + +import { Attacher } from './attacher'; + +export { + Handle, + HandleOnce, + On, + Once, + EventHandlerConstructorOptions, + EventHandlerMetadata, + EventHandlerRegistry, + EventAttachType, + Attacher +}; diff --git a/projects/common/src/lib/api/ipc-main/models/event-handler.metadata.ts b/projects/common/src/lib/api/ipc-main/models/event-handler.metadata.ts new file mode 100644 index 0000000..cb17771 --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/models/event-handler.metadata.ts @@ -0,0 +1,72 @@ +import { Type, Metadata, ReflectUtil, ObjectUtil, Store } from '@ucap/core'; + +import { EventAttachType } from '../types/event-attach.type'; + +export interface EventHandlerConstructorOptions { + target: Type; + propertyKey: string | symbol; + eventHandlers?: Map; + type?: any; + parent?: EventHandlerMetadata; +} + +export class EventHandlerMetadata extends Metadata + implements EventHandlerConstructorOptions { + eventHandlers: Map = new Map(); + + readonly parent: EventHandlerMetadata | undefined; + + constructor(options: EventHandlerConstructorOptions) { + super( + options.target, + options.propertyKey, + Object.getOwnPropertyDescriptor(options.target, options.propertyKey) + ); + const { + target, + parent, + propertyKey, + eventHandlers = new Map(), + type + } = options; + + this._type = ReflectUtil.getReturnType(target, propertyKey); + + this.eventHandlers = eventHandlers; + this.type = type; + this.parent = parent; + } + + get type(): Type { + return ObjectUtil.isPromise(this._type) || + ObjectUtil.isArrayOrArrayClass(this._type) || + this._type === Object + ? undefined! + : this._type; + } + + set type(type: Type) { + this._type = type; + } + + get(key: any) { + const ctrlValue = Store.from(this.target).get(key); + let meta = ObjectUtil.deepExtends(undefined, ctrlValue); + const endpointValue = this.store.get(key); + if (endpointValue !== undefined) { + meta = ObjectUtil.deepExtends(meta, endpointValue); + } + + return meta; + } + + merge(attachType: EventAttachType, channel: string): this { + if (!this.eventHandlers.has(attachType)) { + this.eventHandlers.set(attachType, []); + } + + this.eventHandlers.get(attachType).push(channel); + + return this; + } +} diff --git a/projects/common/src/lib/api/ipc-main/registries/event-handler.registry.ts b/projects/common/src/lib/api/ipc-main/registries/event-handler.registry.ts new file mode 100644 index 0000000..1a1dfef --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/registries/event-handler.registry.ts @@ -0,0 +1,92 @@ +import { Type, ReflectUtil, ObjectUtil } from '@ucap/core'; + +import { EventHandlerMetadata } from '../models/event-handler.metadata'; +import { EventAttachType } from '../types/event-attach.type'; + +export const REFLECT_KEY_EVENTHANDLERS = 'ucap_electron_app_event_handlers'; + +export class EventHandlerRegistry { + static getOwnEventHandlers(target: Type) { + if (!this.hasEventHandlers(target)) { + ReflectUtil.set(REFLECT_KEY_EVENTHANDLERS, [], target); + } + + return ReflectUtil.getOwn(REFLECT_KEY_EVENTHANDLERS, target); + } + + static getEventHandlers(target: Type): EventHandlerMetadata[] { + return this.getOwnEventHandlers(target).concat(this.inherit(target)); + } + + static hasEventHandlers(target: Type): boolean { + return ReflectUtil.hasOwn(REFLECT_KEY_EVENTHANDLERS, target); + } + + static get( + target: Type, + propertyKey: string | symbol + ): EventHandlerMetadata { + if (!this.has(target, propertyKey)) { + const evnetHandler = new EventHandlerMetadata({ + target, + propertyKey + }); + this.getOwnEventHandlers(target).push(evnetHandler); + ReflectUtil.set( + REFLECT_KEY_EVENTHANDLERS, + evnetHandler, + target, + propertyKey + ); + } + + return ReflectUtil.getOwn(REFLECT_KEY_EVENTHANDLERS, target, propertyKey); + } + + static has(target: Type, method: string | symbol): boolean { + return ReflectUtil.hasOwn(REFLECT_KEY_EVENTHANDLERS, target, method); + } + + static use( + target: Type, + targetKey: string | symbol, + attachType: EventAttachType, + channel: string + ) { + this.get(target, targetKey).merge(attachType, channel); + + return this; + } + + private static inherit(clazz: Type) { + const eventHandlers: EventHandlerMetadata[] = []; + let inheritedClass = ObjectUtil.getInheritedClass(clazz); + + while ( + inheritedClass && + EventHandlerRegistry.hasEventHandlers(inheritedClass) + ) { + this.getOwnEventHandlers(inheritedClass).forEach( + (eventHandler: EventHandlerMetadata) => { + eventHandlers.push(inheritEndpoint(clazz, eventHandler)); + } + ); + + inheritedClass = ObjectUtil.getInheritedClass(inheritedClass); + } + + return eventHandlers; + } +} + +function inheritEndpoint( + target: Type, + eventHandler: EventHandlerMetadata +): EventHandlerMetadata { + return new EventHandlerMetadata({ + ...eventHandler, + target, + type: eventHandler.type, + parent: eventHandler + }); +} diff --git a/projects/common/src/lib/api/ipc-main/types/event-attach.type.ts b/projects/common/src/lib/api/ipc-main/types/event-attach.type.ts new file mode 100644 index 0000000..b6cb955 --- /dev/null +++ b/projects/common/src/lib/api/ipc-main/types/event-attach.type.ts @@ -0,0 +1,6 @@ +export enum EventAttachType { + on = 'on', + once = 'once', + handle = 'handle', + handleOnce = 'handleOnce' +} diff --git a/projects/common/src/lib/app/app.ts b/projects/common/src/lib/app/app.ts deleted file mode 100644 index 43a4566..0000000 --- a/projects/common/src/lib/app/app.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { Type, constructorOf } from '@tsed/core'; -import { - GlobalProviders, - InjectorService, - ProviderScope, - registerProvider -} from '@tsed/di'; - -import * as Electron from 'electron'; - -import { AppOptions } from './decorators/app-settings'; -import { AppSettingsService } from './services/app-settings.service'; -import { ElectronApp } from './decorators/electron-app'; - -export abstract class App { - readonly injector: InjectorService; - private startedAt = new Date(); - - constructor(settings: Partial = {}) { - // create injector with initial configuration - this.injector = this.createInjector(this.getConfiguration(this, settings)); - - this.createElectronApp(this.injector); - } - - get settings(): AppSettingsService { - return this.injector.settings as AppSettingsService; - } - - get electronApp(): ElectronApp { - return this.injector.get(ElectronApp)!; - } - - static async bootstrap( - module: Type, - settings: Partial = {} - ): Promise { - const app = new module(settings); - - return app; - } - - async start(): Promise { - try { - } catch (err) { - return Promise.reject(err); - } - } - - private createInjector(settings: Partial = {}) { - const injector = new InjectorService(); - injector.settings = this.createSettingsService(injector); - // injector.logger = $log; - - // @ts-ignore - injector.settings.set(settings); - - /* istanbul ignore next */ - if (injector.settings.env === 'test') { - injector.logger.stop(); - } - - return injector; - } - - private createSettingsService(injector: InjectorService): AppSettingsService { - const provider = GlobalProviders.get(AppSettingsService)!.clone(); - - provider.instance = injector.invoke(provider.useClass); - injector.addProvider(AppSettingsService, provider); - - return provider.instance as any; - } - - private getConfiguration(module: any, configuration: any = {}) { - const provider = GlobalProviders.get(constructorOf(module))!; - - return { ...provider.configuration, ...configuration }; - } - - private createElectronApp(injector: InjectorService): void { - injector.forkProvider(ElectronApp); - } -} - -registerProvider({ - provide: ElectronApp, - scope: ProviderScope.SINGLETON, - global: true, - useValue: Electron.app -}); diff --git a/projects/common/src/lib/app/decorators/app-settings.ts b/projects/common/src/lib/app/decorators/app-settings.ts deleted file mode 100644 index 9f7d889..0000000 --- a/projects/common/src/lib/app/decorators/app-settings.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Type } from '@tsed/core'; -import { IModuleOptions, Module } from '@tsed/di'; - -export interface AppOptions extends IModuleOptions { - bootstrap: Type; -} - -export function AppSettings(settings: Partial = {}): any { - return Module({ ...settings, root: true }); -} diff --git a/projects/common/src/lib/app/decorators/electron-app.ts b/projects/common/src/lib/app/decorators/electron-app.ts deleted file mode 100644 index 82addcc..0000000 --- a/projects/common/src/lib/app/decorators/electron-app.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Type } from '@tsed/core'; -import { Inject } from '@tsed/di'; -import * as Electron from 'electron'; - -export type ElectronApp = Electron.App; - -export function ElectronApp( - target: Type, - targetKey: string, - // tslint:disable-next-line: ban-types - descriptor: TypedPropertyDescriptor | number -) { - return Inject(ElectronApp)(target, targetKey, descriptor); -} diff --git a/projects/common/src/lib/app/services/app-settings.service.ts b/projects/common/src/lib/app/services/app-settings.service.ts deleted file mode 100644 index 487a36b..0000000 --- a/projects/common/src/lib/app/services/app-settings.service.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { - DIConfiguration, - Injectable, - ProviderScope, - ProviderType -} from '@tsed/di'; - -@Injectable({ - scope: ProviderScope.SINGLETON, - global: true -}) -export class AppSettingsService extends DIConfiguration { - constructor() { - super(); - } -} diff --git a/projects/common/src/lib/platform/attacher.ts b/projects/common/src/lib/platform/attacher.ts new file mode 100644 index 0000000..08ed385 --- /dev/null +++ b/projects/common/src/lib/platform/attacher.ts @@ -0,0 +1,25 @@ +import * as Electron from 'electron'; + +import { Attacher as AppAttacher } from '../api/app/attacher'; +import { Attacher as AutoUpdaterAttacher } from '../api/auto-updater/attacher'; +import { Attacher as IpcMainAttacher } from '../api/ipc-main/attacher'; + +export abstract class Attacher { + static attach(instance: any) { + AppAttacher.attach(instance); + AutoUpdaterAttacher.attach(instance); + IpcMainAttacher.attach(instance); + } + + static dettach(instance: any) { + AppAttacher.dettach(instance); + AutoUpdaterAttacher.dettach(instance); + IpcMainAttacher.dettach(instance); + } + + static dettachAll() { + AppAttacher.dettachAll(); + AutoUpdaterAttacher.dettachAll(); + IpcMainAttacher.dettachAll(); + } +} diff --git a/projects/common/src/lib/platform/hooks.ts b/projects/common/src/lib/platform/hooks.ts new file mode 100644 index 0000000..a0ba53e --- /dev/null +++ b/projects/common/src/lib/platform/hooks.ts @@ -0,0 +1,39 @@ +import { ObjectUtil } from '@ucap/core'; + +export enum LifecycleHooks { + AfterInit, + BeforeDestroy +} + +export interface AfterInit { + ucapAfterInit(): void | Promise; +} + +export interface BeforeDestroy { + ucapBeforeDestroy(): void | Promise; +} + +export const hookNameOf = (lifecycleHook: LifecycleHooks) => { + switch (lifecycleHook) { + case LifecycleHooks.AfterInit: + return 'ucapAfterInit'; + case LifecycleHooks.BeforeDestroy: + return 'ucapBeforeDestroy'; + } + + return undefined; +}; + +export const getHook = (instance: any, lifecycleHook: LifecycleHooks) => { + const n = hookNameOf(lifecycleHook); + if (!n) { + return undefined; + } + + const h = instance[n]; + if (!ObjectUtil.isFunction(h)) { + return undefined; + } + + return h; +}; diff --git a/projects/common/src/lib/platform/index.ts b/projects/common/src/lib/platform/index.ts new file mode 100644 index 0000000..85c4f5b --- /dev/null +++ b/projects/common/src/lib/platform/index.ts @@ -0,0 +1,21 @@ +import { Attacher } from './attacher'; +import { + AfterInit, + BeforeDestroy, + LifecycleHooks, + hookNameOf, + getHook +} from './hooks'; +import { Platform } from './platform'; +import { ServiceBuilder } from './service-builder'; + +export { + Attacher, + Platform, + ServiceBuilder, + AfterInit, + BeforeDestroy, + LifecycleHooks, + getHook, + hookNameOf +}; diff --git a/projects/common/src/lib/platform/platform.ts b/projects/common/src/lib/platform/platform.ts new file mode 100644 index 0000000..52e7582 --- /dev/null +++ b/projects/common/src/lib/platform/platform.ts @@ -0,0 +1,157 @@ +import * as Electron from 'electron'; + +import { Type, ObjectUtil } from '@ucap/core'; +import { AppChannel } from '@ucap/electron-core'; + +import { Builder as AppBuilder } from '../api/app/builder'; +import { AppConfiguration } from '../api/app/models/app-configuration'; +import { getAppSettings } from '../api/app/decorators/app-settings'; +import { Builder as BrowserWindowBuilder } from '../api/browser-window/builder'; +import { ElectronBrowserWindow } from '../api/browser-window/electron-browser-window'; + +import { ServiceBuilder } from './service-builder'; +import { LifecycleHooks, getHook } from './hooks'; + +import { Attacher } from './attacher'; + +export const CLASS_NAME = 'ucapClassName'; + +export class Platform { + protected static instanceMap: Map = new Map(); + protected static instance: Platform; + + protected startedAt = new Date(); + protected appConfig: AppConfiguration; + protected _app: any; + + static getInstance(typeOfInstance: Type): T { + return Platform.instanceMap.get(Platform.getClassName(typeOfInstance)) as T; + } + + static getAppConfig(): AppConfiguration { + return Platform.instance.appConfig; + } + + static buildBrowserWindow( + browserWindowType: Type + ): T { + const win = BrowserWindowBuilder.build( + Platform.instance.appConfig, + browserWindowType + ); + Platform.setInstance(browserWindowType, win); + Platform.inject(win); + Attacher.attach(win); + + return win; + } + + static destroyBrowserWindow( + browserWindow: T + ) { + BrowserWindowBuilder.destroy(browserWindow); + Platform.removeInstance(browserWindow); + Attacher.dettach(browserWindow); + } + + static async bootstrap( + app: Type, + configuration: Partial = {} + ): Promise { + const _configuration = getAppSettings(app, configuration); + + Platform.instance = new Platform(); + Platform.instance.appConfig = _configuration; + + Platform.instance._app = AppBuilder.build(app, _configuration); + Platform.setInstance(app, Platform.instance._app); + + if (!!_configuration.services && 0 < _configuration.services.length) { + _configuration.services.forEach((serviceType) => { + const i = ServiceBuilder.build(serviceType, _configuration); + Platform.setInstance(serviceType, i); + }); + } + + Platform.instanceMap.forEach((i, n) => { + Platform.inject(i); + }); + + let afterInitHook: (...args: any[]) => any; + let afterInitHookReturn: Promise | undefined; + + Platform.instanceMap.forEach(async (i, n) => { + afterInitHook = getHook(i, LifecycleHooks.AfterInit); + if (!!afterInitHook) { + afterInitHookReturn = afterInitHook.call(i); + if (afterInitHookReturn instanceof Promise) { + await Promise.resolve(afterInitHookReturn); + } + } + }); + + Platform.instanceMap.forEach((i, n) => { + Attacher.attach(i); + }); + + await Platform.instance.runLifecycle(); + + return Platform.instance; + } + + private static getClassName(typeOfInstance: Type): string { + const name = typeOfInstance[CLASS_NAME]; + if (!name) { + throw Error( + `name of class is not defined. use static property ${CLASS_NAME}` + ); + } + + return name; + } + + private static setInstance(typeOfInstance: Type, instance: any) { + const name = typeOfInstance[CLASS_NAME]; + if (Platform.instanceMap.has(name)) { + throw Error(`duplicated name of class[${name}]`); + } + + Platform.instanceMap.set(name, instance); + } + + private static removeInstance(instance: any) { + const name = ObjectUtil.getConstructor(instance)[CLASS_NAME]; + if (!Platform.instanceMap.has(name)) { + return; + } + + Platform.instanceMap.delete(name); + } + + private static inject(instance: any) { + Platform.instanceMap.forEach((i, n) => { + instance[n] = i; + }); + } + + async start(): Promise {} + + private async runLifecycle(): Promise { + // tslint:disable-next-line: variable-name + const __this = this; + Electron.app.once(AppChannel.beforeQuit, async () => { + let beforeDestroyHook: (...args: any[]) => any; + let beforeDestroyHookReturn: Promise | undefined; + + Platform.instanceMap.forEach(async (i, n) => { + beforeDestroyHook = getHook(i, LifecycleHooks.AfterInit); + if (!!beforeDestroyHook) { + beforeDestroyHookReturn = beforeDestroyHook.call(i); + if (beforeDestroyHookReturn instanceof Promise) { + await Promise.resolve(beforeDestroyHookReturn); + } + } + }); + }); + } +} diff --git a/projects/common/src/lib/platform/service-builder.ts b/projects/common/src/lib/platform/service-builder.ts new file mode 100644 index 0000000..1f4ed68 --- /dev/null +++ b/projects/common/src/lib/platform/service-builder.ts @@ -0,0 +1,13 @@ +import { Type } from '@ucap/core'; +import { AppConfiguration } from '../api/app/models/app-configuration'; + +export abstract class ServiceBuilder { + static build( + serviceType: Type, + configuration: Partial + ): T { + const service = new serviceType(configuration); + + return service; + } +} diff --git a/projects/common/src/public-api.ts b/projects/common/src/public-api.ts index a2b24e5..10e7896 100644 --- a/projects/common/src/public-api.ts +++ b/projects/common/src/public-api.ts @@ -2,9 +2,10 @@ * Public API Surface of common */ -export * from './lib/app/decorators/app-settings'; -export * from './lib/app/decorators/electron-app'; +import * as AppApi from './lib/api/app'; +import * as AutoUpdaterApi from './lib/api/auto-updater'; +import * as BrowserWindowApi from './lib/api/browser-window'; +import * as IpcMainApi from './lib/api/ipc-main'; +import * as PlatformApi from './lib/platform'; -export * from './lib/app/services/app-settings.service'; - -export * from './lib/app/app'; +export { AppApi, AutoUpdaterApi, BrowserWindowApi, IpcMainApi, PlatformApi }; diff --git a/projects/core/package.json b/projects/core/package.json index 1c3a449..8d83c62 100644 --- a/projects/core/package.json +++ b/projects/core/package.json @@ -1,10 +1,9 @@ { "name": "@ucap/electron-core", - "version": "0.0.1", + "version": "0.0.16", "publishConfig": { - "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, "scripts": {}, - "dependencies": {}, - "devDependencies": {} + "peerDependencies": {} } diff --git a/projects/core/src/lib/types/app-channel.type.ts b/projects/core/src/lib/types/app-channel.type.ts new file mode 100644 index 0000000..d3fb48d --- /dev/null +++ b/projects/core/src/lib/types/app-channel.type.ts @@ -0,0 +1,36 @@ +export enum AppChannel { + accessibilitySupportChanged = 'accessibility-support-changed', + activate = 'activate', + activityWasContinued = 'activity-was-continued', + beforeQuit = 'before-quit', + browserWindowBlur = 'browser-window-blur', + browserWindowCreated = 'browser-window-created', + browserWindowFocus = 'browser-window-focus', + certificateError = 'certificate-error', + continueActivity = 'continue-activity', + continueActivityError = 'continue-activity-error', + desktopCapturerGetSources = 'desktop-capturer-get-sources', + gpuInfoUpdate = 'gpu-info-update', + gpuProcessCrashed = 'gpu-process-crashed', + login = 'login', + newWindowForTab = 'new-window-for-tab', + openFile = 'open-file', + openUrl = 'open-url', + quit = 'quit', + ready = 'ready', + remoteGetBuiltin = 'remote-get-builtin', + remoteGetCurrentWebContents = 'remote-get-current-web-contents', + remoteGetCurrentWindow = 'remote-get-current-window', + remoteGetGlobal = 'remote-get-global', + remoteRequire = 'remote-require', + rendererProcessCrashed = 'renderer-process-crashed', + secondInstance = 'second-instance', + selectClientCertificate = 'select-client-certificate', + sessionCreated = 'session-created', + updateActivityState = 'update-activity-state', + webContentsCreated = 'web-contents-created', + willContinueActivity = 'will-continue-activity', + willFinishLaunching = 'will-finish-launching', + willQuit = 'will-quit', + windowAllClosed = 'window-all-closed' +} diff --git a/projects/core/src/lib/types/auto-updater-channel.type.ts b/projects/core/src/lib/types/auto-updater-channel.type.ts new file mode 100644 index 0000000..e6d1d7b --- /dev/null +++ b/projects/core/src/lib/types/auto-updater-channel.type.ts @@ -0,0 +1,11 @@ +export enum AutoUpdaterChannel { + beforeQuitForUpdate = 'before-quit-for-update', + checkingForUpdate = 'checking-for-update', + downloadProgress = 'download-progress', + error = 'error', + login = 'login', + updateAvailable = 'update-available', + updateCancelled = 'update-cancelled', + updateDownloaded = 'update-downloaded', + updateNotAvailable = 'update-not-available' +} diff --git a/projects/core/src/lib/types/browser-window.type.ts b/projects/core/src/lib/types/browser-window.type.ts new file mode 100644 index 0000000..280ac61 --- /dev/null +++ b/projects/core/src/lib/types/browser-window.type.ts @@ -0,0 +1,36 @@ +export enum BrowserWindowChannel { + alwaysOnTopChanged = 'always-on-top-changed', + appCommand = 'app-command', + blur = 'blur', + close = 'close', + closed = 'closed', + enterFullScreen = 'enter-full-screen', + enterHtmlFullScreen = 'enter-html-full-screen', + focus = 'focus', + hide = 'hide', + leaveFullScreen = 'leave-full-screen', + leaveHtmlFullScreen = 'leave-html-full-screen', + maximize = 'maximize', + minimize = 'minimize', + move = 'move', + moved = 'moved', + newWindowForTab = 'new-window-for-tab', + pageTitleUpdated = 'page-title-updated', + readyToShow = 'ready-to-show', + resize = 'resize', + responsive = 'responsive', + restore = 'restore', + rotateGesture = 'rotate-gesture', + scrollTouchBegin = 'scroll-touch-begin', + scrollTouchEdge = 'scroll-touch-edge', + scrollTouchEnd = 'scroll-touch-end', + sessionEnd = 'session-end', + sheetBegin = 'sheet-begin', + sheetEnd = 'sheet-end', + show = 'show', + swipe = 'swipe', + unmaximize = 'unmaximize', + unresponsive = 'unresponsive', + willMove = 'will-move', + willResize = 'will-resize' +} diff --git a/projects/core/src/lib/types/channel.type.ts b/projects/core/src/lib/types/channel.type.ts deleted file mode 100644 index 4075bf9..0000000 --- a/projects/core/src/lib/types/channel.type.ts +++ /dev/null @@ -1,39 +0,0 @@ -export enum AppChannel { - WillFinishLaunching = 'will-finish-launching', - Ready = 'ready', - WindowAllClosed = 'window-all-closed', - BeforeQuit = 'before-quit', - WillQuit = 'will-quit', - Quit = 'quit', - OpenFile = 'open-file', - OpenUrl = 'open-url', - Activate = 'activate', - ContinueActivity = 'continue-activity', - WillContinueActivity = 'will-continue-activity', - ContinueActivityError = 'continue-activity-error', - ActivityWasContinued = 'activity-was-continued', - SecondInstance = 'second-instance' -} - -export enum BrowserWindowChannel { - EnterFullScreen = 'enter-full-screen', - LeaveFullScreen = 'leave-full-screen', - Maximize = 'maximize', - Minimize = 'minimize', - Unmaximize = 'unmaximize', - Restore = 'restore', - Hide = 'hide', - Show = 'show', - Close = 'close', - Closed = 'closed', - ReadyToShow = 'ready-to-show', - Focus = 'focus', - Blur = 'blur' -} - -export enum WebContentsChannel { - DevtoolsOpened = 'devtools-opened', - DidStartLoading = 'did-start-loading', - DidFinishLoad = 'did-finish-load', - DidFailLoad = 'did-fail-load' -} diff --git a/projects/core/src/lib/types/web-contents-channel.type.ts b/projects/core/src/lib/types/web-contents-channel.type.ts new file mode 100644 index 0000000..8238027 --- /dev/null +++ b/projects/core/src/lib/types/web-contents-channel.type.ts @@ -0,0 +1,57 @@ +export enum WebContentsChannel { + beforeInputEvent = 'before-input-event', + certificateError = 'certificate-error', + consoleMessage = 'console-message', + contextMenu = 'context-menu', + crashed = 'crashed', + cursorChanged = 'cursor-changed', + desktopCapturerGetSources = 'desktop-capturer-get-sources', + destroyed = 'destroyed', + devtoolsClosed = 'devtools-closed', + devtoolsFocused = 'devtools-focused', + devtoolsOpened = 'devtools-opened', + devtoolsReloadPage = 'devtools-reload-page', + didAttachWebview = 'did-attach-webview', + didChangeThemeColor = 'did-change-theme-color', + didFailLoad = 'did-fail-load', + didFailProvisionalLoad = 'did-fail-provisional-load', + didFinishLoad = 'did-finish-load', + didFrameFinishLoad = 'did-frame-finish-load', + didFrameNavigate = 'did-frame-navigate', + didNavigate = 'did-navigate', + didNavigateInPage = 'did-navigate-in-page', + didRedirectNavigation = 'did-redirect-navigation', + didStartLoading = 'did-start-loading', + didStartNavigation = 'did-start-navigation', + didStopLoading = 'did-stop-loading', + domReady = 'dom-ready', + enterHtmlFullScreen = 'enter-html-full-screen', + foundInPage = 'found-in-page', + ipcMessage = 'ipc-message', + ipcMessageSync = 'ipc-message-sync', + leaveHtmlFullScreen = 'leave-html-full-screen', + login = 'login', + mediaPaused = 'media-paused', + mediaStartedPlaying = 'media-started-playing', + newWindow = 'new-window', + pageFaviconUpdated = 'page-favicon-updated', + pageTitleUpdated = 'page-title-updated', + paint = 'paint', + pluginCrashed = 'plugin-crashed', + preloadError = 'preload-error', + remoteGetBuiltin = 'remote-get-builtin', + remoteGetCurrentWebContents = 'remote-get-current-web-contents', + remoteGetCurrentWindow = 'remote-get-current-window', + remoteGetGlobal = 'remote-get-global', + remoteRequire = 'remote-require', + responsive = 'responsive', + selectBluetoothDevice = 'select-bluetooth-device', + selectClientCertificate = 'select-client-certificate', + unresponsive = 'unresponsive', + updateTargetUrl = 'update-target-url', + willAttachWebview = 'will-attach-webview', + willNavigate = 'will-navigate', + willPreventUnload = 'will-prevent-unload', + willRedirect = 'will-redirect', + zoomChanged = 'zoom-changed' +} diff --git a/projects/core/src/lib/utils/browser-window.util.ts b/projects/core/src/lib/utils/browser-window.util.ts new file mode 100644 index 0000000..20a4589 --- /dev/null +++ b/projects/core/src/lib/utils/browser-window.util.ts @@ -0,0 +1,22 @@ +import * as Electron from 'electron'; +import { PlatformUtil } from './platform.util'; + +export class BrowserWindowUtil { + static all(): Electron.BrowserWindow[] | undefined { + if (PlatformUtil.isRenderer()) { + return Electron.remote.BrowserWindow.getAllWindows(); + } else { + return Electron.BrowserWindow.getAllWindows(); + } + } + + static main(): Electron.BrowserWindow | undefined { + const browserWindows: Electron.BrowserWindow[] = BrowserWindowUtil.all(); + + if (!browserWindows || 0 === browserWindows.length) { + return undefined; + } + + return browserWindows[browserWindows.length - 1]; + } +} diff --git a/projects/core/src/lib/utils/file.util.ts b/projects/core/src/lib/utils/file.util.ts new file mode 100644 index 0000000..61bc73d --- /dev/null +++ b/projects/core/src/lib/utils/file.util.ts @@ -0,0 +1,192 @@ +import * as path from 'path'; +import * as fse from 'fs-extra'; + +export interface UniqueFileNameOption { + separator?: string; + mode?: + | 'numeric' + | 'alpha' + | 'ALPHA' + | 'alphanumeric' + | 'ALPHANUMERIC' + | 'charset'; + paddingCharacter?: string; + paddingSize?: number; + alwaysAppend?: boolean; + charset?: string; +} + +const charsets = { + alpha: 'abcdefghijklmnopqrstuvwxyz', + alphanumeric: '0123456789abcdefghijklmnopqrstuvwxyz', + ALPHA: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + ALPHANUMERIC: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' +}; + +interface UniqueFile { + dir?: string; + ext?: string; + base?: string; + increment?: number; +} + +export class FileUtil { + static blobToBuffer(blob: Blob): Promise { + if (typeof Blob === 'undefined' || !(blob instanceof Blob)) { + throw new Error('first argument must be a Blob'); + } + + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => { + resolve(Buffer.from(reader.result as ArrayBuffer)); + }; + reader.onerror = () => { + reader.abort(); + reject(reader.error); + }; + reader.readAsArrayBuffer(blob); + }); + } + + static uniqueFileName( + filePath: string, + options?: UniqueFileNameOption + ): Promise { + return new Promise((resolve, reject) => { + const dir = path.dirname(filePath); + const ext = path.extname(filePath); + const base = path.basename(filePath, ext); + + const uniqueFile: UniqueFile = { + dir, + ext, + base + }; + + options = options || {}; + options.separator = options.separator || '-'; + options.mode = options.mode || 'numeric'; + + if ('numeric' !== options.mode) { + if (charsets[options.mode]) { + options.charset = charsets[options.mode]; + options.mode = 'charset'; + } else if ( + 'charset' !== options.mode || + ('charset' === options.mode && !options.charset) + ) { + options.mode = 'numeric'; + } + } + + if (options.paddingSize && !options.paddingCharacter) { + options.paddingCharacter = '0'; + } + + FileUtil.uniqueFileNameProcess( + uniqueFile, + options, + (fileName: string) => { + resolve(fileName); + } + ); + }); + } + + private static uniqueFileNameProcess( + uniqueFile: UniqueFile, + options: UniqueFileNameOption, + callback: (fileName: string) => void + ) { + let fileName: string; + let append = ''; + + if (options.alwaysAppend && !uniqueFile.increment) { + uniqueFile.increment = 1; + } + + if (uniqueFile.increment) { + if ('numeric' === options.mode) { + append = '' + uniqueFile.increment; + } else { + append = FileUtil.numberToString(uniqueFile.increment, options.charset); + } + + if (options.paddingSize) { + while (append.length < options.paddingSize) { + append = options.paddingCharacter + append; + } + } + + append = options.separator + append; + } + + fileName = path.join( + uniqueFile.dir, + uniqueFile.base + append + uniqueFile.ext + ); + if (fse.existsSync(fileName)) { + if (uniqueFile.increment) { + uniqueFile.increment += 1; + } else { + uniqueFile.increment = 'numeric' === options.mode ? 2 : 1; + } + return FileUtil.uniqueFileNameProcess(uniqueFile, options, callback); + } else { + return callback(fileName); + } + } + + private static numberToString(nbr: number, charset: string) { + const charsetLen = charset.length; + let strLen = 0; + let strThisLen = 0; + let tmp: number; + + for (let maxpower = 20; maxpower >= 0; maxpower--) { + const maxvalue = FileUtil.sumOfPowerFromOne(charsetLen, maxpower); + + if (maxvalue < nbr) { + strLen = maxpower + 1; + strThisLen = maxvalue + Math.pow(charsetLen, maxpower + 1) - maxvalue; + + break; + } + } + + if (0 === strLen) { + return null; + } + + let str = ''; + while (--strLen >= 0) { + if (strLen === 0) { + str += charset.charAt(nbr - 1); + break; + } + + strThisLen = Math.pow(charsetLen, strLen); + const initial = FileUtil.sumOfPowerFromOne(charsetLen, strLen - 1); + + for (tmp = charsetLen; tmp >= 1; tmp--) { + if (initial + tmp * strThisLen < nbr) { + break; + } + } + + nbr -= tmp * strThisLen; + str += charset.charAt(tmp - 1); + } + + return str; + } + + private static sumOfPowerFromOne(base: number, maxpower: number) { + let value = 0; + for (let tmp = maxpower; tmp >= 1; tmp--) { + value += Math.pow(base, tmp); + } + return value; + } +} diff --git a/projects/core/src/lib/utils/platform.util.ts b/projects/core/src/lib/utils/platform.util.ts new file mode 100644 index 0000000..96f026e --- /dev/null +++ b/projects/core/src/lib/utils/platform.util.ts @@ -0,0 +1,65 @@ +import * as path from 'path'; + +export const NODE_ENV = 'NODE_ENV'; + +export class PlatformUtil { + static isRenderer() { + return !!process && !!process.type && 'renderer' === process.type; + } + + static isProduction() { + return ( + !!process && + !!process.env && + !!process.env[NODE_ENV] && + 'production' === process.env[NODE_ENV] + ); + } + + static isPackaged() { + if ( + !!process.mainModule && + -1 !== process.mainModule.filename.indexOf('app.asar') + ) { + return true; + } else if ( + 0 < process.argv.filter((a) => -1 !== a.indexOf('app.asar')).length + ) { + return true; + } + + return false; + } + + static isWindows() { + return !!process && !!process.platform && 'win32' === process.platform; + } + static isDarwin() { + return !!process && !!process.platform && 'darwin' === process.platform; + } + static isLinux() { + return !!process && !!process.platform && 'linux' === process.platform; + } + + static rootPath(basePath: string = './') { + if (PlatformUtil.isPackaged()) { + if (PlatformUtil.isWindows()) { + return path.join(basePath, '..'); + } else { + return path.join(basePath, '..'); + } + } else if (PlatformUtil.isProduction()) { + if (PlatformUtil.isRenderer()) { + return path.join(basePath, '..'); + } else if (!module.parent) { + return path.join(basePath, '..'); + } else { + return path.join(basePath, '..'); + } + } else if (PlatformUtil.isRenderer()) { + return path.join(basePath, '..'); + } else { + return path.join(basePath, '..'); + } + } +} diff --git a/projects/core/src/public-api.ts b/projects/core/src/public-api.ts index b62eeb4..119fed0 100644 --- a/projects/core/src/public-api.ts +++ b/projects/core/src/public-api.ts @@ -2,4 +2,11 @@ * Public API Surface of core */ -export * from './lib/types/channel.type'; +export * from './lib/types/app-channel.type'; +export * from './lib/types/auto-updater-channel.type'; +export * from './lib/types/browser-window.type'; +export * from './lib/types/web-contents-channel.type'; + +export * from './lib/utils/browser-window.util'; +export * from './lib/utils/file.util'; +export * from './lib/utils/platform.util'; diff --git a/projects/i18n/package.json b/projects/i18n/package.json new file mode 100644 index 0000000..4eff343 --- /dev/null +++ b/projects/i18n/package.json @@ -0,0 +1,14 @@ +{ + "name": "@ucap/electron-i18n", + "version": "0.0.1", + "publishConfig": { + "registry": "https://nexus.loafle.net/repository/npm-ucap/" + }, + "scripts": {}, + "peerDependencies": { + "electron": "^9.0.3", + "electron-log": "^4.2.1", + "i18next": "^19.3.2", + "tslib": "^1.10.0" + } +} diff --git a/projects/i18n/src/lib/services/i18n.service.ts b/projects/i18n/src/lib/services/i18n.service.ts new file mode 100644 index 0000000..71b4aae --- /dev/null +++ b/projects/i18n/src/lib/services/i18n.service.ts @@ -0,0 +1 @@ +export class I18nService {} diff --git a/projects/i18n/src/public-api.ts b/projects/i18n/src/public-api.ts new file mode 100644 index 0000000..40e880e --- /dev/null +++ b/projects/i18n/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of electron-native + */ + +export * from './lib/types/channel.type'; + +export * from './lib/services/electron-native.service'; diff --git a/projects/i18n/tsconfig.lib.json b/projects/i18n/tsconfig.lib.json new file mode 100644 index 0000000..33840d8 --- /dev/null +++ b/projects/i18n/tsconfig.lib.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/projects/i18n/tsconfig.lib.prod.json b/projects/i18n/tsconfig.lib.prod.json new file mode 100644 index 0000000..136e7ee --- /dev/null +++ b/projects/i18n/tsconfig.lib.prod.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.lib.json" +} diff --git a/projects/i18n/tsconfig.spec.json b/projects/i18n/tsconfig.spec.json new file mode 100644 index 0000000..ec3528a --- /dev/null +++ b/projects/i18n/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": ["jasmine", "node"] + }, + "files": ["src/test.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/projects/i18n/tslint.json b/projects/i18n/tslint.json new file mode 100644 index 0000000..0946f20 --- /dev/null +++ b/projects/i18n/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tslint.json" +} diff --git a/projects/i18n/ucap-package.json b/projects/i18n/ucap-package.json new file mode 100644 index 0000000..eba7f9a --- /dev/null +++ b/projects/i18n/ucap-package.json @@ -0,0 +1,7 @@ +{ + "dest": "../../dist/native", + "docDest": "../../docs/native", + "lib": { + "entryFile": "src/public-api.ts" + } +} diff --git a/projects/logger/package.json b/projects/logger/package.json new file mode 100644 index 0000000..4356bf6 --- /dev/null +++ b/projects/logger/package.json @@ -0,0 +1,13 @@ +{ + "name": "@ucap/electron-logger", + "version": "0.0.1", + "publishConfig": { + "registry": "https://nexus.loafle.net/repository/npm-ucap/" + }, + "scripts": {}, + "peerDependencies": { + "electron": "^9.0.3", + "electron-log": "^4.2.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/logger/src/lib/appenders/electron-log.appender.ts b/projects/logger/src/lib/appenders/electron-log.appender.ts new file mode 100644 index 0000000..b169485 --- /dev/null +++ b/projects/logger/src/lib/appenders/electron-log.appender.ts @@ -0,0 +1,49 @@ +import { LogAppender, LogEntry, LogLevel } from '@ucap/logger'; + +import electron_log from 'electron-log'; + +export class ElectronLogAppender extends LogAppender { + constructor() { + super(); + } + + log(entry: LogEntry): Promise { + return new Promise((resolve, reject) => { + try { + switch (entry.level) { + case LogLevel.Trace: + electron_log.silly(...entry.args); + break; + case LogLevel.Debug: + electron_log.debug(...entry.args); + break; + case LogLevel.Info: + electron_log.verbose(...entry.args); + break; + case LogLevel.Warn: + electron_log.info(...entry.args); + break; + case LogLevel.Error: + electron_log.warn(...entry.args); + break; + case LogLevel.Fatal: + electron_log.error(...entry.args); + break; + } + resolve(); + } catch (error) { + reject(error); + } + }); + } + + clear(): Promise { + return new Promise((resolve, reject) => { + try { + resolve(); + } catch (error) { + reject(error); + } + }); + } +} diff --git a/projects/logger/src/public-api.ts b/projects/logger/src/public-api.ts new file mode 100644 index 0000000..b70dbeb --- /dev/null +++ b/projects/logger/src/public-api.ts @@ -0,0 +1,5 @@ +/* + * Public API Surface of electron-logger + */ + +export * from './lib/appenders/electron-log.appender'; diff --git a/projects/logger/tsconfig.lib.json b/projects/logger/tsconfig.lib.json new file mode 100644 index 0000000..dc364b8 --- /dev/null +++ b/projects/logger/tsconfig.lib.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": ["node"], + "lib": ["dom", "es2018"] + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/projects/logger/tsconfig.lib.prod.json b/projects/logger/tsconfig.lib.prod.json new file mode 100644 index 0000000..136e7ee --- /dev/null +++ b/projects/logger/tsconfig.lib.prod.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.lib.json" +} diff --git a/projects/logger/tsconfig.spec.json b/projects/logger/tsconfig.spec.json new file mode 100644 index 0000000..ec3528a --- /dev/null +++ b/projects/logger/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": ["jasmine", "node"] + }, + "files": ["src/test.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/projects/logger/tslint.json b/projects/logger/tslint.json new file mode 100644 index 0000000..0946f20 --- /dev/null +++ b/projects/logger/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tslint.json" +} diff --git a/projects/logger/ucap-package.json b/projects/logger/ucap-package.json new file mode 100644 index 0000000..5b6942c --- /dev/null +++ b/projects/logger/ucap-package.json @@ -0,0 +1,7 @@ +{ + "dest": "../../dist/logger", + "docDest": "../../docs/logger", + "lib": { + "entryFile": "src/public-api.ts" + } +} diff --git a/projects/native/package.json b/projects/native/package.json new file mode 100644 index 0000000..fd5693f --- /dev/null +++ b/projects/native/package.json @@ -0,0 +1,20 @@ +{ + "name": "@ucap/electron-native", + "version": "0.0.19", + "publishConfig": { + "registry": "https://nexus.loafle.net/repository/npm-ucap/" + }, + "scripts": {}, + "peerDependencies": { + "electron": "^9.0.3", + "electron-log": "^4.2.1", + "@ucap/core": "~0.0.1", + "@ucap/domain-common": "~0.0.1", + "@ucap/domain-organization": "~0.0.1", + "@ucap/domain-status": "~0.0.1", + "@ucap/native": "~0.0.1", + "axios": "^0.19.2", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/native/src/lib/services/electron-native.service.ts b/projects/native/src/lib/services/electron-native.service.ts new file mode 100644 index 0000000..7e95bac --- /dev/null +++ b/projects/native/src/lib/services/electron-native.service.ts @@ -0,0 +1,717 @@ +import { Subject, BehaviorSubject } from 'rxjs'; + +import { AxiosInstance } from 'axios'; + +import * as Electron from 'electron'; + +import { StatusCode } from '@ucap/domain-status'; + +import { + NativeService, + UpdateCheckConfig, + UpdateInfo, + NativeType, + WindowState, + WindowIdle, + NotificationRequest, + AppInitInfo +} from '@ucap/native'; +import { + PlatformChannel, + FileChannel, + WindowChannel, + IdleChannel, + AppChannel, + ChatChannel, + MessageChannel +} from '../types/channel.type'; + +const listenersOfChannel = [ + WindowChannel.onState$, + WindowChannel.onFocus$, + IdleChannel.onState$, + AppChannel.onUpdate$, + AppChannel.onLogout$, + AppChannel.onStatus$, + AppChannel.onShowSetting$, + AppChannel.onExit$, + ChatChannel.onOpen$, + MessageChannel.onOpen$ +]; + +export class ElectronNativeService extends NativeService { + private ipcRenderer: typeof Electron.ipcRenderer; + private webFrame: typeof Electron.webFrame; + private remote: typeof Electron.remote; + private shell: typeof Electron.shell; + + private platform: string; + + constructor(private axios: AxiosInstance) { + super(); + + this.ipcRenderer = (window as any).require('electron').ipcRenderer; + this.remote = (window as any).require('electron').remote; + this.shell = (window as any).require('electron').shell; + this.webFrame = (window as any).require('electron').webFrame; + + this.platform = (window as any).require('os').platform(); + } + + platform_nativeType(): Promise { + return new Promise(async (resolve, reject) => { + try { + resolve(NativeType.Electron); + } catch (error) { + reject(error); + } + }); + } + platform_networkInfo(): Promise { + return new Promise(async (resolve, reject) => { + try { + const networkInfo = await this.ipcRenderer.invoke( + PlatformChannel.networkInfo + ); + resolve(networkInfo); + } catch (error) { + reject(error); + } + }); + } + platform_execute(executableName: string): Promise { + return new Promise(async (resolve, reject) => { + try { + const id = await this.ipcRenderer.invoke( + PlatformChannel.execute, + executableName + ); + resolve(id); + } catch (error) { + reject(error); + } + }); + } + platform_openDefaultBrowser( + url: string, + options?: { + name?: string; + features?: string; + replace?: boolean; + } + ): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke( + PlatformChannel.openDefaultBrowser, + url, + options + ); + + resolve(); + } catch (error) { + reject(error); + } + }); + } + platform_readFromClipboard(): Promise<{ + text?: string; + rtf?: string; + html?: string; + image?: Buffer; + imageDataUrl?: string; + }> { + return new Promise<{ + text?: string; + rtf?: string; + html?: string; + image?: Buffer; + imageDataUrl?: string; + }>(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke( + PlatformChannel.readFromClipboard + ); + + resolve(data); + } catch (error) { + reject(error); + } + }); + } + + file_save( + buffer: Buffer, + fileName: string, + mimeType: string, + path?: string + ): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke( + FileChannel.save, + buffer, + fileName, + mimeType, + path + ); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + file_read(path: string): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke(FileChannel.read, path); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + file_openFolder(folderPath?: string, make?: boolean): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke( + FileChannel.openFolder, + folderPath, + make + ); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + file_openItem(filePath?: string): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke( + FileChannel.openItem, + filePath + ); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + file_path( + name: 'home' | 'documents' | 'downloads' | 'music' | 'pictures' | 'videos', + ...appendPaths: string[] + ): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke( + FileChannel.path, + name, + appendPaths + ); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + file_selectForOpen(option: { + title?: string; + defaultPath?: string; + filters?: { + extensions: string[]; + name: string; + }[]; + properties?: Array< + | 'openFile' + | 'openDirectory' + | 'multiSelections' + | 'showHiddenFiles' + | 'createDirectory' + | 'promptToCreate' + | 'noResolveAliases' + | 'treatPackageAsDirectory' + >; + message?: string; + }): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke( + FileChannel.selectForOpen, + option + ); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + file_selectForSave(option: { + title?: string; + defaultPath?: string; + filters?: { + extensions: string[]; + name: string; + }[]; + message?: string; + }): Promise<{ + canceled: boolean; + filePath: string; + }> { + return new Promise<{ + canceled: boolean; + filePath: string; + }>(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke( + FileChannel.selectForSave, + option + ); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + + window_state(): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke(WindowChannel.state); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + window_onState$(): BehaviorSubject { + if (!this._window_onStateSubject) { + this.ipcRenderer.on( + WindowChannel.onState$, + (event: any, state: WindowState) => { + if (!!this._window_onStateSubject) { + this._window_onStateSubject.next(state); + } + } + ); + + this.window_state().then((state) => { + this._window_onStateSubject.next(state); + }); + } + + return super.window_onState$(); + } + window_focused(): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke(WindowChannel.focused); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + window_onFocus$(): BehaviorSubject { + if (!this._window_onFocusSubject) { + this.ipcRenderer.on( + WindowChannel.onFocus$, + (event: any, focused: boolean) => { + if (!!this._window_onFocusSubject) { + this._window_onFocusSubject.next(focused); + } + } + ); + + this.window_focused().then((focused) => { + this._window_onFocusSubject.next(focused); + }); + } + + return super.window_onFocus$(); + } + window_close(): Promise { + return new Promise(async (resolve, reject) => { + try { + const currentWindow = this.remote.getCurrentWindow(); + if (!!currentWindow) { + currentWindow.hide(); + } + resolve(); + } catch (error) { + reject(error); + } + }); + } + window_minimize(): Promise { + return new Promise(async (resolve, reject) => { + try { + const currentWindow = this.remote.getCurrentWindow(); + if (!!currentWindow) { + currentWindow.minimize(); + } + resolve(); + } catch (error) { + reject(error); + } + }); + } + window_maximize(altKey: boolean = false): Promise { + return new Promise(async (resolve, reject) => { + try { + const currentWindow = this.remote.getCurrentWindow(); + if (!!currentWindow) { + if ('darwin' === this.platform) { + if (altKey) { + if (currentWindow.isMaximizable()) { + if (currentWindow.isMaximized()) { + currentWindow.unmaximize(); + } else { + currentWindow.maximize(); + } + } + } else { + currentWindow.setFullScreen(!currentWindow.isFullScreen()); + } + } else { + if (currentWindow.isMaximized()) { + currentWindow.unmaximize(); + } else { + currentWindow.maximize(); + } + } + } + + resolve(); + } catch (error) { + reject(error); + } + }); + } + + idle_startCheck(limitTime: number): Promise { + return new Promise(async (resolve, reject) => { + try { + const started = await this.ipcRenderer.invoke(IdleChannel.started); + if (started) { + resolve(); + return; + } + + await this.ipcRenderer.invoke(IdleChannel.startCheck, limitTime); + + this.ipcRenderer.on( + IdleChannel.onState$, + this._idle_onState$Callback.bind(this) + ); + + resolve(); + } catch (error) { + reject(error); + } + }); + } + _idle_onState$Callback(event: any, idleState: WindowIdle) { + if (!!this._idle_onStateSubject) { + this._idle_onStateSubject.next(idleState); + } + } + idle_onState$(): BehaviorSubject { + return super.idle_onState$(); + } + idle_stopCheck(): Promise { + return new Promise(async (resolve, reject) => { + try { + const started = await this.ipcRenderer.invoke(IdleChannel.started); + if (!started) { + resolve(); + return; + } + + await this.ipcRenderer.invoke(IdleChannel.stopCheck); + + this.ipcRenderer.off( + IdleChannel.onState$, + this._idle_onState$Callback.bind(this) + ); + + resolve(); + } catch (error) { + reject(error); + } + }); + } + idle_changeLimitTime(limitTime: number): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(IdleChannel.changeLimitTime, limitTime); + resolve(); + } catch (error) { + reject(error); + } + }); + } + + app_version(): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke(AppChannel.version); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + app_postInit(): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke(AppChannel.postInit); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + app_postLogin(): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(AppChannel.postLogin); + resolve(); + } catch (error) { + reject(error); + } + }); + } + app_postLogout(): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(AppChannel.postLogout); + resolve(); + } catch (error) { + reject(error); + } + }); + } + app_postDestroy(): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(AppChannel.postDestroy); + + for (const channel of listenersOfChannel) { + this.ipcRenderer.removeAllListeners(channel); + } + + resolve(); + } catch (error) { + reject(error); + } + }); + } + + app_changeAutoLaunch(autoLaunch: boolean): Promise { + return new Promise(async (resolve, reject) => { + try { + const data = await this.ipcRenderer.invoke( + AppChannel.changeAutoLaunch, + autoLaunch + ); + resolve(data); + } catch (error) { + reject(error); + } + }); + } + app_showNotify(req: NotificationRequest): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(AppChannel.showNotify, req); + resolve(); + } catch (error) { + reject(error); + } + }); + } + app_closeAllNotify(): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(AppChannel.closeAllNotify); + resolve(); + } catch (error) { + reject(error); + } + }); + } + app_checkForUpdates(currentVersion: string): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke( + AppChannel.checkForUpdates, + currentVersion + ); + resolve(); + } catch (error) { + reject(error); + } + }); + } + app_applyInstantUpdates(): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(AppChannel.applyInstantUpdates); + resolve(); + } catch (error) { + reject(error); + } + }); + } + app_startCheckForUpdate(config: UpdateCheckConfig): Promise { + return new Promise(async (resolve, reject) => { + try { + const started = await this.ipcRenderer.invoke( + AppChannel.startedCheckForUpdate + ); + if (started) { + resolve(); + return; + } + + await this.ipcRenderer.invoke(AppChannel.startCheckForUpdate, config); + + this.ipcRenderer.on( + AppChannel.onUpdate$, + this._app_onUpdate$Callback.bind(this) + ); + + resolve(); + } catch (error) { + reject(error); + } + }); + } + _app_onUpdate$Callback(event: any, info: UpdateInfo) { + if (!!this._app_onUpdateSubject) { + this._app_onUpdateSubject.next(info); + } + } + app_onUpdate$(): BehaviorSubject { + return super.app_onUpdate$(); + } + app_stopCheckForUpdate(): Promise { + return new Promise(async (resolve, reject) => { + try { + const started = await this.ipcRenderer.invoke( + AppChannel.startedCheckForUpdate + ); + if (!started) { + resolve(); + return; + } + + await this.ipcRenderer.invoke(AppChannel.stopCheckForUpdate); + + this.ipcRenderer.off( + AppChannel.onUpdate$, + this._app_onUpdate$Callback.bind(this) + ); + + resolve(); + } catch (error) { + reject(error); + } + }); + } + + app_exit(): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(AppChannel.exit); + resolve(); + } catch (error) { + reject(error); + } + }); + } + + app_onLogout$(): Subject { + if (!this._app_onLogoutSubject) { + this.ipcRenderer.on(AppChannel.onLogout$, (event: any) => { + if (!!this._app_onLogoutSubject) { + this._app_onLogoutSubject.next(); + } + }); + } + + return super.app_onLogout$(); + } + app_onStatus$(): BehaviorSubject { + if (!this._app_onStatusSubject) { + this.ipcRenderer.on( + AppChannel.onStatus$, + (event: any, code: StatusCode) => { + if (!!this._app_onStatusSubject) { + this._app_onStatusSubject.next(code); + } + } + ); + } + + return super.app_onStatus$(); + } + app_onShowSetting$(): Subject { + if (!this._app_onShowSettingSubject) { + this.ipcRenderer.on(AppChannel.onShowSetting$, (event: any) => { + if (!!this._app_onShowSettingSubject) { + this._app_onShowSettingSubject.next(); + } + }); + } + + return super.app_onShowSetting$(); + } + + app_onExit$(): Subject { + if (!this._app_onExitSubject) { + this.ipcRenderer.on(AppChannel.onExit$, (event: any) => { + if (!!this._app_onExitSubject) { + this._app_onExitSubject.next(); + } + }); + } + + return super.app_onExit$(); + } + + chat_openRoom(openUrl: string): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.ipcRenderer.invoke(ChatChannel.openRoom, openUrl); + resolve(); + } catch (error) { + reject(error); + } + }); + } + chat_onOpen$(): Subject { + if (!this._chat_onOpenSubject) { + this.ipcRenderer.on(ChatChannel.onOpen$, (event: any, seq: string) => { + if (!!this._chat_onOpenSubject) { + this._chat_onOpenSubject.next(seq); + } + }); + } + + return super.chat_onOpen$(); + } + + message_onOpen$(): Subject { + if (!this._message_onOpenSubject) { + this.ipcRenderer.on(MessageChannel.onOpen$, (event: any, seq: string) => { + if (!!this._message_onOpenSubject) { + this._message_onOpenSubject.next(seq); + } + }); + } + + return super.message_onOpen$(); + } +} diff --git a/projects/native/src/lib/types/channel.type.ts b/projects/native/src/lib/types/channel.type.ts new file mode 100644 index 0000000..8403b6c --- /dev/null +++ b/projects/native/src/lib/types/channel.type.ts @@ -0,0 +1,65 @@ +export enum PlatformChannel { + networkInfo = 'ucap::native::platform::networkInfo', + execute = 'ucap::native::platform::execute', + openDefaultBrowser = 'ucap::native::platform::openDefaultBrowser', + readFromClipboard = 'ucap::native::platform::readFromClipboard' +} + +export enum FileChannel { + save = 'ucap::native::file::save', + read = 'ucap::native::file::read', + openFolder = 'ucap::native::file::openFolder', + openItem = 'ucap::native::file::openItem', + path = 'ucap::native::file::path', + selectForOpen = 'ucap::native::file::selectForOpen', + selectForSave = 'ucap::native::file::selectForSave' +} + +export enum WindowChannel { + close = 'ucap::native::window::close', + minimize = 'ucap::native::window::minimize', + maximize = 'ucap::native::window::maximize', + state = 'ucap::native::window::state', + onState$ = 'ucap::native::window::onState$', + focused = 'ucap::native::window::focused', + onFocus$ = 'ucap::native::window::onFocus$' +} + +export enum IdleChannel { + started = 'ucap::native::idle::started', + startCheck = 'ucap::native::idle::startCheck', + onState$ = 'ucap::native::idle::onState$', + stopCheck = 'ucap::native::idle::stopCheck', + changeLimitTime = 'ucap::native::idle::changeLimitTime' +} + +export enum AppChannel { + version = 'ucap::native::app::version', + postInit = 'ucap::native::app::postInit', + postLogin = 'ucap::native::app::postLogin', + postLogout = 'ucap::native::app::postLogout', + postDestroy = 'ucap::native::app::postDestroy', + changeAutoLaunch = 'ucap::native::app::changeAutoLaunch', + showNotify = 'ucap::native::app::showNotify', + closeAllNotify = 'ucap::native::app::closeAllNotify', + checkForUpdates = 'ucap::native::app::checkForUpdates', + applyInstantUpdates = 'ucap::native::app::applyInstantUpdates', + startedCheckForUpdate = 'ucap::native::app::startedCheckForUpdate', + startCheckForUpdate = 'ucap::native::app::startCheckForUpdate', + stopCheckForUpdate = 'ucap::native::app::stopCheckForUpdate', + onUpdate$ = 'ucap::native::app::onUpdate$', + exit = 'ucap::native::app::exit', + onLogout$ = 'ucap::native::app::onLogout$', + onStatus$ = 'ucap::native::app::onStatus$', + onShowSetting$ = 'ucap::native::app::onShowSetting$', + onExit$ = 'ucap::native::app::onExit$' +} + +export enum ChatChannel { + openRoom = 'ucap::native::chat::openRoom', + onOpen$ = 'ucap::native::chat::onOpen$' +} + +export enum MessageChannel { + onOpen$ = 'ucap::native::message::onOpen$' +} diff --git a/projects/native/src/public-api.ts b/projects/native/src/public-api.ts new file mode 100644 index 0000000..40e880e --- /dev/null +++ b/projects/native/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of electron-native + */ + +export * from './lib/types/channel.type'; + +export * from './lib/services/electron-native.service'; diff --git a/projects/native/tsconfig.lib.json b/projects/native/tsconfig.lib.json new file mode 100644 index 0000000..33840d8 --- /dev/null +++ b/projects/native/tsconfig.lib.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/projects/native/tsconfig.lib.prod.json b/projects/native/tsconfig.lib.prod.json new file mode 100644 index 0000000..136e7ee --- /dev/null +++ b/projects/native/tsconfig.lib.prod.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.lib.json" +} diff --git a/projects/native/tsconfig.spec.json b/projects/native/tsconfig.spec.json new file mode 100644 index 0000000..ec3528a --- /dev/null +++ b/projects/native/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": ["jasmine", "node"] + }, + "files": ["src/test.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/projects/native/tslint.json b/projects/native/tslint.json new file mode 100644 index 0000000..0946f20 --- /dev/null +++ b/projects/native/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tslint.json" +} diff --git a/projects/native/ucap-package.json b/projects/native/ucap-package.json new file mode 100644 index 0000000..eba7f9a --- /dev/null +++ b/projects/native/ucap-package.json @@ -0,0 +1,7 @@ +{ + "dest": "../../dist/native", + "docDest": "../../docs/native", + "lib": { + "entryFile": "src/public-api.ts" + } +} diff --git a/projects/notify-window/package.json b/projects/notify-window/package.json index 292672a..e6d1d3b 100644 --- a/projects/notify-window/package.json +++ b/projects/notify-window/package.json @@ -1,15 +1,15 @@ { "name": "@ucap/electron-notify-window", - "version": "0.0.1", + "version": "0.0.13", "publishConfig": { - "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, "scripts": {}, - "dependencies": { + "peerDependencies": { "@ucap/electron-core": "~0.0.1", - "electron": "^8.0.0", - "electron-log": "^4.1.0", - "fs-extra": "^8.1.0", + "electron": "^9.0.3", + "electron-log": "^4.2.1", + "fs-extra": "^9.0.1", "rxjs": "^6.5.4" }, "devDependencies": {} diff --git a/projects/notify-window/src/lib/models/notify-window-options.ts b/projects/notify-window/src/lib/models/notify-window-options.ts index 97df2ec..3c63195 100644 --- a/projects/notify-window/src/lib/models/notify-window-options.ts +++ b/projects/notify-window/src/lib/models/notify-window-options.ts @@ -1,5 +1,5 @@ import * as path from 'path'; -import { BrowserWindowConstructorOptions } from 'electron'; +import * as Electron from 'electron'; export interface NotifyWindowOptions { width?: number; @@ -32,7 +32,7 @@ export interface NotifyWindowOptions { defaultStyleText?: { [attribute: string]: any; }; - defaultWindow?: BrowserWindowConstructorOptions; + defaultWindow?: Electron.BrowserWindowConstructorOptions; templatePath?: string; htmlTemplate?: string; } diff --git a/projects/notify-window/src/lib/services/notify-window.service.ts b/projects/notify-window/src/lib/services/notify-window.service.ts index 81c9196..8c4e188 100644 --- a/projects/notify-window/src/lib/services/notify-window.service.ts +++ b/projects/notify-window/src/lib/services/notify-window.service.ts @@ -1,5 +1,6 @@ import url from 'url'; import fse from 'fs-extra'; +import * as Electron from 'electron'; import log from 'electron-log'; import { WebContentsChannel } from '@ucap/electron-core'; @@ -9,7 +10,6 @@ import { NotifyWindowOptions, DefaultNotifyWindowOptions } from '../models/notify-window-options'; -import { screen, BrowserWindow, ipcMain, IpcMainEvent, shell } from 'electron'; import { NotifyWindow } from '../models/notify-window'; import { NotifyWindowEventType } from '../types/event.type'; import { Channel } from '../types/channel.type'; @@ -28,18 +28,18 @@ interface ENDimension { } class BrowserWindowPooler { - private readonly inactiveWindows: BrowserWindow[]; + private readonly inactiveWindows: Electron.BrowserWindow[]; constructor(private readonly minSize: number) { this.minSize = 0 > this.minSize ? 0 : this.minSize; this.inactiveWindows = []; } - getLength() { + get length() { return this.inactiveWindows.length; } - push(...items: BrowserWindow[]): number { + push(...items: Electron.BrowserWindow[]): number { const length = this.inactiveWindows.push(...items); if (this.minSize < length) { @@ -48,7 +48,7 @@ class BrowserWindowPooler { return length; } - pop(): BrowserWindow { + pop(): Electron.BrowserWindow { if (!this.inactiveWindows || 0 === this.inactiveWindows.length) { return undefined; } @@ -80,7 +80,7 @@ export class NotifyWindowService { private firstPosition: ENPoint; private lowerRightCornerPosition: ENPoint; private maxVisibleNotifications: number; - private activeNotifications: BrowserWindow[]; + private activeNotifications: Electron.BrowserWindow[]; private browserWindowPooler: BrowserWindowPooler; private notificationQueue: NotifyWindow[]; @@ -103,7 +103,7 @@ export class NotifyWindowService { this.setupEvents(); } - setOptions(options: NotifyWindowOptions) { + set options(options: NotifyWindowOptions) { if (!!options) { this.customOptions = { ...this.customOptions, @@ -113,18 +113,18 @@ export class NotifyWindowService { this.calcDimensions(); } - getOptions(): NotifyWindowOptions { + get options(): NotifyWindowOptions { return this.customOptions; } - setTemplatePath(templatePath: string) { + set templatePath(templatePath: string) { if (!!templatePath) { this.customOptions.templatePath = templatePath; this.updateTemplatePath(); } } - getTemplatePath(): string { + get templatePath(): string { if (!this.templateUrl) { this.updateTemplatePath(); } @@ -143,13 +143,13 @@ export class NotifyWindowService { dispose(): void { this.animationQueue.clear(); - this.activeNotifications.forEach(window => window.close()); + this.activeNotifications.forEach((window) => window.close()); this.browserWindowPooler.closeAll(); } closeAll(): void { this.animationQueue.clear(); - this.activeNotifications.forEach(window => window.close()); + this.activeNotifications.forEach((window) => window.close()); this.browserWindowPooler.closeAll(); this.setup(); @@ -161,7 +161,7 @@ export class NotifyWindowService { this.firstPosition = { x: 0, y: 0 }; this.activeNotifications = []; this.browserWindowPooler = new BrowserWindowPooler( - this.getOptions().browserWindowPool.min + this.options.browserWindowPool.min ); this.notificationQueue = []; this.closedNotifications = new Map(); @@ -169,7 +169,7 @@ export class NotifyWindowService { this.animationQueue = new AnimationQueue(); - const display = screen.getPrimaryDisplay(); + const display = Electron.screen.getPrimaryDisplay(); this.lowerRightCornerPosition = { x: display.bounds.x + display.workArea.x + display.workAreaSize.width, @@ -183,35 +183,45 @@ export class NotifyWindowService { ); this.maxVisibleNotifications = - this.getOptions().browserWindowPool.max < this.maxVisibleNotifications - ? this.getOptions().browserWindowPool.max + this.options.browserWindowPool.max < this.maxVisibleNotifications + ? this.options.browserWindowPool.max : this.maxVisibleNotifications; } private setupEvents(): void { const self = this; - ipcMain.on( + Electron.ipcMain.on( Channel.close, - (event: IpcMainEvent, windowId: number, notification: NotifyWindow) => { + ( + event: Electron.IpcMainEvent, + windowId: number, + sNotification: string + ) => { + const notification: NotifyWindow = JSON.parse(sNotification); const onClose = self.buildCloseNotification( - BrowserWindow.fromId(windowId), + Electron.BrowserWindow.fromId(windowId), notification ); self.buildCloseNotificationSafely(onClose)('close'); } ); - ipcMain.on( + Electron.ipcMain.on( Channel.click, - (event: IpcMainEvent, windowId: number, notification: NotifyWindow) => { + ( + event: Electron.IpcMainEvent, + windowId: number, + sNotification: string + ) => { + const notification: NotifyWindow = JSON.parse(sNotification); if (!!notification.url) { - shell.openExternal(notification.url); + Electron.shell.openExternal(notification.url); } - const notificationWindow = BrowserWindow.fromId(windowId); + const notificationWindow = Electron.BrowserWindow.fromId(windowId); if (notificationWindow && notificationWindow[onClickNotifyWindow]) { const onClose = self.buildCloseNotification( - BrowserWindow.fromId(windowId), + Electron.BrowserWindow.fromId(windowId), notification ); notificationWindow[onClickNotifyWindow]({ @@ -275,7 +285,7 @@ export class NotifyWindowService { const self = this; return new Promise((resolve, reject) => { if (this.activeNotifications.length < this.maxVisibleNotifications) { - self.getWindow().then(notificationWindow => { + self.getWindow().then((notificationWindow) => { self.calcInsertPosition(); notificationWindow.setPosition( self.nextInsertPosition.x, @@ -324,7 +334,7 @@ export class NotifyWindowService { notificationWindow.webContents.send( Channel.browserWindowSetContents, - notification + JSON.stringify(notification) ); notificationWindow.showInactive(); resolve(notificationWindow); @@ -337,7 +347,7 @@ export class NotifyWindowService { } private buildCloseNotification( - notificationWindow: BrowserWindow, + notificationWindow: Electron.BrowserWindow, notification: NotifyWindow, timeoutIdFunc?: () => number ) { @@ -349,7 +359,7 @@ export class NotifyWindowService { if (self.closedNotifications.has(notification.id)) { self.closedNotifications.delete(notification.id); - return new Promise(resolve => { + return new Promise((resolve) => { resolve(); }); } else { @@ -409,24 +419,24 @@ export class NotifyWindowService { } } - private getWindow(): Promise { + private getWindow(): Promise { const slef = this; - return new Promise((resolve, reject) => { - if (0 < slef.browserWindowPooler.getLength()) { + return new Promise((resolve, reject) => { + if (0 < slef.browserWindowPooler.length) { resolve(slef.browserWindowPooler.pop()); } else { const windowProperties = slef.customOptions.defaultWindow; windowProperties.width = slef.customOptions.width; windowProperties.height = slef.customOptions.height; - const notificationWindow = new BrowserWindow({ + const notificationWindow = new Electron.BrowserWindow({ ...windowProperties, title: 'Notification' }); notificationWindow.setVisibleOnAllWorkspaces(true); - notificationWindow.loadURL(slef.getTemplatePath()); + notificationWindow.loadURL(slef.templatePath); notificationWindow.webContents.on( - WebContentsChannel.DidFinishLoad, + WebContentsChannel.didFinishLoad, () => { // Done notificationWindow.webContents.send( @@ -437,7 +447,7 @@ export class NotifyWindowService { } ); notificationWindow.webContents.on( - WebContentsChannel.DevtoolsOpened, + WebContentsChannel.devtoolsOpened, () => { notificationWindow.webContents.closeDevTools(); } @@ -460,7 +470,7 @@ export class NotifyWindowService { } await Promise.all( - aryNotificationPos.map(async index => { + aryNotificationPos.map(async (index) => { await self.moveNotificationAnimation(index); }) ); diff --git a/projects/notify-window/src/public-api.ts b/projects/notify-window/src/public-api.ts index 5df9eb0..e87868b 100644 --- a/projects/notify-window/src/public-api.ts +++ b/projects/notify-window/src/public-api.ts @@ -2,4 +2,12 @@ * Public API Surface of notification */ +export * from './lib/models/notify-window'; +export * from './lib/models/notify-window-options'; + +export * from './lib/services/notify-window.service'; + export * from './lib/types/channel.type'; +export * from './lib/types/event.type'; + +export * from './lib/utils/animation-queue'; diff --git a/projects/updater-window/package.json b/projects/updater-window/package.json index dc55052..7bbf567 100644 --- a/projects/updater-window/package.json +++ b/projects/updater-window/package.json @@ -2,14 +2,14 @@ "name": "@ucap/electron-updater-window", "version": "0.0.1", "publishConfig": { - "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, "scripts": {}, - "dependencies": { + "peerDependencies": { "@ucap/electron-core": "~0.0.1", - "electron": "^8.0.0", - "electron-log": "^4.1.0", - "fs-extra": "^8.1.0", + "electron": "^9.0.3", + "electron-log": "^4.2.1", + "fs-extra": "^9.0.1", "rxjs": "^6.5.4" }, "devDependencies": {} diff --git a/scripts/build.js b/scripts/build.js index 99edb7c..85cb081 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -19,6 +19,7 @@ async function buildForProduction(args) { const distPath = path.join(projectPath, ucapPackageJson.dest); const docPath = path.join(projectPath, ucapPackageJson.docDest); + const packPath = path.join(rootPath, 'pack'); const webpackConfig = (overrideConfig, compilerOptions) => { const commonConfig = { @@ -150,7 +151,7 @@ async function buildForProduction(args) { resolve(); } ); - }).catch(reason => { + }).catch((reason) => { reject(reason); }); @@ -172,7 +173,7 @@ async function buildForProduction(args) { resolve(); } ); - }).catch(reason => { + }).catch((reason) => { reject(reason); }); @@ -211,7 +212,7 @@ async function buildForProduction(args) { resolve(); } ); - }).catch(reason => { + }).catch((reason) => { reject(reason); }); @@ -250,7 +251,7 @@ async function buildForProduction(args) { resolve(); } ); - }).catch(reason => { + }).catch((reason) => { reject(reason); }); @@ -288,31 +289,28 @@ async function buildForProduction(args) { const installPackage = () => { return new Promise((resolve, reject) => { console.log(`${projectName}: installation for local started`); - process.chdir(path.join(distPath)); - execSync(`npm pack`, { stdio: 'inherit' }); - process.chdir(path.join(rootPath)); + const projectVersion = require(path.join(distPath, 'package.json')) .version; - execSync( - `npm install -D ${path.join( - distPath, - `ucap-electron-${projectName}-${projectVersion}.tgz` - )}`, + const packFileName = `ucap-electron-${projectName}-${projectVersion}.tgz`; + + process.chdir(path.join(distPath)); + execSync(`npm pack`, { stdio: 'inherit' }); + + fse.moveSync( + path.join(distPath, packFileName), + path.join(packPath, packFileName), { - stdio: 'inherit' + overwrite: true } ); - execSync( - `rimraf ${path.join( - distPath, - `ucap-electron-${projectName}-${projectVersion}.tgz` - )}`, - { - stdio: 'inherit' - } - ); + process.chdir(path.join(rootPath)); + + execSync(`npm install -D ${path.join(packPath, packFileName)}`, { + stdio: 'inherit' + }); console.log(`${projectName}: installation for local complete`); resolve();