From b39312afb88e2c837ce9e5a32c9289065353d717 Mon Sep 17 00:00:00 2001 From: richard-loafle <44828666+richard-loafle@users.noreply.github.com> Date: Fri, 27 Mar 2020 17:39:01 +0900 Subject: [PATCH] project initialized --- .editorconfig | 13 + .gitignore | 46 + .prettierrc | 5 + .vscode/extensions.json | 11 + .vscode/launch.json | 7 + .vscode/settings.json | 14 + .vscode/tasks.json | 15 + README.md | 27 + angular.json | 1368 ++ package-lock.json | 16313 ++++++++++++++++ package.json | 223 + projects/api-common/README.md | 25 + projects/api-common/karma.conf.js | 32 + projects/api-common/ng-package.json | 11 + projects/api-common/package.json | 16 + .../api-common/src/lib/common-api.module.ts | 24 + projects/api-common/src/lib/config/token.ts | 5 + .../lib/services/common-api.service.spec.ts | 12 + .../src/lib/services/common-api.service.ts | 24 + projects/api-common/src/public-api.ts | 7 + projects/api-common/src/test.ts | 26 + projects/api-common/tsconfig.lib.json | 23 + projects/api-common/tsconfig.lib.prod.json | 6 + projects/api-common/tsconfig.spec.json | 17 + projects/api-common/tslint.json | 17 + projects/api-external/README.md | 24 + projects/api-external/karma.conf.js | 32 + projects/api-external/ng-package.json | 11 + projects/api-external/package.json | 16 + projects/api-external/src/lib/config/token.ts | 5 + .../src/lib/external-api.module.ts | 24 + .../lib/services/external-api.service.spec.ts | 12 + .../src/lib/services/external-api.service.ts | 24 + projects/api-external/src/public-api.ts | 7 + projects/api-external/src/test.ts | 26 + projects/api-external/tsconfig.lib.json | 23 + projects/api-external/tsconfig.lib.prod.json | 6 + projects/api-external/tsconfig.spec.json | 17 + projects/api-external/tslint.json | 17 + projects/api-message/README.md | 24 + projects/api-message/karma.conf.js | 32 + projects/api-message/ng-package.json | 11 + projects/api-message/package.json | 16 + projects/api-message/src/lib/config/token.ts | 5 + .../api-message/src/lib/message-api.module.ts | 24 + .../lib/services/message-api.service.spec.ts | 12 + .../src/lib/services/message-api.service.ts | 24 + projects/api-message/src/public-api.ts | 7 + projects/api-message/src/test.ts | 26 + projects/api-message/tsconfig.lib.json | 23 + projects/api-message/tsconfig.lib.prod.json | 6 + projects/api-message/tsconfig.spec.json | 17 + projects/api-message/tslint.json | 17 + projects/api-prompt/README.md | 24 + projects/api-prompt/karma.conf.js | 32 + projects/api-prompt/ng-package.json | 11 + projects/api-prompt/package.json | 16 + projects/api-prompt/src/lib/config/token.ts | 5 + .../api-prompt/src/lib/prompt-api.module.ts | 25 + .../src/lib/services/call.service.spec.ts | 12 + .../src/lib/services/call.service.ts | 21 + .../src/lib/services/conference.service.ts | 17 + projects/api-prompt/src/public-api.ts | 8 + projects/api-prompt/src/test.ts | 26 + projects/api-prompt/tsconfig.lib.json | 23 + projects/api-prompt/tsconfig.lib.prod.json | 6 + projects/api-prompt/tsconfig.spec.json | 17 + projects/api-prompt/tslint.json | 17 + projects/api-public/README.md | 24 + projects/api-public/karma.conf.js | 32 + projects/api-public/ng-package.json | 11 + projects/api-public/package.json | 16 + projects/api-public/src/lib/config/token.ts | 5 + .../api-public/src/lib/public-api.module.ts | 24 + .../lib/services/public-api.service.spec.ts | 12 + .../src/lib/services/public-api.service.ts | 24 + projects/api-public/src/public-api.ts | 7 + projects/api-public/src/test.ts | 26 + projects/api-public/tsconfig.lib.json | 23 + projects/api-public/tsconfig.lib.prod.json | 6 + projects/api-public/tsconfig.spec.json | 17 + projects/api-public/tslint.json | 17 + projects/core/README.md | 25 + projects/core/karma.conf.js | 32 + projects/core/ng-package.json | 10 + projects/core/package.json | 14 + projects/core/src/lib/config/token.ts | 5 + projects/core/src/lib/utils/sticker.util.ts | 172 + projects/core/src/lib/utils/string.util.ts | 16 + projects/core/src/lib/utils/window.util.ts | 17 + projects/core/src/public-api.ts | 9 + projects/core/src/test.ts | 26 + projects/core/tsconfig.lib.json | 23 + projects/core/tsconfig.lib.prod.json | 6 + projects/core/tsconfig.spec.json | 17 + projects/core/tslint.json | 7 + projects/i18n/README.md | 24 + projects/i18n/karma.conf.js | 32 + projects/i18n/ng-package.json | 11 + projects/i18n/package.json | 13 + projects/i18n/src/lib/config/module-config.ts | 4 + projects/i18n/src/lib/config/token.ts | 3 + .../i18n/src/lib/directives/i18n.directive.ts | 0 projects/i18n/src/lib/i18n.module.ts | 39 + projects/i18n/src/lib/pipes/i18n.pipe.ts | 120 + .../i18n/src/lib/services/i18n.service.ts | 250 + projects/i18n/src/lib/types/i18next.event.ts | 9 + projects/i18n/src/lib/types/token.ts | 5 + projects/i18n/src/public-api.ts | 14 + projects/i18n/src/test.ts | 26 + projects/i18n/tsconfig.lib.json | 23 + projects/i18n/tsconfig.lib.prod.json | 6 + projects/i18n/tsconfig.spec.json | 17 + projects/i18n/tslint.json | 17 + projects/native-browser/README.md | 24 + projects/native-browser/karma.conf.js | 32 + projects/native-browser/ng-package.json | 11 + projects/native-browser/package.json | 16 + .../services/browser-native.service.spec.ts | 12 + .../lib/services/browser-native.service.ts | 16 + projects/native-browser/src/public-api.ts | 5 + projects/native-browser/src/test.ts | 26 + projects/native-browser/tsconfig.lib.json | 23 + .../native-browser/tsconfig.lib.prod.json | 6 + projects/native-browser/tsconfig.spec.json | 17 + projects/native-browser/tslint.json | 17 + projects/native/README.md | 24 + projects/native/karma.conf.js | 32 + projects/native/ng-package.json | 7 + projects/native/package.json | 14 + projects/native/src/lib/types/token.ts | 7 + projects/native/src/public-api.ts | 5 + projects/native/src/test.ts | 26 + projects/native/tsconfig.lib.json | 23 + projects/native/tsconfig.lib.prod.json | 6 + projects/native/tsconfig.spec.json | 17 + projects/native/tslint.json | 17 + projects/pi/README.md | 24 + projects/pi/karma.conf.js | 32 + projects/pi/ng-package.json | 11 + projects/pi/package.json | 17 + projects/pi/src/lib/config/token.ts | 5 + projects/pi/src/lib/pi.module.ts | 24 + .../pi/src/lib/services/pi.service.spec.ts | 12 + projects/pi/src/lib/services/pi.service.ts | 21 + projects/pi/src/public-api.ts | 7 + projects/pi/src/test.ts | 26 + projects/pi/tsconfig.lib.json | 23 + projects/pi/tsconfig.lib.prod.json | 6 + projects/pi/tsconfig.spec.json | 17 + projects/pi/tslint.json | 17 + projects/protocol-authentication/README.md | 24 + .../protocol-authentication/karma.conf.js | 32 + .../protocol-authentication/ng-package.json | 11 + projects/protocol-authentication/package.json | 15 + .../src/lib/authentication-protocol.module.ts | 24 + .../src/lib/config/token.ts | 5 + .../authentication-protocol.service.spec.ts | 14 + .../authentication-protocol.service.ts | 14 + .../protocol-authentication/src/public-api.ts | 7 + projects/protocol-authentication/src/test.ts | 26 + .../protocol-authentication/tsconfig.lib.json | 23 + .../tsconfig.lib.prod.json | 6 + .../tsconfig.spec.json | 17 + projects/protocol-authentication/tslint.json | 17 + projects/protocol-buddy/README.md | 24 + projects/protocol-buddy/karma.conf.js | 32 + projects/protocol-buddy/ng-package.json | 11 + projects/protocol-buddy/package.json | 15 + .../src/lib/buddy-protocol.module.ts | 24 + .../protocol-buddy/src/lib/config/token.ts | 5 + .../services/buddy-protocol.service.spec.ts | 12 + .../lib/services/buddy-protocol.service.ts | 14 + projects/protocol-buddy/src/public-api.ts | 7 + projects/protocol-buddy/src/test.ts | 26 + projects/protocol-buddy/tsconfig.lib.json | 23 + .../protocol-buddy/tsconfig.lib.prod.json | 6 + projects/protocol-buddy/tsconfig.spec.json | 17 + projects/protocol-buddy/tslint.json | 17 + projects/protocol-event/README.md | 24 + projects/protocol-event/karma.conf.js | 32 + projects/protocol-event/ng-package.json | 11 + projects/protocol-event/package.json | 15 + .../protocol-event/src/lib/config/token.ts | 5 + .../src/lib/event-protocol.module.ts | 24 + .../services/event-protocol.service.spec.ts | 12 + .../lib/services/event-protocol.service.ts | 14 + projects/protocol-event/src/public-api.ts | 7 + projects/protocol-event/src/test.ts | 26 + projects/protocol-event/tsconfig.lib.json | 23 + .../protocol-event/tsconfig.lib.prod.json | 6 + projects/protocol-event/tsconfig.spec.json | 17 + projects/protocol-event/tslint.json | 17 + projects/protocol-file/README.md | 24 + projects/protocol-file/karma.conf.js | 32 + projects/protocol-file/ng-package.json | 11 + projects/protocol-file/package.json | 15 + .../protocol-file/src/lib/config/token.ts | 5 + .../src/lib/file-protocol.module.ts | 24 + .../services/file-protocol.service.spec.ts | 12 + .../src/lib/services/file-protocol.service.ts | 14 + projects/protocol-file/src/public-api.ts | 7 + projects/protocol-file/src/test.ts | 26 + projects/protocol-file/tsconfig.lib.json | 23 + projects/protocol-file/tsconfig.lib.prod.json | 6 + projects/protocol-file/tsconfig.spec.json | 17 + projects/protocol-file/tslint.json | 17 + projects/protocol-group/README.md | 24 + projects/protocol-group/karma.conf.js | 32 + projects/protocol-group/ng-package.json | 11 + projects/protocol-group/package.json | 15 + .../protocol-group/src/lib/config/token.ts | 5 + .../src/lib/group-protocol.module.ts | 24 + .../services/group-protocol.service.spec.ts | 12 + .../lib/services/group-protocol.service.ts | 14 + projects/protocol-group/src/public-api.ts | 7 + projects/protocol-group/src/test.ts | 26 + projects/protocol-group/tsconfig.lib.json | 23 + .../protocol-group/tsconfig.lib.prod.json | 6 + projects/protocol-group/tsconfig.spec.json | 17 + projects/protocol-group/tslint.json | 17 + projects/protocol-info/README.md | 24 + projects/protocol-info/karma.conf.js | 32 + projects/protocol-info/ng-package.json | 11 + projects/protocol-info/package.json | 15 + .../protocol-info/src/lib/config/token.ts | 5 + .../src/lib/info-protocol.module.ts | 24 + .../services/info-protocol.service.spec.ts | 12 + .../src/lib/services/info-protocol.service.ts | 14 + projects/protocol-info/src/public-api.ts | 7 + projects/protocol-info/src/test.ts | 26 + projects/protocol-info/tsconfig.lib.json | 23 + projects/protocol-info/tsconfig.lib.prod.json | 6 + projects/protocol-info/tsconfig.spec.json | 17 + projects/protocol-info/tslint.json | 17 + projects/protocol-inner/README.md | 24 + projects/protocol-inner/karma.conf.js | 32 + projects/protocol-inner/ng-package.json | 11 + projects/protocol-inner/package.json | 15 + .../protocol-inner/src/lib/config/token.ts | 5 + .../src/lib/inner-protocol.module.ts | 24 + .../services/inner-protocol.service.spec.ts | 12 + .../lib/services/inner-protocol.service.ts | 14 + projects/protocol-inner/src/public-api.ts | 7 + projects/protocol-inner/src/test.ts | 26 + projects/protocol-inner/tsconfig.lib.json | 23 + .../protocol-inner/tsconfig.lib.prod.json | 6 + projects/protocol-inner/tsconfig.spec.json | 17 + projects/protocol-inner/tslint.json | 17 + projects/protocol-option/README.md | 24 + projects/protocol-option/karma.conf.js | 32 + projects/protocol-option/ng-package.json | 11 + projects/protocol-option/package.json | 15 + .../protocol-option/src/lib/config/token.ts | 5 + .../src/lib/option-protocol.module.ts | 24 + .../services/option-protocol.service.spec.ts | 14 + .../lib/services/option-protocol.service.ts | 14 + projects/protocol-option/src/public-api.ts | 7 + projects/protocol-option/src/test.ts | 26 + projects/protocol-option/tsconfig.lib.json | 23 + .../protocol-option/tsconfig.lib.prod.json | 6 + projects/protocol-option/tsconfig.spec.json | 17 + projects/protocol-option/tslint.json | 17 + projects/protocol-ping/README.md | 24 + projects/protocol-ping/karma.conf.js | 32 + projects/protocol-ping/ng-package.json | 11 + projects/protocol-ping/package.json | 15 + .../protocol-ping/src/lib/config/token.ts | 5 + .../src/lib/ping-protocol.module.ts | 24 + .../services/ping-protocol.service.spec.ts | 12 + .../src/lib/services/ping-protocol.service.ts | 14 + projects/protocol-ping/src/public-api.ts | 7 + projects/protocol-ping/src/test.ts | 26 + projects/protocol-ping/tsconfig.lib.json | 23 + projects/protocol-ping/tsconfig.lib.prod.json | 6 + projects/protocol-ping/tsconfig.spec.json | 17 + projects/protocol-ping/tslint.json | 17 + projects/protocol-query/README.md | 24 + projects/protocol-query/karma.conf.js | 32 + projects/protocol-query/ng-package.json | 11 + projects/protocol-query/package.json | 15 + .../protocol-query/src/lib/config/token.ts | 5 + .../src/lib/query-protocol.module.ts | 24 + .../services/query-protocol.service.spec.ts | 12 + .../lib/services/query-protocol.service.ts | 14 + projects/protocol-query/src/public-api.ts | 7 + projects/protocol-query/src/test.ts | 26 + projects/protocol-query/tsconfig.lib.json | 23 + .../protocol-query/tsconfig.lib.prod.json | 6 + projects/protocol-query/tsconfig.spec.json | 17 + projects/protocol-query/tslint.json | 17 + projects/protocol-room/README.md | 24 + projects/protocol-room/karma.conf.js | 32 + projects/protocol-room/ng-package.json | 11 + projects/protocol-room/package.json | 15 + .../protocol-room/src/lib/config/token.ts | 5 + .../src/lib/room-protocol.module.ts | 24 + .../services/room-protocol.service.spec.ts | 12 + .../src/lib/services/room-protocol.service.ts | 14 + projects/protocol-room/src/public-api.ts | 7 + projects/protocol-room/src/test.ts | 26 + projects/protocol-room/tsconfig.lib.json | 23 + projects/protocol-room/tsconfig.lib.prod.json | 6 + projects/protocol-room/tsconfig.spec.json | 17 + projects/protocol-room/tslint.json | 17 + projects/protocol-service/README.md | 24 + projects/protocol-service/karma.conf.js | 32 + projects/protocol-service/ng-package.json | 11 + projects/protocol-service/package.json | 15 + .../protocol-service/src/lib/config/token.ts | 5 + .../src/lib/service-protocol.module.ts | 24 + .../services/service-protocol.service.spec.ts | 14 + .../lib/services/service-protocol.service.ts | 14 + projects/protocol-service/src/public-api.ts | 7 + projects/protocol-service/src/test.ts | 26 + projects/protocol-service/tsconfig.lib.json | 23 + .../protocol-service/tsconfig.lib.prod.json | 6 + projects/protocol-service/tsconfig.spec.json | 17 + projects/protocol-service/tslint.json | 17 + projects/protocol-status/README.md | 24 + projects/protocol-status/karma.conf.js | 32 + projects/protocol-status/ng-package.json | 11 + projects/protocol-status/package.json | 15 + .../protocol-status/src/lib/config/token.ts | 5 + .../services/status-protocol.service.spec.ts | 14 + .../lib/services/status-protocol.service.ts | 14 + .../src/lib/status-protocol.module.ts | 24 + projects/protocol-status/src/public-api.ts | 7 + projects/protocol-status/src/test.ts | 26 + projects/protocol-status/tsconfig.lib.json | 23 + .../protocol-status/tsconfig.lib.prod.json | 6 + projects/protocol-status/tsconfig.spec.json | 17 + projects/protocol-status/tslint.json | 17 + projects/protocol-sync/README.md | 24 + projects/protocol-sync/karma.conf.js | 32 + projects/protocol-sync/ng-package.json | 11 + projects/protocol-sync/package.json | 15 + .../protocol-sync/src/lib/config/token.ts | 5 + .../services/sync-protocol.service.spec.ts | 12 + .../src/lib/services/sync-protocol.service.ts | 14 + .../src/lib/sync-protocol.module.ts | 24 + projects/protocol-sync/src/public-api.ts | 7 + projects/protocol-sync/src/test.ts | 26 + projects/protocol-sync/tsconfig.lib.json | 23 + projects/protocol-sync/tsconfig.lib.prod.json | 6 + projects/protocol-sync/tsconfig.spec.json | 17 + projects/protocol-sync/tslint.json | 17 + projects/protocol-umg/README.md | 24 + projects/protocol-umg/karma.conf.js | 32 + projects/protocol-umg/ng-package.json | 11 + projects/protocol-umg/package.json | 15 + projects/protocol-umg/src/lib/config/token.ts | 5 + .../lib/services/umg-protocol.service.spec.ts | 12 + .../src/lib/services/umg-protocol.service.ts | 14 + .../src/lib/umg-protocol.module.ts | 24 + projects/protocol-umg/src/public-api.ts | 7 + projects/protocol-umg/src/test.ts | 26 + projects/protocol-umg/tsconfig.lib.json | 23 + projects/protocol-umg/tsconfig.lib.prod.json | 6 + projects/protocol-umg/tsconfig.spec.json | 17 + projects/protocol-umg/tslint.json | 17 + projects/protocol/README.md | 24 + projects/protocol/karma.conf.js | 32 + projects/protocol/ng-package.json | 10 + projects/protocol/package.json | 14 + projects/protocol/src/lib/config/token.ts | 5 + projects/protocol/src/lib/protocol.module.ts | 24 + .../src/lib/services/protocol.service.spec.ts | 12 + .../src/lib/services/protocol.service.ts | 17 + projects/protocol/src/public-api.ts | 7 + projects/protocol/src/test.ts | 26 + projects/protocol/tsconfig.lib.json | 23 + projects/protocol/tsconfig.lib.prod.json | 6 + projects/protocol/tsconfig.spec.json | 17 + projects/protocol/tslint.json | 17 + projects/store-authentication/README.md | 24 + projects/store-authentication/karma.conf.js | 32 + projects/store-authentication/ng-package.json | 17 + projects/store-authentication/package.json | 23 + .../src/lib/authentication-store.module.ts | 31 + .../src/lib/config/module-config.ts | 4 + .../src/lib/config/token.ts | 5 + .../src/lib/store/authorization/actions.ts | 25 + .../src/lib/store/authorization/effects.ts | 37 + .../src/lib/store/authorization/reducers.ts | 14 + .../src/lib/store/authorization/state.ts | 17 + .../src/lib/store/common/actions.ts | 3 + .../src/lib/store/common/effects.ts | 8 + .../src/lib/store/common/reducers.ts | 5 + .../src/lib/store/common/state.ts | 10 + .../src/lib/store/effects.ts | 11 + .../src/lib/store/login/actions.ts | 84 + .../src/lib/store/login/effects.ts | 79 + .../src/lib/store/login/reducers.ts | 20 + .../src/lib/store/login/state.ts | 17 + .../src/lib/store/reducers.ts | 13 + .../src/lib/store/state.ts | 27 + .../store-authentication/src/public-api.ts | 15 + projects/store-authentication/src/test.ts | 26 + .../store-authentication/tsconfig.lib.json | 23 + .../tsconfig.lib.prod.json | 6 + .../store-authentication/tsconfig.spec.json | 17 + projects/store-authentication/tslint.json | 17 + projects/store-chat/README.md | 24 + projects/store-chat/karma.conf.js | 32 + projects/store-chat/ng-package.json | 20 + projects/store-chat/package.json | 19 + .../store-chat/src/lib/chat-store.module.ts | 31 + .../src/lib/config/module-config.ts | 4 + projects/store-chat/src/lib/config/token.ts | 5 + .../src/lib/store/chatting/actions.ts | 86 + .../src/lib/store/chatting/effects.ts | 37 + .../src/lib/store/chatting/reducers.ts | 5 + .../src/lib/store/chatting/state.ts | 177 + .../src/lib/store/common/actions.ts | 3 + .../src/lib/store/common/effects.ts | 8 + .../src/lib/store/common/reducers.ts | 5 + .../store-chat/src/lib/store/common/state.ts | 10 + projects/store-chat/src/lib/store/effects.ts | 11 + projects/store-chat/src/lib/store/reducers.ts | 13 + .../store-chat/src/lib/store/room/actions.ts | 328 + .../store-chat/src/lib/store/room/effects.ts | 314 + .../store-chat/src/lib/store/room/reducers.ts | 129 + .../store-chat/src/lib/store/room/state.ts | 104 + projects/store-chat/src/lib/store/state.ts | 27 + projects/store-chat/src/public-api.ts | 15 + projects/store-chat/src/test.ts | 26 + projects/store-chat/tsconfig.lib.json | 23 + projects/store-chat/tsconfig.lib.prod.json | 6 + projects/store-chat/tsconfig.spec.json | 17 + projects/store-chat/tslint.json | 17 + projects/store-group/README.md | 24 + projects/store-group/karma.conf.js | 32 + projects/store-group/ng-package.json | 23 + projects/store-group/package.json | 21 + .../src/lib/config/module-config.ts | 6 + projects/store-group/src/lib/config/token.ts | 5 + .../store-group/src/lib/group-store.module.ts | 31 + .../src/lib/store/buddy/actions.ts | 121 + .../src/lib/store/buddy/effects.ts | 275 + .../src/lib/store/buddy/reducers.ts | 42 + .../store-group/src/lib/store/buddy/state.ts | 44 + .../src/lib/store/common/actions.ts | 3 + .../src/lib/store/common/effects.ts | 8 + .../src/lib/store/common/reducers.ts | 5 + .../store-group/src/lib/store/common/state.ts | 10 + projects/store-group/src/lib/store/effects.ts | 7 + .../src/lib/store/group/actions.ts | 155 + .../src/lib/store/group/effects.ts | 331 + .../src/lib/store/group/reducers.ts | 48 + .../store-group/src/lib/store/group/state.ts | 41 + .../store-group/src/lib/store/reducers.ts | 13 + projects/store-group/src/lib/store/state.ts | 27 + projects/store-group/src/public-api.ts | 15 + projects/store-group/src/test.ts | 26 + projects/store-group/tsconfig.lib.json | 23 + projects/store-group/tsconfig.lib.prod.json | 6 + projects/store-group/tsconfig.spec.json | 17 + projects/store-group/tslint.json | 17 + projects/store-organization/README.md | 24 + projects/store-organization/karma.conf.js | 32 + projects/store-organization/ng-package.json | 12 + projects/store-organization/package.json | 15 + .../src/lib/config/module-config.ts | 4 + .../src/lib/config/token.ts | 5 + .../src/lib/organization-store.module.ts | 31 + .../src/lib/store/common/actions.ts | 3 + .../src/lib/store/common/effects.ts | 8 + .../src/lib/store/common/reducers.ts | 5 + .../src/lib/store/common/state.ts | 10 + .../src/lib/store/department/actions.ts | 52 + .../src/lib/store/department/effects.ts | 72 + .../src/lib/store/department/reducers.ts | 22 + .../src/lib/store/department/state.ts | 26 + .../src/lib/store/effects.ts | 6 + .../src/lib/store/reducers.ts | 11 + .../store-organization/src/lib/store/state.ts | 21 + projects/store-organization/src/public-api.ts | 14 + projects/store-organization/src/test.ts | 26 + projects/store-organization/tsconfig.lib.json | 23 + .../store-organization/tsconfig.lib.prod.json | 6 + .../store-organization/tsconfig.spec.json | 17 + projects/store-organization/tslint.json | 17 + projects/ui-authentication/README.md | 25 + projects/ui-authentication/karma.conf.js | 32 + projects/ui-authentication/ng-package.json | 12 + projects/ui-authentication/package.json | 17 + .../src/lib/authentication-ui.module.ts | 73 + .../components/change-password.component.html | 155 + .../components/change-password.component.scss | 65 + .../change-password.component.spec.ts | 24 + .../components/change-password.component.ts | 154 + .../src/lib/components/login.component.html | 158 + .../src/lib/components/login.component.scss | 222 + .../lib/components/login.component.spec.ts | 24 + .../src/lib/components/login.component.ts | 127 + .../src/lib/config/module-config.ts | 4 + .../ui-authentication/src/lib/config/token.ts | 5 + projects/ui-authentication/src/public-api.ts | 7 + projects/ui-authentication/src/test.ts | 26 + projects/ui-authentication/tsconfig.lib.json | 23 + .../ui-authentication/tsconfig.lib.prod.json | 6 + projects/ui-authentication/tsconfig.spec.json | 17 + projects/ui-authentication/tslint.json | 12 + projects/ui-organization/README.md | 24 + projects/ui-organization/karma.conf.js | 32 + projects/ui-organization/ng-package.json | 10 + projects/ui-organization/package.json | 16 + .../src/lib/config/module-config.ts | 4 + .../ui-organization/src/lib/config/token.ts | 5 + .../src/lib/organization-ui.module.ts | 37 + projects/ui-organization/src/public-api.ts | 7 + projects/ui-organization/src/test.ts | 26 + projects/ui-organization/tsconfig.lib.json | 23 + .../ui-organization/tsconfig.lib.prod.json | 6 + projects/ui-organization/tsconfig.spec.json | 17 + projects/ui-organization/tslint.json | 17 + projects/ui-skin-default/README.md | 24 + projects/ui-skin-default/karma.conf.js | 32 + projects/ui-skin-default/ng-package.json | 8 + projects/ui-skin-default/package.json | 8 + .../ui-skin-default/scss-bundle.config.json | 11 + .../src/assets/scss/_skin.scss | 22 + .../src/assets/scss/file-icon/_fonts.scss | 27 + .../src/assets/scss/file-icon/_functions.scss | 14 + .../scss/file-icon/_generator-colors.scss | 5 + .../scss/file-icon/_generator-vars.scss | 41 + .../src/assets/scss/file-icon/_hardcoded.scss | 150 + .../src/assets/scss/file-icon/_icons.scss | 248 + .../src/assets/scss/file-icon/_loop.scss | 78 + .../src/assets/scss/file-icon/_mixin.scss | 43 + .../assets/scss/partials/_breakpoints.scss | 37 + .../src/assets/scss/partials/_dialogs.scss | 72 + .../src/assets/scss/partials/_forms.scss | 191 + .../src/assets/scss/partials/_general.scss | 112 + .../src/assets/scss/partials/_helpers.scss | 236 + .../src/assets/scss/partials/_icons.scss | 99 + .../src/assets/scss/partials/_list-item.scss | 127 + .../src/assets/scss/partials/_main-frame.scss | 50 + .../src/assets/scss/partials/_normalize.scss | 450 + .../src/assets/scss/partials/_paginator.scss | 45 + .../src/assets/scss/partials/_presence.scss | 72 + .../src/assets/scss/partials/_scrollbars.scss | 29 + .../assets/scss/partials/_search-frame.scss | 139 + projects/ui-skin-default/src/public-api.ts | 5 + projects/ui-skin-default/src/test.ts | 26 + projects/ui-skin-default/tsconfig.lib.json | 23 + .../ui-skin-default/tsconfig.lib.prod.json | 6 + projects/ui-skin-default/tsconfig.spec.json | 17 + projects/ui-skin-default/tslint.json | 17 + projects/ui/README.md | 24 + projects/ui/karma.conf.js | 32 + projects/ui/ng-package.json | 20 + projects/ui/package.json | 23 + projects/ui/src/lib/animations/index.ts | 624 + .../file-upload-queue.component.html | 44 + .../file-upload-queue.component.scss | 55 + .../components/file-upload-queue.component.ts | 113 + .../lib/components/file-viewer.component.html | 40 + .../lib/components/file-viewer.component.scss | 4 + .../components/file-viewer.component.spec.ts | 27 + .../lib/components/file-viewer.component.ts | 59 + .../file-viewer/binary-viewer.component.html | 109 + .../file-viewer/binary-viewer.component.scss | 64 + .../binary-viewer.component.spec.ts | 27 + .../file-viewer/binary-viewer.component.ts | 39 + .../document-viewer.component.html | 29 + .../document-viewer.component.scss | 13 + .../document-viewer.component.spec.ts | 27 + .../file-viewer/document-viewer.component.ts | 39 + .../file-viewer/image-viewer.component.html | 179 + .../file-viewer/image-viewer.component.scss | 70 + .../image-viewer.component.spec.ts | 27 + .../file-viewer/image-viewer.component.ts | 144 + .../file-viewer/sound-viewer.component.html | 144 + .../file-viewer/sound-viewer.component.scss | 160 + .../sound-viewer.component.spec.ts | 27 + .../file-viewer/sound-viewer.component.ts | 101 + .../file-viewer/video-viewer.component.html | 169 + .../file-viewer/video-viewer.component.scss | 97 + .../video-viewer.component.spec.ts | 27 + .../file-viewer/video-viewer.component.ts | 116 + .../float-action-button.component.html | 23 + .../float-action-button.component.scss | 35 + .../float-action-button.component.spec.ts | 27 + .../float-action-button.component.ts | 64 + .../inline-edit-input.component.html | 25 + .../inline-edit-input.component.scss | 7 + .../inline-edit-input.component.spec.ts | 25 + .../components/inline-edit-input.component.ts | 43 + .../lib/components/pick-date.component.html | 10 + .../lib/components/pick-date.component.scss | 4 + .../components/pick-date.component.spec.ts | 27 + .../src/lib/components/pick-date.component.ts | 70 + .../lib/components/pick-time.component.html | 25 + .../lib/components/pick-time.component.scss | 18 + .../components/pick-time.component.spec.ts | 27 + .../src/lib/components/pick-time.component.ts | 50 + .../components/split-button.component.html | 22 + .../components/split-button.component.scss | 5 + .../components/split-button.component.spec.ts | 27 + .../lib/components/split-button.component.ts | 68 + .../lib/components/step-input.component.html | 21 + .../lib/components/step-input.component.scss | 56 + .../components/step-input.component.spec.ts | 27 + .../lib/components/step-input.component.ts | 191 + .../lib/components/title-bar.component.html | 180 + .../lib/components/title-bar.component.scss | 157 + .../components/title-bar.component.spec.ts | 27 + .../src/lib/components/title-bar.component.ts | 81 + projects/ui/src/lib/config/module-config.ts | 4 + projects/ui/src/lib/config/token.ts | 5 + .../virtual-scroll-tree-flat.data-source.ts | 133 + .../lib/dialogs/alert.dialog.component.html | 18 + .../lib/dialogs/alert.dialog.component.scss | 5 + .../dialogs/alert.dialog.component.spec.ts | 24 + .../src/lib/dialogs/alert.dialog.component.ts | 44 + .../lib/dialogs/confirm.dialog.component.html | 30 + .../lib/dialogs/confirm.dialog.component.scss | 18 + .../dialogs/confirm.dialog.component.spec.ts | 24 + .../lib/dialogs/confirm.dialog.component.ts | 51 + ...virtual-scroll-viewport-patch.directive.ts | 34 + .../directives/click-debounce.directive.ts | 41 + .../lib/directives/click-outside.directive.ts | 225 + .../directives/file-upload-for.directive.ts | 152 + .../ui/src/lib/directives/image.directive.ts | 93 + projects/ui/src/lib/pipes/bytes.pipe.ts | 20 + projects/ui/src/lib/pipes/date.pipe.ts | 133 + projects/ui/src/lib/pipes/empty.pipe.ts | 16 + projects/ui/src/lib/pipes/linefeed.pipe.ts | 20 + projects/ui/src/lib/pipes/linky.pipe.ts | 23 + .../ui/src/lib/pipes/phone-number.pipe.ts | 14 + projects/ui/src/lib/pipes/safe-html.pipe.ts | 12 + .../src/lib/pipes/seconds-to-minutes.pipe.ts | 10 + projects/ui/src/lib/services/date.service.ts | 268 + projects/ui/src/lib/types/file-viewer.type.ts | 7 + projects/ui/src/lib/ui.module.ts | 133 + projects/ui/src/lib/utils/html.util.ts | 37 + .../ui/src/lib/utils/phone-number.util.ts | 29 + projects/ui/src/public-api.ts | 48 + projects/ui/src/test.ts | 26 + projects/ui/tsconfig.lib.json | 23 + projects/ui/tsconfig.lib.prod.json | 6 + projects/ui/tsconfig.spec.json | 17 + projects/ui/tslint.json | 17 + projects/web-storage/README.md | 24 + projects/web-storage/karma.conf.js | 32 + projects/web-storage/ng-package.json | 10 + projects/web-storage/package.json | 14 + projects/web-storage/src/lib/config/token.ts | 5 + .../services/local-storage.service.spec.ts | 12 + .../src/lib/services/local-storage.service.ts | 12 + .../services/session-storage.service.spec.ts | 14 + .../lib/services/session-storage.service.ts | 11 + .../web-storage/src/lib/web-storage.module.ts | 25 + projects/web-storage/src/public-api.ts | 8 + projects/web-storage/src/test.ts | 26 + projects/web-storage/tsconfig.lib.json | 23 + projects/web-storage/tsconfig.lib.prod.json | 6 + projects/web-storage/tsconfig.spec.json | 17 + projects/web-storage/tslint.json | 17 + scripts/build.js | 125 + tsconfig.json | 33 + tslint.json | 79 + 664 files changed, 38721 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 README.md create mode 100644 angular.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 projects/api-common/README.md create mode 100644 projects/api-common/karma.conf.js create mode 100644 projects/api-common/ng-package.json create mode 100644 projects/api-common/package.json create mode 100644 projects/api-common/src/lib/common-api.module.ts create mode 100644 projects/api-common/src/lib/config/token.ts create mode 100644 projects/api-common/src/lib/services/common-api.service.spec.ts create mode 100644 projects/api-common/src/lib/services/common-api.service.ts create mode 100644 projects/api-common/src/public-api.ts create mode 100644 projects/api-common/src/test.ts create mode 100644 projects/api-common/tsconfig.lib.json create mode 100644 projects/api-common/tsconfig.lib.prod.json create mode 100644 projects/api-common/tsconfig.spec.json create mode 100644 projects/api-common/tslint.json create mode 100644 projects/api-external/README.md create mode 100644 projects/api-external/karma.conf.js create mode 100644 projects/api-external/ng-package.json create mode 100644 projects/api-external/package.json create mode 100644 projects/api-external/src/lib/config/token.ts create mode 100644 projects/api-external/src/lib/external-api.module.ts create mode 100644 projects/api-external/src/lib/services/external-api.service.spec.ts create mode 100644 projects/api-external/src/lib/services/external-api.service.ts create mode 100644 projects/api-external/src/public-api.ts create mode 100644 projects/api-external/src/test.ts create mode 100644 projects/api-external/tsconfig.lib.json create mode 100644 projects/api-external/tsconfig.lib.prod.json create mode 100644 projects/api-external/tsconfig.spec.json create mode 100644 projects/api-external/tslint.json create mode 100644 projects/api-message/README.md create mode 100644 projects/api-message/karma.conf.js create mode 100644 projects/api-message/ng-package.json create mode 100644 projects/api-message/package.json create mode 100644 projects/api-message/src/lib/config/token.ts create mode 100644 projects/api-message/src/lib/message-api.module.ts create mode 100644 projects/api-message/src/lib/services/message-api.service.spec.ts create mode 100644 projects/api-message/src/lib/services/message-api.service.ts create mode 100644 projects/api-message/src/public-api.ts create mode 100644 projects/api-message/src/test.ts create mode 100644 projects/api-message/tsconfig.lib.json create mode 100644 projects/api-message/tsconfig.lib.prod.json create mode 100644 projects/api-message/tsconfig.spec.json create mode 100644 projects/api-message/tslint.json create mode 100644 projects/api-prompt/README.md create mode 100644 projects/api-prompt/karma.conf.js create mode 100644 projects/api-prompt/ng-package.json create mode 100644 projects/api-prompt/package.json create mode 100644 projects/api-prompt/src/lib/config/token.ts create mode 100644 projects/api-prompt/src/lib/prompt-api.module.ts create mode 100644 projects/api-prompt/src/lib/services/call.service.spec.ts create mode 100644 projects/api-prompt/src/lib/services/call.service.ts create mode 100644 projects/api-prompt/src/lib/services/conference.service.ts create mode 100644 projects/api-prompt/src/public-api.ts create mode 100644 projects/api-prompt/src/test.ts create mode 100644 projects/api-prompt/tsconfig.lib.json create mode 100644 projects/api-prompt/tsconfig.lib.prod.json create mode 100644 projects/api-prompt/tsconfig.spec.json create mode 100644 projects/api-prompt/tslint.json create mode 100644 projects/api-public/README.md create mode 100644 projects/api-public/karma.conf.js create mode 100644 projects/api-public/ng-package.json create mode 100644 projects/api-public/package.json create mode 100644 projects/api-public/src/lib/config/token.ts create mode 100644 projects/api-public/src/lib/public-api.module.ts create mode 100644 projects/api-public/src/lib/services/public-api.service.spec.ts create mode 100644 projects/api-public/src/lib/services/public-api.service.ts create mode 100644 projects/api-public/src/public-api.ts create mode 100644 projects/api-public/src/test.ts create mode 100644 projects/api-public/tsconfig.lib.json create mode 100644 projects/api-public/tsconfig.lib.prod.json create mode 100644 projects/api-public/tsconfig.spec.json create mode 100644 projects/api-public/tslint.json create mode 100644 projects/core/README.md create mode 100644 projects/core/karma.conf.js create mode 100644 projects/core/ng-package.json create mode 100644 projects/core/package.json create mode 100644 projects/core/src/lib/config/token.ts create mode 100644 projects/core/src/lib/utils/sticker.util.ts create mode 100644 projects/core/src/lib/utils/string.util.ts create mode 100644 projects/core/src/lib/utils/window.util.ts create mode 100644 projects/core/src/public-api.ts create mode 100644 projects/core/src/test.ts create mode 100644 projects/core/tsconfig.lib.json create mode 100644 projects/core/tsconfig.lib.prod.json create mode 100644 projects/core/tsconfig.spec.json create mode 100644 projects/core/tslint.json create mode 100644 projects/i18n/README.md create mode 100644 projects/i18n/karma.conf.js create mode 100644 projects/i18n/ng-package.json create mode 100644 projects/i18n/package.json create mode 100644 projects/i18n/src/lib/config/module-config.ts create mode 100644 projects/i18n/src/lib/config/token.ts create mode 100644 projects/i18n/src/lib/directives/i18n.directive.ts create mode 100644 projects/i18n/src/lib/i18n.module.ts create mode 100644 projects/i18n/src/lib/pipes/i18n.pipe.ts create mode 100644 projects/i18n/src/lib/services/i18n.service.ts create mode 100644 projects/i18n/src/lib/types/i18next.event.ts create mode 100644 projects/i18n/src/lib/types/token.ts create mode 100644 projects/i18n/src/public-api.ts create mode 100644 projects/i18n/src/test.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/native-browser/README.md create mode 100644 projects/native-browser/karma.conf.js create mode 100644 projects/native-browser/ng-package.json create mode 100644 projects/native-browser/package.json create mode 100644 projects/native-browser/src/lib/services/browser-native.service.spec.ts create mode 100644 projects/native-browser/src/lib/services/browser-native.service.ts create mode 100644 projects/native-browser/src/public-api.ts create mode 100644 projects/native-browser/src/test.ts create mode 100644 projects/native-browser/tsconfig.lib.json create mode 100644 projects/native-browser/tsconfig.lib.prod.json create mode 100644 projects/native-browser/tsconfig.spec.json create mode 100644 projects/native-browser/tslint.json create mode 100644 projects/native/README.md create mode 100644 projects/native/karma.conf.js create mode 100644 projects/native/ng-package.json create mode 100644 projects/native/package.json create mode 100644 projects/native/src/lib/types/token.ts create mode 100644 projects/native/src/public-api.ts create mode 100644 projects/native/src/test.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/pi/README.md create mode 100644 projects/pi/karma.conf.js create mode 100644 projects/pi/ng-package.json create mode 100644 projects/pi/package.json create mode 100644 projects/pi/src/lib/config/token.ts create mode 100644 projects/pi/src/lib/pi.module.ts create mode 100644 projects/pi/src/lib/services/pi.service.spec.ts create mode 100644 projects/pi/src/lib/services/pi.service.ts create mode 100644 projects/pi/src/public-api.ts create mode 100644 projects/pi/src/test.ts create mode 100644 projects/pi/tsconfig.lib.json create mode 100644 projects/pi/tsconfig.lib.prod.json create mode 100644 projects/pi/tsconfig.spec.json create mode 100644 projects/pi/tslint.json create mode 100644 projects/protocol-authentication/README.md create mode 100644 projects/protocol-authentication/karma.conf.js create mode 100644 projects/protocol-authentication/ng-package.json create mode 100644 projects/protocol-authentication/package.json create mode 100644 projects/protocol-authentication/src/lib/authentication-protocol.module.ts create mode 100644 projects/protocol-authentication/src/lib/config/token.ts create mode 100644 projects/protocol-authentication/src/lib/services/authentication-protocol.service.spec.ts create mode 100644 projects/protocol-authentication/src/lib/services/authentication-protocol.service.ts create mode 100644 projects/protocol-authentication/src/public-api.ts create mode 100644 projects/protocol-authentication/src/test.ts create mode 100644 projects/protocol-authentication/tsconfig.lib.json create mode 100644 projects/protocol-authentication/tsconfig.lib.prod.json create mode 100644 projects/protocol-authentication/tsconfig.spec.json create mode 100644 projects/protocol-authentication/tslint.json create mode 100644 projects/protocol-buddy/README.md create mode 100644 projects/protocol-buddy/karma.conf.js create mode 100644 projects/protocol-buddy/ng-package.json create mode 100644 projects/protocol-buddy/package.json create mode 100644 projects/protocol-buddy/src/lib/buddy-protocol.module.ts create mode 100644 projects/protocol-buddy/src/lib/config/token.ts create mode 100644 projects/protocol-buddy/src/lib/services/buddy-protocol.service.spec.ts create mode 100644 projects/protocol-buddy/src/lib/services/buddy-protocol.service.ts create mode 100644 projects/protocol-buddy/src/public-api.ts create mode 100644 projects/protocol-buddy/src/test.ts create mode 100644 projects/protocol-buddy/tsconfig.lib.json create mode 100644 projects/protocol-buddy/tsconfig.lib.prod.json create mode 100644 projects/protocol-buddy/tsconfig.spec.json create mode 100644 projects/protocol-buddy/tslint.json create mode 100644 projects/protocol-event/README.md create mode 100644 projects/protocol-event/karma.conf.js create mode 100644 projects/protocol-event/ng-package.json create mode 100644 projects/protocol-event/package.json create mode 100644 projects/protocol-event/src/lib/config/token.ts create mode 100644 projects/protocol-event/src/lib/event-protocol.module.ts create mode 100644 projects/protocol-event/src/lib/services/event-protocol.service.spec.ts create mode 100644 projects/protocol-event/src/lib/services/event-protocol.service.ts create mode 100644 projects/protocol-event/src/public-api.ts create mode 100644 projects/protocol-event/src/test.ts create mode 100644 projects/protocol-event/tsconfig.lib.json create mode 100644 projects/protocol-event/tsconfig.lib.prod.json create mode 100644 projects/protocol-event/tsconfig.spec.json create mode 100644 projects/protocol-event/tslint.json create mode 100644 projects/protocol-file/README.md create mode 100644 projects/protocol-file/karma.conf.js create mode 100644 projects/protocol-file/ng-package.json create mode 100644 projects/protocol-file/package.json create mode 100644 projects/protocol-file/src/lib/config/token.ts create mode 100644 projects/protocol-file/src/lib/file-protocol.module.ts create mode 100644 projects/protocol-file/src/lib/services/file-protocol.service.spec.ts create mode 100644 projects/protocol-file/src/lib/services/file-protocol.service.ts create mode 100644 projects/protocol-file/src/public-api.ts create mode 100644 projects/protocol-file/src/test.ts create mode 100644 projects/protocol-file/tsconfig.lib.json create mode 100644 projects/protocol-file/tsconfig.lib.prod.json create mode 100644 projects/protocol-file/tsconfig.spec.json create mode 100644 projects/protocol-file/tslint.json create mode 100644 projects/protocol-group/README.md create mode 100644 projects/protocol-group/karma.conf.js create mode 100644 projects/protocol-group/ng-package.json create mode 100644 projects/protocol-group/package.json create mode 100644 projects/protocol-group/src/lib/config/token.ts create mode 100644 projects/protocol-group/src/lib/group-protocol.module.ts create mode 100644 projects/protocol-group/src/lib/services/group-protocol.service.spec.ts create mode 100644 projects/protocol-group/src/lib/services/group-protocol.service.ts create mode 100644 projects/protocol-group/src/public-api.ts create mode 100644 projects/protocol-group/src/test.ts create mode 100644 projects/protocol-group/tsconfig.lib.json create mode 100644 projects/protocol-group/tsconfig.lib.prod.json create mode 100644 projects/protocol-group/tsconfig.spec.json create mode 100644 projects/protocol-group/tslint.json create mode 100644 projects/protocol-info/README.md create mode 100644 projects/protocol-info/karma.conf.js create mode 100644 projects/protocol-info/ng-package.json create mode 100644 projects/protocol-info/package.json create mode 100644 projects/protocol-info/src/lib/config/token.ts create mode 100644 projects/protocol-info/src/lib/info-protocol.module.ts create mode 100644 projects/protocol-info/src/lib/services/info-protocol.service.spec.ts create mode 100644 projects/protocol-info/src/lib/services/info-protocol.service.ts create mode 100644 projects/protocol-info/src/public-api.ts create mode 100644 projects/protocol-info/src/test.ts create mode 100644 projects/protocol-info/tsconfig.lib.json create mode 100644 projects/protocol-info/tsconfig.lib.prod.json create mode 100644 projects/protocol-info/tsconfig.spec.json create mode 100644 projects/protocol-info/tslint.json create mode 100644 projects/protocol-inner/README.md create mode 100644 projects/protocol-inner/karma.conf.js create mode 100644 projects/protocol-inner/ng-package.json create mode 100644 projects/protocol-inner/package.json create mode 100644 projects/protocol-inner/src/lib/config/token.ts create mode 100644 projects/protocol-inner/src/lib/inner-protocol.module.ts create mode 100644 projects/protocol-inner/src/lib/services/inner-protocol.service.spec.ts create mode 100644 projects/protocol-inner/src/lib/services/inner-protocol.service.ts create mode 100644 projects/protocol-inner/src/public-api.ts create mode 100644 projects/protocol-inner/src/test.ts create mode 100644 projects/protocol-inner/tsconfig.lib.json create mode 100644 projects/protocol-inner/tsconfig.lib.prod.json create mode 100644 projects/protocol-inner/tsconfig.spec.json create mode 100644 projects/protocol-inner/tslint.json create mode 100644 projects/protocol-option/README.md create mode 100644 projects/protocol-option/karma.conf.js create mode 100644 projects/protocol-option/ng-package.json create mode 100644 projects/protocol-option/package.json create mode 100644 projects/protocol-option/src/lib/config/token.ts create mode 100644 projects/protocol-option/src/lib/option-protocol.module.ts create mode 100644 projects/protocol-option/src/lib/services/option-protocol.service.spec.ts create mode 100644 projects/protocol-option/src/lib/services/option-protocol.service.ts create mode 100644 projects/protocol-option/src/public-api.ts create mode 100644 projects/protocol-option/src/test.ts create mode 100644 projects/protocol-option/tsconfig.lib.json create mode 100644 projects/protocol-option/tsconfig.lib.prod.json create mode 100644 projects/protocol-option/tsconfig.spec.json create mode 100644 projects/protocol-option/tslint.json create mode 100644 projects/protocol-ping/README.md create mode 100644 projects/protocol-ping/karma.conf.js create mode 100644 projects/protocol-ping/ng-package.json create mode 100644 projects/protocol-ping/package.json create mode 100644 projects/protocol-ping/src/lib/config/token.ts create mode 100644 projects/protocol-ping/src/lib/ping-protocol.module.ts create mode 100644 projects/protocol-ping/src/lib/services/ping-protocol.service.spec.ts create mode 100644 projects/protocol-ping/src/lib/services/ping-protocol.service.ts create mode 100644 projects/protocol-ping/src/public-api.ts create mode 100644 projects/protocol-ping/src/test.ts create mode 100644 projects/protocol-ping/tsconfig.lib.json create mode 100644 projects/protocol-ping/tsconfig.lib.prod.json create mode 100644 projects/protocol-ping/tsconfig.spec.json create mode 100644 projects/protocol-ping/tslint.json create mode 100644 projects/protocol-query/README.md create mode 100644 projects/protocol-query/karma.conf.js create mode 100644 projects/protocol-query/ng-package.json create mode 100644 projects/protocol-query/package.json create mode 100644 projects/protocol-query/src/lib/config/token.ts create mode 100644 projects/protocol-query/src/lib/query-protocol.module.ts create mode 100644 projects/protocol-query/src/lib/services/query-protocol.service.spec.ts create mode 100644 projects/protocol-query/src/lib/services/query-protocol.service.ts create mode 100644 projects/protocol-query/src/public-api.ts create mode 100644 projects/protocol-query/src/test.ts create mode 100644 projects/protocol-query/tsconfig.lib.json create mode 100644 projects/protocol-query/tsconfig.lib.prod.json create mode 100644 projects/protocol-query/tsconfig.spec.json create mode 100644 projects/protocol-query/tslint.json create mode 100644 projects/protocol-room/README.md create mode 100644 projects/protocol-room/karma.conf.js create mode 100644 projects/protocol-room/ng-package.json create mode 100644 projects/protocol-room/package.json create mode 100644 projects/protocol-room/src/lib/config/token.ts create mode 100644 projects/protocol-room/src/lib/room-protocol.module.ts create mode 100644 projects/protocol-room/src/lib/services/room-protocol.service.spec.ts create mode 100644 projects/protocol-room/src/lib/services/room-protocol.service.ts create mode 100644 projects/protocol-room/src/public-api.ts create mode 100644 projects/protocol-room/src/test.ts create mode 100644 projects/protocol-room/tsconfig.lib.json create mode 100644 projects/protocol-room/tsconfig.lib.prod.json create mode 100644 projects/protocol-room/tsconfig.spec.json create mode 100644 projects/protocol-room/tslint.json create mode 100644 projects/protocol-service/README.md create mode 100644 projects/protocol-service/karma.conf.js create mode 100644 projects/protocol-service/ng-package.json create mode 100644 projects/protocol-service/package.json create mode 100644 projects/protocol-service/src/lib/config/token.ts create mode 100644 projects/protocol-service/src/lib/service-protocol.module.ts create mode 100644 projects/protocol-service/src/lib/services/service-protocol.service.spec.ts create mode 100644 projects/protocol-service/src/lib/services/service-protocol.service.ts create mode 100644 projects/protocol-service/src/public-api.ts create mode 100644 projects/protocol-service/src/test.ts create mode 100644 projects/protocol-service/tsconfig.lib.json create mode 100644 projects/protocol-service/tsconfig.lib.prod.json create mode 100644 projects/protocol-service/tsconfig.spec.json create mode 100644 projects/protocol-service/tslint.json create mode 100644 projects/protocol-status/README.md create mode 100644 projects/protocol-status/karma.conf.js create mode 100644 projects/protocol-status/ng-package.json create mode 100644 projects/protocol-status/package.json create mode 100644 projects/protocol-status/src/lib/config/token.ts create mode 100644 projects/protocol-status/src/lib/services/status-protocol.service.spec.ts create mode 100644 projects/protocol-status/src/lib/services/status-protocol.service.ts create mode 100644 projects/protocol-status/src/lib/status-protocol.module.ts create mode 100644 projects/protocol-status/src/public-api.ts create mode 100644 projects/protocol-status/src/test.ts create mode 100644 projects/protocol-status/tsconfig.lib.json create mode 100644 projects/protocol-status/tsconfig.lib.prod.json create mode 100644 projects/protocol-status/tsconfig.spec.json create mode 100644 projects/protocol-status/tslint.json create mode 100644 projects/protocol-sync/README.md create mode 100644 projects/protocol-sync/karma.conf.js create mode 100644 projects/protocol-sync/ng-package.json create mode 100644 projects/protocol-sync/package.json create mode 100644 projects/protocol-sync/src/lib/config/token.ts create mode 100644 projects/protocol-sync/src/lib/services/sync-protocol.service.spec.ts create mode 100644 projects/protocol-sync/src/lib/services/sync-protocol.service.ts create mode 100644 projects/protocol-sync/src/lib/sync-protocol.module.ts create mode 100644 projects/protocol-sync/src/public-api.ts create mode 100644 projects/protocol-sync/src/test.ts create mode 100644 projects/protocol-sync/tsconfig.lib.json create mode 100644 projects/protocol-sync/tsconfig.lib.prod.json create mode 100644 projects/protocol-sync/tsconfig.spec.json create mode 100644 projects/protocol-sync/tslint.json create mode 100644 projects/protocol-umg/README.md create mode 100644 projects/protocol-umg/karma.conf.js create mode 100644 projects/protocol-umg/ng-package.json create mode 100644 projects/protocol-umg/package.json create mode 100644 projects/protocol-umg/src/lib/config/token.ts create mode 100644 projects/protocol-umg/src/lib/services/umg-protocol.service.spec.ts create mode 100644 projects/protocol-umg/src/lib/services/umg-protocol.service.ts create mode 100644 projects/protocol-umg/src/lib/umg-protocol.module.ts create mode 100644 projects/protocol-umg/src/public-api.ts create mode 100644 projects/protocol-umg/src/test.ts create mode 100644 projects/protocol-umg/tsconfig.lib.json create mode 100644 projects/protocol-umg/tsconfig.lib.prod.json create mode 100644 projects/protocol-umg/tsconfig.spec.json create mode 100644 projects/protocol-umg/tslint.json create mode 100644 projects/protocol/README.md create mode 100644 projects/protocol/karma.conf.js create mode 100644 projects/protocol/ng-package.json create mode 100644 projects/protocol/package.json create mode 100644 projects/protocol/src/lib/config/token.ts create mode 100644 projects/protocol/src/lib/protocol.module.ts create mode 100644 projects/protocol/src/lib/services/protocol.service.spec.ts create mode 100644 projects/protocol/src/lib/services/protocol.service.ts create mode 100644 projects/protocol/src/public-api.ts create mode 100644 projects/protocol/src/test.ts create mode 100644 projects/protocol/tsconfig.lib.json create mode 100644 projects/protocol/tsconfig.lib.prod.json create mode 100644 projects/protocol/tsconfig.spec.json create mode 100644 projects/protocol/tslint.json create mode 100644 projects/store-authentication/README.md create mode 100644 projects/store-authentication/karma.conf.js create mode 100644 projects/store-authentication/ng-package.json create mode 100644 projects/store-authentication/package.json create mode 100644 projects/store-authentication/src/lib/authentication-store.module.ts create mode 100644 projects/store-authentication/src/lib/config/module-config.ts create mode 100644 projects/store-authentication/src/lib/config/token.ts create mode 100644 projects/store-authentication/src/lib/store/authorization/actions.ts create mode 100644 projects/store-authentication/src/lib/store/authorization/effects.ts create mode 100644 projects/store-authentication/src/lib/store/authorization/reducers.ts create mode 100644 projects/store-authentication/src/lib/store/authorization/state.ts create mode 100644 projects/store-authentication/src/lib/store/common/actions.ts create mode 100644 projects/store-authentication/src/lib/store/common/effects.ts create mode 100644 projects/store-authentication/src/lib/store/common/reducers.ts create mode 100644 projects/store-authentication/src/lib/store/common/state.ts create mode 100644 projects/store-authentication/src/lib/store/effects.ts create mode 100644 projects/store-authentication/src/lib/store/login/actions.ts create mode 100644 projects/store-authentication/src/lib/store/login/effects.ts create mode 100644 projects/store-authentication/src/lib/store/login/reducers.ts create mode 100644 projects/store-authentication/src/lib/store/login/state.ts create mode 100644 projects/store-authentication/src/lib/store/reducers.ts create mode 100644 projects/store-authentication/src/lib/store/state.ts create mode 100644 projects/store-authentication/src/public-api.ts create mode 100644 projects/store-authentication/src/test.ts create mode 100644 projects/store-authentication/tsconfig.lib.json create mode 100644 projects/store-authentication/tsconfig.lib.prod.json create mode 100644 projects/store-authentication/tsconfig.spec.json create mode 100644 projects/store-authentication/tslint.json create mode 100644 projects/store-chat/README.md create mode 100644 projects/store-chat/karma.conf.js create mode 100644 projects/store-chat/ng-package.json create mode 100644 projects/store-chat/package.json create mode 100644 projects/store-chat/src/lib/chat-store.module.ts create mode 100644 projects/store-chat/src/lib/config/module-config.ts create mode 100644 projects/store-chat/src/lib/config/token.ts create mode 100644 projects/store-chat/src/lib/store/chatting/actions.ts create mode 100644 projects/store-chat/src/lib/store/chatting/effects.ts create mode 100644 projects/store-chat/src/lib/store/chatting/reducers.ts create mode 100644 projects/store-chat/src/lib/store/chatting/state.ts create mode 100644 projects/store-chat/src/lib/store/common/actions.ts create mode 100644 projects/store-chat/src/lib/store/common/effects.ts create mode 100644 projects/store-chat/src/lib/store/common/reducers.ts create mode 100644 projects/store-chat/src/lib/store/common/state.ts create mode 100644 projects/store-chat/src/lib/store/effects.ts create mode 100644 projects/store-chat/src/lib/store/reducers.ts create mode 100644 projects/store-chat/src/lib/store/room/actions.ts create mode 100644 projects/store-chat/src/lib/store/room/effects.ts create mode 100644 projects/store-chat/src/lib/store/room/reducers.ts create mode 100644 projects/store-chat/src/lib/store/room/state.ts create mode 100644 projects/store-chat/src/lib/store/state.ts create mode 100644 projects/store-chat/src/public-api.ts create mode 100644 projects/store-chat/src/test.ts create mode 100644 projects/store-chat/tsconfig.lib.json create mode 100644 projects/store-chat/tsconfig.lib.prod.json create mode 100644 projects/store-chat/tsconfig.spec.json create mode 100644 projects/store-chat/tslint.json create mode 100644 projects/store-group/README.md create mode 100644 projects/store-group/karma.conf.js create mode 100644 projects/store-group/ng-package.json create mode 100644 projects/store-group/package.json create mode 100644 projects/store-group/src/lib/config/module-config.ts create mode 100644 projects/store-group/src/lib/config/token.ts create mode 100644 projects/store-group/src/lib/group-store.module.ts create mode 100644 projects/store-group/src/lib/store/buddy/actions.ts create mode 100644 projects/store-group/src/lib/store/buddy/effects.ts create mode 100644 projects/store-group/src/lib/store/buddy/reducers.ts create mode 100644 projects/store-group/src/lib/store/buddy/state.ts create mode 100644 projects/store-group/src/lib/store/common/actions.ts create mode 100644 projects/store-group/src/lib/store/common/effects.ts create mode 100644 projects/store-group/src/lib/store/common/reducers.ts create mode 100644 projects/store-group/src/lib/store/common/state.ts create mode 100644 projects/store-group/src/lib/store/effects.ts create mode 100644 projects/store-group/src/lib/store/group/actions.ts create mode 100644 projects/store-group/src/lib/store/group/effects.ts create mode 100644 projects/store-group/src/lib/store/group/reducers.ts create mode 100644 projects/store-group/src/lib/store/group/state.ts create mode 100644 projects/store-group/src/lib/store/reducers.ts create mode 100644 projects/store-group/src/lib/store/state.ts create mode 100644 projects/store-group/src/public-api.ts create mode 100644 projects/store-group/src/test.ts create mode 100644 projects/store-group/tsconfig.lib.json create mode 100644 projects/store-group/tsconfig.lib.prod.json create mode 100644 projects/store-group/tsconfig.spec.json create mode 100644 projects/store-group/tslint.json create mode 100644 projects/store-organization/README.md create mode 100644 projects/store-organization/karma.conf.js create mode 100644 projects/store-organization/ng-package.json create mode 100644 projects/store-organization/package.json create mode 100644 projects/store-organization/src/lib/config/module-config.ts create mode 100644 projects/store-organization/src/lib/config/token.ts create mode 100644 projects/store-organization/src/lib/organization-store.module.ts create mode 100644 projects/store-organization/src/lib/store/common/actions.ts create mode 100644 projects/store-organization/src/lib/store/common/effects.ts create mode 100644 projects/store-organization/src/lib/store/common/reducers.ts create mode 100644 projects/store-organization/src/lib/store/common/state.ts create mode 100644 projects/store-organization/src/lib/store/department/actions.ts create mode 100644 projects/store-organization/src/lib/store/department/effects.ts create mode 100644 projects/store-organization/src/lib/store/department/reducers.ts create mode 100644 projects/store-organization/src/lib/store/department/state.ts create mode 100644 projects/store-organization/src/lib/store/effects.ts create mode 100644 projects/store-organization/src/lib/store/reducers.ts create mode 100644 projects/store-organization/src/lib/store/state.ts create mode 100644 projects/store-organization/src/public-api.ts create mode 100644 projects/store-organization/src/test.ts create mode 100644 projects/store-organization/tsconfig.lib.json create mode 100644 projects/store-organization/tsconfig.lib.prod.json create mode 100644 projects/store-organization/tsconfig.spec.json create mode 100644 projects/store-organization/tslint.json create mode 100644 projects/ui-authentication/README.md create mode 100644 projects/ui-authentication/karma.conf.js create mode 100644 projects/ui-authentication/ng-package.json create mode 100644 projects/ui-authentication/package.json create mode 100644 projects/ui-authentication/src/lib/authentication-ui.module.ts create mode 100644 projects/ui-authentication/src/lib/components/change-password.component.html create mode 100644 projects/ui-authentication/src/lib/components/change-password.component.scss create mode 100644 projects/ui-authentication/src/lib/components/change-password.component.spec.ts create mode 100644 projects/ui-authentication/src/lib/components/change-password.component.ts create mode 100644 projects/ui-authentication/src/lib/components/login.component.html create mode 100644 projects/ui-authentication/src/lib/components/login.component.scss create mode 100644 projects/ui-authentication/src/lib/components/login.component.spec.ts create mode 100644 projects/ui-authentication/src/lib/components/login.component.ts create mode 100644 projects/ui-authentication/src/lib/config/module-config.ts create mode 100644 projects/ui-authentication/src/lib/config/token.ts create mode 100644 projects/ui-authentication/src/public-api.ts create mode 100644 projects/ui-authentication/src/test.ts create mode 100644 projects/ui-authentication/tsconfig.lib.json create mode 100644 projects/ui-authentication/tsconfig.lib.prod.json create mode 100644 projects/ui-authentication/tsconfig.spec.json create mode 100644 projects/ui-authentication/tslint.json create mode 100644 projects/ui-organization/README.md create mode 100644 projects/ui-organization/karma.conf.js create mode 100644 projects/ui-organization/ng-package.json create mode 100644 projects/ui-organization/package.json create mode 100644 projects/ui-organization/src/lib/config/module-config.ts create mode 100644 projects/ui-organization/src/lib/config/token.ts create mode 100644 projects/ui-organization/src/lib/organization-ui.module.ts create mode 100644 projects/ui-organization/src/public-api.ts create mode 100644 projects/ui-organization/src/test.ts create mode 100644 projects/ui-organization/tsconfig.lib.json create mode 100644 projects/ui-organization/tsconfig.lib.prod.json create mode 100644 projects/ui-organization/tsconfig.spec.json create mode 100644 projects/ui-organization/tslint.json create mode 100644 projects/ui-skin-default/README.md create mode 100644 projects/ui-skin-default/karma.conf.js create mode 100644 projects/ui-skin-default/ng-package.json create mode 100644 projects/ui-skin-default/package.json create mode 100644 projects/ui-skin-default/scss-bundle.config.json create mode 100644 projects/ui-skin-default/src/assets/scss/_skin.scss create mode 100644 projects/ui-skin-default/src/assets/scss/file-icon/_fonts.scss create mode 100644 projects/ui-skin-default/src/assets/scss/file-icon/_functions.scss create mode 100644 projects/ui-skin-default/src/assets/scss/file-icon/_generator-colors.scss create mode 100644 projects/ui-skin-default/src/assets/scss/file-icon/_generator-vars.scss create mode 100644 projects/ui-skin-default/src/assets/scss/file-icon/_hardcoded.scss create mode 100644 projects/ui-skin-default/src/assets/scss/file-icon/_icons.scss create mode 100644 projects/ui-skin-default/src/assets/scss/file-icon/_loop.scss create mode 100644 projects/ui-skin-default/src/assets/scss/file-icon/_mixin.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_breakpoints.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_dialogs.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_forms.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_general.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_helpers.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_icons.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_list-item.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_main-frame.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_normalize.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_paginator.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_presence.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_scrollbars.scss create mode 100644 projects/ui-skin-default/src/assets/scss/partials/_search-frame.scss create mode 100644 projects/ui-skin-default/src/public-api.ts create mode 100644 projects/ui-skin-default/src/test.ts create mode 100644 projects/ui-skin-default/tsconfig.lib.json create mode 100644 projects/ui-skin-default/tsconfig.lib.prod.json create mode 100644 projects/ui-skin-default/tsconfig.spec.json create mode 100644 projects/ui-skin-default/tslint.json create mode 100644 projects/ui/README.md create mode 100644 projects/ui/karma.conf.js create mode 100644 projects/ui/ng-package.json create mode 100644 projects/ui/package.json create mode 100644 projects/ui/src/lib/animations/index.ts create mode 100644 projects/ui/src/lib/components/file-upload-queue.component.html create mode 100644 projects/ui/src/lib/components/file-upload-queue.component.scss create mode 100644 projects/ui/src/lib/components/file-upload-queue.component.ts create mode 100644 projects/ui/src/lib/components/file-viewer.component.html create mode 100644 projects/ui/src/lib/components/file-viewer.component.scss create mode 100644 projects/ui/src/lib/components/file-viewer.component.spec.ts create mode 100644 projects/ui/src/lib/components/file-viewer.component.ts create mode 100644 projects/ui/src/lib/components/file-viewer/binary-viewer.component.html create mode 100644 projects/ui/src/lib/components/file-viewer/binary-viewer.component.scss create mode 100644 projects/ui/src/lib/components/file-viewer/binary-viewer.component.spec.ts create mode 100644 projects/ui/src/lib/components/file-viewer/binary-viewer.component.ts create mode 100644 projects/ui/src/lib/components/file-viewer/document-viewer.component.html create mode 100644 projects/ui/src/lib/components/file-viewer/document-viewer.component.scss create mode 100644 projects/ui/src/lib/components/file-viewer/document-viewer.component.spec.ts create mode 100644 projects/ui/src/lib/components/file-viewer/document-viewer.component.ts create mode 100644 projects/ui/src/lib/components/file-viewer/image-viewer.component.html create mode 100644 projects/ui/src/lib/components/file-viewer/image-viewer.component.scss create mode 100644 projects/ui/src/lib/components/file-viewer/image-viewer.component.spec.ts create mode 100644 projects/ui/src/lib/components/file-viewer/image-viewer.component.ts create mode 100644 projects/ui/src/lib/components/file-viewer/sound-viewer.component.html create mode 100644 projects/ui/src/lib/components/file-viewer/sound-viewer.component.scss create mode 100644 projects/ui/src/lib/components/file-viewer/sound-viewer.component.spec.ts create mode 100644 projects/ui/src/lib/components/file-viewer/sound-viewer.component.ts create mode 100644 projects/ui/src/lib/components/file-viewer/video-viewer.component.html create mode 100644 projects/ui/src/lib/components/file-viewer/video-viewer.component.scss create mode 100644 projects/ui/src/lib/components/file-viewer/video-viewer.component.spec.ts create mode 100644 projects/ui/src/lib/components/file-viewer/video-viewer.component.ts create mode 100644 projects/ui/src/lib/components/float-action-button.component.html create mode 100644 projects/ui/src/lib/components/float-action-button.component.scss create mode 100644 projects/ui/src/lib/components/float-action-button.component.spec.ts create mode 100644 projects/ui/src/lib/components/float-action-button.component.ts create mode 100644 projects/ui/src/lib/components/inline-edit-input.component.html create mode 100644 projects/ui/src/lib/components/inline-edit-input.component.scss create mode 100644 projects/ui/src/lib/components/inline-edit-input.component.spec.ts create mode 100644 projects/ui/src/lib/components/inline-edit-input.component.ts create mode 100644 projects/ui/src/lib/components/pick-date.component.html create mode 100644 projects/ui/src/lib/components/pick-date.component.scss create mode 100644 projects/ui/src/lib/components/pick-date.component.spec.ts create mode 100644 projects/ui/src/lib/components/pick-date.component.ts create mode 100644 projects/ui/src/lib/components/pick-time.component.html create mode 100644 projects/ui/src/lib/components/pick-time.component.scss create mode 100644 projects/ui/src/lib/components/pick-time.component.spec.ts create mode 100644 projects/ui/src/lib/components/pick-time.component.ts create mode 100644 projects/ui/src/lib/components/split-button.component.html create mode 100644 projects/ui/src/lib/components/split-button.component.scss create mode 100644 projects/ui/src/lib/components/split-button.component.spec.ts create mode 100644 projects/ui/src/lib/components/split-button.component.ts create mode 100644 projects/ui/src/lib/components/step-input.component.html create mode 100644 projects/ui/src/lib/components/step-input.component.scss create mode 100644 projects/ui/src/lib/components/step-input.component.spec.ts create mode 100644 projects/ui/src/lib/components/step-input.component.ts create mode 100644 projects/ui/src/lib/components/title-bar.component.html create mode 100644 projects/ui/src/lib/components/title-bar.component.scss create mode 100644 projects/ui/src/lib/components/title-bar.component.spec.ts create mode 100644 projects/ui/src/lib/components/title-bar.component.ts create mode 100644 projects/ui/src/lib/config/module-config.ts create mode 100644 projects/ui/src/lib/config/token.ts create mode 100644 projects/ui/src/lib/data-source/virtual-scroll-tree-flat.data-source.ts create mode 100644 projects/ui/src/lib/dialogs/alert.dialog.component.html create mode 100644 projects/ui/src/lib/dialogs/alert.dialog.component.scss create mode 100644 projects/ui/src/lib/dialogs/alert.dialog.component.spec.ts create mode 100644 projects/ui/src/lib/dialogs/alert.dialog.component.ts create mode 100644 projects/ui/src/lib/dialogs/confirm.dialog.component.html create mode 100644 projects/ui/src/lib/dialogs/confirm.dialog.component.scss create mode 100644 projects/ui/src/lib/dialogs/confirm.dialog.component.spec.ts create mode 100644 projects/ui/src/lib/dialogs/confirm.dialog.component.ts create mode 100644 projects/ui/src/lib/directives/cdk-virtual-scroll-viewport-patch.directive.ts create mode 100644 projects/ui/src/lib/directives/click-debounce.directive.ts create mode 100644 projects/ui/src/lib/directives/click-outside.directive.ts create mode 100644 projects/ui/src/lib/directives/file-upload-for.directive.ts create mode 100644 projects/ui/src/lib/directives/image.directive.ts create mode 100644 projects/ui/src/lib/pipes/bytes.pipe.ts create mode 100644 projects/ui/src/lib/pipes/date.pipe.ts create mode 100644 projects/ui/src/lib/pipes/empty.pipe.ts create mode 100644 projects/ui/src/lib/pipes/linefeed.pipe.ts create mode 100644 projects/ui/src/lib/pipes/linky.pipe.ts create mode 100644 projects/ui/src/lib/pipes/phone-number.pipe.ts create mode 100644 projects/ui/src/lib/pipes/safe-html.pipe.ts create mode 100644 projects/ui/src/lib/pipes/seconds-to-minutes.pipe.ts create mode 100644 projects/ui/src/lib/services/date.service.ts create mode 100644 projects/ui/src/lib/types/file-viewer.type.ts create mode 100644 projects/ui/src/lib/ui.module.ts create mode 100644 projects/ui/src/lib/utils/html.util.ts create mode 100644 projects/ui/src/lib/utils/phone-number.util.ts create mode 100644 projects/ui/src/public-api.ts create mode 100644 projects/ui/src/test.ts create mode 100644 projects/ui/tsconfig.lib.json create mode 100644 projects/ui/tsconfig.lib.prod.json create mode 100644 projects/ui/tsconfig.spec.json create mode 100644 projects/ui/tslint.json create mode 100644 projects/web-storage/README.md create mode 100644 projects/web-storage/karma.conf.js create mode 100644 projects/web-storage/ng-package.json create mode 100644 projects/web-storage/package.json create mode 100644 projects/web-storage/src/lib/config/token.ts create mode 100644 projects/web-storage/src/lib/services/local-storage.service.spec.ts create mode 100644 projects/web-storage/src/lib/services/local-storage.service.ts create mode 100644 projects/web-storage/src/lib/services/session-storage.service.spec.ts create mode 100644 projects/web-storage/src/lib/services/session-storage.service.ts create mode 100644 projects/web-storage/src/lib/web-storage.module.ts create mode 100644 projects/web-storage/src/public-api.ts create mode 100644 projects/web-storage/src/test.ts create mode 100644 projects/web-storage/tsconfig.lib.json create mode 100644 projects/web-storage/tsconfig.lib.prod.json create mode 100644 projects/web-storage/tsconfig.spec.json create mode 100644 projects/web-storage/tslint.json create mode 100644 scripts/build.js create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e89330a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..86d943a --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json +speed-measure-plugin*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..57a53a3 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "trailingComma": "none", + "tabWidth": 2, + "singleQuote": true +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..b27bfc1 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,11 @@ +{ + "recommendations": [ + "Angular.ng-template", + "msjsdiag.debugger-for-chrome", + "eamodio.gitlens", + "esbenp.prettier-vscode", + "ms-vscode.vscode-typescript-tslint-plugin", + "VisualStudioExptTeam.vscodeintellicode", + "nkokhelox.svg-font-previewer" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..1b8aa88 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,7 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f8859ba --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "editor.tabSize": 2, + "editor.insertSpaces": true, + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "editor.autoClosingBrackets": "languageDefined", + "editor.trimAutoWhitespace": true, + "files.trimTrailingWhitespace": true, + "files.trimFinalNewlines": true, + "files.watcherExclude": { + "**/dist": true + }, + "debug.node.autoAttach": "on" +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..78ac87d --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,15 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "build:main:dev", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..4dd5002 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# MMessenger + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..364659f --- /dev/null +++ b/angular.json @@ -0,0 +1,1368 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "core": { + "projectType": "library", + "root": "projects/core", + "sourceRoot": "projects/core/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/core/tsconfig.lib.json", + "project": "projects/core/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/core/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/core/src/test.ts", + "tsConfig": "projects/core/tsconfig.spec.json", + "karmaConfig": "projects/core/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/core/tsconfig.lib.json", + "projects/core/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "web-storage": { + "projectType": "library", + "root": "projects/web-storage", + "sourceRoot": "projects/web-storage/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/web-storage/tsconfig.lib.json", + "project": "projects/web-storage/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/web-storage/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/web-storage/src/test.ts", + "tsConfig": "projects/web-storage/tsconfig.spec.json", + "karmaConfig": "projects/web-storage/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/web-storage/tsconfig.lib.json", + "projects/web-storage/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "i18n": { + "projectType": "library", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "projects/i18n", + "sourceRoot": "projects/i18n/src", + "prefix": "ucap-i18n", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/i18n/tsconfig.lib.json", + "project": "projects/i18n/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/i18n/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/i18n/src/test.ts", + "tsConfig": "projects/i18n/tsconfig.spec.json", + "karmaConfig": "projects/i18n/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/i18n/tsconfig.lib.json", + "projects/i18n/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "api-common": { + "projectType": "library", + "root": "projects/api-common", + "sourceRoot": "projects/api-common/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/api-common/tsconfig.lib.json", + "project": "projects/api-common/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/api-common/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/api-common/src/test.ts", + "tsConfig": "projects/api-common/tsconfig.spec.json", + "karmaConfig": "projects/api-common/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/api-common/tsconfig.lib.json", + "projects/api-common/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "api-external": { + "projectType": "library", + "root": "projects/api-external", + "sourceRoot": "projects/api-external/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/api-external/tsconfig.lib.json", + "project": "projects/api-external/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/api-external/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/api-external/src/test.ts", + "tsConfig": "projects/api-external/tsconfig.spec.json", + "karmaConfig": "projects/api-external/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/api-external/tsconfig.lib.json", + "projects/api-external/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "api-message": { + "projectType": "library", + "root": "projects/api-message", + "sourceRoot": "projects/api-message/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/api-message/tsconfig.lib.json", + "project": "projects/api-message/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/api-message/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/api-message/src/test.ts", + "tsConfig": "projects/api-message/tsconfig.spec.json", + "karmaConfig": "projects/api-message/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/api-message/tsconfig.lib.json", + "projects/api-message/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "api-prompt": { + "projectType": "library", + "root": "projects/api-prompt", + "sourceRoot": "projects/api-prompt/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/api-prompt/tsconfig.lib.json", + "project": "projects/api-prompt/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/api-prompt/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/api-prompt/src/test.ts", + "tsConfig": "projects/api-prompt/tsconfig.spec.json", + "karmaConfig": "projects/api-prompt/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/api-prompt/tsconfig.lib.json", + "projects/api-prompt/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "api-public": { + "projectType": "library", + "root": "projects/api-public", + "sourceRoot": "projects/api-public/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/api-public/tsconfig.lib.json", + "project": "projects/api-public/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/api-public/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/api-public/src/test.ts", + "tsConfig": "projects/api-public/tsconfig.spec.json", + "karmaConfig": "projects/api-public/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/api-public/tsconfig.lib.json", + "projects/api-public/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "pi": { + "projectType": "library", + "root": "projects/pi", + "sourceRoot": "projects/pi/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/pi/tsconfig.lib.json", + "project": "projects/pi/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/pi/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/pi/src/test.ts", + "tsConfig": "projects/pi/tsconfig.spec.json", + "karmaConfig": "projects/pi/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/pi/tsconfig.lib.json", + "projects/pi/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol": { + "projectType": "library", + "root": "projects/protocol", + "sourceRoot": "projects/protocol/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol/tsconfig.lib.json", + "project": "projects/protocol/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol/src/test.ts", + "tsConfig": "projects/protocol/tsconfig.spec.json", + "karmaConfig": "projects/protocol/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol/tsconfig.lib.json", + "projects/protocol/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-authentication": { + "projectType": "library", + "root": "projects/protocol-authentication", + "sourceRoot": "projects/protocol-authentication/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-authentication/tsconfig.lib.json", + "project": "projects/protocol-authentication/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-authentication/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-authentication/src/test.ts", + "tsConfig": "projects/protocol-authentication/tsconfig.spec.json", + "karmaConfig": "projects/protocol-authentication/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-authentication/tsconfig.lib.json", + "projects/protocol-authentication/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-buddy": { + "projectType": "library", + "root": "projects/protocol-buddy", + "sourceRoot": "projects/protocol-buddy/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-buddy/tsconfig.lib.json", + "project": "projects/protocol-buddy/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-buddy/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-buddy/src/test.ts", + "tsConfig": "projects/protocol-buddy/tsconfig.spec.json", + "karmaConfig": "projects/protocol-buddy/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-buddy/tsconfig.lib.json", + "projects/protocol-buddy/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-event": { + "projectType": "library", + "root": "projects/protocol-event", + "sourceRoot": "projects/protocol-event/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-event/tsconfig.lib.json", + "project": "projects/protocol-event/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-event/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-event/src/test.ts", + "tsConfig": "projects/protocol-event/tsconfig.spec.json", + "karmaConfig": "projects/protocol-event/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-event/tsconfig.lib.json", + "projects/protocol-event/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-file": { + "projectType": "library", + "root": "projects/protocol-file", + "sourceRoot": "projects/protocol-file/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-file/tsconfig.lib.json", + "project": "projects/protocol-file/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-file/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-file/src/test.ts", + "tsConfig": "projects/protocol-file/tsconfig.spec.json", + "karmaConfig": "projects/protocol-file/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-file/tsconfig.lib.json", + "projects/protocol-file/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + + "protocol-group": { + "projectType": "library", + "root": "projects/protocol-group", + "sourceRoot": "projects/protocol-group/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-group/tsconfig.lib.json", + "project": "projects/protocol-group/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-group/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-group/src/test.ts", + "tsConfig": "projects/protocol-group/tsconfig.spec.json", + "karmaConfig": "projects/protocol-group/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-group/tsconfig.lib.json", + "projects/protocol-group/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-info": { + "projectType": "library", + "root": "projects/protocol-info", + "sourceRoot": "projects/protocol-info/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-info/tsconfig.lib.json", + "project": "projects/protocol-info/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-info/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-info/src/test.ts", + "tsConfig": "projects/protocol-info/tsconfig.spec.json", + "karmaConfig": "projects/protocol-info/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-info/tsconfig.lib.json", + "projects/protocol-info/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-inner": { + "projectType": "library", + "root": "projects/protocol-inner", + "sourceRoot": "projects/protocol-inner/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-inner/tsconfig.lib.json", + "project": "projects/protocol-inner/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-inner/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-inner/src/test.ts", + "tsConfig": "projects/protocol-inner/tsconfig.spec.json", + "karmaConfig": "projects/protocol-inner/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-inner/tsconfig.lib.json", + "projects/protocol-inner/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-option": { + "projectType": "library", + "root": "projects/protocol-option", + "sourceRoot": "projects/protocol-option/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-option/tsconfig.lib.json", + "project": "projects/protocol-option/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-option/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-option/src/test.ts", + "tsConfig": "projects/protocol-option/tsconfig.spec.json", + "karmaConfig": "projects/protocol-option/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-option/tsconfig.lib.json", + "projects/protocol-option/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-ping": { + "projectType": "library", + "root": "projects/protocol-ping", + "sourceRoot": "projects/protocol-ping/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-ping/tsconfig.lib.json", + "project": "projects/protocol-ping/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-ping/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-ping/src/test.ts", + "tsConfig": "projects/protocol-ping/tsconfig.spec.json", + "karmaConfig": "projects/protocol-ping/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-ping/tsconfig.lib.json", + "projects/protocol-ping/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-query": { + "projectType": "library", + "root": "projects/protocol-query", + "sourceRoot": "projects/protocol-query/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-query/tsconfig.lib.json", + "project": "projects/protocol-query/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-query/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-query/src/test.ts", + "tsConfig": "projects/protocol-query/tsconfig.spec.json", + "karmaConfig": "projects/protocol-query/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-query/tsconfig.lib.json", + "projects/protocol-query/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-room": { + "projectType": "library", + "root": "projects/protocol-room", + "sourceRoot": "projects/protocol-room/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-room/tsconfig.lib.json", + "project": "projects/protocol-room/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-room/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-room/src/test.ts", + "tsConfig": "projects/protocol-room/tsconfig.spec.json", + "karmaConfig": "projects/protocol-room/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-room/tsconfig.lib.json", + "projects/protocol-room/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-service": { + "projectType": "library", + "root": "projects/protocol-service", + "sourceRoot": "projects/protocol-service/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-service/tsconfig.lib.json", + "project": "projects/protocol-service/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-service/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-service/src/test.ts", + "tsConfig": "projects/protocol-service/tsconfig.spec.json", + "karmaConfig": "projects/protocol-service/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-service/tsconfig.lib.json", + "projects/protocol-service/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-status": { + "projectType": "library", + "root": "projects/protocol-status", + "sourceRoot": "projects/protocol-status/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-status/tsconfig.lib.json", + "project": "projects/protocol-status/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-status/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-status/src/test.ts", + "tsConfig": "projects/protocol-status/tsconfig.spec.json", + "karmaConfig": "projects/protocol-status/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-status/tsconfig.lib.json", + "projects/protocol-status/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "protocol-sync": { + "projectType": "library", + "root": "projects/protocol-sync", + "sourceRoot": "projects/protocol-sync/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-sync/tsconfig.lib.json", + "project": "projects/protocol-sync/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-sync/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-sync/src/test.ts", + "tsConfig": "projects/protocol-sync/tsconfig.spec.json", + "karmaConfig": "projects/protocol-sync/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-sync/tsconfig.lib.json", + "projects/protocol-sync/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + + "protocol-umg": { + "projectType": "library", + "root": "projects/protocol-umg", + "sourceRoot": "projects/protocol-umg/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/protocol-umg/tsconfig.lib.json", + "project": "projects/protocol-umg/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/protocol-umg/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/protocol-umg/src/test.ts", + "tsConfig": "projects/protocol-umg/tsconfig.spec.json", + "karmaConfig": "projects/protocol-umg/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/protocol-umg/tsconfig.lib.json", + "projects/protocol-umg/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "native": { + "projectType": "library", + "root": "projects/native", + "sourceRoot": "projects/native/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/native/tsconfig.lib.json", + "project": "projects/native/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/native/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/native/src/test.ts", + "tsConfig": "projects/native/tsconfig.spec.json", + "karmaConfig": "projects/native/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/native/tsconfig.lib.json", + "projects/native/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "native-browser": { + "projectType": "library", + "root": "projects/native-browser", + "sourceRoot": "projects/native-browser/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/native-browser/tsconfig.lib.json", + "project": "projects/native-browser/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/native-browser/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/native-browser/src/test.ts", + "tsConfig": "projects/native-browser/tsconfig.spec.json", + "karmaConfig": "projects/native-browser/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/native-browser/tsconfig.lib.json", + "projects/native-browser/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "store-authentication": { + "projectType": "library", + "root": "projects/store-authentication", + "sourceRoot": "projects/store-authentication/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/store-authentication/tsconfig.lib.json", + "project": "projects/store-authentication/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/store-authentication/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/store-authentication/src/test.ts", + "tsConfig": "projects/store-authentication/tsconfig.spec.json", + "karmaConfig": "projects/store-authentication/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/store-authentication/tsconfig.lib.json", + "projects/store-authentication/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "store-chat": { + "projectType": "library", + "root": "projects/store-chat", + "sourceRoot": "projects/store-chat/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/store-chat/tsconfig.lib.json", + "project": "projects/store-chat/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/store-chat/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/store-chat/src/test.ts", + "tsConfig": "projects/store-chat/tsconfig.spec.json", + "karmaConfig": "projects/store-chat/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/store-chat/tsconfig.lib.json", + "projects/store-chat/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "store-group": { + "projectType": "library", + "root": "projects/store-group", + "sourceRoot": "projects/store-group/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/store-group/tsconfig.lib.json", + "project": "projects/store-group/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/store-group/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/store-group/src/test.ts", + "tsConfig": "projects/store-group/tsconfig.spec.json", + "karmaConfig": "projects/store-group/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/store-group/tsconfig.lib.json", + "projects/store-group/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "store-organization": { + "projectType": "library", + "root": "projects/store-organization", + "sourceRoot": "projects/store-organization/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/store-organization/tsconfig.lib.json", + "project": "projects/store-organization/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/store-organization/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/store-organization/src/test.ts", + "tsConfig": "projects/store-organization/tsconfig.spec.json", + "karmaConfig": "projects/store-organization/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/store-organization/tsconfig.lib.json", + "projects/store-organization/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "ui": { + "projectType": "library", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "projects/ui", + "sourceRoot": "projects/ui/src", + "prefix": "ucap", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/ui/tsconfig.lib.json", + "project": "projects/ui/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/ui/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/ui/src/test.ts", + "tsConfig": "projects/ui/tsconfig.spec.json", + "karmaConfig": "projects/ui/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/ui/tsconfig.lib.json", + "projects/ui/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "ui-organization": { + "projectType": "library", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "projects/ui-organization", + "sourceRoot": "projects/ui-organization/src", + "prefix": "ucap-organization", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/ui-organization/tsconfig.lib.json", + "project": "projects/ui-organization/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/ui-organization/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/ui-organization/src/test.ts", + "tsConfig": "projects/ui-organization/tsconfig.spec.json", + "karmaConfig": "projects/ui-organization/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/ui-organization/tsconfig.lib.json", + "projects/ui-organization/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "ui-authentication": { + "projectType": "library", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "projects/ui-authentication", + "sourceRoot": "projects/ui-authentication/src", + "prefix": "ucap-authentication", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/ui-authentication/tsconfig.lib.json", + "project": "projects/ui-authentication/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/ui-authentication/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/ui-authentication/src/test.ts", + "tsConfig": "projects/ui-authentication/tsconfig.spec.json", + "karmaConfig": "projects/ui-authentication/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/ui-authentication/tsconfig.lib.json", + "projects/ui-authentication/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + }, + "ui-skin-default": { + "projectType": "library", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "projects/ui-skin-default", + "sourceRoot": "projects/ui-skin-default/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/ui-skin-default/tsconfig.lib.json", + "project": "projects/ui-skin-default/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/ui-skin-default/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/ui-skin-default/src/test.ts", + "tsConfig": "projects/ui-skin-default/tsconfig.spec.json", + "karmaConfig": "projects/ui-skin-default/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/ui-skin-default/tsconfig.lib.json", + "projects/ui-skin-default/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**"] + } + } + } + } + }, + "cli": { + "analytics": false + }, + "defaultProject": "core" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2c24e58 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,16313 @@ +{ + "name": "ucap-angular", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.900.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/architect/-/architect-0.900.7.tgz", + "integrity": "sha512-hfiTVYc72kzbXrzK4tea6jnTDnSKpE1D+vEptBXN2tdXEVNEAQI5Qm5L1zVDtt16UdqoUTUypIgUc9jcNH1mUQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.7", + "rxjs": "6.5.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-angular": { + "version": "0.900.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/build-angular/-/build-angular-0.900.7.tgz", + "integrity": "sha512-Yv2y3OEaYEd0fE0pKvtqBpmkQYs9xJws7thHnJYCwIfYO55RfolYsXkJgAXke/4NPLrD3EsIDqoPxF7l+uw2/Q==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.900.7", + "@angular-devkit/build-optimizer": "0.900.7", + "@angular-devkit/build-webpack": "0.900.7", + "@angular-devkit/core": "9.0.7", + "@babel/core": "7.7.7", + "@babel/generator": "7.7.7", + "@babel/preset-env": "7.7.7", + "@ngtools/webpack": "9.0.7", + "ajv": "6.10.2", + "autoprefixer": "9.7.1", + "babel-loader": "8.0.6", + "browserslist": "^4.9.1", + "cacache": "13.0.1", + "caniuse-lite": "^1.0.30001032", + "circular-dependency-plugin": "5.2.0", + "copy-webpack-plugin": "5.1.1", + "core-js": "3.6.4", + "coverage-istanbul-loader": "2.0.3", + "cssnano": "4.1.10", + "file-loader": "4.2.0", + "find-cache-dir": "3.0.0", + "glob": "7.1.5", + "jest-worker": "24.9.0", + "karma-source-map-support": "1.4.0", + "less": "3.10.3", + "less-loader": "5.0.0", + "license-webpack-plugin": "2.1.3", + "loader-utils": "1.2.3", + "magic-string": "0.25.4", + "mini-css-extract-plugin": "0.8.0", + "minimatch": "3.0.4", + "open": "7.0.0", + "parse5": "4.0.0", + "postcss": "7.0.21", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "3.1.0", + "regenerator-runtime": "0.13.3", + "rimraf": "3.0.0", + "rollup": "1.25.2", + "rxjs": "6.5.3", + "sass": "1.23.3", + "sass-loader": "8.0.0", + "semver": "6.3.0", + "source-map": "0.7.3", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.16", + "speed-measure-webpack-plugin": "1.3.1", + "style-loader": "1.0.0", + "stylus": "0.54.7", + "stylus-loader": "3.0.2", + "terser": "4.5.1", + "terser-webpack-plugin": "2.3.3", + "tree-kill": "1.2.2", + "webpack": "4.41.2", + "webpack-dev-middleware": "3.7.2", + "webpack-dev-server": "3.9.0", + "webpack-merge": "4.2.2", + "webpack-sources": "1.4.3", + "webpack-subresource-integrity": "1.3.4", + "worker-plugin": "3.2.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-ng-packagr": { + "version": "0.900.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.900.7.tgz", + "integrity": "sha512-c5dA/myilTaXLPHvRzbmqLslgfzf265CXL07I3jLe1+FECEXBYcOl9asEdi1GWy+eVehVkjYdDG4froIvAzEVg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.900.7", + "rxjs": "6.5.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.900.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/build-optimizer/-/build-optimizer-0.900.7.tgz", + "integrity": "sha512-gxin2oPNMN+PYo82At2JP1Q+uxnvwyDFWA1Wl+Ufuc5zHGhjKqxdQjkdMF7OT0ihtmkllN+t/NTB7rcx/Sx9Wg==", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.7.3", + "tslib": "1.10.0", + "typescript": "3.6.4", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "tslib": { + "version": "1.10.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "typescript": { + "version": "3.6.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/typescript/-/typescript-3.6.4.tgz", + "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.900.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/build-webpack/-/build-webpack-0.900.7.tgz", + "integrity": "sha512-Nwwqjo1ZpHFLavN+nXOmuBgGjhoMBZGelDCvHtiQlQ9N6i7k9cKnP7eU5pY7jbalBguS+gWg5wJIGnbqk1K9Rg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.900.7", + "@angular-devkit/core": "9.0.7", + "rxjs": "6.5.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/core": { + "version": "9.0.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/core/-/core-9.0.7.tgz", + "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/schematics/-/schematics-9.1.0.tgz", + "integrity": "sha512-cb9PSvskMwWlL54fPfCcpJoyNDWAX6Wo7CzL5qpIB2cJCPLAuyfRUYYrkO77YUST+n2HvypHz0cZ5SNGMfaaBQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "ora": "4.0.3", + "rxjs": "6.5.4" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/core/-/core-9.1.0.tgz", + "integrity": "sha512-vHTsrB4JaVUQ95FRnKrgo79Y3F6FokImrZdrmwkQmwAThpjXeXmpUEKZS+ZSTFRgesjiIysVGOFijARP4BQ7Bg==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "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" + } + }, + "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 + }, + "magic-string": { + "version": "0.25.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@angular/animations": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/animations/-/animations-9.1.0.tgz", + "integrity": "sha512-o7X3HM+eocoryw3VrDUtG6Wci2KwtzyBFo3KBJXjQ16X6fwdkjTG+hLb7pp2CBFBEJW4tPYEy7cSBmEfMRTqag==", + "dev": true + }, + "@angular/cdk": { + "version": "9.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/cdk/-/cdk-9.2.0.tgz", + "integrity": "sha512-jeeznvNDpR9POuxzz8Y0zFvMynG9HCJo3ZPTqOjlOq8Lj8876+rLsHDvKEMeLdwlkdi1EweYJW1CLQzI+TwqDA==", + "dev": true, + "requires": { + "parse5": "^5.0.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true, + "optional": true + } + } + }, + "@angular/cli": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/cli/-/cli-9.1.0.tgz", + "integrity": "sha512-ofum4gPE/W3fKyzuJrpdHeOS0ZL8x0eYCgsrMyUoFodSpb5LWPqeW+56NgDTpIeny+Trx3pM9dr9QTUVTJ0vYg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.901.0", + "@angular-devkit/core": "9.1.0", + "@angular-devkit/schematics": "9.1.0", + "@schematics/angular": "9.1.0", + "@schematics/update": "0.901.0", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.1.1", + "ini": "1.3.5", + "inquirer": "7.1.0", + "npm-package-arg": "8.0.1", + "npm-pick-manifest": "6.0.0", + "open": "7.0.3", + "pacote": "11.1.4", + "read-package-tree": "5.3.1", + "rimraf": "3.0.2", + "semver": "7.1.3", + "symbol-observable": "1.2.0", + "universal-analytics": "0.4.20", + "uuid": "7.0.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.901.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/architect/-/architect-0.901.0.tgz", + "integrity": "sha512-SlqEBkPrT40zMCy5344AsUqC76pEPCaGPaAkCIvadaz2dC9vNMzQrvubCPJHViD/TumkSX1kYmLS3iYASVM9GQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "rxjs": "6.5.4" + } + }, + "@angular-devkit/core": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/core/-/core-9.1.0.tgz", + "integrity": "sha512-vHTsrB4JaVUQ95FRnKrgo79Y3F6FokImrZdrmwkQmwAThpjXeXmpUEKZS+ZSTFRgesjiIysVGOFijARP4BQ7Bg==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "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" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "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 + }, + "magic-string": { + "version": "0.25.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "open": { + "version": "7.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "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 + }, + "uuid": { + "version": "7.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/uuid/-/uuid-7.0.2.tgz", + "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==", + "dev": true + } + } + }, + "@angular/common": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/common/-/common-9.1.0.tgz", + "integrity": "sha512-6JPLNtMhI03bGTVQJeSwc+dTjV6DtP7M/BAyzIV0InZP1D6XsOh2QahLFIaaN2sSxYA2ClKuwfX1v+rx9AbXQA==", + "dev": true + }, + "@angular/compiler": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/compiler/-/compiler-9.1.0.tgz", + "integrity": "sha512-QHw/JSeTXHiJQ2Ih0EtU7FGsYcOr+0hwZhqwSW3EEn8TtUgA3DS5lXeiDV66f+3DdvNZFPmgiZIvun3ypxn1HA==", + "dev": true + }, + "@angular/compiler-cli": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/compiler-cli/-/compiler-cli-9.1.0.tgz", + "integrity": "sha512-xZ8mVPmPporSTtvNA+cbFJQymLzuWfMX6HDDgztZ2eZ5WcQJYloRN4CcYMEzDhCxfV1Zw9Tfc2l14jZD8osi6g==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "yargs": "15.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "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" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.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 + }, + "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" + } + }, + "fs-extra": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "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 + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yargs/-/yargs-15.3.0.tgz", + "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.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": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.0" + } + }, + "yargs-parser": { + "version": "18.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/core/-/core-9.1.0.tgz", + "integrity": "sha512-RVlyegdIAij0P1wLY5ObIdsBAzvmHkHfElnmfiNKhaDftP6U/3zRtaKDu0bq0jvn1WCQ8zXxFQ8AWyKZwyFS+w==", + "dev": true + }, + "@angular/flex-layout": { + "version": "9.0.0-beta.29", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/flex-layout/-/flex-layout-9.0.0-beta.29.tgz", + "integrity": "sha512-93sxR+kYfYMOdnlWL0Q77FZ428gg8XnBu0YZm6GsCdkw/vLggIT/G1ZAqHlCPIODt6pxmCJ5KXh4ShvniIYDsA==", + "dev": true + }, + "@angular/forms": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/forms/-/forms-9.1.0.tgz", + "integrity": "sha512-5GC8HQlPChPV+168zLlm4yj4syA6N9ChSKV0tmzj1zIfMcub1UAOaB9IYaXRHQsjPFh9OuQXwmkzScyAfhEVjA==", + "dev": true + }, + "@angular/language-service": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/language-service/-/language-service-9.1.0.tgz", + "integrity": "sha512-2f8ECoXrj40oS1rtIfi+F8T4WPzundcZDs8WMFNBuWYbk14v1S9sTgMEmZyePHGkPjt6IfYiLJKJCvVgrt1nxQ==", + "dev": true + }, + "@angular/material": { + "version": "9.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/material/-/material-9.2.0.tgz", + "integrity": "sha512-KKzEIVh6/m56m+Ao8p4PK0SyEr0574l3VP2swj1qPag3u+FYgemmXCGTaChrKdDsez+zeTCPXImBGXzE6NQ80Q==", + "dev": true + }, + "@angular/material-moment-adapter": { + "version": "9.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/material-moment-adapter/-/material-moment-adapter-9.2.0.tgz", + "integrity": "sha512-DruanWMcAzOy8mFZ6Xr9sRqJ+KjF0hvFshxqrv0SD/rVpf9oi8ADnuACmHYXN5dYr/YtgmHDywq0Z7USY7SIoA==", + "dev": true + }, + "@angular/platform-browser": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/platform-browser/-/platform-browser-9.1.0.tgz", + "integrity": "sha512-OsS/blUjl8ranmDaRADjFAmvnlmwbT6WNU7dVov7FhV0rqesbwaOJ5bR0LSYHYpej7Jaa6oYk0v0XWkaH9LTFg==", + "dev": true + }, + "@angular/platform-browser-dynamic": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.0.tgz", + "integrity": "sha512-sMtz/poQ3TYaWZzWjrn9apKUZ/WKql2MYCWbpax7pql3GgC9OoTslc7ZEe7/d3ynfFE/CQqWBBOuWGD71Z0LMQ==", + "dev": true + }, + "@angular/router": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular/router/-/router-9.1.0.tgz", + "integrity": "sha512-cExO1nPnoPFiUJWZ28hTHozPLFoCmqr3xqcM57We0hhKE0esdrO+gRWKRH0EJERukLbU8coPKVhA8daGUpASiQ==", + "dev": true + }, + "@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/core": { + "version": "7.7.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/core/-/core-7.7.7.tgz", + "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.7", + "@babel/helpers": "^7.7.4", + "@babel/parser": "^7.7.7", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "json5": { + "version": "2.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "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 + }, + "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 + } + } + }, + "@babel/generator": { + "version": "7.7.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "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 + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^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/helper-wrap-function": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@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" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", + "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", + "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", + "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.7.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/preset-env/-/preset-env-7.7.7.tgz", + "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.7.4", + "@babel/plugin-proposal-dynamic-import": "^7.7.4", + "@babel/plugin-proposal-json-strings": "^7.7.4", + "@babel/plugin-proposal-object-rest-spread": "^7.7.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", + "@babel/plugin-syntax-async-generators": "^7.7.4", + "@babel/plugin-syntax-dynamic-import": "^7.7.4", + "@babel/plugin-syntax-json-strings": "^7.7.4", + "@babel/plugin-syntax-object-rest-spread": "^7.7.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", + "@babel/plugin-syntax-top-level-await": "^7.7.4", + "@babel/plugin-transform-arrow-functions": "^7.7.4", + "@babel/plugin-transform-async-to-generator": "^7.7.4", + "@babel/plugin-transform-block-scoped-functions": "^7.7.4", + "@babel/plugin-transform-block-scoping": "^7.7.4", + "@babel/plugin-transform-classes": "^7.7.4", + "@babel/plugin-transform-computed-properties": "^7.7.4", + "@babel/plugin-transform-destructuring": "^7.7.4", + "@babel/plugin-transform-dotall-regex": "^7.7.7", + "@babel/plugin-transform-duplicate-keys": "^7.7.4", + "@babel/plugin-transform-exponentiation-operator": "^7.7.4", + "@babel/plugin-transform-for-of": "^7.7.4", + "@babel/plugin-transform-function-name": "^7.7.4", + "@babel/plugin-transform-literals": "^7.7.4", + "@babel/plugin-transform-member-expression-literals": "^7.7.4", + "@babel/plugin-transform-modules-amd": "^7.7.5", + "@babel/plugin-transform-modules-commonjs": "^7.7.5", + "@babel/plugin-transform-modules-systemjs": "^7.7.4", + "@babel/plugin-transform-modules-umd": "^7.7.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", + "@babel/plugin-transform-new-target": "^7.7.4", + "@babel/plugin-transform-object-super": "^7.7.4", + "@babel/plugin-transform-parameters": "^7.7.7", + "@babel/plugin-transform-property-literals": "^7.7.4", + "@babel/plugin-transform-regenerator": "^7.7.5", + "@babel/plugin-transform-reserved-words": "^7.7.4", + "@babel/plugin-transform-shorthand-properties": "^7.7.4", + "@babel/plugin-transform-spread": "^7.7.4", + "@babel/plugin-transform-sticky-regex": "^7.7.4", + "@babel/plugin-transform-template-literals": "^7.7.4", + "@babel/plugin-transform-typeof-symbol": "^7.7.4", + "@babel/plugin-transform-unicode-regex": "^7.7.4", + "@babel/types": "^7.7.4", + "browserslist": "^4.6.0", + "core-js-compat": "^3.6.0", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + }, + "dependencies": { + "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 + } + } + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/generator": { + "version": "7.9.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "dev": true, + "requires": { + "@babel/types": "^7.9.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "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 + } + } + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@ngrx/effects": { + "version": "9.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ngrx/effects/-/effects-9.0.0.tgz", + "integrity": "sha512-6Rq7FsNZK26HqYlpOGCglKLenIkVOOKE0y6D/8KXjEJ1JlZWi00fdI7poclBGjm9pvMBGXfJA8a9MKuxb/t9cA==", + "dev": true + }, + "@ngrx/entity": { + "version": "9.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ngrx/entity/-/entity-9.0.0.tgz", + "integrity": "sha512-0NQ+ppwiLuXtRZ2t79qdudbJhGlmuX2Qh6ORF9hplQoQn8Nl3BUp/TrH8SaAwISbg/B4EOhLWFmLVkXN8HZL8w==", + "dev": true + }, + "@ngrx/router-store": { + "version": "9.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ngrx/router-store/-/router-store-9.0.0.tgz", + "integrity": "sha512-eVgdRwK0twPgTgWnIpc2EBoz6LgWsGdlheDVKZ9MNU8ZkbPV8/ycivW5Oy5cm+ppi1QHHmkpgt+u5c2iGi68cg==", + "dev": true + }, + "@ngrx/store": { + "version": "9.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ngrx/store/-/store-9.0.0.tgz", + "integrity": "sha512-QnmfXJ4G2jp+vFaqT5Qfp6h0J9OHxfDKI2RbnMU93Tq1Xd/WVPzXnOQGjILBjwwWI6RFkSdIpUoQONr7VOW63g==", + "dev": true + }, + "@ngrx/store-devtools": { + "version": "9.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ngrx/store-devtools/-/store-devtools-9.0.0.tgz", + "integrity": "sha512-Vj8sj8GclbSbnYCS8eqZXTOYDdip1nnjKhkYClUg2oFPh67haaCmvh7TXITnX8PpgDtj5akF84Xw9/1HRiG8mg==", + "dev": true + }, + "@ngtools/webpack": { + "version": "9.0.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ngtools/webpack/-/webpack-9.0.7.tgz", + "integrity": "sha512-MvoMaErkjESefoIrbt8F2RpKDr9KavwvH4v3hwSAKooVNFdFKNsjJ7m3gCQehumEfsYFq2mrEK2sTW4/CpFlMQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.7", + "enhanced-resolve": "4.1.1", + "rxjs": "6.5.3", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@npmcli/ci-detect": { + "version": "1.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@npmcli/ci-detect/-/ci-detect-1.2.0.tgz", + "integrity": "sha512-JtktVH7ASBVIWsQTFlFpeOzhBJskvoBCTfeeRhhZy7ybATcUvwiwotZ8j5rkqUUyB69lIy/AvboiiiGBjYBKBA==", + "dev": true + }, + "@npmcli/git": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@npmcli/git/-/git-2.0.1.tgz", + "integrity": "sha512-hVatexiBtx71F01Ars38Hr5AFUGmJgHAfQtRlO5fJlnAawRGSXwEFgjB5i3XdUUmElZU/RXy7fefN02dZKxgPw==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.1.0", + "mkdirp": "^1.0.3", + "npm-pick-manifest": "^6.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "unique-filename": "^1.1.1", + "which": "^2.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@npmcli/installed-package-contents/-/installed-package-contents-1.0.5.tgz", + "integrity": "sha512-aKIwguaaqb6ViwSOFytniGvLPb9SMCUm39TgM3SfUo7n0TxUMbwoXfpwyvQ4blm10lzbAwTsvjr7QZ85LvTi4A==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1", + "read-package-json-fast": "^1.1.1", + "readdir-scoped-modules": "^1.1.0" + } + }, + "@npmcli/promise-spawn": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@npmcli/promise-spawn/-/promise-spawn-1.1.0.tgz", + "integrity": "sha512-FwbuYN9KXBkloLeIR3xRgI8dyOdfK/KzaJlChszNuwmUXD1lHXfLlSeo4n4KrKt2udIK9K9/TzlnyCA3ubM2fA==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@rollup/plugin-commonjs": { + "version": "11.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.2.tgz", + "integrity": "sha512-MPYGZr0qdbV5zZj8/2AuomVpnRVXRU5XKXb3HVniwRoRCreGlf5kOE081isNWeiLIi6IYkwTX9zE0/c7V8g81g==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.0", + "estree-walker": "^1.0.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + } + }, + "@rollup/plugin-json": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@rollup/plugin-json/-/plugin-json-4.0.2.tgz", + "integrity": "sha512-t4zJMc98BdH42mBuzjhQA7dKh0t4vMJlUka6Fz0c+iO5IVnWaEMiYBy1uBj9ruHZzXBW23IPDGL9oCzBkQ9Udg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.4" + } + }, + "@rollup/plugin-node-resolve": { + "version": "7.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.1.tgz", + "integrity": "sha512-14ddhD7TnemeHE97a4rLOhobfYvUVcaYuqTnL8Ti7Jxi9V9Jr5LY7Gko4HZ5k4h4vqQM0gBQt6tsp9xXW94WPA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.6", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + } + }, + "@rollup/pluginutils": { + "version": "3.0.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@rollup/pluginutils/-/pluginutils-3.0.8.tgz", + "integrity": "sha512-rYGeAc4sxcZ+kPG/Tw4/fwJODC3IXHYDH4qusdN/b6aLw5LPUbzpecYbEJh4sVQGPFJxd2dBU4kc1H3oy9/bnw==", + "dev": true, + "requires": { + "estree-walker": "^1.0.1" + } + }, + "@schematics/angular": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@schematics/angular/-/angular-9.1.0.tgz", + "integrity": "sha512-qkehaITQ1S1udfnnBY5CXGWnk1iVFI8cZayjLUlRfD5w+6v9if3VIuqPssX96MqvkbjyRu1N214+ieaawzLmuA==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "@angular-devkit/schematics": "9.1.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/core/-/core-9.1.0.tgz", + "integrity": "sha512-vHTsrB4JaVUQ95FRnKrgo79Y3F6FokImrZdrmwkQmwAThpjXeXmpUEKZS+ZSTFRgesjiIysVGOFijARP4BQ7Bg==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "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" + } + }, + "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 + }, + "magic-string": { + "version": "0.25.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@schematics/update": { + "version": "0.901.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@schematics/update/-/update-0.901.0.tgz", + "integrity": "sha512-u2VESL1dgOSGZK/wcWEz0WcCU/yv764zhzCQerCwUtbV1CISSSDZ6x+prVYDXOdxWBGtDos2MbCF3GEJJI1T+w==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "@angular-devkit/schematics": "9.1.0", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "npm-package-arg": "^8.0.0", + "pacote": "11.1.4", + "rxjs": "6.5.4", + "semver": "7.1.3", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@angular-devkit/core/-/core-9.1.0.tgz", + "integrity": "sha512-vHTsrB4JaVUQ95FRnKrgo79Y3F6FokImrZdrmwkQmwAThpjXeXmpUEKZS+ZSTFRgesjiIysVGOFijARP4BQ7Bg==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "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" + } + }, + "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 + }, + "magic-string": { + "version": "0.25.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "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 + } + } + }, + "@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" + } + }, + "@tokenizer/token": { + "version": "0.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@tokenizer/token/-/token-0.1.1.tgz", + "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==", + "dev": true + }, + "@tootallnate/once": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@tootallnate/once/-/once-1.0.0.tgz", + "integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==", + "dev": true + }, + "@types/archy": { + "version": "0.0.31", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/archy/-/archy-0.0.31.tgz", + "integrity": "sha512-v+dxizsFVyXgD3EpFuqT9YjdEjbJmPxNf1QIX9ohZOhxh1ZF2yhqv3vYaeum9lg3VghhxS5S0a6yldN9J9lPEQ==", + "dev": true + }, + "@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/debug": { + "version": "4.1.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/debug/-/debug-4.1.5.tgz", + "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", + "dev": true + }, + "@types/estree": { + "version": "0.0.44", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/estree/-/estree-0.0.44.tgz", + "integrity": "sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "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/glob": { + "version": "7.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "3.5.10", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/jasmine/-/jasmine-3.5.10.tgz", + "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", + "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/lodash": { + "version": "4.14.149", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/lodash/-/lodash-4.14.149.tgz", + "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", + "dev": true + }, + "@types/lodash.debounce": { + "version": "4.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/lodash.debounce/-/lodash.debounce-4.0.6.tgz", + "integrity": "sha512-4WTmnnhCfDvvuLMaF3KV4Qfki93KebocUF45msxhYyjMttZDQYzHkO639ohhk8+oco2cluAFL3t5+Jn4mleylQ==", + "dev": true, + "requires": { + "@types/lodash": "*" + } + }, + "@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/moment-timezone": { + "version": "0.5.13", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/moment-timezone/-/moment-timezone-0.5.13.tgz", + "integrity": "sha512-SWk1qM8DRssS5YR9L4eEX7WUhK/wc96aIr4nMa6p0kTk9YhGGOJjECVhIdPEj13fvJw72Xun69gScXSZ/UmcPg==", + "dev": true, + "requires": { + "moment": ">=2.14.0" + } + }, + "@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 + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/q": { + "version": "1.5.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/sass": { + "version": "1.16.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/sass/-/sass-1.16.0.tgz", + "integrity": "sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/selenium-webdriver": { + "version": "3.0.17", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/webpack-sources/-/webpack-sources-0.1.7.tgz", + "integrity": "sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "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 + } + } + }, + "@ucap/api": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/api/-/api-0.0.1.tgz", + "integrity": "sha512-gmZhbsuHVu0oefkd1NLKM0K1YJAAc6KeBFHAhNrFIoAvuxgJl/t8RC3FKKMnC50aYVGkMpMWpOi7LL9ZfAXz1Q==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/api-common": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/api-common/-/api-common-0.0.1.tgz", + "integrity": "sha512-N7bbgZvvkCdM/80N09Xr1kUVK9S8xykX7dSbjaNjNkVAH+uNh18uhpfPu2jF5MlDQL9pUpdwwk8GG+WHVbQpVA==", + "dev": true, + "requires": { + "@ucap/api": "^0.0.1", + "@ucap/core": "^0.0.1", + "axios": "^0.19.2", + "rxjs": "^6.5.4" + } + }, + "@ucap/api-external": { + "version": "0.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/api-external/-/api-external-0.0.2.tgz", + "integrity": "sha512-G2LChDd+pJjRO8sMGYDt9eB0BP2bhBMotSvw7q920Q6pQjkJEygfHA/bZFpUhkAjTVdi6PMETg+gsSpVCl414A==", + "dev": true, + "requires": { + "@ucap/api": "^0.0.1", + "@ucap/core": "^0.0.1", + "axios": "^0.19.2", + "rxjs": "^6.5.4" + } + }, + "@ucap/api-message": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/api-message/-/api-message-0.0.1.tgz", + "integrity": "sha512-NSuxuEp2e7po6lHtVLYPIH6jhMvBbytv401/ffi9UTuGhbft4lRdZ9y/jTTUtAD3QeoM5mdFz5D3c0ukc+qODA==", + "dev": true, + "requires": { + "@ucap/api": "^0.0.1", + "@ucap/core": "^0.0.1", + "axios": "^0.19.2", + "rxjs": "^6.5.4" + } + }, + "@ucap/api-prompt": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/api-prompt/-/api-prompt-0.0.1.tgz", + "integrity": "sha512-Z7sezwGEZ8Vc6ZaRkbF/GdDFdbdFcVMGgIp822s03I8Klq5EINFc7mD9lIDyH3ddPqMOBeG+mvZxjAr/Bjhlyg==", + "dev": true, + "requires": { + "@ucap/api": "^0.0.1", + "@ucap/core": "^0.0.1", + "axios": "^0.19.2", + "rxjs": "^6.5.4" + } + }, + "@ucap/api-public": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/api-public/-/api-public-0.0.1.tgz", + "integrity": "sha512-ezJlzeeKzBNl9rCry3Vz5hDBX8ECllanLC9Iqexx8th5+htKODMbw4EKB4jvqG1Y9xw+EPantbMWhcMshs4JIQ==", + "dev": true, + "requires": { + "@ucap/api": "^0.0.1", + "@ucap/core": "^0.0.1", + "axios": "^0.19.2", + "rxjs": "^6.5.4" + } + }, + "@ucap/core": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/core/-/core-0.0.1.tgz", + "integrity": "sha512-TfQqgu9/Ys0a7wN+3U97ZivUcwF9Ko0uY3qWgyV41MzlCKjigH2L2+hxj6/x9yxXZIK6/ynvVW3RB7x1odR5bQ==", + "dev": true, + "requires": { + "detect-browser": "^5.0.0", + "file-type": "^14.1.4" + } + }, + "@ucap/native": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/native/-/native-0.0.1.tgz", + "integrity": "sha512-lvryFxk9luRqgsVVQwjFGnJl8JXseeoqnrqsUfG2AhOFGNioqQiLdhQZex3cxh4wr/+/t4pHPiMoOL0yVV/sdg==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/native-browser": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/native-browser/-/native-browser-0.0.1.tgz", + "integrity": "sha512-4dXjItodiYp9fMISr0kSjSDwgL/0Y3HCZURkl7OJatVs3XBd2noed+OhNZiT7xYt7/OF6fY1UiN/0/0W3GgVnA==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/native": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/ng-api-common": { + "version": "file:dist/api-common/ucap-ng-api-common-0.0.1.tgz", + "integrity": "sha512-s9S2mxJRqlERm+K3Kto13O9LNyl+NYtGC35+nVdhyiEroEh9PMZ6V9VYKi90mcoPOdw9IBC9zNTLEnPxjjyQvQ==", + "dev": true + }, + "@ucap/ng-api-external": { + "version": "file:dist/api-external/ucap-ng-api-external-0.0.1.tgz", + "integrity": "sha512-orf/gvv3aS4kbzxbA9d9qa8NqmvJHnBg7C5SD9KLrXY/use0dBzR0tgtHbOly+VmrUF2oXHI8GJcx2gjohri1Q==", + "dev": true + }, + "@ucap/ng-api-message": { + "version": "file:dist/api-message/ucap-ng-api-message-0.0.1.tgz", + "integrity": "sha512-ULipjfr1/u9g8fMM+QNaYuyUrcY8p9YIFlZksx9hcH422Pl1nzkG7whYoZ/cGKqgipSdEwKqAZOt4g6wGz/OEg==", + "dev": true + }, + "@ucap/ng-api-prompt": { + "version": "file:dist/api-prompt/ucap-ng-api-prompt-0.0.1.tgz", + "integrity": "sha512-DdrTGXBkOqORBQ3FhCrdmR4I+Sd6kAFTT03qeLC/LUR6/chFBPLTxencTSuDnHEI+CnaYxOw1gJvcKkPS9po9A==", + "dev": true + }, + "@ucap/ng-api-public": { + "version": "file:dist/api-public/ucap-ng-api-public-0.0.1.tgz", + "integrity": "sha512-MLeH4xfJnD9EpCBlSy+9uqf/Soar38lqsTXX0VjR70jpkUCtbWiiCmyE1kaVq+UTJZDYrLUpEbQGftXdZxJsPA==", + "dev": true + }, + "@ucap/ng-core": { + "version": "file:dist/core/ucap-ng-core-0.0.1.tgz", + "integrity": "sha512-F1q2lIzwn5yUkQI5mdQmRHc8NvOnyH5NJAI3JpTWp+5LWCpCMw9+bWuxYcUST4RFJkawLrNm/Sq2N3pO7c4g6Q==", + "dev": true + }, + "@ucap/ng-i18n": { + "version": "file:dist/i18n/ucap-ng-i18n-0.0.1.tgz", + "integrity": "sha512-p/tNZFKTWv79mIWluhYukYbSm8Vh8jjMiCobIAm/8oyfbmOvQVLDvY1Xuy3hHzTikSp2vT4xirHXDd70LBFlXg==", + "dev": true + }, + "@ucap/ng-native": { + "version": "file:dist/native/ucap-ng-native-0.0.1.tgz", + "integrity": "sha512-NHJILG8ccX/UKWNJoMGX+T/ZXEm73sN5sXKWTivXbArg2B3kG4EtXlcYo2eaN0IUgUy2xoaDTCfhuzGFbPIY/g==", + "dev": true + }, + "@ucap/ng-native-browser": { + "version": "file:dist/native-browser/ucap-ng-native-browser-0.0.1.tgz", + "integrity": "sha512-I/XO8nHnYRPzf2PHL/fpC7miY3Qa+PTkVerPz9pvtTj9Wt6rqbLTuOa/uk/s8LWMBoraymqgatZhG61xfomB9g==", + "dev": true + }, + "@ucap/ng-pi": { + "version": "file:dist/pi/ucap-ng-pi-0.0.1.tgz", + "integrity": "sha512-bMHXrXFI2+cKjEwUs7GMSZwM2OZoA/PSavlzAx5NhzvN1Cg7Mz4mspjky++/7eRnYeqRUm7UmdOKAhdRdHprPQ==", + "dev": true + }, + "@ucap/ng-protocol": { + "version": "file:dist/protocol/ucap-ng-protocol-0.0.1.tgz", + "integrity": "sha512-DEfL/eBdvgxb7wacJV2k79d/OZnAHwowTwlDWA4LLDav8TfO3ISelPSXAEJNUuknxGz/DMa5WXtm6WcKI7yb0w==", + "dev": true + }, + "@ucap/ng-protocol-authentication": { + "version": "file:dist/protocol-authentication/ucap-ng-protocol-authentication-0.0.1.tgz", + "integrity": "sha512-cCmxbtsZRsUQ6wGXDa7ueP0O7IyVvKlmO7byfpacFenuKipnyQfffwWuXH+lnYps0kMUL/ZgUDDy8DQn/YLB/g==", + "dev": true + }, + "@ucap/ng-protocol-buddy": { + "version": "file:dist/protocol-buddy/ucap-ng-protocol-buddy-0.0.1.tgz", + "integrity": "sha512-r8trgvsMLkrKpT6WcEp6HMu/fRkjfFTZFBbppMK0S6Ro3msGCI0+dcCRcQB/3H0RjxWBNT5Vv2DzqTNk4mJ77A==", + "dev": true + }, + "@ucap/ng-protocol-event": { + "version": "file:dist/protocol-event/ucap-ng-protocol-event-0.0.1.tgz", + "integrity": "sha512-jTJlQVo6CoT64+gyhUWPoPSu5UOUJkr1E4lbNCgt3pi2LTN0k0VjsbofD7EUa+DxmJtgkmyjY0SWZABJtD0RHQ==", + "dev": true + }, + "@ucap/ng-protocol-file": { + "version": "file:dist/protocol-file/ucap-ng-protocol-file-0.0.1.tgz", + "integrity": "sha512-QftqgvizbS6okd0QrbLQkRPA+iQJavnlEW2pm5kVws42ybf+1oHGqtuFbuuCrNoXZraymf5IhSGR3YNpIY2LQA==", + "dev": true + }, + "@ucap/ng-protocol-group": { + "version": "file:dist/protocol-group/ucap-ng-protocol-group-0.0.1.tgz", + "integrity": "sha512-9JxEN8eBmF4LryJdNDeS8AKhS0tB/VCJ82Y0CAlMZaOBgpQRpfBaHJuVnFHc/tligIZDSwFol5tfmvhqXSlwTA==", + "dev": true + }, + "@ucap/ng-protocol-info": { + "version": "file:dist/protocol-info/ucap-ng-protocol-info-0.0.1.tgz", + "integrity": "sha512-F4vP//zOZTffVJZRw0DI2v9AuJfixnjIJCerI8+ZjnskVmYYtQhFOlbvCPBUYIoOo6uHnU6ijNEoRoTn/K5cog==", + "dev": true + }, + "@ucap/ng-protocol-inner": { + "version": "file:dist/protocol-inner/ucap-ng-protocol-inner-0.0.1.tgz", + "integrity": "sha512-MpwzlfrhxV2z3pESCSAQuhNod+eq9lw8ZY3U/SFHJyOlzcWdV3CobBuH3K4SM4I/4t984GvE3MGT8iZJTSTkdQ==", + "dev": true + }, + "@ucap/ng-protocol-option": { + "version": "file:dist/protocol-option/ucap-ng-protocol-option-0.0.1.tgz", + "integrity": "sha512-ZFzHI0Guf4vL740Ej7FLShC9Fz/Jp+nNtnVl4dmFi2rjuwZvgMzoEyOK62FnKgCxSxazvyl94SrILnOkcMJC/A==", + "dev": true + }, + "@ucap/ng-protocol-ping": { + "version": "file:dist/protocol-ping/ucap-ng-protocol-ping-0.0.1.tgz", + "integrity": "sha512-ceMEQWrWkjWsrAibIB2Sx2WIXvhPJ13O+LItbGecJDP5NYsHpTPcX89+kulXnfYItc607fZEoz7iCM0/87ksXw==", + "dev": true + }, + "@ucap/ng-protocol-query": { + "version": "file:dist/protocol-query/ucap-ng-protocol-query-0.0.1.tgz", + "integrity": "sha512-dUjcLdO7CE58Tz5IVCU1628X4XhhchDpUsx05q1vqqeaqQVAGDoKtlI+alckJSZzry1vzPCr4azdXv9+hjZv6g==", + "dev": true + }, + "@ucap/ng-protocol-room": { + "version": "file:dist/protocol-room/ucap-ng-protocol-room-0.0.1.tgz", + "integrity": "sha512-VzXWbx71EJnvxI34a0HSpCzIGhCGGvDFojKqsNVm/7TY5jH0R92HGkIACKfUdUwtJWnsc4GHSWwjBQCP3FuWVQ==", + "dev": true + }, + "@ucap/ng-protocol-service": { + "version": "file:dist/protocol-service/ucap-ng-protocol-service-0.0.1.tgz", + "integrity": "sha512-0EHqQcSIU9Uo8NEk9AgJkrPAcbs1hi1D1zPUo+ZOUh3QlujeK9xmDRzxTLvLgCZsqPRg9FG2MsQExUZ0vZoy9w==", + "dev": true + }, + "@ucap/ng-protocol-status": { + "version": "file:dist/protocol-status/ucap-ng-protocol-status-0.0.1.tgz", + "integrity": "sha512-3Qf8t6NUB77AQjR23hcrm9Ycz14CKcPxcWTcOan7aL8d0PJFRFvHOYP9DoZs04DQOEjgfJB+etnimlBESP08gQ==", + "dev": true + }, + "@ucap/ng-protocol-sync": { + "version": "file:dist/protocol-sync/ucap-ng-protocol-sync-0.0.1.tgz", + "integrity": "sha512-82PgtILOxIU2dEK4qIa3bt81xj0iHU9zRctwRNtOj4Yic4zMkP1CQhKNNz6Uhjw+/z6G6wwgp7ofhydUuHx2hg==", + "dev": true + }, + "@ucap/ng-protocol-umg": { + "version": "file:dist/protocol-umg/ucap-ng-protocol-umg-0.0.1.tgz", + "integrity": "sha512-pHYNk/HVmE9C0GU/9nfkJZM0t0gV6c4FiWkDcDXUL8ZxYldqm2+aBLOofd0qLsHZUjq4qPRprecWQB+ACzOJxg==", + "dev": true + }, + "@ucap/ng-store-authentication": { + "version": "file:dist/store-authentication/ucap-ng-store-authentication-0.0.2.tgz", + "integrity": "sha512-ohUQItPCnNKZrnBoH0lFNFSAHtZkRAfGnLTBXBa4+xapSKGO6h2XaWaszql+ava/q7nelFkNFmYHej0wVLWmdw==", + "dev": true + }, + "@ucap/ng-store-chat": { + "version": "file:dist/store-chat/ucap-ng-store-chat-0.0.3.tgz", + "integrity": "sha512-T2MfjHqvP4J1fHJHVE3Mq/CYUnXZh+Uge8hUqDlX5V+KoaH5LUxz56/jX4OCpbwis1Uez+LxeG15IwuYMKZdvg==", + "dev": true + }, + "@ucap/ng-store-group": { + "version": "file:dist/store-group/ucap-ng-store-group-0.0.3.tgz", + "integrity": "sha512-S/uognL5t0N5yQSoLOKHnvE01158wmP10p70Swfues9o88Ct55ABFOggDFdNcrHd9K7ei6S+objl3hIq/kg42w==", + "dev": true + }, + "@ucap/ng-store-organization": { + "version": "file:dist/store-organization/ucap-ng-store-organization-0.0.2.tgz", + "integrity": "sha512-cCCFQNvIG3FJEdxd8VkYvsKHM0tEL5ySKUvA5YS+5i0kksZJYvE2lgz7wD1rHqfg5ea57HnvrdHfFjukusJK0A==", + "dev": true + }, + "@ucap/ng-ui": { + "version": "file:dist/ui/ucap-ng-ui-0.0.3.tgz", + "integrity": "sha512-U/tpzUgXSGrWzetmmqEcLYYzgCUEew3C0CcfYSr+ajkt4AvHqcFijqXARVHXVahfAkMXZU69/8etDhzWmOcvGw==", + "dev": true + }, + "@ucap/ng-ui-authentication": { + "version": "file:dist/ui-authentication/ucap-ng-ui-authentication-0.0.1.tgz", + "integrity": "sha512-4F+RLBmU56mUIfBBIB6qD57KnwPHJnoRP83co+y+NQRl5GGHvoXwlWIT3OqQ4XA4WMdSeM2Ks5RlJvqsuz7FBg==", + "dev": true + }, + "@ucap/ng-ui-organization": { + "version": "file:dist/ui-organization/ucap-ng-ui-organization-0.0.1.tgz", + "integrity": "sha512-ihbfzCAL6f2+dOnhyjv3u3SP/8LgcXekDBB7Jt0P+4FdtIVM70Z5OjdObNlyi8rld9elc3SiWmpsxXz1cmouXw==", + "dev": true + }, + "@ucap/ng-ui-skin-default": { + "version": "file:dist/ui-skin-default/ucap-ng-ui-skin-default-0.0.1.tgz", + "integrity": "sha512-vtgJBOsJj/S2GjP02PpBz9ebGikNtzdsC7JQc5HKkCZRC6JKkzZmWzcaFGlLPsh9dcWEeZuNhwnAZfmPXgz6Aw==" + }, + "@ucap/ng-web-storage": { + "version": "file:dist/web-storage/ucap-ng-web-storage-0.0.1.tgz", + "integrity": "sha512-r74sXWxe6dHD/tiJ4VcWQ+oRD2yDbIFNJtsO7NyI/pMRILXyUX5qUDl53SEPL4m1vSFGXztIDyQ6DSi7UYcWCw==", + "dev": true + }, + "@ucap/pi": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/pi/-/pi-0.0.1.tgz", + "integrity": "sha512-IC+eh+AK4eemLLgvvn0O30qGjnCMTt3MHMjc+W1ykyZ3sCAYdZwqJTWM9YIhEJio/tE7Ayvvu8eMuchRW5Fc1w==", + "dev": true, + "requires": { + "@ucap/api": "^0.0.1", + "@ucap/core": "^0.0.1", + "axios": "^0.19.2", + "crypto-js": "^4.0.0", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol/-/protocol-0.0.1.tgz", + "integrity": "sha512-gz7415jNG5Mv9SskjKtfFTrwuT+boizCaqyzaqLCgr3ScHUl/MTtMiEZUg1y73aMDaOe0qFuuqulaKlv+578Ww==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/web-socket": "^0.0.1", + "queueing-subject": "^0.3.4", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-authentication": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-authentication/-/protocol-authentication-0.0.1.tgz", + "integrity": "sha512-BSwNrclg5uHjdd9B7Z8WKZbCdBTkbK7Hbj1t+sF9UvFXlld6SS7xhB1T1lKhGhGHWfVDpxBk9Gmle/hPnznGxw==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-buddy": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-buddy/-/protocol-buddy-0.0.1.tgz", + "integrity": "sha512-oBvnEXmL8jVye8GngH5mDF1jqJVGeBAmU4pmSDkGQoR6oU9CO5wHjx4A+6OMylJVNMABN6J4KHZk9bNQQrXL1Q==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-event": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-event/-/protocol-event-0.0.1.tgz", + "integrity": "sha512-Sm8KzeEYvex0Y4mWHpdLz/J+2QbR/EoUG0bMtZGx2q719pIlm0TvqXZnF11CVh4meHWkbbX5M3ooMsfjIJB0Uw==", + "dev": true, + "requires": { + "@ucap/api": "^0.0.1", + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-file": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-file/-/protocol-file-0.0.1.tgz", + "integrity": "sha512-u4ME8/okqXVtsGRID8oQhNxkQDp6ADl0xA8y1woDVsXv3SE0QhZNQKWVE1Au5vvp6VxT/q8vD6WgTPK3Evca4g==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "@ucap/protocol-event": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-group": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-group/-/protocol-group-0.0.1.tgz", + "integrity": "sha512-v833QlDnbB9dU1C9CrjAybWlLM6RBw1bUlx4FGg9ml33Swoj0QDyezTFejVLrt8Xa77PF4wgwS43qBdac2KVmA==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-info": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-info/-/protocol-info-0.0.1.tgz", + "integrity": "sha512-c2oB8juMxg8LQxfPiWClG6nguy2VCBxr9HnCPNXd7DX1vpy1fQKtV8qS5mdi8Th8fr1C3Z3Fs/6pN0zLkznxCQ==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "@ucap/protocol-status": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-inner": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-inner/-/protocol-inner-0.0.1.tgz", + "integrity": "sha512-hx+luBngrIs4UmrFu0vG3OGj6XHgn68yGmnTZj0LPwyuXWsB6nrM5hchbGfYc1jXBiaQfGdOlH2GpgCx9Ab/XQ==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-option": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-option/-/protocol-option-0.0.1.tgz", + "integrity": "sha512-7cM6qmvbpjmDoj4pL34PFXak3HNYBzIRy7yLtq6YNP3p8BiwfQqYJvsbIn1GzEScFk44vmXx2FC1WId6p2HnoQ==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-ping": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-ping/-/protocol-ping-0.0.1.tgz", + "integrity": "sha512-Is43L6aSOkvvO7uyhrs8EWRBQDO9YlYXcH19Xp1DRCsL0bKJcn7k/Gd8UYrpi6UaCVbWonYCoGEv9vwWunPjBg==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-query": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-query/-/protocol-query-0.0.1.tgz", + "integrity": "sha512-Cpxu49vhsA7q5r3Wm4JdH5/tQ7V3PxIi51C4X7XzPElZcDI/UqNwCbQ4TDaUqU1O2BO+GenUYcCBk6e9btz2QA==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "@ucap/protocol-authentication": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-room": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-room/-/protocol-room-0.0.1.tgz", + "integrity": "sha512-yeybVz85ujTuf3jGHEIxQ34dxyRTZIf4Im4ioUQulaKIb8vaSDSFEv0HGbbVWFoYR+2iFKPiXWBs7v7UCCXjMw==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "@ucap/protocol-authentication": "^0.0.1", + "@ucap/protocol-event": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-service": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-service/-/protocol-service-0.0.1.tgz", + "integrity": "sha512-mQ8KUgywBprH3zEhLAJmoyL2CHPqknqgbUi2VA8eIzM4XAZXvvzVXHbPjRfXJPkcsezHvYcpXG0JNM7qGHkxjg==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-status": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-status/-/protocol-status-0.0.1.tgz", + "integrity": "sha512-nMLCvYp8MycaePawl7GfCLxaFnCSXiBdvrnsl84WnhE53IRm10qMasJjvqBja5RPNX8QaogmrPqIzDXP45wfRg==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-sync": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-sync/-/protocol-sync-0.0.1.tgz", + "integrity": "sha512-MbBB3Te4KWfC1OYDsGqBSSX64SaMTG57CDZrG9wTLf+RnU5fq5SEk4QJB211fi+uKD8zUZqHARgYbypPfd+Iow==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "@ucap/protocol-authentication": "^0.0.1", + "@ucap/protocol-event": "^0.0.1", + "@ucap/protocol-room": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/protocol-umg": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/protocol-umg/-/protocol-umg-0.0.1.tgz", + "integrity": "sha512-5oUI96XDK3aLnHs9Z0lv1SLPbhtDRqBXXr3Ez1nF6IPEG4J9eYSqYOOc3hom4xo6eQXXerOX5le245yXzM7wOw==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "@ucap/protocol": "^0.0.1", + "rxjs": "^6.5.4" + } + }, + "@ucap/web-socket": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/web-socket/-/web-socket-0.0.1.tgz", + "integrity": "sha512-T10syd72WfdTMVnAF5nG5PF6zk9NfOiika1+x2abOlPPPepZqamdr7317kI0ZJzleynczp02hgZuPC0DC0KiMQ==", + "dev": true, + "requires": { + "rxjs": "^6.5.4" + } + }, + "@ucap/web-storage": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@ucap/web-storage/-/web-storage-0.0.1.tgz", + "integrity": "sha512-JN+CpYDrGBGTvf2XiBp1qDEYP5K0epwbyL1Jb8YY5I/B2AInztRj/s+1hjRClozbkm8rAyvtNQSK9rCdz/2xew==", + "dev": true, + "requires": { + "@ucap/core": "^0.0.1", + "crypto-js": "^4.0.0", + "rxjs": "^6.5.4" + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@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 + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "dev": true + }, + "adm-zip": { + "version": "0.4.14", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/adm-zip/-/adm-zip-0.4.14.tgz", + "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/agentkeepalive/-/agentkeepalive-4.1.0.tgz", + "integrity": "sha512-CW/n1wxF8RpEuuiq6Vbn9S8m0VSYDMnZESqaJ6F2cWN9fY8rei2qaxweIaRgq+ek8TqfoFIsUjaGNKGGEHElSg==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "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.10.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.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 + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "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 + }, + "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 + }, + "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" + } + }, + "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" + } + } + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "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 + }, + "archy": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "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" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "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-find-index": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "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 + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "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" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "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 + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "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 + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "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 + }, + "autolinker": { + "version": "3.13.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/autolinker/-/autolinker-3.13.0.tgz", + "integrity": "sha512-qlM0Su9lYYJ7lAth6xxB0rRdpS4FGmRboaghmM45Ud6ygGZa/TK/cbRAX6afvusJ79vyciy18QSKrWTM6cJHiw==", + "dev": true, + "requires": { + "tslib": "^1.9.3" + } + }, + "autoprefixer": { + "version": "9.7.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/autoprefixer/-/autoprefixer-9.7.1.tgz", + "integrity": "sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw==", + "dev": true, + "requires": { + "browserslist": "^4.7.2", + "caniuse-lite": "^1.0.30001006", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.21", + "postcss-value-parser": "^4.0.2" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "axios": { + "version": "0.19.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.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 + } + } + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "dependencies": { + "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" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "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-arraybuffer": { + "version": "0.1.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "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 + }, + "base64id": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "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": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "^1.2.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 + }, + "body-parser": { + "version": "1.19.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "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 + }, + "qs": { + "version": "6.7.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boxen": { + "version": "4.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.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" + } + }, + "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 + } + } + }, + "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" + } + }, + "browserslist": { + "version": "4.11.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/browserslist/-/browserslist-4.11.0.tgz", + "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.380", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" + } + }, + "browserstack": { + "version": "1.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/browserstack/-/browserstack-1.5.3.tgz", + "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, + "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-alloc": { + "version": "1.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "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-indexof": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "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": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "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 + }, + "builtins": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "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 + }, + "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 + } + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "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 + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001038", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", + "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "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" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "chokidar": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.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" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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" + } + }, + "circular-dependency-plugin": { + "version": "5.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "dev": true + }, + "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-css": { + "version": "4.2.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cli-spinners/-/cli-spinners-2.2.0.tgz", + "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "dev": true + }, + "cli-width": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.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" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "5.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/codelyzer/-/codelyzer-5.2.2.tgz", + "integrity": "sha512-jB4FZ1Sx7kZhvZVdf+N2BaKTdrrNZOL0Bj10RRfrhHrb3zEvXjJvvq298JPMJAiyiCS/v4zs1QlGU0ip7xGqeA==", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "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 + }, + "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 + } + } + }, + "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": { + "version": "3.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "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 + }, + "color-string": { + "version": "1.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "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 + }, + "compare-versions": { + "version": "3.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "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 + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "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 + } + } + }, + "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-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 + }, + "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" + } + }, + "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 + }, + "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 + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.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" + } + }, + "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 + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "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 + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "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 + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "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 + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": 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 + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "coverage-istanbul-loader": { + "version": "2.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz", + "integrity": "sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA==", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.0", + "loader-utils": "^1.2.3", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.6.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "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 + } + } + }, + "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" + } + }, + "crypto-js": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/crypto-js/-/crypto-js-4.0.0.tgz", + "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==", + "dev": true + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, + "css": { + "version": "2.2.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "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 + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-parse": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "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 + } + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "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 + } + } + }, + "cuint": { + "version": "0.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "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 + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "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 + }, + "date-format": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "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" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "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 + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "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" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "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" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "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" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "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" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-browser": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/detect-browser/-/detect-browser-5.0.0.tgz", + "integrity": "sha512-jUaq/SAT9YMlmhq/8w7gnqqr8AMcc7iYG1eAp7vP/7xn2eLtlcnEmxOkh2PmTg2Q+jVSUO3XD4sZ/IldbGg3dA==", + "dev": true + }, + "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 + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": 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" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, + "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 + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "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" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.387", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/electron-to-chromium/-/electron-to-chromium-1.3.387.tgz", + "integrity": "sha512-jjQ6WkxrOu0rtGqY9/74Z+UEVQ7YmJU2rCX6kH4eidKP0ZK0VKB3/i1avXQ+EDwJAABKGaOAbJrcyz18P8E3aA==", + "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": "8.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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 + }, + "encoding": { + "version": "0.1.12", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "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" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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 + }, + "ws": { + "version": "3.3.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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 + }, + "ws": { + "version": "3.3.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "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" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "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-promise": { + "version": "4.2.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": 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 + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "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 + }, + "eventsource": { + "version": "1.0.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "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" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "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 + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "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 + }, + "qs": { + "version": "6.7.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "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" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "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" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "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 + }, + "figures": { + "version": "3.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "4.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/file-loader/-/file-loader-4.2.0.tgz", + "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "file-type": { + "version": "14.1.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/file-type/-/file-type-14.1.4.tgz", + "integrity": "sha512-1n6FczX8n73Y/cLjTiMboeTGHfm/i2AWk2oQE7m9a/G5YTCZHCEHEGr32thhLm3iQNUYzTKVQUcYcNHtOLwqgQ==", + "dev": true, + "requires": { + "readable-web-to-node-stream": "^2.0.0", + "strtok3": "^6.0.0", + "token-types": "^2.0.0", + "typedarray-to-buffer": "^3.1.5" + } + }, + "fileset": { + "version": "2.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": 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" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.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 + } + } + }, + "find-cache-dir": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/find-cache-dir/-/find-cache-dir-3.0.0.tgz", + "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, + "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" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "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" + } + }, + "follow-redirects": { + "version": "1.10.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/follow-redirects/-/follow-redirects-1.10.0.tgz", + "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "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 + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "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" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "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": "9.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "dependencies": { + "jsonfile": { + "version": "6.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } + } + }, + "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": "2.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "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": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "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 + }, + "getpass": { + "version": "0.1.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/glob/-/glob-7.1.5.tgz", + "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "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-dirs": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "requires": { + "ini": "^1.3.5" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "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 + } + } + }, + "globs": { + "version": "0.1.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/globs/-/globs-0.1.4.tgz", + "integrity": "sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ==", + "dev": true, + "requires": { + "glob": "^7.1.1" + } + }, + "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 + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "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-ansi": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "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 + }, + "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" + } + } + } + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "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" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "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" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "3.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-escaper": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/html-escaper/-/html-escaper-2.0.1.tgz", + "integrity": "sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ==", + "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 + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "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 + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "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 + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "i18next": { + "version": "19.3.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/i18next/-/i18next-19.3.3.tgz", + "integrity": "sha512-CnuPqep5/JsltkGvQqzYN4d79eCe0TreCBRF3a8qHHi8x4SON1qqZ/pvR2X7BfNkNqpA5HXIqw0E731H+VsgSg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "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 + }, + "ignore": { + "version": "3.3.10", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "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 + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "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 + }, + "injection-js": { + "version": "2.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/injection-js/-/injection-js-2.3.0.tgz", + "integrity": "sha512-rhS6E5jv603kbaO72ylOt0hGF1LT03oqQ4GU5KOO0qSaRbIWmdUCHjXq+VT79jL6/NmXtw9ccfK6dh/CzjoYjA==", + "dev": true + }, + "inquirer": { + "version": "7.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.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" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "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-arguments": { + "version": "1.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "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": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.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-ci": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "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-directory": { + "version": "0.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "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-installed-globally": { + "version": "0.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-installed-globally/-/is-installed-globally-0.3.1.tgz", + "integrity": "sha512-oiEcGoQbGc+3/iijAijrK2qFpkNoNjsHOm/5V5iaeydyrS/hnwaRCEgH5cpW0P3T1lSjV5piB7S5b5lEugNLhg==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "dependencies": { + "is-path-inside": { + "version": "3.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + } + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-npm": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, + "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-obj": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "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-promise": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-reference": { + "version": "1.1.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "requires": { + "@types/estree": "0.0.39" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + } + } + }, + "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-resolvable": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "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-typedarray": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "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": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", + "dev": true + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "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 + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "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 + }, + "isstream": { + "version": "0.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-api/-/istanbul-api-2.1.6.tgz", + "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "compare-versions": "^3.4.0", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "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" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "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" + } + }, + "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 + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "3.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jasmine-core/-/jasmine-core-3.5.0.tgz", + "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "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" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "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-parse-even-better-errors": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json-parse-even-better-errors/-/json-parse-even-better-errors-2.2.0.tgz", + "integrity": "sha512-2tLgY7LRNZ9Hd6gmCuBG5/OjRHQpSgJQqJoYyLLOhUgn8LdOYrjaZLcxkWnDads+AD/haWWioPNziXQcgvQJ/g==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "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 + }, + "json3": { + "version": "3.3.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": 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" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jszip/-/jszip-3.2.2.tgz", + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "4.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/karma/-/karma-4.3.0.tgz", + "integrity": "sha512-NSPViHOt+RW38oJklvYxQC4BSQsv737oQlr/r06pCM+slDOr4myuI1ivkRmp+3dVpJDfZt2DmaPJ2wkx+ZZuMQ==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^3.1.3", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.14", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "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" + } + }, + "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 + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz", + "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==", + "dev": true, + "requires": { + "istanbul-api": "^2.1.6", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/karma-jasmine/-/karma-jasmine-2.0.1.tgz", + "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "dev": true, + "requires": { + "jasmine-core": "^3.3" + } + }, + "karma-jasmine-html-reporter": { + "version": "1.5.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.3.tgz", + "integrity": "sha512-ci0VrjuCaFj+9d1tYlTE3KIPUCp0rz874zWWU3JgCMqGIyw5ke+BXWFPOAGAqUdCJcrMwneyvp1zFXA74MiPUA==", + "dev": true + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "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" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "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 + }, + "latest-version": { + "version": "5.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "less": { + "version": "3.10.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/less/-/less-3.10.3.tgz", + "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "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, + "optional": true + } + } + }, + "less-loader": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/less-loader/-/less-loader-5.0.0.tgz", + "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + } + }, + "libphonenumber-js": { + "version": "1.7.48", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/libphonenumber-js/-/libphonenumber-js-1.7.48.tgz", + "integrity": "sha512-qiHOxCBQ8cNqSkpUcAFn0vwk8eZs6Bq6ttQTiiAICEfUZp3uQ/RuOnPqYMw5qciHCrCNjLN3qp3ih1u0+NuzVA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "xml2js": "^0.4.17" + } + }, + "license-webpack-plugin": { + "version": "2.1.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz", + "integrity": "sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "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" + }, + "dependencies": { + "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 + } + } + }, + "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.2.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.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 + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "log4js": { + "version": "4.5.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + } + }, + "loglevel": { + "version": "1.6.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", + "dev": true + }, + "loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "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 + } + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "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" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "make-fetch-happen": { + "version": "8.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/make-fetch-happen/-/make-fetch-happen-8.0.4.tgz", + "integrity": "sha512-hIFoqGq1db0QMiy/Atr/pI1Rs4rDV+ZdGSey2SQyF3KK3u1z4aj9mS5UdNnZkdQpA+H3pGn0J3KlEwsi2x4EqA==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.0", + "cacache": "^15.0.0", + "http-cache-semantics": "^4.0.4", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.1.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + }, + "dependencies": { + "cacache": { + "version": "15.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cacache/-/cacache-15.0.0.tgz", + "integrity": "sha512-L0JpXHhplbJSiDGzyJJnJCTL7er7NzbBgxzVqLswEb4bO91Zbv17OUMuUeu/q0ZwKn3V+1HM4wb9tO4eVE/K8g==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^8.0.0", + "tar": "^6.0.1", + "unique-filename": "^1.1.1" + } + }, + "mkdirp": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", + "dev": true + }, + "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" + } + }, + "ssri": { + "version": "8.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + } + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "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-obj": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "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" + } + }, + "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" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "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 + }, + "meow": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "methods": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "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" + }, + "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" + } + } + } + }, + "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" + } + } + } + }, + "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" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "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 + }, + "mini-css-extract-plugin": { + "version": "0.8.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", + "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + } + } + }, + "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 + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "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-fetch": { + "version": "1.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minipass-fetch/-/minipass-fetch-1.2.1.tgz", + "integrity": "sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-pipeline": "^1.2.2", + "minipass-sized": "^1.0.3", + "minizlib": "^2.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-json-stream": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "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" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.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" + } + }, + "moment": { + "version": "2.24.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "moment-timezone": { + "version": "0.5.28", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/moment-timezone/-/moment-timezone-0.5.28.tgz", + "integrity": "sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==", + "dev": true, + "requires": { + "moment": ">= 2.9.0" + } + }, + "move-cli": { + "version": "1.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/move-cli/-/move-cli-1.2.1.tgz", + "integrity": "sha512-tsXvWsP/ZNCP007xO2TjNwH5LtTuRaSNtdznGNHGXqBs8OLzii8yeN06G8PUd9qEumhCOJtb468Rus7KNvNcBg==", + "dev": true, + "requires": { + "meow": "^5.0.0", + "mv": "^2.1.1" + } + }, + "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 + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "mv": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "dev": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "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" + } + }, + "ncp": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "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 + }, + "ng-packagr": { + "version": "9.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ng-packagr/-/ng-packagr-9.1.0.tgz", + "integrity": "sha512-783WCTa+qQl8QQefQ3n8cDzYF3PpsQUnY87SwuXIxaJ1p8NjBq/3vCZmTiI3AXzDZFhRacbCqghtaJGU1qcFrQ==", + "dev": true, + "requires": { + "@rollup/plugin-commonjs": "^11.0.2", + "@rollup/plugin-json": "^4.0.0", + "@rollup/plugin-node-resolve": "^7.1.0", + "ajv": "^6.10.2", + "autoprefixer": "^9.6.5", + "browserslist": "^4.7.0", + "chalk": "^3.0.0", + "chokidar": "^3.2.1", + "clean-css": "^4.1.11", + "commander": "^4.0.0", + "fs-extra": "^9.0.0", + "glob": "^7.1.2", + "injection-js": "^2.2.1", + "less": "^3.10.3", + "node-sass-tilde-importer": "^1.0.0", + "postcss": "^7.0.18", + "postcss-url": "^8.0.0", + "read-pkg-up": "^5.0.0", + "rimraf": "^3.0.0", + "rollup": "2.2.0", + "rollup-plugin-sourcemaps": "^0.5.0", + "rxjs": "^6.5.0", + "sass": "^1.23.0", + "stylus": "^0.54.7", + "terser": "^4.3.8", + "update-notifier": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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": "4.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "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 + }, + "parse-json": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "read-pkg-up": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-pkg-up/-/read-pkg-up-5.0.0.tgz", + "integrity": "sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^5.0.0" + } + }, + "rollup": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rollup/-/rollup-2.2.0.tgz", + "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", + "dev": true, + "requires": { + "fsevents": "~2.1.2" + } + }, + "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" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "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-forge": { + "version": "0.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "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 + } + } + }, + "node-releases": { + "version": "1.1.52", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/node-releases/-/node-releases-1.1.52.tgz", + "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "node-sass-tilde-importer": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz", + "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==", + "dev": true, + "requires": { + "find-parent-dir": "^0.3.0" + } + }, + "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" + }, + "dependencies": { + "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 + }, + "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 + } + } + }, + "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-range": { + "version": "0.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + }, + "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 + } + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.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 + } + } + }, + "npm-packlist": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-packlist/-/npm-packlist-2.1.1.tgz", + "integrity": "sha512-95TSDvGwujIhqfSpIiRRLodEF+y6mJMopuZdahoGzqtRDFZXGav46S0p6ngeWaiAkb5R72w6eVARhzej0HvZeQ==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "dependencies": { + "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" + } + } + } + }, + "npm-pick-manifest": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-pick-manifest/-/npm-pick-manifest-6.0.0.tgz", + "integrity": "sha512-PdJpXMvjqt4nftNEDpCgjBUF8yI3Q3MyuAmVB9nemnnCg32F4BPL/JFBfdj8DubgHCYUFQhtLWmBPvdsFtjWMg==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.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 + } + } + }, + "npm-registry-fetch": { + "version": "8.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-registry-fetch/-/npm-registry-fetch-8.0.0.tgz", + "integrity": "sha512-975WwLvZjX97y9UWWQ8nAyr7bw02s9xKPHqvEm5T900LQsB1HXb8Gb9ebYtCBLSX+K8gSOrO5KS/9yV/naLZmQ==", + "dev": true, + "requires": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^8.0.2", + "minipass": "^3.0.0", + "minipass-fetch": "^1.1.2", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.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": { + "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" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "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-component": { + "version": "0.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "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-is": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "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.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "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" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "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" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/open/-/open-7.0.0.tgz", + "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==", + "dev": true, + "requires": { + "is-wsl": "^2.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "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 + } + } + }, + "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 + } + } + }, + "ora": { + "version": "4.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.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" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "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 + }, + "os-locale": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "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-defer": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "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-retry": { + "version": "3.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.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 + }, + "package-json": { + "version": "6.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + } + }, + "pacote": { + "version": "11.1.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pacote/-/pacote-11.1.4.tgz", + "integrity": "sha512-eUGJvSSpWFZKn3z8gig/HgnBmUl6gIWByIIaHzSyEr3tOWX0w8tFEADXtpu8HGv5E0ShCeTP6enRq8iHKCHSvw==", + "dev": true, + "requires": { + "@npmcli/git": "^2.0.1", + "@npmcli/installed-package-contents": "^1.0.5", + "@npmcli/promise-spawn": "^1.1.0", + "cacache": "^15.0.0", + "chownr": "^1.1.4", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.1", + "minipass-fetch": "^1.2.1", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^8.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "read-package-json-fast": "^1.1.3", + "rimraf": "^2.7.1", + "semver": "^7.1.3", + "ssri": "^8.0.0", + "tar": "^6.0.1", + "which": "^2.0.2" + }, + "dependencies": { + "cacache": { + "version": "15.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/cacache/-/cacache-15.0.0.tgz", + "integrity": "sha512-L0JpXHhplbJSiDGzyJJnJCTL7er7NzbBgxzVqLswEb4bO91Zbv17OUMuUeu/q0ZwKn3V+1HM4wb9tO4eVE/K8g==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^8.0.0", + "tar": "^6.0.1", + "unique-filename": "^1.1.1" + } + }, + "mkdirp": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", + "dev": true + }, + "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" + } + }, + "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 + }, + "ssri": { + "version": "8.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "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" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "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-is-inside": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "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-to-regexp": { + "version": "0.1.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "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" + }, + "dependencies": { + "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 + } + } + }, + "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" + } + }, + "peek-readable": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/peek-readable/-/peek-readable-3.1.0.tgz", + "integrity": "sha512-KGuODSTV6hcgdZvDrIDBUkN0utcAVj1LL7FfGbM0viKTtCHmtZcuEJ+lGqsp0fTFkGqesdtemV2yUSMeyy3ddA==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "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": "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 + }, + "pinkie": { + "version": "2.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "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" + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "portfinder": { + "version": "1.0.25", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "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 + }, + "postcss": { + "version": "7.0.21", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.27", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "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 + }, + "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" + } + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-url": { + "version": "8.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-url/-/postcss-url-8.0.0.tgz", + "integrity": "sha512-E2cbOQ5aii2zNHh8F6fk1cxls7QVFZjLPSrqvmiza8OuXLzIpErij8BDS5Y3STPfJgpIMNCPEr8JlKQWEoozUw==", + "dev": true, + "requires": { + "mime": "^2.3.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.0", + "postcss": "^7.0.2", + "xxhashjs": "^0.2.1" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "pretty-bytes": { + "version": "5.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pretty-bytes/-/pretty-bytes-5.3.0.tgz", + "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "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 + }, + "promise": { + "version": "7.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "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 + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "protractor": { + "version": "5.4.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/protractor/-/protractor-5.4.3.tgz", + "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "@types/q": { + "version": "0.0.32", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "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" + } + }, + "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 + }, + "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 + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webdriver-manager/-/webdriver-manager-12.1.7.tgz", + "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "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 + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "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 + }, + "pupa": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, + "q": { + "version": "1.5.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "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 + }, + "querystringify": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "queueing-subject": { + "version": "0.3.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/queueing-subject/-/queueing-subject-0.3.4.tgz", + "integrity": "sha512-sdpymi9eq80oZyg74NrIGr1GHKIDRmBLZp+xqOct8Do5KpKalPsSz9NxApZb0S2j+EEDMzDlosBN5NJGFLmS7A==", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "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" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/raw-loader/-/raw-loader-3.1.0.tgz", + "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-package-json": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-package-json/-/read-package-json-2.1.1.tgz", + "integrity": "sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-json-fast": { + "version": "1.1.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-package-json-fast/-/read-package-json-fast-1.1.3.tgz", + "integrity": "sha512-MmFqiyfCXV2Dmm4jH24DEGhxdkUDFivJQj4oPZQPOKywxR7HWBE6WnMWDAapfFHi3wm1b+mhR+XHlUH0CL8axg==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.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" + }, + "dependencies": { + "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 + } + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "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" + } + } + } + }, + "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" + } + }, + "readable-web-to-node-stream": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/readable-web-to-node-stream/-/readable-web-to-node-stream-2.0.0.tgz", + "integrity": "sha512-+oZJurc4hXpaaqsN68GoZGQAQIA3qr09Or4fqEsargABnbe5Aau8hFn6ISVleT3cpY/0n/8drn7huyyEvTbghA==", + "dev": true + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "indent-string": { + "version": "3.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + } + } + }, + "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 + }, + "regenerate": { + "version": "1.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "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" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "registry-auth-token": { + "version": "4.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/registry-auth-token/-/registry-auth-token-4.1.1.tgz", + "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "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 + }, + "request": { + "version": "2.88.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "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": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "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-cwd": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "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" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "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 + }, + "retry": { + "version": "0.12.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "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" + } + }, + "rollup": { + "version": "1.25.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rollup/-/rollup-1.25.2.tgz", + "integrity": "sha512-+7z6Wab/L45QCPcfpuTZKwKiB0tynj05s/+s2U3F2Bi7rOLPr9UcjUwO7/xpjlPNXA/hwnth6jBExFRGyf3tMg==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-sourcemaps": { + "version": "0.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.5.0.tgz", + "integrity": "sha512-xp2vvRvgnYiXydgf/JFFFgYxrqMaQaOrK/g6yZvgwT9R1TSYjD3HKku1pD7iQNjQHkl5yGpokvJLp7cP/lR+aQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.1", + "source-map-resolve": "^0.5.3" + } + }, + "run-async": { + "version": "2.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "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" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.23.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sass/-/sass-1.23.3.tgz", + "integrity": "sha512-1DKRZxJMOh4Bme16AbWTyYeJAjTlrvw2+fWshHHaepeJfGq2soFZTnt0YhWit+bohtDu4LdyPoEj6VFD4APHog==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "8.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sass-loader/-/sass-loader-8.0.0.tgz", + "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "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" + } + }, + "scss-bundle": { + "version": "3.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/scss-bundle/-/scss-bundle-3.1.1.tgz", + "integrity": "sha512-9nE6gJJmclkjtEatPL++RxU7KITjkZRsKYqR9W5zu2vzT4krdFiuiJVxcYeKGZz+/JGYMTUCUcDCE7Lo011sVg==", + "dev": true, + "requires": { + "@types/archy": "^0.0.31", + "@types/debug": "^4.1.5", + "@types/fs-extra": "^8.0.1", + "@types/glob": "^7.1.1", + "@types/lodash.debounce": "^4.0.6", + "@types/sass": "^1.16.0", + "archy": "^1.0.0", + "chalk": "^3.0.0", + "chokidar": "^3.3.1", + "commander": "^4.0.1", + "fs-extra": "^8.1.0", + "globs": "^0.1.4", + "lodash.debounce": "^4.0.8", + "loglevel": "^1.6.6", + "loglevel-plugin-prefix": "^0.8.4", + "pretty-bytes": "^5.3.0", + "sass": "^1.23.7", + "tslib": "^1.10.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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": "4.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "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" + } + }, + "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 + }, + "sass": { + "version": "1.26.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sass/-/sass-1.26.3.tgz", + "integrity": "sha512-5NMHI1+YFYw4sN3yfKjpLuV9B5l7MqQ6FlkTcC4FT+oHbBRUZoSjHrrt/mE0nFXJyY2kQtU9ou9HxvFVjLFuuw==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.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" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "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" + } + }, + "tmp": { + "version": "0.0.30", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "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 + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "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-intersect": { + "version": "1.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + }, + "dependencies": { + "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 + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.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" + }, + "dependencies": { + "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 + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "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 + }, + "serve-index": { + "version": "1.9.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "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" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "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 + }, + "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 + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "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-immediate-shim": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "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 + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "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" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "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 + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true + }, + "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" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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 + } + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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 + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "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 + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", + "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4", + "socks": "^2.3.3" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "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.7.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "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" + }, + "dependencies": { + "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-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 + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "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 + }, + "spdy": { + "version": "4.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "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.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 + }, + "sshpk": { + "version": "1.16.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "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" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "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" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "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 + }, + "streamroller": { + "version": "1.0.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/streamroller/-/streamroller-1.0.6.tgz", + "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.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": "3.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.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 + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strtok3": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strtok3/-/strtok3-6.0.0.tgz", + "integrity": "sha512-ZXlmE22LZnIBvEU3n/kZGdh770fYFie65u5+2hLK9s74DoFtpkQIdBZVeYEzlolpGa+52G5IkzjUWn+iXynOEQ==", + "dev": true, + "requires": { + "@tokenizer/token": "^0.1.1", + "@types/debug": "^4.1.5", + "debug": "^4.1.1", + "peek-readable": "^3.1.0" + } + }, + "style-loader": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/style-loader/-/style-loader-1.0.0.tgz", + "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylus": { + "version": "0.54.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/stylus/-/stylus-0.54.7.tgz", + "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.3", + "mkdirp": "~0.5.x", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.0.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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 + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "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" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "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 + }, + "tar": { + "version": "6.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tar/-/tar-6.0.1.tgz", + "integrity": "sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q==", + "dev": true, + "requires": { + "chownr": "^1.1.3", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.0", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", + "dev": true + } + } + }, + "term-size": { + "version": "2.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true + }, + "terser": { + "version": "4.5.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/terser/-/terser-4.5.1.tgz", + "integrity": "sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "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 + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/terser-webpack-plugin/-/terser-webpack-plugin-2.3.3.tgz", + "integrity": "sha512-gWHkaGzGYjmDoYxksFZynWTzvXOAjQ5dd7xuTMYlv4zpWlLSb6v0QLSZjELzP5dMs1ox30O1BIPs9dgqlMHuLQ==", + "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" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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": "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" + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "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" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "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" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "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-fast-properties": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "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" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "token-types": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/token-types/-/token-types-2.0.0.tgz", + "integrity": "sha512-WWvu8sGK8/ZmGusekZJJ5NM6rRVTTDO7/bahz4NGiSDb/XsmdYBn6a1N/bymUHuWYTWeuLUg98wUzvE4jPdCZw==", + "dev": true, + "requires": { + "@tokenizer/token": "^0.1.0", + "ieee754": "^1.1.13" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "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 + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "tryer": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "ts-node": { + "version": "8.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ts-node/-/ts-node-8.3.0.tgz", + "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + } + }, + "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==" + }, + "tslint": { + "version": "5.18.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tslint/-/tslint-5.18.0.tgz", + "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "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.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "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 + }, + "diff": { + "version": "3.5.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "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 + } + } + }, + "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-agent": { + "version": "0.6.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.11.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "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 + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "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 + }, + "ultron": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "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" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "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" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "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 + }, + "unpipe": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "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 + }, + "update-notifier": { + "version": "4.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/update-notifier/-/update-notifier-4.1.0.tgz", + "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "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": { + "version": "1.4.7", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "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" + }, + "dependencies": { + "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 + } + } + }, + "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 + }, + "useragent": { + "version": "2.3.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "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 + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "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" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.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 + }, + "void-elements": { + "version": "2.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "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" + }, + "dependencies": { + "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": { + "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" + } + } + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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": { + "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 + } + } + }, + "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-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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.41.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack/-/webpack-4.41.2.tgz", + "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "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.1", + "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.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "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 + }, + "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" + } + }, + "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-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 + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.6.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.1.tgz", + "integrity": "sha512-Nfd8HDwfSx1xBwC+P8QMGvHAOITxNBSvu/J/mCJvOwv+G4VWkU7zir9SSenTtyCi0LnVtmsc7G5SZo1uV+bxRw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.9.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", + "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.4", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "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": { + "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" + } + } + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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": { + "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 + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "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-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" + } + }, + "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" + } + }, + "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" + } + }, + "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-log": { + "version": "2.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "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-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" + }, + "dependencies": { + "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 + } + } + }, + "webpack-subresource-integrity": { + "version": "1.3.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/webpack-subresource-integrity/-/webpack-subresource-integrity-1.3.4.tgz", + "integrity": "sha512-6XbGYzjh30cGQT/NsC+9IAkJP8IL7/t47sbwR5DLSsamiD56Rwv4/+hsgEHsviPvrEFZ0JRAQtCRN3UsR2Pw9g==", + "dev": true, + "requires": { + "webpack-sources": "^1.3.0" + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "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 + }, + "widest-line": { + "version": "3.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "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" + } + }, + "worker-plugin": { + "version": "3.2.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/worker-plugin/-/worker-plugin-3.2.0.tgz", + "integrity": "sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "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 + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, + "xml2js": { + "version": "0.4.23", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "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 + }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "^0.2.2" + } + }, + "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": "12.0.5", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "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 + }, + "zone.js": { + "version": "0.10.3", + "resolved": "http://10.81.13.221:8081/nexus/repository/npm-all/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a599a45 --- /dev/null +++ b/package.json @@ -0,0 +1,223 @@ +{ + "name": "ucap-angular", + "version": "0.0.0", + "private": true, + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "clean:all": "rimraf dist/*", + "build:all": "npm-run-all -s clean:all build:core build:util:all build:api:all build:protocol:all build:native:all build:store:all build:ui:all build:ui-skin:all", + "build:api:all": "npm-run-all -s build:api-common build:api-external build:api-message build:api-prompt build:api-public build:pi", + "build:api-common": "node ./scripts/build.js api-common", + "build:api-external": "node ./scripts/build.js api-external", + "build:api-message": "node ./scripts/build.js api-message", + "build:api-prompt": "node ./scripts/build.js api-prompt", + "build:api-public": "node ./scripts/build.js api-public", + "build:pi": "node ./scripts/build.js pi", + "build:core": "node ./scripts/build.js core", + "build:native:all": "npm-run-all -s build:native build:native-browser", + "build:native": "node ./scripts/build.js native", + "build:native-browser": "node ./scripts/build.js native-browser", + "build:protocol:all": "npm-run-all -s build:protocol build:protocol-authentication build:protocol-buddy build:protocol-event build:protocol-file build:protocol-group build:protocol-status build:protocol-info build:protocol-inner build:protocol-option build:protocol-ping build:protocol-query build:protocol-room build:protocol-service build:protocol-sync build:protocol-umg", + "build:protocol": "node ./scripts/build.js protocol", + "build:protocol-authentication": "node ./scripts/build.js protocol-authentication", + "build:protocol-buddy": "node ./scripts/build.js protocol-buddy", + "build:protocol-event": "node ./scripts/build.js protocol-event", + "build:protocol-file": "node ./scripts/build.js protocol-file", + "build:protocol-group": "node ./scripts/build.js protocol-group", + "build:protocol-info": "node ./scripts/build.js protocol-info", + "build:protocol-inner": "node ./scripts/build.js protocol-inner", + "build:protocol-option": "node ./scripts/build.js protocol-option", + "build:protocol-ping": "node ./scripts/build.js protocol-ping", + "build:protocol-query": "node ./scripts/build.js protocol-query", + "build:protocol-room": "node ./scripts/build.js protocol-room", + "build:protocol-service": "node ./scripts/build.js protocol-service", + "build:protocol-status": "node ./scripts/build.js protocol-status", + "build:protocol-sync": "node ./scripts/build.js protocol-sync", + "build:protocol-umg": "node ./scripts/build.js protocol-umg", + "build:util:all": "npm-run-all -s build:web-storage build:i18n", + "build:web-storage": "node ./scripts/build.js web-storage", + "build:i18n": "node ./scripts/build.js i18n", + "build:store:all": "npm-run-all -s build:store-organization build:store-authentication build:store-group build:store-chat", + "build:store-authentication": "node ./scripts/build.js store-authentication", + "build:store-chat": "node ./scripts/build.js store-chat", + "build:store-group": "node ./scripts/build.js store-group", + "build:store-organization": "node ./scripts/build.js store-organization", + "build:ui:all": "npm-run-all -s build:ui build:ui-organization build:ui-authentication", + "build:ui": "node ./scripts/build.js ui", + "build:ui-organization": "node ./scripts/build.js ui-organization", + "build:ui-authentication": "node ./scripts/build.js ui-authentication", + "build:ui-skin:all": "npm-run-all -s build:ui-skin-default", + "build:ui-skin-default": "node ./scripts/build.js ui-skin-default useScssBundle", + "publish:all": "npm-run-all -s publish:core publish:util:all publish:api:all publish:protocol:all publish:native:all publish:store:all publish:ui:all publish:ui-skin:all", + "publish:api:all": "npm-run-all -s publish:api-common publish:api-external publish:api-message publish:api-prompt publish:api-public publish:pi", + "publish:api-common": "cd ./dist/api-common && npm publish", + "publish:api-external": "cd ./dist/api-external && npm publish", + "publish:api-message": "cd ./dist/api-message && npm publish", + "publish:api-prompt": "cd ./dist/api-prompt && npm publish", + "publish:api-public": "cd ./dist/api-public && npm publish", + "publish:pi": "cd ./dist/pi && npm publish", + "publish:core": "cd ./dist/core && npm publish", + "publish:native:all": "npm-run-all -s publish:native publish:native-browser", + "publish:native": "cd ./dist/native && npm publish", + "publish:native-browser": "cd ./dist/native-browser && npm publish", + "publish:protocol:all": "npm-run-all -s publish:protocol publish:protocol-authentication publish:protocol-buddy publish:protocol-event publish:protocol-file publish:protocol-group publish:protocol-status publish:protocol-info publish:protocol-inner publish:protocol-option publish:protocol-ping publish:protocol-query publish:protocol-room publish:protocol-service publish:protocol-sync publish:protocol-umg", + "publish:protocol": "cd ./dist/protocol && npm publish", + "publish:protocol-authentication": "cd ./dist/protocol-authentication && npm publish", + "publish:protocol-buddy": "cd ./dist/protocol-buddy && npm publish", + "publish:protocol-event": "cd ./dist/protocol-event && npm publish", + "publish:protocol-file": "cd ./dist/protocol-file && npm publish", + "publish:protocol-group": "cd ./dist/protocol-group && npm publish", + "publish:protocol-info": "cd ./dist/protocol-info && npm publish", + "publish:protocol-inner": "cd ./dist/protocol-inner && npm publish", + "publish:protocol-option": "cd ./dist/protocol-option && npm publish", + "publish:protocol-ping": "cd ./dist/protocol-ping && npm publish", + "publish:protocol-query": "cd ./dist/protocol-query && npm publish", + "publish:protocol-room": "cd ./dist/protocol-room && npm publish", + "publish:protocol-service": "cd ./dist/protocol-service && npm publish", + "publish:protocol-status": "cd ./dist/protocol-status && npm publish", + "publish:protocol-sync": "cd ./dist/protocol-sync && npm publish", + "publish:protocol-umg": "cd ./dist/protocol-umg && npm publish", + "publish:util:all": "npm-run-all -s publish:web-storage publish:i18n", + "publish:web-storage": "cd ./dist/web-storage && npm publish", + "publish:i18n": "cd ./dist/i18n && npm publish", + "publish:store:all": "npm-run-all -s publish:store-organization publish:store-authentication publish:store-group publish:store-chat", + "publish:store-authentication": "cd ./dist/store-authentication && npm publish", + "publish:store-chat": "cd ./dist/store-chat && npm publish", + "publish:store-group": "cd ./dist/store-group && npm publish", + "publish:store-organization": "cd ./dist/store-organization && npm publish", + "publish:ui:all": "npm-run-all -s publish:ui publish:ui-organization publish:ui-authentication", + "publish:ui": "cd ./dist/ui && npm publish", + "publish:ui-organization": "cd ./dist/ui-organization && npm publish", + "publish:ui-authentication": "cd ./dist/ui-authentication && npm publish", + "publish:ui-skin:all": "npm-run-all -s publish:ui-skin-default", + "publish:ui-skin-default": "cd ./dist/ui-skin-default && npm publish", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "dependencies": { + "tslib": "^1.10.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^0.900.6", + "@angular-devkit/build-ng-packagr": "^0.900.6", + "@angular/animations": "^9.0.6", + "@angular/cdk": "^9.1.2", + "@angular/cli": "^9.0.6", + "@angular/common": "^9.0.6", + "@angular/compiler": "^9.0.6", + "@angular/compiler-cli": "^9.0.6", + "@angular/core": "^9.0.6", + "@angular/flex-layout": "^9.0.0-beta.29", + "@angular/forms": "^9.0.6", + "@angular/language-service": "^9.0.6", + "@angular/material": "^9.1.2", + "@angular/material-moment-adapter": "^9.1.2", + "@angular/platform-browser": "^9.0.6", + "@angular/platform-browser-dynamic": "^9.0.6", + "@angular/router": "^9.0.6", + "@ngrx/effects": "^9.0.0", + "@ngrx/entity": "^9.0.0", + "@ngrx/router-store": "^9.0.0", + "@ngrx/store": "^9.0.0", + "@ngrx/store-devtools": "^9.0.0", + "@types/jasmine": "^3.5.9", + "@types/jasminewd2": "~2.0.3", + "@types/moment-timezone": "^0.5.12", + "@types/node": "^12.12.30", + "@ucap/api": "~0.0.1", + "@ucap/api-common": "~0.0.1", + "@ucap/api-external": "~0.0.2", + "@ucap/api-message": "~0.0.1", + "@ucap/api-prompt": "~0.0.1", + "@ucap/api-public": "~0.0.1", + "@ucap/core": "~0.0.1", + "@ucap/native": "~0.0.1", + "@ucap/native-browser": "~0.0.1", + "@ucap/ng-api-common": "file:dist/api-common/ucap-ng-api-common-0.0.1.tgz", + "@ucap/ng-api-external": "file:dist/api-external/ucap-ng-api-external-0.0.1.tgz", + "@ucap/ng-api-message": "file:dist/api-message/ucap-ng-api-message-0.0.1.tgz", + "@ucap/ng-api-prompt": "file:dist/api-prompt/ucap-ng-api-prompt-0.0.1.tgz", + "@ucap/ng-api-public": "file:dist/api-public/ucap-ng-api-public-0.0.1.tgz", + "@ucap/ng-core": "file:dist/core/ucap-ng-core-0.0.1.tgz", + "@ucap/ng-i18n": "file:dist/i18n/ucap-ng-i18n-0.0.1.tgz", + "@ucap/ng-native": "file:dist/native/ucap-ng-native-0.0.1.tgz", + "@ucap/ng-native-browser": "file:dist/native-browser/ucap-ng-native-browser-0.0.1.tgz", + "@ucap/ng-pi": "file:dist/pi/ucap-ng-pi-0.0.1.tgz", + "@ucap/ng-protocol": "file:dist/protocol/ucap-ng-protocol-0.0.1.tgz", + "@ucap/ng-protocol-authentication": "file:dist/protocol-authentication/ucap-ng-protocol-authentication-0.0.1.tgz", + "@ucap/ng-protocol-buddy": "file:dist/protocol-buddy/ucap-ng-protocol-buddy-0.0.1.tgz", + "@ucap/ng-protocol-event": "file:dist/protocol-event/ucap-ng-protocol-event-0.0.1.tgz", + "@ucap/ng-protocol-file": "file:dist/protocol-file/ucap-ng-protocol-file-0.0.1.tgz", + "@ucap/ng-protocol-group": "file:dist/protocol-group/ucap-ng-protocol-group-0.0.1.tgz", + "@ucap/ng-protocol-info": "file:dist/protocol-info/ucap-ng-protocol-info-0.0.1.tgz", + "@ucap/ng-protocol-inner": "file:dist/protocol-inner/ucap-ng-protocol-inner-0.0.1.tgz", + "@ucap/ng-protocol-option": "file:dist/protocol-option/ucap-ng-protocol-option-0.0.1.tgz", + "@ucap/ng-protocol-ping": "file:dist/protocol-ping/ucap-ng-protocol-ping-0.0.1.tgz", + "@ucap/ng-protocol-query": "file:dist/protocol-query/ucap-ng-protocol-query-0.0.1.tgz", + "@ucap/ng-protocol-room": "file:dist/protocol-room/ucap-ng-protocol-room-0.0.1.tgz", + "@ucap/ng-protocol-service": "file:dist/protocol-service/ucap-ng-protocol-service-0.0.1.tgz", + "@ucap/ng-protocol-status": "file:dist/protocol-status/ucap-ng-protocol-status-0.0.1.tgz", + "@ucap/ng-protocol-sync": "file:dist/protocol-sync/ucap-ng-protocol-sync-0.0.1.tgz", + "@ucap/ng-protocol-umg": "file:dist/protocol-umg/ucap-ng-protocol-umg-0.0.1.tgz", + "@ucap/ng-store-authentication": "file:dist/store-authentication/ucap-ng-store-authentication-0.0.2.tgz", + "@ucap/ng-store-chat": "file:dist/store-chat/ucap-ng-store-chat-0.0.3.tgz", + "@ucap/ng-store-group": "file:dist/store-group/ucap-ng-store-group-0.0.3.tgz", + "@ucap/ng-store-organization": "file:dist/store-organization/ucap-ng-store-organization-0.0.2.tgz", + "@ucap/ng-ui": "file:dist/ui/ucap-ng-ui-0.0.3.tgz", + "@ucap/ng-ui-authentication": "file:dist/ui-authentication/ucap-ng-ui-authentication-0.0.1.tgz", + "@ucap/ng-ui-organization": "file:dist/ui-organization/ucap-ng-ui-organization-0.0.1.tgz", + "@ucap/ng-ui-skin-default": "file:dist/ui-skin-default/ucap-ng-ui-skin-default-0.0.1.tgz", + "@ucap/ng-web-storage": "file:dist/web-storage/ucap-ng-web-storage-0.0.1.tgz", + "@ucap/pi": "~0.0.1", + "@ucap/protocol": "~0.0.1", + "@ucap/protocol-authentication": "~0.0.1", + "@ucap/protocol-buddy": "~0.0.1", + "@ucap/protocol-event": "~0.0.1", + "@ucap/protocol-file": "~0.0.1", + "@ucap/protocol-group": "~0.0.1", + "@ucap/protocol-info": "~0.0.1", + "@ucap/protocol-inner": "~0.0.1", + "@ucap/protocol-option": "~0.0.1", + "@ucap/protocol-ping": "~0.0.1", + "@ucap/protocol-query": "~0.0.1", + "@ucap/protocol-room": "~0.0.1", + "@ucap/protocol-service": "~0.0.1", + "@ucap/protocol-status": "~0.0.1", + "@ucap/protocol-sync": "~0.0.1", + "@ucap/protocol-umg": "~0.0.1", + "@ucap/web-socket": "~0.0.1", + "@ucap/web-storage": "~0.0.1", + "autolinker": "^3.13.0", + "axios": "^0.19.2", + "codelyzer": "^5.2.1", + "concurrently": "^5.1.0", + "fs-extra": "^9.0.0", + "i18next": "^19.3.2", + "jasmine-core": "~3.5.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.3.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage-istanbul-reporter": "~2.1.0", + "karma-jasmine": "~2.0.1", + "karma-jasmine-html-reporter": "^1.4.2", + "libphonenumber-js": "^1.7.47", + "moment": "^2.24.0", + "moment-timezone": "^0.5.28", + "move-cli": "^1.2.1", + "ng-packagr": "^9.0.3", + "npm-run-all": "^4.1.5", + "protractor": "~5.4.3", + "rimraf": "^3.0.2", + "rxjs": "~6.5.4", + "scss-bundle": "^3.1.1", + "ts-node": "~8.3.0", + "tslib": "^1.11.1", + "tslint": "~5.18.0", + "typescript": "~3.7.5", + "webpack-bundle-analyzer": "^3.6.1", + "zone.js": "~0.10.2" + } +} diff --git a/projects/api-common/README.md b/projects/api-common/README.md new file mode 100644 index 0000000..50b67ea --- /dev/null +++ b/projects/api-common/README.md @@ -0,0 +1,25 @@ +# UcapMMessengerApiCommon + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project api-common` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project api-common`. + +> Note: Don't forget to add `--project api-common` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build api-common` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build api-common`, go to the dist folder `cd dist/api-common` and run `npm publish`. + +## Running unit tests + +Run `ng test api-common` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/api-common/karma.conf.js b/projects/api-common/karma.conf.js new file mode 100644 index 0000000..55b3a48 --- /dev/null +++ b/projects/api-common/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function(config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/api-common'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/api-common/ng-package.json b/projects/api-common/ng-package.json new file mode 100644 index 0000000..767c33b --- /dev/null +++ b/projects/api-common/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/api-common", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/api-common": "@ucap/api-common", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/api-common/package.json b/projects/api-common/package.json new file mode 100644 index 0000000..e9dc926 --- /dev/null +++ b/projects/api-common/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-api-common", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/api-common": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "axios": "^0.19.2", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/api-common/src/lib/common-api.module.ts b/projects/api-common/src/lib/common-api.module.ts new file mode 100644 index 0000000..7b2f2ca --- /dev/null +++ b/projects/api-common/src/lib/common-api.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/api-common'; + +import { _MODULE_CONFIG } from './config/token'; + +import { CommonApiService } from './services/common-api.service'; + +const SERVICES = [CommonApiService]; + +@NgModule({}) +export class CommonApiRootModule {} + +@NgModule({}) +export class CommonApiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: CommonApiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/api-common/src/lib/config/token.ts b/projects/api-common/src/lib/config/token.ts new file mode 100644 index 0000000..e15d1f4 --- /dev/null +++ b/projects/api-common/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-api-common config of module' +); diff --git a/projects/api-common/src/lib/services/common-api.service.spec.ts b/projects/api-common/src/lib/services/common-api.service.spec.ts new file mode 100644 index 0000000..fd84d71 --- /dev/null +++ b/projects/api-common/src/lib/services/common-api.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { CommonApiService } from './common-api.service'; + +describe('CommonApiService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: CommonApiService = TestBed.inject(CommonApiService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/api-common/src/lib/services/common-api.service.ts b/projects/api-common/src/lib/services/common-api.service.ts new file mode 100644 index 0000000..a34c4be --- /dev/null +++ b/projects/api-common/src/lib/services/common-api.service.ts @@ -0,0 +1,24 @@ +import { Injectable, Inject } from '@angular/core'; + +import { AxiosInstance } from 'axios'; + +import { + ModuleConfig, + CommonApiService as UcapCommonApiService +} from '@ucap/api-common'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class CommonApiService extends UcapCommonApiService { + constructor( + @Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig, + @Inject(AXIOS_INSTANCE) axios: AxiosInstance + ) { + super(moduleConfig, axios); + } +} diff --git a/projects/api-common/src/public-api.ts b/projects/api-common/src/public-api.ts new file mode 100644 index 0000000..3270ae4 --- /dev/null +++ b/projects/api-common/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of api-common + */ + +export * from './lib/services/common-api.service'; + +export * from './lib/common-api.module'; diff --git a/projects/api-common/src/test.ts b/projects/api-common/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/api-common/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/api-common/tsconfig.lib.json b/projects/api-common/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/api-common/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/api-common/tsconfig.lib.prod.json b/projects/api-common/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/api-common/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/api-common/tsconfig.spec.json b/projects/api-common/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/api-common/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/api-common/tslint.json b/projects/api-common/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/api-common/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/api-external/README.md b/projects/api-external/README.md new file mode 100644 index 0000000..a9f7980 --- /dev/null +++ b/projects/api-external/README.md @@ -0,0 +1,24 @@ +# ApiExternal + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project api-external` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project api-external`. +> Note: Don't forget to add `--project api-external` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build api-external` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build api-external`, go to the dist folder `cd dist/api-external` and run `npm publish`. + +## Running unit tests + +Run `ng test api-external` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/api-external/karma.conf.js b/projects/api-external/karma.conf.js new file mode 100644 index 0000000..d2c9fa6 --- /dev/null +++ b/projects/api-external/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/api-external'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/api-external/ng-package.json b/projects/api-external/ng-package.json new file mode 100644 index 0000000..dc3bbb6 --- /dev/null +++ b/projects/api-external/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/api-external", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/api-external": "@ucap/api-external", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/api-external/package.json b/projects/api-external/package.json new file mode 100644 index 0000000..6de4788 --- /dev/null +++ b/projects/api-external/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-api-external", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/api-external": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "axios": "^0.19.2", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/api-external/src/lib/config/token.ts b/projects/api-external/src/lib/config/token.ts new file mode 100644 index 0000000..4569673 --- /dev/null +++ b/projects/api-external/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng api-external config of module' +); diff --git a/projects/api-external/src/lib/external-api.module.ts b/projects/api-external/src/lib/external-api.module.ts new file mode 100644 index 0000000..32019f1 --- /dev/null +++ b/projects/api-external/src/lib/external-api.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/api-external'; + +import { _MODULE_CONFIG } from './config/token'; + +import { ExternalApiService } from './services/external-api.service'; + +const SERVICES = [ExternalApiService]; + +@NgModule({}) +export class ExternalApiRootModule {} + +@NgModule({}) +export class ExternalApiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: ExternalApiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/api-external/src/lib/services/external-api.service.spec.ts b/projects/api-external/src/lib/services/external-api.service.spec.ts new file mode 100644 index 0000000..1634bb9 --- /dev/null +++ b/projects/api-external/src/lib/services/external-api.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { ExternalApiService } from './external-api.service'; + +describe('ExternalApiService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: ExternalApiService = TestBed.inject(ExternalApiService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/api-external/src/lib/services/external-api.service.ts b/projects/api-external/src/lib/services/external-api.service.ts new file mode 100644 index 0000000..c56e11d --- /dev/null +++ b/projects/api-external/src/lib/services/external-api.service.ts @@ -0,0 +1,24 @@ +import { Injectable, Inject } from '@angular/core'; + +import { AxiosInstance } from 'axios'; + +import { + ModuleConfig, + ExternalApiService as UcapExternalApiService +} from '@ucap/api-external'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class ExternalApiService extends UcapExternalApiService { + constructor( + @Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig, + @Inject(AXIOS_INSTANCE) axios: AxiosInstance + ) { + super(moduleConfig, axios); + } +} diff --git a/projects/api-external/src/public-api.ts b/projects/api-external/src/public-api.ts new file mode 100644 index 0000000..5e83a20 --- /dev/null +++ b/projects/api-external/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of api-external + */ + +export * from './lib/services/external-api.service'; + +export * from './lib/external-api.module'; diff --git a/projects/api-external/src/test.ts b/projects/api-external/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/api-external/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/api-external/tsconfig.lib.json b/projects/api-external/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/api-external/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/api-external/tsconfig.lib.prod.json b/projects/api-external/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/api-external/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/api-external/tsconfig.spec.json b/projects/api-external/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/api-external/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/api-external/tslint.json b/projects/api-external/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/api-external/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/api-message/README.md b/projects/api-message/README.md new file mode 100644 index 0000000..50a65e6 --- /dev/null +++ b/projects/api-message/README.md @@ -0,0 +1,24 @@ +# ApiMessage + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project api-message` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project api-message`. +> Note: Don't forget to add `--project api-message` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build api-message` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build api-message`, go to the dist folder `cd dist/api-message` and run `npm publish`. + +## Running unit tests + +Run `ng test api-message` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/api-message/karma.conf.js b/projects/api-message/karma.conf.js new file mode 100644 index 0000000..ae7e377 --- /dev/null +++ b/projects/api-message/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/api-message'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/api-message/ng-package.json b/projects/api-message/ng-package.json new file mode 100644 index 0000000..d138385 --- /dev/null +++ b/projects/api-message/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/api-message", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/api-message": "@ucap/api-message", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/api-message/package.json b/projects/api-message/package.json new file mode 100644 index 0000000..0b39085 --- /dev/null +++ b/projects/api-message/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-api-message", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/api-message": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "axios": "^0.19.2", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/api-message/src/lib/config/token.ts b/projects/api-message/src/lib/config/token.ts new file mode 100644 index 0000000..0af85b7 --- /dev/null +++ b/projects/api-message/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-api-message config of module' +); diff --git a/projects/api-message/src/lib/message-api.module.ts b/projects/api-message/src/lib/message-api.module.ts new file mode 100644 index 0000000..9a5d06f --- /dev/null +++ b/projects/api-message/src/lib/message-api.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/api-message'; + +import { _MODULE_CONFIG } from './config/token'; + +import { MessageApiService } from './services/message-api.service'; + +const SERVICES = [MessageApiService]; + +@NgModule({}) +export class MessageApiRootModule {} + +@NgModule({}) +export class MessageApiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: MessageApiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/api-message/src/lib/services/message-api.service.spec.ts b/projects/api-message/src/lib/services/message-api.service.spec.ts new file mode 100644 index 0000000..d233414 --- /dev/null +++ b/projects/api-message/src/lib/services/message-api.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { MessageApiService } from './message-api.service'; + +describe('MessageApiService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: MessageApiService = TestBed.inject(MessageApiService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/api-message/src/lib/services/message-api.service.ts b/projects/api-message/src/lib/services/message-api.service.ts new file mode 100644 index 0000000..db03b81 --- /dev/null +++ b/projects/api-message/src/lib/services/message-api.service.ts @@ -0,0 +1,24 @@ +import { Injectable, Inject } from '@angular/core'; + +import { AxiosInstance } from 'axios'; + +import { + ModuleConfig, + MessageApiService as UcapMessageApiService +} from '@ucap/api-message'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class MessageApiService extends UcapMessageApiService { + constructor( + @Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig, + @Inject(AXIOS_INSTANCE) axios: AxiosInstance + ) { + super(moduleConfig, axios); + } +} diff --git a/projects/api-message/src/public-api.ts b/projects/api-message/src/public-api.ts new file mode 100644 index 0000000..b9f8ea7 --- /dev/null +++ b/projects/api-message/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of api-message + */ + +export * from './lib/services/message-api.service'; + +export * from './lib/message-api.module'; diff --git a/projects/api-message/src/test.ts b/projects/api-message/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/api-message/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/api-message/tsconfig.lib.json b/projects/api-message/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/api-message/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/api-message/tsconfig.lib.prod.json b/projects/api-message/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/api-message/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/api-message/tsconfig.spec.json b/projects/api-message/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/api-message/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/api-message/tslint.json b/projects/api-message/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/api-message/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/api-prompt/README.md b/projects/api-prompt/README.md new file mode 100644 index 0000000..c9f48e3 --- /dev/null +++ b/projects/api-prompt/README.md @@ -0,0 +1,24 @@ +# ApiPrompt + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project api-prompt` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project api-prompt`. +> Note: Don't forget to add `--project api-prompt` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build api-prompt` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build api-prompt`, go to the dist folder `cd dist/api-prompt` and run `npm publish`. + +## Running unit tests + +Run `ng test api-prompt` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/api-prompt/karma.conf.js b/projects/api-prompt/karma.conf.js new file mode 100644 index 0000000..022c2e8 --- /dev/null +++ b/projects/api-prompt/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/api-prompt'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/api-prompt/ng-package.json b/projects/api-prompt/ng-package.json new file mode 100644 index 0000000..bbd74f2 --- /dev/null +++ b/projects/api-prompt/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/api-prompt", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/api-prompt": "@ucap/api-prompt", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/api-prompt/package.json b/projects/api-prompt/package.json new file mode 100644 index 0000000..e79fc37 --- /dev/null +++ b/projects/api-prompt/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-api-prompt", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/api-prompt": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "axios": "^0.19.2", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/api-prompt/src/lib/config/token.ts b/projects/api-prompt/src/lib/config/token.ts new file mode 100644 index 0000000..ac2d457 --- /dev/null +++ b/projects/api-prompt/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-api-prompt config of module' +); diff --git a/projects/api-prompt/src/lib/prompt-api.module.ts b/projects/api-prompt/src/lib/prompt-api.module.ts new file mode 100644 index 0000000..10fe29c --- /dev/null +++ b/projects/api-prompt/src/lib/prompt-api.module.ts @@ -0,0 +1,25 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/api-prompt'; + +import { _MODULE_CONFIG } from './config/token'; + +import { CallService } from './services/call.service'; +import { ConferenceService } from './services/conference.service'; + +const SERVICES = [CallService, ConferenceService]; + +@NgModule({}) +export class PromptApiRootModule {} + +@NgModule({}) +export class PromptApiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: PromptApiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/api-prompt/src/lib/services/call.service.spec.ts b/projects/api-prompt/src/lib/services/call.service.spec.ts new file mode 100644 index 0000000..41b8698 --- /dev/null +++ b/projects/api-prompt/src/lib/services/call.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { CallService } from './call.service'; + +describe('CallService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: CallService = TestBed.inject(CallService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/api-prompt/src/lib/services/call.service.ts b/projects/api-prompt/src/lib/services/call.service.ts new file mode 100644 index 0000000..f36f80c --- /dev/null +++ b/projects/api-prompt/src/lib/services/call.service.ts @@ -0,0 +1,21 @@ +import { Injectable, Inject } from '@angular/core'; + +import { AxiosInstance } from 'axios'; + +import { ModuleConfig, CallService as UcapCallService } from '@ucap/api-prompt'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class CallService extends UcapCallService { + constructor( + @Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig, + @Inject(AXIOS_INSTANCE) axios: AxiosInstance + ) { + super(moduleConfig, axios); + } +} diff --git a/projects/api-prompt/src/lib/services/conference.service.ts b/projects/api-prompt/src/lib/services/conference.service.ts new file mode 100644 index 0000000..aeac878 --- /dev/null +++ b/projects/api-prompt/src/lib/services/conference.service.ts @@ -0,0 +1,17 @@ +import { Injectable, Inject } from '@angular/core'; + +import { + ModuleConfig, + ConferenceService as UcapConferenceService +} from '@ucap/api-prompt'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class ConferenceService extends UcapConferenceService { + constructor(@Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig) { + super(moduleConfig); + } +} diff --git a/projects/api-prompt/src/public-api.ts b/projects/api-prompt/src/public-api.ts new file mode 100644 index 0000000..7c02e45 --- /dev/null +++ b/projects/api-prompt/src/public-api.ts @@ -0,0 +1,8 @@ +/* + * Public API Surface of api-prompt + */ + +export * from './lib/services/call.service'; +export * from './lib/services/conference.service'; + +export * from './lib/prompt-api.module'; diff --git a/projects/api-prompt/src/test.ts b/projects/api-prompt/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/api-prompt/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/api-prompt/tsconfig.lib.json b/projects/api-prompt/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/api-prompt/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/api-prompt/tsconfig.lib.prod.json b/projects/api-prompt/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/api-prompt/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/api-prompt/tsconfig.spec.json b/projects/api-prompt/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/api-prompt/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/api-prompt/tslint.json b/projects/api-prompt/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/api-prompt/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/api-public/README.md b/projects/api-public/README.md new file mode 100644 index 0000000..b3f8ca1 --- /dev/null +++ b/projects/api-public/README.md @@ -0,0 +1,24 @@ +# ApiPublic + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project api-public` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project api-public`. +> Note: Don't forget to add `--project api-public` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build api-public` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build api-public`, go to the dist folder `cd dist/api-public` and run `npm publish`. + +## Running unit tests + +Run `ng test api-public` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/api-public/karma.conf.js b/projects/api-public/karma.conf.js new file mode 100644 index 0000000..05e0fe9 --- /dev/null +++ b/projects/api-public/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/api-public'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/api-public/ng-package.json b/projects/api-public/ng-package.json new file mode 100644 index 0000000..0af73c9 --- /dev/null +++ b/projects/api-public/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/api-public", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/api-public": "@ucap/api-public", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/api-public/package.json b/projects/api-public/package.json new file mode 100644 index 0000000..98f29f6 --- /dev/null +++ b/projects/api-public/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-api-public", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/api-public": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "axios": "^0.19.2", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/api-public/src/lib/config/token.ts b/projects/api-public/src/lib/config/token.ts new file mode 100644 index 0000000..f1a6a3f --- /dev/null +++ b/projects/api-public/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-api-public config of module' +); diff --git a/projects/api-public/src/lib/public-api.module.ts b/projects/api-public/src/lib/public-api.module.ts new file mode 100644 index 0000000..40779e5 --- /dev/null +++ b/projects/api-public/src/lib/public-api.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/api-public'; + +import { _MODULE_CONFIG } from './config/token'; + +import { PublicApiService } from './services/public-api.service'; + +const SERVICES = [PublicApiService]; + +@NgModule({}) +export class PublicApiRootModule {} + +@NgModule({}) +export class PublicApiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: PublicApiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/api-public/src/lib/services/public-api.service.spec.ts b/projects/api-public/src/lib/services/public-api.service.spec.ts new file mode 100644 index 0000000..bf0ce00 --- /dev/null +++ b/projects/api-public/src/lib/services/public-api.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { PublicApiService } from './public-api.service'; + +describe('PublicApiService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: PublicApiService = TestBed.inject(PublicApiService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/api-public/src/lib/services/public-api.service.ts b/projects/api-public/src/lib/services/public-api.service.ts new file mode 100644 index 0000000..b2f884c --- /dev/null +++ b/projects/api-public/src/lib/services/public-api.service.ts @@ -0,0 +1,24 @@ +import { Injectable, Inject } from '@angular/core'; + +import { AxiosInstance } from 'axios'; + +import { + ModuleConfig, + PublicApiService as UcapPublicApiService +} from '@ucap/api-public'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class PublicApiService extends UcapPublicApiService { + constructor( + @Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig, + @Inject(AXIOS_INSTANCE) axios: AxiosInstance + ) { + super(moduleConfig, axios); + } +} diff --git a/projects/api-public/src/public-api.ts b/projects/api-public/src/public-api.ts new file mode 100644 index 0000000..129a2c2 --- /dev/null +++ b/projects/api-public/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of api-public + */ + +export * from './lib/services/public-api.service'; + +export * from './lib/public-api.module'; diff --git a/projects/api-public/src/test.ts b/projects/api-public/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/api-public/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/api-public/tsconfig.lib.json b/projects/api-public/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/api-public/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/api-public/tsconfig.lib.prod.json b/projects/api-public/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/api-public/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/api-public/tsconfig.spec.json b/projects/api-public/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/api-public/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/api-public/tslint.json b/projects/api-public/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/api-public/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/core/README.md b/projects/core/README.md new file mode 100644 index 0000000..3549044 --- /dev/null +++ b/projects/core/README.md @@ -0,0 +1,25 @@ +# UcapMMessengerCore + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project core` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project core`. + +> Note: Don't forget to add `--project core` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build core` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build core`, go to the dist folder `cd dist/core` and run `npm publish`. + +## Running unit tests + +Run `ng test core` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/core/karma.conf.js b/projects/core/karma.conf.js new file mode 100644 index 0000000..8bf9a9d --- /dev/null +++ b/projects/core/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function(config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/core'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/core/ng-package.json b/projects/core/ng-package.json new file mode 100644 index 0000000..8871cdc --- /dev/null +++ b/projects/core/ng-package.json @@ -0,0 +1,10 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/core", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/core": "@ucap/core" + } + } +} diff --git a/projects/core/package.json b/projects/core/package.json new file mode 100644 index 0000000..93241ea --- /dev/null +++ b/projects/core/package.json @@ -0,0 +1,14 @@ +{ + "name": "@ucap/ng-core", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/core": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/core/src/lib/config/token.ts b/projects/core/src/lib/config/token.ts new file mode 100644 index 0000000..f55983e --- /dev/null +++ b/projects/core/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const AXIOS_INSTANCE = new InjectionToken( + '@ucap/ng-core axios instance' +); diff --git a/projects/core/src/lib/utils/sticker.util.ts b/projects/core/src/lib/utils/sticker.util.ts new file mode 100644 index 0000000..0ebee84 --- /dev/null +++ b/projects/core/src/lib/utils/sticker.util.ts @@ -0,0 +1,172 @@ +export interface StickerInfo { + index: string; + title: string; + iconPath: string; + iconPathOn: string; + useYn: boolean; + fileInfos: StickerFilesInfo[]; +} +export interface StickerFilesInfo { + index: string; + path: string; +} +export const StickerMap: StickerInfo[] = [ + { + index: '00', + title: 'History', + iconPath: 'sticker_cate00.png', + iconPathOn: 'sticker_cate00_f.png', + useYn: true, + fileInfos: [] + }, + { + index: '01', + title: '꼼므', + iconPath: 'sticker_cate01.png', + iconPathOn: 'sticker_cate01_f.png', + useYn: true, + fileInfos: [ + { index: '01_01', path: 'sticker_s_01_01.png' }, + { index: '01_02', path: 'sticker_s_01_02.png' }, + { index: '01_03', path: 'sticker_s_01_03.png' }, + { index: '01_04', path: 'sticker_s_01_04.png' }, + { index: '01_05', path: 'sticker_s_01_05.png' }, + { index: '01_06', path: 'sticker_s_01_06.png' }, + { index: '01_07', path: 'sticker_s_01_07.png' }, + { index: '01_08', path: 'sticker_s_01_08.png' } + ] + }, + { + index: '02', + title: '까미', + iconPath: 'sticker_cate02.png', + iconPathOn: 'sticker_cate02_f.png', + useYn: true, + fileInfos: [ + { index: '02_02', path: 'sticker_s_02_02.png' }, + { index: '02_03', path: 'sticker_s_02_03.png' }, + { index: '02_04', path: 'sticker_s_02_04.png' }, + { index: '02_05', path: 'sticker_s_02_05.png' }, + { index: '02_06', path: 'sticker_s_02_06.png' }, + { index: '02_07', path: 'sticker_s_02_07.png' }, + { index: '02_08', path: 'sticker_s_02_08.png' } + ] + }, + { + index: '03', + title: '왈도', + iconPath: 'sticker_cate03.png', + iconPathOn: 'sticker_cate03_f.png', + useYn: true, + fileInfos: [ + { index: '03_01', path: 'sticker_s_03_01.png' }, + { index: '03_02', path: 'sticker_s_03_02.png' }, + { index: '03_03', path: 'sticker_s_03_03.png' }, + { index: '03_04', path: 'sticker_s_03_04.png' }, + { index: '03_05', path: 'sticker_s_03_05.png' }, + { index: '03_06', path: 'sticker_s_03_06.png' }, + { index: '03_07', path: 'sticker_s_03_07.png' }, + { index: '03_08', path: 'sticker_s_03_08.png' } + ] + }, + { + index: '04', + title: '웅쓰', + iconPath: 'sticker_cate04.png', + iconPathOn: 'sticker_cate04_f.png', + useYn: true, + fileInfos: [ + { index: '04_01', path: 'sticker_s_04_01.png' }, + { index: '04_02', path: 'sticker_s_04_02.png' }, + { index: '04_03', path: 'sticker_s_04_03.png' }, + { index: '04_04', path: 'sticker_s_04_04.png' }, + { index: '04_05', path: 'sticker_s_04_05.png' }, + { index: '04_06', path: 'sticker_s_04_06.png' }, + { index: '04_07', path: 'sticker_s_04_07.png' }, + { index: '04_08', path: 'sticker_s_04_08.png' } + ] + }, + { + index: '05', + title: '말풍선', + iconPath: 'sticker_cate05.png', + iconPathOn: 'sticker_cate05_f.png', + useYn: true, + fileInfos: [ + { index: '05_01', path: 'sticker_s_05_01.png' }, + { index: '05_02', path: 'sticker_s_05_02.png' }, + { index: '05_03', path: 'sticker_s_05_03.png' }, + { index: '05_04', path: 'sticker_s_05_04.png' }, + { index: '05_05', path: 'sticker_s_05_05.png' }, + { index: '05_06', path: 'sticker_s_05_06.png' }, + { index: '05_07', path: 'sticker_s_05_07.png' }, + { index: '05_08', path: 'sticker_s_05_08.png' }, + { index: '05_09', path: 'sticker_s_05_09.png' }, + { index: '05_10', path: 'sticker_s_05_10.png' }, + { index: '05_11', path: 'sticker_s_05_11.png' }, + { index: '05_12', path: 'sticker_s_05_12.png' }, + { index: '05_13', path: 'sticker_s_05_13.png' }, + { index: '05_14', path: 'sticker_s_05_14.png' }, + { index: '05_15', path: 'sticker_s_05_15.png' }, + { index: '05_16', path: 'sticker_s_05_16.png' } + ] + }, + { + index: '12', + title: '황소', + iconPath: 'sticker_cate12.png', + iconPathOn: 'sticker_cate12_f.png', + useYn: true, + fileInfos: [ + { index: '12_01', path: 'sticker_s_12_01.gif' }, + { index: '12_02', path: 'sticker_s_12_02.gif' }, + { index: '12_03', path: 'sticker_s_12_03.gif' }, + { index: '12_04', path: 'sticker_s_12_04.gif' }, + { index: '12_05', path: 'sticker_s_12_05.gif' }, + { index: '12_06', path: 'sticker_s_12_06.gif' }, + { index: '12_07', path: 'sticker_s_12_07.gif' }, + { index: '12_08', path: 'sticker_s_12_08.gif' }, + { index: '12_09', path: 'sticker_s_12_09.gif' }, + { index: '12_10', path: 'sticker_s_12_10.gif' }, + { index: '12_11', path: 'sticker_s_12_11.gif' }, + { index: '12_12', path: 'sticker_s_12_12.gif' }, + { index: '12_13', path: 'sticker_s_12_13.gif' }, + { index: '12_14', path: 'sticker_s_12_14.gif' }, + { index: '12_15', path: 'sticker_s_12_15.gif' }, + { index: '12_16', path: 'sticker_s_12_16.gif' } + ] + } +]; + +const ActiveAndOrdering: string[] = ['00', '01', '02', '03', '04', '05']; + +export class StickerUtil { + static getStickerInfoList(): StickerInfo[] { + const rtnStickerList: StickerInfo[] = []; + + ActiveAndOrdering.forEach(idx => { + const stickerInfos: StickerInfo[] = StickerMap.filter( + sticker => sticker.index === idx && sticker.useYn + ); + + if (!!stickerInfos && stickerInfos.length > 0) { + rtnStickerList.push(stickerInfos[0]); + } + }); + + return rtnStickerList; + } + + static getStickerInfoSub(index: string): StickerFilesInfo[] { + const stickerFilesList: StickerFilesInfo[] = []; + const stickerInfos: StickerInfo[] = StickerMap.filter( + sticker => sticker.index === index && sticker.useYn + ); + + if (!!stickerInfos && stickerInfos.length > 0) { + stickerFilesList.concat(stickerInfos[0].fileInfos); + } + + return stickerFilesList; + } +} diff --git a/projects/core/src/lib/utils/string.util.ts b/projects/core/src/lib/utils/string.util.ts new file mode 100644 index 0000000..14d32d5 --- /dev/null +++ b/projects/core/src/lib/utils/string.util.ts @@ -0,0 +1,16 @@ +import { ValidatorFn, AbstractControl } from '@angular/forms'; + +import { StringUtil as UcapStringUtil } from '@ucap/core'; + +export class StringUtil extends UcapStringUtil { + public static checkSpecialCharacter(): ValidatorFn { + const fn = (control: AbstractControl): { [key: string]: any } | null => { + const forbidden = /[\{\}\[\]\/?.;:|\)*~`!^+<>@\#$%&\\\=\(\'\"]/g.test( + control.value + ); + return forbidden ? { groupName: { value: control.value } } : null; + }; + + return fn; + } +} diff --git a/projects/core/src/lib/utils/window.util.ts b/projects/core/src/lib/utils/window.util.ts new file mode 100644 index 0000000..7093b00 --- /dev/null +++ b/projects/core/src/lib/utils/window.util.ts @@ -0,0 +1,17 @@ +export class WindowUtil { + public static popupOpen( + url: string, + title: string = 'Messenger', + width: number, + height: number + ): void { + let optionStr = `frame=true,menubar=no,location=no,resizable=yes,scrollbars=yes,status=no`; + if (width > 0) { + optionStr += `,width=${width}`; + } + if (width > 0) { + optionStr += `,height=${height + 15}`; + } + open(url, title, optionStr); + } +} diff --git a/projects/core/src/public-api.ts b/projects/core/src/public-api.ts new file mode 100644 index 0000000..027abf5 --- /dev/null +++ b/projects/core/src/public-api.ts @@ -0,0 +1,9 @@ +/* + * Public API Surface of core + */ + +export * from './lib/utils/sticker.util'; +export * from './lib/utils/string.util'; +export * from './lib/utils/window.util'; + +export * from './lib/config/token'; diff --git a/projects/core/src/test.ts b/projects/core/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/core/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/core/tsconfig.lib.json b/projects/core/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/core/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/core/tsconfig.lib.prod.json b/projects/core/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/core/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/core/tsconfig.spec.json b/projects/core/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/core/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/core/tslint.json b/projects/core/tslint.json new file mode 100644 index 0000000..205aeda --- /dev/null +++ b/projects/core/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [true, "attribute", "lib", "camelCase"], + "component-selector": [true, "element", "lib", "kebab-case"] + } +} diff --git a/projects/i18n/README.md b/projects/i18n/README.md new file mode 100644 index 0000000..4d0fb42 --- /dev/null +++ b/projects/i18n/README.md @@ -0,0 +1,24 @@ +# I18n + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.6. + +## Code scaffolding + +Run `ng generate component component-name --project i18n` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project i18n`. +> Note: Don't forget to add `--project i18n` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build i18n` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build i18n`, go to the dist folder `cd dist/i18n` and run `npm publish`. + +## Running unit tests + +Run `ng test i18n` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/i18n/karma.conf.js b/projects/i18n/karma.conf.js new file mode 100644 index 0000000..7f93c77 --- /dev/null +++ b/projects/i18n/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/i18n'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/i18n/ng-package.json b/projects/i18n/ng-package.json new file mode 100644 index 0000000..a04957f --- /dev/null +++ b/projects/i18n/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/i18n", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "i18next": "i18next", + "@ucap/core": "@ucap/core" + } + } +} diff --git a/projects/i18n/package.json b/projects/i18n/package.json new file mode 100644 index 0000000..fc0402f --- /dev/null +++ b/projects/i18n/package.json @@ -0,0 +1,13 @@ +{ + "name": "@ucap/ng-i18n", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.6", + "@angular/core": "^9.0.6", + "i18next": "^19.3.2", + "tslib": "^1.10.0" + } +} diff --git a/projects/i18n/src/lib/config/module-config.ts b/projects/i18n/src/lib/config/module-config.ts new file mode 100644 index 0000000..d158cc6 --- /dev/null +++ b/projects/i18n/src/lib/config/module-config.ts @@ -0,0 +1,4 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +// tslint:disable-next-line: no-empty-interface +export interface ModuleConfig extends CoreModuleConfig {} diff --git a/projects/i18n/src/lib/config/token.ts b/projects/i18n/src/lib/config/token.ts new file mode 100644 index 0000000..41ee2dd --- /dev/null +++ b/projects/i18n/src/lib/config/token.ts @@ -0,0 +1,3 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken('@ucap/i18n config of module'); diff --git a/projects/i18n/src/lib/directives/i18n.directive.ts b/projects/i18n/src/lib/directives/i18n.directive.ts new file mode 100644 index 0000000..e69de29 diff --git a/projects/i18n/src/lib/i18n.module.ts b/projects/i18n/src/lib/i18n.module.ts new file mode 100644 index 0000000..575a276 --- /dev/null +++ b/projects/i18n/src/lib/i18n.module.ts @@ -0,0 +1,39 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { I18nPipe } from './pipes/i18n.pipe'; + +import { I18nService } from './services/i18n.service'; + +const COMPONENTS = []; +const DIALOGS = []; +const PIPES = [I18nPipe]; +const DIRECTIVES = []; +const SERVICES = [I18nService]; + +@NgModule({ + declarations: [], + imports: [], + exports: [] +}) +export class I18nRootModule {} + +@NgModule({ + imports: [CommonModule], + exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + entryComponents: [...DIALOGS] +}) +export class I18nModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: I18nRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/i18n/src/lib/pipes/i18n.pipe.ts b/projects/i18n/src/lib/pipes/i18n.pipe.ts new file mode 100644 index 0000000..76c563f --- /dev/null +++ b/projects/i18n/src/lib/pipes/i18n.pipe.ts @@ -0,0 +1,120 @@ +import { Subscription } from 'rxjs'; + +import { + Pipe, + PipeTransform, + Inject, + OnDestroy, + ChangeDetectorRef +} from '@angular/core'; + +import { StringMap, TOptions } from 'i18next'; + +import { I18nService } from '../services/i18n.service'; + +import { UCAP_I18N_NAMESPACE } from '../types/token'; + +@Pipe({ name: 'ucapI18n' }) +export class I18nPipe implements PipeTransform, OnDestroy { + private languageChangedSubscription: Subscription; + + private value: string; + private lastKey: string | string[]; + private lastOptions: TOptions; + + constructor( + private i18nService: I18nService, + @Inject(UCAP_I18N_NAMESPACE) private ns: string | string[], + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnDestroy(): void { + this.dispose(); + } + + public transform( + key: string | string[], + options?: TOptions + ): string { + options = options || {}; + + if (!!this.ns) { + key = this.keyWithPrependNamespace( + key, + this.ns, + this.i18nService.options.nsSeparator + ); + } + + this.lastKey = key; + this.lastOptions = options; + + this.updateValue(key, options); + + this.dispose(); + + if (!this.languageChangedSubscription) { + this.languageChangedSubscription = this.i18nService.languageChanged$.subscribe( + lng => { + this.updateValue(key, options); + } + ); + } + + return this.value; + } + + private updateValue(key: string | string[], options?: TOptions) { + this.value = this.i18nService.t(key, options); + this.changeDetectorRef.markForCheck(); + } + + private keyWithPrependNamespace( + key: string | string[], + ns: string | string[], + nsSeparator: string | false + ): string[] { + if (typeof key === 'string') { + key = [key]; + } + if (typeof ns === 'string') { + ns = [ns]; + } + + if ( + nsSeparator && + typeof nsSeparator === 'boolean' && + false === nsSeparator + ) { + return key; + } + + const keyWithPrependNamespace = []; + for (const k of key) { + if (!this.containsSeparator(k, nsSeparator as string)) { + keyWithPrependNamespace.push( + ...ns.map(n => + this.joinStringsWithSeparator(nsSeparator as string, n, k) + ) + ); + } + keyWithPrependNamespace.push(k); + } + + return keyWithPrependNamespace; + } + + private joinStringsWithSeparator(separator: string, ...str: string[]) { + return [...str].join(separator); + } + + private containsSeparator(key: string, nsSeparator: string) { + return -1 !== key.indexOf(nsSeparator); + } + + private dispose() { + if (!!this.languageChangedSubscription) { + this.languageChangedSubscription.unsubscribe(); + } + } +} 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..ae1c010 --- /dev/null +++ b/projects/i18n/src/lib/services/i18n.service.ts @@ -0,0 +1,250 @@ +import { BehaviorSubject, Subject, Observable } from 'rxjs'; +import { share } from 'rxjs/operators'; + +import { Injectable, OnDestroy } from '@angular/core'; + +import i18next, { + InitOptions, + Module, + Newable, + ThirdPartyModule, + TOptions, + StringMap +} from 'i18next'; + +import { I18nextEvents } from '../types/i18next.event'; + +@Injectable() +export class I18nService implements OnDestroy { + readonly initialized$: Observable; + readonly loaded$: Observable; + readonly failedLoading$: Observable<{ + lng: string; + ns: string; + msg: string; + }>; + readonly missingKey$: Observable<{ + lngs: string[]; + ns: string; + key: string; + res: string; + }>; + readonly added$: Observable<{ lng: string; ns: string }>; + readonly removed$: Observable<{ lng: string; ns: string }>; + readonly languageChanged$: Observable; + + get options(): InitOptions { + return i18next.options; + } + + get currentLng(): string { + return this._currentLng; + } + + private readonly initializedSubject = new BehaviorSubject(null); + private readonly loadedSubject = new BehaviorSubject(false); + private readonly failedLoadingSubject = new Subject<{ + lng: string; + ns: string; + msg: string; + }>(); + private readonly missingKeySubject = new Subject<{ + lngs: string[]; + ns: string; + key: string; + res: string; + }>(); + private readonly addedSubject = new Subject<{ lng: string; ns: string }>(); + private readonly removedSubject = new Subject<{ lng: string; ns: string }>(); + private readonly languageChangedSubject = new BehaviorSubject(null); + + // tslint:disable-next-line: variable-name + private _currentLng: string; + + constructor() { + this.initialized$ = this.initializedSubject.asObservable().pipe(share()); + this.loaded$ = this.loadedSubject.asObservable().pipe(share()); + this.failedLoading$ = this.failedLoadingSubject + .asObservable() + .pipe(share()); + this.missingKey$ = this.missingKeySubject.asObservable().pipe(share()); + this.added$ = this.addedSubject.asObservable().pipe(share()); + this.removed$ = this.removedSubject.asObservable().pipe(share()); + this.languageChanged$ = this.languageChangedSubject + .asObservable() + .pipe(share()); + } + + ngOnDestroy(): void { + this.initializedSubject.next(null); + this.initializedSubject.complete(); + + this.loadedSubject.next(null); + this.loadedSubject.complete(); + + this.failedLoadingSubject.next(null); + this.failedLoadingSubject.complete(); + + this.missingKeySubject.next(null); + this.missingKeySubject.complete(); + + this.addedSubject.next(null); + this.addedSubject.complete(); + + this.removedSubject.next(null); + this.removedSubject.complete(); + + this.languageChangedSubject.next(null); + this.languageChangedSubject.complete(); + } + + use( + module: T | Newable | ThirdPartyModule[] | Newable[] + ) { + i18next.use(module); + return this; + } + + init(options?: InitOptions) { + options = options || {}; + + this.subscribeEvents(); + + return i18next.init(); + } + + changeLanguage(lng: string) { + return new Promise((resolve, reject) => { + if (lng === this.currentLng) { + resolve(); + return; + } + + i18next + .changeLanguage(lng) + .then(v => { + resolve(); + }) + .catch(reason => { + reject(reason); + }); + }); + } + + loadNamespaces(ns: string | string[]) { + return i18next.loadNamespaces(ns); + } + + loadLanguages(lngs: string | string[]) { + return i18next.loadLanguages(lngs); + } + + reloadResources(lngs?: string | string[], ns?: string | string[]) { + return i18next.reloadResources(lngs, ns); + } + + getResource( + lng: string, + ns: string, + key: string, + options?: { keySeparator?: string } + ) { + return i18next.getResource(lng, ns, key, options); + } + + addResource( + lng: string, + ns: string, + key: string, + value: string, + options?: { keySeparator?: string } + ) { + i18next.addResource(lng, ns, key, value, options); + } + + addResources(lng: string, ns: string, resources: any) { + i18next.addResources(lng, ns, resources); + } + + addResourceBundle( + lng: string, + ns: string, + resources: any, + deep?: boolean, + overwrite?: boolean + ) { + i18next.addResourceBundle(lng, ns, resources, deep, overwrite); + } + + hasResourceBundle(lng: string, ns: string) { + return i18next.hasResourceBundle(lng, ns); + } + + getResourceBundle(lng: string, ns: string) { + return i18next.getResourceBundle(lng, ns); + } + + removeResourceBundle(lng: string, ns: string) { + i18next.removeResourceBundle(lng, ns); + } + + t( + key: string | string[], + optionsOrDefault?: string | TOptions + ): string; + t( + key: string | string[], + optionsOrDefaultValue?: string, + options?: string | TOptions + ): string { + return i18next.t(key, optionsOrDefaultValue, options); + } + + format(value: any, format?: string, lng?: string) { + return i18next.format(value, format, lng); + } + + exists(key: string | string[], options: TOptions) { + return i18next.exists(key, options); + } + + getFixedT(lng: string | string[], ns?: string | string[]) { + return i18next.getFixedT(lng, ns); + } + + setDefaultNamespace(ns: string) { + i18next.setDefaultNamespace(ns); + } + + dir(lng?: string) { + return i18next.dir(lng); + } + + private subscribeEvents() { + // tslint:disable-next-line: variable-name + const __this = this; + + i18next.on(I18nextEvents.initialized, options => { + __this.initializedSubject.next(options); + }); + i18next.on(I18nextEvents.loaded, loaded => { + __this.loadedSubject.next(loaded); + }); + i18next.on(I18nextEvents.failedLoading, (lng, ns, msg) => { + __this.failedLoadingSubject.next({ lng, ns, msg }); + }); + i18next.on(I18nextEvents.languageChanged, lng => { + __this.languageChangedSubject.next(lng); + this._currentLng = lng; + }); + i18next.on(I18nextEvents.missingKey, (lngs, ns, key, res) => { + __this.missingKeySubject.next({ lngs, ns, key, res }); + }); + i18next.on(I18nextEvents.added, (lng, ns) => { + __this.addedSubject.next({ lng, ns }); + }); + i18next.on(I18nextEvents.removed, (lng, ns) => { + __this.removedSubject.next({ lng, ns }); + }); + } +} diff --git a/projects/i18n/src/lib/types/i18next.event.ts b/projects/i18n/src/lib/types/i18next.event.ts new file mode 100644 index 0000000..1008d46 --- /dev/null +++ b/projects/i18n/src/lib/types/i18next.event.ts @@ -0,0 +1,9 @@ +export enum I18nextEvents { + initialized = 'initialized', + loaded = 'loaded', + failedLoading = 'failedLoading', + languageChanged = 'languageChanged', + missingKey = 'missingKey', + added = 'added', + removed = 'removed' +} diff --git a/projects/i18n/src/lib/types/token.ts b/projects/i18n/src/lib/types/token.ts new file mode 100644 index 0000000..91e2909 --- /dev/null +++ b/projects/i18n/src/lib/types/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const UCAP_I18N_NAMESPACE = new InjectionToken( + '@ucap/ng-i18n value of namespace' +); diff --git a/projects/i18n/src/public-api.ts b/projects/i18n/src/public-api.ts new file mode 100644 index 0000000..07d0cdb --- /dev/null +++ b/projects/i18n/src/public-api.ts @@ -0,0 +1,14 @@ +/* + * Public API Surface of i18n + */ + +export * from './lib/config/module-config'; + +export * from './lib/pipes/i18n.pipe'; + +export * from './lib/services/i18n.service'; + +export * from './lib/types/i18next.event'; +export * from './lib/types/token'; + +export * from './lib/i18n.module'; diff --git a/projects/i18n/src/test.ts b/projects/i18n/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/i18n/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/i18n/tsconfig.lib.json b/projects/i18n/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/i18n/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "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..cbae794 --- /dev/null +++ b/projects/i18n/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/i18n/tsconfig.spec.json b/projects/i18n/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/i18n/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "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..18e4eb6 --- /dev/null +++ b/projects/i18n/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "ucapI18n", + "camelCase" + ], + "component-selector": [ + true, + "element", + "ucap-i18n", + "kebab-case" + ] + } +} diff --git a/projects/native-browser/README.md b/projects/native-browser/README.md new file mode 100644 index 0000000..03a92d8 --- /dev/null +++ b/projects/native-browser/README.md @@ -0,0 +1,24 @@ +# NativeBrowser + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project native-browser` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project native-browser`. +> Note: Don't forget to add `--project native-browser` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build native-browser` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build native-browser`, go to the dist folder `cd dist/native-browser` and run `npm publish`. + +## Running unit tests + +Run `ng test native-browser` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/native-browser/karma.conf.js b/projects/native-browser/karma.conf.js new file mode 100644 index 0000000..3db63cf --- /dev/null +++ b/projects/native-browser/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/native-browser'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/native-browser/ng-package.json b/projects/native-browser/ng-package.json new file mode 100644 index 0000000..db3da68 --- /dev/null +++ b/projects/native-browser/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/native-browser", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/native-browser": "@ucap/native-browser", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/native-browser/package.json b/projects/native-browser/package.json new file mode 100644 index 0000000..490a918 --- /dev/null +++ b/projects/native-browser/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-native-browser", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/native-browser": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "axios": "^0.19.2", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/native-browser/src/lib/services/browser-native.service.spec.ts b/projects/native-browser/src/lib/services/browser-native.service.spec.ts new file mode 100644 index 0000000..64a9b92 --- /dev/null +++ b/projects/native-browser/src/lib/services/browser-native.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { BrowserNativeService } from './browser-native.service'; + +describe('BrowserNativeService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: BrowserNativeService = TestBed.inject(BrowserNativeService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/native-browser/src/lib/services/browser-native.service.ts b/projects/native-browser/src/lib/services/browser-native.service.ts new file mode 100644 index 0000000..c87d100 --- /dev/null +++ b/projects/native-browser/src/lib/services/browser-native.service.ts @@ -0,0 +1,16 @@ +import { Injectable, Inject } from '@angular/core'; + +import { AxiosInstance } from 'axios'; + +import { BrowserNativeService as UcapBrowserNativeService } from '@ucap/native-browser'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +@Injectable({ + providedIn: 'root' +}) +export class BrowserNativeService extends UcapBrowserNativeService { + constructor(@Inject(AXIOS_INSTANCE) axios: AxiosInstance) { + super(axios); + } +} diff --git a/projects/native-browser/src/public-api.ts b/projects/native-browser/src/public-api.ts new file mode 100644 index 0000000..d7da042 --- /dev/null +++ b/projects/native-browser/src/public-api.ts @@ -0,0 +1,5 @@ +/* + * Public API Surface of native-browser + */ + +export * from './lib/services/browser-native.service'; diff --git a/projects/native-browser/src/test.ts b/projects/native-browser/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/native-browser/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/native-browser/tsconfig.lib.json b/projects/native-browser/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/native-browser/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/native-browser/tsconfig.lib.prod.json b/projects/native-browser/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/native-browser/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/native-browser/tsconfig.spec.json b/projects/native-browser/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/native-browser/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "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-browser/tslint.json b/projects/native-browser/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/native-browser/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/native/README.md b/projects/native/README.md new file mode 100644 index 0000000..2250cb5 --- /dev/null +++ b/projects/native/README.md @@ -0,0 +1,24 @@ +# Native + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project native` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project native`. +> Note: Don't forget to add `--project native` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build native` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build native`, go to the dist folder `cd dist/native` and run `npm publish`. + +## Running unit tests + +Run `ng test native` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/native/karma.conf.js b/projects/native/karma.conf.js new file mode 100644 index 0000000..19f6a46 --- /dev/null +++ b/projects/native/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/native'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/native/ng-package.json b/projects/native/ng-package.json new file mode 100644 index 0000000..db18b23 --- /dev/null +++ b/projects/native/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/native", + "lib": { + "entryFile": "src/public-api.ts" + } +} \ No newline at end of file diff --git a/projects/native/package.json b/projects/native/package.json new file mode 100644 index 0000000..a0c4ec7 --- /dev/null +++ b/projects/native/package.json @@ -0,0 +1,14 @@ +{ + "name": "@ucap/ng-native", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/native": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/native/src/lib/types/token.ts b/projects/native/src/lib/types/token.ts new file mode 100644 index 0000000..932cb77 --- /dev/null +++ b/projects/native/src/lib/types/token.ts @@ -0,0 +1,7 @@ +import { InjectionToken } from '@angular/core'; + +import { NativeService } from '@ucap/native'; + +export const UCAP_NATIVE_SERVICE = new InjectionToken( + '@ucap/ng-native service of native' +); diff --git a/projects/native/src/public-api.ts b/projects/native/src/public-api.ts new file mode 100644 index 0000000..781a13d --- /dev/null +++ b/projects/native/src/public-api.ts @@ -0,0 +1,5 @@ +/* + * Public API Surface of native + */ + +export * from './lib/types/token'; diff --git a/projects/native/src/test.ts b/projects/native/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/native/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/native/tsconfig.lib.json b/projects/native/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/native/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "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..cbae794 --- /dev/null +++ b/projects/native/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/native/tsconfig.spec.json b/projects/native/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/native/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "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..124133f --- /dev/null +++ b/projects/native/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/pi/README.md b/projects/pi/README.md new file mode 100644 index 0000000..695f381 --- /dev/null +++ b/projects/pi/README.md @@ -0,0 +1,24 @@ +# Pi + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project pi` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project pi`. +> Note: Don't forget to add `--project pi` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build pi` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build pi`, go to the dist folder `cd dist/pi` and run `npm publish`. + +## Running unit tests + +Run `ng test pi` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/pi/karma.conf.js b/projects/pi/karma.conf.js new file mode 100644 index 0000000..5ed9099 --- /dev/null +++ b/projects/pi/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/pi'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/pi/ng-package.json b/projects/pi/ng-package.json new file mode 100644 index 0000000..b57289f --- /dev/null +++ b/projects/pi/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/pi", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/pi": "@ucap/pi", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/pi/package.json b/projects/pi/package.json new file mode 100644 index 0000000..2102892 --- /dev/null +++ b/projects/pi/package.json @@ -0,0 +1,17 @@ +{ + "name": "@ucap/ng-pi", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/pi": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "axios": "^0.19.2", + "crypto-js": "^4.0.0", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/pi/src/lib/config/token.ts b/projects/pi/src/lib/config/token.ts new file mode 100644 index 0000000..aaf077d --- /dev/null +++ b/projects/pi/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-pi config of module' +); diff --git a/projects/pi/src/lib/pi.module.ts b/projects/pi/src/lib/pi.module.ts new file mode 100644 index 0000000..2ed4b85 --- /dev/null +++ b/projects/pi/src/lib/pi.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/pi'; + +import { _MODULE_CONFIG } from './config/token'; + +import { PiService } from './services/pi.service'; + +const SERVICES = [PiService]; + +@NgModule({}) +export class PiRootModule {} + +@NgModule({}) +export class PiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: PiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/pi/src/lib/services/pi.service.spec.ts b/projects/pi/src/lib/services/pi.service.spec.ts new file mode 100644 index 0000000..f3de062 --- /dev/null +++ b/projects/pi/src/lib/services/pi.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { PiService } from './pi.service'; + +describe('PiService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: PiService = TestBed.inject(PiService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/pi/src/lib/services/pi.service.ts b/projects/pi/src/lib/services/pi.service.ts new file mode 100644 index 0000000..e43e0b0 --- /dev/null +++ b/projects/pi/src/lib/services/pi.service.ts @@ -0,0 +1,21 @@ +import { Injectable, Inject } from '@angular/core'; + +import { AxiosInstance } from 'axios'; + +import { ModuleConfig, PiService as UcapPiService } from '@ucap/pi'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class PiService extends UcapPiService { + constructor( + @Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig, + @Inject(AXIOS_INSTANCE) axios: AxiosInstance + ) { + super(moduleConfig, axios); + } +} diff --git a/projects/pi/src/public-api.ts b/projects/pi/src/public-api.ts new file mode 100644 index 0000000..79828ce --- /dev/null +++ b/projects/pi/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of pi + */ + +export * from './lib/services/pi.service'; + +export * from './lib/pi.module'; diff --git a/projects/pi/src/test.ts b/projects/pi/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/pi/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/pi/tsconfig.lib.json b/projects/pi/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/pi/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/pi/tsconfig.lib.prod.json b/projects/pi/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/pi/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/pi/tsconfig.spec.json b/projects/pi/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/pi/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/pi/tslint.json b/projects/pi/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/pi/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-authentication/README.md b/projects/protocol-authentication/README.md new file mode 100644 index 0000000..c74023c --- /dev/null +++ b/projects/protocol-authentication/README.md @@ -0,0 +1,24 @@ +# ProtocolAuthentication + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-authentication` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-authentication`. +> Note: Don't forget to add `--project protocol-authentication` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-authentication` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-authentication`, go to the dist folder `cd dist/protocol-authentication` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-authentication` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-authentication/karma.conf.js b/projects/protocol-authentication/karma.conf.js new file mode 100644 index 0000000..18060c1 --- /dev/null +++ b/projects/protocol-authentication/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-authentication'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-authentication/ng-package.json b/projects/protocol-authentication/ng-package.json new file mode 100644 index 0000000..8b94dce --- /dev/null +++ b/projects/protocol-authentication/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-authentication", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-authentication": "@ucap/protocol-authentication", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-authentication/package.json b/projects/protocol-authentication/package.json new file mode 100644 index 0000000..f4e4610 --- /dev/null +++ b/projects/protocol-authentication/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-authentication", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-authentication": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-authentication/src/lib/authentication-protocol.module.ts b/projects/protocol-authentication/src/lib/authentication-protocol.module.ts new file mode 100644 index 0000000..e83419c --- /dev/null +++ b/projects/protocol-authentication/src/lib/authentication-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-authentication'; + +import { _MODULE_CONFIG } from './config/token'; + +import { AuthenticationProtocolService } from './services/authentication-protocol.service'; + +const SERVICES = [AuthenticationProtocolService]; + +@NgModule({}) +export class AuthenticationProtocolRootModule {} + +@NgModule({}) +export class AuthenticationProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: AuthenticationProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-authentication/src/lib/config/token.ts b/projects/protocol-authentication/src/lib/config/token.ts new file mode 100644 index 0000000..14e8c03 --- /dev/null +++ b/projects/protocol-authentication/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-authentication config of module' +); diff --git a/projects/protocol-authentication/src/lib/services/authentication-protocol.service.spec.ts b/projects/protocol-authentication/src/lib/services/authentication-protocol.service.spec.ts new file mode 100644 index 0000000..5201cda --- /dev/null +++ b/projects/protocol-authentication/src/lib/services/authentication-protocol.service.spec.ts @@ -0,0 +1,14 @@ +import { TestBed } from '@angular/core/testing'; + +import { AuthenticationProtocolService } from './authentication-protocol.service'; + +describe('AuthenticationProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: AuthenticationProtocolService = TestBed.inject( + AuthenticationProtocolService + ); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-authentication/src/lib/services/authentication-protocol.service.ts b/projects/protocol-authentication/src/lib/services/authentication-protocol.service.ts new file mode 100644 index 0000000..3f74d83 --- /dev/null +++ b/projects/protocol-authentication/src/lib/services/authentication-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { AuthenticationProtocolService as UcapAuthenticationProtocolService } from '@ucap/protocol-authentication'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthenticationProtocolService extends UcapAuthenticationProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-authentication/src/public-api.ts b/projects/protocol-authentication/src/public-api.ts new file mode 100644 index 0000000..e4876f3 --- /dev/null +++ b/projects/protocol-authentication/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-authentication + */ + +export * from './lib/services/authentication-protocol.service'; + +export * from './lib/authentication-protocol.module'; diff --git a/projects/protocol-authentication/src/test.ts b/projects/protocol-authentication/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-authentication/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-authentication/tsconfig.lib.json b/projects/protocol-authentication/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-authentication/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-authentication/tsconfig.lib.prod.json b/projects/protocol-authentication/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-authentication/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-authentication/tsconfig.spec.json b/projects/protocol-authentication/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-authentication/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-authentication/tslint.json b/projects/protocol-authentication/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-authentication/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-buddy/README.md b/projects/protocol-buddy/README.md new file mode 100644 index 0000000..788f7c6 --- /dev/null +++ b/projects/protocol-buddy/README.md @@ -0,0 +1,24 @@ +# ProtocolBuddy + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-buddy` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-buddy`. +> Note: Don't forget to add `--project protocol-buddy` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-buddy` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-buddy`, go to the dist folder `cd dist/protocol-buddy` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-buddy` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-buddy/karma.conf.js b/projects/protocol-buddy/karma.conf.js new file mode 100644 index 0000000..687f13e --- /dev/null +++ b/projects/protocol-buddy/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-buddy'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-buddy/ng-package.json b/projects/protocol-buddy/ng-package.json new file mode 100644 index 0000000..3966ee9 --- /dev/null +++ b/projects/protocol-buddy/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-buddy", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-buddy": "@ucap/protocol-buddy", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-buddy/package.json b/projects/protocol-buddy/package.json new file mode 100644 index 0000000..00e527c --- /dev/null +++ b/projects/protocol-buddy/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-buddy", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-buddy": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-buddy/src/lib/buddy-protocol.module.ts b/projects/protocol-buddy/src/lib/buddy-protocol.module.ts new file mode 100644 index 0000000..e2167d0 --- /dev/null +++ b/projects/protocol-buddy/src/lib/buddy-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-buddy'; + +import { _MODULE_CONFIG } from './config/token'; + +import { BuddyProtocolService } from './services/buddy-protocol.service'; + +const SERVICES = [BuddyProtocolService]; + +@NgModule({}) +export class BuddyProtocolRootModule {} + +@NgModule({}) +export class BuddyProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: BuddyProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-buddy/src/lib/config/token.ts b/projects/protocol-buddy/src/lib/config/token.ts new file mode 100644 index 0000000..9f920e0 --- /dev/null +++ b/projects/protocol-buddy/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-buddy config of module' +); diff --git a/projects/protocol-buddy/src/lib/services/buddy-protocol.service.spec.ts b/projects/protocol-buddy/src/lib/services/buddy-protocol.service.spec.ts new file mode 100644 index 0000000..d43c8ca --- /dev/null +++ b/projects/protocol-buddy/src/lib/services/buddy-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { BuddyProtocolService } from './buddy-protocol.service'; + +describe('BuddyProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: BuddyProtocolService = TestBed.inject(BuddyProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-buddy/src/lib/services/buddy-protocol.service.ts b/projects/protocol-buddy/src/lib/services/buddy-protocol.service.ts new file mode 100644 index 0000000..32da0f7 --- /dev/null +++ b/projects/protocol-buddy/src/lib/services/buddy-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { BuddyProtocolService as UcapBuddyProtocolService } from '@ucap/protocol-buddy'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class BuddyProtocolService extends UcapBuddyProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-buddy/src/public-api.ts b/projects/protocol-buddy/src/public-api.ts new file mode 100644 index 0000000..177f3a6 --- /dev/null +++ b/projects/protocol-buddy/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-buddy + */ + +export * from './lib/services/buddy-protocol.service'; + +export * from './lib/buddy-protocol.module'; diff --git a/projects/protocol-buddy/src/test.ts b/projects/protocol-buddy/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-buddy/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-buddy/tsconfig.lib.json b/projects/protocol-buddy/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-buddy/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-buddy/tsconfig.lib.prod.json b/projects/protocol-buddy/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-buddy/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-buddy/tsconfig.spec.json b/projects/protocol-buddy/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-buddy/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-buddy/tslint.json b/projects/protocol-buddy/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-buddy/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-event/README.md b/projects/protocol-event/README.md new file mode 100644 index 0000000..5904bd1 --- /dev/null +++ b/projects/protocol-event/README.md @@ -0,0 +1,24 @@ +# ProtocolEvent + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-event` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-event`. +> Note: Don't forget to add `--project protocol-event` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-event` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-event`, go to the dist folder `cd dist/protocol-event` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-event` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-event/karma.conf.js b/projects/protocol-event/karma.conf.js new file mode 100644 index 0000000..02629ce --- /dev/null +++ b/projects/protocol-event/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-event'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-event/ng-package.json b/projects/protocol-event/ng-package.json new file mode 100644 index 0000000..1254fa7 --- /dev/null +++ b/projects/protocol-event/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-event", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-event": "@ucap/protocol-event", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-event/package.json b/projects/protocol-event/package.json new file mode 100644 index 0000000..3ee12f5 --- /dev/null +++ b/projects/protocol-event/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-event", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-event": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-event/src/lib/config/token.ts b/projects/protocol-event/src/lib/config/token.ts new file mode 100644 index 0000000..12c7e8f --- /dev/null +++ b/projects/protocol-event/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-event config of module' +); diff --git a/projects/protocol-event/src/lib/event-protocol.module.ts b/projects/protocol-event/src/lib/event-protocol.module.ts new file mode 100644 index 0000000..567926c --- /dev/null +++ b/projects/protocol-event/src/lib/event-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-event'; + +import { _MODULE_CONFIG } from './config/token'; + +import { EventProtocolService } from './services/event-protocol.service'; + +const SERVICES = [EventProtocolService]; + +@NgModule({}) +export class EventProtocolRootModule {} + +@NgModule({}) +export class EventProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: EventProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-event/src/lib/services/event-protocol.service.spec.ts b/projects/protocol-event/src/lib/services/event-protocol.service.spec.ts new file mode 100644 index 0000000..b8a0432 --- /dev/null +++ b/projects/protocol-event/src/lib/services/event-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { EventProtocolService } from './event-protocol.service'; + +describe('EventProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: EventProtocolService = TestBed.inject(EventProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-event/src/lib/services/event-protocol.service.ts b/projects/protocol-event/src/lib/services/event-protocol.service.ts new file mode 100644 index 0000000..3cfbfb6 --- /dev/null +++ b/projects/protocol-event/src/lib/services/event-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { EventProtocolService as UcapEventProtocolService } from '@ucap/protocol-event'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class EventProtocolService extends UcapEventProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-event/src/public-api.ts b/projects/protocol-event/src/public-api.ts new file mode 100644 index 0000000..3fddd12 --- /dev/null +++ b/projects/protocol-event/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-event + */ + +export * from './lib/services/event-protocol.service'; + +export * from './lib/event-protocol.module'; diff --git a/projects/protocol-event/src/test.ts b/projects/protocol-event/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-event/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-event/tsconfig.lib.json b/projects/protocol-event/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-event/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-event/tsconfig.lib.prod.json b/projects/protocol-event/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-event/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-event/tsconfig.spec.json b/projects/protocol-event/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-event/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-event/tslint.json b/projects/protocol-event/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-event/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-file/README.md b/projects/protocol-file/README.md new file mode 100644 index 0000000..82a424c --- /dev/null +++ b/projects/protocol-file/README.md @@ -0,0 +1,24 @@ +# ProtocolFile + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-file` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-file`. +> Note: Don't forget to add `--project protocol-file` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-file` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-file`, go to the dist folder `cd dist/protocol-file` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-file` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-file/karma.conf.js b/projects/protocol-file/karma.conf.js new file mode 100644 index 0000000..f1567b7 --- /dev/null +++ b/projects/protocol-file/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-file'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-file/ng-package.json b/projects/protocol-file/ng-package.json new file mode 100644 index 0000000..4a71dd5 --- /dev/null +++ b/projects/protocol-file/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-file", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-file": "@ucap/protocol-file", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-file/package.json b/projects/protocol-file/package.json new file mode 100644 index 0000000..ef5b04c --- /dev/null +++ b/projects/protocol-file/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-file", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-file": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-file/src/lib/config/token.ts b/projects/protocol-file/src/lib/config/token.ts new file mode 100644 index 0000000..f19b85d --- /dev/null +++ b/projects/protocol-file/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-file config of module' +); diff --git a/projects/protocol-file/src/lib/file-protocol.module.ts b/projects/protocol-file/src/lib/file-protocol.module.ts new file mode 100644 index 0000000..2550890 --- /dev/null +++ b/projects/protocol-file/src/lib/file-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-file'; + +import { _MODULE_CONFIG } from './config/token'; + +import { FileProtocolService } from './services/file-protocol.service'; + +const SERVICES = [FileProtocolService]; + +@NgModule({}) +export class FileProtocolRootModule {} + +@NgModule({}) +export class FileProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: FileProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-file/src/lib/services/file-protocol.service.spec.ts b/projects/protocol-file/src/lib/services/file-protocol.service.spec.ts new file mode 100644 index 0000000..2c56d62 --- /dev/null +++ b/projects/protocol-file/src/lib/services/file-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { FileProtocolService } from './file-protocol.service'; + +describe('FileProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: FileProtocolService = TestBed.inject(FileProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-file/src/lib/services/file-protocol.service.ts b/projects/protocol-file/src/lib/services/file-protocol.service.ts new file mode 100644 index 0000000..7431cfe --- /dev/null +++ b/projects/protocol-file/src/lib/services/file-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { FileProtocolService as UcapFileProtocolService } from '@ucap/protocol-file'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class FileProtocolService extends UcapFileProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-file/src/public-api.ts b/projects/protocol-file/src/public-api.ts new file mode 100644 index 0000000..beabb15 --- /dev/null +++ b/projects/protocol-file/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-file + */ + +export * from './lib/services/file-protocol.service'; + +export * from './lib/file-protocol.module'; diff --git a/projects/protocol-file/src/test.ts b/projects/protocol-file/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-file/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-file/tsconfig.lib.json b/projects/protocol-file/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-file/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-file/tsconfig.lib.prod.json b/projects/protocol-file/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-file/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-file/tsconfig.spec.json b/projects/protocol-file/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-file/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-file/tslint.json b/projects/protocol-file/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-file/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-group/README.md b/projects/protocol-group/README.md new file mode 100644 index 0000000..6611dd5 --- /dev/null +++ b/projects/protocol-group/README.md @@ -0,0 +1,24 @@ +# ProtocolGroup + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-group` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-group`. +> Note: Don't forget to add `--project protocol-group` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-group` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-group`, go to the dist folder `cd dist/protocol-group` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-group` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-group/karma.conf.js b/projects/protocol-group/karma.conf.js new file mode 100644 index 0000000..fc9446a --- /dev/null +++ b/projects/protocol-group/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-group'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-group/ng-package.json b/projects/protocol-group/ng-package.json new file mode 100644 index 0000000..2d56525 --- /dev/null +++ b/projects/protocol-group/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-group", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-group": "@ucap/protocol-group", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-group/package.json b/projects/protocol-group/package.json new file mode 100644 index 0000000..e2422c4 --- /dev/null +++ b/projects/protocol-group/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-group", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-group": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-group/src/lib/config/token.ts b/projects/protocol-group/src/lib/config/token.ts new file mode 100644 index 0000000..19fd237 --- /dev/null +++ b/projects/protocol-group/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-group config of module' +); diff --git a/projects/protocol-group/src/lib/group-protocol.module.ts b/projects/protocol-group/src/lib/group-protocol.module.ts new file mode 100644 index 0000000..5fa960d --- /dev/null +++ b/projects/protocol-group/src/lib/group-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-group'; + +import { _MODULE_CONFIG } from './config/token'; + +import { GroupProtocolService } from './services/group-protocol.service'; + +const SERVICES = [GroupProtocolService]; + +@NgModule({}) +export class GroupProtocolRootModule {} + +@NgModule({}) +export class GroupProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: GroupProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-group/src/lib/services/group-protocol.service.spec.ts b/projects/protocol-group/src/lib/services/group-protocol.service.spec.ts new file mode 100644 index 0000000..41d60f8 --- /dev/null +++ b/projects/protocol-group/src/lib/services/group-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { GroupProtocolService } from './group-protocol.service'; + +describe('GroupProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: GroupProtocolService = TestBed.inject(GroupProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-group/src/lib/services/group-protocol.service.ts b/projects/protocol-group/src/lib/services/group-protocol.service.ts new file mode 100644 index 0000000..5416263 --- /dev/null +++ b/projects/protocol-group/src/lib/services/group-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { GroupProtocolService as UcapGroupProtocolService } from '@ucap/protocol-group'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class GroupProtocolService extends UcapGroupProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-group/src/public-api.ts b/projects/protocol-group/src/public-api.ts new file mode 100644 index 0000000..4618874 --- /dev/null +++ b/projects/protocol-group/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-group + */ + +export * from './lib/services/group-protocol.service'; + +export * from './lib/group-protocol.module'; diff --git a/projects/protocol-group/src/test.ts b/projects/protocol-group/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-group/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-group/tsconfig.lib.json b/projects/protocol-group/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-group/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-group/tsconfig.lib.prod.json b/projects/protocol-group/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-group/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-group/tsconfig.spec.json b/projects/protocol-group/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-group/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-group/tslint.json b/projects/protocol-group/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-group/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-info/README.md b/projects/protocol-info/README.md new file mode 100644 index 0000000..793dd93 --- /dev/null +++ b/projects/protocol-info/README.md @@ -0,0 +1,24 @@ +# ProtocolInfo + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-info` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-info`. +> Note: Don't forget to add `--project protocol-info` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-info` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-info`, go to the dist folder `cd dist/protocol-info` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-info` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-info/karma.conf.js b/projects/protocol-info/karma.conf.js new file mode 100644 index 0000000..1232475 --- /dev/null +++ b/projects/protocol-info/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-info'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-info/ng-package.json b/projects/protocol-info/ng-package.json new file mode 100644 index 0000000..4b2aafe --- /dev/null +++ b/projects/protocol-info/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-info", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-info": "@ucap/protocol-info", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-info/package.json b/projects/protocol-info/package.json new file mode 100644 index 0000000..42e0c2a --- /dev/null +++ b/projects/protocol-info/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-info", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-info": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-info/src/lib/config/token.ts b/projects/protocol-info/src/lib/config/token.ts new file mode 100644 index 0000000..fd931c3 --- /dev/null +++ b/projects/protocol-info/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-info config of module' +); diff --git a/projects/protocol-info/src/lib/info-protocol.module.ts b/projects/protocol-info/src/lib/info-protocol.module.ts new file mode 100644 index 0000000..6d27f76 --- /dev/null +++ b/projects/protocol-info/src/lib/info-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-info'; + +import { _MODULE_CONFIG } from './config/token'; + +import { InfoProtocolService } from './services/info-protocol.service'; + +const SERVICES = [InfoProtocolService]; + +@NgModule({}) +export class InfoProtocolRootModule {} + +@NgModule({}) +export class InfoProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: InfoProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-info/src/lib/services/info-protocol.service.spec.ts b/projects/protocol-info/src/lib/services/info-protocol.service.spec.ts new file mode 100644 index 0000000..0beb205 --- /dev/null +++ b/projects/protocol-info/src/lib/services/info-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { InfoProtocolService } from './info-protocol.service'; + +describe('InfoProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: InfoProtocolService = TestBed.inject(InfoProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-info/src/lib/services/info-protocol.service.ts b/projects/protocol-info/src/lib/services/info-protocol.service.ts new file mode 100644 index 0000000..a9b7c7b --- /dev/null +++ b/projects/protocol-info/src/lib/services/info-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { InfoProtocolService as UcapInfoProtocolService } from '@ucap/protocol-info'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class InfoProtocolService extends UcapInfoProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-info/src/public-api.ts b/projects/protocol-info/src/public-api.ts new file mode 100644 index 0000000..3a9f45a --- /dev/null +++ b/projects/protocol-info/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-info + */ + +export * from './lib/services/info-protocol.service'; + +export * from './lib/info-protocol.module'; diff --git a/projects/protocol-info/src/test.ts b/projects/protocol-info/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-info/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-info/tsconfig.lib.json b/projects/protocol-info/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-info/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-info/tsconfig.lib.prod.json b/projects/protocol-info/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-info/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-info/tsconfig.spec.json b/projects/protocol-info/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-info/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-info/tslint.json b/projects/protocol-info/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-info/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-inner/README.md b/projects/protocol-inner/README.md new file mode 100644 index 0000000..cb8ae68 --- /dev/null +++ b/projects/protocol-inner/README.md @@ -0,0 +1,24 @@ +# ProtocolInner + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-inner` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-inner`. +> Note: Don't forget to add `--project protocol-inner` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-inner` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-inner`, go to the dist folder `cd dist/protocol-inner` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-inner` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-inner/karma.conf.js b/projects/protocol-inner/karma.conf.js new file mode 100644 index 0000000..2391f46 --- /dev/null +++ b/projects/protocol-inner/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-inner'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-inner/ng-package.json b/projects/protocol-inner/ng-package.json new file mode 100644 index 0000000..ed87b03 --- /dev/null +++ b/projects/protocol-inner/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-inner", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-inner": "@ucap/protocol-inner", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-inner/package.json b/projects/protocol-inner/package.json new file mode 100644 index 0000000..8a01a35 --- /dev/null +++ b/projects/protocol-inner/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-inner", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-inner": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-inner/src/lib/config/token.ts b/projects/protocol-inner/src/lib/config/token.ts new file mode 100644 index 0000000..fa04ff5 --- /dev/null +++ b/projects/protocol-inner/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-inner config of module' +); diff --git a/projects/protocol-inner/src/lib/inner-protocol.module.ts b/projects/protocol-inner/src/lib/inner-protocol.module.ts new file mode 100644 index 0000000..cdef380 --- /dev/null +++ b/projects/protocol-inner/src/lib/inner-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-inner'; + +import { _MODULE_CONFIG } from './config/token'; + +import { InnerProtocolService } from './services/inner-protocol.service'; + +const SERVICES = [InnerProtocolService]; + +@NgModule({}) +export class InnerProtocolRootModule {} + +@NgModule({}) +export class InnerProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: InnerProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-inner/src/lib/services/inner-protocol.service.spec.ts b/projects/protocol-inner/src/lib/services/inner-protocol.service.spec.ts new file mode 100644 index 0000000..0903d88 --- /dev/null +++ b/projects/protocol-inner/src/lib/services/inner-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { InnerProtocolService } from './inner-protocol.service'; + +describe('InnerProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: InnerProtocolService = TestBed.inject(InnerProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-inner/src/lib/services/inner-protocol.service.ts b/projects/protocol-inner/src/lib/services/inner-protocol.service.ts new file mode 100644 index 0000000..2670c35 --- /dev/null +++ b/projects/protocol-inner/src/lib/services/inner-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { InnerProtocolService as UcapInnerProtocolService } from '@ucap/protocol-inner'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class InnerProtocolService extends UcapInnerProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-inner/src/public-api.ts b/projects/protocol-inner/src/public-api.ts new file mode 100644 index 0000000..d6505fe --- /dev/null +++ b/projects/protocol-inner/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-inner + */ + +export * from './lib/services/inner-protocol.service'; + +export * from './lib/inner-protocol.module'; diff --git a/projects/protocol-inner/src/test.ts b/projects/protocol-inner/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-inner/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-inner/tsconfig.lib.json b/projects/protocol-inner/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-inner/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-inner/tsconfig.lib.prod.json b/projects/protocol-inner/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-inner/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-inner/tsconfig.spec.json b/projects/protocol-inner/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-inner/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-inner/tslint.json b/projects/protocol-inner/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-inner/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-option/README.md b/projects/protocol-option/README.md new file mode 100644 index 0000000..016c9a7 --- /dev/null +++ b/projects/protocol-option/README.md @@ -0,0 +1,24 @@ +# ProtocolOption + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-option` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-option`. +> Note: Don't forget to add `--project protocol-option` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-option` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-option`, go to the dist folder `cd dist/protocol-option` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-option` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-option/karma.conf.js b/projects/protocol-option/karma.conf.js new file mode 100644 index 0000000..5ca3667 --- /dev/null +++ b/projects/protocol-option/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-option'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-option/ng-package.json b/projects/protocol-option/ng-package.json new file mode 100644 index 0000000..2dac63b --- /dev/null +++ b/projects/protocol-option/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-option", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-option": "@ucap/protocol-option", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-option/package.json b/projects/protocol-option/package.json new file mode 100644 index 0000000..6cdde5d --- /dev/null +++ b/projects/protocol-option/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-option", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-option": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-option/src/lib/config/token.ts b/projects/protocol-option/src/lib/config/token.ts new file mode 100644 index 0000000..5a604ba --- /dev/null +++ b/projects/protocol-option/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-option config of module' +); diff --git a/projects/protocol-option/src/lib/option-protocol.module.ts b/projects/protocol-option/src/lib/option-protocol.module.ts new file mode 100644 index 0000000..94d22d4 --- /dev/null +++ b/projects/protocol-option/src/lib/option-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-option'; + +import { _MODULE_CONFIG } from './config/token'; + +import { OptionProtocolService } from './services/option-protocol.service'; + +const SERVICES = [OptionProtocolService]; + +@NgModule({}) +export class OptionProtocolRootModule {} + +@NgModule({}) +export class OptionProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: OptionProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-option/src/lib/services/option-protocol.service.spec.ts b/projects/protocol-option/src/lib/services/option-protocol.service.spec.ts new file mode 100644 index 0000000..5ad90f9 --- /dev/null +++ b/projects/protocol-option/src/lib/services/option-protocol.service.spec.ts @@ -0,0 +1,14 @@ +import { TestBed } from '@angular/core/testing'; + +import { OptionProtocolService } from './option-protocol.service'; + +describe('OptionProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: OptionProtocolService = TestBed.inject( + OptionProtocolService + ); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-option/src/lib/services/option-protocol.service.ts b/projects/protocol-option/src/lib/services/option-protocol.service.ts new file mode 100644 index 0000000..6e1df26 --- /dev/null +++ b/projects/protocol-option/src/lib/services/option-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { OptionProtocolService as UcapOptionProtocolService } from '@ucap/protocol-option'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class OptionProtocolService extends UcapOptionProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-option/src/public-api.ts b/projects/protocol-option/src/public-api.ts new file mode 100644 index 0000000..974d6c6 --- /dev/null +++ b/projects/protocol-option/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-option + */ + +export * from './lib/services/option-protocol.service'; + +export * from './lib/option-protocol.module'; diff --git a/projects/protocol-option/src/test.ts b/projects/protocol-option/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-option/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-option/tsconfig.lib.json b/projects/protocol-option/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-option/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-option/tsconfig.lib.prod.json b/projects/protocol-option/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-option/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-option/tsconfig.spec.json b/projects/protocol-option/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-option/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-option/tslint.json b/projects/protocol-option/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-option/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-ping/README.md b/projects/protocol-ping/README.md new file mode 100644 index 0000000..872b7d4 --- /dev/null +++ b/projects/protocol-ping/README.md @@ -0,0 +1,24 @@ +# ProtocolPing + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-ping` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-ping`. +> Note: Don't forget to add `--project protocol-ping` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-ping` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-ping`, go to the dist folder `cd dist/protocol-ping` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-ping` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-ping/karma.conf.js b/projects/protocol-ping/karma.conf.js new file mode 100644 index 0000000..6023237 --- /dev/null +++ b/projects/protocol-ping/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-ping'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-ping/ng-package.json b/projects/protocol-ping/ng-package.json new file mode 100644 index 0000000..5cd7594 --- /dev/null +++ b/projects/protocol-ping/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-ping", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-ping": "@ucap/protocol-ping", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-ping/package.json b/projects/protocol-ping/package.json new file mode 100644 index 0000000..c9bac42 --- /dev/null +++ b/projects/protocol-ping/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-ping", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-ping": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-ping/src/lib/config/token.ts b/projects/protocol-ping/src/lib/config/token.ts new file mode 100644 index 0000000..b607355 --- /dev/null +++ b/projects/protocol-ping/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-ping config of module' +); diff --git a/projects/protocol-ping/src/lib/ping-protocol.module.ts b/projects/protocol-ping/src/lib/ping-protocol.module.ts new file mode 100644 index 0000000..d2b2b35 --- /dev/null +++ b/projects/protocol-ping/src/lib/ping-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-ping'; + +import { _MODULE_CONFIG } from './config/token'; + +import { PingProtocolService } from './services/ping-protocol.service'; + +const SERVICES = [PingProtocolService]; + +@NgModule({}) +export class PingProtocolRootModule {} + +@NgModule({}) +export class PingProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: PingProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-ping/src/lib/services/ping-protocol.service.spec.ts b/projects/protocol-ping/src/lib/services/ping-protocol.service.spec.ts new file mode 100644 index 0000000..dfb1584 --- /dev/null +++ b/projects/protocol-ping/src/lib/services/ping-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { PingProtocolService } from './ping-protocol.service'; + +describe('PingProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: PingProtocolService = TestBed.inject(PingProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-ping/src/lib/services/ping-protocol.service.ts b/projects/protocol-ping/src/lib/services/ping-protocol.service.ts new file mode 100644 index 0000000..3dfb007 --- /dev/null +++ b/projects/protocol-ping/src/lib/services/ping-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { PingProtocolService as UcapPingProtocolService } from '@ucap/protocol-ping'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class PingProtocolService extends UcapPingProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-ping/src/public-api.ts b/projects/protocol-ping/src/public-api.ts new file mode 100644 index 0000000..1a42596 --- /dev/null +++ b/projects/protocol-ping/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-ping + */ + +export * from './lib/services/ping-protocol.service'; + +export * from './lib/ping-protocol.module'; diff --git a/projects/protocol-ping/src/test.ts b/projects/protocol-ping/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-ping/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-ping/tsconfig.lib.json b/projects/protocol-ping/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-ping/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-ping/tsconfig.lib.prod.json b/projects/protocol-ping/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-ping/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-ping/tsconfig.spec.json b/projects/protocol-ping/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-ping/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-ping/tslint.json b/projects/protocol-ping/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-ping/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-query/README.md b/projects/protocol-query/README.md new file mode 100644 index 0000000..a9f8e0f --- /dev/null +++ b/projects/protocol-query/README.md @@ -0,0 +1,24 @@ +# ProtocolQuery + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-query` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-query`. +> Note: Don't forget to add `--project protocol-query` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-query` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-query`, go to the dist folder `cd dist/protocol-query` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-query` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-query/karma.conf.js b/projects/protocol-query/karma.conf.js new file mode 100644 index 0000000..5d7abdf --- /dev/null +++ b/projects/protocol-query/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-query'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-query/ng-package.json b/projects/protocol-query/ng-package.json new file mode 100644 index 0000000..bafa8df --- /dev/null +++ b/projects/protocol-query/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-query", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-query": "@ucap/protocol-query", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-query/package.json b/projects/protocol-query/package.json new file mode 100644 index 0000000..87706ca --- /dev/null +++ b/projects/protocol-query/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-query", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-query": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-query/src/lib/config/token.ts b/projects/protocol-query/src/lib/config/token.ts new file mode 100644 index 0000000..3fdeff6 --- /dev/null +++ b/projects/protocol-query/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-query config of module' +); diff --git a/projects/protocol-query/src/lib/query-protocol.module.ts b/projects/protocol-query/src/lib/query-protocol.module.ts new file mode 100644 index 0000000..fd779a6 --- /dev/null +++ b/projects/protocol-query/src/lib/query-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-query'; + +import { _MODULE_CONFIG } from './config/token'; + +import { QueryProtocolService } from './services/query-protocol.service'; + +const SERVICES = [QueryProtocolService]; + +@NgModule({}) +export class QueryProtocolRootModule {} + +@NgModule({}) +export class QueryProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: QueryProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-query/src/lib/services/query-protocol.service.spec.ts b/projects/protocol-query/src/lib/services/query-protocol.service.spec.ts new file mode 100644 index 0000000..5486925 --- /dev/null +++ b/projects/protocol-query/src/lib/services/query-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { QueryProtocolService } from './query-protocol.service'; + +describe('QueryProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: QueryProtocolService = TestBed.inject(QueryProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-query/src/lib/services/query-protocol.service.ts b/projects/protocol-query/src/lib/services/query-protocol.service.ts new file mode 100644 index 0000000..cfb8a27 --- /dev/null +++ b/projects/protocol-query/src/lib/services/query-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { QueryProtocolService as UcapQueryProtocolService } from '@ucap/protocol-query'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class QueryProtocolService extends UcapQueryProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-query/src/public-api.ts b/projects/protocol-query/src/public-api.ts new file mode 100644 index 0000000..cb93164 --- /dev/null +++ b/projects/protocol-query/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-query + */ + +export * from './lib/services/query-protocol.service'; + +export * from './lib/query-protocol.module'; diff --git a/projects/protocol-query/src/test.ts b/projects/protocol-query/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-query/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-query/tsconfig.lib.json b/projects/protocol-query/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-query/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-query/tsconfig.lib.prod.json b/projects/protocol-query/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-query/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-query/tsconfig.spec.json b/projects/protocol-query/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-query/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-query/tslint.json b/projects/protocol-query/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-query/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-room/README.md b/projects/protocol-room/README.md new file mode 100644 index 0000000..87ce225 --- /dev/null +++ b/projects/protocol-room/README.md @@ -0,0 +1,24 @@ +# ProtocolRoom + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-room` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-room`. +> Note: Don't forget to add `--project protocol-room` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-room` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-room`, go to the dist folder `cd dist/protocol-room` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-room` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-room/karma.conf.js b/projects/protocol-room/karma.conf.js new file mode 100644 index 0000000..28c72c7 --- /dev/null +++ b/projects/protocol-room/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-room'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-room/ng-package.json b/projects/protocol-room/ng-package.json new file mode 100644 index 0000000..f901261 --- /dev/null +++ b/projects/protocol-room/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-room", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-room": "@ucap/protocol-room", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-room/package.json b/projects/protocol-room/package.json new file mode 100644 index 0000000..d493c8e --- /dev/null +++ b/projects/protocol-room/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-room", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-room": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-room/src/lib/config/token.ts b/projects/protocol-room/src/lib/config/token.ts new file mode 100644 index 0000000..cdbf1ca --- /dev/null +++ b/projects/protocol-room/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-room config of module' +); diff --git a/projects/protocol-room/src/lib/room-protocol.module.ts b/projects/protocol-room/src/lib/room-protocol.module.ts new file mode 100644 index 0000000..8393f70 --- /dev/null +++ b/projects/protocol-room/src/lib/room-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-room'; + +import { _MODULE_CONFIG } from './config/token'; + +import { RoomProtocolService } from './services/room-protocol.service'; + +const SERVICES = [RoomProtocolService]; + +@NgModule({}) +export class RoomProtocolRootModule {} + +@NgModule({}) +export class RoomProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: RoomProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-room/src/lib/services/room-protocol.service.spec.ts b/projects/protocol-room/src/lib/services/room-protocol.service.spec.ts new file mode 100644 index 0000000..197c542 --- /dev/null +++ b/projects/protocol-room/src/lib/services/room-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { RoomProtocolService } from './room-protocol.service'; + +describe('RoomProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: RoomProtocolService = TestBed.inject(RoomProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-room/src/lib/services/room-protocol.service.ts b/projects/protocol-room/src/lib/services/room-protocol.service.ts new file mode 100644 index 0000000..70196a4 --- /dev/null +++ b/projects/protocol-room/src/lib/services/room-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { RoomProtocolService as UcapRoomProtocolService } from '@ucap/protocol-room'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class RoomProtocolService extends UcapRoomProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-room/src/public-api.ts b/projects/protocol-room/src/public-api.ts new file mode 100644 index 0000000..c809c5a --- /dev/null +++ b/projects/protocol-room/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-room + */ + +export * from './lib/services/room-protocol.service'; + +export * from './lib/room-protocol.module'; diff --git a/projects/protocol-room/src/test.ts b/projects/protocol-room/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-room/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-room/tsconfig.lib.json b/projects/protocol-room/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-room/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-room/tsconfig.lib.prod.json b/projects/protocol-room/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-room/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-room/tsconfig.spec.json b/projects/protocol-room/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-room/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-room/tslint.json b/projects/protocol-room/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-room/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-service/README.md b/projects/protocol-service/README.md new file mode 100644 index 0000000..519f572 --- /dev/null +++ b/projects/protocol-service/README.md @@ -0,0 +1,24 @@ +# ProtocolService + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-service` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-service`. +> Note: Don't forget to add `--project protocol-service` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-service` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-service`, go to the dist folder `cd dist/protocol-service` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-service` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-service/karma.conf.js b/projects/protocol-service/karma.conf.js new file mode 100644 index 0000000..153d3ec --- /dev/null +++ b/projects/protocol-service/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-service'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-service/ng-package.json b/projects/protocol-service/ng-package.json new file mode 100644 index 0000000..d08700f --- /dev/null +++ b/projects/protocol-service/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-service", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-service": "@ucap/protocol-service", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-service/package.json b/projects/protocol-service/package.json new file mode 100644 index 0000000..647803a --- /dev/null +++ b/projects/protocol-service/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-service", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-room": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-service/src/lib/config/token.ts b/projects/protocol-service/src/lib/config/token.ts new file mode 100644 index 0000000..52c2c4c --- /dev/null +++ b/projects/protocol-service/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-service config of module' +); diff --git a/projects/protocol-service/src/lib/service-protocol.module.ts b/projects/protocol-service/src/lib/service-protocol.module.ts new file mode 100644 index 0000000..6070749 --- /dev/null +++ b/projects/protocol-service/src/lib/service-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-service'; + +import { _MODULE_CONFIG } from './config/token'; + +import { ServiceProtocolService } from './services/service-protocol.service'; + +const SERVICES = [ServiceProtocolService]; + +@NgModule({}) +export class ServiceProtocolRootModule {} + +@NgModule({}) +export class ServiceProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: ServiceProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-service/src/lib/services/service-protocol.service.spec.ts b/projects/protocol-service/src/lib/services/service-protocol.service.spec.ts new file mode 100644 index 0000000..7598c90 --- /dev/null +++ b/projects/protocol-service/src/lib/services/service-protocol.service.spec.ts @@ -0,0 +1,14 @@ +import { TestBed } from '@angular/core/testing'; + +import { ServiceProtocolService } from './service-protocol.service'; + +describe('ServiceProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: ServiceProtocolService = TestBed.inject( + ServiceProtocolService + ); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-service/src/lib/services/service-protocol.service.ts b/projects/protocol-service/src/lib/services/service-protocol.service.ts new file mode 100644 index 0000000..69a3ea7 --- /dev/null +++ b/projects/protocol-service/src/lib/services/service-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { ServiceProtocolService as UcapServiceProtocolService } from '@ucap/protocol-service'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class ServiceProtocolService extends UcapServiceProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-service/src/public-api.ts b/projects/protocol-service/src/public-api.ts new file mode 100644 index 0000000..431fe2d --- /dev/null +++ b/projects/protocol-service/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-service + */ + +export * from './lib/services/service-protocol.service'; + +export * from './lib/service-protocol.module'; diff --git a/projects/protocol-service/src/test.ts b/projects/protocol-service/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-service/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-service/tsconfig.lib.json b/projects/protocol-service/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-service/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-service/tsconfig.lib.prod.json b/projects/protocol-service/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-service/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-service/tsconfig.spec.json b/projects/protocol-service/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-service/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-service/tslint.json b/projects/protocol-service/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-service/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-status/README.md b/projects/protocol-status/README.md new file mode 100644 index 0000000..7b44e28 --- /dev/null +++ b/projects/protocol-status/README.md @@ -0,0 +1,24 @@ +# ProtocolStatus + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-status` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-status`. +> Note: Don't forget to add `--project protocol-status` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-status` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-status`, go to the dist folder `cd dist/protocol-status` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-status` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-status/karma.conf.js b/projects/protocol-status/karma.conf.js new file mode 100644 index 0000000..411b22b --- /dev/null +++ b/projects/protocol-status/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-status'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-status/ng-package.json b/projects/protocol-status/ng-package.json new file mode 100644 index 0000000..e562ff0 --- /dev/null +++ b/projects/protocol-status/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-status", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-status": "@ucap/protocol-status", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-status/package.json b/projects/protocol-status/package.json new file mode 100644 index 0000000..287322a --- /dev/null +++ b/projects/protocol-status/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-status", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-status": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-status/src/lib/config/token.ts b/projects/protocol-status/src/lib/config/token.ts new file mode 100644 index 0000000..52e2274 --- /dev/null +++ b/projects/protocol-status/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-status config of module' +); diff --git a/projects/protocol-status/src/lib/services/status-protocol.service.spec.ts b/projects/protocol-status/src/lib/services/status-protocol.service.spec.ts new file mode 100644 index 0000000..0a8883e --- /dev/null +++ b/projects/protocol-status/src/lib/services/status-protocol.service.spec.ts @@ -0,0 +1,14 @@ +import { TestBed } from '@angular/core/testing'; + +import { StatusProtocolService } from './status-protocol.service'; + +describe('StatusProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: StatusProtocolService = TestBed.inject( + StatusProtocolService + ); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-status/src/lib/services/status-protocol.service.ts b/projects/protocol-status/src/lib/services/status-protocol.service.ts new file mode 100644 index 0000000..88aaf0c --- /dev/null +++ b/projects/protocol-status/src/lib/services/status-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { StatusProtocolService as UcapStatusProtocolService } from '@ucap/protocol-status'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class StatusProtocolService extends UcapStatusProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-status/src/lib/status-protocol.module.ts b/projects/protocol-status/src/lib/status-protocol.module.ts new file mode 100644 index 0000000..4d5aa30 --- /dev/null +++ b/projects/protocol-status/src/lib/status-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-status'; + +import { _MODULE_CONFIG } from './config/token'; + +import { StatusProtocolService } from './services/status-protocol.service'; + +const SERVICES = [StatusProtocolService]; + +@NgModule({}) +export class StatusProtocolRootModule {} + +@NgModule({}) +export class StatusProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: StatusProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-status/src/public-api.ts b/projects/protocol-status/src/public-api.ts new file mode 100644 index 0000000..c53cc5e --- /dev/null +++ b/projects/protocol-status/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-status + */ + +export * from './lib/services/status-protocol.service'; + +export * from './lib/status-protocol.module'; diff --git a/projects/protocol-status/src/test.ts b/projects/protocol-status/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-status/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-status/tsconfig.lib.json b/projects/protocol-status/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-status/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-status/tsconfig.lib.prod.json b/projects/protocol-status/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-status/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-status/tsconfig.spec.json b/projects/protocol-status/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-status/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-status/tslint.json b/projects/protocol-status/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-status/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-sync/README.md b/projects/protocol-sync/README.md new file mode 100644 index 0000000..49f4703 --- /dev/null +++ b/projects/protocol-sync/README.md @@ -0,0 +1,24 @@ +# ProtocolSync + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-sync` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-sync`. +> Note: Don't forget to add `--project protocol-sync` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-sync` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-sync`, go to the dist folder `cd dist/protocol-sync` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-sync` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-sync/karma.conf.js b/projects/protocol-sync/karma.conf.js new file mode 100644 index 0000000..0d347f1 --- /dev/null +++ b/projects/protocol-sync/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-sync'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-sync/ng-package.json b/projects/protocol-sync/ng-package.json new file mode 100644 index 0000000..3342f75 --- /dev/null +++ b/projects/protocol-sync/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-sync", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-sync": "@ucap/protocol-sync", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-sync/package.json b/projects/protocol-sync/package.json new file mode 100644 index 0000000..1120855 --- /dev/null +++ b/projects/protocol-sync/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-sync", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-status": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-sync/src/lib/config/token.ts b/projects/protocol-sync/src/lib/config/token.ts new file mode 100644 index 0000000..1521bd9 --- /dev/null +++ b/projects/protocol-sync/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-sync config of module' +); diff --git a/projects/protocol-sync/src/lib/services/sync-protocol.service.spec.ts b/projects/protocol-sync/src/lib/services/sync-protocol.service.spec.ts new file mode 100644 index 0000000..559a90c --- /dev/null +++ b/projects/protocol-sync/src/lib/services/sync-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { SyncProtocolService } from './sync-protocol.service'; + +describe('SyncProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: SyncProtocolService = TestBed.inject(SyncProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-sync/src/lib/services/sync-protocol.service.ts b/projects/protocol-sync/src/lib/services/sync-protocol.service.ts new file mode 100644 index 0000000..074d00e --- /dev/null +++ b/projects/protocol-sync/src/lib/services/sync-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { SyncProtocolService as UcapSyncProtocolService } from '@ucap/protocol-sync'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class SyncProtocolService extends UcapSyncProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-sync/src/lib/sync-protocol.module.ts b/projects/protocol-sync/src/lib/sync-protocol.module.ts new file mode 100644 index 0000000..969a5ec --- /dev/null +++ b/projects/protocol-sync/src/lib/sync-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-sync'; + +import { _MODULE_CONFIG } from './config/token'; + +import { SyncProtocolService } from './services/sync-protocol.service'; + +const SERVICES = [SyncProtocolService]; + +@NgModule({}) +export class SyncProtocolRootModule {} + +@NgModule({}) +export class SyncProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: SyncProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-sync/src/public-api.ts b/projects/protocol-sync/src/public-api.ts new file mode 100644 index 0000000..c26cf32 --- /dev/null +++ b/projects/protocol-sync/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-sync + */ + +export * from './lib/services/sync-protocol.service'; + +export * from './lib/sync-protocol.module'; diff --git a/projects/protocol-sync/src/test.ts b/projects/protocol-sync/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-sync/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-sync/tsconfig.lib.json b/projects/protocol-sync/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-sync/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-sync/tsconfig.lib.prod.json b/projects/protocol-sync/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-sync/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-sync/tsconfig.spec.json b/projects/protocol-sync/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-sync/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-sync/tslint.json b/projects/protocol-sync/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-sync/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol-umg/README.md b/projects/protocol-umg/README.md new file mode 100644 index 0000000..4c0055e --- /dev/null +++ b/projects/protocol-umg/README.md @@ -0,0 +1,24 @@ +# ProtocolUmg + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol-umg` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol-umg`. +> Note: Don't forget to add `--project protocol-umg` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol-umg` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol-umg`, go to the dist folder `cd dist/protocol-umg` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol-umg` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol-umg/karma.conf.js b/projects/protocol-umg/karma.conf.js new file mode 100644 index 0000000..b432927 --- /dev/null +++ b/projects/protocol-umg/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol-umg'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol-umg/ng-package.json b/projects/protocol-umg/ng-package.json new file mode 100644 index 0000000..0b76dc4 --- /dev/null +++ b/projects/protocol-umg/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol-umg", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol-umg": "@ucap/protocol-umg", + "@ucap/ng-protocol": "@ucap/ng-protocol" + } + } +} diff --git a/projects/protocol-umg/package.json b/projects/protocol-umg/package.json new file mode 100644 index 0000000..435bebb --- /dev/null +++ b/projects/protocol-umg/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-protocol-umg", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol-status": "~0.0.1", + "@ucap/ng-protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol-umg/src/lib/config/token.ts b/projects/protocol-umg/src/lib/config/token.ts new file mode 100644 index 0000000..69c3966 --- /dev/null +++ b/projects/protocol-umg/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol-common config of module' +); diff --git a/projects/protocol-umg/src/lib/services/umg-protocol.service.spec.ts b/projects/protocol-umg/src/lib/services/umg-protocol.service.spec.ts new file mode 100644 index 0000000..42e1420 --- /dev/null +++ b/projects/protocol-umg/src/lib/services/umg-protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { UmgProtocolService } from './umg-protocol.service'; + +describe('UmgProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: UmgProtocolService = TestBed.inject(UmgProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol-umg/src/lib/services/umg-protocol.service.ts b/projects/protocol-umg/src/lib/services/umg-protocol.service.ts new file mode 100644 index 0000000..1061d8c --- /dev/null +++ b/projects/protocol-umg/src/lib/services/umg-protocol.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +import { UmgProtocolService as UcapUmgProtocolService } from '@ucap/protocol-umg'; + +import { ProtocolService } from '@ucap/ng-protocol'; + +@Injectable({ + providedIn: 'root' +}) +export class UmgProtocolService extends UcapUmgProtocolService { + constructor(protocolService: ProtocolService) { + super(protocolService); + } +} diff --git a/projects/protocol-umg/src/lib/umg-protocol.module.ts b/projects/protocol-umg/src/lib/umg-protocol.module.ts new file mode 100644 index 0000000..b779146 --- /dev/null +++ b/projects/protocol-umg/src/lib/umg-protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol-umg'; + +import { _MODULE_CONFIG } from './config/token'; + +import { UmgProtocolService } from './services/umg-protocol.service'; + +const SERVICES = [UmgProtocolService]; + +@NgModule({}) +export class UmgProtocolRootModule {} + +@NgModule({}) +export class UmgProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: UmgProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol-umg/src/public-api.ts b/projects/protocol-umg/src/public-api.ts new file mode 100644 index 0000000..83e5498 --- /dev/null +++ b/projects/protocol-umg/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol-umg + */ + +export * from './lib/services/umg-protocol.service'; + +export * from './lib/umg-protocol.module'; diff --git a/projects/protocol-umg/src/test.ts b/projects/protocol-umg/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol-umg/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol-umg/tsconfig.lib.json b/projects/protocol-umg/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol-umg/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol-umg/tsconfig.lib.prod.json b/projects/protocol-umg/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol-umg/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol-umg/tsconfig.spec.json b/projects/protocol-umg/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol-umg/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol-umg/tslint.json b/projects/protocol-umg/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol-umg/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/protocol/README.md b/projects/protocol/README.md new file mode 100644 index 0000000..0043635 --- /dev/null +++ b/projects/protocol/README.md @@ -0,0 +1,24 @@ +# Protocol + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project protocol` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project protocol`. +> Note: Don't forget to add `--project protocol` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build protocol` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build protocol`, go to the dist folder `cd dist/protocol` and run `npm publish`. + +## Running unit tests + +Run `ng test protocol` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/protocol/karma.conf.js b/projects/protocol/karma.conf.js new file mode 100644 index 0000000..c4d24ba --- /dev/null +++ b/projects/protocol/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/protocol'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/protocol/ng-package.json b/projects/protocol/ng-package.json new file mode 100644 index 0000000..a7aad27 --- /dev/null +++ b/projects/protocol/ng-package.json @@ -0,0 +1,10 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/protocol", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/protocol": "@ucap/protocol" + } + } +} diff --git a/projects/protocol/package.json b/projects/protocol/package.json new file mode 100644 index 0000000..13223f8 --- /dev/null +++ b/projects/protocol/package.json @@ -0,0 +1,14 @@ +{ + "name": "@ucap/ng-protocol", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/protocol": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/protocol/src/lib/config/token.ts b/projects/protocol/src/lib/config/token.ts new file mode 100644 index 0000000..88e32f0 --- /dev/null +++ b/projects/protocol/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-protocol config of module' +); diff --git a/projects/protocol/src/lib/protocol.module.ts b/projects/protocol/src/lib/protocol.module.ts new file mode 100644 index 0000000..5c55d01 --- /dev/null +++ b/projects/protocol/src/lib/protocol.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/protocol'; + +import { _MODULE_CONFIG } from './config/token'; + +import { ProtocolService } from './services/protocol.service'; + +const SERVICES = [ProtocolService]; + +@NgModule({}) +export class ProtocolRootModule {} + +@NgModule({}) +export class ProtocolModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: ProtocolRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/protocol/src/lib/services/protocol.service.spec.ts b/projects/protocol/src/lib/services/protocol.service.spec.ts new file mode 100644 index 0000000..12129d3 --- /dev/null +++ b/projects/protocol/src/lib/services/protocol.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { ProtocolService } from './protocol.service'; + +describe('ProtocolService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: ProtocolService = TestBed.inject(ProtocolService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/protocol/src/lib/services/protocol.service.ts b/projects/protocol/src/lib/services/protocol.service.ts new file mode 100644 index 0000000..3ec642e --- /dev/null +++ b/projects/protocol/src/lib/services/protocol.service.ts @@ -0,0 +1,17 @@ +import { Injectable, Inject } from '@angular/core'; + +import { + ModuleConfig, + ProtocolService as UcapProtocolService +} from '@ucap/protocol'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class ProtocolService extends UcapProtocolService { + constructor(@Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig) { + super(moduleConfig); + } +} diff --git a/projects/protocol/src/public-api.ts b/projects/protocol/src/public-api.ts new file mode 100644 index 0000000..d8e4597 --- /dev/null +++ b/projects/protocol/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of protocol + */ + +export * from './lib/services/protocol.service'; + +export * from './lib/protocol.module'; diff --git a/projects/protocol/src/test.ts b/projects/protocol/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/protocol/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/protocol/tsconfig.lib.json b/projects/protocol/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/protocol/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/protocol/tsconfig.lib.prod.json b/projects/protocol/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/protocol/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/protocol/tsconfig.spec.json b/projects/protocol/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/protocol/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/protocol/tslint.json b/projects/protocol/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/protocol/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/store-authentication/README.md b/projects/store-authentication/README.md new file mode 100644 index 0000000..0c4ed8f --- /dev/null +++ b/projects/store-authentication/README.md @@ -0,0 +1,24 @@ +# StoreAuthentication + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project store-authentication` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project store-authentication`. +> Note: Don't forget to add `--project store-authentication` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build store-authentication` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build store-authentication`, go to the dist folder `cd dist/store-authentication` and run `npm publish`. + +## Running unit tests + +Run `ng test store-authentication` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/store-authentication/karma.conf.js b/projects/store-authentication/karma.conf.js new file mode 100644 index 0000000..53c66a9 --- /dev/null +++ b/projects/store-authentication/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/store-authentication'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/store-authentication/ng-package.json b/projects/store-authentication/ng-package.json new file mode 100644 index 0000000..8d45489 --- /dev/null +++ b/projects/store-authentication/ng-package.json @@ -0,0 +1,17 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/store-authentication", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ngrx/store": "@ngrx/store", + "@ngrx/effects": "@ngrx/effects", + "@ucap/pi": "@ucap/pi", + "@ucap/protocol-authentication": "@ucap/protocol-authentication", + "@ucap/protocol-query": "@ucap/protocol-query", + "@ucap/ng-pi": "@ucap/ng-pi", + "@ucap/ng-protocol-authentication": "@ucap/ng-protocol-authentication", + "@ucap/ng-protocol-query": "@ucap/ng-protocol-query" + } + } +} diff --git a/projects/store-authentication/package.json b/projects/store-authentication/package.json new file mode 100644 index 0000000..fa2bf00 --- /dev/null +++ b/projects/store-authentication/package.json @@ -0,0 +1,23 @@ +{ + "name": "@ucap/ng-store-authentication", + "version": "0.0.2", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ngrx/effects": "^9.0.0", + "@ngrx/entity": "^9.0.0", + "@ngrx/store": "^9.0.0", + "@ucap/core": "~0.0.1", + "@ucap/pi": "~0.0.1", + "@ucap/protocol-authentication": "~0.0.1", + "@ucap/protocol-query": "~0.0.1", + "@ucap/ng-pi": "~0.0.1", + "@ucap/ng-protocol-authentication": "~0.0.1", + "@ucap/ng-protocol-query": "~0.0.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0" + } +} diff --git a/projects/store-authentication/src/lib/authentication-store.module.ts b/projects/store-authentication/src/lib/authentication-store.module.ts new file mode 100644 index 0000000..09d6725 --- /dev/null +++ b/projects/store-authentication/src/lib/authentication-store.module.ts @@ -0,0 +1,31 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { StoreModule } from '@ngrx/store'; +import { EffectsModule } from '@ngrx/effects'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { KEY_FEATURE } from './store/state'; +import { effects } from './store/effects'; +import { reducers } from './store/reducers'; + +@NgModule({ + imports: [ + StoreModule.forFeature(KEY_FEATURE, reducers), + EffectsModule.forFeature([...effects]) + ] +}) +export class AuthenticationStoreRootModule {} + +@NgModule({}) +export class AuthenticationStoreModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: AuthenticationStoreRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }] + }; + } +} diff --git a/projects/store-authentication/src/lib/config/module-config.ts b/projects/store-authentication/src/lib/config/module-config.ts new file mode 100644 index 0000000..d158cc6 --- /dev/null +++ b/projects/store-authentication/src/lib/config/module-config.ts @@ -0,0 +1,4 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +// tslint:disable-next-line: no-empty-interface +export interface ModuleConfig extends CoreModuleConfig {} diff --git a/projects/store-authentication/src/lib/config/token.ts b/projects/store-authentication/src/lib/config/token.ts new file mode 100644 index 0000000..ecdc67f --- /dev/null +++ b/projects/store-authentication/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-store-authentication config of module' +); diff --git a/projects/store-authentication/src/lib/store/authorization/actions.ts b/projects/store-authentication/src/lib/store/authorization/actions.ts new file mode 100644 index 0000000..4e773f8 --- /dev/null +++ b/projects/store-authentication/src/lib/store/authorization/actions.ts @@ -0,0 +1,25 @@ +import { createAction, props } from '@ngrx/store'; + +import { AuthRequest, AuthResponse } from '@ucap/protocol-query'; + +/** + * retrieve authorization information + */ +export const auth = createAction( + '[ucap::authentication::authorization] auth', + props<{ req: AuthRequest }>() +); +/** + * Success of auth request + */ +export const authSuccess = createAction( + '[ucap::authentication::authorization] auth Success', + props<{ res: AuthResponse }>() +); +/** + * Failure of auth request + */ +export const authFailure = createAction( + '[ucap::authentication::authorization] auth Failure', + props<{ error: any }>() +); diff --git a/projects/store-authentication/src/lib/store/authorization/effects.ts b/projects/store-authentication/src/lib/store/authorization/effects.ts new file mode 100644 index 0000000..44d488a --- /dev/null +++ b/projects/store-authentication/src/lib/store/authorization/effects.ts @@ -0,0 +1,37 @@ +import { of } from 'rxjs'; +import { map, catchError, exhaustMap } from 'rxjs/operators'; + +import { Injectable } from '@angular/core'; + +import { Actions, createEffect, ofType } from '@ngrx/effects'; + +import { AuthResponse } from '@ucap/protocol-query'; + +import { QueryProtocolService } from '@ucap/ng-protocol-query'; + +import { auth, authSuccess, authFailure } from './actions'; + +@Injectable() +export class Effects { + auth$ = createEffect(() => + this.actions$.pipe( + ofType(auth), + map(action => action.req), + exhaustMap(req => { + return this.queryProtocolService.auth(req).pipe( + map((res: AuthResponse) => { + return authSuccess({ + res + }); + }), + catchError(error => of(authFailure({ error }))) + ); + }) + ) + ); + + constructor( + private actions$: Actions, + private queryProtocolService: QueryProtocolService + ) {} +} diff --git a/projects/store-authentication/src/lib/store/authorization/reducers.ts b/projects/store-authentication/src/lib/store/authorization/reducers.ts new file mode 100644 index 0000000..0efbe73 --- /dev/null +++ b/projects/store-authentication/src/lib/store/authorization/reducers.ts @@ -0,0 +1,14 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState } from './state'; +import { authSuccess } from './actions'; + +export const reducer = createReducer( + initialState, + on(authSuccess, (state, action) => { + return { + ...state, + auth: action.res + }; + }) +); diff --git a/projects/store-authentication/src/lib/store/authorization/state.ts b/projects/store-authentication/src/lib/store/authorization/state.ts new file mode 100644 index 0000000..91c7e92 --- /dev/null +++ b/projects/store-authentication/src/lib/store/authorization/state.ts @@ -0,0 +1,17 @@ +import { Selector, createSelector } from '@ngrx/store'; + +import { AuthResponse } from '@ucap/protocol-query'; + +export interface State { + auth?: AuthResponse; +} + +export const initialState: State = { + auth: null +}; + +export function selectors(selector: Selector) { + return { + auth: createSelector(selector, (state: State) => state.auth) + }; +} diff --git a/projects/store-authentication/src/lib/store/common/actions.ts b/projects/store-authentication/src/lib/store/common/actions.ts new file mode 100644 index 0000000..8ccf6e8 --- /dev/null +++ b/projects/store-authentication/src/lib/store/common/actions.ts @@ -0,0 +1,3 @@ +import { createAction } from '@ngrx/store'; + +export const init = createAction('[ucap::authentication::common] init'); diff --git a/projects/store-authentication/src/lib/store/common/effects.ts b/projects/store-authentication/src/lib/store/common/effects.ts new file mode 100644 index 0000000..4306694 --- /dev/null +++ b/projects/store-authentication/src/lib/store/common/effects.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +import { Actions } from '@ngrx/effects'; + +@Injectable() +export class Effects { + constructor(private actions$: Actions) {} +} diff --git a/projects/store-authentication/src/lib/store/common/reducers.ts b/projects/store-authentication/src/lib/store/common/reducers.ts new file mode 100644 index 0000000..c02394c --- /dev/null +++ b/projects/store-authentication/src/lib/store/common/reducers.ts @@ -0,0 +1,5 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState } from './state'; + +export const reducer = createReducer(initialState); diff --git a/projects/store-authentication/src/lib/store/common/state.ts b/projects/store-authentication/src/lib/store/common/state.ts new file mode 100644 index 0000000..aacfe4f --- /dev/null +++ b/projects/store-authentication/src/lib/store/common/state.ts @@ -0,0 +1,10 @@ +import { Selector } from '@ngrx/store'; + +// tslint:disable-next-line: no-empty-interface +export interface State {} + +export const initialState: State = {}; + +export function selectors(selector: Selector) { + return {}; +} diff --git a/projects/store-authentication/src/lib/store/effects.ts b/projects/store-authentication/src/lib/store/effects.ts new file mode 100644 index 0000000..148dc4d --- /dev/null +++ b/projects/store-authentication/src/lib/store/effects.ts @@ -0,0 +1,11 @@ +import { Type } from '@angular/core'; + +import { Effects as CommonEffects } from './common/effects'; +import { Effects as LoginEffects } from './login/effects'; +import { Effects as AuthorizationEffects } from './authorization/effects'; + +export const effects: Type[] = [ + CommonEffects, + LoginEffects, + AuthorizationEffects +]; diff --git a/projects/store-authentication/src/lib/store/login/actions.ts b/projects/store-authentication/src/lib/store/login/actions.ts new file mode 100644 index 0000000..2ceebab --- /dev/null +++ b/projects/store-authentication/src/lib/store/login/actions.ts @@ -0,0 +1,84 @@ +import { createAction, props } from '@ngrx/store'; + +import { Login2Response } from '@ucap/pi'; +import { LoginResponse, LogoutResponse } from '@ucap/protocol-authentication'; + +/** + * request of web login + */ +export const webLogin = createAction( + '[ucap::authentication::login] webLogin', + props<{ + loginId: string; + loginPw: string; + companyCode: string; + rememberMe: boolean; + autoLogin: boolean; + }>() +); +/** + * Success of webLogin request + */ +export const webLoginSuccess = createAction( + '[ucap::authentication::login] webLogin Success', + props<{ + loginId: string; + loginPw: string; + companyCode: string; + rememberMe: boolean; + autoLogin: boolean; + login2Response: Login2Response; + }>() +); +/** + * Failure of webLogin request + */ +export const webLoginFailure = createAction( + '[ucap::authentication::login] webLogin Failure', + props<{ error: any }>() +); + +/** + * request of login + */ +export const login = createAction( + '[ucap::authentication::login] login', + props<{ + loginRes: LoginResponse; + }>() +); +/** + * Success of login request + */ +export const loginSuccess = createAction( + '[ucap::authentication::login] login Success', + props<{ + loginRes: LoginResponse; + }>() +); +/** + * Failure of login request + */ +export const loginFailure = createAction( + '[ucap::authentication::login] login Failure', + props<{ error: any }>() +); + +/** + * request of logout + */ +export const logout = createAction('[authentication::login] logout'); +/** + * Success of logout request + */ +export const logoutSuccess = createAction( + '[ucap::authentication::login] logout Success', + props<{ res: LogoutResponse }>() +); +/** + * Failure of logout request + */ +export const logoutFailure = createAction( + '[ucap::authentication::login] logout Failure', + props<{ error: any }>() +); diff --git a/projects/store-authentication/src/lib/store/login/effects.ts b/projects/store-authentication/src/lib/store/login/effects.ts new file mode 100644 index 0000000..3bc248b --- /dev/null +++ b/projects/store-authentication/src/lib/store/login/effects.ts @@ -0,0 +1,79 @@ +import { of } from 'rxjs'; +import { catchError, exhaustMap, map, switchMap } from 'rxjs/operators'; + +import { Injectable } from '@angular/core'; + +import { Actions, ofType, createEffect } from '@ngrx/effects'; + +import { Login2Response } from '@ucap/pi'; + +import { PiService } from '@ucap/ng-pi'; +import { AuthenticationProtocolService } from '@ucap/ng-protocol-authentication'; + +import { + logout, + webLogin, + webLoginSuccess, + webLoginFailure, + logoutSuccess +} from './actions'; + +@Injectable() +export class Effects { + webLogin$ = createEffect(() => + this.actions$.pipe( + ofType(webLogin), + map(action => action), + exhaustMap( + (params: { + loginId: string; + loginPw: string; + companyCode: string; + rememberMe: boolean; + autoLogin: boolean; + }) => + this.piService + .login2({ + loginId: params.loginId, + loginPw: params.loginPw, + companyCode: params.companyCode + }) + .pipe( + map((res: Login2Response) => { + if ('success' !== res.status.toLowerCase()) { + return webLoginFailure({ error: 'Failed' }); + } else { + return webLoginSuccess({ + loginId: params.loginId, + loginPw: params.loginPw, + companyCode: params.companyCode, + rememberMe: params.rememberMe, + autoLogin: params.autoLogin, + login2Response: res + }); + } + }), + catchError(error => of(webLoginFailure({ error }))) + ) + ) + ) + ); + + logout$ = createEffect(() => { + return this.actions$.pipe( + ofType(logout), + switchMap(action => { + return this.authenticationProtocolService.logout({}).pipe( + map(res => logoutSuccess({ res })), + catchError(error => of(error)) + ); + }) + ); + }); + + constructor( + private actions$: Actions, + private piService: PiService, + private authenticationProtocolService: AuthenticationProtocolService + ) {} +} diff --git a/projects/store-authentication/src/lib/store/login/reducers.ts b/projects/store-authentication/src/lib/store/login/reducers.ts new file mode 100644 index 0000000..7aaa2cd --- /dev/null +++ b/projects/store-authentication/src/lib/store/login/reducers.ts @@ -0,0 +1,20 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState } from './state'; +import { loginSuccess, logoutSuccess } from './actions'; + +export const reducer = createReducer( + initialState, + on(loginSuccess, (state, action) => { + return { + ...state, + loginRes: action.loginRes + }; + }), + + on(logoutSuccess, (state, action) => { + return { + ...initialState + }; + }) +); diff --git a/projects/store-authentication/src/lib/store/login/state.ts b/projects/store-authentication/src/lib/store/login/state.ts new file mode 100644 index 0000000..d50a8a3 --- /dev/null +++ b/projects/store-authentication/src/lib/store/login/state.ts @@ -0,0 +1,17 @@ +import { Selector, createSelector } from '@ngrx/store'; + +import { LoginResponse } from '@ucap/protocol-authentication'; + +export interface State { + loginRes: LoginResponse | null; +} + +export const initialState: State = { + loginRes: null +}; + +export function selectors(selector: Selector) { + return { + loginRes: createSelector(selector, (state: State) => state.loginRes) + }; +} diff --git a/projects/store-authentication/src/lib/store/reducers.ts b/projects/store-authentication/src/lib/store/reducers.ts new file mode 100644 index 0000000..5bbe353 --- /dev/null +++ b/projects/store-authentication/src/lib/store/reducers.ts @@ -0,0 +1,13 @@ +import { combineReducers, Action } from '@ngrx/store'; + +import { reducer as CommonReducer } from './common/reducers'; +import { reducer as LoginReducer } from './login/reducers'; +import { reducer as AuthorizationReducer } from './authorization/reducers'; + +export function reducers(state: any | undefined, action: Action) { + return combineReducers({ + common: CommonReducer, + login: LoginReducer, + authorization: AuthorizationReducer + })(state, action); +} diff --git a/projects/store-authentication/src/lib/store/state.ts b/projects/store-authentication/src/lib/store/state.ts new file mode 100644 index 0000000..f482df1 --- /dev/null +++ b/projects/store-authentication/src/lib/store/state.ts @@ -0,0 +1,27 @@ +import { createFeatureSelector, createSelector } from '@ngrx/store'; + +import * as CommonState from './common/state'; +import * as LoginState from './login/state'; +import * as AuthorizationState from './authorization/state'; + +export const KEY_FEATURE = 'authentication'; + +export interface State { + common: CommonState.State; + login: LoginState.State; + authorization: AuthorizationState.State; +} + +export const Selector = createFeatureSelector(KEY_FEATURE); + +export const CommonSelector = CommonState.selectors( + createSelector(Selector, (state: State) => state.common) +); + +export const LoginSelector = LoginState.selectors( + createSelector(Selector, (state: State) => state.login) +); + +export const AuthorizationSelector = AuthorizationState.selectors( + createSelector(Selector, (state: State) => state.authorization) +); diff --git a/projects/store-authentication/src/public-api.ts b/projects/store-authentication/src/public-api.ts new file mode 100644 index 0000000..900f84f --- /dev/null +++ b/projects/store-authentication/src/public-api.ts @@ -0,0 +1,15 @@ +/* + * Public API Surface of store-authentication + */ + +import * as CommonActions from './lib/store/common/actions'; +import * as LoginActions from './lib/store/login/actions'; +import * as AuthorizationActions from './lib/store/authorization/actions'; + +export * from './lib/config/module-config'; + +export { CommonActions, LoginActions, AuthorizationActions }; + +export * from './lib/store/state'; + +export * from './lib/authentication-store.module'; diff --git a/projects/store-authentication/src/test.ts b/projects/store-authentication/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/store-authentication/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/store-authentication/tsconfig.lib.json b/projects/store-authentication/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/store-authentication/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/store-authentication/tsconfig.lib.prod.json b/projects/store-authentication/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/store-authentication/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/store-authentication/tsconfig.spec.json b/projects/store-authentication/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/store-authentication/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/store-authentication/tslint.json b/projects/store-authentication/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/store-authentication/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/store-chat/README.md b/projects/store-chat/README.md new file mode 100644 index 0000000..c6d4c3d --- /dev/null +++ b/projects/store-chat/README.md @@ -0,0 +1,24 @@ +# StoreChat + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project store-chat` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project store-chat`. +> Note: Don't forget to add `--project store-chat` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build store-chat` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build store-chat`, go to the dist folder `cd dist/store-chat` and run `npm publish`. + +## Running unit tests + +Run `ng test store-chat` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/store-chat/karma.conf.js b/projects/store-chat/karma.conf.js new file mode 100644 index 0000000..3c96461 --- /dev/null +++ b/projects/store-chat/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/store-chat'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/store-chat/ng-package.json b/projects/store-chat/ng-package.json new file mode 100644 index 0000000..4b5b5a0 --- /dev/null +++ b/projects/store-chat/ng-package.json @@ -0,0 +1,20 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/store-chat", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "moment": "moment", + "@ngrx/store": "@ngrx/store", + "@ngrx/entity": "@ngrx/entity", + "@ngrx/effects": "@ngrx/effects", + "@ucap/pi": "@ucap/pi", + "@ucap/protocol-event": "@ucap/protocol-event", + "@ucap/protocol-file": "@ucap/protocol-file", + "@ucap/protocol-room": "@ucap/protocol-room", + "@ucap/protocol-sync": "@ucap/protocol-sync", + "@ucap/ng-protocol-room": "@ucap/ng-protocol-room", + "@ucap/ng-protocol-sync": "@ucap/ng-protocol-sync" + } + } +} diff --git a/projects/store-chat/package.json b/projects/store-chat/package.json new file mode 100644 index 0000000..13cf64c --- /dev/null +++ b/projects/store-chat/package.json @@ -0,0 +1,19 @@ +{ + "name": "@ucap/ng-store-chat", + "version": "0.0.3", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/core": "~0.0.1", + "@ucap/protocol-event": "~0.0.1", + "@ucap/protocol-file": "~0.0.1", + "@ucap/protocol-room": "~0.0.1", + "@ucap/protocol-sync": "~0.0.1", + "@ucap/ng-protocol-room": "~0.0.1", + "@ucap/ng-protocol-sync": "~0.0.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/store-chat/src/lib/chat-store.module.ts b/projects/store-chat/src/lib/chat-store.module.ts new file mode 100644 index 0000000..81fc0bf --- /dev/null +++ b/projects/store-chat/src/lib/chat-store.module.ts @@ -0,0 +1,31 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { StoreModule } from '@ngrx/store'; +import { EffectsModule } from '@ngrx/effects'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { KEY_FEATURE } from './store/state'; +import { effects } from './store/effects'; +import { reducers } from './store/reducers'; + +@NgModule({ + imports: [ + StoreModule.forFeature(KEY_FEATURE, reducers), + EffectsModule.forFeature([...effects]) + ] +}) +export class ChatStoreRootModule {} + +@NgModule({}) +export class ChatStoreModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: ChatStoreRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }] + }; + } +} diff --git a/projects/store-chat/src/lib/config/module-config.ts b/projects/store-chat/src/lib/config/module-config.ts new file mode 100644 index 0000000..d158cc6 --- /dev/null +++ b/projects/store-chat/src/lib/config/module-config.ts @@ -0,0 +1,4 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +// tslint:disable-next-line: no-empty-interface +export interface ModuleConfig extends CoreModuleConfig {} diff --git a/projects/store-chat/src/lib/config/token.ts b/projects/store-chat/src/lib/config/token.ts new file mode 100644 index 0000000..ecdc67f --- /dev/null +++ b/projects/store-chat/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-store-authentication config of module' +); diff --git a/projects/store-chat/src/lib/store/chatting/actions.ts b/projects/store-chat/src/lib/store/chatting/actions.ts new file mode 100644 index 0000000..856cdad --- /dev/null +++ b/projects/store-chat/src/lib/store/chatting/actions.ts @@ -0,0 +1,86 @@ +import { createAction, props } from '@ngrx/store'; + +import { + Info, + InfoRequest as EventInfoRequest, + InfoResponse as EventInfoResponse, + SendRequest as SendEventRequest, + SendResponse as SendEventResponse, + ReadRequest, + DelRequest, + DelResponse, + CancelRequest, + CancelResponse, + SendNotification, + ReadNotification, + CancelNotification, + DelNotification, + EventJson +} from '@ucap/protocol-event'; + +import { + InfoRequest as FileInfoRequest, + InfoResponse as FileInfoResponse, + FileDownloadInfo, + FileInfo +} from '@ucap/protocol-file'; + +/** + * retrieve list of event + */ +export const events = createAction( + '[ucap::chat::chatting] events', + props<{ req: EventInfoRequest }>() +); +/** + * Success of events request + */ +export const eventsSuccess = createAction( + '[ucap::chat::chatting] events Success', + props<{ + eventInfoList: Info[]; + res: EventInfoResponse; + remainInfo: boolean; + }>() +); +/** + * Failure of events request + */ +export const eventsFailure = createAction( + '[ucap::chat::chatting] events Failure', + props<{ error: any }>() +); + +/** + * retrieve list of file information + */ +export const fileInfos = createAction( + '[ucap::chat::chatting] fileInfos', + props<{ req: FileInfoRequest }>() +); +/** + * Success of fileInfos request + */ +export const fileInfosSuccess = createAction( + '[ucap::chat::chatting] fileInfos Success', + props<{ + fileInfoList: FileInfo[]; + fileInfoCheckList: FileDownloadInfo[]; + res: FileInfoResponse; + }>() +); +/** + * Failure of fileInfos request + */ +export const fileInfosFailure = createAction( + '[ucap::chat::chatting] fileInfos Failure', + props<{ error: any }>() +); + +/** + * add new event + */ +export const addEvent = createAction( + '[ucap::chat::chatting] addEvent', + props<{ req: FileInfoRequest }>() +); diff --git a/projects/store-chat/src/lib/store/chatting/effects.ts b/projects/store-chat/src/lib/store/chatting/effects.ts new file mode 100644 index 0000000..7161314 --- /dev/null +++ b/projects/store-chat/src/lib/store/chatting/effects.ts @@ -0,0 +1,37 @@ +import { of } from 'rxjs'; +import { + tap, + switchMap, + map, + catchError, + exhaustMap, + withLatestFrom +} from 'rxjs/operators'; + +import { Injectable } from '@angular/core'; + +import { Store, select } from '@ngrx/store'; +import { Actions, createEffect, ofType } from '@ngrx/effects'; + +import { + RoomInfo, + UpdateResponse, + OpenResponse, + ExitResponse, + Open3Response, + RoomType, + InviteResponse, + UpdateTimerSetResponse, + ExitForcingResponse +} from '@ucap/protocol-room'; + +import { RoomProtocolService } from '@ucap/ng-protocol-room'; + +@Injectable() +export class Effects { + constructor( + private actions$: Actions, + private store: Store, + private roomProtocolService: RoomProtocolService + ) {} +} diff --git a/projects/store-chat/src/lib/store/chatting/reducers.ts b/projects/store-chat/src/lib/store/chatting/reducers.ts new file mode 100644 index 0000000..1364143 --- /dev/null +++ b/projects/store-chat/src/lib/store/chatting/reducers.ts @@ -0,0 +1,5 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState, adapterChatting } from './state'; + +export const reducer = createReducer(initialState); diff --git a/projects/store-chat/src/lib/store/chatting/state.ts b/projects/store-chat/src/lib/store/chatting/state.ts new file mode 100644 index 0000000..13d072d --- /dev/null +++ b/projects/store-chat/src/lib/store/chatting/state.ts @@ -0,0 +1,177 @@ +import { Selector, createSelector } from '@ngrx/store'; +import { EntityState, createEntityAdapter, Dictionary } from '@ngrx/entity'; + +import { InfoResponse, Info, EventJson } from '@ucap/protocol-event'; + +import { FileInfo, FileDownloadInfo } from '@ucap/protocol-file'; + +export interface EventListState extends EntityState> {} +export interface FileInfoListState extends EntityState {} +export interface FileInfoCheckListState extends EntityState {} + +export const adapterEventList = createEntityAdapter>({ + selectId: info => info.seq, + sortComparer: (a, b) => { + return a.seq - b.seq; + } +}); +export const adapterFileInfoList = createEntityAdapter({ + selectId: info => info.seq, + sortComparer: (a, b) => { + return b.seq - a.seq; + } +}); +export const adapterFileInfoCheckList = createEntityAdapter({ + selectId: info => info.seq, + sortComparer: (a, b) => { + return b.seq - a.seq; + } +}); + +const eventListInitialState: EventListState = adapterEventList.getInitialState( + {} +); +const fileInfoListInitialState: FileInfoListState = adapterFileInfoList.getInitialState( + {} +); +const fileInfoCheckListInitialState: FileInfoCheckListState = adapterFileInfoCheckList.getInitialState( + {} +); + +const { + selectAll: selectAllForEventList, + selectEntities: selectEntitiesForEventList, + selectIds: selectIdsForEventList, + selectTotal: selectTotalForEventList +} = adapterEventList.getSelectors(); + +const { + selectAll: selectAllForFileInfoList, + selectEntities: selectEntitiesForFileInfoList, + selectIds: selectIdsForFileInfoList, + selectTotal: selectTotalForFileInfoList +} = adapterFileInfoList.getSelectors(); + +const { + selectAll: selectAllForFileInfoCheckList, + selectEntities: selectEntitiesForFileInfoCheckList, + selectIds: selectIdsForFileInfoCheckList, + selectTotal: selectTotalForFileInfoCheckList +} = adapterFileInfoCheckList.getSelectors(); + +export interface Chatting { + roomId?: string; + + eventListProcessing?: boolean; + eventList?: EventListState; + eventStatus?: InfoResponse | null; + remainEvent?: false; + + fileInfoListProcessing?: boolean; + fileInfoList?: FileInfoListState; + fileInfoCheckList?: FileInfoCheckListState; + fileInfoSyncDate?: string; +} + +export interface ChattingState extends EntityState {} + +export const adapterChatting = createEntityAdapter({ + selectId: chatting => chatting.roomId +}); + +const { + selectAll: selectAllForChatting, + selectEntities: selectEntitiesForChatting, + selectIds: selectIdsForChatting, + selectTotal: selectTotalForChatting +} = adapterChatting.getSelectors(); + +const chattingInitialState: ChattingState = adapterChatting.getInitialState({ + roomId: undefined, + + eventListProcessing: false, + eventList: eventListInitialState, + eventStatus: undefined, + remainEvent: false, + + fileInfoListProcessing: false, + fileInfoList: fileInfoListInitialState, + fileInfoCheckList: fileInfoCheckListInitialState, + fileInfoSyncDate: undefined +}); + +export interface State { + chattings: ChattingState; +} + +export const initialState: State = { + chattings: chattingInitialState +}; + +export function selectors(selector: Selector) { + const selectChattings = createSelector( + selector, + (state: State) => state.chattings + ); + + const selectChatting = createSelector( + selector, + selectEntitiesForChatting, + (state: State, entities: Dictionary, roomId: string) => + entities && entities[roomId] + ); + + const selectChattingEventListProcessing = createSelector( + selectChatting, + state => state.eventListProcessing + ); + const selectChattingEventList = createSelector( + selectChatting, + state => state.eventList + ); + const selectChattingEventStatus = createSelector( + selectChatting, + state => state.eventStatus + ); + const selectChattingRemainEvent = createSelector( + selectChatting, + state => state.remainEvent + ); + const selectChattingFileInfoListProcessing = createSelector( + selectChatting, + state => state.fileInfoListProcessing + ); + const selectChattingFileInfoList = createSelector( + selectChatting, + state => state.fileInfoList + ); + const selectChattingFileInfoCheckList = createSelector( + selectChatting, + state => state.fileInfoCheckList + ); + const selectChattingFileInfoSyncDate = createSelector( + selectChatting, + state => state.fileInfoSyncDate + ); + + return { + chattings: createSelector(selectChattings, selectAllForChatting), + chatting: selectChatting, + + eventListProcessing: selectChattingEventListProcessing, + eventList: createSelector(selectChattingEventList, selectAllForEventList), + eventStatus: selectChattingEventStatus, + remainEvent: selectChattingRemainEvent, + + fileInfoListProcessing: selectChattingFileInfoListProcessing, + fileInfoList: createSelector( + selectChattingFileInfoList, + selectAllForFileInfoList + ), + fileInfoCheckList: createSelector( + selectChattingFileInfoCheckList, + selectAllForFileInfoCheckList + ), + fileInfoSyncDate: selectChattingFileInfoSyncDate + }; +} diff --git a/projects/store-chat/src/lib/store/common/actions.ts b/projects/store-chat/src/lib/store/common/actions.ts new file mode 100644 index 0000000..edc6f3d --- /dev/null +++ b/projects/store-chat/src/lib/store/common/actions.ts @@ -0,0 +1,3 @@ +import { createAction } from '@ngrx/store'; + +export const init = createAction('[ucap::chat::common] init'); diff --git a/projects/store-chat/src/lib/store/common/effects.ts b/projects/store-chat/src/lib/store/common/effects.ts new file mode 100644 index 0000000..4306694 --- /dev/null +++ b/projects/store-chat/src/lib/store/common/effects.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +import { Actions } from '@ngrx/effects'; + +@Injectable() +export class Effects { + constructor(private actions$: Actions) {} +} diff --git a/projects/store-chat/src/lib/store/common/reducers.ts b/projects/store-chat/src/lib/store/common/reducers.ts new file mode 100644 index 0000000..c02394c --- /dev/null +++ b/projects/store-chat/src/lib/store/common/reducers.ts @@ -0,0 +1,5 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState } from './state'; + +export const reducer = createReducer(initialState); diff --git a/projects/store-chat/src/lib/store/common/state.ts b/projects/store-chat/src/lib/store/common/state.ts new file mode 100644 index 0000000..aacfe4f --- /dev/null +++ b/projects/store-chat/src/lib/store/common/state.ts @@ -0,0 +1,10 @@ +import { Selector } from '@ngrx/store'; + +// tslint:disable-next-line: no-empty-interface +export interface State {} + +export const initialState: State = {}; + +export function selectors(selector: Selector) { + return {}; +} diff --git a/projects/store-chat/src/lib/store/effects.ts b/projects/store-chat/src/lib/store/effects.ts new file mode 100644 index 0000000..88d4304 --- /dev/null +++ b/projects/store-chat/src/lib/store/effects.ts @@ -0,0 +1,11 @@ +import { Type } from '@angular/core'; + +import { Effects as CommonEffects } from './common/effects'; +import { Effects as RoomEffects } from './room/effects'; +import { Effects as ChattingEffects } from './chatting/effects'; + +export const effects: Type[] = [ + CommonEffects, + RoomEffects, + ChattingEffects +]; diff --git a/projects/store-chat/src/lib/store/reducers.ts b/projects/store-chat/src/lib/store/reducers.ts new file mode 100644 index 0000000..9c6d0dd --- /dev/null +++ b/projects/store-chat/src/lib/store/reducers.ts @@ -0,0 +1,13 @@ +import { combineReducers, Action } from '@ngrx/store'; + +import { reducer as CommonReducer } from './common/reducers'; +import { reducer as RoomReducer } from './room/reducers'; +import { reducer as ChattingReducer } from './chatting/reducers'; + +export function reducers(state: any | undefined, action: Action) { + return combineReducers({ + common: CommonReducer, + room: RoomReducer, + chatting: ChattingReducer + })(state, action); +} diff --git a/projects/store-chat/src/lib/store/room/actions.ts b/projects/store-chat/src/lib/store/room/actions.ts new file mode 100644 index 0000000..88056cf --- /dev/null +++ b/projects/store-chat/src/lib/store/room/actions.ts @@ -0,0 +1,328 @@ +import { createAction, props } from '@ngrx/store'; + +import { LocaleCode } from '@ucap/core'; + +import { RoomRequest as RoomsRequest } from '@ucap/protocol-sync'; +import { + RoomInfo, + UserInfo as RoomUserInfo, + InfoRequest as RoomRequest, + InviteNotification, + OpenRequest as CreateRequest, + OpenResponse as CreateResponse, + Open3Request as CreateTimerRequest, + Open3Response as CreateTimerResponse, + ExitRequest as DeleteRequest, + ExitResponse as DeleteResponse, + UpdateRequest, + UpdateResponse, + InviteRequest, + InviteResponse, + ExitForcingRequest, + ExitForcingResponse, + UpdateTimerSetRequest, + UpdateTimerSetResponse +} from '@ucap/protocol-room'; + +/** + * retrieve list of room information and list of user information per room + */ +export const rooms = createAction( + '[ucap::chat::room] rooms', + props<{ req: RoomsRequest }>() +); +/** + * Success of rooms request + */ +export const roomsSuccess = createAction( + '[ucap::chat::room] rooms Success', + props<{ + roomList: RoomInfo[]; + roomUserInfoMap: { + [param: string]: RoomUserInfo[]; + }; + syncDate: string; + }>() +); +/** + * Failure of rooms request + */ +export const roomsFailure = createAction( + '[ucap::chat::room] rooms Failure', + props<{ error: any }>() +); + +/** + * retrieve room information and list of user information + */ +export const room = createAction( + '[ucap::chat::room] room', + props<{ req: RoomRequest }>() +); +/** + * Success of room request + */ +export const roomSuccess = createAction( + '[ucap::chat::room] room Success', + props<{ + roomInfo: RoomInfo; + userInfoList: RoomUserInfo[]; + }>() +); +/** + * Failure of room request + */ +export const roomFailure = createAction( + '[ucap::chat::room] room Failure', + props<{ error: any }>() +); + +/** + * create room + */ +export const create = createAction( + '[ucap::chat::room] create', + props<{ req: CreateRequest }>() +); +/** + * Success of create request + */ +export const createSuccess = createAction( + '[ucap::chat::room] create Success', + props<{ res: CreateResponse }>() +); +/** + * Failure of create request + */ +export const createFailure = createAction( + '[ucap::chat::room] create Failure', + props<{ error: any }>() +); + +/** + * create timer room + */ +export const createTimer = createAction( + '[ucap::chat::room] createTimer', + props<{ req: CreateTimerRequest }>() +); +/** + * Success of openTimer request + */ +export const createTimerSuccess = createAction( + '[ucap::chat::room] createTimer Success', + props<{ res: CreateTimerResponse }>() +); +/** + * Failure of createTimer request + */ +export const createTimerFailure = createAction( + '[ucap::chat::room] createTimer Failure', + props<{ error: any }>() +); + +/** + * exit from room + */ +export const del = createAction( + '[ucap::chat::room] del', + props<{ req: DeleteRequest }>() +); +/** + * Success of del request + */ +export const delSuccess = createAction( + '[ucap::chat::room] del Success', + props<{ res: DeleteResponse }>() +); +/** + * Failure of del request + */ +export const delFailure = createAction( + '[ucap::chat::room] del Failure', + props<{ error: any }>() +); + +/** + * update room information + */ +export const update = createAction( + '[ucap::chat::room] update', + props<{ req: UpdateRequest }>() +); +/** + * Success of update request + */ +export const updateSuccess = createAction( + '[ucap::chat::room] update Success', + props<{ + res: UpdateResponse; + }>() +); +/** + * Failure of update request + */ +export const updateFailure = createAction( + '[ucap::chat::room] update Failure', + props<{ error: any }>() +); + +/** + * update isJoinRoom of user information from true to false + */ +export const excludeUser = createAction( + '[ucap::chat::room] excludeUser', + props<{ roomId: string; userSeqs: string[] }>() +); +/** + * Success of excludeUser request + */ +export const excludeUserSuccess = createAction( + '[ucap::chat::room] excludeUser Success', + props<{ roomId: string; userSeqs: string[] }>() +); +/** + * Failure of excludeUser request + */ +export const excludeUserFailure = createAction( + '[ucap::chat::room] excludeUser Failure', + props<{ error: any }>() +); + +/** + * open room + */ +export const open = createAction( + '[ucap::chat::room] open', + props<{ roomIds: string[] }>() +); +/** + * Success of open request + */ +export const openSuccess = createAction( + '[ucap::chat::room] open Success', + props<{ roomIds: string[] }>() +); +/** + * Failure of open request + */ +export const openFailure = createAction( + '[ucap::chat::room] open Failure', + props<{ error: any }>() +); + +/** + * close room + */ +export const close = createAction( + '[ucap::chat::room] close', + props<{ roomIds: string[] }>() +); +/** + * Success of close request + */ +export const closeSuccess = createAction( + '[ucap::chat::room] close Success', + props<{ roomIds: string[] }>() +); +/** + * Failure of close request + */ +export const closeFailure = createAction( + '[ucap::chat::room] close Failure', + props<{ error: any }>() +); + +/** + * Invite conversation partner to room or create room + */ +export const inviteOrCreate = createAction( + '[ucap::chat::room] inviteOrCreate', + props<{ + roomInfo: RoomInfo; + localeCode: LocaleCode; + req: CreateRequest; + }>() +); + +/** + * Invite conversation partner to room + */ +export const invite = createAction( + '[ucap::chat::room] invite', + props<{ req: InviteRequest; localeCode: LocaleCode }>() +); +/** + * Success of invite request + */ +export const inviteSuccess = createAction( + '[ucap::chat::room] invite Success', + props<{ res: InviteResponse }>() +); +/** + * Failure of invite request + */ +export const inviteFailure = createAction( + '[ucap::chat::room] invite Failure', + props<{ error: any }>() +); + +/** + * Request to ban a conversation partner + */ +export const expel = createAction( + '[ucap::chat::room] expel', + props<{ req: ExitForcingRequest }>() +); +/** + * Success of expel request + */ +export const expelSuccess = createAction( + '[ucap::chat::room] expel Success', + props<{ res: ExitForcingResponse }>() +); +/** + * Failure of expel request + */ +export const expelFailure = createAction( + '[ucap::chat::room] expel Failure', + props<{ error: any }>() +); + +/** + * update interval of timer room + */ +export const updateTimeRoomInterval = createAction( + '[ucap::chat::room] updateTimeRoomInterval', + props<{ req: UpdateTimerSetRequest }>() +); +/** + * Success of updateTimeRoomInterval request + */ +export const updateTimeRoomIntervalSuccess = createAction( + '[ucap::chat::room] updateTimeRoomInterval Success', + props<{ res: UpdateTimerSetResponse }>() +); +/** + * Failure of updateTimeRoomInterval request + */ +export const updateTimeRoomIntervalFailure = createAction( + '[ucap::chat::room] updateTimeRoomInterval Failure', + props<{ error: any }>() +); + +/** + * norification for invited users + */ +export const inviteNotification = createAction( + '[ucap::chat::room] invite Notification', + props<{ noti: InviteNotification; localeCode: LocaleCode }>() +); + +/** + * norification for exited user + */ +export const exitNotification = createAction( + '[ucap::chat::room] Exit Notification', + props<{ roomId: string; userSeq: string; senderSeq: string }>() +); diff --git a/projects/store-chat/src/lib/store/room/effects.ts b/projects/store-chat/src/lib/store/room/effects.ts new file mode 100644 index 0000000..a1be1c4 --- /dev/null +++ b/projects/store-chat/src/lib/store/room/effects.ts @@ -0,0 +1,314 @@ +import { of } from 'rxjs'; +import { catchError, map, switchMap, exhaustMap } from 'rxjs/operators'; + +import { Injectable } from '@angular/core'; + +import { Actions, ofType, createEffect } from '@ngrx/effects'; + +import { + RoomType, + OpenResponse as CreateResponse, + Open3Response as CreateTimerResponse, + ExitResponse as DeleteResponse, + UpdateResponse, + InviteResponse, + ExitForcingResponse, + UpdateTimerSetResponse +} from '@ucap/protocol-room'; + +import { RoomProtocolService } from '@ucap/ng-protocol-room'; + +import { SyncProtocolService } from '@ucap/ng-protocol-sync'; + +import { + rooms, + roomsFailure, + roomsSuccess, + room, + roomSuccess, + roomFailure, + inviteNotification, + exitNotification, + excludeUser, + excludeUserSuccess, + close, + delSuccess, + create, + createSuccess, + createFailure, + createTimer, + createTimerSuccess, + createTimerFailure, + del, + delFailure, + update, + updateSuccess, + updateFailure, + open, + openSuccess, + closeSuccess, + inviteOrCreate, + invite, + inviteSuccess, + inviteFailure, + expel, + expelSuccess, + expelFailure, + updateTimeRoomInterval, + updateTimeRoomIntervalSuccess, + updateTimeRoomIntervalFailure +} from './actions'; + +@Injectable() +export class Effects { + rooms$ = createEffect(() => { + return this.actions$.pipe( + ofType(rooms), + map(action => action.req), + switchMap(req => { + return this.syncProtocolService.room(req).pipe( + map(res => + roomsSuccess({ + roomList: res.roomList, + roomUserInfoMap: res.roomUserInfoMap, + syncDate: res.res.syncDate + }) + ), + catchError(error => of(roomsFailure({ error }))) + ); + }) + ); + }); + + room$ = createEffect(() => { + return this.actions$.pipe( + ofType(room), + map(action => action.req), + switchMap(req => { + return this.roomProtocolService.info(req).pipe( + map(res => + roomSuccess({ + roomInfo: res.roomInfo, + userInfoList: res.userInfoList + }) + ), + catchError(error => of(roomFailure({ error }))) + ); + }) + ); + }); + + create$ = createEffect(() => + this.actions$.pipe( + ofType(create), + map(action => action.req), + exhaustMap(req => { + return this.roomProtocolService.open(req).pipe( + map((res: CreateResponse) => { + return createSuccess({ res }); + }), + catchError(error => of(createFailure({ error }))) + ); + }) + ) + ); + + createTimer$ = createEffect(() => + this.actions$.pipe( + ofType(createTimer), + map(action => action.req), + exhaustMap(req => { + return this.roomProtocolService.open3(req).pipe( + map((res: CreateTimerResponse) => { + return createTimerSuccess({ res }); + }), + catchError(error => of(createTimerFailure({ error }))) + ); + }) + ) + ); + + del$ = createEffect(() => + this.actions$.pipe( + ofType(del), + map(action => action.req), + exhaustMap(req => { + return this.roomProtocolService.exit(req).pipe( + switchMap((res: DeleteResponse) => [ + close({ roomIds: [res.roomId] }), + delSuccess({ res }) + ]), + catchError(error => of(delFailure({ error }))) + ); + }) + ) + ); + + update$ = createEffect(() => + this.actions$.pipe( + ofType(update), + map(action => action.req), + exhaustMap(req => { + return this.roomProtocolService.update(req).pipe( + map((res: UpdateResponse) => { + return updateSuccess({ res }); + }), + catchError(error => of(updateFailure({ error }))) + ); + }) + ) + ); + + excludeUser$ = createEffect(() => { + return this.actions$.pipe( + ofType(excludeUser), + map(action => + excludeUserSuccess({ + roomId: action.roomId, + userSeqs: action.userSeqs + }) + ) + ); + }); + + open$ = createEffect(() => { + return this.actions$.pipe( + ofType(open), + map(action => openSuccess({ roomIds: [...action.roomIds] })) + ); + }); + + close$ = createEffect(() => { + return this.actions$.pipe( + ofType(close), + map(action => closeSuccess({ roomIds: [...action.roomIds] })) + ); + }); + + inviteOrCreate$ = createEffect(() => + this.actions$.pipe( + ofType(inviteOrCreate), + map(action => { + const roomInfo = action.roomInfo; + const localeCode = action.localeCode; + + switch (roomInfo.roomType) { + case RoomType.Single: + return create({ req: action.req }); + case RoomType.Multi: + return invite({ + req: { + roomId: roomInfo.roomId, + inviteUserSeqs: [...action.req.userSeqs] + }, + localeCode + }); + default: + return inviteFailure({ + error: `type[${roomInfo.roomType}] of room is not valid` + }); + } + }) + ) + ); + + invite$ = createEffect(() => + this.actions$.pipe( + ofType(invite), + exhaustMap(action => { + const req = action.req; + const localeCode = action.localeCode; + + return this.roomProtocolService.invite(req).pipe( + switchMap((res: InviteResponse) => { + return [ + inviteSuccess({ res }), + room({ + req: { + roomId: req.roomId, + isDetail: true, + localeCode + } + }) + ]; + }), + catchError(error => of(inviteFailure({ error }))) + ); + }) + ) + ); + + expel$ = createEffect(() => + this.actions$.pipe( + ofType(expel), + map(action => action.req), + exhaustMap(req => { + return this.roomProtocolService.exitForcing(req).pipe( + map((res: ExitForcingResponse) => { + return expelSuccess({ res }); + }), + catchError(error => of(expelFailure({ error }))) + ); + }) + ) + ); + + updateTimeRoomInterval$ = createEffect(() => + this.actions$.pipe( + ofType(updateTimeRoomInterval), + map(action => action.req), + exhaustMap(req => { + return this.roomProtocolService.updateTimerSet(req).pipe( + map((res: UpdateTimerSetResponse) => { + return updateTimeRoomIntervalSuccess({ res }); + }), + catchError(error => of(updateTimeRoomIntervalFailure({ error }))) + ); + }) + ) + ); + + inviteNotification$ = createEffect(() => { + return this.actions$.pipe( + ofType(inviteNotification), + map(action => + room({ + req: { + roomId: action.noti.roomId, + isDetail: true, + localeCode: action.localeCode + } + }) + ) + ); + }); + + exitNotification$ = createEffect(() => { + return this.actions$.pipe( + ofType(exitNotification), + switchMap(action => { + if (action.userSeq === action.senderSeq) { + return [ + close({ roomIds: [action.roomId] }), + delSuccess({ + res: { roomId: action.roomId } + }) + ]; + } else { + return [ + excludeUser({ + roomId: action.roomId, + userSeqs: [action.senderSeq] + }) + ]; + } + }) + ); + }); + + constructor( + private actions$: Actions, + private syncProtocolService: SyncProtocolService, + private roomProtocolService: RoomProtocolService + ) {} +} diff --git a/projects/store-chat/src/lib/store/room/reducers.ts b/projects/store-chat/src/lib/store/room/reducers.ts new file mode 100644 index 0000000..62500b7 --- /dev/null +++ b/projects/store-chat/src/lib/store/room/reducers.ts @@ -0,0 +1,129 @@ +import { createReducer, on } from '@ngrx/store'; + +import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; + +import * as chattingActions from '../chatting/actions'; + +import { + initialState, + adapterRoom, + adapterRoomUser, + RoomUserMap +} from './state'; +import { + roomsSuccess, + roomSuccess, + excludeUser, + excludeUserSuccess, + delSuccess +} from './actions'; + +export const reducer = createReducer( + initialState, + + on(roomsSuccess, (state, action) => { + const roomUserMapList: RoomUserMap[] = []; + + for (const key in action.roomUserInfoMap) { + if (action.roomUserInfoMap.hasOwnProperty(key)) { + const userInfoList = action.roomUserInfoMap[key]; + if (!!userInfoList && 0 < userInfoList.length) { + roomUserMapList.push({ roomId: key, userInfos: userInfoList }); + } + } + } + + let unreadTotal = 0; + + // tslint:disable-next-line: forin + for (const key in state.rooms.entities) { + const value = state.rooms.entities[key]; + unreadTotal += isNaN(value.noReadCnt) ? 0 : value.noReadCnt; + } + action.roomList.map(item => (unreadTotal += item.noReadCnt)); + + return { + ...state, + rooms: adapterRoom.upsertMany(action.roomList, { + ...state.rooms, + syncDate: action.syncDate + }), + roomUsers: adapterRoomUser.upsertMany(roomUserMapList, { + ...state.roomUsers + }), + unreadTotal + }; + }), + + on(roomSuccess, (state, action) => { + const roomUserMapList: RoomUserMap[] = []; + + if (!!action.userInfoList && 0 < action.userInfoList.length) { + roomUserMapList.push({ + roomId: action.roomInfo.roomId, + userInfos: action.userInfoList + }); + } + + return { + ...state, + rooms: adapterRoom.upsertOne(action.roomInfo, { + ...state.rooms + }), + roomUsers: + 0 < roomUserMapList.length + ? adapterRoomUser.upsertMany(roomUserMapList, { + ...state.roomUsers + }) + : state.roomUsers + }; + }), + + on(excludeUserSuccess, (state, action) => { + const roomId = action.roomId; + const roomUserMap = state.roomUsers.entities[roomId]; + + const userInfos: RoomUserInfo[] = [...roomUserMap.userInfos]; + + action.userSeqs.forEach(userSeq => { + const userInfo: RoomUserInfo = userInfos.find( + u => userSeq === String(u.seq) + ); + + if (!!userInfo && !!userInfo.seq) { + userInfo.isJoinRoom = false; + } + }); + + return { + ...state, + roomUsers: adapterRoomUser.updateOne( + { + id: roomId, + changes: { + roomId, + userInfos + } + }, + { + ...state.roomUsers + } + ) + }; + }), + + on(delSuccess, (state, action) => { + const roomId = action.res.roomId; + const room = state.rooms.entities[roomId]; + + if (!room) { + return state; + } + + return { + ...state, + rooms: adapterRoom.removeOne(roomId, { ...state.rooms }), + roomUsers: adapterRoomUser.removeOne(roomId, { ...state.roomUsers }) + }; + }) +); diff --git a/projects/store-chat/src/lib/store/room/state.ts b/projects/store-chat/src/lib/store/room/state.ts new file mode 100644 index 0000000..41afa05 --- /dev/null +++ b/projects/store-chat/src/lib/store/room/state.ts @@ -0,0 +1,104 @@ +import moment from 'moment'; + +import { Selector, createSelector } from '@ngrx/store'; +import { EntityState, createEntityAdapter, Dictionary } from '@ngrx/entity'; + +import { RoomUserDetailData } from '@ucap/protocol-sync'; +import { RoomInfo, UserInfo as RoomUserInfo } from '@ucap/protocol-room'; + +export interface RoomState extends EntityState { + syncDate: string; +} +export const adapterRoom = createEntityAdapter({ + selectId: roomInfo => roomInfo.roomId, + sortComparer: (a, b) => { + return ( + moment(b.finalEventDate) + .toDate() + .getTime() - + moment(a.finalEventDate) + .toDate() + .getTime() + ); + } +}); + +export interface RoomUserMap { + roomId: string; + userInfos: RoomUserInfo[]; +} + +export interface RoomUserState extends EntityState {} +export const adapterRoomUser = createEntityAdapter({ + selectId: roomUserDetailData => roomUserDetailData.roomId +}); + +export interface State { + rooms: RoomState; + roomUsers: RoomUserState; +} + +const roomInitialState: RoomState = adapterRoom.getInitialState({ + syncDate: '' +}); +const roomUserInitialState: RoomUserState = adapterRoomUser.getInitialState({}); + +export const initialState: State = { + rooms: roomInitialState, + roomUsers: roomUserInitialState +}; + +const { + selectAll: selectAllForRoom, + selectEntities: selectEntitiesForRoom, + selectIds: selectIdsForRoom, + selectTotal: selectTotalForRoom +} = adapterRoom.getSelectors(); + +const { + selectAll: selectAllForRoomUser, + selectEntities: selectEntitiesForRoomUser, + selectIds: selectIdsForRoomUser, + selectTotal: selectTotalForRoomUser +} = adapterRoomUser.getSelectors(); + +export function selectors(selector: Selector) { + const selectRooms = createSelector(selector, (state: State) => state.rooms); + + const selectRoomUsers = createSelector( + selector, + (state: State) => state.roomUsers + ); + + return { + rooms: createSelector(selectRooms, selectAllForRoom), + room: createSelector( + selectRooms, + selectEntitiesForRoom, + (roomState: RoomState, entities: Dictionary, roomId: string) => + entities && entities[roomId] + ), + roomsSyncDate: createSelector(selectRooms, roomState => roomState.syncDate), + roomUsers: createSelector(selectRoomUsers, selectAllForRoomUser), + roomUser: createSelector( + selectRoomUsers, + selectEntitiesForRoomUser, + ( + roomUserState: RoomUserState, + entities: Dictionary, + roomId: string + ) => entities && entities[roomId] + ), + unreadTotal: createSelector( + selectRooms, + selectAllForRoom, + (roomState: RoomState, rooms: RoomInfo[]) => { + let unreadTotal = 0; + for (const room of rooms) { + unreadTotal += room.noReadCnt; + } + return unreadTotal; + } + ) + }; +} diff --git a/projects/store-chat/src/lib/store/state.ts b/projects/store-chat/src/lib/store/state.ts new file mode 100644 index 0000000..a73a216 --- /dev/null +++ b/projects/store-chat/src/lib/store/state.ts @@ -0,0 +1,27 @@ +import { createFeatureSelector, createSelector } from '@ngrx/store'; + +import * as CommonState from './common/state'; +import * as RoomState from './room/state'; +import * as ChattingState from './chatting/state'; + +export const KEY_FEATURE = 'chat'; + +export interface State { + common: CommonState.State; + room: RoomState.State; + chatting: ChattingState.State; +} + +export const Selector = createFeatureSelector(KEY_FEATURE); + +export const CommonSelector = CommonState.selectors( + createSelector(Selector, (state: State) => state.common) +); + +export const RoomSelector = RoomState.selectors( + createSelector(Selector, (state: State) => state.room) +); + +export const ChattingSelector = ChattingState.selectors( + createSelector(Selector, (state: State) => state.chatting) +); diff --git a/projects/store-chat/src/public-api.ts b/projects/store-chat/src/public-api.ts new file mode 100644 index 0000000..d327ecc --- /dev/null +++ b/projects/store-chat/src/public-api.ts @@ -0,0 +1,15 @@ +/* + * Public API Surface of store-chat + */ + +import * as CommonActions from './lib/store/common/actions'; +import * as RoomActions from './lib/store/room/actions'; +import * as ChattingActions from './lib/store/chatting/actions'; + +export * from './lib/config/module-config'; + +export { CommonActions, RoomActions, ChattingActions }; + +export * from './lib/store/state'; + +export * from './lib/chat-store.module'; diff --git a/projects/store-chat/src/test.ts b/projects/store-chat/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/store-chat/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/store-chat/tsconfig.lib.json b/projects/store-chat/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/store-chat/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/store-chat/tsconfig.lib.prod.json b/projects/store-chat/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/store-chat/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/store-chat/tsconfig.spec.json b/projects/store-chat/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/store-chat/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/store-chat/tslint.json b/projects/store-chat/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/store-chat/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/store-group/README.md b/projects/store-group/README.md new file mode 100644 index 0000000..158df7f --- /dev/null +++ b/projects/store-group/README.md @@ -0,0 +1,24 @@ +# StoreGroup + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project store-group` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project store-group`. +> Note: Don't forget to add `--project store-group` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build store-group` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build store-group`, go to the dist folder `cd dist/store-group` and run `npm publish`. + +## Running unit tests + +Run `ng test store-group` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/store-group/karma.conf.js b/projects/store-group/karma.conf.js new file mode 100644 index 0000000..270fc6c --- /dev/null +++ b/projects/store-group/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/store-group'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/store-group/ng-package.json b/projects/store-group/ng-package.json new file mode 100644 index 0000000..8f8e739 --- /dev/null +++ b/projects/store-group/ng-package.json @@ -0,0 +1,23 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/store-group", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ngrx/store": "@ngrx/store", + "@ngrx/entity": "@ngrx/entity", + "@ngrx/effects": "@ngrx/effects", + "moment": "moment", + "@ucap/core": "@ucap/core", + "@ucap/pi": "@ucap/pi", + "@ucap/protocol-sync": "@ucap/protocol-sync", + "@ucap/protocol-group": "@ucap/protocol-group", + "@ucap/protocol-buddy": "@ucap/protocol-buddy", + "@ucap/protocol-query": "@ucap/protocol-query", + "@ucap/ng-protocol-buddy": "@ucap/ng-protocol-buddy", + "@ucap/ng-protocol-group": "@ucap/ng-protocol-group", + "@ucap/ng-protocol-sync": "@ucap/ng-protocol-sync", + "@ucap/ng-store-organization": "@ucap/ng-store-organization" + } + } +} diff --git a/projects/store-group/package.json b/projects/store-group/package.json new file mode 100644 index 0000000..71e7ed2 --- /dev/null +++ b/projects/store-group/package.json @@ -0,0 +1,21 @@ +{ + "name": "@ucap/ng-store-group", + "version": "0.0.3", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/core": "~0.0.1", + "@ucap/protocol-buddy": "~0.0.1", + "@ucap/protocol-group": "~0.0.1", + "@ucap/protocol-query": "~0.0.1", + "@ucap/protocol-sync": "~0.0.1", + "@ucap/ng-protocol-buddy": "~0.0.1", + "@ucap/ng-protocol-group": "~0.0.1", + "@ucap/ng-protocol-sync": "~0.0.1", + "@ucap/ng-store-organization": "~0.0.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/store-group/src/lib/config/module-config.ts b/projects/store-group/src/lib/config/module-config.ts new file mode 100644 index 0000000..e63bad0 --- /dev/null +++ b/projects/store-group/src/lib/config/module-config.ts @@ -0,0 +1,6 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +export interface ModuleConfig extends CoreModuleConfig { + useMyDeptGroup?: boolean; + fixedGroupSeqs?: number[]; +} diff --git a/projects/store-group/src/lib/config/token.ts b/projects/store-group/src/lib/config/token.ts new file mode 100644 index 0000000..e89e2f6 --- /dev/null +++ b/projects/store-group/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-store-group config of module' +); diff --git a/projects/store-group/src/lib/group-store.module.ts b/projects/store-group/src/lib/group-store.module.ts new file mode 100644 index 0000000..3ed3817 --- /dev/null +++ b/projects/store-group/src/lib/group-store.module.ts @@ -0,0 +1,31 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { StoreModule } from '@ngrx/store'; +import { EffectsModule } from '@ngrx/effects'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { KEY_FEATURE } from './store/state'; +import { effects } from './store/effects'; +import { reducers } from './store/reducers'; + +@NgModule({ + imports: [ + StoreModule.forFeature(KEY_FEATURE, reducers), + EffectsModule.forFeature([...effects]) + ] +}) +export class GroupStoreRootModule {} + +@NgModule({}) +export class GroupStoreModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: GroupStoreRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }] + }; + } +} diff --git a/projects/store-group/src/lib/store/buddy/actions.ts b/projects/store-group/src/lib/store/buddy/actions.ts new file mode 100644 index 0000000..bea95e3 --- /dev/null +++ b/projects/store-group/src/lib/store/buddy/actions.ts @@ -0,0 +1,121 @@ +import { createAction, props } from '@ngrx/store'; +import { BuddyRequest, UserInfo } from '@ucap/protocol-sync'; + +import { + AddRequest as BuddyAddRequest, + AddResponse as BuddyAddResponse, + DelRequest as BuddyDelRequest, + DelResponse as BuddyDelResponse, + UpdateRequest as BuddyUpdateRequest, + UpdateResponse as BuddyUpdateResponse +} from '@ucap/protocol-buddy'; + +/** + * retrieve list of buddy + */ +export const buddy2 = createAction( + '[ucap::group::buddy] buddy2', + props<{ req: BuddyRequest }>() +); +/** + * Success of buddy2 request + */ +export const buddy2Success = createAction( + '[ucap::group::buddy] buddy2 Success', + props<{ buddyList: UserInfo[]; syncDate: string }>() +); +/** + * Failure of buddy2 request + */ +export const buddy2Failure = createAction( + '[ucap::group::buddy] buddy2 Failure', + props<{ error: any }>() +); + +/** + * request to add a buddy + */ +export const add = createAction( + '[ucap::group::buddy] addBuddy', + props<{ req: BuddyAddRequest }>() +); +/** + * Success of add request + */ +export const addSuccess = createAction( + '[ucap::group::buddy] add Success', + props<{ res: BuddyAddResponse }>() +); +/** + * Failure of add request + */ +export const addFailure = createAction( + '[ucap::group::buddy] add Failure', + props<{ error: any }>() +); + +/** + * request to delete a buddy + */ +export const del = createAction( + '[ucap::group::buddy] del', + props<{ req: BuddyDelRequest }>() +); +/** + * Success of del request + */ +export const delSuccess = createAction( + '[ucap::group::buddy] del Success', + props<{ res: BuddyDelResponse }>() +); +/** + * Failure of del request + */ +export const delFailure = createAction( + '[ucap::group::buddy] del Failure', + props<{ error: any }>() +); + +/** + * 동료 삭제 및 그룹 클리어.(in profile) + */ +export const delAndClear = createAction( + '[ucap::group::buddy] delAndClear', + props<{ seq: number }>() +); +/** + * Success of delAndClear request + */ +export const delAndClearSuccess = createAction( + '[ucap::group::buddy] delAndClear Success', + props<{ res: BuddyDelResponse }>() +); +/** + * Failure of delAndClear request + */ +export const delAndClearFailure = createAction( + '[ucap::group::buddy] delAndClear Failure', + props<{ error: any }>() +); + +/** + * 동료 변경(즐겨찾기) + */ +export const update = createAction( + '[ucap::group::buddy] update', + props<{ req: BuddyUpdateRequest }>() +); +/** + * Success of update request + */ +export const updateSuccess = createAction( + '[ucap::group::buddy] update Success', + props<{ res: BuddyUpdateResponse }>() +); +/** + * Failure of update request + */ +export const updateFailure = createAction( + '[ucap::group::buddy] update Failure', + props<{ error: any }>() +); diff --git a/projects/store-group/src/lib/store/buddy/effects.ts b/projects/store-group/src/lib/store/buddy/effects.ts new file mode 100644 index 0000000..0bcf468 --- /dev/null +++ b/projects/store-group/src/lib/store/buddy/effects.ts @@ -0,0 +1,275 @@ +import { of } from 'rxjs'; +import { + catchError, + exhaustMap, + map, + withLatestFrom, + switchMap, + tap +} from 'rxjs/operators'; + +import { Injectable, Inject } from '@angular/core'; + +import { Store, select } from '@ngrx/store'; +import { Dictionary } from '@ngrx/entity'; +import { Actions, ofType, createEffect } from '@ngrx/effects'; + +import { GroupDetailData } from '@ucap/protocol-sync'; + +import { + AddResponse as BuddyAddResponse, + DelResponse as BuddyDelResponse, + UpdateResponse as BuddyUpdateResponse +} from '@ucap/protocol-buddy'; + +import { UserInfoSS } from '@ucap/protocol-query'; + +import { SyncProtocolService } from '@ucap/ng-protocol-sync'; + +import { BuddyProtocolService } from '@ucap/ng-protocol-buddy'; + +import { DepartmentSelector } from '@ucap/ng-store-organization'; + +import * as groupActions from '../group/actions'; + +import { + buddy2, + buddy2Success, + buddy2Failure, + add, + addFailure, + del, + delFailure, + delSuccess, + update, + updateSuccess, + updateFailure, + delAndClear +} from './actions'; + +import { BuddySelector, GroupSelector } from '../state'; + +import { ModuleConfig } from '../../config/module-config'; +import { _MODULE_CONFIG } from '../../config/token'; + +@Injectable() +export class Effects { + buddy2$ = createEffect(() => { + return this.actions$.pipe( + ofType(buddy2), + map(action => action.req), + switchMap(req => { + return this.syncProtocolService.buddy2(req).pipe( + map(res => + buddy2Success({ + buddyList: res.buddyInfos, + syncDate: res.res.syncDate + }) + ), + catchError(error => of(buddy2Failure({ error }))) + ); + }) + ); + }); + + add$ = createEffect(() => + this.actions$.pipe( + ofType(add), + map(action => action.req), + withLatestFrom(this.store.pipe(select(BuddySelector.buddySyncDate))), + exhaustMap(([req, syncDate]) => + this.buddyProtocolService.add(req).pipe( + map((res: BuddyAddResponse) => { + return buddy2({ + req: { + syncDate + } + }); + }), + catchError(error => of(addFailure({ error }))) + ) + ) + ) + ); + + del$ = createEffect(() => + this.actions$.pipe( + ofType(del), + map(action => action.req), + exhaustMap(req => + this.buddyProtocolService.del(req).pipe( + map((res: BuddyDelResponse) => { + return delSuccess({ res }); + }), + catchError(error => of(delFailure({ error }))) + ) + ) + ) + ); + + delAndClear$ = createEffect( + () => { + return this.actions$.pipe( + ofType(delAndClear), + withLatestFrom( + this.store.pipe(select(GroupSelector.groups)), + this.store.pipe(select(DepartmentSelector.myDepartmentUserInfoList)) // 내 부서원 비교. + ), + tap(([req, groupList, myDeptUserList]) => { + for (const group of groupList) { + if (group.userSeqs.indexOf(String(req.seq)) > -1) { + // 소속부서(내부서) 고정그룹 사용시 소속부서원을 삭제하지 않는다. + if ( + !!this.moduleConfig.useMyDeptGroup && + this.moduleConfig.useMyDeptGroup && + !!this.moduleConfig.fixedGroupSeqs && + this.moduleConfig.fixedGroupSeqs.filter( + fixedGroupSeq => fixedGroupSeq === group.seq + ).length > 0 + ) { + // skip;; + } else { + // Group Clear.. + this.store.dispatch( + groupActions.update({ + req: { + groupSeq: group.seq, + groupName: group.name, + userSeqs: group.userSeqs.filter( + userSeq => userSeq !== String(req.seq) + ) + } + }) + ); + } + } + } + + // 소속부서(내부서) 고정그룹 사용시 소속부서원을 삭제하지 않는다. + if ( + !!this.moduleConfig.useMyDeptGroup && + this.moduleConfig.useMyDeptGroup && + myDeptUserList.filter(deptUser => deptUser.seq === String(req.seq)) + .length > 0 + ) { + // skip;; + } else { + // Favorit Clear.. + this.store.dispatch( + update({ + req: { + seq: req.seq, + isFavorit: false + } + }) + ); + + // Buddy Clear.. + this.store.dispatch(del({ req: { userSeqs: [String(req.seq)] } })); + } + }) + ); + }, + { dispatch: false } + ); + + update$ = createEffect(() => + this.actions$.pipe( + ofType(update), + map(action => action.req), + exhaustMap(req => + this.buddyProtocolService.update(req).pipe( + map((res: BuddyUpdateResponse) => { + return updateSuccess({ res }); + }), + catchError(error => of(updateFailure({ error }))) + ) + ) + ) + ); + + groupCreateSuccess$ = createEffect( + () => { + return this.actions$.pipe( + ofType(groupActions.createSuccess), + withLatestFrom(this.store.pipe(select(BuddySelector.buddies))), + tap(([action, buddyList]) => { + const targetUserSeqs = action.targetUserSeqs; + + if (!!targetUserSeqs && 0 < targetUserSeqs.length) { + const addBuddyList: string[] = []; + targetUserSeqs.forEach(userSeq => { + if (!buddyList) { + addBuddyList.push(userSeq); + return; + } + + const index = buddyList.findIndex(b => String(b.seq) === userSeq); + if (-1 < index) { + addBuddyList.push(userSeq); + return; + } + }); + + if (addBuddyList.length > 0) { + this.store.dispatch(add({ req: { userSeqs: addBuddyList } })); + } + } + }) + ); + }, + { dispatch: false } + ); + + groupUpdateMemberSuccess$ = createEffect( + () => { + return this.actions$.pipe( + ofType(groupActions.updateMemberSuccess), + withLatestFrom(this.store.pipe(select(BuddySelector.buddies))), + tap(([action, buddyList]) => { + const targetUserSeqs = action.targetUserSeqs; + const userSeqsForDelete = action.userSeqsForDelete; + + if (!!targetUserSeqs && 0 < targetUserSeqs.length) { + const addBuddyList: string[] = []; + targetUserSeqs.forEach(userSeq => { + if (!buddyList) { + addBuddyList.push(userSeq); + return; + } + + const index = buddyList.findIndex(b => String(b.seq) === userSeq); + if (-1 < index) { + addBuddyList.push(userSeq); + return; + } + }); + + if (addBuddyList.length > 0) { + this.store.dispatch(add({ req: { userSeqs: addBuddyList } })); + } + } + + if (!!userSeqsForDelete && 0 < userSeqsForDelete.length) { + userSeqsForDelete.forEach(userSeq => { + this.store.dispatch( + update({ req: { seq: Number(userSeq), isFavorit: false } }) + ); + }); + + this.store.dispatch(del({ req: { userSeqs: userSeqsForDelete } })); + } + }) + ); + }, + { dispatch: false } + ); + + constructor( + private actions$: Actions, + private store: Store, + @Inject(_MODULE_CONFIG) private moduleConfig: ModuleConfig, + private syncProtocolService: SyncProtocolService, + private buddyProtocolService: BuddyProtocolService + ) {} +} diff --git a/projects/store-group/src/lib/store/buddy/reducers.ts b/projects/store-group/src/lib/store/buddy/reducers.ts new file mode 100644 index 0000000..6539566 --- /dev/null +++ b/projects/store-group/src/lib/store/buddy/reducers.ts @@ -0,0 +1,42 @@ +import { createReducer, on } from '@ngrx/store'; + +import { UserInfo } from '@ucap/protocol-sync'; + +import { initialState, adapterBuddy } from './state'; +import { buddy2Success, delSuccess, updateSuccess } from './actions'; + +export const reducer = createReducer( + initialState, + on(buddy2Success, (state, action) => { + return { + ...state, + buddies: adapterBuddy.upsertMany(action.buddyList, { + ...state.buddies, + syncDate: action.syncDate + }) + }; + }), + + on(delSuccess, (state, action) => { + const res = action.res; + return { + ...state, + buddies: adapterBuddy.removeMany(res.userSeqs, { + ...state.buddies + }) + }; + }), + + on(updateSuccess, (state, action) => { + const res = action.res; + const userInfo: UserInfo = { + ...state.buddies.entities[res.seq], + isFavorit: res.isFavorit + }; + + return { + ...state, + buddies: adapterBuddy.upsertOne(userInfo, { ...state.buddies }) + }; + }) +); diff --git a/projects/store-group/src/lib/store/buddy/state.ts b/projects/store-group/src/lib/store/buddy/state.ts new file mode 100644 index 0000000..c2e96f0 --- /dev/null +++ b/projects/store-group/src/lib/store/buddy/state.ts @@ -0,0 +1,44 @@ +import { Selector, createSelector } from '@ngrx/store'; +import { EntityState, createEntityAdapter } from '@ngrx/entity'; +import { UserInfo } from '@ucap/protocol-sync'; + +export interface BuddyState extends EntityState { + syncDate: string; +} +export const adapterBuddy = createEntityAdapter({ + selectId: userInfo => userInfo.seq +}); + +export interface State { + buddies: BuddyState; +} + +const buddyInitialState: BuddyState = adapterBuddy.getInitialState({ + syncDate: '' +}); + +export const initialState: State = { + buddies: buddyInitialState +}; + +const { + selectAll: selectAllForBuddy, + selectEntities: selectEntitiesForBuddy, + selectIds: selectIdsForBuddy, + selectTotal: selectTotalForBuddy +} = adapterBuddy.getSelectors(); + +export function selectors(selector: Selector) { + const selectBuddies = createSelector( + selector, + (state: State) => state.buddies + ); + + return { + buddies: createSelector(selectBuddies, selectAllForBuddy), + buddySyncDate: createSelector( + selectBuddies, + buddyState => buddyState.syncDate + ) + }; +} diff --git a/projects/store-group/src/lib/store/common/actions.ts b/projects/store-group/src/lib/store/common/actions.ts new file mode 100644 index 0000000..6294974 --- /dev/null +++ b/projects/store-group/src/lib/store/common/actions.ts @@ -0,0 +1,3 @@ +import { createAction } from '@ngrx/store'; + +export const init = createAction('[group::common] init'); diff --git a/projects/store-group/src/lib/store/common/effects.ts b/projects/store-group/src/lib/store/common/effects.ts new file mode 100644 index 0000000..4306694 --- /dev/null +++ b/projects/store-group/src/lib/store/common/effects.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +import { Actions } from '@ngrx/effects'; + +@Injectable() +export class Effects { + constructor(private actions$: Actions) {} +} diff --git a/projects/store-group/src/lib/store/common/reducers.ts b/projects/store-group/src/lib/store/common/reducers.ts new file mode 100644 index 0000000..c02394c --- /dev/null +++ b/projects/store-group/src/lib/store/common/reducers.ts @@ -0,0 +1,5 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState } from './state'; + +export const reducer = createReducer(initialState); diff --git a/projects/store-group/src/lib/store/common/state.ts b/projects/store-group/src/lib/store/common/state.ts new file mode 100644 index 0000000..aacfe4f --- /dev/null +++ b/projects/store-group/src/lib/store/common/state.ts @@ -0,0 +1,10 @@ +import { Selector } from '@ngrx/store'; + +// tslint:disable-next-line: no-empty-interface +export interface State {} + +export const initialState: State = {}; + +export function selectors(selector: Selector) { + return {}; +} diff --git a/projects/store-group/src/lib/store/effects.ts b/projects/store-group/src/lib/store/effects.ts new file mode 100644 index 0000000..741f88c --- /dev/null +++ b/projects/store-group/src/lib/store/effects.ts @@ -0,0 +1,7 @@ +import { Type } from '@angular/core'; + +import { Effects as CommonEffects } from './common/effects'; +import { Effects as GroupEffects } from './group/effects'; +import { Effects as BuddyEffects } from './buddy/effects'; + +export const effects: Type[] = [CommonEffects, GroupEffects, BuddyEffects]; diff --git a/projects/store-group/src/lib/store/group/actions.ts b/projects/store-group/src/lib/store/group/actions.ts new file mode 100644 index 0000000..5025277 --- /dev/null +++ b/projects/store-group/src/lib/store/group/actions.ts @@ -0,0 +1,155 @@ +import { createAction, props } from '@ngrx/store'; +import { GroupRequest, GroupDetailData } from '@ucap/protocol-sync'; +import { + AddResponse as GroupAddResponse, + UpdateRequest as GroupUpdateRequest, + UpdateResponse as GroupUpdateResponse, + DelRequest as GroupDelRequest, + DelResponse as GroupDelResponse +} from '@ucap/protocol-group'; + +/** + * retrieve list of group + */ +export const groups = createAction( + '[ucap::group::group] groups', + props<{ req: GroupRequest }>() +); +/** + * Success of groups request + */ +export const groupsSuccess = createAction( + '[ucap::group::group] groups Success', + props<{ groupList: GroupDetailData[]; syncDate: string }>() +); +/** + * Failure of groups request + */ +export const groupsFailure = createAction( + '[ucap::group::group] groups Failure', + props<{ error: any }>() +); + +/** + * 그룹원 수정 + */ +export const updateMember = createAction( + '[ucap::group::group] updateMember', + props<{ + targetGroup: GroupDetailData; + targetUserSeqs: string[]; + }>() +); +/** + * Success of updateMember request + */ +export const updateMemberSuccess = createAction( + '[ucap::group::group] updateMember Success', + props<{ + targetGroup: GroupDetailData; + targetUserSeqs: string[]; + userSeqsForDelete?: string[]; + }>() +); +/** + * Failure of updateMember request + */ +export const updateMemberFailure = createAction( + '[ucap::group::group] updateMember Failure', + props<{ error: any }>() +); + +/** + * 그룹원 이동 + */ +export const moveMember = createAction( + '[ucap::group::group] moveMember', + props<{ + fromGroup: GroupDetailData; + toGroup: GroupDetailData; + targetUserSeq: string[]; + }>() +); +/** + * Failure of moveTo request + */ +export const moveToFailure = createAction( + '[ucap::group::group] moveTo Failure', + props<{ error: any }>() +); +/** + * Failure of moveFrom request + */ +export const moveFromFailure = createAction( + '[ucap::group::group] moveFrom Failure', + props<{ error: any }>() +); + +/** + * 새그룹 추가 + */ +export const create = createAction( + '[ucap::group::group] create', + props<{ + groupName: string; + targetUserSeqs?: string[]; + }>() +); +/** + * Success of create request + */ +export const createSuccess = createAction( + '[ucap::group::group] create Success', + props<{ res: GroupAddResponse; targetUserSeqs?: string[] }>() +); +/** + * Failure of create request + */ +export const createFailure = createAction( + '[ucap::group::group] create Failure', + props<{ error: any }>() +); + +/** 그룹 업데이트 */ +export const update = createAction( + '[ucap::group::group] update', + props<{ req: GroupUpdateRequest }>() +); +/** + * Success of update request + */ +export const updateSuccess = createAction( + '[ucap::group::group] update Success', + props<{ res: GroupUpdateResponse }>() +); +/** + * Failure of update request + */ +export const updateFailure = createAction( + '[ucap::group::group] update Failure', + props<{ error: any }>() +); + +/** + * 그룹 삭제 + */ +export const del = createAction( + '[ucap::group::group] del', + props<{ + group: GroupDetailData; + }>() +); +/** + * Success of del request + */ +export const delSuccess = createAction( + '[ucap::group::group] del Success', + props<{ res: GroupDelResponse }>() +); +/** + * Failure of del request + */ +export const delFailure = createAction( + '[ucap::group::group] del Failure', + props<{ error: any }>() +); diff --git a/projects/store-group/src/lib/store/group/effects.ts b/projects/store-group/src/lib/store/group/effects.ts new file mode 100644 index 0000000..3cead2c --- /dev/null +++ b/projects/store-group/src/lib/store/group/effects.ts @@ -0,0 +1,331 @@ +import { of } from 'rxjs'; +import { + catchError, + exhaustMap, + map, + withLatestFrom, + concatMap, + switchMap +} from 'rxjs/operators'; + +import { Injectable, Inject } from '@angular/core'; + +import { Store, select } from '@ngrx/store'; +import { Actions, ofType, createEffect } from '@ngrx/effects'; + +import { + AddResponse as GroupAddResponse, + UpdateResponse as GroupUpdateResponse, + DelResponse as GroupDelResponse +} from '@ucap/protocol-group'; + +import { GroupProtocolService } from '@ucap/ng-protocol-group'; + +import { SyncProtocolService } from '@ucap/ng-protocol-sync'; + +import { DepartmentSelector } from '@ucap/ng-store-organization'; + +import { ModuleConfig } from '../../config/module-config'; +import { _MODULE_CONFIG } from '../../config/token'; + +import * as buddyActions from '../buddy/actions'; + +import { GroupSelector } from '../state'; + +import { + groups, + groupsSuccess, + groupsFailure, + create, + createSuccess, + createFailure, + update, + updateFailure, + updateMember, + del, + delFailure, + delSuccess, + moveMember, + moveFromFailure, + moveToFailure, + updateMemberSuccess +} from './actions'; + +@Injectable() +export class Effects { + groups$ = createEffect(() => { + return this.actions$.pipe( + ofType(groups), + map(action => action.req), + concatMap(req => { + return this.syncProtocolService.group2(req).pipe( + map(res => + groupsSuccess({ + groupList: res.groupInfos, + syncDate: res.res.syncDate + }) + ), + catchError(error => of(groupsFailure({ error }))) + ); + }) + ); + }); + + create$ = createEffect(() => + this.actions$.pipe( + ofType(create), + exhaustMap(action => { + return this.groupProtocolService + .add({ + groupName: action.groupName + }) + .pipe( + switchMap((res: GroupAddResponse) => { + const actions: any[] = []; + + if (!!action.targetUserSeqs && 0 < action.targetUserSeqs.length) { + actions.push( + update({ + req: { + groupSeq: res.groupSeq, + groupName: res.groupName, + userSeqs: action.targetUserSeqs + } + }) + ); + } + actions.push( + createSuccess({ res, targetUserSeqs: action.targetUserSeqs }) + ); + + return actions; + }), + catchError(error => of(createFailure({ error }))) + ); + }) + ) + ); + + updateMember$ = createEffect( + () => { + return this.actions$.pipe( + ofType(updateMember), + withLatestFrom( + this.store.pipe(select(GroupSelector.groups)), + this.store.pipe(select(DepartmentSelector.myDepartmentUserInfoList)) // 내 부서원 비교. + ), + switchMap(([action, groupList, myDeptUserList]) => { + const targetGroup = action.targetGroup; + const targetUserSeqs = action.targetUserSeqs; + + // Del Buddy + let userSeqsForDelete: string[] = targetGroup.userSeqs.filter( + v => targetUserSeqs.indexOf(v) < 0 + ); + + // 소속부서(내부서) 고정그룹 사용시 소속부서원을 삭제하지 않는다. + if ( + !!this.moduleConfig.useMyDeptGroup && + this.moduleConfig.useMyDeptGroup + ) { + userSeqsForDelete = userSeqsForDelete.filter( + delbuddy => + myDeptUserList.filter(deptUser => deptUser.seq === delbuddy) + .length === 0 + ); + } + userSeqsForDelete = userSeqsForDelete.filter(delbuddy => { + let exist = false; + + for (const group of groupList) { + if ( + group.seq !== targetGroup.seq && + group.userSeqs.filter(v => v === delbuddy).length > 0 + ) { + exist = true; + break; + } + } + + return !exist; + }); + + return [ + update({ + req: { + groupSeq: targetGroup.seq, + groupName: targetGroup.name, + userSeqs: targetUserSeqs + } + }), + updateMemberSuccess({ + targetGroup, + targetUserSeqs, + userSeqsForDelete + }) + ]; + }) + ); + }, + { dispatch: false } + ); + + moveMember$ = createEffect(() => + this.actions$.pipe( + ofType(moveMember), + withLatestFrom( + this.store.pipe(select(GroupSelector.groups)), + this.store.pipe(select(GroupSelector.groupSyncDate)) + ), + exhaustMap(([action, groupList, syncDate]) => { + // copy to + const toGroup = groupList.find(g => g.seq === action.toGroup.seq); + + let toTrgtUserSeqs = toGroup.userSeqs; + action.targetUserSeq.forEach(trgtSeq => { + if (toTrgtUserSeqs.indexOf(trgtSeq) > -1) { + // ignore + } else { + toTrgtUserSeqs = toTrgtUserSeqs.concat(trgtSeq); + } + }); + + return this.groupProtocolService + .update2({ + groupSeq: action.toGroup.seq, + groupName: action.toGroup.name, + userSeqs: toTrgtUserSeqs + }) + .pipe( + exhaustMap((resTo: GroupUpdateResponse) => { + // del from + const fromGroup = groupList.find( + g => g.seq === action.fromGroup.seq + ); + + const fromTrgtUserSeqs = fromGroup.userSeqs; + + return this.groupProtocolService + .update2({ + groupSeq: action.fromGroup.seq, + groupName: action.fromGroup.name, + userSeqs: fromTrgtUserSeqs.filter( + trgtSeq => action.targetUserSeq.indexOf(trgtSeq) < 0 + ) + }) + .pipe( + map((resFrom: GroupUpdateResponse) => { + return groups({ + req: { + syncDate + } + }); + }), + catchError(error => of(moveFromFailure({ error }))) + ); + }), + catchError(error => of(moveToFailure({ error }))) + ); + }) + ) + ); + + del$ = createEffect(() => + this.actions$.pipe( + ofType(del), + withLatestFrom( + this.store.pipe(select(GroupSelector.groups)), + this.store.pipe(select(DepartmentSelector.myDepartmentUserInfoList)) // 내 부서원 비교. + ), + exhaustMap(([action, groupList, myDeptUserList]) => { + // Del Buddy + const targetUserSeqs = action.group.userSeqs; + + let userSeqsForDelete: string[] = []; + // 소속부서(내부서) 고정그룹 사용시 소속부서원을 삭제하지 않는다. + if ( + !!this.moduleConfig.useMyDeptGroup && + this.moduleConfig.useMyDeptGroup + ) { + userSeqsForDelete = targetUserSeqs.filter( + delbuddy => + myDeptUserList.filter(deptUser => deptUser.seq === delbuddy) + .length === 0 + ); + } + + userSeqsForDelete = targetUserSeqs.filter(delbuddy => { + let exist = false; + for (const group of groupList) { + if ( + group.seq !== action.group.seq && + group.userSeqs.filter(v => v === delbuddy).length > 0 + ) { + exist = true; + break; + } + } + return !exist; + }); + + if (userSeqsForDelete.length > 0) { + // 즐겨찾기 해제. + userSeqsForDelete.forEach(buddySeq => { + this.store.dispatch( + buddyActions.update({ + req: { + seq: Number(buddySeq), + isFavorit: false + } + }) + ); + }); + + // 동료 삭제 + this.store.dispatch( + buddyActions.del({ req: { userSeqs: userSeqsForDelete } }) + ); + } + + return this.groupProtocolService + .del({ + groupSeq: action.group.seq + }) + .pipe( + map((res: GroupDelResponse) => { + return delSuccess({ res }); + }), + catchError(error => of(delFailure({ error }))) + ); + }) + ) + ); + + update$ = createEffect(() => + this.actions$.pipe( + ofType(update), + map(action => action.req), + withLatestFrom(this.store.pipe(select(GroupSelector.groupSyncDate))), + concatMap(([req, syncDate]) => + this.groupProtocolService.update2(req).pipe( + map((res: GroupUpdateResponse) => { + return groups({ + req: { + syncDate + } + }); + }), + catchError(error => of(updateFailure({ error }))) + ) + ) + ) + ); + + constructor( + private actions$: Actions, + private store: Store, + @Inject(_MODULE_CONFIG) private moduleConfig: ModuleConfig, + private syncProtocolService: SyncProtocolService, + private groupProtocolService: GroupProtocolService + ) {} +} diff --git a/projects/store-group/src/lib/store/group/reducers.ts b/projects/store-group/src/lib/store/group/reducers.ts new file mode 100644 index 0000000..3ceeb54 --- /dev/null +++ b/projects/store-group/src/lib/store/group/reducers.ts @@ -0,0 +1,48 @@ +import { createReducer, on } from '@ngrx/store'; + +import { GroupDetailData } from '@ucap/protocol-sync'; + +import { initialState, adapterGroup } from './state'; +import { groupsSuccess, createSuccess, delSuccess } from './actions'; + +export const reducer = createReducer( + initialState, + + on(groupsSuccess, (state, action) => { + return { + ...state, + groups: adapterGroup.upsertMany(action.groupList, { + ...state.groups, + syncDate: action.syncDate + }) + }; + }), + + /** 새 그룹 추가. */ + on(createSuccess, (state, action) => { + const res = action.res; + const groupInfo: GroupDetailData = { + seq: res.groupSeq, + name: res.groupName, + isActive: true, + userSeqs: [] + }; + return { + ...state, + groups: adapterGroup.addOne(groupInfo, { + ...state.groups + }) + }; + }), + + /** 그룹 삭제 */ + on(delSuccess, (state, action) => { + const res = action.res; + return { + ...state, + groups: adapterGroup.removeOne(res.groupSeq, { + ...state.groups + }) + }; + }) +); diff --git a/projects/store-group/src/lib/store/group/state.ts b/projects/store-group/src/lib/store/group/state.ts new file mode 100644 index 0000000..9a76a8d --- /dev/null +++ b/projects/store-group/src/lib/store/group/state.ts @@ -0,0 +1,41 @@ +import { Selector, createSelector } from '@ngrx/store'; +import { EntityState, createEntityAdapter } from '@ngrx/entity'; +import { GroupDetailData } from '@ucap/protocol-sync'; + +export interface GroupState extends EntityState { + syncDate: string; +} +export const adapterGroup = createEntityAdapter({ + selectId: groupDetailData => groupDetailData.seq +}); + +export interface State { + groups: GroupState; +} + +const groupInitialState: GroupState = adapterGroup.getInitialState({ + syncDate: '' +}); + +export const initialState: State = { + groups: groupInitialState +}; + +const { + selectAll: selectAllForGroup, + selectEntities: selectEntitiesForGroup, + selectIds: selectIdsForGroup, + selectTotal: selectTotalForGroup +} = adapterGroup.getSelectors(); + +export function selectors(selector: Selector) { + const selectGroups = createSelector(selector, (state: State) => state.groups); + + return { + groups: createSelector(selectGroups, selectAllForGroup), + groupSyncDate: createSelector( + selectGroups, + groupState => groupState.syncDate + ) + }; +} diff --git a/projects/store-group/src/lib/store/reducers.ts b/projects/store-group/src/lib/store/reducers.ts new file mode 100644 index 0000000..82c1e45 --- /dev/null +++ b/projects/store-group/src/lib/store/reducers.ts @@ -0,0 +1,13 @@ +import { combineReducers, Action } from '@ngrx/store'; + +import { reducer as CommonReducer } from './common/reducers'; +import { reducer as GroupReducer } from './group/reducers'; +import { reducer as BuddyReducer } from './buddy/reducers'; + +export function reducers(state: any | undefined, action: Action) { + return combineReducers({ + common: CommonReducer, + group: GroupReducer, + buddy: BuddyReducer + })(state, action); +} diff --git a/projects/store-group/src/lib/store/state.ts b/projects/store-group/src/lib/store/state.ts new file mode 100644 index 0000000..320926b --- /dev/null +++ b/projects/store-group/src/lib/store/state.ts @@ -0,0 +1,27 @@ +import { createFeatureSelector, createSelector } from '@ngrx/store'; + +import * as CommonState from './common/state'; +import * as GroupState from './group/state'; +import * as BuddyState from './buddy/state'; + +export const KEY_FEATURE = 'group'; + +export interface State { + common: CommonState.State; + group: GroupState.State; + buddy: BuddyState.State; +} + +export const Selector = createFeatureSelector(KEY_FEATURE); + +export const CommonSelector = CommonState.selectors( + createSelector(Selector, (state: State) => state.common) +); + +export const GroupSelector = GroupState.selectors( + createSelector(Selector, (state: State) => state.group) +); + +export const BuddySelector = BuddyState.selectors( + createSelector(Selector, (state: State) => state.buddy) +); diff --git a/projects/store-group/src/public-api.ts b/projects/store-group/src/public-api.ts new file mode 100644 index 0000000..6f40e9e --- /dev/null +++ b/projects/store-group/src/public-api.ts @@ -0,0 +1,15 @@ +/* + * Public API Surface of store-group + */ + +import * as CommonActions from './lib/store/common/actions'; +import * as GroupActions from './lib/store/group/actions'; +import * as BuddyActions from './lib/store/buddy/actions'; + +export * from './lib/config/module-config'; + +export { CommonActions, GroupActions, BuddyActions }; + +export * from './lib/store/state'; + +export * from './lib/group-store.module'; diff --git a/projects/store-group/src/test.ts b/projects/store-group/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/store-group/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/store-group/tsconfig.lib.json b/projects/store-group/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/store-group/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/store-group/tsconfig.lib.prod.json b/projects/store-group/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/store-group/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/store-group/tsconfig.spec.json b/projects/store-group/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/store-group/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/store-group/tslint.json b/projects/store-group/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/store-group/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/store-organization/README.md b/projects/store-organization/README.md new file mode 100644 index 0000000..285a3a5 --- /dev/null +++ b/projects/store-organization/README.md @@ -0,0 +1,24 @@ +# StoreOrganization + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project store-organization` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project store-organization`. +> Note: Don't forget to add `--project store-organization` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build store-organization` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build store-organization`, go to the dist folder `cd dist/store-organization` and run `npm publish`. + +## Running unit tests + +Run `ng test store-organization` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/store-organization/karma.conf.js b/projects/store-organization/karma.conf.js new file mode 100644 index 0000000..b0e5500 --- /dev/null +++ b/projects/store-organization/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/store-organization'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/store-organization/ng-package.json b/projects/store-organization/ng-package.json new file mode 100644 index 0000000..e310c66 --- /dev/null +++ b/projects/store-organization/ng-package.json @@ -0,0 +1,12 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/store-organization", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ngrx/store": "@ngrx/store", + "@ngrx/effects": "@ngrx/effects", + "@ucap/ng-protocol-query": "@ucap/ng-protocol-query" + } + } +} diff --git a/projects/store-organization/package.json b/projects/store-organization/package.json new file mode 100644 index 0000000..02f0c94 --- /dev/null +++ b/projects/store-organization/package.json @@ -0,0 +1,15 @@ +{ + "name": "@ucap/ng-store-organization", + "version": "0.0.2", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/core": "~0.0.1", + "@ucap/protocol-query": "~0.0.1", + "@ucap/ng-protocol-query": "~0.0.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/store-organization/src/lib/config/module-config.ts b/projects/store-organization/src/lib/config/module-config.ts new file mode 100644 index 0000000..d158cc6 --- /dev/null +++ b/projects/store-organization/src/lib/config/module-config.ts @@ -0,0 +1,4 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +// tslint:disable-next-line: no-empty-interface +export interface ModuleConfig extends CoreModuleConfig {} diff --git a/projects/store-organization/src/lib/config/token.ts b/projects/store-organization/src/lib/config/token.ts new file mode 100644 index 0000000..ecdc67f --- /dev/null +++ b/projects/store-organization/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-store-authentication config of module' +); diff --git a/projects/store-organization/src/lib/organization-store.module.ts b/projects/store-organization/src/lib/organization-store.module.ts new file mode 100644 index 0000000..8a0350d --- /dev/null +++ b/projects/store-organization/src/lib/organization-store.module.ts @@ -0,0 +1,31 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { StoreModule } from '@ngrx/store'; +import { EffectsModule } from '@ngrx/effects'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { KEY_FEATURE } from './store/state'; +import { effects } from './store/effects'; +import { reducers } from './store/reducers'; + +@NgModule({ + imports: [ + StoreModule.forFeature(KEY_FEATURE, reducers), + EffectsModule.forFeature([...effects]) + ] +}) +export class OrganizationStoreRootModule {} + +@NgModule({}) +export class OrganizationStoreModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: OrganizationStoreRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }] + }; + } +} diff --git a/projects/store-organization/src/lib/store/common/actions.ts b/projects/store-organization/src/lib/store/common/actions.ts new file mode 100644 index 0000000..38cd23d --- /dev/null +++ b/projects/store-organization/src/lib/store/common/actions.ts @@ -0,0 +1,3 @@ +import { createAction } from '@ngrx/store'; + +export const init = createAction('[ucap::organization::common] init'); diff --git a/projects/store-organization/src/lib/store/common/effects.ts b/projects/store-organization/src/lib/store/common/effects.ts new file mode 100644 index 0000000..4306694 --- /dev/null +++ b/projects/store-organization/src/lib/store/common/effects.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +import { Actions } from '@ngrx/effects'; + +@Injectable() +export class Effects { + constructor(private actions$: Actions) {} +} diff --git a/projects/store-organization/src/lib/store/common/reducers.ts b/projects/store-organization/src/lib/store/common/reducers.ts new file mode 100644 index 0000000..c02394c --- /dev/null +++ b/projects/store-organization/src/lib/store/common/reducers.ts @@ -0,0 +1,5 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState } from './state'; + +export const reducer = createReducer(initialState); diff --git a/projects/store-organization/src/lib/store/common/state.ts b/projects/store-organization/src/lib/store/common/state.ts new file mode 100644 index 0000000..aacfe4f --- /dev/null +++ b/projects/store-organization/src/lib/store/common/state.ts @@ -0,0 +1,10 @@ +import { Selector } from '@ngrx/store'; + +// tslint:disable-next-line: no-empty-interface +export interface State {} + +export const initialState: State = {}; + +export function selectors(selector: Selector) { + return {}; +} diff --git a/projects/store-organization/src/lib/store/department/actions.ts b/projects/store-organization/src/lib/store/department/actions.ts new file mode 100644 index 0000000..abb5f5f --- /dev/null +++ b/projects/store-organization/src/lib/store/department/actions.ts @@ -0,0 +1,52 @@ +import { createAction, props } from '@ngrx/store'; + +import { + DeptRequest, + DeptInfo, + DeptUserRequest, + UserInfoSS +} from '@ucap/protocol-query'; + +/** + * retrieve department information list + */ +export const dept = createAction( + '[ucap::organization::department] dept', + props<{ req: DeptRequest }>() +); +/** + * Success of dept request + */ +export const deptSuccess = createAction( + '[ucap::organization::department] dept Success', + props<{ departmentInfoList: DeptInfo[] }>() +); +/** + * Failure of dept request + */ +export const deptFailure = createAction( + '[ucap::organization::department] dept Failure', + props<{ error: any }>() +); + +/** + * retrieve my department information list + */ +export const myDeptUser = createAction( + '[ucap::organization::department] myDeptUser', + props<{ req: DeptUserRequest }>() +); +/** + * Success of dept request + */ +export const myDeptUserSuccess = createAction( + '[ucap::organization::department] myDeptUser Success', + props<{ userInfos: UserInfoSS[] }>() +); +/** + * Failure of dept request + */ +export const myDeptUserFailure = createAction( + '[ucap::organization::department] myDeptUser Failure', + props<{ error: any }>() +); diff --git a/projects/store-organization/src/lib/store/department/effects.ts b/projects/store-organization/src/lib/store/department/effects.ts new file mode 100644 index 0000000..e22c8e9 --- /dev/null +++ b/projects/store-organization/src/lib/store/department/effects.ts @@ -0,0 +1,72 @@ +import { of } from 'rxjs'; +import { catchError, map, switchMap } from 'rxjs/operators'; + +import { Injectable } from '@angular/core'; + +import { Store } from '@ngrx/store'; +import { Actions, ofType, createEffect } from '@ngrx/effects'; + +import { QueryProtocolService } from '@ucap/ng-protocol-query'; + +import { + dept, + deptSuccess, + deptFailure, + myDeptUserSuccess, + myDeptUser, + myDeptUserFailure +} from './actions'; + +@Injectable() +export class Effects { + dept$ = createEffect(() => { + return this.actions$.pipe( + ofType(dept), + map(action => action.req), + switchMap(req => { + return this.queryProtocolService.dept(req).pipe( + map(res => { + const departmentInfoList = res.departmentInfoList.sort((a, b) => + a.order < b.order ? -1 : a.order > b.order ? 1 : 0 + ); + + return deptSuccess({ departmentInfoList }); + }), + catchError(error => of(deptFailure({ error }))) + ); + }) + ); + }); + + myDeptUser$ = createEffect(() => { + return this.actions$.pipe( + ofType(myDeptUser), + map(action => action.req), + switchMap(req => { + return this.queryProtocolService.deptUser(req).pipe( + map(res => { + const userInfos = res.userInfos.sort((a, b) => + a.order < b.order + ? -1 + : a.order > b.order + ? 1 + : a.name < b.name + ? -1 + : a.name > b.name + ? 1 + : 0 + ); + return myDeptUserSuccess({ userInfos }); + }), + catchError(error => of(myDeptUserFailure({ error }))) + ); + }) + ); + }); + + constructor( + private actions$: Actions, + private store: Store, + private queryProtocolService: QueryProtocolService + ) {} +} diff --git a/projects/store-organization/src/lib/store/department/reducers.ts b/projects/store-organization/src/lib/store/department/reducers.ts new file mode 100644 index 0000000..8cbd78f --- /dev/null +++ b/projects/store-organization/src/lib/store/department/reducers.ts @@ -0,0 +1,22 @@ +import { createReducer, on } from '@ngrx/store'; + +import { deptSuccess, myDeptUserSuccess } from './actions'; +import { initialState } from './state'; + +export const reducer = createReducer( + initialState, + + on(deptSuccess, (state, action) => { + return { + ...state, + departmentInfoList: action.departmentInfoList + }; + }), + + on(myDeptUserSuccess, (state, action) => { + return { + ...state, + myDepartmentUserInfoList: action.userInfos + }; + }) +); diff --git a/projects/store-organization/src/lib/store/department/state.ts b/projects/store-organization/src/lib/store/department/state.ts new file mode 100644 index 0000000..d2ffffd --- /dev/null +++ b/projects/store-organization/src/lib/store/department/state.ts @@ -0,0 +1,26 @@ +import { Selector, createSelector } from '@ngrx/store'; +import { DeptInfo, UserInfoSS } from '@ucap/protocol-query'; + +export interface State { + departmentInfoList: DeptInfo[] | null; + + myDepartmentUserInfoList: UserInfoSS[] | null; +} + +export const initialState: State = { + departmentInfoList: null, + myDepartmentUserInfoList: null +}; + +export function selectors(selector: Selector) { + return { + departmentInfoList: createSelector( + selector, + (state: State) => state.departmentInfoList + ), + myDepartmentUserInfoList: createSelector( + selector, + (state: State) => state.myDepartmentUserInfoList + ) + }; +} diff --git a/projects/store-organization/src/lib/store/effects.ts b/projects/store-organization/src/lib/store/effects.ts new file mode 100644 index 0000000..4c78648 --- /dev/null +++ b/projects/store-organization/src/lib/store/effects.ts @@ -0,0 +1,6 @@ +import { Type } from '@angular/core'; + +import { Effects as CommonEffects } from './common/effects'; +import { Effects as DepartmentEffects } from './department/effects'; + +export const effects: Type[] = [CommonEffects, DepartmentEffects]; diff --git a/projects/store-organization/src/lib/store/reducers.ts b/projects/store-organization/src/lib/store/reducers.ts new file mode 100644 index 0000000..fcffd12 --- /dev/null +++ b/projects/store-organization/src/lib/store/reducers.ts @@ -0,0 +1,11 @@ +import { combineReducers, Action } from '@ngrx/store'; + +import { reducer as CommonReducer } from './common/reducers'; +import { reducer as DepartmentReducer } from './department/reducers'; + +export function reducers(state: any | undefined, action: Action) { + return combineReducers({ + common: CommonReducer, + department: DepartmentReducer + })(state, action); +} diff --git a/projects/store-organization/src/lib/store/state.ts b/projects/store-organization/src/lib/store/state.ts new file mode 100644 index 0000000..c837585 --- /dev/null +++ b/projects/store-organization/src/lib/store/state.ts @@ -0,0 +1,21 @@ +import { createFeatureSelector, createSelector } from '@ngrx/store'; + +import * as CommonState from './common/state'; +import * as DepartmentState from './department/state'; + +export const KEY_FEATURE = 'organization'; + +export interface State { + common: CommonState.State; + department: DepartmentState.State; +} + +export const Selector = createFeatureSelector(KEY_FEATURE); + +export const CommonSelector = CommonState.selectors( + createSelector(Selector, (state: State) => state.common) +); + +export const DepartmentSelector = DepartmentState.selectors( + createSelector(Selector, (state: State) => state.department) +); diff --git a/projects/store-organization/src/public-api.ts b/projects/store-organization/src/public-api.ts new file mode 100644 index 0000000..c2b1ce9 --- /dev/null +++ b/projects/store-organization/src/public-api.ts @@ -0,0 +1,14 @@ +/* + * Public API Surface of store-organization + */ + +import * as CommonActions from './lib/store/common/actions'; +import * as DepartmentActions from './lib/store/department/actions'; + +export * from './lib/config/module-config'; + +export { CommonActions, DepartmentActions }; + +export * from './lib/store/state'; + +export * from './lib/organization-store.module'; diff --git a/projects/store-organization/src/test.ts b/projects/store-organization/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/store-organization/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/store-organization/tsconfig.lib.json b/projects/store-organization/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/store-organization/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/store-organization/tsconfig.lib.prod.json b/projects/store-organization/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/store-organization/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/store-organization/tsconfig.spec.json b/projects/store-organization/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/store-organization/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/store-organization/tslint.json b/projects/store-organization/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/store-organization/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/ui-authentication/README.md b/projects/ui-authentication/README.md new file mode 100644 index 0000000..a67f780 --- /dev/null +++ b/projects/ui-authentication/README.md @@ -0,0 +1,25 @@ +# UiOrganization + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project ui-authentication` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui-authentication`. + +> Note: Don't forget to add `--project ui-authentication` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build ui-authentication` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build ui-authentication`, go to the dist folder `cd dist/ui-authentication` and run `npm publish`. + +## Running unit tests + +Run `ng test ui-authentication` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/ui-authentication/karma.conf.js b/projects/ui-authentication/karma.conf.js new file mode 100644 index 0000000..fe81e78 --- /dev/null +++ b/projects/ui-authentication/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function(config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/ui-authentication'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/ui-authentication/ng-package.json b/projects/ui-authentication/ng-package.json new file mode 100644 index 0000000..a65bb52 --- /dev/null +++ b/projects/ui-authentication/ng-package.json @@ -0,0 +1,12 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ui-authentication", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/pi": "@ucap/pi", + "@ucap/ng-i18n": "@ucap/ng-i18n", + "@ucap/ng-ui": "@ucap/ng-ui" + } + } +} diff --git a/projects/ui-authentication/package.json b/projects/ui-authentication/package.json new file mode 100644 index 0000000..651c45d --- /dev/null +++ b/projects/ui-authentication/package.json @@ -0,0 +1,17 @@ +{ + "name": "@ucap/ng-ui-authentication", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/cdk": "^9.0.0", + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@angular/material": "^9.0.0", + "@ucap/core": "~0.0.1", + "@ucap/ng-i18n": "~0.0.1", + "@ucap/ng-ui": "~0.0.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/ui-authentication/src/lib/authentication-ui.module.ts b/projects/ui-authentication/src/lib/authentication-ui.module.ts new file mode 100644 index 0000000..795d687 --- /dev/null +++ b/projects/ui-authentication/src/lib/authentication-ui.module.ts @@ -0,0 +1,73 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; + +import { FlexLayoutModule } from '@angular/flex-layout'; + +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; + +import { UiModule } from '@ucap/ng-ui'; + +import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { ChangePasswordComponent } from './components/change-password.component'; +import { LoginComponent } from './components/login.component'; + +const COMPONENTS = [ChangePasswordComponent, LoginComponent]; +const DIALOGS = []; +const PIPES = []; +const DIRECTIVES = []; +const SERVICES = []; + +@NgModule({ + declarations: [], + imports: [], + exports: [] +}) +export class AuthenticationUiRootModule {} + +@NgModule({ + imports: [ + CommonModule, + ReactiveFormsModule, + + FlexLayoutModule, + + MatButtonModule, + MatCheckboxModule, + MatFormFieldModule, + MatIconModule, + MatInputModule, + MatSelectModule, + + I18nModule, + UiModule + ], + exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + entryComponents: [...DIALOGS], + providers: [ + { + provide: UCAP_I18N_NAMESPACE, + useValue: ['authentication'] + } + ] +}) +export class AuthenticationUiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: AuthenticationUiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/ui-authentication/src/lib/components/change-password.component.html b/projects/ui-authentication/src/lib/components/change-password.component.html new file mode 100644 index 0000000..2697856 --- /dev/null +++ b/projects/ui-authentication/src/lib/components/change-password.component.html @@ -0,0 +1,155 @@ +
+
+ + {{ 'accounts.fieldCurrentPassword' | ucapI18n }} + + + + {{ 'accounts.fieldNewPassword' | ucapI18n }} + + + + {{ 'accounts.fieldNewPasswordConfirm' | ucapI18n }} + + + +
+ + {{ 'accounts.errors.requireCurrentPassword' | ucapI18n }} + + + {{ 'accounts.errors.notSameWithCurrentPassword' | ucapI18n }} + + + + {{ 'accounts.errors.requireNewPassword' | ucapI18n }} + + + {{ 'accounts.errors.sameWithCurrentPassword' | ucapI18n }} + + + + + {{ 'accounts.errors.notContainSpacesForPassword' | ucapI18n }} + + + {{ 'accounts.errors.notContainUseridForPassword' | ucapI18n }} + + + {{ 'accounts.errors.notContainPhonenumberForPassword' | ucapI18n }} + + + {{ + 'accounts.errors.notAllowedAlphaNumOver3TimesForPassword' + | ucapI18n + }} + + + {{ + 'accounts.errors.notAllowedConsecutiveAlphaNumOver3TimesForPassword' + | ucapI18n + }} + + + {{ + 'accounts.errors.notAllowedConsecutiveAlphaNumOver3TimesForPassword' + | ucapI18n + }} + + + {{ 'accounts.errors.notSatisfiedCombineForPassword' | ucapI18n }} + + + {{ + 'accounts.errors.minLengthCombineForPassword' + | ucapI18n + : { + countOfCombine: newLoginPwFormControl.getError( + 'ucapPassword' + ).result.extra.combinationCount, + lengthOfPassword: newLoginPwFormControl.getError( + 'ucapPassword' + ).result.extra.minPwLen + } + }} + + + + + {{ 'accounts.errors.requireNewPassword' | ucapI18n }} + + + {{ 'accounts.errors.notSameWithNewPassword' | ucapI18n }} + +
+ + +
+
diff --git a/projects/ui-authentication/src/lib/components/change-password.component.scss b/projects/ui-authentication/src/lib/components/change-password.component.scss new file mode 100644 index 0000000..b8e7250 --- /dev/null +++ b/projects/ui-authentication/src/lib/components/change-password.component.scss @@ -0,0 +1,65 @@ +.change-password-form { + position: relative; + width: 100%; + min-width: 380px; + padding: 0px; + text-align: center; + + .mat-title { + margin: 16px 0 32px 0; + } + + form { + width: 100%; + text-align: left; + + mat-form-field { + width: 100%; + } + + .error-container { + height: 80px; + overflow: auto; + } + + .submit-button { + width: 100%; + margin: 0 auto; + display: block; + } + } + + .separator { + font-size: 15px; + font-weight: 600; + margin: 24px auto; + position: relative; + overflow: hidden; + width: 100px; + + .text { + display: inline-flex; + position: relative; + padding: 0 8px; + z-index: 9999; + + &:before, + &:after { + content: ''; + display: block; + width: 30px; + position: absolute; + top: 10px; + border-top: 1px solid; + } + + &:before { + right: 100%; + } + + &:after { + left: 100%; + } + } + } +} diff --git a/projects/ui-authentication/src/lib/components/change-password.component.spec.ts b/projects/ui-authentication/src/lib/components/change-password.component.spec.ts new file mode 100644 index 0000000..8fcfab0 --- /dev/null +++ b/projects/ui-authentication/src/lib/components/change-password.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ChangePasswordComponent } from './change-password.component'; + +describe('Account::ChangePasswordComponent', () => { + let component: ChangePasswordComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ChangePasswordComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ChangePasswordComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-authentication/src/lib/components/change-password.component.ts b/projects/ui-authentication/src/lib/components/change-password.component.ts new file mode 100644 index 0000000..c084e31 --- /dev/null +++ b/projects/ui-authentication/src/lib/components/change-password.component.ts @@ -0,0 +1,154 @@ +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ChangeDetectorRef +} from '@angular/core'; +import { + FormControl, + FormGroup, + Validators, + ValidatorFn, + AbstractControl, + ValidationErrors, + FormBuilder +} from '@angular/forms'; +import { + PasswordUtil, + PasswordValidationOption, + PasswordValidationResult +} from '@ucap/pi'; + +export function ucapPassword(option: PasswordValidationOption): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + const result = PasswordUtil.validate(control.value, option); + return PasswordValidationResult.Valid !== result.code + ? { ucapPassword: { result } } + : null; + }; +} + +export function ucapPasswordSame(value: string): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + return !!value && value !== PasswordUtil.encrypt(control.value) + ? { ucapPasswordSame: true } + : null; + }; +} + +export function ucapNotSameWith(targetControl: AbstractControl): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + return !!targetControl && + (targetControl.value as string) === (control.value as string) + ? { ucapNotSameWith: true } + : null; + }; +} + +export function ucapSameWith(targetControl: AbstractControl): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + return !!targetControl && targetControl.value !== control.value + ? { ucapSameWith: true } + : null; + }; +} + +export function ucapNotSame(value: string | number): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + return !!value && value === control.value ? { ucapNotSame: true } : null; + }; +} + +export function ucapSame(value: string | number): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + return !!value && value !== control.value ? { ucapSame: true } : null; + }; +} + +@Component({ + selector: 'ucap-authentication-change-password', + templateUrl: './change-password.component.html', + styleUrls: ['./change-password.component.scss'] +}) +export class ChangePasswordComponent implements OnInit { + @Input() + loginId: string; + + @Input() + phoneNumber: string; + + @Input() + encryptedLoginPw: string; + + @Output() + changePassword = new EventEmitter<{ + currentLoginPw: string; + newLoginPw: string; + }>(); + + changePasswordForm: FormGroup; + currentLoginPwFormControl = new FormControl(''); + newLoginPwFormControl = new FormControl(''); + newConfirmLoginPwFormControl = new FormControl(''); + + PasswordValidationResult = PasswordValidationResult; + + constructor( + private formBuilder: FormBuilder, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit() { + const currentLoginPwValidators: ValidatorFn[] = [Validators.required]; + if (!!this.encryptedLoginPw) { + currentLoginPwValidators.push(ucapPasswordSame(this.encryptedLoginPw)); + } + this.currentLoginPwFormControl.setValidators(currentLoginPwValidators); + + let validateOption: PasswordValidationOption = {}; + if (!!this.loginId) { + validateOption = { + ...validateOption, + userId: this.loginId + }; + } + if (!!this.phoneNumber) { + validateOption = { + ...validateOption, + phoneNumber: this.phoneNumber + }; + } + + const newLoginPwValidators: ValidatorFn[] = [ + Validators.required, + ucapNotSameWith(this.currentLoginPwFormControl), + ucapPassword(validateOption) + ]; + this.newLoginPwFormControl.setValidators(newLoginPwValidators); + + const newConfirmLoginPwValidators: ValidatorFn[] = [ + Validators.required, + ucapSameWith(this.newLoginPwFormControl) + ]; + this.newConfirmLoginPwFormControl.setValidators( + newConfirmLoginPwValidators + ); + + this.changePasswordForm = this.formBuilder.group({ + currentLoginPwFormControl: this.currentLoginPwFormControl, + newLoginPwFormControl: this.newLoginPwFormControl, + newConfirmLoginPwFormControl: this.newConfirmLoginPwFormControl + }); + } + + onClickChangePassword() { + this.changePassword.emit({ + currentLoginPw: PasswordUtil.encrypt( + this.currentLoginPwFormControl.value + ), + newLoginPw: PasswordUtil.encrypt(this.newLoginPwFormControl.value) + }); + } +} diff --git a/projects/ui-authentication/src/lib/components/login.component.html b/projects/ui-authentication/src/lib/components/login.component.html new file mode 100644 index 0000000..ebced4f --- /dev/null +++ b/projects/ui-authentication/src/lib/components/login.component.html @@ -0,0 +1,158 @@ + diff --git a/projects/ui-authentication/src/lib/components/login.component.scss b/projects/ui-authentication/src/lib/components/login.component.scss new file mode 100644 index 0000000..71d36d2 --- /dev/null +++ b/projects/ui-authentication/src/lib/components/login.component.scss @@ -0,0 +1,222 @@ +$desktop-l-width: 1440px; +$tablet-l-width: 1024px; +$tablet-s-width: 768px; +$mob-l-width: 640px; +$login-max-height: 800px; + +@mixin desktop-m { + @media screen and (max-width: #{$desktop-l-width}) { + @content; + } +} + +// 태블릿 +@mixin tab { + @media screen and (max-width: #{$tablet-l-width}) { + @content; + } +} + +// 모바일 large +@mixin mob-l { + @media screen and (max-width: #{$mob-l-width}) { + @content; + } +} + +.login-form { + position: relative; + transform: scale(1); + width: 100%; + min-width: 100%; + top: 0; + right: 0; + text-align: center; + background-color: rgba(255, 255, 255, 1); + border-radius: 0px; + font-size: 14px; + + .mat-title { + margin: 10px 0 10px 0; + text-indent: -10000000px; + width: 120px; + height: 120px; + background-repeat: no-repeat; + display: inline-flex; + background-size: 100% auto; + flex: 1 1 auto; + background-position-x: center; + } + + form { + width: 100%; + text-align: left; + + .input-lineless { + background-color: #e0e0e0; + padding: 14px 20px; + margin-top: 6px; + display: flex; + flex-flow: row; + @media screen and (max-width: #{$tablet-s-width}) { + padding: 8px 20px; + } + .icon-img { + width: 20px; + height: 20px; + margin-right: 10px; + svg { + width: 100%; + height: 100%; + } + } + + mat-form-field { + width: 100%; + color: #333333; + &.login-pw { + //margin-top: 10px; + @media screen and (max-width: #{$tablet-s-width}) { + margin-top: 0; + } + } + } + } + + mat-checkbox { + margin: 0; + } + + .remember-forgot-password { + font-size: 13px; + + .remember-me { + } + + .auto-login { + font-size: 0.9em; + font-weight: 600; + margin-bottom: 2vh; + } + } + + .submit-button { + width: 100%; + margin: 0 auto; + margin: 20px 0 10px; + display: block; + border-radius: 0; + line-height: 50px; + font-size: 1.1em; + @media screen and (max-width: #{$tablet-s-width}) { + line-height: 38px; + } + } + } + + .register { + margin: 32px auto 24px auto; + font-weight: 600; + + .text { + margin-right: 8px; + } + } + + .separator { + font-size: 15px; + font-weight: 600; + margin: 24px auto; + position: relative; + overflow: hidden; + width: 100px; + + .text { + display: inline-flex; + position: relative; + padding: 0 8px; + z-index: 9999; + + &:before, + &:after { + content: ''; + display: block; + width: 30px; + position: absolute; + top: 10px; + border-top: 1px solid; + } + + &:before { + right: 100%; + } + + &:after { + left: 100%; + } + } + } + .policy { + cursor: pointer; + position: absolute; + bottom: 2vh; + display: block; + background-color: #58b0b1; + width: 100%; + color: #ffffff; + font-size: 0.86em; + display: flex; + flex-flow: row; + align-items: center; + &:hover { + opacity: 1; + } + .icon-img { + padding: 12px 10px; + width: 50px; + color: #ffffff; + padding-right: 10px; + border-right: 1px solid rgba(255, 255, 255, 0.7); + flex: 0 0 auto; + @media screen and (max-width: #{$tablet-s-width}) { + padding: 9px 10px; + } + } + a { + margin-left: 10px; + } + } + button { + &.google, + &.facebook { + width: 192px; + text-transform: none; + color: #ffffff; + font-size: 13px; + } + } +} + +@include tab { + .login-form { + font-size: 0.9em; + .mat-title { + background-size: 90% auto; + } + .mat-form-field .mat-form-field-infix input { + font-size: 0.9em; + } + .policy { + position: absolute; + bottom: 0; + display: flex; + flex-flow: row; + padding: 0; + border-radius: 0; + width: 100%; + font-size: 0.9em; + padding: 0px; + line-height: 3em; + } + } +} diff --git a/projects/ui-authentication/src/lib/components/login.component.spec.ts b/projects/ui-authentication/src/lib/components/login.component.spec.ts new file mode 100644 index 0000000..51f703f --- /dev/null +++ b/projects/ui-authentication/src/lib/components/login.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('ui::authentication::LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [LoginComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-authentication/src/lib/components/login.component.ts b/projects/ui-authentication/src/lib/components/login.component.ts new file mode 100644 index 0000000..08cf1d3 --- /dev/null +++ b/projects/ui-authentication/src/lib/components/login.component.ts @@ -0,0 +1,127 @@ +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ViewChild, + ElementRef, + ChangeDetectorRef +} from '@angular/core'; +import { + FormGroup, + FormBuilder, + Validators, + FormControl, + ValidatorFn +} from '@angular/forms'; +import { Company } from '@ucap/api-external'; + +@Component({ + selector: 'ucap-authentication-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'] +}) +export class LoginComponent implements OnInit { + @Input() + companyList: Company[]; + @Input() + curCompanyCode: string; + @Input() + loginBtnText: string; + @Input() + loginBtnEnable: boolean; + @Input() + notiText: string; + + @Input() + companyCode: string; + @Input() + loginId: string; + @Input() + rememberMe: boolean; + @Input() + autoLogin: boolean; + + @Input() + useRememberMe: boolean; + @Input() + useAutoLogin: boolean; + + @Output() + login = new EventEmitter<{ + companyCode: string; + loginId: string; + loginPw: string; + rememberMe: boolean; + autoLogin: boolean; + notValid: () => void; + }>(); + @Output() + notiClick = new EventEmitter(); + + @ViewChild('loginPw', { static: true }) loginPwElementRef: ElementRef; + + loginForm: FormGroup; + companyCodeFormControl = new FormControl(''); + loginIdFormControl = new FormControl(''); + loginPwFormControl = new FormControl(''); + + constructor( + private formBuilder: FormBuilder, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit() { + const companyCodeValidators: ValidatorFn[] = [Validators.required]; + this.companyCodeFormControl.setValidators(companyCodeValidators); + if (!!this.curCompanyCode) { + this.companyCodeFormControl.setValue(this.curCompanyCode); + } + const loginIdValidators: ValidatorFn[] = [Validators.required]; + this.loginIdFormControl.setValidators(loginIdValidators); + if (!!this.loginId) { + this.loginIdFormControl.setValue(this.loginId); + } + const loginPwValidators: ValidatorFn[] = [Validators.required]; + this.loginPwFormControl.setValidators(loginPwValidators); + + this.loginForm = this.formBuilder.group({ + companyCodeFormControl: this.companyCodeFormControl, + loginIdFormControl: this.loginIdFormControl, + loginPwFormControl: this.loginPwFormControl, + rememberMe: [false], + autoLogin: [false] + }); + + if (!!this.rememberMe && this.rememberMe) { + this.loginForm.get('rememberMe').setValue(true); + } + + if (!!this.autoLogin && this.autoLogin) { + this.loginForm.get('autoLogin').setValue(true); + } + + if (!this.loginBtnText || this.loginBtnText.trim().length === 0) { + this.loginBtnText = 'LOGIN'; + } + this.changeDetectorRef.detectChanges(); + } + + onClickLogin() { + this.login.emit({ + companyCode: this.loginForm.get('companyCodeFormControl').value, + loginId: this.loginForm.get('loginIdFormControl').value, + loginPw: this.loginForm.get('loginPwFormControl').value, + rememberMe: this.loginForm.get('rememberMe').value, + autoLogin: this.loginForm.get('autoLogin').value, + notValid: () => { + this.loginPwElementRef.nativeElement.focus(); + } + }); + } + + onClickNoti(): void { + this.notiClick.emit(); + } +} diff --git a/projects/ui-authentication/src/lib/config/module-config.ts b/projects/ui-authentication/src/lib/config/module-config.ts new file mode 100644 index 0000000..d158cc6 --- /dev/null +++ b/projects/ui-authentication/src/lib/config/module-config.ts @@ -0,0 +1,4 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +// tslint:disable-next-line: no-empty-interface +export interface ModuleConfig extends CoreModuleConfig {} diff --git a/projects/ui-authentication/src/lib/config/token.ts b/projects/ui-authentication/src/lib/config/token.ts new file mode 100644 index 0000000..82c5a03 --- /dev/null +++ b/projects/ui-authentication/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ui-authentication config of module' +); diff --git a/projects/ui-authentication/src/public-api.ts b/projects/ui-authentication/src/public-api.ts new file mode 100644 index 0000000..3de17ef --- /dev/null +++ b/projects/ui-authentication/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of ui-authentication + */ + +export * from './lib/config/module-config'; + +export * from './lib/authentication-ui.module'; diff --git a/projects/ui-authentication/src/test.ts b/projects/ui-authentication/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/ui-authentication/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/ui-authentication/tsconfig.lib.json b/projects/ui-authentication/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/ui-authentication/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/ui-authentication/tsconfig.lib.prod.json b/projects/ui-authentication/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/ui-authentication/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/ui-authentication/tsconfig.spec.json b/projects/ui-authentication/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/ui-authentication/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/ui-authentication/tslint.json b/projects/ui-authentication/tslint.json new file mode 100644 index 0000000..738930e --- /dev/null +++ b/projects/ui-authentication/tslint.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "ucapAuthentication", + "camelCase" + ], + "component-selector": [true, "element", "ucap-authentication", "kebab-case"] + } +} diff --git a/projects/ui-organization/README.md b/projects/ui-organization/README.md new file mode 100644 index 0000000..708739d --- /dev/null +++ b/projects/ui-organization/README.md @@ -0,0 +1,24 @@ +# UiOrganization + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project ui-organization` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui-organization`. +> Note: Don't forget to add `--project ui-organization` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build ui-organization` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build ui-organization`, go to the dist folder `cd dist/ui-organization` and run `npm publish`. + +## Running unit tests + +Run `ng test ui-organization` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/ui-organization/karma.conf.js b/projects/ui-organization/karma.conf.js new file mode 100644 index 0000000..92c3662 --- /dev/null +++ b/projects/ui-organization/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/ui-organization'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/ui-organization/ng-package.json b/projects/ui-organization/ng-package.json new file mode 100644 index 0000000..57cb8cc --- /dev/null +++ b/projects/ui-organization/ng-package.json @@ -0,0 +1,10 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ui-organization", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/ui": "@ucap/ui" + } + } +} diff --git a/projects/ui-organization/package.json b/projects/ui-organization/package.json new file mode 100644 index 0000000..4bd97bf --- /dev/null +++ b/projects/ui-organization/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-ui-organization", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/cdk": "^9.0.0", + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@angular/material": "^9.0.0", + "@ucap/core": "~0.0.1", + "@ucap/ng-ui": "~0.0.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/ui-organization/src/lib/config/module-config.ts b/projects/ui-organization/src/lib/config/module-config.ts new file mode 100644 index 0000000..d158cc6 --- /dev/null +++ b/projects/ui-organization/src/lib/config/module-config.ts @@ -0,0 +1,4 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +// tslint:disable-next-line: no-empty-interface +export interface ModuleConfig extends CoreModuleConfig {} diff --git a/projects/ui-organization/src/lib/config/token.ts b/projects/ui-organization/src/lib/config/token.ts new file mode 100644 index 0000000..9a5701b --- /dev/null +++ b/projects/ui-organization/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ui-organization config of module' +); diff --git a/projects/ui-organization/src/lib/organization-ui.module.ts b/projects/ui-organization/src/lib/organization-ui.module.ts new file mode 100644 index 0000000..5e68ef6 --- /dev/null +++ b/projects/ui-organization/src/lib/organization-ui.module.ts @@ -0,0 +1,37 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { UiModule } from '@ucap/ng-ui'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +const COMPONENTS = []; +const DIALOGS = []; +const PIPES = []; +const DIRECTIVES = []; +const SERVICES = []; + +@NgModule({ + declarations: [], + imports: [], + exports: [] +}) +export class OrganizationUiRootModule {} + +@NgModule({ + imports: [CommonModule, UiModule], + exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + entryComponents: [...DIALOGS] +}) +export class OrganizationUiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: OrganizationUiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/ui-organization/src/public-api.ts b/projects/ui-organization/src/public-api.ts new file mode 100644 index 0000000..c826aac --- /dev/null +++ b/projects/ui-organization/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of ui-organization + */ + +export * from './lib/config/module-config'; + +export * from './lib/organization-ui.module'; diff --git a/projects/ui-organization/src/test.ts b/projects/ui-organization/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/ui-organization/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/ui-organization/tsconfig.lib.json b/projects/ui-organization/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/ui-organization/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/ui-organization/tsconfig.lib.prod.json b/projects/ui-organization/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/ui-organization/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/ui-organization/tsconfig.spec.json b/projects/ui-organization/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/ui-organization/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/ui-organization/tslint.json b/projects/ui-organization/tslint.json new file mode 100644 index 0000000..ca80d1a --- /dev/null +++ b/projects/ui-organization/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "ucapOrganization", + "camelCase" + ], + "component-selector": [ + true, + "element", + "ucap-organization", + "kebab-case" + ] + } +} diff --git a/projects/ui-skin-default/README.md b/projects/ui-skin-default/README.md new file mode 100644 index 0000000..7824743 --- /dev/null +++ b/projects/ui-skin-default/README.md @@ -0,0 +1,24 @@ +# UiSkinDefault + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.6. + +## Code scaffolding + +Run `ng generate component component-name --project ui-skin-default` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui-skin-default`. +> Note: Don't forget to add `--project ui-skin-default` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build ui-skin-default` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build ui-skin-default`, go to the dist folder `cd dist/ui-skin-default` and run `npm publish`. + +## Running unit tests + +Run `ng test ui-skin-default` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/ui-skin-default/karma.conf.js b/projects/ui-skin-default/karma.conf.js new file mode 100644 index 0000000..912d8e8 --- /dev/null +++ b/projects/ui-skin-default/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/ui-skin-default'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/ui-skin-default/ng-package.json b/projects/ui-skin-default/ng-package.json new file mode 100644 index 0000000..46a522d --- /dev/null +++ b/projects/ui-skin-default/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ui-skin-default", + "lib": { + "entryFile": "src/public-api.ts", + "styleIncludePaths": ["./src/assets/scss"] + } +} diff --git a/projects/ui-skin-default/package.json b/projects/ui-skin-default/package.json new file mode 100644 index 0000000..931d710 --- /dev/null +++ b/projects/ui-skin-default/package.json @@ -0,0 +1,8 @@ +{ + "name": "@ucap/ng-ui-skin-default", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": {} +} diff --git a/projects/ui-skin-default/scss-bundle.config.json b/projects/ui-skin-default/scss-bundle.config.json new file mode 100644 index 0000000..ca5a6bb --- /dev/null +++ b/projects/ui-skin-default/scss-bundle.config.json @@ -0,0 +1,11 @@ +{ + "bundlerOptions": { + "entryFile": "./projects/ui-skin-default/src/assets/scss/_skin.scss", + "rootDir": "./projects/ui-skin-default/src/assets/scss/", + "outFile": "./dist/ui-skin-default/_skin.scss", + "dedupeGlobs": [], + "includePaths": [], + "ignoreImports": ["~@angular/.*"], + "logLevel": "silent" + } +} diff --git a/projects/ui-skin-default/src/assets/scss/_skin.scss b/projects/ui-skin-default/src/assets/scss/_skin.scss new file mode 100644 index 0000000..35905a7 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/_skin.scss @@ -0,0 +1,22 @@ +// Material theming tools +@import '~@angular/material/theming'; + +// Include core Angular Material styles +@include mat-core(); + +// Partials +@import 'partials/breakpoints'; +@import 'partials/main-frame'; +@import 'partials/forms'; +@import 'partials/general'; +@import 'partials/helpers'; +@import 'partials/icons'; +@import 'partials/normalize'; +@import 'partials/scrollbars'; +@import 'partials/paginator'; +@import 'partials/presence'; +@import 'partials/search-frame'; +@import 'partials/list-item'; +@import 'partials/dialogs'; + +@import 'file-icon/icons'; diff --git a/projects/ui-skin-default/src/assets/scss/file-icon/_fonts.scss b/projects/ui-skin-default/src/assets/scss/file-icon/_fonts.scss new file mode 100644 index 0000000..555ba22 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/file-icon/_fonts.scss @@ -0,0 +1,27 @@ +// +// Import icons +// + +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/materialicons/v29/2fcrYFNaTjcS6g4U3t-Y5ZjZjT5FdEJ140U2DJYC3mY.woff2) + format('woff2'); +} + +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-feature-settings: 'liga'; + -webkit-font-smoothing: antialiased; +} diff --git a/projects/ui-skin-default/src/assets/scss/file-icon/_functions.scss b/projects/ui-skin-default/src/assets/scss/file-icon/_functions.scss new file mode 100644 index 0000000..aebfb45 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/file-icon/_functions.scss @@ -0,0 +1,14 @@ +@function colorEncode($color) { + @if ( + str-index(ie-hex-str($color), '#') == + 1 and + str-length(ie-hex-str($color)) == + 9 and + type-of($color) == + 'color' + ) { + @return '%23' + str-slice(ie-hex-str($color), 4, 9); + } + + @return $color; +} diff --git a/projects/ui-skin-default/src/assets/scss/file-icon/_generator-colors.scss b/projects/ui-skin-default/src/assets/scss/file-icon/_generator-colors.scss new file mode 100644 index 0000000..0ce098a --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/file-icon/_generator-colors.scss @@ -0,0 +1,5 @@ +// +// Colors (used when another color isn't specified) +// +$icon-colours: #b1375e, #db4f42, #f29b00, #bfcb3e, #8db157, #50abb5, #5277de, + #6963c5; diff --git a/projects/ui-skin-default/src/assets/scss/file-icon/_generator-vars.scss b/projects/ui-skin-default/src/assets/scss/file-icon/_generator-vars.scss new file mode 100644 index 0000000..7718b6b --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/file-icon/_generator-vars.scss @@ -0,0 +1,41 @@ +// +// Icons (the corrispong ascii) +// + +$settings: '\E8B8'; +$locked: '\E88D'; +$flag: '\E3A0'; +$work: '\E8F9'; +$build: '\E869'; +$malware: '\E868'; +$map: '\E8B4'; +$coffee: '\EB44'; +$apk: '\E859'; +$usb: '\E1E0'; +$cloud: '\E2BD'; +$attachment: '\E2BC'; +$world: '\E80B'; + +$zip: '\E3E7'; + +$music: '\E3A1'; +$mic: '\E029'; +$radio: '\E03E'; +$audio: '\E050'; +$lp: '\E019'; + +$photo: '\E3B0'; +$picture: '\E3B7'; +$pict: '\E251'; + +$play: '\E037'; +$movie: '\E02C'; +$cam: '\E04B'; + +$text: '\E262'; +$stylez: '\E91D'; +$app: '\E051'; +$code: '\E86F'; + +$calendar: '\E8DF'; +$epub: '\E54B'; diff --git a/projects/ui-skin-default/src/assets/scss/file-icon/_hardcoded.scss b/projects/ui-skin-default/src/assets/scss/file-icon/_hardcoded.scss new file mode 100644 index 0000000..20e4509 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/file-icon/_hardcoded.scss @@ -0,0 +1,150 @@ +// HARDCODED styles +// This part serves for the demo and can be safely canceled +// However, if you need a particular icon you can write the code like in the examples below +// + +.mime-icon { + .ico.ico-magenta:after { + @include do-icon(#d9006c); + } + .ico.ico-yellow:after { + @include do-icon(#f9ca15); + } + .ico.ico-blue:after { + @include do-icon(#0d75dd); + } + + &.abc .ico:after { + @include do-icon(desaturate(hsla(15, 90%, 55%, 1), 15%), '', 'ABC'); + } + &.def .ico:after { + @include do-icon(desaturate(hsla(80, 75%, 47%, 1), 15%), '', 'DEF'); + } + &.ghi .ico:after { + @include do-icon(desaturate(hsla(270, 60%, 55%, 1), 15%), '', 'GHI'); + } + + &.light { + &.ico-mp3 .ico:after { + @include do-icon(#f1f2f2, desaturate(#05ad9d, 15%), 'MP3', #888, ''); + } + &.ico-pcm .ico:after { + @include do-icon(#f1f2f2, desaturate(#8bc34a, 15%), 'PCM', #888, ''); + } + &.ico-ogg .ico:after { + @include do-icon(#f1f2f2, desaturate(#cddc39, 15%), 'OGG', #888, ''); + } + &.ico-wav .ico:after { + @include do-icon(#f1f2f2, desaturate(#ffc107, 15%), 'WAV', #888, ''); + } + &.ico-aac .ico:after { + @include do-icon(#f1f2f2, desaturate(#f44336, 15%), 'AAC', #888, ''); + } + &.ico-aiff .ico:after { + @include do-icon(#f1f2f2, desaturate(#e91e63, 15%), 'AIFF', #888, ''); + } + &.ico-wma .ico:after { + @include do-icon(#f1f2f2, desaturate(#9c27b0, 15%), 'WMA', #888, ''); + } + &.ico-html .ico:after { + @include do-icon(#f1f2f2, desaturate(#3f51b5, 15%), 'HTML', #888, ''); + } + &.ico-js .ico:after { + @include do-icon(#f1f2f2, desaturate(#9c27b0, 15%), 'JS', #888, ''); + } + } + + &.dark { + &.ico-csv .ico:after { + @include do-icon($dark-color, desaturate(#05ad9d, 15%), 'CSV', #ddd, ''); + } + &.ico-txt .ico:after { + @include do-icon($dark-color, desaturate(#8bc34a, 15%), 'TXT', #ddd, ''); + } + &.ico-rtf .ico:after { + @include do-icon($dark-color, desaturate(#cddc39, 15%), 'RTF', #ddd, ''); + } + &.ico-doc .ico:after { + @include do-icon($dark-color, desaturate(#ffc107, 15%), 'DOC', #ddd, ''); + } + &.ico-docx .ico:after { + @include do-icon($dark-color, desaturate(#f44336, 15%), 'DOCX', #ddd, ''); + } + &.ico-flac .ico:after { + @include do-icon($dark-color, desaturate(#e91e63, 15%), 'FLAC', #ddd, ''); + } + &.ico-js .ico:after { + @include do-icon($dark-color, desaturate(#9c27b0, 15%), 'JS', #ddd, ''); + } + &.ico-php .ico:after { + @include do-icon($dark-color, desaturate(#3f51b5, 15%), 'PHP', #ddd, ''); + } + } + + &.double { + &.ico-avi .ico { + &:before { + color: #f44336 !important; + } + &:after { + @include do-icon($dark-color, #f44336, 'AVI', #f44336, ''); + } + } + &.ico-mp4 .ico { + &:before { + color: #8bc34a !important; + } + &:after { + @include do-icon($dark-color, #8bc34a, 'MP4', #8bc34a, ''); + } + } + &.ico-mkv .ico { + &:before { + color: #bdcc2b !important; + } + &:after { + @include do-icon($dark-color, #bdcc2b, 'MKV', #bdcc2b, ''); + } + } + &.ico-mpeg .ico { + &:before { + color: #ffc107 !important; + } + &:after { + @include do-icon($dark-color, #ffc107, 'MPEG', #ffc107, ''); + } + } + &.ico-mov .ico { + &:before { + color: #05ad9d !important; + } + &:after { + @include do-icon($dark-color, #05ad9d, 'MOV', #05ad9d, ''); + } + } + &.ico-flv .ico { + &:before { + color: #e91e63 !important; + } + &:after { + @include do-icon($dark-color, #e91e63, 'FLV', #e91e63, ''); + } + } + &.ico-swf .ico { + &:before { + color: #9c27b0 !important; + } + &:after { + @include do-icon($dark-color, #9c27b0, 'SWF', #9c27b0, ''); + } + } + &.ico-wmv .ico { + &:before { + color: #8bc34a !important; + } + &:after { + @include do-icon($dark-color, #8bc34a, 'WMV', #8bc34a, ''); + } + } + } +} diff --git a/projects/ui-skin-default/src/assets/scss/file-icon/_icons.scss b/projects/ui-skin-default/src/assets/scss/file-icon/_icons.scss new file mode 100644 index 0000000..9c1ae1c --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/file-icon/_icons.scss @@ -0,0 +1,248 @@ +// CONFIGURATION +$icon-container-size: 60px; // the size of the icons +$icon-edge-color: ''; // the default edge color of the icon +$font-size: 38; // the font size of the text incapsulated inside the svg icon relative to the 200px height of the original svg +$font-family: 'Myriad, Tahoma-Bold, sans-serif'; // the font size of the text incapsulated inside the svg icon relative to the 200px height of the original svg + +// ATTENTION write hex in extended notation +$shape-color: #f1f2f2; // the color of the shape inside the icon (if any) +$shape-color-positive: #666666; // the color of the shape when the icon have a positive background (es. white) +$dark-color: #3a3b3c; // background color of the icons in the dark theme (or the ribbon color in the "double" $style theme ) +$icon-shadow: ''; // or "drop-shadow( 0 2px 2px rgba(0, 0, 0, 0.25) );" without quotes +$font-color: $shape-color; // default + +// CHOOSE YOUR THEME +// +// +$style: ''; // icon theme -> possible values: default || dark || light || double + +// Import hex color conversion function +@import 'functions'; + +// Import icons +@import 'fonts'; + +// Colors (used when another color isn't specified) +@import 'generator-colors'; + +// Icons (the corrispong ascii) +@import 'generator-vars'; + +// DO-ICON MIXIN +@import 'mixin'; + +// HARDCODED styles +// This part serves for the demo and can be safely canceled +// However, if you need a particular icon you can write the code like in the examples below +// +@import 'hardcoded'; + +// +// LOOP CONFIG +// The loop will generate icons as in the configuration below +// +$icon-list: ('3dm', '', $world), ('3dmf', '', $world), ('7z', '', $zip), + ('a', '', $zip), ('aab', '', $app), ('aac', '', $mic), ('aam', '', $app), + ('aas', '', $app), ('abc', '', $text), ('acgi', '', $text), ('afl', '', $play), + ('ai', '', $app), ('aif', '', $music), ('aifc', '', $radio), ('aiff', '', $lp), + ('aim', '', $app), ('aip', '', $text), ('ani', '', $app), ('aos', '', $app), + ('aps', '', $app), ('arc', '', $app), ('arj', '', $app), ('art', '', $photo), + ('asf', '', $movie), ('asm', '', $text), ('asp', '', $code), ('asx', '', $app), + ('au', '', $mic), ('avi', '', $app), ('avs', '', $movie), ('bcpio', '', $app), + ('bin', '', $app), ('bm', '', $picture), ('bmp', '', $pict), ('boo', '', $app), + ('book', '', $app), ('boz', '', $app), ('bsh', '', $app), ('bz', '', $zip), + ('bz2', '', $app), ('c', '', $code), ('cat', '', $app), ('cc', '', $code), + ('ccad', '', $app), ('cco', '', $app), ('cdf', '', $app), ('cer', '', $app), + ('cha', '', $app), ('chat', '', $app), ('class', '', $app), ('com', '', $app), + ('conf', '', $text), ('cpio', '', $app), ('cpp', '', $text), ('cpt', '', $app), + ('crl', '', $app), ('crt', '', $app), ('csh', '', $app), ('css', '', $app), + ('csv', '', $text), ('cxx', '', $text), ('dcr', '', $app), ('deepv', '', $app), + ('def', '', $text), ('der', '', $app), ('dif', '', $cam), ('dir', '', $app), + ('dl', '', $play), ('doc', '', $app), ('docx', '', $text), ('dot', '', $app), + ('dp', '', $app), ('drw', '', $app), ('dump', '', $app), ('dv', '', $cam), + ('dvi', '', $app), ('dwf', '', $picture), ('dwg', '', $app), ('dxf', '', $app), + ('dxr', '', $app), ('el', '', $text), ('elc', '', $app), ('env', '', $app), + ('eps', '', $app), ('es', '', $app), ('etx', '', $text), ('evy', '', $app), + ('exe', '', $app), ('f', '', $text), ('f77', '', $text), ('f90', '', $text), + ('fdf', '', $app), ('fif', '', $app), ('flac', '', $lp), ('fli', '', $play), + ('flo', '', $photo), ('flv', '', $malware), ('flx', '', $text), + ('fmf', '', $cam), ('for', '', $text), ('fpx', '', $picture), + ('frl', '', $app), ('funk', '', $audio), ('g', '', $text), ('g3', '', $pict), + ('gif', '', $photo), ('gl', '', $play), ('gsd', '', $lp), ('gsm', '', $music), + ('gsp', '', $app), ('gss', '', $app), ('gtar', '', $app), ('gz', '', $app), + ('gzip', '', $app), ('h', '', $text), ('hdf', '', $app), ('help', '', $app), + ('hgl', '', $app), ('hh', '', $text), ('hlb', '', $text), ('hlp', '', $app), + ('hpg', '', $app), ('hpgl', '', $app), ('hqx', '', $app), ('hta', '', $app), + ('htc', '', $text), ('htm', '', $code), ('html', '', $code), + ('htmls', '', $code), ('htt', '', $code), ('htx', '', $code), + ('hwp', '', $app), ('hwpx', '', $app), ('hwt', '', $app), ('ice', '', $text), + ('ico', '', $picture), ('idc', '', $text), ('ief', '', $pict), + ('iefs', '', $photo), ('iges', '', $app), ('igs', '', $app), ('ima', '', $app), + ('imap', '', $app), ('inf', '', $app), ('ins', '', $app), ('ip', '', $app), + ('isu', '', $cam), ('it', '', $mic), ('iv', '', $app), ('ivr', '', $flag), + ('ivy', '', $app), ('jam', '', $radio), ('jav', '', $code), + ('java', '', $code), ('jcm', '', $app), ('jfif', '', $picture), + ('jfif-tbnl', '', $pict), ('jpe', '', $photo), ('jpeg', '', $picture), + ('jpg', '', $pict), ('jps', '', $photo), ('js', '', $malware), + ('jut', '', $picture), ('kar', '', $audio), ('ksh', '', $app), ('la', '', $lp), + ('lam', '', $mic), ('latex', '', $app), ('lha', '', $app), ('lhx', '', $app), + ('list', '', $text), ('lma', '', $radio), ('log', '', $text), + ('lsp', '', $app), ('lst', '', $text), ('lsx', '', $text), ('ltx', '', $app), + ('lzh', '', $app), ('lzx', '', $app), ('m', '', $text), ('m1v', '', $play), + ('m2a', '', $lp), ('m2v', '', $movie), ('m3u', '', $music), + ('m4a', '', $audio), ('man', '', $app), ('map', '', $app), ('mar', '', $text), + ('mbd', '', $app), ('mcd', '', $app), ('mcf', '', $pict), ('mcp', '', $app), + ('me', '', $app), ('mht', '', $work), ('mhtml', '', $work), ('mid', '', $app), + ('midi', '', $app), ('mif', '', $app), ('mime', '', $work), + ('mjf', '', $radio), ('mjpg', '', $cam), ('mkv', '', $play), ('mm', '', $app), + ('mme', '', $app), ('mod', '', $audio), ('moov', '', $play), + ('mov', '', $movie), ('movie', '', $cam), ('mp2', '', $music), + ('mp3', '', $lp), ('mp4', '', $movie), ('mpa', '', $lp), ('mpc', '', $app), + ('mpe', '', $play), ('mpeg', '', $movie), ('mpg', '', $music), + ('mpga', '', $mic), ('mpp', '', $app), ('mpt', '', $app), ('mpv', '', $app), + ('mpx', '', $app), ('mrc', '', $app), ('ms', '', $app), ('mv', '', $play), + ('my', '', $radio), ('mzz', '', $app), ('nap', '', $photo), + ('naplps', '', $picture), ('nc', '', $app), ('ncm', '', $app), + ('nif', '', $pict), ('niff', '', $photo), ('nix', '', $app), ('nsc', '', $app), + ('nvd', '', $app), ('o', '', $app), ('oda', '', $app), ('ogg', '', $audio), + ('omc', '', $app), ('omcd', '', $app), ('omcr', '', $app), ('p', '', $text), + ('p10', '', $app), ('p12', '', $app), ('p7a', '', $app), ('p7c', '', $app), + ('p7m', '', $app), ('p7r', '', $app), ('p7s', '', $app), ('part', '', $app), + ('pas', '', $text), ('pbm', '', $picture), ('pcl', '', $app), + ('pcm', '', $radio), ('pct', '', $pict), ('pcx', '', $photo), + ('pdb', '', $coffee), ('pdf', '', $app), ('pfunk', '', $audio), + ('pgm', '', $picture), ('php', '', $code), ('pic', '', $pict), + ('pict', '', $photo), ('pkg', '', $app), ('pko', '', $app), ('pl', '', $code), + ('plx', '', $app), ('pm', '', $picture), ('pm4', '', $app), ('pm5', '', $app), + ('png', '', $pict), ('pnm', '', $app), ('pot', '', $app), + ('pov', '', $settings), ('ppa', '', $app), ('ppm', '', $photo), + ('pps', '', $app), ('ppt', '', $app), ('pptx', '', $app), ('ppz', '', $app), + ('pre', '', $app), ('prt', '', $app), ('ps', '', $app), ('psd', '', $app), + ('pvu', '', $lp), ('pwz', '', $app), ('py', '', $code), ('pyc', '', $app), + ('qcp', '', $music), ('qd3', '', $world), ('qd3d', '', $world), + ('qif', '', $picture), ('qt', '', $movie), ('qtc', '', $cam), + ('qti', '', $pict), ('qtif', '', $photo), ('ram', '', $lp), ('rar', '', $zip), + ('ras', '', $app), ('rast', '', $picture), ('rexx', '', $text), + ('rf', '', $pict), ('rgb', '', $photo), ('rm', '', $app), ('rmi', '', $mic), + ('rmm', '', $radio), ('rmp', '', $audio), ('rng', '', $app), ('rnx', '', $app), + ('roff', '', $app), ('rp', '', $picture), ('rpm', '', $music), + ('rt', '', $text), ('rtf', '', $app), ('rtx', '', $app), ('rv', '', $play), + ('s', '', $text), ('s3m', '', $mic), ('saveme', '', $app), ('sbk', '', $app), + ('scm', '', $app), ('sdml', '', $text), ('sdp', '', $app), ('sdr', '', $app), + ('sea', '', $app), ('set', '', $app), ('sgm', '', $text), ('sgml', '', $text), + ('sh', '', $app), ('shar', '', $app), ('shtml', '', $code), + ('sid', '', $radio), ('sit', '', $app), ('skd', '', $app), ('skm', '', $app), + ('skp', '', $app), ('skt', '', $app), ('sl', '', $app), ('smi', '', $app), + ('smil', '', $app), ('snd', '', $audio), ('sol', '', $app), ('spc', '', $app), + ('spl', '', $app), ('spr', '', $app), ('sprite', '', $app), ('src', '', $app), + ('ssi', '', $text), ('ssm', '', $app), ('sst', '', $app), ('step', '', $app), + ('stl', '', $app), ('stp', '', $app), ('sv4cpio', '', $app), + ('sv4crc', '', $app), ('svf', '', $pict), ('svr', '', $app), ('swf', '', $app), + ('t', '', $app), ('talk', '', $text), ('tar', '', $app), ('tbk', '', $app), + ('tcl', '', $app), ('tcsh', '', $text), ('tex', '', $app), ('texi', '', $app), + ('texinfo', '', $app), ('tgz', '', $app), ('tif', '', $photo), + ('tiff', '', $picture), ('tr', '', $app), ('tsi', '', $music), + ('tsp', '', $app), ('tsv', '', $text), ('turbot', '', $pict), + ('txt', '', $text), ('uil', '', $text), ('uni', '', $text), + ('unis', '', $text), ('unv', '', $app), ('uri', '', $text), + ('uris', '', $text), ('ustar', '', $app), ('uu', '', $app), ('uue', '', $text), + ('vcd', '', $app), ('vcs', '', $text), ('vda', '', $app), ('vdo', '', $cam), + ('vew', '', $app), ('viv', '', $play), ('vivo', '', $cam), ('vmd', '', $app), + ('vmf', '', $app), ('voc', '', $radio), ('vos', '', $movie), ('vox', '', $lp), + ('vqe', '', $music), ('vqf', '', $mic), ('vql', '', $radio), + ('vrml', '', $app), ('vrt', '', $world), ('vsd', '', $app), ('vst', '', $app), + ('vsw', '', $app), ('wav', '', $audio), ('wb1', '', $app), + ('wbmp', '', $photo), ('web', '', $app), ('wiz', '', $app), ('wk1', '', $app), + ('wma', '', $music), ('wmf', '', $app), ('wml', '', $app), ('wmlc', '', $app), + ('wmls', '', $app), ('wmlsc', '', $app), ('wmv', '', $play), + ('word', '', $app), ('wp', '', $app), ('wp5', '', $app), ('wp6', '', $app), + ('wpd', '', $app), ('wq1', '', $app), ('wri', '', $app), ('wrl', '', $app), + ('wrz', '', $app), ('wsc', '', $app), ('wsrc', '', $app), ('wtk', '', $app), + ('x-png', '', $picture), ('xbm', '', $pict), ('xdr', '', $cam), + ('xgz', '', $app), ('xif', '', $photo), ('xl', '', $app), ('xla', '', $app), + ('xlb', '', $app), ('xlc', '', $app), ('xld', '', $app), ('xlk', '', $app), + ('xll', '', $app), ('xlm', '', $app), ('xls', '', $app), ('xlsx', '', $app), + ('xlt', '', $app), ('xlv', '', $app), ('xlw', '', $app), ('xm', '', $lp), + ('xml', '', $app), ('xmz', '', $text), ('xpix', '', $app), + ('xpm', '', $picture), ('xsr', '', $play), ('xwd', '', $pict), + ('xyz', '', $app), ('z', '', $zip), ('zip', '', $zip), ('zoo', '', $app), + ('zsh', '', $text); + +////// basic style +////// + +.mime-icon { + margin: 0; + display: inline-block; + vertical-align: top; + position: relative; + + .ico { + position: relative; + text-align: center; + + &:before { + position: absolute; + top: $icon-container-size / 2.7; + display: block; + width: 100%; + overflow: visible; + // z-index: 9; + content: ''; + font-family: 'Material Icons'; + font-size: $icon-container-size / 4.2; + opacity: 0.8; + } + + &:after { + width: $icon-container-size; + height: $icon-container-size; + display: inline-block; + content: ''; + + background-size: 80%; + background-position: center; + background-repeat: no-repeat; + @include do-icon(); + } + } + + &.light { + .ico:before { + color: $shape-color-positive !important; + } + .ico:after { + filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.25)); + } + } + + &.dark { + .ico:before { + color: #f1f2f2 !important; + } + .ico:after { + filter: inherit; + } + } + + &.double { + .ico:after { + filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.25)); + } + } + + i.material-icons { + position: absolute; + top: 33%; + left: 0; + right: 0; + font-size: 28px; + color: $shape-color; + opacity: 0.8; + } +} + +////// "Each" n°1 icon with Google font icon +////// + +@import 'loop'; diff --git a/projects/ui-skin-default/src/assets/scss/file-icon/_loop.scss b/projects/ui-skin-default/src/assets/scss/file-icon/_loop.scss new file mode 100644 index 0000000..93549c6 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/file-icon/_loop.scss @@ -0,0 +1,78 @@ +////// "Each" loop with font icon +////// +////// +$colors-number: length($icon-colours); +$actual-icon-color: 1; + +@each $filetype, $icon-primary-color, $icon in $icon-list { + @if (type-of($icon-primary-color) != 'color' and ($icon-primary-color)) { + // if background isn't a color or is null + + @if ($style == 'dark') { + $icon-edge-color: nth( + $icon-colours, + $actual-icon-color + ); // the color is a color from the $icon-colours array + $icon-primary-color: $dark-color; + } @else if ($style == 'light') { + $icon-edge-color: nth($icon-colours, $actual-icon-color); + $icon-primary-color: #f1f2f2; + } @else if ($style == 'double') { + $icon-primary-color: $dark-color; + $icon-edge-color: nth($icon-colours, $actual-icon-color); + } @else { + $icon-primary-color: nth($icon-colours, $actual-icon-color); + $icon-edge-color: ''; + } + + @if ($actual-icon-color < $colors-number) { + // Prepare the next color then increase the index counter + $actual-icon-color: $actual-icon-color + 1; + } @else { + $actual-icon-color: 1; + } + } @else { + // else background is a color or isn't null + + @if ($style == 'dark') { + $icon-edge-color: $icon-primary-color; + $icon-primary-color: $dark-color; + } @else if ($style == 'light') { + $icon-edge-color: $icon-primary-color; + $icon-primary-color: #f1f2f2; + } @else if ($style == 'double') { + $icon-edge-color: $icon-primary-color; + $icon-primary-color: $dark-color; + } @else { + $icon-primary-color: $icon-primary-color; + $icon-edge-color: ''; + } + } + + @if ($style == 'light') { + $font-color: $shape-color-positive; + $icon-shadow: 'drop-shadow( 0 2px 2px rgba(0, 0, 0, 0.25) );'; + } @else if ($style == 'double') { + $font-color: $icon-edge-color; + $icon-shadow: 'drop-shadow( 0 2px 2px rgba(0, 0, 0, 0.25) );'; + } @else { + $font-color: $shape-color; + $icon-shadow: inherit; + } + + // APPLY STYLE + .mime-icon.ico-#{$filetype} .ico:before { + content: $icon; + color: $font-color; + } + .mime-icon.ico-#{$filetype} .ico:after { + @include do-icon( + $icon-primary-color, + $icon-edge-color, + str-slice(to-upper-case($filetype), 0, 5), + $font-color, + $icon + ); + filter: #{$icon-shadow}; + } +} diff --git a/projects/ui-skin-default/src/assets/scss/file-icon/_mixin.scss b/projects/ui-skin-default/src/assets/scss/file-icon/_mixin.scss new file mode 100644 index 0000000..d586e77 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/file-icon/_mixin.scss @@ -0,0 +1,43 @@ +////// DO-ICON MIXIN USAGE +///// +///// -> do-icon($background-color, $edge-color, $text, $text-color, $icon, $shape-color); +///// +> @include do-icon(#009688, lighten(#009688, 20%), "", ""); +/// +// $background-color: the background of the document image (A color is expected - REQUIRED) +// $edge-color: the color of corner edge +// $text: the type of mime type +// $text-color: the color of the text containing file extension (A color is expected) +// $icon: inject an icon inside the document model + +// IF WOU WANT CHANGE THE DEFAULT ICON +// #{$background-color} -> the icon main color +// #{$edge-color} -> the icon secondary color +// #{$font-size} -> the size of the file extension text (exe, jpg, gif, etc) +// #{$icon} -> the ascii code of the icon font +// #{$text} -> the file extension variable + +@mixin do-icon( + $background-color: #888, + $edge-color: null, + $text: null, + $text-color: #f1f2f2, + $icon: null +) { + @if (type-of($edge-color) != 'color') { + $edge-color: lighten($background-color, 15%); + } + @if (type-of($text-color) != 'color') { + $text-color: '#F1F2F2'; + } + @if (type-of($text) != 'string') and ($text) { + $text: '@#!'; + } + + $background-color: colorEncode($background-color); + $text-color: colorEncode($text-color); + $edge-color: colorEncode($edge-color); + + $ico: '#{$icon} #{$text}'; + + background-image: url('data:image/svg+xml;utf8,#{$ico}'); +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_breakpoints.scss b/projects/ui-skin-default/src/assets/scss/partials/_breakpoints.scss new file mode 100644 index 0000000..306c8eb --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_breakpoints.scss @@ -0,0 +1,37 @@ +// Media step breakpoint mixin based on Angular Material lib +$breakpoints: ( + xs: 'screen and (max-width: 599px)', + sm: 'screen and (min-width: 600px) and (max-width: 959px)', + md: 'screen and (min-width: 960px) and (max-width: 1279px)', + lg: 'screen and (min-width: 1280px) and (max-width: 1919px)', + xl: 'screen and (min-width: 1920px) and (max-width: 5000px)', + lt-sm: 'screen and (max-width: 599px)', + lt-md: 'screen and (max-width: 959px)', + lt-lg: 'screen and (max-width: 1279px)', + lt-xl: 'screen and (max-width: 1919px)', + gt-xs: 'screen and (min-width: 600px)', + gt-sm: 'screen and (min-width: 960px)', + gt-md: 'screen and (min-width: 1280px)', + gt-lg: 'screen and (min-width: 1920px)' +) !default; + +// Re-map the breakpoints for the helper classes +$helper-breakpoints: ( + xs: null, + sm: 'gt-xs', + md: 'gt-sm', + lg: 'gt-md', + xl: 'gt-lg' +); + +@mixin media-breakpoint($breakpointName) { + $mediaQuery: map-get($breakpoints, $breakpointName); + + @if ($mediaQuery == null) { + @content; + } @else { + @media #{$mediaQuery} { + @content; + } + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_dialogs.scss b/projects/ui-skin-default/src/assets/scss/partials/_dialogs.scss new file mode 100644 index 0000000..d3badd3 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_dialogs.scss @@ -0,0 +1,72 @@ +//mat-snack-bar-container +.cdk-global-overlay-wrapper { + .mat-snack-bar-container { + margin: 0; + padding: 30px; + max-width: 60vw; + .mat-simple-snackbar { + display: flex; + justify-content: center; + span { + @include ellipsis(3); + display: inline-block; + padding: 7px 20px; + border: 1px solid #ffffff; + background-color: rgb(255, 255, 255, 0.2); + color: #ffffff; + margin-right: 4px; + flex: 1 1 auto; + max-width: 40vw; + } + &-action { + display: inline-flex; + margin-left: auto; + flex: 0 0 auto; + height: 100%; + button { + //background-color: #00b6d5; + border-radius: 2px; + span { + padding: 0 20px; + color: #ffffff; + background: none; + border: none; + font-weight: 500; + } + } + } + } + } +} + +.mat-card { + padding: 10px; + .mat-card-header { + margin-bottom: 20px; + //.mat-card-header-text, + .mat-card-title { + display: flex; + //margin: 0 -16px; + margin-bottom: 0; + align-items: center; + height: 30px; + padding: 0 !important; + } + .mat-card-header-text { + margin: 0; + } + .btn-dialog-close { + font-size: 20px; + display: flex; + margin-left: auto; + align-self: flex-start; + color: #444444; + } + } + .button-form { + text-align: right; + button { + margin-left: 4px; + } + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_forms.scss b/projects/ui-skin-default/src/assets/scss/partials/_forms.scss new file mode 100644 index 0000000..c2d7837 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_forms.scss @@ -0,0 +1,191 @@ +button, +input[type='email'], +input[type='tel'], +input[type='text'], +input[type='password'], +input[type='image'], +input[type='submit'], +input[type='button'], +input[type='search'], +textarea { + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + outline: none; +} + +//기본 타입 +.mat-form-field-wrapper { + width: 100%; + .mat-form-field-infix { + display: flex; + } + .mat-form-field-label { + color: currentColor; + font-size: 1em; + } +} + +//하단 라인 없는 타입 +.input-lineless, +.input-no-topguide { + form { + display: flex; + flex: 0 0 auto; + width: 100%; + .mat-form-field-appearance-legacy { + .mat-form-field-wrapper { + //color: #ffffff; + width: 100%; + .mat-form-field-infix { + .mat-input-element { + font-size: 1em; + } + } + .mat-form-field-suffix { + button { + position: relative; + transform: translateY(2px); + .mat-button-wrapper { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + font-size: 1.2em; + } + } + } + .mat-form-field-label { + color: currentColor; + opacity: 0.7; + font-size: 1em; + } + .mat-form-field-underline { + height: 0; + .mat-form-field-ripple { + top: 6px; + height: 1px; + overflow: hidden; + display: none; + } + } + } + } + + .icon-img { + align-items: center; + justify-content: center; + height: 100%; + display: flex; + align-self: center; + margin-right: 10px; + } + } + + .mat-form-field { + flex-flow: row; + flex: 1 1 auto; + width: 90%; + align-items: center; + display: flex; + color: #ffffff; + .mat-form-field-wrapper { + padding: 0; + display: flex; + flex: 1 1 auto; + .mat-form-field-infix { + border: 0; + padding: 0; + width: auto; + input { + margin: 0; + line-height: 1.4em; + } + .mat-form-field-label-wrapper { + top: 0; + .mat-form-field-label { + top: 0; + color: currentColor; + opacity: 0.7; + font-size: 0.9em; + } + } + } + .mat-form-field-underline { + display: none; + } + } + //텍스트 선명도 + &.white { + color: #333333; + } + } +} + +.mat-error { + font-size: 0.84em; +} + +.mat-form-field { + &.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float + .mat-form-field-label, + .mat-form-field-appearance-legacy.mat-form-field-can-float + .mat-input-server:focus + + .mat-form-field-label-wrapper + .mat-form-field-label { + font-size: 0.7em; + transform: translateY(-1.4em) scale(1); + } + .mat-form-field-underline { + background-color: none; + transform: scaleY(1); + } + .mat-form-field-wrapper { + .mat-form-field-infix { + .mat-input-element { + line-height: 1.4em; + } + } + .mat-form-field-label-wrapper { + .mat-form-field-label { + line-height: 1.4em; + } + } + } +} + +// input-label 상단 삭제 +.input-no-topguide { + &.mat-form-field-appearance-legacy { + .mat-form-field-wrapper { + padding: 0; + @media screen and (max-width: 1024px) { + font-size: 0.9em; + } + .mat-form-field-infix { + padding: 0.4375em 0; + border-top: 0; + overflow: hidden; + } + } + .mat-form-field-underline { + bottom: 0; + .mat-form-field-ripple { + top: 6px; + height: 1px; + overflow: hidden; + display: none; + } + } + } +} + +.call-frame-menu { + button { + &.cdk-focused { + & > .mat-button-focus-overlay { + opacity: 0 !important; + } + } + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_general.scss b/projects/ui-skin-default/src/assets/scss/partials/_general.scss new file mode 100644 index 0000000..7c30bad --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_general.scss @@ -0,0 +1,112 @@ +// ----------------------------------------------------------------------------------------------------- +// @ Body scroll lock +// ----------------------------------------------------------------------------------------------------- +html, +body { + display: flex; + flex: 1 0 auto; + width: 100%; + height: 100%; + max-height: 100%; + min-height: 100%; + margin: 0; + padding: 0; + overflow: hidden; +} + +// ----------------------------------------------------------------------------------------------------- +// @ Boxed body +// ----------------------------------------------------------------------------------------------------- +body { + // Boxed + &.boxed { + max-width: 1200px; + margin: 0 auto; + + @include mat-elevation(8); + } +} + +/*----------------------------------------------------------------*/ +/* @ Text rendering & box sizing +/*----------------------------------------------------------------*/ +* { + text-rendering: optimizeLegibility; + -o-text-rendering: optimizeLegibility; + -ms-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + -webkit-text-rendering: optimizeLegibility; + -webkit-tap-highlight-color: transparent; + box-sizing: border-box; + + &:before, + &:after { + box-sizing: border-box; + } + + // Remove focus outline + &:focus { + outline: none; + } +} + +// ----------------------------------------------------------------------------------------------------- +// @ Responsive images +// ----------------------------------------------------------------------------------------------------- + +img { + max-width: 100%; + height: auto; + vertical-align: top; + border: none; +} + +// ----------------------------------------------------------------------------------------------------- +// @ Input +// ----------------------------------------------------------------------------------------------------- +input { + border: none; + padding: 0 16px; +} + +a { + cursor: pointer; +} +[class*='btn'] { + cursor: pointer; +} + +// ----------------------------------------------------------------------------------------------------- +// @ list +// ----------------------------------------------------------------------------------------------------- +ol { + li { + list-style: decimal; + margin-bottom: 14px; + margin-left: 20px; + } +} + +// ----------------------------------------------------------------------------------------------------- +// @ button 공통 +// ----------------------------------------------------------------------------------------------------- +button, +.mat-mini-fab { + justify-content: center; + align-items: center; + .mat-button-wrapper { + display: flex; + justify-content: inherit; + align-items: inherit; + width: 100%; + height: 100%; + line-height: unset; + } +} + +.mat-mini-fab { + .mat-button-wrapper { + display: flex !important; + padding: 0 !important; + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_helpers.scss b/projects/ui-skin-default/src/assets/scss/partials/_helpers.scss new file mode 100644 index 0000000..8822eea --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_helpers.scss @@ -0,0 +1,236 @@ +// ----------------------------------------------------------------------------------------------------- +// @ Position helpers +// ----------------------------------------------------------------------------------------------------- +@each $breakpoint, $materialBreakpoint in $helper-breakpoints { + @include media-breakpoint($materialBreakpoint) { + $infix: if($materialBreakpoint == null, '', '-#{$breakpoint}'); + + .position#{$infix}-relative { + position: relative; + } + + .position#{$infix}-absolute { + position: absolute; + } + + .position#{$infix}-static { + position: static; + } + } +} + +// ----------------------------------------------------------------------------------------------------- +// @ Absolute position alignment helpers +// ----------------------------------------------------------------------------------------------------- +@each $breakpoint, $materialBreakpoint in $helper-breakpoints { + @include media-breakpoint($materialBreakpoint) { + $infix: if($materialBreakpoint == null, '', '-#{$breakpoint}'); + + .align#{$infix}-top { + top: 0; + } + + .align#{$infix}-right { + right: 0; + } + + .align#{$infix}-bottom { + bottom: 0; + } + + .align#{$infix}-left { + left: 0; + } + } +} + +// ----------------------------------------------------------------------------------------------------- +// @ Size helpers +// ----------------------------------------------------------------------------------------------------- +@each $prop, $abbrev in (height: h, width: w) { + @for $index from 0 through 180 { + $size: $index * 4; + $length: #{$size}px; + + .#{$abbrev}-#{$size} { + #{$prop}: $length !important; + min-#{$prop}: $length !important; + max-#{$prop}: $length !important; + } + } + + // Percentage + @for $i from 0 through 20 { + $i-p: 5 * $i; + $size-p: 5% * $i; + + .#{$abbrev}-#{$i-p}-p { + #{$prop}: $size-p !important; + } + } +} + +// ----------------------------------------------------------------------------------------------------- +// @ Spacing helpers +// ----------------------------------------------------------------------------------------------------- +@each $breakpoint, $materialBreakpoint in $helper-breakpoints { + @include media-breakpoint($materialBreakpoint) { + $infix: if($materialBreakpoint == null, '', '-#{$breakpoint}'); + + @each $prop, $abbrev in (margin: m, padding: p) { + @for $index from 0 through 64 { + $size: $index * 4; + $length: #{$size}px; + + .#{$abbrev}#{$infix}-#{$size} { + #{$prop}: $length !important; + } + } + + @for $index from 0 through 64 { + $size: $index * 4; + $length: #{$size}px; + + .#{$abbrev}x#{$infix}-#{$size} { + #{$prop}-right: $length !important; + #{$prop}-left: $length !important; + } + + .#{$abbrev}y#{$infix}-#{$size} { + #{$prop}-top: $length !important; + #{$prop}-bottom: $length !important; + } + } + + @for $index from 0 through 64 { + $size: $index * 4; + $length: #{$size}px; + + .#{$abbrev}t#{$infix}-#{$size} { + #{$prop}-top: $length !important; + } + + .#{$abbrev}r#{$infix}-#{$size} { + #{$prop}-right: $length !important; + } + + .#{$abbrev}b#{$infix}-#{$size} { + #{$prop}-bottom: $length !important; + } + + .#{$abbrev}l#{$infix}-#{$size} { + #{$prop}-left: $length !important; + } + } + + @if ($abbrev == m) { + // Some special margin utils for flex alignments + .m#{$infix}-auto { + margin: auto !important; + } + + .mt#{$infix}-auto { + margin-top: auto !important; + } + + .mr#{$infix}-auto { + margin-right: auto !important; + } + + .mb#{$infix}-auto { + margin-bottom: auto !important; + } + + .ml#{$infix}-auto { + margin-left: auto !important; + } + + .mx#{$infix}-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my#{$infix}-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + } + } + } +} + +// ----------------------------------------------------------------------------------------------------- +// @ Border helpers +// ----------------------------------------------------------------------------------------------------- +$border-style: 1px solid rgba(0, 0, 0, 0.12); + +.border, +.b { + border: $border-style; +} + +.border-top, +.bt { + border-top: $border-style; +} + +.border-right, +.br { + border-right: $border-style; +} + +.border-bottom, +.bb { + border-bottom: $border-style; +} + +.border-left, +.bl { + border-left: $border-style; +} + +.border-horizontal, +.bx { + border-left: $border-style; + border-right: $border-style; +} + +.border-vertical, +.by { + border-top: $border-style; + border-bottom: $border-style; +} + +// ----------------------------------------------------------------------------------------------------- +// @ Border radius helpers +// ----------------------------------------------------------------------------------------------------- +.border-radius-100 { + border-radius: 100%; +} + +.border-radius-2 { + border-radius: 2px; +} + +.border-radius-4 { + border-radius: 4px; +} + +.border-radius-8 { + border-radius: 8px; +} + +.border-radius-16 { + border-radius: 16px; +} + +// ----------------------------------------------------------------------------------------------------- +// @ Cursor helpers +// ----------------------------------------------------------------------------------------------------- +.cursor-pointer { + cursor: pointer; +} + +.cursor-default { + cursor: default; +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_icons.scss b/projects/ui-skin-default/src/assets/scss/partials/_icons.scss new file mode 100644 index 0000000..6558e0c --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_icons.scss @@ -0,0 +1,99 @@ +i, +mat-icon { + font-size: 24px; + width: 24px; + height: 24px; + line-height: 24px; + + @each $breakpoint, $materialBreakpoint in $helper-breakpoints { + @include media-breakpoint($materialBreakpoint) { + $infix: if($materialBreakpoint == null, '', '-#{$breakpoint}'); + + @for $size from 2 through 128 { + &.s#{$infix}-#{$size * 2} { + font-size: #{($size * 2) + 'px'} !important; + width: #{($size * 2) + 'px'} !important; + height: #{($size * 2) + 'px'} !important; + min-width: #{($size * 2) + 'px'} !important; + min-height: #{($size * 2) + 'px'} !important; + line-height: #{($size * 2) + 'px'} !important; + } + } + } + } +} + +.icon-button, +.icon-img { + display: flex; + justify-content: center; + justify-items: center; + background: none; + border: none; + width: auto; + height: auto; + justify-items: center; + justify-content: center; + .mat-button-wrapper { + width: 100%; + height: 100%; + color: inherit; + justify-content: inherit; + align-items: inherit; + } + i { + &.mdi { + font-family: 'material-outline-icons'; + font-size: 20px; + width: 20px; + height: 20px; + line-height: 20px; + font-weight: normal; + &-16 { + font-size: 16px; + width: 16px; + height: 16px; + line-height: 16px; + } + &-18 { + font-size: 18px; + width: 18px; + height: 18px; + line-height: 18px; + } + &-24 { + font-size: 24px; + width: 24px; + height: 24px; + line-height: 24px; + } + &-30 { + font-size: 30px; + width: 30px; + height: 30px; + line-height: 30px; + } + &-48 { + font-size: 48px; + width: 47px; + height: 48px; + line-height: 48px; + } + } + &:before { + display: inline-block; + font: normal normal normal 20px/1 'Material Design Icons'; + font-size: inherit; + text-rendering: auto; + line-height: inherit; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + &:hover { + opacity: 0.7; + } +} +.circle-button { + border-radius: 50%; +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_list-item.scss b/projects/ui-skin-default/src/assets/scss/partials/_list-item.scss new file mode 100644 index 0000000..6e940c1 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_list-item.scss @@ -0,0 +1,127 @@ +@charset 'utf-8'; +$listH-row2: 60px; +$line-basic: 1px solid #dddddd; + +@mixin ellipsis($row) { + overflow: hidden; + text-overflow: ellipsis; + @if $row == 1 { + white-space: nowrap; + word-wrap: normal; + } @else if $row >= 2 { + display: -webkit-box; + -webkit-line-clamp: $row; + -webkit-box-orient: vertical; + word-wrap: break-word; + } +} + +%list-item { + position: relative; + display: flex; + align-items: center; + width: 100%; + height: $listH-row2; + border-bottom: $line-basic; + padding: 0 20px; +} + +//expansion-panel 높이 +.group-tree { + .tree-node-frame { + height: $listH-row2; + .group-name { + font-size: 0.96em; + } + } +} + +.search-result { + .result-num { + padding: 10px; + display: flex; + height: 40px; + } +} + +.list-item { + @extend %list-item; + .thumbnail { + &-mask { + width: 40px; + height: 40px; + border-radius: 50%; + overflow: hidden; + margin-right: 12px; + position: relative; + img { + width: 40px; + height: auto; + background-color: #efefef; + } + } + } + &.checkbox { + .mat-checkbox { + margin-left: auto; + } + } + span[class*='marker'] { + position: absolute; + background-color: #ffffff; + width: 20px; + height: 20px; + border-radius: 50%; + bottom: 0px; + left: 30px; + display: flex; + align-items: center; + align-content: center; + justify-content: center; + .mat-icon { + font-size: 1em; + width: 18px; + height: 18px; + line-height: 18px; + min-width: 18px; + min-height: 18px; + } + &.on { + color: #00bcd4; + } + } + .noti-sum.mat-badge { + position: absolute; + right: 30px; + bottom: 20px; + font-size: 0.9em; + } +} + +//list-item 폰트 사이즈 +.list-item { + font-size: 1em; + .name { + font-weight: 600; + @include ellipsis(1); + } + .grade { + font-size: 0.8em; + margin-left: 4px; + color: #777777; + } + .work-status, + .member { + font-size: 0.8em; + } + .final-message, + .dept { + font-size: 0.86em; + color: #777777; + @include ellipsis(1); + } + .date { + font-size: 0.8em; + @include ellipsis(1); + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_main-frame.scss b/projects/ui-skin-default/src/assets/scss/partials/_main-frame.scss new file mode 100644 index 0000000..9b0de73 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_main-frame.scss @@ -0,0 +1,50 @@ +$frame-border: 3px; +$frame-outside: 50px; +$current-head: 50px; +$search-frame: 50px; + +@mixin div-box-shadow { + width: calc(100% - #{$frame-outside}); +} + +.mat-toolbar { + &.mat-toolbar-single-row { + height: $frame-outside; + } +} + +.main-container { + padding-top: $frame-outside; + border-width: $frame-border; + border-style: solid; + .mat-tab-group { + &.global-menu { + width: $frame-outside; + } + } + .left-side-tabs-body { + @include div-box-shadow; + } +} + +.current-head { + height: $frame-outside; +} + +// 글로벌 메뉴 별 리스트 높이 값 +.left-side-tabs-contents { + .left-group-side { + .search-result { + height: calc(100% - #{$current-head + $search-frame}); + } + } + .app-layout-chat-left-sidenav-chat-list { + height: calc(100% - #{$current-head + $search-frame}); + } + .oraganization-tab { + height: calc(100% - #{$current-head + $search-frame}); + } + .message-section { + height: calc(100% - #{$current-head + $search-frame}); + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_normalize.scss b/projects/ui-skin-default/src/assets/scss/partials/_normalize.scss new file mode 100644 index 0000000..037c5d3 --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_normalize.scss @@ -0,0 +1,450 @@ +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { + /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type='button']:-moz-focusring, +[type='reset']:-moz-focusring, +[type='submit']:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type='checkbox'], +[type='radio'] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type='search']::-webkit-search-cancel-button, +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, /* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_paginator.scss b/projects/ui-skin-default/src/assets/scss/partials/_paginator.scss new file mode 100644 index 0000000..8ae902b --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_paginator.scss @@ -0,0 +1,45 @@ +@charset 'utf-8'; +$tablet-s-width: 768px; + +.mat-paginator { + .mat-paginator-container { + display: flex; + align-items: center; + justify-content: flex-end; + min-height: 50px; + padding: 0 8px; + width: 100%; + flex-flow: column-reverse; + .mat-paginator-page-size { + height: 60px; + } + .mat-paginator-range-actions { + height: 50px; + } + } + .mat-paginator-navigation-first { + order: 1; + } + .mat-paginator-navigation-previous { + order: 2; + } + // override material paginator page switch + .mat-paginator-range-label { + order: 3; + } + .mat-paginator-navigation-next { + order: 4; + } + .mat-paginator-navigation-last { + order: 5; + } + @media screen and (max-width: #{$tablet-s-width}) { + .mat-paginator-container { + height: 50px; + min-height: 50px; + .mat-paginator-page-size { + display: none; + } + } + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_presence.scss b/projects/ui-skin-default/src/assets/scss/partials/_presence.scss new file mode 100644 index 0000000..900404d --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_presence.scss @@ -0,0 +1,72 @@ +%presence { + display: inline-block; + width: 8px; + height: 8px; + align-self: flex-start; + align-items: center; + text-indent: -10000000px; + margin-right: 4px; + border-radius: 50%; + transform: translateY(12px); +} +.presence { + @extend %presence; + &.pcOn { + background-color: #28ad66; + } + &.pcOut { + background-color: #f35b5b; + } + &.pcOff { + background-color: #a29f9f; + } + &.pcOther { + background-color: #f0c10a; + } +} + +.work-status { + &.morning-off { + //background-color: #11845d; + background-color: #30ad82; + } + &.afternoon-off { + //background-color: #875acb; + background-color: #976fd4; + } + &.day-off { + //background-color: #2b98eb; + background-color: #2b98eb; + } + &.long-time { + //background-color: #c72f20; + background-color: #ea4737; + } + &.leave-of-absence { + // background-color: #e7853e; + background-color: #ffa25e; + } +} + +.marker-mobile-state { + &.on { + color: #00bcd4; + } + color: #00bcd4 !important; +} + +//수신, 발신, 부재중 +.call-status { + width: 24px; + height: 24px; + margin-right: 10px; + .reception { + color: #30ad82; + } + .send { + color: #2b98eb; + } + .absence { + color: #ffa25e; + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_scrollbars.scss b/projects/ui-skin-default/src/assets/scss/partials/_scrollbars.scss new file mode 100644 index 0000000..2848fea --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_scrollbars.scss @@ -0,0 +1,29 @@ +body:not(.is-mobile) { + ::-webkit-scrollbar { + width: 12px; + height: 12px; + background-color: rgba(0, 0, 0, 0); + } + + ::-webkit-scrollbar:hover { + background-color: rgba(0, 0, 0, 0.12); + } + + ::-webkit-scrollbar-thumb { + border: 2px solid transparent; + box-shadow: inset 0 0 0 12px rgba(0, 0, 0, 0.37); + border-radius: 12px; + } + + ::-webkit-scrollbar-thumb:active { + box-shadow: inset 0 0 0 12px rgba(0, 0, 0, 0.54); + border-radius: 12px; + } +} + +perfect-scrollbar { + .ps-content { + width: 100%; + height: 100%; + } +} diff --git a/projects/ui-skin-default/src/assets/scss/partials/_search-frame.scss b/projects/ui-skin-default/src/assets/scss/partials/_search-frame.scss new file mode 100644 index 0000000..84f352d --- /dev/null +++ b/projects/ui-skin-default/src/assets/scss/partials/_search-frame.scss @@ -0,0 +1,139 @@ +$search-font-size: 14px; + +@mixin list-search { + display: flex; + flex-direction: row; + position: relative; + height: $search-frame; + align-items: center; + // padding: 0 10px 0 20px; + font-size: $search-font-size; + background-color: #f9f9f9; + border-bottom: 1px solid #dddddd; +} + +.list-search-frame { + @include list-search; + .searchbox { + display: flex; + width: 100%; + height: 100%; + align-items: center; + input { + display: inline-flex; + width: 100%; + font-size: 1em; + padding-left: 0; + line-height: 1.4em; + } + .btn-search { + color: #777777; + font-size: 12px; + display: inline-flex; + margin-left: auto; + flex: none; + } + } +} + +.list-search-frame { + .searchbox { + height: 100%; + .mat-form-field { + width: 100%; + height: $search-frame; + .mat-form-field-wrapper { + padding: 0; + padding-bottom: 0 !important; + height: 100%; + .mat-form-field-flex { + height: 100%; + align-items: center; + flex: 1 1 auto; + padding: 0 20px; + .mat-form-field-infix { + font-size: 14px; + border: none; + } + .mat-form-field-suffix { + margin-left: auto; + .mat-icon { + line-height: 24px; + } + } + .mat-form-field-label-wrapper { + .mat-form-field-label { + line-height: 1.4em; + } + } + } + .icon-button { + color: rgb(0, 0, 0, 0.7); + &.btn-close { + width: 18px; + height: 18px; + min-width: 16px; + padding: 0 0 10px 0; + display: flex; + justify-content: center; + align-items: center; + } + .mat-button-wrapper { + width: 100%; + height: 100%; + justify-content: inherit; + align-items: inherit; + } + } + } + } + .mat-form-field-appearance-legacy { + .mat-form-field-wrapper { + padding: 0; + } + .mat-form-field-underline { + bottom: 0; + background-color: unset !important; + .mat-form-field-ripple { + height: 1px; + } + } + } + } +} + +// call-office +.dialog-search { + .list-search-frame { + background-color: #ffffff; + border-bottom: 1px solid rgb(0, 0, 0, 0.87); + margin-bottom: 10px; + transform: translateY(-1px); + } +} + +.selectbox { + display: inline-flex; + width: 46%; + padding-left: 20px; + line-height: 1.4em; + + & + .searchbox { + width: 54%; + display: inline-flex; + input { + display: inline-flex; + width: 100%; + font-size: 1em; + line-height: 1.4em; + padding-left: 0; + } + .btn-search { + color: #777777; + font-size: 12px; + display: inline-flex; + margin-left: auto; + flex: none; + } + } +} diff --git a/projects/ui-skin-default/src/public-api.ts b/projects/ui-skin-default/src/public-api.ts new file mode 100644 index 0000000..8450771 --- /dev/null +++ b/projects/ui-skin-default/src/public-api.ts @@ -0,0 +1,5 @@ +/* + * Public API Surface of ui-skin-default + */ + +export const SKIN_NAME = 'default'; diff --git a/projects/ui-skin-default/src/test.ts b/projects/ui-skin-default/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/ui-skin-default/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/ui-skin-default/tsconfig.lib.json b/projects/ui-skin-default/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/ui-skin-default/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/ui-skin-default/tsconfig.lib.prod.json b/projects/ui-skin-default/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/ui-skin-default/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/ui-skin-default/tsconfig.spec.json b/projects/ui-skin-default/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/ui-skin-default/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/ui-skin-default/tslint.json b/projects/ui-skin-default/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/ui-skin-default/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/ui/README.md b/projects/ui/README.md new file mode 100644 index 0000000..b9dcb00 --- /dev/null +++ b/projects/ui/README.md @@ -0,0 +1,24 @@ +# Ui + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui`. +> Note: Don't forget to add `--project ui` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build ui` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build ui`, go to the dist folder `cd dist/ui` and run `npm publish`. + +## Running unit tests + +Run `ng test ui` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/ui/karma.conf.js b/projects/ui/karma.conf.js new file mode 100644 index 0000000..4c2affe --- /dev/null +++ b/projects/ui/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/ui'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/ui/ng-package.json b/projects/ui/ng-package.json new file mode 100644 index 0000000..6e1674f --- /dev/null +++ b/projects/ui/ng-package.json @@ -0,0 +1,20 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ui", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "moment": "moment", + "moment-timezone": "moment-timezone", + "autolinker": "autolinker", + "libphonenumber-js": "libphonenumber-js", + "@ngx-translate/core": "@ngx-translate/core", + "@ucap/core": "@ucap/core", + "@ucap/api": "@ucap/api", + "@ucap/api-common": "@ucap/api-common", + "@ucap/protocol-event": "@ucap/protocol-event", + "@ucap/native": "@ucap/native", + "@ucap/ng-i18n": "@ucap/ng-i18n" + } + } +} diff --git a/projects/ui/package.json b/projects/ui/package.json new file mode 100644 index 0000000..30af4ab --- /dev/null +++ b/projects/ui/package.json @@ -0,0 +1,23 @@ +{ + "name": "@ucap/ng-ui", + "version": "0.0.3", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/cdk": "^9.0.0", + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@angular/material": "^9.0.0", + "@ucap/core": "~0.0.1", + "@ucap/api": "~0.0.1", + "@ucap/protocol-event": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "@ucap/ng-api-common": "~0.0.1", + "autolinker": "^3.13.0", + "libphonenumber-js": "^1.7.47", + "moment": "^2.24.0", + "moment-timezone": "^0.5.28", + "tslib": "^1.10.0" + } +} diff --git a/projects/ui/src/lib/animations/index.ts b/projects/ui/src/lib/animations/index.ts new file mode 100644 index 0000000..d2a2903 --- /dev/null +++ b/projects/ui/src/lib/animations/index.ts @@ -0,0 +1,624 @@ +import { + sequence, + trigger, + animate, + style, + group, + query, + transition, + animateChild, + state, + animation, + useAnimation, + stagger, + keyframes +} from '@angular/animations'; + +const customAnimation = animation( + [ + style({ + opacity: '{{opacity}}', + transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})' + }), + animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*')) + ], + { + params: { + duration: '200ms', + delay: '0ms', + opacity: '0', + scale: '1', + x: '0', + y: '0', + z: '0' + } + } +); + +export const ucapAnimations = [ + trigger('animate', [ + transition('void => *', [useAnimation(customAnimation)]) + ]), + + trigger('animateStagger', [ + state('50', style('*')), + state('100', style('*')), + state('200', style('*')), + + transition( + 'void => 50', + query('@*', [stagger('50ms', [animateChild()])], { + optional: true + }) + ), + transition( + 'void => 100', + query('@*', [stagger('100ms', [animateChild()])], { + optional: true + }) + ), + transition( + 'void => 200', + query('@*', [stagger('200ms', [animateChild()])], { + optional: true + }) + ) + ]), + + trigger('fadeInOut', [ + state( + '0, void', + style({ + opacity: 0 + }) + ), + state( + '1, *', + style({ + opacity: 1 + }) + ), + transition('1 => 0', animate('300ms ease-out')), + transition('0 => 1', animate('300ms ease-in')), + transition('void <=> *', animate('300ms ease-in')) + ]), + + trigger('slideInOut', [ + state( + '0', + style({ + height: '0px' + }) + ), + state( + '1', + style({ + height: '*' + }) + ), + transition('1 => 0', animate('300ms ease-out')), + transition('0 => 1', animate('300ms ease-in')) + ]), + + trigger('slideIn', [ + transition('void => left', [ + style({ + transform: 'translateX(100%)' + }), + animate( + '300ms ease-in', + style({ + transform: 'translateX(0)' + }) + ) + ]), + transition('left => void', [ + style({ + transform: 'translateX(0)' + }), + animate( + '300ms ease-in', + style({ + transform: 'translateX(-100%)' + }) + ) + ]), + transition('void => right', [ + style({ + transform: 'translateX(-100%)' + }), + animate( + '300ms ease-in', + style({ + transform: 'translateX(0)' + }) + ) + ]), + transition('right => void', [ + style({ + transform: 'translateX(0)' + }), + animate( + '300ms ease-in', + style({ + transform: 'translateX(100%)' + }) + ) + ]) + ]), + + trigger('slideInLeft', [ + state( + 'void', + style({ + transform: 'translateX(-100%)' + }) + ), + state( + '*', + style({ + transform: 'translateX(0)' + }) + ), + transition('void => *', animate('300ms')), + transition('* => void', animate('300ms')) + ]), + + trigger('slideInRight', [ + state( + 'void', + style({ + transform: 'translateX(100%)' + }) + ), + state( + '*', + style({ + transform: 'translateX(0)' + }) + ), + transition('void => *', animate('300ms')), + transition('* => void', animate('300ms')) + ]), + + trigger('slideInTop', [ + state( + 'void', + style({ + transform: 'translateY(-100%)' + }) + ), + state( + '*', + style({ + transform: 'translateY(0)' + }) + ), + transition('void => *', animate('300ms')), + transition('* => void', animate('300ms')) + ]), + + trigger('slideInBottom', [ + state( + 'void', + style({ + transform: 'translateY(100%)' + }) + ), + state( + '*', + style({ + transform: 'translateY(0)' + }) + ), + transition('void => *', animate('300ms')), + transition('* => void', animate('300ms')) + ]), + + trigger('expandCollapse', [ + state( + 'void', + style({ + height: '0px' + }) + ), + state( + '*', + style({ + height: '*' + }) + ), + transition('void => *', animate('300ms ease-out')), + transition('* => void', animate('300ms ease-in')) + ]), + + // ----------------------------------------------------------------------------------------------------- + // @ Router animations + // ----------------------------------------------------------------------------------------------------- + + trigger('routerTransitionLeft', [ + transition('* => *', [ + query( + 'content > :enter, content > :leave', + [ + style({ + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0 + }) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ + transform: 'translateX(100%)', + opacity: 0 + }) + ], + { optional: true } + ), + sequence([ + group([ + query( + 'content > :leave', + [ + style({ + transform: 'translateX(0)', + opacity: 1 + }), + animate( + '600ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + transform: 'translateX(-100%)', + opacity: 0 + }) + ) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ transform: 'translateX(100%)' }), + animate( + '600ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + transform: 'translateX(0%)', + opacity: 1 + }) + ) + ], + { optional: true } + ) + ]), + query('content > :leave', animateChild(), { optional: true }), + query('content > :enter', animateChild(), { optional: true }) + ]) + ]) + ]), + + trigger('routerTransitionRight', [ + transition('* => *', [ + query( + 'content > :enter, content > :leave', + [ + style({ + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0 + }) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ + transform: 'translateX(-100%)', + opacity: 0 + }) + ], + { optional: true } + ), + sequence([ + group([ + query( + 'content > :leave', + [ + style({ + transform: 'translateX(0)', + opacity: 1 + }), + animate( + '600ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + transform: 'translateX(100%)', + opacity: 0 + }) + ) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ transform: 'translateX(-100%)' }), + animate( + '600ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + transform: 'translateX(0%)', + opacity: 1 + }) + ) + ], + { optional: true } + ) + ]), + query('content > :leave', animateChild(), { optional: true }), + query('content > :enter', animateChild(), { optional: true }) + ]) + ]) + ]), + + trigger('routerTransitionUp', [ + transition('* => *', [ + query( + 'content > :enter, content > :leave', + [ + style({ + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0 + }) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ + transform: 'translateY(100%)', + opacity: 0 + }) + ], + { optional: true } + ), + group([ + query( + 'content > :leave', + [ + style({ + transform: 'translateY(0)', + opacity: 1 + }), + animate( + '600ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + transform: 'translateY(-100%)', + opacity: 0 + }) + ) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ transform: 'translateY(100%)' }), + animate( + '600ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + transform: 'translateY(0%)', + opacity: 1 + }) + ) + ], + { optional: true } + ) + ]), + query('content > :leave', animateChild(), { optional: true }), + query('content > :enter', animateChild(), { optional: true }) + ]) + ]), + + trigger('routerTransitionDown', [ + transition('* => *', [ + query( + 'content > :enter, content > :leave', + [ + style({ + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0 + }) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ + transform: 'translateY(-100%)', + opacity: 0 + }) + ], + { optional: true } + ), + sequence([ + group([ + query( + 'content > :leave', + [ + style({ + transform: 'translateY(0)', + opacity: 1 + }), + animate( + '600ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + transform: 'translateY(100%)', + opacity: 0 + }) + ) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ transform: 'translateY(-100%)' }), + animate( + '600ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + transform: 'translateY(0%)', + opacity: 1 + }) + ) + ], + { optional: true } + ) + ]), + query('content > :leave', animateChild(), { optional: true }), + query('content > :enter', animateChild(), { optional: true }) + ]) + ]) + ]), + + trigger('routerTransitionFade', [ + transition( + '* => *', + group([ + query( + 'content > :enter, content > :leave ', + [ + style({ + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0 + }) + ], + { optional: true } + ), + + query( + 'content > :enter', + [ + style({ + opacity: 0 + }) + ], + { optional: true } + ), + query( + 'content > :leave', + [ + style({ + opacity: 1 + }), + animate( + '300ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + opacity: 0 + }) + ) + ], + { optional: true } + ), + query( + 'content > :enter', + [ + style({ + opacity: 0 + }), + animate( + '300ms cubic-bezier(0.0, 0.0, 0.2, 1)', + style({ + opacity: 1 + }) + ) + ], + { optional: true } + ), + query('content > :enter', animateChild(), { optional: true }), + query('content > :leave', animateChild(), { optional: true }) + ]) + ) + ]), + + trigger('treeToggler', [ + state( + '0, void', + style({ + opacity: 0 + }) + ), + state( + '1, *', + style({ + opacity: 1 + }) + ), + transition('1 => 0', animate('300ms ease-out')), + transition('0 => 1', animate('300ms ease-in')), + transition('void <=> *', animate('300ms ease-in')) + ]), + + /** + * Floating ACtion Button Animation. + */ + trigger('fabToggler', [ + state( + 'inactive', + style({ + transform: 'rotate(0deg)' + }) + ), + state( + 'active', + style({ + transform: 'rotate(225deg)' + }) + ), + transition('* <=> *', animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)')) + ]), + trigger('speedDialStagger', [ + transition('* => *', [ + query(':enter', style({ opacity: 0 }), { optional: true }), + + query( + ':enter', + stagger('40ms', [ + animate( + '200ms cubic-bezier(0.4, 0.0, 0.2, 1)', + keyframes([ + style({ opacity: 0, transform: 'translateY(10px)' }), + style({ opacity: 1, transform: 'translateY(0)' }) + ]) + ) + ]), + { optional: true } + ), + + query( + ':leave', + animate( + '200ms cubic-bezier(0.4, 0.0, 0.2, 1)', + keyframes([style({ opacity: 1 }), style({ opacity: 0 })]) + ), + { optional: true } + ) + ]) + ]) +]; diff --git a/projects/ui/src/lib/components/file-upload-queue.component.html b/projects/ui/src/lib/components/file-upload-queue.component.html new file mode 100644 index 0000000..10a6bea --- /dev/null +++ b/projects/ui/src/lib/components/file-upload-queue.component.html @@ -0,0 +1,44 @@ +
+
+
+ + + + + + +
{{ fileUploadItem.file.name }}
+ +
+ +
+ + +
+
+ +
+
+ {{ 'common.file.dropZoneForUpload' | ucapI18n }} +
+
+
+
diff --git a/projects/ui/src/lib/components/file-upload-queue.component.scss b/projects/ui/src/lib/components/file-upload-queue.component.scss new file mode 100644 index 0000000..8d0975c --- /dev/null +++ b/projects/ui/src/lib/components/file-upload-queue.component.scss @@ -0,0 +1,55 @@ +@mixin ellipsis($row) { + overflow: hidden; + text-overflow: ellipsis; + @if $row == 1 { + display: block; + white-space: nowrap; + word-wrap: normal; + } @else if $row >= 2 { + display: -webkit-box; + -webkit-line-clamp: $row; + -webkit-box-orient: vertical; + word-wrap: break-word; + } +} + +.ucap-file-upload-queue-container { + width: 100%; + height: 100%; + .file-upload-item { + min-width: 200px; + margin: 0 1%; + margin-bottom: 10px; + width: 100%; + border-radius: 3px; + background-color: #f9f9f9; + border: 1px solid #dddddd; + .file-upload-info { + padding: 10px; + svg { + margin-right: 6px; + } + .file-upload-name { + height: 20px; + @include ellipsis(2); + } + } + .file-upload-progress { + padding: 6px 10px; + } + } + .uploadItems { + width: 100%; + font-size: 0.9em; + .msg-guide { + display: flex; + flex: row; + color: #ffffff; + justify-content: center; + align-items: center; + .icon-img { + margin-right: 6px; + } + } + } +} diff --git a/projects/ui/src/lib/components/file-upload-queue.component.ts b/projects/ui/src/lib/components/file-upload-queue.component.ts new file mode 100644 index 0000000..c42c94e --- /dev/null +++ b/projects/ui/src/lib/components/file-upload-queue.component.ts @@ -0,0 +1,113 @@ +import { + Component, + OnInit, + Input, + ElementRef, + AfterViewInit +} from '@angular/core'; + +import { FileUploadItem } from '@ucap/api'; + +@Component({ + selector: 'ucap-file-upload-queue', + templateUrl: './file-upload-queue.component.html', + styleUrls: ['./file-upload-queue.component.scss'] +}) +export class FileUploadQueueComponent implements OnInit, AfterViewInit { + @Input() + dropZoneIncludeParent = false; + + fileUploadItems: FileUploadItem[]; + uploadItems: DataTransferItem[]; + + constructor(private elementRef: ElementRef) {} + + ngOnInit() {} + + ngAfterViewInit(): void { + this.changeStyleDisplay(false); + } + + onDragEnter(items: DataTransferItemList): void { + if (!items || 0 === items.length) { + return; + } + + const uploadItems: DataTransferItem[] = []; + // tslint:disable-next-line: prefer-for-of + for (let i = 0; i < items.length; i++) { + uploadItems.push(items[i]); + } + this.uploadItems = [...uploadItems]; + this.changeStyleDisplay(true); + } + + onDragLeave(): void { + this.changeStyleDisplay(false); + } + + onDrop(fileUploadItems: FileUploadItem[]) { + if (!fileUploadItems || 0 === fileUploadItems.length) { + return; + } + this.fileUploadItems = fileUploadItems; + this.uploadItems = undefined; + } + + onFileSelected(fileUploadItems: FileUploadItem[]): void { + if (!fileUploadItems || 0 === fileUploadItems.length) { + return; + } + this.fileUploadItems = fileUploadItems; + this.uploadItems = undefined; + this.changeStyleDisplay(true); + } + + onUploadComplete(): void { + setTimeout(() => { + this.fileUploadItems = undefined; + this.changeStyleDisplay(false); + }, 1000); + } + + isEventInElement(event: DragEvent): boolean { + const rect = this.elementRef.nativeElement.getBoundingClientRect(); + // const rect: DOMRect = this.elementRef.nativeElement.getBoundingClientRect(); + + if ( + event.pageX >= rect.left && + event.pageX <= rect.left + rect.width && + event.pageY >= rect.top && + event.pageY <= rect.top + rect.height + ) { + return true; + } + return false; + } + + private changeStyleDisplay(show: boolean): void { + if (show || (!!this.fileUploadItems && 0 < this.fileUploadItems.length)) { + if (this.dropZoneIncludeParent) { + this.elementRef.nativeElement.parentElement.style.display = ''; + } else { + this.elementRef.nativeElement.style.display = ''; + } + } else { + if (this.dropZoneIncludeParent) { + this.elementRef.nativeElement.parentElement.style.display = 'none'; + } else { + this.elementRef.nativeElement.style.display = 'none'; + } + } + } + + // onClickClear(fileUploadItem: FileUploadItem) { + // this.fileUploadItems = this.fileUploadItems.filter(f => { + // return ( + // f.file.name !== fileUploadItem.file.name && + // f.file.path !== fileUploadItem.file.path + // ); + // }); + // this.filesChange.emit(this.fileUploadItems); + // } +} diff --git a/projects/ui/src/lib/components/file-viewer.component.html b/projects/ui/src/lib/components/file-viewer.component.html new file mode 100644 index 0000000..caced57 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer.component.html @@ -0,0 +1,40 @@ +
+ + + + + +
diff --git a/projects/ui/src/lib/components/file-viewer.component.scss b/projects/ui/src/lib/components/file-viewer.component.scss new file mode 100644 index 0000000..9e8bf81 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer.component.scss @@ -0,0 +1,4 @@ +.ucap-file-viewer-container { + width: 100%; + height: 100%; +} diff --git a/projects/ui/src/lib/components/file-viewer.component.spec.ts b/projects/ui/src/lib/components/file-viewer.component.spec.ts new file mode 100644 index 0000000..71f25cd --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { FileViewerComponent } from './file-viewer.component'; + +describe('FileViewerComponent', () => { + let component: FileViewerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [FileViewerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FileViewerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/file-viewer.component.ts b/projects/ui/src/lib/components/file-viewer.component.ts new file mode 100644 index 0000000..b224fed --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer.component.ts @@ -0,0 +1,59 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +import { FileDownloadItem } from '@ucap/api'; + +import { FileEventJson, FileType } from '@ucap/protocol-event'; + +import { FileViewerType } from '../types/file-viewer.type'; + +@Component({ + selector: 'ucap-file-viewer', + templateUrl: './file-viewer.component.html', + styleUrls: ['./file-viewer.component.scss'] +}) +export class FileViewerComponent implements OnInit { + @Input() + fileInfo: FileEventJson; + + @Input() + fileDownloadUrl: string; + + @Output() + download = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + FileViewerType = FileViewerType; + + constructor() {} + + ngOnInit() {} + + detectFileViewerType(fileInfo: FileEventJson): FileViewerType { + switch (fileInfo.fileType) { + case FileType.Image: + return FileViewerType.Image; + case FileType.Sound: + return FileViewerType.Sound; + case FileType.Video: + return FileViewerType.Video; + default: + if (this.isSoundFile(fileInfo.fileExt)) { + return FileViewerType.Sound; + } + return FileViewerType.Binary; + } + } + onDownload(fileDownloadItem: FileDownloadItem): void { + this.download.emit(fileDownloadItem); + } + + onClosedViewer(): void { + this.closed.emit(); + } + + private isSoundFile(fileExt: string): boolean { + return -1 !== ['mp3'].indexOf(fileExt); + } +} diff --git a/projects/ui/src/lib/components/file-viewer/binary-viewer.component.html b/projects/ui/src/lib/components/file-viewer/binary-viewer.component.html new file mode 100644 index 0000000..b3ccab1 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/binary-viewer.component.html @@ -0,0 +1,109 @@ +
+ + + + + + {{ fileInfo.fileName }} + + + + + + +
+
+ +
+
+
+
+
+
+
+
+
+
+ {{ 'common.file.errors.noPreview' | ucapI18n }} +
+
+ +
+
+
+
diff --git a/projects/ui/src/lib/components/file-viewer/binary-viewer.component.scss b/projects/ui/src/lib/components/file-viewer/binary-viewer.component.scss new file mode 100644 index 0000000..3385ef7 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/binary-viewer.component.scss @@ -0,0 +1,64 @@ +.ucap-binary-viewer-container { + width: 100%; + height: 100%; + + .ucap-binary-viewer-header { + width: 100%; + height: 60px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.6); + background-color: #333333; + color: #ffffff; + + .ucap-binary-viewer-icon { + margin-right: 10px; + } + + .ucap-binary-viewer-title { + font-size: 16px; + } + + .ucap-binary-viewer-spacer { + flex: 1 1 auto; + } + + .stroke-bar { + width: 1px; + height: 30px; + background-color: rgba(256, 256, 256, 0.3); + margin: 0 10px; + } + .ucap-binary-viewer-action { + margin-left: auto; + &:hover { + opacity: 0.7; + } + } + } + + .ucap-binary-viewer-body { + position: relative; + width: 100%; + height: calc(100% - 60px); + + .ucap-image-viewer-image-wrapper { + height: 100%; + padding: 20px; + background-color: rgba(0, 0, 0, 0.9); + } + .circle-box { + display: flex; + width: 140px; + height: 140px; + border-radius: 50%; + justify-content: center; + align-items: center; + border: 2px solid #ffffff; + background-color: rgba(256, 256, 256, 0.7); + } + .guide-msg { + font-size: 16px; + margin: 30px; + color: #ffffff; + } + } +} diff --git a/projects/ui/src/lib/components/file-viewer/binary-viewer.component.spec.ts b/projects/ui/src/lib/components/file-viewer/binary-viewer.component.spec.ts new file mode 100644 index 0000000..b5932b4 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/binary-viewer.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { BinaryViewerComponent } from './binary-viewer.component'; + +describe('BinaryViewerComponent', () => { + let component: BinaryViewerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [BinaryViewerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BinaryViewerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/file-viewer/binary-viewer.component.ts b/projects/ui/src/lib/components/file-viewer/binary-viewer.component.ts new file mode 100644 index 0000000..60fe96b --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/binary-viewer.component.ts @@ -0,0 +1,39 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +import { FileDownloadItem } from '@ucap/api'; + +import { FileEventJson } from '@ucap/protocol-event'; + +@Component({ + selector: 'ucap-binary-viewer', + templateUrl: './binary-viewer.component.html', + styleUrls: ['./binary-viewer.component.scss'] +}) +export class BinaryViewerComponent implements OnInit { + @Input() + fileInfo: FileEventJson; + + @Input() + fileDownloadUrl: string; + + @Output() + download = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + fileDownloadItem: FileDownloadItem; + + constructor() {} + + ngOnInit() {} + + onClickDownload(): void { + this.fileDownloadItem = new FileDownloadItem(); + this.download.emit(this.fileDownloadItem); + } + + onClickClose(): void { + this.closed.emit(); + } +} diff --git a/projects/ui/src/lib/components/file-viewer/document-viewer.component.html b/projects/ui/src/lib/components/file-viewer/document-viewer.component.html new file mode 100644 index 0000000..1590190 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/document-viewer.component.html @@ -0,0 +1,29 @@ +
+ + Third Line + + favorite + delete + +
+
+ +
+
+
diff --git a/projects/ui/src/lib/components/file-viewer/document-viewer.component.scss b/projects/ui/src/lib/components/file-viewer/document-viewer.component.scss new file mode 100644 index 0000000..9c406ef --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/document-viewer.component.scss @@ -0,0 +1,13 @@ +.ucap-document-viewer-container { + width: 100%; + height: 100%; + + .ucap-document-viewer-header { + width: 100%; + height: 50px; + + .ucap-document-viewer-spacer { + flex: 1 1 auto; + } + } +} diff --git a/projects/ui/src/lib/components/file-viewer/document-viewer.component.spec.ts b/projects/ui/src/lib/components/file-viewer/document-viewer.component.spec.ts new file mode 100644 index 0000000..3ec0ca9 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/document-viewer.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { DocumentViewerComponent } from './document-viewer.component'; + +describe('DocumentViewerComponent', () => { + let component: DocumentViewerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [DocumentViewerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DocumentViewerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/file-viewer/document-viewer.component.ts b/projects/ui/src/lib/components/file-viewer/document-viewer.component.ts new file mode 100644 index 0000000..78ea253 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/document-viewer.component.ts @@ -0,0 +1,39 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +import { FileDownloadItem } from '@ucap/api'; + +import { FileEventJson } from '@ucap/protocol-event'; + +@Component({ + selector: 'ucap-document-viewer', + templateUrl: './document-viewer.component.html', + styleUrls: ['./document-viewer.component.scss'] +}) +export class DocumentViewerComponent implements OnInit { + @Input() + fileInfo: FileEventJson; + + @Input() + fileDownloadUrl: string; + + @Output() + download = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + fileDownloadItem: FileDownloadItem; + + constructor() {} + + ngOnInit() {} + + onClickDownload(): void { + this.fileDownloadItem = new FileDownloadItem(); + this.download.emit(this.fileDownloadItem); + } + + onClickClose(): void { + this.closed.emit(); + } +} diff --git a/projects/ui/src/lib/components/file-viewer/image-viewer.component.html b/projects/ui/src/lib/components/file-viewer/image-viewer.component.html new file mode 100644 index 0000000..cdd0288 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/image-viewer.component.html @@ -0,0 +1,179 @@ +
+ + + + + + + + {{ fileInfo.fileName }} + + + + + + + + + +
+
+ +
+
+
+
+ +
+
+
diff --git a/projects/ui/src/lib/components/file-viewer/image-viewer.component.scss b/projects/ui/src/lib/components/file-viewer/image-viewer.component.scss new file mode 100644 index 0000000..887f670 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/image-viewer.component.scss @@ -0,0 +1,70 @@ +.ucap-image-viewer-container { + width: 100%; + height: 100%; + + .ucap-image-viewer-header { + width: 100%; + height: 60px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.6); + background-color: #333333; + + .ucap-image-viewer-icon { + margin-right: 10px; + } + + .ucap-image-viewer-title { + font-size: 16px; + } + + .ucap-image-viewer-spacer { + flex: 1 1 auto; + } + + .stroke-bar { + width: 1px; + height: 30px; + background-color: rgba(256, 256, 256, 0.3); + margin: 0 10px; + } + .ucap-image-viewer-action { + &:hover { + opacity: 0.7; + } + } + } + + .ucap-image-viewer-body { + position: relative; + width: 100%; + height: calc(100% - 60px); + + .ucap-image-viewer-image-wrapper { + position: relative; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + overflow: auto; + + img { + position: absolute; + max-width: none !important; + } + + &::-webkit-scrollbar { + background-color: rgba(0, 0, 0, 0.7); + } + &::-webkit-scrollbar-corner { + background-color: rgba(0, 0, 0, 0.7); + } + &::-webkit-scrollbar:hover { + background-color: rgba(255, 255, 255, 0.12); + } + &::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 12px rgba(255, 255, 255, 0.37); + } + &::-webkit-scrollbar-thumb:active { + box-shadow: inset 0 0 0 12px rgba(255, 255, 255, 0.54); + } + } + } +} diff --git a/projects/ui/src/lib/components/file-viewer/image-viewer.component.spec.ts b/projects/ui/src/lib/components/file-viewer/image-viewer.component.spec.ts new file mode 100644 index 0000000..9306526 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/image-viewer.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { ImageViewerComponent } from './image-viewer.component'; + +describe('ImageViewerComponent', () => { + let component: ImageViewerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ImageViewerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ImageViewerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/file-viewer/image-viewer.component.ts b/projects/ui/src/lib/components/file-viewer/image-viewer.component.ts new file mode 100644 index 0000000..e1ee4c8 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/image-viewer.component.ts @@ -0,0 +1,144 @@ +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ChangeDetectorRef, + ViewChild, + ElementRef, + HostListener +} from '@angular/core'; + +import { FileEventJson } from '@ucap/protocol-event'; +import { FileDownloadItem } from '@ucap/api'; + +@Component({ + selector: 'ucap-image-viewer', + templateUrl: './image-viewer.component.html', + styleUrls: ['./image-viewer.component.scss'] +}) +export class ImageViewerComponent implements OnInit { + @Input() + fileInfo: FileEventJson; + + @Input() + fileDownloadUrl: string; + + @Output() + closed = new EventEmitter(); + + @Output() + download = new EventEmitter(); + + @ViewChild('imageContainer', { static: false }) + imageContainer: ElementRef; + + @ViewChild('downloadImage', { static: false }) + downloadImage: ElementRef; + + fileDownloadItem: FileDownloadItem; + + naturalWidth = 0; + naturalHeight = 0; + imageHeight = 0; + + zoomRatio = 100; + + constructor(private changeDetectorRef: ChangeDetectorRef) {} + + ngOnInit() { + this.naturalWidth = this.fileInfo.imageWidth; + this.naturalHeight = this.fileInfo.imageHeight; + } + + @HostListener('window:resize', ['$event']) + onResize(event: Event) { + this.setImageHeight(); + + this.changeDetectorRef.detectChanges(); + } + + onClickDownload(): void { + this.fileDownloadItem = new FileDownloadItem(); + this.download.emit(this.fileDownloadItem); + } + + onClickClose(): void { + this.closed.emit(); + } + + onLoadFileDownloadUrl(img: HTMLImageElement) { + this.naturalWidth = img.naturalWidth; + this.naturalHeight = img.naturalHeight; + + this.setImageHeight(); + + this.changeDetectorRef.detectChanges(); + } + + onClickZoomOut() { + if (60 >= this.zoomRatio) { + return; + } + this.zoomRatio -= 10; + + this.setImageHeight(); + + this.changeDetectorRef.detectChanges(); + } + onClickZoomIn() { + if (180 <= this.zoomRatio) { + return; + } + this.zoomRatio += 10; + + this.setImageHeight(); + + this.changeDetectorRef.detectChanges(); + } + onClickZoomReset() { + this.zoomRatio = 100; + + this.setImageHeight(); + + this.changeDetectorRef.detectChanges(); + } + + setImageHeight() { + const realContainerHeight = + this.imageContainer.nativeElement.clientHeight - 20; + const oriHeight = + this.naturalHeight > realContainerHeight + ? realContainerHeight + : this.naturalHeight; + + const oriWidth = (oriHeight * this.naturalWidth) / this.naturalHeight; + + const imageHeight = oriHeight * (this.zoomRatio / 100); + const imageWidth = oriWidth * (this.zoomRatio / 100); + let imageTop = + (this.imageContainer.nativeElement.clientHeight - imageHeight) / 2; + let imageLeft = + (this.imageContainer.nativeElement.clientWidth - imageWidth) / 2; + + let scrollTop = 0; + if (0 > imageTop) { + scrollTop = Math.abs(imageTop); + imageTop = 0; + } + + let scrollLeft = 0; + if (0 > imageLeft) { + scrollLeft = Math.abs(imageLeft); + imageLeft = 0; + } + + this.downloadImage.nativeElement.style.top = `${imageTop}px`; + this.downloadImage.nativeElement.style.left = `${imageLeft}px`; + this.imageContainer.nativeElement.scrollTop = scrollTop; + this.imageContainer.nativeElement.scrollLeft = scrollLeft; + + this.imageHeight = imageHeight; + } +} diff --git a/projects/ui/src/lib/components/file-viewer/sound-viewer.component.html b/projects/ui/src/lib/components/file-viewer/sound-viewer.component.html new file mode 100644 index 0000000..22e66f7 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/sound-viewer.component.html @@ -0,0 +1,144 @@ +
+ + music_note + {{ fileInfo.fileName }} + + + + + +
+
+ +
+
+
+
+ +
+ + music_note + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+ {{ currentTime | ucapSecondsToMinutes }} +
+ + + +
+ {{ duration | ucapSecondsToMinutes }} +
+
+
+
+
diff --git a/projects/ui/src/lib/components/file-viewer/sound-viewer.component.scss b/projects/ui/src/lib/components/file-viewer/sound-viewer.component.scss new file mode 100644 index 0000000..9419346 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/sound-viewer.component.scss @@ -0,0 +1,160 @@ +.ucap-sound-viewer-container { + width: 100%; + height: 100%; + + .ucap-sound-viewer-header { + width: 100%; + height: 60px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.6); + background-color: #333333; + + .ucap-sound-viewer-icon { + margin-right: 10px; + } + + .ucap-sound-viewer-title { + font-size: 16px; + } + .stroke-bar { + width: 1px; + height: 30px; + background-color: rgba(256, 256, 256, 0.3); + margin: 0 10px; + } + .ucap-sound-viewer-action { + &:hover { + opacity: 0.7; + } + } + } + + .ucap-sound-viewer-body { + position: relative; + width: 100%; + height: calc(100% - 60px); + + .circle-box { + position: relative; + display: flex; + width: 140px; + height: 140px; + border-radius: 50%; + justify-content: center; + align-items: center; + border: 2px solid #ffffff; + background-color: rgba(256, 256, 256, 0.7); + .mat-icon { + font-size: 100px; + height: 100px; + width: 100px; + } + .sound-wave { + height: 80px; + left: 50%; + margin: -35px 0 0 -35px; + position: absolute; + bottom: 30px; + width: 70px; + } + } + + .ucap-sound-viewer-sound-icon { + width: 100%; + height: calc(100% - 80px); + } + .viewer-bottom { + background-color: #212121; + color: #ffffff; + .ucap-sound-viewer-sound-time { + width: 100%; + height: 30px; + } + .ucap-sound-viewer-sound-controls { + width: 100%; + height: 50px; + + .ucap-sound-viewer-sound-time-current { + padding-left: 30px; + } + + .ucap-sound-viewer-sound-time-total { + padding-right: 30px; + } + } + } + } + .ucap-sound-viewer-spacer { + flex: 1 1 auto; + } + .ucap-sound-viewer-action { + .mat-icon { + font-size: 40px; + width: 100%; + height: 100%; + line-height: 50px; + } + } +} + +.sound-bar { + bottom: 1px; + height: 10px; + position: absolute; + width: 5px; + animation: sound-play 0ms -800ms linear infinite alternate; +} +.sound-bar:nth-child(1) { + left: 0px; + animation-duration: 474ms; +} +.sound-bar:nth-child(2) { + left: 7px; + animation-duration: 433ms; +} +.sound-bar { + left: 14px; + animation-duration: 407ms; +} +.sound-bar:nth-child(4) { + left: 21px; + animation-duration: 458ms; +} +.sound-bar:nth-child(5) { + left: 28px; + animation-duration: 400ms; +} +.sound-bar:nth-child(6) { + left: 35px; + animation-duration: 427ms; +} +.sound-bar:nth-child(7) { + left: 42px; + animation-duration: 441ms; +} +.sound-bar:nth-child(8) { + left: 49px; + animation-duration: 419ms; +} +.sound-bar:nth-child(9) { + left: 56px; + animation-duration: 487ms; +} +.sound-bar:nth-child(10) { + left: 63px; + animation-duration: 442ms; +} + +@keyframes sound-play { + 0% { + opacity: 0.35; + height: 10px; + } + 100% { + opacity: 1; + height: 60px; + } +} + +mat-slider { + width: 94%; +} diff --git a/projects/ui/src/lib/components/file-viewer/sound-viewer.component.spec.ts b/projects/ui/src/lib/components/file-viewer/sound-viewer.component.spec.ts new file mode 100644 index 0000000..722d6ae --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/sound-viewer.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { SoundViewerComponent } from './sound-viewer.component'; + +describe('SoundViewerComponent', () => { + let component: SoundViewerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [SoundViewerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SoundViewerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/file-viewer/sound-viewer.component.ts b/projects/ui/src/lib/components/file-viewer/sound-viewer.component.ts new file mode 100644 index 0000000..d6a4cad --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/sound-viewer.component.ts @@ -0,0 +1,101 @@ +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ViewChild, + ElementRef +} from '@angular/core'; + +import { MatSlider, MatSliderChange } from '@angular/material/slider'; + +import { FileDownloadItem } from '@ucap/api'; +import { FileEventJson } from '@ucap/protocol-event'; + +@Component({ + selector: 'ucap-sound-viewer', + templateUrl: './sound-viewer.component.html', + styleUrls: ['./sound-viewer.component.scss'] +}) +export class SoundViewerComponent implements OnInit { + @Input() + fileInfo: FileEventJson; + + @Input() + fileDownloadUrl: string; + + @Output() + download = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + @ViewChild('audioPlayer', { static: true }) + audioPlayer: ElementRef; + + @ViewChild('timeSlider', { static: true }) + timeSlider: MatSlider; + + playing = false; + duration = 0.01; + currentTime = 0; + volume = 0.1; + loading = false; + fileDownloadItem: FileDownloadItem; + + constructor() {} + + ngOnInit() {} + + onClickPlayOrPause(): void { + if (this.loading) { + return; + } + if (this.audioPlayer.nativeElement.paused) { + this.audioPlayer.nativeElement.play(); + } else { + this.currentTime = this.audioPlayer.nativeElement.currentTime; + this.audioPlayer.nativeElement.pause(); + } + } + + onChangeTimeSlider(e: MatSliderChange): void { + this.audioPlayer.nativeElement.currentTime = e.value; + } + + onPlayingAudio(): void { + this.playing = true; + // this.duration = Math.floor(this.audioPlayer.nativeElement.duration); + } + + onPauseAudio(): void { + this.playing = false; + } + + onTimeUpdateAudio(): void { + this.currentTime = Math.floor(this.audioPlayer.nativeElement.currentTime); + } + + onVolumeChangeAudio(): void { + this.volume = Math.floor(this.audioPlayer.nativeElement.volume); + } + + onLoadStartAudio(): void { + this.loading = true; + } + + onLoadedDataAudio(): void { + this.loading = false; + this.duration = Math.floor(this.audioPlayer.nativeElement.duration); + } + + onClickDownload(): void { + this.fileDownloadItem = new FileDownloadItem(); + this.download.emit(this.fileDownloadItem); + } + + onClickClose(): void { + this.closed.emit(); + } +} diff --git a/projects/ui/src/lib/components/file-viewer/video-viewer.component.html b/projects/ui/src/lib/components/file-viewer/video-viewer.component.html new file mode 100644 index 0000000..58d0e63 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/video-viewer.component.html @@ -0,0 +1,169 @@ +
+ + + + + + + + + + + + + {{ fileInfo.fileName }} + + + + + +
+
+ +
+
+
+
+ +
+ {{ 'common.file.errors.cantPlay' | ucapI18n }} +
+
+
+
+ + +
+
+
+ {{ Math.floor(currentTime) | ucapSecondsToMinutes }} +
+ + + +
+ {{ Math.floor(duration) | ucapSecondsToMinutes }} +
+
+
+
+
diff --git a/projects/ui/src/lib/components/file-viewer/video-viewer.component.scss b/projects/ui/src/lib/components/file-viewer/video-viewer.component.scss new file mode 100644 index 0000000..ead7988 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/video-viewer.component.scss @@ -0,0 +1,97 @@ +.ucap-video-viewer-container { + width: 100%; + height: 100%; + + .ucap-video-viewer-header { + width: 100%; + height: 60px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.6); + background-color: #333333; + + .ucap-video-viewer-icon { + margin-right: 10px; + } + + .ucap-video-viewer-title { + font-size: 16px; + } + .stroke-bar { + width: 1px; + height: 30px; + background-color: rgba(256, 256, 256, 0.3); + margin: 0 10px; + } + .ucap-image-viewer-action { + &:hover { + opacity: 0.7; + } + } + } + + .ucap-video-viewer-body { + position: relative; + width: 100%; + height: calc(100% - 60px); + + .ucap-video-viewer-video-icon { + width: 100%; + height: calc(100% - 80px); + + .guide-msg { + font-size: 16px; + margin: 30px; + color: #ffffff; + } + } + .viewer-bottom { + background-color: #212121; + color: #ffffff; + .ucap-video-viewer-video-time { + width: 100%; + height: 30px; + .mat-slider { + width: 94%; + } + } + .ucap-video-viewer-video-controls { + width: 100%; + height: 50px; + + .ucap-video-viewer-video-time-current { + padding-left: 30px; + } + + .ucap-video-viewer-video-time-total { + padding-right: 30px; + } + } + } + } + .ucap-video-viewer-spacer { + flex: 1 1 auto; + } + .ucap-video-viewer-action { + .mat-icon { + font-size: 40px; + width: 100%; + height: 100%; + line-height: 40px; + } + } +} + +//viewr 플레이어 공통 +::ng-deep .viewer-bottom { + .mat-slider-horizontal { + .mat-slider-track-background { + background-color: #999999 !important; + } + &.mat-slider-min-value { + &:not(.mat-slider-thumb-label-showing) { + .mat-slider-thumb { + border-color: #999999 !important; + } + } + } + } +} diff --git a/projects/ui/src/lib/components/file-viewer/video-viewer.component.spec.ts b/projects/ui/src/lib/components/file-viewer/video-viewer.component.spec.ts new file mode 100644 index 0000000..9306526 --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/video-viewer.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { ImageViewerComponent } from './image-viewer.component'; + +describe('ImageViewerComponent', () => { + let component: ImageViewerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ImageViewerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ImageViewerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/file-viewer/video-viewer.component.ts b/projects/ui/src/lib/components/file-viewer/video-viewer.component.ts new file mode 100644 index 0000000..96f11dd --- /dev/null +++ b/projects/ui/src/lib/components/file-viewer/video-viewer.component.ts @@ -0,0 +1,116 @@ +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ViewChild, + ElementRef +} from '@angular/core'; +import { MatSlider, MatSliderChange } from '@angular/material/slider'; + +import { FileDownloadItem } from '@ucap/api'; + +import { FileEventJson } from '@ucap/protocol-event'; + +@Component({ + selector: 'ucap-video-viewer', + templateUrl: './video-viewer.component.html', + styleUrls: ['./video-viewer.component.scss'] +}) +export class VideoViewerComponent implements OnInit { + @Input() + fileInfo: FileEventJson; + + @Input() + fileDownloadUrl: string; + + @Output() + download = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + @ViewChild('audioPlayer', { static: false }) + audioPlayer: ElementRef; + + @ViewChild('timeSlider', { static: true }) + timeSlider: MatSlider; + + playing = false; + duration = 0.0; + currentTime = 0.0; + volume = 0.1; + loading = false; + fileDownloadItem: FileDownloadItem; + + videoWidth = 0; + videoHeight = 0; + + playable = true; + + Math = Math; + + constructor() {} + + ngOnInit() {} + + onClickPlayOrPause(): void { + if (this.loading) { + return; + } + if (this.audioPlayer.nativeElement.paused) { + this.audioPlayer.nativeElement.play(); + } else { + this.currentTime = this.audioPlayer.nativeElement.currentTime; + this.audioPlayer.nativeElement.pause(); + } + } + + onChangeTimeSlider(e: MatSliderChange): void { + this.audioPlayer.nativeElement.currentTime = e.value; + } + + onPlayingVideo(): void { + this.playing = true; + // this.duration = Math.floor(this.audioPlayer.nativeElement.duration); + } + + onPauseVideo(): void { + this.playing = false; + } + + onTimeUpdateVideo(): void { + this.currentTime = this.audioPlayer.nativeElement.currentTime; + } + + onVolumeChangeVideo(): void { + this.volume = this.audioPlayer.nativeElement.volume; + } + + onLoadStartVideo(): void { + this.loading = true; + } + + onLoadedDataVideo(): void { + this.loading = false; + this.duration = this.audioPlayer.nativeElement.duration; + + this.videoWidth = this.audioPlayer.nativeElement.videoWidth; + this.videoHeight = this.audioPlayer.nativeElement.videoHeight; + + if (0 === this.videoHeight || 0 === this.videoWidth) { + this.playable = false; + this.duration = 0; + } + } + + onClickDownload(): void { + this.fileDownloadItem = new FileDownloadItem(); + this.download.emit(this.fileDownloadItem); + } + + onClickClose(): void { + this.closed.emit(); + } +} diff --git a/projects/ui/src/lib/components/float-action-button.component.html b/projects/ui/src/lib/components/float-action-button.component.html new file mode 100644 index 0000000..96d9da8 --- /dev/null +++ b/projects/ui/src/lib/components/float-action-button.component.html @@ -0,0 +1,23 @@ +
+
+ +
+ +
+
diff --git a/projects/ui/src/lib/components/float-action-button.component.scss b/projects/ui/src/lib/components/float-action-button.component.scss new file mode 100644 index 0000000..2eb0566 --- /dev/null +++ b/projects/ui/src/lib/components/float-action-button.component.scss @@ -0,0 +1,35 @@ +.btn-main-float { + position: absolute; + bottom: 20px; + right: 20px; + z-index: 100; + display: flex; + flex-direction: column-reverse; + align-items: center; + + > div { + display: flex; + flex-direction: column-reverse; + align-items: center; + margin-bottom: 5px; + } + button { + .mat-button-wrapper { + line-height: normal; + } + } +} + +.fab-toggler { + float: right; + z-index: 100; +} + +#fab-dismiss { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 99; +} diff --git a/projects/ui/src/lib/components/float-action-button.component.spec.ts b/projects/ui/src/lib/components/float-action-button.component.spec.ts new file mode 100644 index 0000000..6f380aa --- /dev/null +++ b/projects/ui/src/lib/components/float-action-button.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { FloatActionButtonComponent } from './float-action-button.component'; + +describe('FloatActionButtonComponent', () => { + let component: FloatActionButtonComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [FloatActionButtonComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FloatActionButtonComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/float-action-button.component.ts b/projects/ui/src/lib/components/float-action-button.component.ts new file mode 100644 index 0000000..9a17001 --- /dev/null +++ b/projects/ui/src/lib/components/float-action-button.component.ts @@ -0,0 +1,64 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { ucapAnimations } from '../animations'; + +export interface FloatActionButton { + /** Meterial Icon type */ + icon: string; + tooltip?: string; + divisionType?: string; +} + +@Component({ + selector: 'ucap-float-action-button', + templateUrl: './float-action-button.component.html', + styleUrls: ['./float-action-button.component.scss'], + animations: ucapAnimations +}) +export class FloatActionButtonComponent implements OnInit { + @Input() + buttons: FloatActionButton[] = []; + + @Output() + buttonClick = new EventEmitter<{ + btn: FloatActionButton; + }>(); + + // tslint:disable-next-line: variable-name + _buttons = []; + fabTogglerState = 'inactive'; + + constructor() {} + + ngOnInit() {} + + showItems() { + this.fabTogglerState = 'active'; + this._buttons = this.buttons; + } + + hideItems() { + this.fabTogglerState = 'inactive'; + this.buttons = []; + } + + getTooltip(btn: FloatActionButton) { + if (!!btn && !!btn.tooltip && btn.tooltip.trim().length > 0) { + return btn.tooltip; + } else { + return ''; + } + } + + onToggleFab() { + if (this.buttons.length > 1) { + this._buttons.length ? this.hideItems() : this.showItems(); + } else if (this.buttons.length === 1) { + this.buttonClick.emit({ btn: this.buttons[0] }); + } + } + + onClickButton(btn: FloatActionButton) { + this.hideItems(); + this.buttonClick.emit({ btn }); + } +} diff --git a/projects/ui/src/lib/components/inline-edit-input.component.html b/projects/ui/src/lib/components/inline-edit-input.component.html new file mode 100644 index 0000000..213e2da --- /dev/null +++ b/projects/ui/src/lib/components/inline-edit-input.component.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/projects/ui/src/lib/components/inline-edit-input.component.scss b/projects/ui/src/lib/components/inline-edit-input.component.scss new file mode 100644 index 0000000..130eb13 --- /dev/null +++ b/projects/ui/src/lib/components/inline-edit-input.component.scss @@ -0,0 +1,7 @@ +.view-actions { + margin-right: 0px; +} + +.edit-actions { + margin-right: 0px; +} diff --git a/projects/ui/src/lib/components/inline-edit-input.component.spec.ts b/projects/ui/src/lib/components/inline-edit-input.component.spec.ts new file mode 100644 index 0000000..747d03d --- /dev/null +++ b/projects/ui/src/lib/components/inline-edit-input.component.spec.ts @@ -0,0 +1,25 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { InlineEditInputComponent } from './inline-edit-input.component'; + +describe('InlineEditInputComponent', () => { + let component: InlineEditInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [InlineEditInputComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(InlineEditInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/inline-edit-input.component.ts b/projects/ui/src/lib/components/inline-edit-input.component.ts new file mode 100644 index 0000000..633108a --- /dev/null +++ b/projects/ui/src/lib/components/inline-edit-input.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'ucap-inline-edit-input', + templateUrl: './inline-edit-input.component.html', + styleUrls: ['./inline-edit-input.component.scss'] +}) +export class InlineEditInputComponent implements OnInit { + @Output() + edit = new EventEmitter(); + @Output() + cancel = new EventEmitter(); + @Output() + apply = new EventEmitter(); + + get editMode() { + return this._editMode; + } + set editMode(editMode: boolean) { + this._editMode = editMode; + } + // tslint:disable-next-line: variable-name + _editMode = false; + + constructor() {} + + ngOnInit() {} + + onClickEdit(event: Event) { + this.editMode = true; + this.edit.emit(event); + } + + onClickCancel(event: Event) { + this.editMode = false; + this.cancel.emit(event); + } + + onClickApply(event: Event) { + this.editMode = false; + this.apply.emit(event); + } +} diff --git a/projects/ui/src/lib/components/pick-date.component.html b/projects/ui/src/lib/components/pick-date.component.html new file mode 100644 index 0000000..6deec28 --- /dev/null +++ b/projects/ui/src/lib/components/pick-date.component.html @@ -0,0 +1,10 @@ +
+ + +
diff --git a/projects/ui/src/lib/components/pick-date.component.scss b/projects/ui/src/lib/components/pick-date.component.scss new file mode 100644 index 0000000..5143d63 --- /dev/null +++ b/projects/ui/src/lib/components/pick-date.component.scss @@ -0,0 +1,4 @@ +.ucap-pick-date-container { + width: 100%; + height: 100%; +} diff --git a/projects/ui/src/lib/components/pick-date.component.spec.ts b/projects/ui/src/lib/components/pick-date.component.spec.ts new file mode 100644 index 0000000..47d0b42 --- /dev/null +++ b/projects/ui/src/lib/components/pick-date.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { PickDateComponent } from './pick-date.component'; + +describe('PickDateComponent', () => { + let component: PickDateComponent; + let fixture: ComponentFixture>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [PickDateComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PickDateComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/pick-date.component.ts b/projects/ui/src/lib/components/pick-date.component.ts new file mode 100644 index 0000000..b69134f --- /dev/null +++ b/projects/ui/src/lib/components/pick-date.component.ts @@ -0,0 +1,70 @@ +import { Subject } from 'rxjs'; + +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ViewChild, + Optional +} from '@angular/core'; + +import { MatCalendar } from '@angular/material/datepicker'; +import { DateAdapter } from '@angular/material/core'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { ucapAnimations } from '../animations'; + +@Component({ + selector: 'ucap-pick-date', + templateUrl: './pick-date.component.html', + styleUrls: ['./pick-date.component.scss'], + animations: ucapAnimations +}) +export class PickDateComponent implements OnInit { + @Input() + initSelected: D; + + @Output() + readonly selected: EventEmitter = new EventEmitter(); + + @Output() + readonly yearSelected: EventEmitter = new EventEmitter(); + + @Output() + readonly monthSelected: EventEmitter = new EventEmitter(); + + @ViewChild('calendar', { static: true }) + calendar: MatCalendar; + + constructor( + // tslint:disable-next-line: variable-name + @Optional() private _dateAdapter: DateAdapter, + private i18nService: I18nService + ) { + this._dateAdapter.setLocale(this.i18nService.currentLng); + } + + ngOnInit() {} + + /** Selects the given date */ + select(date: D): void { + const oldValue = this.initSelected; + this.initSelected = date; + if (!this._dateAdapter.sameDate(oldValue, this.initSelected)) { + this.selected.emit(date); + } + } + + /** Emits the selected year in multiyear view */ + _selectYear(normalizedYear: D): void { + this.yearSelected.emit(normalizedYear); + } + + /** Emits selected month in year view */ + _selectMonth(normalizedMonth: D): void { + this.monthSelected.emit(normalizedMonth); + } +} diff --git a/projects/ui/src/lib/components/pick-time.component.html b/projects/ui/src/lib/components/pick-time.component.html new file mode 100644 index 0000000..92f2412 --- /dev/null +++ b/projects/ui/src/lib/components/pick-time.component.html @@ -0,0 +1,25 @@ +
+ + + + : + + +
diff --git a/projects/ui/src/lib/components/pick-time.component.scss b/projects/ui/src/lib/components/pick-time.component.scss new file mode 100644 index 0000000..889c595 --- /dev/null +++ b/projects/ui/src/lib/components/pick-time.component.scss @@ -0,0 +1,18 @@ +.ucap-pick-time-container { + width: 100%; + height: 100%; + + display: flex; + align-items: center; + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + + .hour-input { + width: 60px; + + span { + padding: 0 10px; + } + } + .minute-input { + width: 60px; + } +} diff --git a/projects/ui/src/lib/components/pick-time.component.spec.ts b/projects/ui/src/lib/components/pick-time.component.spec.ts new file mode 100644 index 0000000..9e3404a --- /dev/null +++ b/projects/ui/src/lib/components/pick-time.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { PickTimeComponent } from './pick-time.component'; + +describe('PickTimeComponent', () => { + let component: PickTimeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [PickTimeComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PickTimeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/pick-time.component.ts b/projects/ui/src/lib/components/pick-time.component.ts new file mode 100644 index 0000000..ccbf267 --- /dev/null +++ b/projects/ui/src/lib/components/pick-time.component.ts @@ -0,0 +1,50 @@ +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ViewChild, + Optional +} from '@angular/core'; +import { ucapAnimations } from '../animations'; + +@Component({ + selector: 'ucap-pick-time', + templateUrl: './pick-time.component.html', + styleUrls: ['./pick-time.component.scss'], + animations: ucapAnimations +}) +export class PickTimeComponent implements OnInit { + @Input() + hour: number; + + @Input() + hourStep = 1; + + @Input() + minute: number; + + @Input() + minuteStep = 1; + + @Output() + readonly hourSelected: EventEmitter = new EventEmitter(); + + @Output() + readonly minuteSelected: EventEmitter = new EventEmitter(); + + constructor() {} + + ngOnInit() {} + + onChangedHour(hour: number) { + this.hourSelected.emit(hour); + } + onChangedMinute(minute: number) { + if (!!minute && minute === 60) { + minute = minute - this.minuteStep; + } + this.minuteSelected.emit(minute); + } +} diff --git a/projects/ui/src/lib/components/split-button.component.html b/projects/ui/src/lib/components/split-button.component.html new file mode 100644 index 0000000..ce367c1 --- /dev/null +++ b/projects/ui/src/lib/components/split-button.component.html @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/projects/ui/src/lib/components/split-button.component.scss b/projects/ui/src/lib/components/split-button.component.scss new file mode 100644 index 0000000..a1624ec --- /dev/null +++ b/projects/ui/src/lib/components/split-button.component.scss @@ -0,0 +1,5 @@ +.ucap-split-button-container { + .mat-button-toggle-label-content { + height: 36px !important; + } +} diff --git a/projects/ui/src/lib/components/split-button.component.spec.ts b/projects/ui/src/lib/components/split-button.component.spec.ts new file mode 100644 index 0000000..820d0ab --- /dev/null +++ b/projects/ui/src/lib/components/split-button.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { SplitButtonComponent } from './split-button.component'; + +describe('SplitButtonComponent', () => { + let component: SplitButtonComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [SplitButtonComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SplitButtonComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/split-button.component.ts b/projects/ui/src/lib/components/split-button.component.ts new file mode 100644 index 0000000..bb3e0bf --- /dev/null +++ b/projects/ui/src/lib/components/split-button.component.ts @@ -0,0 +1,68 @@ +import { Subscription } from 'rxjs'; + +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ViewChild, + OnDestroy, + ElementRef +} from '@angular/core'; + +import { MatMenuPanel, MatMenuTrigger } from '@angular/material/menu'; + +@Component({ + selector: 'ucap-split-button', + templateUrl: './split-button.component.html', + styleUrls: ['./split-button.component.scss'] +}) +export class SplitButtonComponent implements OnInit, OnDestroy { + @Input() + menu: MatMenuPanel; + + @Input() + disabled: boolean; + + @Output() + buttonClick = new EventEmitter(); + + @Output() + splitClick = new EventEmitter(); + + @ViewChild('matMenuTrigger', { static: true }) + private matMenuTrigger: MatMenuTrigger; + + // tslint:disable-next-line: variable-name + private _handleClick: (event: MouseEvent) => void; + private menuCloseSubscription: Subscription; + splitOpened = false; + + constructor() {} + + ngOnInit() { + this.menuCloseSubscription = this.menu.close.subscribe(() => { + this.matMenuTrigger._handleClick = e => {}; + this.splitOpened = false; + }); + this._handleClick = this.matMenuTrigger._handleClick; + this.matMenuTrigger._handleClick = e => {}; + } + + ngOnDestroy(): void { + if (!!this.menuCloseSubscription) { + this.menuCloseSubscription.unsubscribe(); + } + } + + onClick(event: MouseEvent) { + this.buttonClick.emit(event); + } + + onClickSplit(event: MouseEvent) { + this.matMenuTrigger._handleClick = this._handleClick; + this.splitOpened = true; + this.splitClick.emit(event); + } +} diff --git a/projects/ui/src/lib/components/step-input.component.html b/projects/ui/src/lib/components/step-input.component.html new file mode 100644 index 0000000..944b975 --- /dev/null +++ b/projects/ui/src/lib/components/step-input.component.html @@ -0,0 +1,21 @@ +
+ +
+ + +
+
diff --git a/projects/ui/src/lib/components/step-input.component.scss b/projects/ui/src/lib/components/step-input.component.scss new file mode 100644 index 0000000..480c6b6 --- /dev/null +++ b/projects/ui/src/lib/components/step-input.component.scss @@ -0,0 +1,56 @@ +.ucap-step-input-container { + position: relative; + display: flex; + width: 100%; + height: 30px; + padding: 0 5px; + box-sizing: border-box; + + &--active { + &:after { + content: ''; + position: absolute; + bottom: -2px; + left: 0; + width: 100%; + height: 1px; + background-color: deepskyblue; + } + } + + .stepper-input { + width: 100%; + height: 100%; + padding: 0 10px 0 0; + border: 0; + font-size: 1rem; + color: inherit; + outline: none; + text-align: start; + + &:disabled { + background-color: transparent; + } + } + + .steppers { + position: absolute; + right: 3px; + top: -2px; + display: flex; + flex-direction: column; + } + + .stepper { + height: 15px; + font-size: 11px; + cursor: pointer; + color: rgba(0, 0, 0, 0.4); + transition: color 0.2s; + user-select: none; + + &:hover { + color: rgba(0, 0, 0, 0.9); + } + } +} diff --git a/projects/ui/src/lib/components/step-input.component.spec.ts b/projects/ui/src/lib/components/step-input.component.spec.ts new file mode 100644 index 0000000..944ff80 --- /dev/null +++ b/projects/ui/src/lib/components/step-input.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { StepInputComponent } from './step-input.component'; + +describe('StepInputComponent', () => { + let component: StepInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [StepInputComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StepInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/step-input.component.ts b/projects/ui/src/lib/components/step-input.component.ts new file mode 100644 index 0000000..70faece --- /dev/null +++ b/projects/ui/src/lib/components/step-input.component.ts @@ -0,0 +1,191 @@ +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ViewChild, + ElementRef, + ChangeDetectorRef, + OnChanges, + SimpleChanges +} from '@angular/core'; + +import { StringUtil } from '@ucap/core'; + +import { ucapAnimations } from '../animations'; + +const ChangesVALUE = 'value'; + +@Component({ + selector: 'ucap-step-input', + templateUrl: './step-input.component.html', + styleUrls: ['./step-input.component.scss'], + animations: ucapAnimations +}) +export class StepInputComponent implements OnInit, OnChanges { + @Input() + value = 0; + + @Input() + readonly maxLength = 2; + + @Input() + readonly min: number; + + @Input() + readonly max: number; + + @Input() + placeholder = ''; + + @Input() + readonly step = 1; + + @Input() + disabled: boolean; + + @Input() + paddingZero: boolean; + + @Output() + changed = new EventEmitter(); + + @ViewChild('input', { static: true }) + input: ElementRef; + + isFocused: boolean; + + private get displayValue() { + return this._displayValue; + } + private set displayValue(v: string) { + this._displayValue = v; + this.input.nativeElement.value = v; + } + // tslint:disable-next-line: variable-name + private _displayValue: string; + + constructor(private changeDetectorRef: ChangeDetectorRef) {} + + ngOnInit() { + this.changeValue(this.value, true); + } + + ngOnChanges(changes: SimpleChanges): void { + const valueChanges = changes[ChangesVALUE]; + + if (!!valueChanges && !valueChanges.firstChange) { + this.changeValue(valueChanges.currentValue, true); + } + } + + increase() { + if (!this.disabled) { + this.changeValue(this.value + this.step); + } + } + + decrease() { + if (!this.disabled) { + this.changeValue(this.value - this.step); + } + } + + onKeydown(event: KeyboardEvent) { + if (!this.permittedKey(event)) { + event.preventDefault(); + return; + } + + if (/^[0-9]$/i.test(event.key)) { + this.changeValue(Number(`${String(this.displayValue)}${event.key}`)); + return; + } + + switch (event.key) { + case 'ArrowUp': + this.increase(); + return; + case 'ArrowDown': + this.decrease(); + return; + } + } + + onFocus() { + this.isFocused = true; + } + + onBlur() { + this.isFocused = false; + + const dv = Number(this.input.nativeElement.value); + + if (isNaN(dv)) { + this.changeValue(this.min); + } else { + this.changeValue(dv); + } + } + + private changeValue(v: number, force: boolean = false) { + if (!isNaN(v)) { + if (this.max < v) { + v = this.min; + } else if (this.min > v) { + v = this.max; + } + + v = this.step * Math.round(v / this.step); + + let dv: string; + if (this.paddingZero) { + dv = StringUtil.zeroFill(v, this.maxLength); + } else { + dv = String(v); + } + + if (force || v !== this.value) { + this.value = v; + this.changed.emit(v); + } + + if (this.input.nativeElement.value !== dv) { + this.displayValue = dv; + } + } + } + + private permittedKey(event: KeyboardEvent): boolean { + if ( + ['.', 'Backspace', 'Tab', 'Escape', 'Esc'].some(n => n === event.key) || + // Allow: Ctrl/cmd+A + ('A' === event.key && + (true === event.ctrlKey || true === event.metaKey)) || + // Allow: Ctrl/cmd+C + ('C' === event.key && + (true === event.ctrlKey || true === event.metaKey)) || + // Allow: Ctrl/cmd+X + ('X' === event.key && + (true === event.ctrlKey || true === event.metaKey)) || + // Allow: home, end, left, right, up, down + [ + 'Home', + 'End', + 'ArrowDown', + 'Down', + 'ArrowLeft', + 'Left', + 'ArrowRight', + 'Right', + 'ArrowUp', + 'Up' + ].some(n => n === event.key) + ) { + return true; + } + + return /^[0-9]$/i.test(event.key); + } +} diff --git a/projects/ui/src/lib/components/title-bar.component.html b/projects/ui/src/lib/components/title-bar.component.html new file mode 100644 index 0000000..70b851f --- /dev/null +++ b/projects/ui/src/lib/components/title-bar.component.html @@ -0,0 +1,180 @@ +
+
+
+ + + +
+
+
+ +
+
+ + + +
+
diff --git a/projects/ui/src/lib/components/title-bar.component.scss b/projects/ui/src/lib/components/title-bar.component.scss new file mode 100644 index 0000000..dffdbf9 --- /dev/null +++ b/projects/ui/src/lib/components/title-bar.component.scss @@ -0,0 +1,157 @@ +:host { + width: 100%; + height: 100%; +} + +.ucap-title-bar-container { + display: flex; + flex-direction: row; + user-select: none; + -webkit-app-region: drag; + -webkit-touch-callout: none; + -webkit-user-select: none; + + .ucap-title-bar-controls { + flex-grow: 0; + flex-shrink: 0; + margin-left: auto; + height: 100%; + + .ucap-title-bar-controls-mac { + } + + .ucap-title-bar-mac-button { + width: 12px; + height: 12px; + border-radius: 50%; + margin: 0px 4px; + line-height: 0; + padding: 0px; + -webkit-app-region: no-drag; + display: inline-block; + position: relative; + overflow: hidden; + border: none; + box-shadow: none; + } + + .ucap-title-bar-mac-button-close { + border: 1px solid #e2463f; + background-color: #ff5f57; + margin-left: 10px; + + & svg { + width: 6px; + height: 6px; + position: absolute; + top: 2px; + left: 2px; + } + + &:active { + border-color: #ad3934; + background-color: #bf4943; + } + } + .ucap-title-bar-mac-button-minimize { + border: 1px solid #e1a116; + background-color: #ffbd2e; + + & svg { + width: 8px; + height: 8px; + position: absolute; + top: 1px; + left: 1px; + } + + &:active { + border-color: #ad7d15; + background-color: #bf9123; + } + } + + .ucap-title-bar-mac-button-maximize { + border: 1px solid #12ac28; + background-color: #28c940; + + & .ucap-title-bar-mac-fullscreen-svg { + width: 8px; + height: 8px; + position: absolute; + top: 1px; + left: 1px; + } + + & .ucap-title-bar-mac-maximize-svg { + width: 8px; + height: 8px; + position: absolute; + top: 2px; + left: 2px; + } + + &:active { + border-color: #128622; + background-color: #1f9a31; + } + } + + .ucap-title-bar-controls-windows { + } + + .ucap-title-bar-windows-button { + -webkit-app-region: no-drag; + display: inline-block; + position: relative; + padding: 0; + margin: 0; + height: 100%; + overflow: hidden; + border: none; + box-shadow: none; + border-radius: 0; + color: #ffffff; + background-color: transparent; + transition: background-color 0.25s ease; + opacity: 0.5; + + & svg { + fill: currentColor; + } + + &:focus { + outline: none; + } + + &:hover { + background-color: rgba(255, 255, 255, 0.7); + opacity: 1; + } + + &:hover:active { + background-color: rgba(255, 255, 255, 0.6); + transition: none; + opacity: 1; + } + } + + .ucap-title-bar-windows-button-close { + &:hover { + color: #fff; + background-color: #e81123; + opacity: 1; + } + &:hover:active { + color: #fff; + background-color: #bf0f1d; + transition: none; + opacity: 1; + } + } + } + + .ucap-title-bar-content { + display: flex; + } +} diff --git a/projects/ui/src/lib/components/title-bar.component.spec.ts b/projects/ui/src/lib/components/title-bar.component.spec.ts new file mode 100644 index 0000000..48827cc --- /dev/null +++ b/projects/ui/src/lib/components/title-bar.component.spec.ts @@ -0,0 +1,27 @@ +/* tslint:disable:no-unused-variable */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { TitleBarComponent } from './title-bar.component'; + +describe('TitleBarComponent', () => { + let component: TitleBarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [TitleBarComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TitleBarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/components/title-bar.component.ts b/projects/ui/src/lib/components/title-bar.component.ts new file mode 100644 index 0000000..b70e7db --- /dev/null +++ b/projects/ui/src/lib/components/title-bar.component.ts @@ -0,0 +1,81 @@ +import { + Component, + OnInit, + Input, + HostListener, + Output, + EventEmitter +} from '@angular/core'; +import { WindowState } from '@ucap/native'; + +@Component({ + selector: 'ucap-title-bar', + templateUrl: './title-bar.component.html', + styleUrls: ['./title-bar.component.scss'] +}) +export class TitleBarComponent implements OnInit { + @Input() + native = false; + + @Input() + platform: 'darwin' | 'win32' | 'linux' | 'browser'; + + @Input() + windowState: WindowState; + + @Output() + closed = new EventEmitter(); + @Output() + minimized = new EventEmitter(); + @Output() + maximized = new EventEmitter(); + + isKeyDownAlt = false; + isMouseOverForMacOsControls = false; + + WindowState = WindowState; + + constructor() {} + + ngOnInit() {} + + @HostListener('window:keydown', ['$event']) + onKeydown(event: KeyboardEvent) { + if (['AltLeft', 'AltRight'].some(v => v === event.code)) { + this.isKeyDownAlt = true; + } else if (['Escape'].some(v => v === event.code)) { + if (WindowState.FullScreen === this.windowState) { + event.stopPropagation(); + event.preventDefault(); + this.maximized.emit(); + } + } + } + + @HostListener('window:keyup', ['$event']) + onKeyup(event: KeyboardEvent) { + if (['AltLeft', 'AltRight'].some(v => v === event.code)) { + this.isKeyDownAlt = false; + } + } + + onClickClose(event: Event) { + this.closed.emit(); + this.isKeyDownAlt = false; + } + onClickMaximize(event: Event) { + this.maximized.emit(this.isKeyDownAlt); + this.isKeyDownAlt = false; + } + onClickMinimize(event: Event) { + this.minimized.emit(); + this.isKeyDownAlt = false; + } + + onMouseenterMacOsControls(event: Event) { + this.isMouseOverForMacOsControls = true; + } + onMouseleaveMacOsControls(event: Event) { + this.isMouseOverForMacOsControls = false; + } +} diff --git a/projects/ui/src/lib/config/module-config.ts b/projects/ui/src/lib/config/module-config.ts new file mode 100644 index 0000000..d158cc6 --- /dev/null +++ b/projects/ui/src/lib/config/module-config.ts @@ -0,0 +1,4 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +// tslint:disable-next-line: no-empty-interface +export interface ModuleConfig extends CoreModuleConfig {} diff --git a/projects/ui/src/lib/config/token.ts b/projects/ui/src/lib/config/token.ts new file mode 100644 index 0000000..4abd15d --- /dev/null +++ b/projects/ui/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-ui config of module' +); diff --git a/projects/ui/src/lib/data-source/virtual-scroll-tree-flat.data-source.ts b/projects/ui/src/lib/data-source/virtual-scroll-tree-flat.data-source.ts new file mode 100644 index 0000000..68c9529 --- /dev/null +++ b/projects/ui/src/lib/data-source/virtual-scroll-tree-flat.data-source.ts @@ -0,0 +1,133 @@ +import { + BehaviorSubject, + merge, + Observable, + Subject, + Subscription +} from 'rxjs'; +import { map, share } from 'rxjs/operators'; + +import { CollectionViewer, DataSource } from '@angular/cdk/collections'; +import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { FlatTreeControl } from '@angular/cdk/tree'; + +import { MatTreeFlattener } from '@angular/material/tree'; + +export class VirtualScrollTreeFlatDataSource extends DataSource { + private flattenedDataSubject = new BehaviorSubject([]); + + expandedDataSubject = new BehaviorSubject([]); + expandedData$: Observable; + + private connectSubject: Subject; + private dataChangeSubscription: Subscription; + private rangeChangeSubscription: Subscription; + + private rangeSubject: BehaviorSubject<{ + start: number; + end: number; + }>; + + // tslint:disable-next-line: variable-name + private _cdkVirtualScrollViewport: CdkVirtualScrollViewport; + set cdkVirtualScrollViewport( + cdkVirtualScrollViewport: CdkVirtualScrollViewport + ) { + if (!cdkVirtualScrollViewport) { + return; + } + this._cdkVirtualScrollViewport = cdkVirtualScrollViewport; + this.rangeSubject = new BehaviorSubject<{ start: number; end: number }>({ + start: 0, + end: 1 + }); + + this.rangeChangeSubscription = cdkVirtualScrollViewport.renderedRangeStream.subscribe( + range => { + this.rangeSubject.next({ + start: range.start, + end: range.end + }); + if (!!this.connectSubject) { + this.connectSubject.next( + this.expandedDataSubject.value.slice( + this.rangeSubject.value.start, + this.rangeSubject.value.end + ) + ); + } + } + ); + } + + // tslint:disable-next-line: variable-name + private _data: BehaviorSubject; + get data() { + return this._data.value; + } + set data(value: T[]) { + this._data.next(value); + this.flattenedDataSubject.next(this.treeFlattener.flattenNodes(this.data)); + this.treeControl.dataNodes = this.flattenedDataSubject.value; + } + + constructor( + private treeControl: FlatTreeControl, + private treeFlattener: MatTreeFlattener, + initialData: T[] = [] + ) { + super(); + this._data = new BehaviorSubject(initialData); + this.expandedData$ = this.expandedDataSubject.asObservable().pipe(share()); + } + + connect(collectionViewer: CollectionViewer): Observable { + this.connectSubject = new Subject(); + + this.dataChangeSubscription = merge( + collectionViewer.viewChange, + this.treeControl.expansionModel.changed, + this.flattenedDataSubject + ) + .pipe( + map(() => { + this.expandedDataSubject.next( + this.treeFlattener.expandFlattenedNodes( + this.flattenedDataSubject.value, + this.treeControl + ) + ); + + return !this.rangeSubject + ? this.expandedDataSubject.value + : this.expandedDataSubject.value.slice( + this.rangeSubject.value.start, + this.rangeSubject.value.end + ); + }) + ) + .subscribe(datas => { + this.connectSubject.next(datas); + if (!!this._cdkVirtualScrollViewport) { + this._cdkVirtualScrollViewport.checkViewportSize(); + } + }); + + return this.connectSubject.asObservable(); + } + + disconnect() { + if (!!this.connectSubject) { + this.connectSubject.next(); + this.connectSubject.unsubscribe(); + } + + if (!!this.dataChangeSubscription) { + this.dataChangeSubscription.unsubscribe(); + } + + if (!!this.rangeChangeSubscription) { + this.rangeChangeSubscription.unsubscribe(); + } + } +} diff --git a/projects/ui/src/lib/dialogs/alert.dialog.component.html b/projects/ui/src/lib/dialogs/alert.dialog.component.html new file mode 100644 index 0000000..12d2e09 --- /dev/null +++ b/projects/ui/src/lib/dialogs/alert.dialog.component.html @@ -0,0 +1,18 @@ + + + {{ data.title }} + + + +
+ {{ data.message }} +
+
+ + + +
diff --git a/projects/ui/src/lib/dialogs/alert.dialog.component.scss b/projects/ui/src/lib/dialogs/alert.dialog.component.scss new file mode 100644 index 0000000..9aa2706 --- /dev/null +++ b/projects/ui/src/lib/dialogs/alert.dialog.component.scss @@ -0,0 +1,5 @@ +form { + .mat-form-field { + width: 100%; + } +} diff --git a/projects/ui/src/lib/dialogs/alert.dialog.component.spec.ts b/projects/ui/src/lib/dialogs/alert.dialog.component.spec.ts new file mode 100644 index 0000000..a87f1d8 --- /dev/null +++ b/projects/ui/src/lib/dialogs/alert.dialog.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AlertDialogComponent } from './alert.dialog.component'; + +describe('ui::AlertDialogComponent', () => { + let component: AlertDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AlertDialogComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AlertDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/dialogs/alert.dialog.component.ts b/projects/ui/src/lib/dialogs/alert.dialog.component.ts new file mode 100644 index 0000000..64ccaef --- /dev/null +++ b/projects/ui/src/lib/dialogs/alert.dialog.component.ts @@ -0,0 +1,44 @@ +import { + Component, + OnInit, + Inject, + ViewChild, + ElementRef +} from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; + +export interface AlertDialogData { + title: string; + message?: string; + html?: string; +} + +// tslint:disable-next-line: no-empty-interface +export interface AlertDialogResult {} + +@Component({ + selector: 'ucap-alert-dialog', + templateUrl: './alert.dialog.component.html', + styleUrls: ['./alert.dialog.component.scss'] +}) +export class AlertDialogComponent implements OnInit { + @ViewChild('messageContainer', { static: true }) + messageContainer: ElementRef; + + tempAgeLimits = []; + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: AlertDialogData + ) {} + + ngOnInit(): void { + if (!!this.data.html) { + this.messageContainer.nativeElement.innerHTML = this.data.html; + } + } + + onClickConfirm(): void { + this.dialogRef.close({}); + } +} diff --git a/projects/ui/src/lib/dialogs/confirm.dialog.component.html b/projects/ui/src/lib/dialogs/confirm.dialog.component.html new file mode 100644 index 0000000..76f8501 --- /dev/null +++ b/projects/ui/src/lib/dialogs/confirm.dialog.component.html @@ -0,0 +1,30 @@ + + + {{ data.title }} + + + +
+ {{ data.message }} +
+
+ + + + +
diff --git a/projects/ui/src/lib/dialogs/confirm.dialog.component.scss b/projects/ui/src/lib/dialogs/confirm.dialog.component.scss new file mode 100644 index 0000000..d796615 --- /dev/null +++ b/projects/ui/src/lib/dialogs/confirm.dialog.component.scss @@ -0,0 +1,18 @@ +.mat-card-header { + .mat-card-header-text { + margin: 0; + } + .btn-dialog-close { + font-size: 20px; + display: flex; + margin-left: auto; + align-self: flex-start; + color: #444444; + } +} + +form { + .mat-form-field { + width: 100%; + } +} diff --git a/projects/ui/src/lib/dialogs/confirm.dialog.component.spec.ts b/projects/ui/src/lib/dialogs/confirm.dialog.component.spec.ts new file mode 100644 index 0000000..de089c8 --- /dev/null +++ b/projects/ui/src/lib/dialogs/confirm.dialog.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ConfirmDialogComponent } from './confirm.dialog.component'; + +describe('ui::ConfirmDialogComponent', () => { + let component: ConfirmDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ConfirmDialogComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ConfirmDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui/src/lib/dialogs/confirm.dialog.component.ts b/projects/ui/src/lib/dialogs/confirm.dialog.component.ts new file mode 100644 index 0000000..47d34bc --- /dev/null +++ b/projects/ui/src/lib/dialogs/confirm.dialog.component.ts @@ -0,0 +1,51 @@ +import { + Component, + OnInit, + Inject, + ViewChild, + ElementRef +} from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; + +export interface ConfirmDialogData { + title: string; + message?: string; + html?: string; + hideAction?: boolean; +} + +export interface ConfirmDialogResult { + choice: boolean; +} + +@Component({ + selector: 'ucap-confirm-dialog', + templateUrl: './confirm.dialog.component.html', + styleUrls: ['./confirm.dialog.component.scss'] +}) +export class ConfirmDialogComponent implements OnInit { + @ViewChild('messageContainer', { static: true }) + messageContainer: ElementRef; + + hideAction = false; + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: ConfirmDialogData + ) {} + + ngOnInit(): void { + if (!!this.data.html) { + this.messageContainer.nativeElement.innerHTML = this.data.html; + } + if (!!this.data.hideAction) { + this.hideAction = this.data.hideAction; + } + } + + onClickChoice(choice: boolean): void { + this.dialogRef.close({ + choice + }); + } +} diff --git a/projects/ui/src/lib/directives/cdk-virtual-scroll-viewport-patch.directive.ts b/projects/ui/src/lib/directives/cdk-virtual-scroll-viewport-patch.directive.ts new file mode 100644 index 0000000..56a5ed9 --- /dev/null +++ b/projects/ui/src/lib/directives/cdk-virtual-scroll-viewport-patch.directive.ts @@ -0,0 +1,34 @@ +import { Subject, fromEvent } from 'rxjs'; +import { debounceTime, takeUntil } from 'rxjs/operators'; + +import { Directive, OnInit, OnDestroy, Self, Inject } from '@angular/core'; + +import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; + +@Directive({ + // tslint:disable-next-line: directive-selector + selector: 'cdk-virtual-scroll-viewport' +}) +export class CdkVirtualScrollViewportPatchDirective + implements OnInit, OnDestroy { + protected readonly destroySubject = new Subject(); + + constructor( + @Self() + @Inject(CdkVirtualScrollViewport) + private readonly viewportComponent: CdkVirtualScrollViewport + ) {} + + ngOnInit() { + fromEvent(document.defaultView, 'resize') + .pipe(debounceTime(10), takeUntil(this.destroySubject)) + .subscribe(() => { + this.viewportComponent.checkViewportSize(); + }); + } + + ngOnDestroy() { + this.destroySubject.next(); + this.destroySubject.complete(); + } +} diff --git a/projects/ui/src/lib/directives/click-debounce.directive.ts b/projects/ui/src/lib/directives/click-debounce.directive.ts new file mode 100644 index 0000000..fadc0fd --- /dev/null +++ b/projects/ui/src/lib/directives/click-debounce.directive.ts @@ -0,0 +1,41 @@ +import { Subject, Subscription } from 'rxjs'; +import { debounceTime } from 'rxjs/operators'; + +import { + Directive, + EventEmitter, + HostListener, + Input, + OnDestroy, + OnInit, + Output +} from '@angular/core'; + +@Directive({ + selector: '[ucapDebounceClick]' +}) +export class ClickDebounceDirective implements OnInit, OnDestroy { + @Input() debounceTime = 500; + @Output() debounceClick = new EventEmitter(); + private clicks = new Subject(); + private subscription: Subscription; + + constructor() {} + + ngOnInit() { + this.subscription = this.clicks + .pipe(debounceTime(this.debounceTime)) + .subscribe(e => this.debounceClick.emit(e)); + } + + ngOnDestroy() { + this.subscription.unsubscribe(); + } + + @HostListener('click', ['$event']) + clickEvent(event: Event) { + event.preventDefault(); + event.stopPropagation(); + this.clicks.next(event); + } +} diff --git a/projects/ui/src/lib/directives/click-outside.directive.ts b/projects/ui/src/lib/directives/click-outside.directive.ts new file mode 100644 index 0000000..8582a7d --- /dev/null +++ b/projects/ui/src/lib/directives/click-outside.directive.ts @@ -0,0 +1,225 @@ +import { + Directive, + ElementRef, + EventEmitter, + Inject, + Input, + OnChanges, + OnDestroy, + OnInit, + Output, + PLATFORM_ID, + SimpleChanges, + NgZone +} from '@angular/core'; +import { isPlatformBrowser } from '@angular/common'; + +@Directive({ selector: '[ucapClickOutside]' }) +export class ClickOutsideDirective implements OnInit, OnChanges, OnDestroy { + @Input() + clickOutsideEnabled = true; + + @Input() + attachOutsideOnClick = false; + + @Input() + delayClickOutsideInit = false; + + @Input() + emitOnBlur = false; + + @Input() + exclude = ''; + + @Input() + excludeBeforeClick = false; + + @Input() + clickOutsideEvents = ''; + + @Output() + ucapClickOutside: EventEmitter = new EventEmitter(); + + private nodesExcluded: Array = []; + private events: Array = ['click', 'contextmenu']; + + constructor( + private elementRef: ElementRef, + private ngZone: NgZone, + @Inject(PLATFORM_ID) private platformId: any + ) { + this._initOnClickBody = this._initOnClickBody.bind(this); + this._onClickBody = this._onClickBody.bind(this); + this._onWindowBlur = this._onWindowBlur.bind(this); + } + + ngOnInit() { + if (!isPlatformBrowser(this.platformId)) { + return; + } + + this._init(); + } + + ngOnDestroy() { + if (!isPlatformBrowser(this.platformId)) { + return; + } + + this._removeClickOutsideListener(); + this._removeAttachOutsideOnClickListener(); + this._removeWindowBlurListener(); + } + + ngOnChanges(changes: SimpleChanges) { + if (!isPlatformBrowser(this.platformId)) { + return; + } + + if (changes.attachOutsideOnClick || changes.exclude || changes.emitOnBlur) { + this._init(); + } + } + + private _init() { + if (this.clickOutsideEvents !== '') { + this.events = this.clickOutsideEvents.split(',').map(e => e.trim()); + } + + this._excludeCheck(); + + if (this.attachOutsideOnClick) { + this._initAttachOutsideOnClickListener(); + } else { + this._initOnClickBody(); + } + + if (this.emitOnBlur) { + this._initWindowBlurListener(); + } + } + + private _initOnClickBody() { + if (this.delayClickOutsideInit) { + setTimeout(this._initClickOutsideListener.bind(this)); + } else { + this._initClickOutsideListener(); + } + } + + private _excludeCheck() { + if (this.exclude) { + try { + const nodes = Array.from( + document.querySelectorAll(this.exclude) + ) as Array; + if (nodes) { + this.nodesExcluded = nodes; + } + } catch (err) { + console.error( + '[ng-click-outside] Check your exclude selector syntax.', + err + ); + } + } + } + + private _onClickBody(ev: Event) { + if (!this.clickOutsideEnabled) { + return; + } + + if (this.excludeBeforeClick) { + this._excludeCheck(); + } + + if ( + !this.elementRef.nativeElement.contains(ev.target) && + !this._shouldExclude(ev.target) + ) { + this._emit(ev); + + if (this.attachOutsideOnClick) { + this._removeClickOutsideListener(); + } + } + } + + /** + * Resolves problem with outside click on iframe + * @see https://github.com/arkon/ng-click-outside/issues/32 + */ + private _onWindowBlur(ev: Event) { + setTimeout(() => { + if (!document.hidden) { + this._emit(ev); + } + }); + } + + private _emit(ev: Event) { + if (!this.clickOutsideEnabled) { + return; + } + + this.ngZone.run(() => this.ucapClickOutside.emit(ev)); + } + + private _shouldExclude(target): boolean { + for (const excludedNode of this.nodesExcluded) { + if (excludedNode.contains(target)) { + return true; + } + } + + return false; + } + + private _initClickOutsideListener() { + this.ngZone.runOutsideAngular(() => { + this.events.forEach(e => + document.body.addEventListener(e, this._onClickBody) + ); + }); + } + + private _removeClickOutsideListener() { + this.ngZone.runOutsideAngular(() => { + this.events.forEach(e => + document.body.removeEventListener(e, this._onClickBody) + ); + }); + } + + private _initAttachOutsideOnClickListener() { + this.ngZone.runOutsideAngular(() => { + this.events.forEach(e => + this.elementRef.nativeElement.addEventListener(e, this._initOnClickBody) + ); + }); + } + + private _removeAttachOutsideOnClickListener() { + this.ngZone.runOutsideAngular(() => { + this.events.forEach(e => + this.elementRef.nativeElement.removeEventListener( + e, + this._initOnClickBody + ) + ); + }); + } + + private _initWindowBlurListener() { + this.ngZone.runOutsideAngular(() => { + window.addEventListener('blur', this._onWindowBlur); + }); + } + + private _removeWindowBlurListener() { + this.ngZone.runOutsideAngular(() => { + window.removeEventListener('blur', this._onWindowBlur); + }); + } +} diff --git a/projects/ui/src/lib/directives/file-upload-for.directive.ts b/projects/ui/src/lib/directives/file-upload-for.directive.ts new file mode 100644 index 0000000..63a592d --- /dev/null +++ b/projects/ui/src/lib/directives/file-upload-for.directive.ts @@ -0,0 +1,152 @@ +import { + Directive, + ElementRef, + EventEmitter, + HostListener, + Output, + Input, + AfterViewInit, + NgZone +} from '@angular/core'; + +import { FileUploadItem } from '@ucap/api'; + +import { FileUploadQueueComponent } from '../components/file-upload-queue.component'; + +@Directive({ + selector: 'input[ucapFileUploadFor], div[ucapFileUploadFor]' +}) +export class FileUploadForDirective implements AfterViewInit { + @Input() + fileUploadQueue: FileUploadQueueComponent; + + @Input() + validator: (fileList: FileList) => Promise; + + @Output() + public fileDragEnter = new EventEmitter(); + + @Output() + public fileDragOver = new EventEmitter(); + + @Output() + public fileDragLeave = new EventEmitter(); + + @Output() + public fileSelected = new EventEmitter(); + + dragOver = false; + + constructor( + private elementRef: ElementRef, + private readonly ngZone: NgZone + ) {} + + ngAfterViewInit(): void {} + + @HostListener('window:dragenter', ['$event']) + public onDragEnter(event: DragEvent): any { + if (!this.isFileDrag(event.dataTransfer)) { + return; + } + + if (!this.dragOver) { + this.fileDragEnter.emit(event.dataTransfer.items); + this.dragOver = true; + if (!!this.fileUploadQueue) { + this.fileUploadQueue.onDragEnter(event.dataTransfer.items); + } + } + } + + @HostListener('window:dragover', ['$event']) + public onDragOver(event: DragEvent): any { + if (!this.isFileDrag(event.dataTransfer)) { + return; + } + + // if (this.fileUploadQueue.isEventInElement(event)) { + // event.dataTransfer.dropEffect = 'copy'; + // } else { + // event.dataTransfer.dropEffect = 'none'; + // } + event.preventDefault(); + } + + @HostListener('window:dragleave', ['$event']) + public onDragLeave(event: DragEvent): any { + if (!this.isFileDrag(event.dataTransfer)) { + return; + } + + if (event && event.pageX === 0 && event.pageY === 0) { + this.fileDragLeave.emit(); + this.dragOver = false; + if (!!this.fileUploadQueue) { + this.fileUploadQueue.onDragLeave(); + } + } + } + + @HostListener('change') + public onChange(): any { + const files = this.elementRef.nativeElement.files; + this.fileSelected.emit(FileUploadItem.fromFiles(files)); + this.elementRef.nativeElement.value = ''; + } + + @HostListener('window:drop', ['$event']) + public onDrop(event: any): any { + if (!this.isFileDrag(event.dataTransfer)) { + return; + } + + const self = this; + const files: FileList = event.dataTransfer.files; + + event.preventDefault(); + event.stopPropagation(); + this.elementRef.nativeElement.value = ''; + this.dragOver = false; + + if (!!this.validator) { + this.validator(files) + .then(async result => { + if (!result) { + if (!!this.fileUploadQueue) { + this.fileUploadQueue.onUploadComplete(); + } + return; + } else { + const fileUploadItems = FileUploadItem.fromFiles(files); + self.fileSelected.emit(fileUploadItems); + + if (!!self.fileUploadQueue) { + self.fileUploadQueue.onDrop(fileUploadItems); + } + } + }) + .catch(err => { + if (!!this.fileUploadQueue) { + this.fileUploadQueue.onUploadComplete(); + } + }); + } + } + + private isFileDrag(dataTransfer: DataTransfer): boolean { + if (0 >= dataTransfer.items.length) { + return false; + } + + // tslint:disable-next-line: prefer-for-of + for (let i = 0; i < dataTransfer.items.length; i++) { + const element = dataTransfer.items[i]; + if ('file' !== element.kind) { + return false; + } + } + + return true; + } +} diff --git a/projects/ui/src/lib/directives/image.directive.ts b/projects/ui/src/lib/directives/image.directive.ts new file mode 100644 index 0000000..214ba2a --- /dev/null +++ b/projects/ui/src/lib/directives/image.directive.ts @@ -0,0 +1,93 @@ +import { + Directive, + ElementRef, + EventEmitter, + Output, + Input, + AfterViewInit, + OnInit, + OnChanges, + SimpleChanges +} from '@angular/core'; + +const PATH = 'path'; + +@Directive({ + selector: 'img[ucapImage]' +}) +export class ImageDirective implements OnInit, AfterViewInit, OnChanges { + @Input() + base: string; + + @Input() + path: string; + + @Input() + validation = true; + + @Input() + default: string; + + @Output() + loaded = new EventEmitter(); + + imageSrc: string; + + constructor(private elementRef: ElementRef) {} + + ngOnInit(): void { + if (this.validation) { + if ( + // !this.base || + // '' === this.base.trim() || + !this.path || + '' === this.path.trim() + ) { + this.imageSrc = this.default; + } + } + } + + ngAfterViewInit(): void { + this.loadImage(); + } + + ngOnChanges(changes: SimpleChanges): void { + const pathChanges = changes[PATH]; + + if (!!pathChanges && !pathChanges.firstChange) { + this.loadImage(); + } + } + + private loadImage(): void { + if (this.imageSrc === this.default) { + this.elementRef.nativeElement.src = this.default; + this.loaded.emit(this.elementRef.nativeElement); + } else { + this.elementRef.nativeElement.src = this.default; + + const imageUrl = `${this.base}${this.path}`; + const image = new Image(); + image.onload = () => { + if ('naturalHeight' in image) { + if (image.naturalHeight + image.naturalWidth === 0) { + image.onerror('naturalHeight'); + return; + } + } + if (image.width + image.height === 0) { + image.onerror('width'); + return; + } + this.elementRef.nativeElement.src = image.src; + this.loaded.emit(image); + }; + image.onerror = () => { + this.elementRef.nativeElement.src = this.default; + this.loaded.emit(this.elementRef.nativeElement); + }; + image.src = imageUrl; + } + } +} diff --git a/projects/ui/src/lib/pipes/bytes.pipe.ts b/projects/ui/src/lib/pipes/bytes.pipe.ts new file mode 100644 index 0000000..df6132c --- /dev/null +++ b/projects/ui/src/lib/pipes/bytes.pipe.ts @@ -0,0 +1,20 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +const units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB']; + +@Pipe({ name: 'ucapBytes' }) +export class BytesPipe implements PipeTransform { + public transform(bytes: number): string { + if (isNaN(parseFloat('' + bytes)) || !isFinite(bytes)) { + return '-'; + } + if (bytes <= 0) { + return '0'; + } + + const num = Math.floor(Math.log(bytes) / Math.log(1024)); + return ( + (bytes / Math.pow(1024, Math.floor(num))).toFixed(1) + ' ' + units[num] + ); + } +} diff --git a/projects/ui/src/lib/pipes/date.pipe.ts b/projects/ui/src/lib/pipes/date.pipe.ts new file mode 100644 index 0000000..3002127 --- /dev/null +++ b/projects/ui/src/lib/pipes/date.pipe.ts @@ -0,0 +1,133 @@ +import { + Injectable, + Pipe, + PipeTransform, + OnDestroy, + ChangeDetectorRef +} from '@angular/core'; +import { Subscription } from 'rxjs'; +import { ObjectUtil } from '@ucap/core'; + +import { DateService, DateOptions } from '../services/date.service'; + +@Injectable() +@Pipe({ + name: 'ucapDate', + pure: false // required to update the value when the promise is resolved +}) +export class DatePipe implements PipeTransform, OnDestroy { + value = ''; + lastDate: any; + lastFormat: string; + lastOptions: DateOptions; + changedLocaleSubscription: Subscription; + changedTimezoneSubscription: Subscription; + changedDefaultTimezoneSubscription: Subscription; + + constructor( + private dateService: DateService, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnDestroy(): void { + this._dispose(); + } + + transform(date: any, format: string = 'L', options?: DateOptions): any { + if (!date || 0 === date.length) { + return ''; + } + + if ( + ObjectUtil.equals(date, this.lastDate) && + ObjectUtil.equals(format, this.lastFormat) && + ObjectUtil.equals(options, this.lastOptions) + ) { + return this.value; + } + + // store the target, in case it changes + this.lastDate = date; + // store the key, in case it changes + this.lastFormat = format; + // store the key, in case it changes + this.lastOptions = options; + + // set the value + this.updateValue(date, format, options); + + // if there is a subscription to onLangChange, clean it + this._dispose(); + + // subscribe to onLangChange event, in case the language changes + if (!this.changedTimezoneSubscription) { + this.changedTimezoneSubscription = this.dateService.changedTimezone.subscribe( + () => { + if (this.lastDate) { + this.lastDate = null; // we want to make sure it doesn't return the same value until it's been updated + this.updateValue(date, format, options); + } + } + ); + } + + // subscribe to onDefaultLangChange event, in case the default language changes + if (!this.changedDefaultTimezoneSubscription) { + this.changedDefaultTimezoneSubscription = this.dateService.changedDefaultTimezone.subscribe( + () => { + if (this.lastDate) { + this.lastDate = null; // we want to make sure it doesn't return the same value until it's been updated + this.updateValue(date, format, options); + } + } + ); + } + + // subscribe to onDefaultLangChange event, in case the default language changes + if (!this.changedLocaleSubscription) { + this.changedLocaleSubscription = this.dateService.changedLocale.subscribe( + () => { + if (this.lastDate) { + this.lastDate = null; // we want to make sure it doesn't return the same value until it's been updated + this.updateValue(date, format, options); + } + } + ); + } + + return this.value; + } + + updateValue(date: any, format: string = 'L', options?: DateOptions): void { + try { + const value = this.dateService.get(date, format, options); + + if (value === 'Invalid date') { + this.value = date; + } else { + this.value = value; + } + } catch (error) { + this.value = date; + } + this.lastDate = date; + this.lastFormat = format; + this.lastOptions = options; + this.changeDetectorRef.markForCheck(); + } + + private _dispose(): void { + if (!!this.changedTimezoneSubscription) { + this.changedTimezoneSubscription.unsubscribe(); + this.changedTimezoneSubscription = undefined; + } + if (!!this.changedDefaultTimezoneSubscription) { + this.changedDefaultTimezoneSubscription.unsubscribe(); + this.changedDefaultTimezoneSubscription = undefined; + } + if (!!this.changedLocaleSubscription) { + this.changedLocaleSubscription.unsubscribe(); + this.changedLocaleSubscription = undefined; + } + } +} diff --git a/projects/ui/src/lib/pipes/empty.pipe.ts b/projects/ui/src/lib/pipes/empty.pipe.ts new file mode 100644 index 0000000..21fd232 --- /dev/null +++ b/projects/ui/src/lib/pipes/empty.pipe.ts @@ -0,0 +1,16 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ name: 'ucapEmpty' }) +export class EmptyPipe implements PipeTransform { + public transform(value: any, placeholder: any): any { + switch (typeof value) { + case 'string': + return 0 < value.trim().length ? value.trim() : placeholder; + default: + if (Array.isArray(value)) { + return 0 < value.length ? value : placeholder; + } + return placeholder; + } + } +} diff --git a/projects/ui/src/lib/pipes/linefeed.pipe.ts b/projects/ui/src/lib/pipes/linefeed.pipe.ts new file mode 100644 index 0000000..3ebe520 --- /dev/null +++ b/projects/ui/src/lib/pipes/linefeed.pipe.ts @@ -0,0 +1,20 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { HtmlUtil } from '../utils/html.util'; + +@Pipe({ + name: 'ucapLinefeedToHtml' +}) +export class LinefeedToHtmlPipe implements PipeTransform { + public transform(str: string): string { + return HtmlUtil.linefeedToHtml(str); + } +} + +@Pipe({ + name: 'ucapHtmlToLinefeed' +}) +export class HtmlToLinefeedPipe implements PipeTransform { + public transform(str: string): string { + return HtmlUtil.htmlToLinefeed(str); + } +} diff --git a/projects/ui/src/lib/pipes/linky.pipe.ts b/projects/ui/src/lib/pipes/linky.pipe.ts new file mode 100644 index 0000000..dc50b09 --- /dev/null +++ b/projects/ui/src/lib/pipes/linky.pipe.ts @@ -0,0 +1,23 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +import { Autolinker, AutolinkerConfig } from 'autolinker'; + +@Pipe({ name: 'ucapLinky' }) +export class LinkyPipe implements PipeTransform { + transform(value: string, options?: AutolinkerConfig): string { + options = { + email: false, + phone: false, + stripPrefix: false, + // newWindow: false, + replaceFn: match => { + if (match.getType() === 'url') { + return '' + match.getAnchorHref() + ''; + // return true; + } + }, + ...options + }; + return Autolinker.link(value, options); + } +} diff --git a/projects/ui/src/lib/pipes/phone-number.pipe.ts b/projects/ui/src/lib/pipes/phone-number.pipe.ts new file mode 100644 index 0000000..4cfd40d --- /dev/null +++ b/projects/ui/src/lib/pipes/phone-number.pipe.ts @@ -0,0 +1,14 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { CountryCode } from 'libphonenumber-js'; +import { PhoneNumberUtil } from '../utils/phone-number.util'; + +@Pipe({ name: 'ucapPhoneNumber' }) +export class PhoneNumberPipe implements PipeTransform { + public transform( + value: string, + country: CountryCode, + mask: boolean = false + ): string { + return PhoneNumberUtil.format(country, value, mask); + } +} diff --git a/projects/ui/src/lib/pipes/safe-html.pipe.ts b/projects/ui/src/lib/pipes/safe-html.pipe.ts new file mode 100644 index 0000000..882a50a --- /dev/null +++ b/projects/ui/src/lib/pipes/safe-html.pipe.ts @@ -0,0 +1,12 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +import { HtmlUtil } from '../utils/html.util'; + +@Pipe({ name: 'ucapSafeHtml' }) +export class SafeHtmlPipe implements PipeTransform { + constructor() {} + + public transform(value: string) { + return HtmlUtil.escapeHtml(value); + } +} diff --git a/projects/ui/src/lib/pipes/seconds-to-minutes.pipe.ts b/projects/ui/src/lib/pipes/seconds-to-minutes.pipe.ts new file mode 100644 index 0000000..af9cd70 --- /dev/null +++ b/projects/ui/src/lib/pipes/seconds-to-minutes.pipe.ts @@ -0,0 +1,10 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ name: 'ucapSecondsToMinutes' }) +export class SecondsToMinutesPipe implements PipeTransform { + public transform(time: number): string { + const minutes = ('0' + Math.floor(time / 60)).slice(-2); + const seconds = ('0' + (time % 60)).slice(-2); + return `${minutes}:${seconds}`; + } +} diff --git a/projects/ui/src/lib/services/date.service.ts b/projects/ui/src/lib/services/date.service.ts new file mode 100644 index 0000000..20817af --- /dev/null +++ b/projects/ui/src/lib/services/date.service.ts @@ -0,0 +1,268 @@ +import { Injectable, EventEmitter } from '@angular/core'; + +import moment from 'moment'; +import 'moment-timezone'; + +import { Subscription } from 'rxjs'; + +import { I18nService } from '@ucap/ng-i18n'; + +export type DateUnit = + | 'year' + | 'years' + | 'y' + | 'month' + | 'months' + | 'M' + | 'week' + | 'weeks' + | 'w' + | 'day' + | 'days' + | 'd' + | 'hour' + | 'hours' + | 'h' + | 'minute' + | 'minutes' + | 'm' + | 'second' + | 'seconds' + | 's' + | 'millisecond' + | 'milliseconds' + | 'ms'; + +export interface DateOptions { + manipulate?: { + amount?: number; + unit?: DateUnit; + startOf?: DateUnit; + endOf?: DateUnit; + }; +} + +export interface TimezoneChangeEvent { + name: string; +} + +export interface DefaultTimezoneChangeEvent { + name: string; +} + +export interface LocaleChangeEvent { + locale: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class DateService { + // tslint:disable-next-line: variable-name + private _changedTimezone: EventEmitter< + TimezoneChangeEvent + > = new EventEmitter(); + // tslint:disable-next-line: variable-name + private _changedDefaultTimezone: EventEmitter< + DefaultTimezoneChangeEvent + > = new EventEmitter(); + // tslint:disable-next-line: variable-name + private _changedLocale: EventEmitter = new EventEmitter< + LocaleChangeEvent + >(); + + private onLangChangeSubscription: Subscription; + + // tslint:disable-next-line: variable-name + private _defaultTimezone: string; + // tslint:disable-next-line: variable-name + private _currentTimezone: string; + // tslint:disable-next-line: variable-name + private _currentLocale: string; + + get changedTimezone(): EventEmitter { + return this._changedTimezone; + } + + get changedDefaultTimezone() { + return this._changedDefaultTimezone; + } + + get changedLocale() { + return this._changedLocale; + } + + /** + * The default lang to fallback when translations are missing on the current lang + */ + get defaultTimezone(): string { + return this._defaultTimezone; + } + + set defaultTimezone(defaultTimezone: string) { + this._defaultTimezone = defaultTimezone; + } + + /** + * The lang currently used + */ + get currentTimezone(): string { + return this._currentTimezone; + } + + set currentTimezone(currentTimezone: string) { + this._currentTimezone = currentTimezone; + } + + /** + * The locale currently used + */ + get currentLocale(): string { + return this._currentLocale; + } + + set currentLocale(currentLocale: string) { + this._currentLocale = currentLocale; + } + + constructor(private i18nService: I18nService) { + this.i18nService.languageChanged$.subscribe((lng: string) => { + if (this._currentLocale !== lng) { + this.changeLocale(lng); + } + }); + } + + /** + * Sets the default language to use as a fallback + */ + setDefaultTimezone(timezone: string): void { + if (timezone === this.defaultTimezone) { + return; + } + + this.changeDefaultTimezone(timezone); + } + + /** + * Gets the default language used + */ + getDefaultTimezone(): string { + return this.defaultTimezone; + } + + /** + * Sets the default language to use as a fallback + */ + setLocale(locale: string): void { + if (locale === this.currentLocale) { + return; + } + + this.changeLocale(locale); + } + + /** + * Gets the default language used + */ + getLocale(): string { + return this.currentLocale; + } + + /** + * Changes the lang currently used + */ + public use(timezone: string): void { + // don't change the language if the language given is already selected + if (timezone === this.currentTimezone) { + return; + } + + this.changeTimezone(timezone); + } + + /** + * Gets the translated value of a key (or an array of keys) + * @returns the translated key, or an object of translated keys + */ + public get(date: any, format: string = 'L', options?: DateOptions): string { + if (!date || 0 === date.length) { + throw new Error(`Parameter "date" required`); + } + + let d = moment.tz(date, 'Asia/Seoul').utc(); + + d = d.tz(this.currentTimezone); + + if (!!options) { + if (!!options.manipulate) { + if (!!options.manipulate.amount && !!options.manipulate.unit) { + d = d.add(options.manipulate.amount, options.manipulate.unit); + } + + if (!!options.manipulate.startOf) { + d = d.startOf(options.manipulate.startOf); + } + if (!!options.manipulate.endOf) { + d = d.startOf(options.manipulate.endOf); + } + } + } + + if ('C' === format) { + return this.chatFormat(d); + } + + return d.format(format); + } + + /** + * Changes the current lang + */ + private changeTimezone(timezone: string): void { + this.currentTimezone = timezone; + this.changedTimezone.emit({ name: timezone }); + + // if there is no default lang, use the one that we just set + if (!this.defaultTimezone) { + this.changeDefaultTimezone(timezone); + } + } + + /** + * Changes the default lang + */ + private changeDefaultTimezone(timezone: string): void { + this.defaultTimezone = timezone; + this.changedDefaultTimezone.emit({ name: timezone }); + } + + /** + * Changes the default lang + */ + private changeLocale(locale: string): void { + this.currentLocale = locale; + moment.locale(locale); + this.changedLocale.emit({ locale }); + } + + private chatFormat(m: moment.Moment): string { + const today = moment(); + const yesterday = moment().subtract(1, 'day'); + + if (m.isSame(today, 'day')) { + return m.format('a hh:mm'); + } else if (m.isSame(yesterday, 'day')) { + return moment + .localeData() + .calendar('lastDay') + .replace('LT', '') + .replace('[', '') + .replace(']', '') + .replace('at', '') + .trim(); + } else { + return m.format('MM.DD'); + } + } +} diff --git a/projects/ui/src/lib/types/file-viewer.type.ts b/projects/ui/src/lib/types/file-viewer.type.ts new file mode 100644 index 0000000..dc1cede --- /dev/null +++ b/projects/ui/src/lib/types/file-viewer.type.ts @@ -0,0 +1,7 @@ +export enum FileViewerType { + Document = 'Document', + Image = 'Image', + Sound = 'Sound', + Video = 'Video', + Binary = 'Binary' +} diff --git a/projects/ui/src/lib/ui.module.ts b/projects/ui/src/lib/ui.module.ts new file mode 100644 index 0000000..b63716c --- /dev/null +++ b/projects/ui/src/lib/ui.module.ts @@ -0,0 +1,133 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { MatButtonModule } from '@angular/material/button'; +import { MatButtonToggleModule } from '@angular/material/button-toggle'; +import { MatCardModule } from '@angular/material/card'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatIconModule } from '@angular/material/icon'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatSliderModule } from '@angular/material/slider'; +import { MatToolbarModule } from '@angular/material/toolbar'; +import { MatTooltipModule } from '@angular/material/tooltip'; + +import { I18nModule } from '@ucap/ng-i18n'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { FileUploadQueueComponent } from './components/file-upload-queue.component'; +import { BinaryViewerComponent } from './components/file-viewer/binary-viewer.component'; +import { DocumentViewerComponent } from './components/file-viewer/document-viewer.component'; +import { ImageViewerComponent } from './components/file-viewer/image-viewer.component'; +import { SoundViewerComponent } from './components/file-viewer/sound-viewer.component'; +import { VideoViewerComponent } from './components/file-viewer/video-viewer.component'; +import { FileViewerComponent } from './components/file-viewer.component'; +import { FloatActionButtonComponent } from './components/float-action-button.component'; +import { InlineEditInputComponent } from './components/inline-edit-input.component'; +import { PickDateComponent } from './components/pick-date.component'; +import { PickTimeComponent } from './components/pick-time.component'; +import { SplitButtonComponent } from './components/split-button.component'; +import { StepInputComponent } from './components/step-input.component'; +import { TitleBarComponent } from './components/title-bar.component'; + +import { AlertDialogComponent } from './dialogs/alert.dialog.component'; +import { ConfirmDialogComponent } from './dialogs/confirm.dialog.component'; + +import { CdkVirtualScrollViewportPatchDirective } from './directives/cdk-virtual-scroll-viewport-patch.directive'; +import { ClickDebounceDirective } from './directives/click-debounce.directive'; +import { ClickOutsideDirective } from './directives/click-outside.directive'; +import { FileUploadForDirective } from './directives/file-upload-for.directive'; +import { ImageDirective } from './directives/image.directive'; + +import { BytesPipe } from './pipes/bytes.pipe'; +import { DatePipe } from './pipes/date.pipe'; +import { EmptyPipe } from './pipes/empty.pipe'; +import { HtmlToLinefeedPipe, LinefeedToHtmlPipe } from './pipes/linefeed.pipe'; +import { LinkyPipe } from './pipes/linky.pipe'; +import { PhoneNumberPipe } from './pipes/phone-number.pipe'; +import { SafeHtmlPipe } from './pipes/safe-html.pipe'; +import { SecondsToMinutesPipe } from './pipes/seconds-to-minutes.pipe'; + +import { DateService } from './services/date.service'; + +const COMPONENTS = [ + FileUploadQueueComponent, + + BinaryViewerComponent, + DocumentViewerComponent, + ImageViewerComponent, + SoundViewerComponent, + VideoViewerComponent, + FileViewerComponent, + + FloatActionButtonComponent, + + InlineEditInputComponent, + + PickDateComponent, + PickTimeComponent, + SplitButtonComponent, + StepInputComponent, + TitleBarComponent +]; +const DIALOGS = [AlertDialogComponent, ConfirmDialogComponent]; +const PIPES = [ + BytesPipe, + DatePipe, + EmptyPipe, + HtmlToLinefeedPipe, + LinefeedToHtmlPipe, + LinkyPipe, + PhoneNumberPipe, + SafeHtmlPipe, + SecondsToMinutesPipe +]; +const DIRECTIVES = [ + CdkVirtualScrollViewportPatchDirective, + ClickDebounceDirective, + ClickOutsideDirective, + FileUploadForDirective, + ImageDirective +]; +const SERVICES = [DateService]; + +@NgModule({ + declarations: [], + imports: [], + exports: [] +}) +export class UiRootModule {} + +@NgModule({ + imports: [ + CommonModule, + + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + MatDatepickerModule, + MatIconModule, + MatMenuModule, + MatProgressBarModule, + MatSliderModule, + MatToolbarModule, + MatTooltipModule, + + I18nModule + ], + exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + declarations: [...COMPONENTS, ...DIALOGS, ...DIRECTIVES, ...PIPES], + entryComponents: [...DIALOGS] +}) +export class UiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: UiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/ui/src/lib/utils/html.util.ts b/projects/ui/src/lib/utils/html.util.ts new file mode 100644 index 0000000..c523a66 --- /dev/null +++ b/projects/ui/src/lib/utils/html.util.ts @@ -0,0 +1,37 @@ +export class HtmlUtil { + /** + * linefeed >
+ */ + static linefeedToHtml(str: string): string { + const s = str + .replace(/\r\n/g, '
') + .replace(/\r/g, '
') + .replace(/\n/g, '
'); + + return s; + } + + /** + *
> linefeed + */ + static htmlToLinefeed(str: string): string { + const s = str.replace(/(<|<\/)br([\s.'"=a-zA-Z/]*)>/gi, '\n'); + return s; + } + + static escapeHtml(dirty: string): string { + const s = (dirty + '').replace( + /[&<>"']/g, + m => + ({ + '&': '&', + '<': '<', + '>': '>', + '"': '"', + // tslint:disable-next-line: quotemark + "'": ''' + }[m]) + ); + return s; + } +} diff --git a/projects/ui/src/lib/utils/phone-number.util.ts b/projects/ui/src/lib/utils/phone-number.util.ts new file mode 100644 index 0000000..393353e --- /dev/null +++ b/projects/ui/src/lib/utils/phone-number.util.ts @@ -0,0 +1,29 @@ +import { parsePhoneNumberFromString, CountryCode } from 'libphonenumber-js'; + +export class PhoneNumberUtil { + static format(country: CountryCode, value: string, mask: boolean = false) { + const phoneNumber = parsePhoneNumberFromString(value, country); + + const s = phoneNumber.formatNational(); + + if (!mask) { + return s; + } + + const ary = s.split('-'); + + if (!ary || 3 > ary.length) { + return s; + } + + const t = ary[ary.length - 2]; + let m = ''; + // tslint:disable-next-line: prefer-for-of + for (let j = 0; j < t.length; j++) { + m = m.concat('*'); + } + ary[ary.length - 2] = m; + + return ary.join('-'); + } +} diff --git a/projects/ui/src/public-api.ts b/projects/ui/src/public-api.ts new file mode 100644 index 0000000..3007522 --- /dev/null +++ b/projects/ui/src/public-api.ts @@ -0,0 +1,48 @@ +/* + * Public API Surface of ui + */ + +export * from './lib/config/module-config'; + +export * from './lib/animations'; + +export * from './lib/components/file-upload-queue.component'; + +export * from './lib/components/file-viewer/binary-viewer.component'; +export * from './lib/components/file-viewer/document-viewer.component'; +export * from './lib/components/file-viewer/image-viewer.component'; +export * from './lib/components/file-viewer/sound-viewer.component'; +export * from './lib/components/file-viewer/video-viewer.component'; + +export * from './lib/components/file-viewer.component'; + +export * from './lib/components/float-action-button.component'; +export * from './lib/components/inline-edit-input.component'; +export * from './lib/components/pick-date.component'; +export * from './lib/components/pick-time.component'; +export * from './lib/components/split-button.component'; +export * from './lib/components/step-input.component'; + +export * from './lib/data-source/virtual-scroll-tree-flat.data-source'; + +export * from './lib/dialogs/alert.dialog.component'; +export * from './lib/dialogs/confirm.dialog.component'; + +export * from './lib/directives/cdk-virtual-scroll-viewport-patch.directive'; +export * from './lib/directives/click-debounce.directive'; +export * from './lib/directives/click-outside.directive'; +export * from './lib/directives/file-upload-for.directive'; +export * from './lib/directives/image.directive'; + +export * from './lib/pipes/bytes.pipe'; +export * from './lib/pipes/date.pipe'; +export * from './lib/pipes/empty.pipe'; +export * from './lib/pipes/linefeed.pipe'; +export * from './lib/pipes/linky.pipe'; +export * from './lib/pipes/phone-number.pipe'; +export * from './lib/pipes/safe-html.pipe'; +export * from './lib/pipes/seconds-to-minutes.pipe'; + +export * from './lib/services/date.service'; + +export * from './lib/ui.module'; diff --git a/projects/ui/src/test.ts b/projects/ui/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/ui/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/ui/tsconfig.lib.json b/projects/ui/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/ui/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/ui/tsconfig.lib.prod.json b/projects/ui/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/ui/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/ui/tsconfig.spec.json b/projects/ui/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/ui/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/ui/tslint.json b/projects/ui/tslint.json new file mode 100644 index 0000000..f60d5da --- /dev/null +++ b/projects/ui/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "ucap", + "camelCase" + ], + "component-selector": [ + true, + "element", + "ucap", + "kebab-case" + ] + } +} diff --git a/projects/web-storage/README.md b/projects/web-storage/README.md new file mode 100644 index 0000000..4ac2b95 --- /dev/null +++ b/projects/web-storage/README.md @@ -0,0 +1,24 @@ +# WebStorage + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.2. + +## Code scaffolding + +Run `ng generate component component-name --project web-storage` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project web-storage`. +> Note: Don't forget to add `--project web-storage` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build web-storage` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build web-storage`, go to the dist folder `cd dist/web-storage` and run `npm publish`. + +## Running unit tests + +Run `ng test web-storage` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/web-storage/karma.conf.js b/projects/web-storage/karma.conf.js new file mode 100644 index 0000000..7d3447f --- /dev/null +++ b/projects/web-storage/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/web-storage'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/web-storage/ng-package.json b/projects/web-storage/ng-package.json new file mode 100644 index 0000000..88b82c6 --- /dev/null +++ b/projects/web-storage/ng-package.json @@ -0,0 +1,10 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/web-storage", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/web-storage": "@ucap/web-storage" + } + } +} diff --git a/projects/web-storage/package.json b/projects/web-storage/package.json new file mode 100644 index 0000000..457daaf --- /dev/null +++ b/projects/web-storage/package.json @@ -0,0 +1,14 @@ +{ + "name": "@ucap/ng-web-storage", + "version": "0.0.1", + "publishConfig": { + "registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/web-storage": "~0.0.1", + "crypto-js": "^4.0.0", + "tslib": "^1.10.0" + } +} diff --git a/projects/web-storage/src/lib/config/token.ts b/projects/web-storage/src/lib/config/token.ts new file mode 100644 index 0000000..05d4d7d --- /dev/null +++ b/projects/web-storage/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-web-storage config of module' +); diff --git a/projects/web-storage/src/lib/services/local-storage.service.spec.ts b/projects/web-storage/src/lib/services/local-storage.service.spec.ts new file mode 100644 index 0000000..c3d2fb0 --- /dev/null +++ b/projects/web-storage/src/lib/services/local-storage.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { LocalStorageService } from './local-storage.service'; + +describe('LocalStorageService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: LocalStorageService = TestBed.inject(LocalStorageService); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/web-storage/src/lib/services/local-storage.service.ts b/projects/web-storage/src/lib/services/local-storage.service.ts new file mode 100644 index 0000000..637da24 --- /dev/null +++ b/projects/web-storage/src/lib/services/local-storage.service.ts @@ -0,0 +1,12 @@ +import { Injectable } from '@angular/core'; + +import { LocalStorageService as UcapLocalStorageService } from '@ucap/web-storage'; + +@Injectable({ + providedIn: 'root' +}) +export class LocalStorageService extends UcapLocalStorageService { + constructor() { + super(); + } +} diff --git a/projects/web-storage/src/lib/services/session-storage.service.spec.ts b/projects/web-storage/src/lib/services/session-storage.service.spec.ts new file mode 100644 index 0000000..2720a74 --- /dev/null +++ b/projects/web-storage/src/lib/services/session-storage.service.spec.ts @@ -0,0 +1,14 @@ +import { TestBed } from '@angular/core/testing'; + +import { SessionStorageService } from './session-storage.service'; + +describe('SessionStorageService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: SessionStorageService = TestBed.inject( + SessionStorageService + ); + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/web-storage/src/lib/services/session-storage.service.ts b/projects/web-storage/src/lib/services/session-storage.service.ts new file mode 100644 index 0000000..784a93a --- /dev/null +++ b/projects/web-storage/src/lib/services/session-storage.service.ts @@ -0,0 +1,11 @@ +import { Injectable } from '@angular/core'; +import { SessionStorageService as UcapSessionStorageService } from '@ucap/web-storage'; + +@Injectable({ + providedIn: 'root' +}) +export class SessionStorageService extends UcapSessionStorageService { + constructor() { + super(); + } +} diff --git a/projects/web-storage/src/lib/web-storage.module.ts b/projects/web-storage/src/lib/web-storage.module.ts new file mode 100644 index 0000000..629baa5 --- /dev/null +++ b/projects/web-storage/src/lib/web-storage.module.ts @@ -0,0 +1,25 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/web-storage'; + +import { _MODULE_CONFIG } from './config/token'; + +import { LocalStorageService } from './services/local-storage.service'; +import { SessionStorageService } from './services/session-storage.service'; + +const SERVICES = [LocalStorageService, SessionStorageService]; + +@NgModule({}) +export class WebStorageRootModule {} + +@NgModule({}) +export class WebStorageModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: WebStorageRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/web-storage/src/public-api.ts b/projects/web-storage/src/public-api.ts new file mode 100644 index 0000000..403af14 --- /dev/null +++ b/projects/web-storage/src/public-api.ts @@ -0,0 +1,8 @@ +/* + * Public API Surface of web-storage + */ + +export * from './lib/services/session-storage.service'; +export * from './lib/services/local-storage.service'; + +export * from './lib/web-storage.module'; diff --git a/projects/web-storage/src/test.ts b/projects/web-storage/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/web-storage/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/web-storage/tsconfig.lib.json b/projects/web-storage/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/web-storage/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/web-storage/tsconfig.lib.prod.json b/projects/web-storage/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/web-storage/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/web-storage/tsconfig.spec.json b/projects/web-storage/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/web-storage/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/web-storage/tslint.json b/projects/web-storage/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/web-storage/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/scripts/build.js b/scripts/build.js new file mode 100644 index 0000000..f23b235 --- /dev/null +++ b/scripts/build.js @@ -0,0 +1,125 @@ +const { execSync } = require('child_process'); +const path = require('path'); +const fse = require('fs-extra'); +const { Bundler } = require('scss-bundle'); + +async function build() { + const args = process.argv.slice(2); + const projectName = args[0]; + const useScssBundle = + 2 === args.length && 'useScssBundle' === args[1] ? true : false; + + const rootPath = path.join(__dirname, '..'); + const projectPath = path.join(rootPath, 'projects', projectName); + const distPath = path.join(rootPath, 'dist', projectName); + + let projectVersion; + + const ngBuild = () => { + return new Promise(async (resolve, reject) => { + try { + execSync(`ng build ${projectName} --prod`, { stdio: 'inherit' }); + resolve(); + } catch (error) { + reject(error); + } + }); + }; + + const scssBundle = () => { + return new Promise(async (resolve, reject) => { + try { + if (useScssBundle) { + const config = require(path.join( + projectPath, + 'scss-bundle.config.json' + )); + + const bundler = new Bundler( + undefined, + path.join(rootPath, config.bundlerOptions.rootDir) + ); + const result = await bundler.bundle( + path.join(rootPath, config.bundlerOptions.entryFile), + config.bundlerOptions.dedupeGlobs, + config.bundlerOptions.includePaths, + config.bundlerOptions.ignoreImports + ); + + fse.writeFileSync( + path.join(rootPath, config.bundlerOptions.outFile), + result.bundledContent + ); + } + resolve(); + } catch (error) { + reject(error); + } + }); + }; + + const npmPack = () => { + return new Promise(async (resolve, reject) => { + try { + process.chdir(distPath); + + execSync(`npm pack`, { stdio: 'inherit' }); + + projectVersion = require(path.join(distPath, 'package.json')).version; + + process.chdir(path.join(rootPath)); + + resolve(); + } catch (error) { + reject(error); + } + }); + }; + + const installToLocal = () => { + return new Promise(async (resolve, reject) => { + try { + execSync( + `npm install -D ${path.join( + distPath, + `ucap-ng-${projectName}-${projectVersion}.tgz` + )}`, + { + stdio: 'inherit' + } + ); + resolve(); + } catch (error) { + reject(error); + } + }); + }; + + const clean = () => { + return new Promise(async (resolve, reject) => { + try { + execSync( + `rimraf ${path.join( + distPath, + `ucap-ng-${projectName}-${projectVersion}.tgz` + )}`, + { + stdio: 'inherit' + } + ); + + resolve(); + } catch (error) { + reject(error); + } + }); + }; + + await ngBuild(); + await scssBundle(); + await npmPack(); + await installToLocal(); + await clean(); +} + +build(); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..dd5050c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "module": "esnext", + "moduleResolution": "node", + "importHelpers": true, + "esModuleInterop": true, + "target": "es2015", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ], + "paths": { + "ui-skin-default": [ + "dist/ui-skin-default/ui-skin-default", + "dist/ui-skin-default" + ] + } + }, + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true + } +} \ No newline at end of file diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..e770913 --- /dev/null +++ b/tslint.json @@ -0,0 +1,79 @@ +{ + "extends": "tslint:recommended", + "rulesDirectory": [ + "codelyzer" + ], + "rules": { + "array-type": false, + "arrow-parens": false, + "deprecation": { + "severity": "warning" + }, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [ + true, + "single" + ], + "trailing-comma": false, + "component-class-suffix": true, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + } +}