From 0c9867beb922c649f52c627f04b3b45b6fdb6268 Mon Sep 17 00:00:00 2001 From: Park Byung Eun Date: Mon, 10 Aug 2020 14:05:57 +0900 Subject: [PATCH] sync --- angular.json | 160 + package-lock.json | 4613 +++++++++-------- package.json | 118 +- projects/api-contact/README.md | 24 + projects/api-contact/karma.conf.js | 32 + projects/api-contact/ng-package.json | 11 + projects/api-contact/package.json | 16 + projects/api-contact/src/lib/config/token.ts | 5 + .../api-contact/src/lib/contact-api.module.ts | 24 + .../lib/services/contact-api.service.spec.ts | 24 + .../src/lib/services/contact-api.service.ts | 24 + projects/api-contact/src/public-api.ts | 6 + projects/api-contact/src/test.ts | 26 + projects/api-contact/tsconfig.lib.json | 23 + projects/api-contact/tsconfig.lib.prod.json | 6 + projects/api-contact/tsconfig.spec.json | 17 + projects/api-contact/tslint.json | 17 + projects/api-webex/README.md | 24 + projects/api-webex/karma.conf.js | 32 + projects/api-webex/ng-package.json | 11 + projects/api-webex/package.json | 16 + projects/api-webex/src/lib/config/token.ts | 5 + .../src/lib/services/conference.service.ts | 17 + .../api-webex/src/lib/webex-api.module.ts | 24 + projects/api-webex/src/public-api.ts | 7 + projects/api-webex/src/test.ts | 26 + projects/api-webex/tsconfig.lib.json | 23 + projects/api-webex/tsconfig.lib.prod.json | 6 + projects/api-webex/tsconfig.spec.json | 17 + projects/api-webex/tslint.json | 17 + projects/core/package.json | 2 +- projects/core/src/lib/utils/string.util.ts | 37 +- projects/i18n/ng-package.json | 1 + projects/i18n/package.json | 3 +- projects/i18n/src/lib/i18n.module.ts | 3 +- .../i18n/src/lib/services/i18n.service.ts | 252 +- projects/i18n/src/lib/types/i18next.event.ts | 9 - projects/i18n/src/public-api.ts | 3 +- projects/native/ng-package.json | 1 + projects/native/package.json | 3 +- .../lib/services/browser-native.service.ts | 228 +- projects/store-authentication/ng-package.json | 1 + projects/store-authentication/package.json | 3 +- .../src/lib/store/authorization/actions.ts | 11 +- .../src/lib/store/authorization/effects.ts | 20 +- .../src/lib/store/authorization/reducers.ts | 12 +- .../src/lib/store/authorization/state.ts | 21 +- .../src/lib/store/configuration/actions.ts | 9 +- .../src/lib/store/configuration/reducers.ts | 12 +- .../src/lib/store/configuration/state.ts | 21 +- .../src/lib/store/login/actions.ts | 13 +- .../src/lib/store/login/effects.ts | 26 +- .../src/lib/store/login/reducers.ts | 2 +- .../src/lib/store/login/state.ts | 8 +- projects/store-call/README.md | 24 + projects/store-call/karma.conf.js | 32 + projects/store-call/ng-package.json | 17 + projects/store-call/package.json | 16 + .../store-call/src/lib/call-store.module.ts | 31 + .../src/lib/config/module-config.ts | 6 + projects/store-call/src/lib/config/token.ts | 5 + .../store-call/src/lib/store/call/actions.ts | 55 + .../store-call/src/lib/store/call/effects.ts | 91 + .../store-call/src/lib/store/call/reducers.ts | 29 + .../store-call/src/lib/store/call/state.ts | 49 + .../src/lib/store/common/actions.ts | 3 + .../src/lib/store/common/effects.ts | 8 + .../src/lib/store/common/reducers.ts | 5 + .../store-call/src/lib/store/common/state.ts | 10 + projects/store-call/src/lib/store/effects.ts | 6 + projects/store-call/src/lib/store/reducers.ts | 11 + projects/store-call/src/lib/store/state.ts | 21 + projects/store-call/src/public-api.ts | 14 + projects/store-call/src/test.ts | 26 + projects/store-call/tsconfig.lib.json | 23 + projects/store-call/tsconfig.lib.prod.json | 6 + projects/store-call/tsconfig.spec.json | 17 + projects/store-call/tslint.json | 17 + projects/store-chat/ng-package.json | 4 + projects/store-chat/package.json | 13 +- .../src/lib/store/chatting/actions.ts | 16 +- .../src/lib/store/chatting/effects.ts | 45 +- .../src/lib/store/chatting/reducers.ts | 12 +- .../src/lib/store/chatting/state.ts | 13 +- .../store-chat/src/lib/store/room/actions.ts | 15 +- .../store-chat/src/lib/store/room/effects.ts | 21 +- .../store-chat/src/lib/store/room/reducers.ts | 72 +- .../store-chat/src/lib/store/room/state.ts | 2 +- .../store-chat/src/lib/utils/chat.util.ts | 6 +- projects/store-group/ng-package.json | 2 + projects/store-group/package.json | 5 +- .../src/lib/store/buddy/actions.ts | 4 +- .../src/lib/store/buddy/effects.ts | 3 +- .../src/lib/store/buddy/reducers.ts | 19 +- .../store-group/src/lib/store/buddy/state.ts | 6 +- .../src/lib/store/group/actions.ts | 15 +- .../src/lib/store/group/reducers.ts | 4 +- .../store-group/src/lib/store/group/state.ts | 10 +- projects/store-organization/ng-package.json | 3 + projects/store-organization/package.json | 11 +- .../src/lib/store/common/effects.ts | 9 +- .../src/lib/store/company/state.ts | 2 +- .../src/lib/store/department/actions.ts | 9 +- .../src/lib/store/department/effects.ts | 3 +- .../src/lib/store/department/state.ts | 2 +- .../src/lib/store/presence/actions.ts | 4 +- .../src/lib/store/presence/effects.ts | 3 +- .../src/lib/store/presence/reducers.ts | 2 +- .../src/lib/store/presence/state.ts | 2 +- .../src/lib/store/user/actions.ts | 4 +- .../src/lib/store/user/reducers.ts | 8 +- .../src/lib/store/user/state.ts | 5 +- projects/ui-authentication/ng-package.json | 2 + projects/ui-authentication/package.json | 4 +- .../src/lib/authentication-ui.module.ts | 5 +- .../lib/components/login.component.spec.ts | 2 +- .../lib/components/login.component.stories.ts | 2 +- .../src/lib/components/login.component.ts | 5 +- projects/ui-call/README.md | 24 + projects/ui-call/karma.conf.js | 32 + projects/ui-call/ng-package.json | 23 + projects/ui-call/package.json | 20 + projects/ui-call/scss-bundle.config.json | 11 + projects/ui-call/src/assets/scss/_theme.scss | 2 + projects/ui-call/src/lib/call-ui.module.ts | 113 + .../src/lib/components/dialpad.component.html | 78 + .../src/lib/components/dialpad.component.scss | 74 + .../lib/components/dialpad.component.spec.ts | 27 + .../src/lib/components/dialpad.component.ts | 148 + .../history-expansion.component.html | 67 + .../history-expansion.component.scss | 22 + .../history-expansion.component.spec.ts | 26 + .../components/history-expansion.component.ts | 199 + .../history-list-item.component.html | 46 + .../history-list-item.component.scss | 11 + .../history-list-item.component.spec.ts | 25 + .../components/history-list-item.component.ts | 55 + .../timeline-item-list-01.component.html | 25 + .../timeline-item-list-01.component.scss | 11 + .../timeline-item-list-01.component.spec.ts | 25 + .../timeline-item-list-01.component.ts | 89 + .../timeline-item-list.component.html | 17 + .../timeline-item-list.component.scss | 11 + .../timeline-item-list.component.spec.ts | 25 + .../timeline-item-list.component.ts | 64 + .../components/timeline-item.component.html | 42 + .../components/timeline-item.component.scss | 34 + .../timeline-item.component.spec.ts | 24 + .../lib/components/timeline-item.component.ts | 54 + .../src/lib/config/module-config.ts | 0 projects/ui-call/src/lib/config/token.ts | 5 + projects/ui-call/src/public-api.ts | 15 + projects/ui-call/src/test.ts | 26 + projects/ui-call/tsconfig.lib.json | 23 + projects/ui-call/tsconfig.lib.prod.json | 6 + projects/ui-call/tsconfig.spec.json | 17 + projects/ui-call/tslint.json | 7 + projects/ui-chat/karma.conf.js | 2 +- projects/ui-chat/ng-package.json | 7 +- projects/ui-chat/package.json | 6 +- projects/ui-chat/src/lib/chat-ui.module.ts | 13 +- .../components/file-list-item-01.component.ts | 14 +- .../src/lib/components/file-list.component.ts | 10 +- .../image-list-item-01.component.ts | 8 +- .../lib/components/image-list.component.ts | 10 +- .../src/lib/components/item-list.component.ts | 4 +- .../message-box/attach-file.component.ts | 21 +- .../message-box/date-splitter.component.ts | 13 +- .../components/message-box/file.component.ts | 24 +- .../components/message-box/image.component.ts | 15 +- .../message-box/information.component.ts | 14 +- .../message-box/mass-translation.component.ts | 9 +- .../components/message-box/mass.component.ts | 9 +- .../message-box/read-here.component.ts | 5 +- .../message-box/recall.component.ts | 5 +- .../components/message-box/reply.component.ts | 6 +- .../message-box/schedule.component.ts | 15 +- .../components/message-box/sms.component.ts | 6 +- .../message-box/sticker.component.ts | 19 +- .../components/message-box/text.component.ts | 9 +- .../message-box/translation.component.ts | 9 +- .../message-box/video-conference.component.ts | 15 +- .../components/message-box/video.component.ts | 21 +- .../components/room-expansion.component.ts | 4 +- .../room-list-item-01.component.html | 4 +- .../components/room-list-item-01.component.ts | 8 +- projects/ui-chat/src/public-api.ts | 1 + projects/ui-group/ng-package.json | 4 +- projects/ui-group/package.json | 3 +- .../lib/components/expansion.component.html | 5 +- .../lib/components/expansion.component.scss | 1 + .../src/lib/components/expansion.component.ts | 107 +- projects/ui-group/src/lib/group-ui.module.ts | 5 +- .../ui-group/src/lib/types/group-menu.type.ts | 10 + projects/ui-group/src/public-api.ts | 2 + projects/ui-organization/ng-package.json | 7 +- projects/ui-organization/package.json | 6 +- .../lib/components/profile-01.component.html | 9 +- .../lib/components/profile-01.component.ts | 16 +- .../profile-image-01.component.stories.ts | 22 +- .../components/profile-image-01.component.ts | 5 +- .../profile-list-item-01.component.stories.ts | 5 +- .../profile-list-item-01.component.ts | 2 +- .../profile-list-item-02.component.stories.ts | 5 +- .../profile-list-item-02.component.ts | 2 +- .../lib/components/profile-list.component.ts | 21 +- .../components/profile-menu-01.component.ts | 8 +- .../components/profile-menu-02.component.html | 115 + .../components/profile-menu-02.component.scss | 6 + .../profile-menu-02.component.spec.ts | 32 + .../profile-menu-02.component.stories.ts | 26 + .../profile-menu-02.component.theme.scss | 20 + .../components/profile-menu-02.component.ts | 178 + .../profile-selection-01.component.ts | 3 +- .../search-for-tenant.component.html | 1 + .../components/search-for-tenant.component.ts | 12 +- .../src/lib/components/tree.component.ts | 23 +- .../src/lib/organization-ui.module.ts | 17 +- .../src/lib/types/profile-menu.type.ts | 14 + .../src/lib/utils/presence.util.ts | 6 +- projects/ui-organization/src/public-api.ts | 1 + projects/ui/breadcrumb/package.json | 26 + .../lib/components/breadcrumb.component.html | 0 .../lib/components/breadcrumb.component.scss | 0 .../components/breadcrumb.component.spec.ts | 0 .../breadcrumb.component.stories.ts | 0 .../breadcrumb.component.theme.scss | 0 .../lib/components/breadcrumb.component.ts | 18 +- .../src/lib/config/module-config.ts | 0 .../ui/breadcrumb/src/lib/config/token.ts | 5 + .../src/lib/directives/paginated-header.ts | 26 +- .../src/lib/ui-breadcrumb.module.ts | 44 + projects/ui/breadcrumb/src/public-api.ts | 12 + projects/ui/button/package.json | 26 + .../float-action-button.component.html | 8 +- .../float-action-button.component.scss | 0 .../float-action-button.component.spec.ts | 0 .../float-action-button.component.stories.ts | 0 .../float-action-button.component.theme.scss | 0 .../float-action-button.component.ts | 11 +- .../components/split-button.component.html | 0 .../components/split-button.component.scss | 0 .../components/split-button.component.spec.ts | 0 .../split-button.component.stories.ts | 0 .../split-button.component.theme.scss | 0 .../lib/components/split-button.component.ts | 0 .../ui/button/src/lib/config/module-config.ts | 4 + projects/ui/button/src/lib/config/token.ts | 5 + .../ui/button/src/lib/ui-button.module.ts | 59 + projects/ui/button/src/public-api.ts | 11 + projects/ui/core/package.json | 28 + .../ui/{ => core}/src/lib/animations/index.ts | 0 .../ui/core/src/lib/config/module-config.ts | 4 + .../ui/{ => core}/src/lib/config/token.ts | 0 .../lib/dialogs/alert.dialog.component.html | 0 .../lib/dialogs/alert.dialog.component.scss | 0 .../dialogs/alert.dialog.component.spec.ts | 0 .../src/lib/dialogs/alert.dialog.component.ts | 0 .../lib/dialogs/confirm.dialog.component.html | 0 .../lib/dialogs/confirm.dialog.component.scss | 0 .../dialogs/confirm.dialog.component.spec.ts | 0 .../lib/dialogs/confirm.dialog.component.ts | 0 .../directives/click-debounce.directive.ts | 0 .../lib/directives/click-outside.directive.ts | 0 .../src/lib/directives/image.directive.ts | 0 .../src/lib/directives/var.directive.ts | 0 .../ui/{ => core}/src/lib/pipes/bytes.pipe.ts | 0 .../ui/{ => core}/src/lib/pipes/empty.pipe.ts | 0 .../{ => core}/src/lib/pipes/linefeed.pipe.ts | 0 .../ui/{ => core}/src/lib/pipes/linky.pipe.ts | 0 .../src/lib/pipes/safe-html.pipe.ts | 0 .../src/lib/services/clipboard.service.ts | 0 .../src/lib/services/dom.service.ts | 0 projects/ui/core/src/lib/ui-core.module.ts | 78 + .../ui/{ => core}/src/lib/utils/html.util.ts | 2 +- projects/ui/core/src/public-api.ts | 26 + projects/ui/date/package.json | 29 + .../lib/components/pick-date.component.html | 0 .../lib/components/pick-date.component.scss | 0 .../components/pick-date.component.spec.ts | 0 .../components/pick-date.component.stories.ts | 0 .../components/pick-date.component.theme.scss | 0 .../src/lib/components/pick-date.component.ts | 2 +- .../lib/components/pick-time.component.html | 0 .../lib/components/pick-time.component.scss | 0 .../components/pick-time.component.spec.ts | 0 .../components/pick-time.component.stories.ts | 0 .../components/pick-time.component.theme.scss | 0 .../src/lib/components/pick-time.component.ts | 12 +- .../ui/date/src/lib/config/module-config.ts | 4 + projects/ui/date/src/lib/config/token.ts | 5 + .../ui/{ => date}/src/lib/pipes/date.pipe.ts | 4 +- .../src/lib/pipes/seconds-to-minutes.pipe.ts | 0 .../src/lib/services/date.service.ts | 4 +- projects/ui/date/src/lib/ui-date.module.ts | 58 + projects/ui/date/src/public-api.ts | 16 + projects/ui/file-upload/package.json | 28 + .../file-upload-queue.component.html | 0 .../file-upload-queue.component.scss | 0 .../file-upload-queue.component.stories.ts | 0 .../file-upload-queue.component.theme.scss | 0 .../components/file-upload-queue.component.ts | 2 +- .../src/lib/config/module-config.ts | 4 + .../ui/file-upload/src/lib/config/token.ts | 5 + .../directives/file-upload-for.directive.ts | 173 + .../src/lib/ui-file-upload.module.ts | 44 + projects/ui/file-upload/src/public-api.ts | 12 + projects/ui/input/package.json | 27 + .../inline-edit-input.component.html | 0 .../inline-edit-input.component.scss | 0 .../inline-edit-input.component.spec.ts | 0 .../inline-edit-input.component.stories.ts | 0 .../inline-edit-input.component.theme.scss | 0 .../components/inline-edit-input.component.ts | 0 .../lib/components/step-input.component.html | 0 .../lib/components/step-input.component.scss | 0 .../components/step-input.component.spec.ts | 0 .../step-input.component.stories.ts | 0 .../step-input.component.theme.scss | 0 .../lib/components/step-input.component.ts | 9 +- .../ui/input/src/lib/config/module-config.ts | 4 + projects/ui/input/src/lib/config/token.ts | 5 + projects/ui/input/src/lib/ui-input.module.ts | 55 + projects/ui/input/src/public-api.ts | 11 + projects/ui/native/package.json | 28 + .../lib/components/title-bar.component.html | 0 .../lib/components/title-bar.component.scss | 4 +- .../components/title-bar.component.spec.ts | 0 .../components/title-bar.component.stories.ts | 0 .../components/title-bar.component.theme.scss | 0 .../src/lib/components/title-bar.component.ts | 18 +- .../ui/native/src/lib/config/module-config.ts | 4 + projects/ui/native/src/lib/config/token.ts | 5 + .../ui/native/src/lib/ui-native.module.ts | 41 + projects/ui/native/src/public-api.ts | 10 + projects/ui/ng-package.json | 16 +- projects/ui/package.json | 10 +- projects/ui/phone/package.json | 28 + .../ui/phone/src/lib/config/module-config.ts | 4 + projects/ui/phone/src/lib/config/token.ts | 5 + .../src/lib/pipes/phone-number.pipe.ts | 2 + projects/ui/phone/src/lib/ui-phone.module.ts | 43 + .../src/lib/utils/phone-number.util.ts | 0 projects/ui/phone/src/public-api.ts | 12 + projects/ui/scrolling/package.json | 26 + .../components}/virtual-scroll-viewport.html | 16 +- .../components}/virtual-scroll-viewport.scss | 0 .../components}/virtual-scroll-viewport.ts | 152 +- .../scrolling/src/lib/config/module-config.ts | 4 + projects/ui/scrolling/src/lib/config/token.ts | 5 + .../virtual-scroll-tree-flat.data-source.ts | 2 +- .../src/lib/directives}/scrollable.ts | 7 +- .../src/lib/directives}/virtual-for-of.ts | 77 +- .../interfaces}/virtual-scroll-strategy.ts | 14 +- .../strategies}/auto-size-virtual-scroll.ts | 26 +- .../strategies}/fixed-size-virtual-scroll.ts | 47 +- .../measure-size-virtual-scroll.ts | 195 +- .../scrolling/src/lib/ui-scrolling.module.ts | 61 + projects/ui/scrolling/src/public-api.ts | 21 + projects/ui/src/assets/scss/_theme.scss | 34 +- .../directives/file-upload-for.directive.ts | 171 - .../ui/src/lib/scrolling/scroll-dispatcher.ts | 220 - .../ui/src/lib/scrolling/viewport-ruler.ts | 179 - .../ui/src/lib/services/dialog.service.ts | 52 - projects/ui/src/lib/ui.module.ts | 171 - projects/ui/src/public-api.ts | 62 +- projects/ui/viewer/package.json | 30 + .../lib/components/file-viewer.component.html | 0 .../lib/components/file-viewer.component.scss | 0 .../components/file-viewer.component.spec.ts | 0 .../file-viewer.component.stories.ts | 0 .../file-viewer.component.theme.scss | 0 .../lib/components/file-viewer.component.ts | 6 +- .../file-viewer/binary-viewer.component.html | 0 .../file-viewer/binary-viewer.component.scss | 0 .../binary-viewer.component.spec.ts | 0 .../binary-viewer.component.stories.ts | 0 .../binary-viewer.component.theme.scss | 0 .../file-viewer/binary-viewer.component.ts | 6 +- .../document-viewer.component.html | 0 .../document-viewer.component.scss | 0 .../document-viewer.component.spec.ts | 0 .../document-viewer.component.stories.ts | 0 .../document-viewer.component.theme.scss | 0 .../file-viewer/document-viewer.component.ts | 6 +- .../file-viewer/image-viewer.component.html | 0 .../file-viewer/image-viewer.component.scss | 0 .../image-viewer.component.spec.ts | 0 .../image-viewer.component.stories.ts | 0 .../image-viewer.component.theme.scss | 0 .../file-viewer/image-viewer.component.ts | 22 +- .../file-viewer/sound-viewer.component.html | 0 .../file-viewer/sound-viewer.component.scss | 0 .../sound-viewer.component.spec.ts | 0 .../sound-viewer.component.stories.ts | 0 .../sound-viewer.component.theme.scss | 0 .../file-viewer/sound-viewer.component.ts | 5 +- .../file-viewer/video-viewer.component.html | 0 .../file-viewer/video-viewer.component.scss | 0 .../video-viewer.component.spec.ts | 0 .../video-viewer.component.stories.ts | 0 .../video-viewer.component.theme.scss | 0 .../file-viewer/video-viewer.component.ts | 6 +- .../components/media-viewer.component.html | 0 .../components/media-viewer.component.scss | 0 .../components/media-viewer.component.spec.ts | 0 .../media-viewer.component.stories.ts | 0 .../media-viewer.component.theme.scss | 0 .../lib/components/media-viewer.component.ts | 10 +- .../ui/viewer/src/lib/config/module-config.ts | 4 + projects/ui/viewer/src/lib/config/token.ts | 5 + .../src/lib/models/select-file-info.ts | 0 .../src/lib/types/file-viewer.type.ts | 0 .../ui/viewer/src/lib/ui-viewer.module.ts | 76 + projects/ui/viewer/src/public-api.ts | 20 + tsconfig.json | 24 +- 416 files changed, 7971 insertions(+), 4423 deletions(-) create mode 100644 projects/api-contact/README.md create mode 100644 projects/api-contact/karma.conf.js create mode 100644 projects/api-contact/ng-package.json create mode 100644 projects/api-contact/package.json create mode 100644 projects/api-contact/src/lib/config/token.ts create mode 100644 projects/api-contact/src/lib/contact-api.module.ts create mode 100644 projects/api-contact/src/lib/services/contact-api.service.spec.ts create mode 100644 projects/api-contact/src/lib/services/contact-api.service.ts create mode 100644 projects/api-contact/src/public-api.ts create mode 100644 projects/api-contact/src/test.ts create mode 100644 projects/api-contact/tsconfig.lib.json create mode 100644 projects/api-contact/tsconfig.lib.prod.json create mode 100644 projects/api-contact/tsconfig.spec.json create mode 100644 projects/api-contact/tslint.json create mode 100644 projects/api-webex/README.md create mode 100644 projects/api-webex/karma.conf.js create mode 100644 projects/api-webex/ng-package.json create mode 100644 projects/api-webex/package.json create mode 100644 projects/api-webex/src/lib/config/token.ts create mode 100644 projects/api-webex/src/lib/services/conference.service.ts create mode 100644 projects/api-webex/src/lib/webex-api.module.ts create mode 100644 projects/api-webex/src/public-api.ts create mode 100644 projects/api-webex/src/test.ts create mode 100644 projects/api-webex/tsconfig.lib.json create mode 100644 projects/api-webex/tsconfig.lib.prod.json create mode 100644 projects/api-webex/tsconfig.spec.json create mode 100644 projects/api-webex/tslint.json delete mode 100644 projects/i18n/src/lib/types/i18next.event.ts create mode 100644 projects/store-call/README.md create mode 100644 projects/store-call/karma.conf.js create mode 100644 projects/store-call/ng-package.json create mode 100644 projects/store-call/package.json create mode 100644 projects/store-call/src/lib/call-store.module.ts create mode 100644 projects/store-call/src/lib/config/module-config.ts create mode 100644 projects/store-call/src/lib/config/token.ts create mode 100644 projects/store-call/src/lib/store/call/actions.ts create mode 100644 projects/store-call/src/lib/store/call/effects.ts create mode 100644 projects/store-call/src/lib/store/call/reducers.ts create mode 100644 projects/store-call/src/lib/store/call/state.ts create mode 100644 projects/store-call/src/lib/store/common/actions.ts create mode 100644 projects/store-call/src/lib/store/common/effects.ts create mode 100644 projects/store-call/src/lib/store/common/reducers.ts create mode 100644 projects/store-call/src/lib/store/common/state.ts create mode 100644 projects/store-call/src/lib/store/effects.ts create mode 100644 projects/store-call/src/lib/store/reducers.ts create mode 100644 projects/store-call/src/lib/store/state.ts create mode 100644 projects/store-call/src/public-api.ts create mode 100644 projects/store-call/src/test.ts create mode 100644 projects/store-call/tsconfig.lib.json create mode 100644 projects/store-call/tsconfig.lib.prod.json create mode 100644 projects/store-call/tsconfig.spec.json create mode 100644 projects/store-call/tslint.json create mode 100644 projects/ui-call/README.md create mode 100644 projects/ui-call/karma.conf.js create mode 100644 projects/ui-call/ng-package.json create mode 100644 projects/ui-call/package.json create mode 100644 projects/ui-call/scss-bundle.config.json create mode 100644 projects/ui-call/src/assets/scss/_theme.scss create mode 100644 projects/ui-call/src/lib/call-ui.module.ts create mode 100644 projects/ui-call/src/lib/components/dialpad.component.html create mode 100644 projects/ui-call/src/lib/components/dialpad.component.scss create mode 100644 projects/ui-call/src/lib/components/dialpad.component.spec.ts create mode 100644 projects/ui-call/src/lib/components/dialpad.component.ts create mode 100644 projects/ui-call/src/lib/components/history-expansion.component.html create mode 100644 projects/ui-call/src/lib/components/history-expansion.component.scss create mode 100644 projects/ui-call/src/lib/components/history-expansion.component.spec.ts create mode 100644 projects/ui-call/src/lib/components/history-expansion.component.ts create mode 100644 projects/ui-call/src/lib/components/history-list-item.component.html create mode 100644 projects/ui-call/src/lib/components/history-list-item.component.scss create mode 100644 projects/ui-call/src/lib/components/history-list-item.component.spec.ts create mode 100644 projects/ui-call/src/lib/components/history-list-item.component.ts create mode 100644 projects/ui-call/src/lib/components/timeline-item-list-01.component.html create mode 100644 projects/ui-call/src/lib/components/timeline-item-list-01.component.scss create mode 100644 projects/ui-call/src/lib/components/timeline-item-list-01.component.spec.ts create mode 100644 projects/ui-call/src/lib/components/timeline-item-list-01.component.ts create mode 100644 projects/ui-call/src/lib/components/timeline-item-list.component.html create mode 100644 projects/ui-call/src/lib/components/timeline-item-list.component.scss create mode 100644 projects/ui-call/src/lib/components/timeline-item-list.component.spec.ts create mode 100644 projects/ui-call/src/lib/components/timeline-item-list.component.ts create mode 100644 projects/ui-call/src/lib/components/timeline-item.component.html create mode 100644 projects/ui-call/src/lib/components/timeline-item.component.scss create mode 100644 projects/ui-call/src/lib/components/timeline-item.component.spec.ts create mode 100644 projects/ui-call/src/lib/components/timeline-item.component.ts rename projects/{i18n => ui-call}/src/lib/config/module-config.ts (100%) create mode 100644 projects/ui-call/src/lib/config/token.ts create mode 100644 projects/ui-call/src/public-api.ts create mode 100644 projects/ui-call/src/test.ts create mode 100644 projects/ui-call/tsconfig.lib.json create mode 100644 projects/ui-call/tsconfig.lib.prod.json create mode 100644 projects/ui-call/tsconfig.spec.json create mode 100644 projects/ui-call/tslint.json create mode 100644 projects/ui-group/src/lib/types/group-menu.type.ts create mode 100644 projects/ui-organization/src/lib/components/profile-menu-02.component.html create mode 100644 projects/ui-organization/src/lib/components/profile-menu-02.component.scss create mode 100644 projects/ui-organization/src/lib/components/profile-menu-02.component.spec.ts create mode 100644 projects/ui-organization/src/lib/components/profile-menu-02.component.stories.ts create mode 100644 projects/ui-organization/src/lib/components/profile-menu-02.component.theme.scss create mode 100644 projects/ui-organization/src/lib/components/profile-menu-02.component.ts create mode 100644 projects/ui-organization/src/lib/types/profile-menu.type.ts create mode 100644 projects/ui/breadcrumb/package.json rename projects/ui/{ => breadcrumb}/src/lib/components/breadcrumb.component.html (100%) rename projects/ui/{ => breadcrumb}/src/lib/components/breadcrumb.component.scss (100%) rename projects/ui/{ => breadcrumb}/src/lib/components/breadcrumb.component.spec.ts (100%) rename projects/ui/{ => breadcrumb}/src/lib/components/breadcrumb.component.stories.ts (100%) rename projects/ui/{ => breadcrumb}/src/lib/components/breadcrumb.component.theme.scss (100%) rename projects/ui/{ => breadcrumb}/src/lib/components/breadcrumb.component.ts (97%) rename projects/ui/{ => breadcrumb}/src/lib/config/module-config.ts (100%) create mode 100644 projects/ui/breadcrumb/src/lib/config/token.ts rename projects/ui/{ => breadcrumb}/src/lib/directives/paginated-header.ts (96%) create mode 100644 projects/ui/breadcrumb/src/lib/ui-breadcrumb.module.ts create mode 100644 projects/ui/breadcrumb/src/public-api.ts create mode 100644 projects/ui/button/package.json rename projects/ui/{ => button}/src/lib/components/float-action-button.component.html (82%) rename projects/ui/{ => button}/src/lib/components/float-action-button.component.scss (100%) rename projects/ui/{ => button}/src/lib/components/float-action-button.component.spec.ts (100%) rename projects/ui/{ => button}/src/lib/components/float-action-button.component.stories.ts (100%) rename projects/ui/{ => button}/src/lib/components/float-action-button.component.theme.scss (100%) rename projects/ui/{ => button}/src/lib/components/float-action-button.component.ts (87%) rename projects/ui/{ => button}/src/lib/components/split-button.component.html (100%) rename projects/ui/{ => button}/src/lib/components/split-button.component.scss (100%) rename projects/ui/{ => button}/src/lib/components/split-button.component.spec.ts (100%) rename projects/ui/{ => button}/src/lib/components/split-button.component.stories.ts (100%) rename projects/ui/{ => button}/src/lib/components/split-button.component.theme.scss (100%) rename projects/ui/{ => button}/src/lib/components/split-button.component.ts (100%) create mode 100644 projects/ui/button/src/lib/config/module-config.ts create mode 100644 projects/ui/button/src/lib/config/token.ts create mode 100644 projects/ui/button/src/lib/ui-button.module.ts create mode 100644 projects/ui/button/src/public-api.ts create mode 100644 projects/ui/core/package.json rename projects/ui/{ => core}/src/lib/animations/index.ts (100%) create mode 100644 projects/ui/core/src/lib/config/module-config.ts rename projects/ui/{ => core}/src/lib/config/token.ts (100%) rename projects/ui/{ => core}/src/lib/dialogs/alert.dialog.component.html (100%) rename projects/ui/{ => core}/src/lib/dialogs/alert.dialog.component.scss (100%) rename projects/ui/{ => core}/src/lib/dialogs/alert.dialog.component.spec.ts (100%) rename projects/ui/{ => core}/src/lib/dialogs/alert.dialog.component.ts (100%) rename projects/ui/{ => core}/src/lib/dialogs/confirm.dialog.component.html (100%) rename projects/ui/{ => core}/src/lib/dialogs/confirm.dialog.component.scss (100%) rename projects/ui/{ => core}/src/lib/dialogs/confirm.dialog.component.spec.ts (100%) rename projects/ui/{ => core}/src/lib/dialogs/confirm.dialog.component.ts (100%) rename projects/ui/{ => core}/src/lib/directives/click-debounce.directive.ts (100%) rename projects/ui/{ => core}/src/lib/directives/click-outside.directive.ts (100%) rename projects/ui/{ => core}/src/lib/directives/image.directive.ts (100%) rename projects/ui/{ => core}/src/lib/directives/var.directive.ts (100%) rename projects/ui/{ => core}/src/lib/pipes/bytes.pipe.ts (100%) rename projects/ui/{ => core}/src/lib/pipes/empty.pipe.ts (100%) rename projects/ui/{ => core}/src/lib/pipes/linefeed.pipe.ts (100%) rename projects/ui/{ => core}/src/lib/pipes/linky.pipe.ts (100%) rename projects/ui/{ => core}/src/lib/pipes/safe-html.pipe.ts (100%) rename projects/ui/{ => core}/src/lib/services/clipboard.service.ts (100%) rename projects/ui/{ => core}/src/lib/services/dom.service.ts (100%) create mode 100644 projects/ui/core/src/lib/ui-core.module.ts rename projects/ui/{ => core}/src/lib/utils/html.util.ts (98%) create mode 100644 projects/ui/core/src/public-api.ts create mode 100644 projects/ui/date/package.json rename projects/ui/{ => date}/src/lib/components/pick-date.component.html (100%) rename projects/ui/{ => date}/src/lib/components/pick-date.component.scss (100%) rename projects/ui/{ => date}/src/lib/components/pick-date.component.spec.ts (100%) rename projects/ui/{ => date}/src/lib/components/pick-date.component.stories.ts (100%) rename projects/ui/{ => date}/src/lib/components/pick-date.component.theme.scss (100%) rename projects/ui/{ => date}/src/lib/components/pick-date.component.ts (96%) rename projects/ui/{ => date}/src/lib/components/pick-time.component.html (100%) rename projects/ui/{ => date}/src/lib/components/pick-time.component.scss (100%) rename projects/ui/{ => date}/src/lib/components/pick-time.component.spec.ts (100%) rename projects/ui/{ => date}/src/lib/components/pick-time.component.stories.ts (100%) rename projects/ui/{ => date}/src/lib/components/pick-time.component.theme.scss (100%) rename projects/ui/{ => date}/src/lib/components/pick-time.component.ts (82%) create mode 100644 projects/ui/date/src/lib/config/module-config.ts create mode 100644 projects/ui/date/src/lib/config/token.ts rename projects/ui/{ => date}/src/lib/pipes/date.pipe.ts (99%) rename projects/ui/{ => date}/src/lib/pipes/seconds-to-minutes.pipe.ts (100%) rename projects/ui/{ => date}/src/lib/services/date.service.ts (100%) create mode 100644 projects/ui/date/src/lib/ui-date.module.ts create mode 100644 projects/ui/date/src/public-api.ts create mode 100644 projects/ui/file-upload/package.json rename projects/ui/{ => file-upload}/src/lib/components/file-upload-queue.component.html (100%) rename projects/ui/{ => file-upload}/src/lib/components/file-upload-queue.component.scss (100%) rename projects/ui/{ => file-upload}/src/lib/components/file-upload-queue.component.stories.ts (100%) rename projects/ui/{ => file-upload}/src/lib/components/file-upload-queue.component.theme.scss (100%) rename projects/ui/{ => file-upload}/src/lib/components/file-upload-queue.component.ts (98%) create mode 100644 projects/ui/file-upload/src/lib/config/module-config.ts create mode 100644 projects/ui/file-upload/src/lib/config/token.ts create mode 100644 projects/ui/file-upload/src/lib/directives/file-upload-for.directive.ts create mode 100644 projects/ui/file-upload/src/lib/ui-file-upload.module.ts create mode 100644 projects/ui/file-upload/src/public-api.ts create mode 100644 projects/ui/input/package.json rename projects/ui/{ => input}/src/lib/components/inline-edit-input.component.html (100%) rename projects/ui/{ => input}/src/lib/components/inline-edit-input.component.scss (100%) rename projects/ui/{ => input}/src/lib/components/inline-edit-input.component.spec.ts (100%) rename projects/ui/{ => input}/src/lib/components/inline-edit-input.component.stories.ts (100%) rename projects/ui/{ => input}/src/lib/components/inline-edit-input.component.theme.scss (100%) rename projects/ui/{ => input}/src/lib/components/inline-edit-input.component.ts (100%) rename projects/ui/{ => input}/src/lib/components/step-input.component.html (100%) rename projects/ui/{ => input}/src/lib/components/step-input.component.scss (100%) rename projects/ui/{ => input}/src/lib/components/step-input.component.spec.ts (100%) rename projects/ui/{ => input}/src/lib/components/step-input.component.stories.ts (100%) rename projects/ui/{ => input}/src/lib/components/step-input.component.theme.scss (100%) rename projects/ui/{ => input}/src/lib/components/step-input.component.ts (93%) create mode 100644 projects/ui/input/src/lib/config/module-config.ts create mode 100644 projects/ui/input/src/lib/config/token.ts create mode 100644 projects/ui/input/src/lib/ui-input.module.ts create mode 100644 projects/ui/input/src/public-api.ts create mode 100644 projects/ui/native/package.json rename projects/ui/{ => native}/src/lib/components/title-bar.component.html (100%) rename projects/ui/{ => native}/src/lib/components/title-bar.component.scss (98%) rename projects/ui/{ => native}/src/lib/components/title-bar.component.spec.ts (100%) rename projects/ui/{ => native}/src/lib/components/title-bar.component.stories.ts (100%) rename projects/ui/{ => native}/src/lib/components/title-bar.component.theme.scss (100%) rename projects/ui/{ => native}/src/lib/components/title-bar.component.ts (87%) create mode 100644 projects/ui/native/src/lib/config/module-config.ts create mode 100644 projects/ui/native/src/lib/config/token.ts create mode 100644 projects/ui/native/src/lib/ui-native.module.ts create mode 100644 projects/ui/native/src/public-api.ts create mode 100644 projects/ui/phone/package.json create mode 100644 projects/ui/phone/src/lib/config/module-config.ts create mode 100644 projects/ui/phone/src/lib/config/token.ts rename projects/ui/{ => phone}/src/lib/pipes/phone-number.pipe.ts (99%) create mode 100644 projects/ui/phone/src/lib/ui-phone.module.ts rename projects/ui/{ => phone}/src/lib/utils/phone-number.util.ts (100%) create mode 100644 projects/ui/phone/src/public-api.ts create mode 100644 projects/ui/scrolling/package.json rename projects/ui/{src/lib/scrolling => scrolling/src/lib/components}/virtual-scroll-viewport.html (54%) rename projects/ui/{src/lib/scrolling => scrolling/src/lib/components}/virtual-scroll-viewport.scss (100%) rename projects/ui/{src/lib/scrolling => scrolling/src/lib/components}/virtual-scroll-viewport.ts (87%) create mode 100644 projects/ui/scrolling/src/lib/config/module-config.ts create mode 100644 projects/ui/scrolling/src/lib/config/token.ts rename projects/ui/{ => scrolling}/src/lib/data-source/virtual-scroll-tree-flat.data-source.ts (97%) rename projects/ui/{src/lib/scrolling => scrolling/src/lib/directives}/scrollable.ts (97%) rename projects/ui/{src/lib/scrolling => scrolling/src/lib/directives}/virtual-for-of.ts (93%) rename projects/ui/{src/lib/scrolling => scrolling/src/lib/interfaces}/virtual-scroll-strategy.ts (87%) rename projects/ui/{src/lib/scrolling => scrolling/src/lib/strategies}/auto-size-virtual-scroll.ts (97%) rename projects/ui/{src/lib/scrolling => scrolling/src/lib/strategies}/fixed-size-virtual-scroll.ts (90%) rename projects/ui/{src/lib/scrolling => scrolling/src/lib/strategies}/measure-size-virtual-scroll.ts (83%) create mode 100644 projects/ui/scrolling/src/lib/ui-scrolling.module.ts create mode 100644 projects/ui/scrolling/src/public-api.ts delete mode 100644 projects/ui/src/lib/directives/file-upload-for.directive.ts delete mode 100644 projects/ui/src/lib/scrolling/scroll-dispatcher.ts delete mode 100644 projects/ui/src/lib/scrolling/viewport-ruler.ts delete mode 100644 projects/ui/src/lib/services/dialog.service.ts delete mode 100644 projects/ui/src/lib/ui.module.ts create mode 100644 projects/ui/viewer/package.json rename projects/ui/{ => viewer}/src/lib/components/file-viewer.component.html (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer.component.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer.component.spec.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer.component.stories.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer.component.theme.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer.component.ts (91%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/binary-viewer.component.html (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/binary-viewer.component.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/binary-viewer.component.spec.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/binary-viewer.component.stories.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/binary-viewer.component.theme.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/binary-viewer.component.ts (83%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/document-viewer.component.html (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/document-viewer.component.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/document-viewer.component.spec.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/document-viewer.component.stories.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/document-viewer.component.theme.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/document-viewer.component.ts (83%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/image-viewer.component.html (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/image-viewer.component.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/image-viewer.component.spec.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/image-viewer.component.stories.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/image-viewer.component.theme.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/image-viewer.component.ts (88%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/sound-viewer.component.html (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/sound-viewer.component.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/sound-viewer.component.spec.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/sound-viewer.component.stories.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/sound-viewer.component.theme.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/sound-viewer.component.ts (93%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/video-viewer.component.html (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/video-viewer.component.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/video-viewer.component.spec.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/video-viewer.component.stories.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/video-viewer.component.theme.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/file-viewer/video-viewer.component.ts (94%) rename projects/ui/{ => viewer}/src/lib/components/media-viewer.component.html (100%) rename projects/ui/{ => viewer}/src/lib/components/media-viewer.component.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/media-viewer.component.spec.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/media-viewer.component.stories.ts (100%) rename projects/ui/{ => viewer}/src/lib/components/media-viewer.component.theme.scss (100%) rename projects/ui/{ => viewer}/src/lib/components/media-viewer.component.ts (91%) create mode 100644 projects/ui/viewer/src/lib/config/module-config.ts create mode 100644 projects/ui/viewer/src/lib/config/token.ts rename projects/ui/{ => viewer}/src/lib/models/select-file-info.ts (100%) rename projects/ui/{ => viewer}/src/lib/types/file-viewer.type.ts (100%) create mode 100644 projects/ui/viewer/src/lib/ui-viewer.module.ts create mode 100644 projects/ui/viewer/src/public-api.ts diff --git a/angular.json b/angular.json index 0ac2632..8aafef5 100644 --- a/angular.json +++ b/angular.json @@ -1526,6 +1526,166 @@ } } } + }, + "api-webex": { + "projectType": "library", + "root": "projects/api-webex", + "sourceRoot": "projects/api-webex/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/api-webex/tsconfig.lib.json", + "project": "projects/api-webex/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/api-webex/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/api-webex/src/test.ts", + "tsConfig": "projects/api-webex/tsconfig.spec.json", + "karmaConfig": "projects/api-webex/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/api-webex/tsconfig.lib.json", + "projects/api-webex/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "ui-call": { + "projectType": "library", + "root": "projects/ui-call", + "sourceRoot": "projects/ui-call/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/ui-call/tsconfig.lib.json", + "project": "projects/ui-call/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/ui-call/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/ui-call/src/test.ts", + "tsConfig": "projects/ui-call/tsconfig.spec.json", + "karmaConfig": "projects/ui-call/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/ui-call/tsconfig.lib.json", + "projects/ui-call/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "api-contact": { + "projectType": "library", + "root": "projects/api-contact", + "sourceRoot": "projects/api-contact/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/api-contact/tsconfig.lib.json", + "project": "projects/api-contact/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/api-contact/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/api-contact/src/test.ts", + "tsConfig": "projects/api-contact/tsconfig.spec.json", + "karmaConfig": "projects/api-contact/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/api-contact/tsconfig.lib.json", + "projects/api-contact/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "store-call": { + "projectType": "library", + "root": "projects/store-call", + "sourceRoot": "projects/store-call/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/store-call/tsconfig.lib.json", + "project": "projects/store-call/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/store-call/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/store-call/src/test.ts", + "tsConfig": "projects/store-call/tsconfig.spec.json", + "karmaConfig": "projects/store-call/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/store-call/tsconfig.lib.json", + "projects/store-call/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } } }, "cli": { diff --git a/package-lock.json b/package-lock.json index b160b61..7a31ffb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,112 +17,117 @@ "rxjs": { "version": "6.5.3", "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==" + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } } } - } - }, - "@angular-devkit/build-angular": { - "version": "0.900.7", - "resolved": "https://nexus.loafle.net/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": { - "@babel/core": { - "version": "7.7.7", - "resolved": "https://nexus.loafle.net/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": { - "semver": { - "version": "5.7.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "@angular-devkit/build-angular": { + "version": "0.900.7", + "resolved": "https://nexus.loafle.net/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": { + "@babel/core": { + "version": "7.7.7", + "resolved": "https://nexus.loafle.net/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" }, - "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "babel-loader": { @@ -150,12 +155,6 @@ } } }, - "core-js": { - "version": "3.6.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", - "dev": true - }, "json5": { "version": "2.1.3", "resolved": "https://nexus.loafle.net/repository/npm-all/json5/-/json5-2.1.3.tgz", @@ -165,12 +164,6 @@ "minimist": "^1.2.5" } }, - "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", - "dev": true - }, "rimraf": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/rimraf/-/rimraf-3.0.0.tgz", @@ -188,12 +181,6 @@ "requires": { "tslib": "^1.9.0" } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } }, @@ -231,12 +218,6 @@ "webpack-sources": "1.4.3" }, "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, "tslib": { "version": "1.10.0", "resolved": "https://nexus.loafle.net/repository/npm-all/tslib/-/tslib-1.10.0.tgz", @@ -294,33 +275,27 @@ "requires": { "tslib": "^1.9.0" } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } }, "@angular-devkit/schematics": { - "version": "9.1.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/schematics/-/schematics-9.1.11.tgz", - "integrity": "sha512-1A3Oryhl8hpibJK2J5j2FYNzjfvBJcR4wuNRKzl27kBvVsdRXLQzMD3aAgqFvlMgUWhloQs4tZwuinu0E2VP1A==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/schematics/-/schematics-9.1.12.tgz", + "integrity": "sha512-+GYnUzmIy1/QpYitCC8mI7jcrViGHTtOKvvDPEFjU2nggjNEQaMmsHcdIsjrqggEc23ZZyebNAIewT8CMkJyrQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.11", + "@angular-devkit/core": "9.1.12", "ora": "4.0.3", "rxjs": "6.5.4" }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.11.tgz", - "integrity": "sha512-uiEkDvWfMgPHuO4jVgBEr9Kl/LuxHaWYGD2ZtKsOnnHYZyRGp61ot7UcDF+KNdXTiq01JJH84VTd3IttEewmhQ==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.12.tgz", + "integrity": "sha512-D/GnBeSlmdgGn7EhuE32HuPuRAjvUuxi7Q6WywBI8PSsXKAGnrypghBwMATNnOA24//CgbW2533Y9VWHaeXdeA==", "dev": true, "requires": { - "ajv": "6.12.0", + "ajv": "6.12.3", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", "rxjs": "6.5.4", @@ -328,9 +303,9 @@ } }, "ajv": { - "version": "6.12.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -368,12 +343,6 @@ "requires": { "tslib": "^1.9.0" } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } }, @@ -402,16 +371,16 @@ } }, "@angular/cli": { - "version": "9.1.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/cli/-/cli-9.1.11.tgz", - "integrity": "sha512-EGDd9ZCGitn6F/x5sK7M1PmdfBg+8LoZ6nrfYEhWY8c2CMCVfVrLPLHq6r8uFiflcvd/nlcrVZQ52zt4a2vDaQ==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/cli/-/cli-9.1.12.tgz", + "integrity": "sha512-B0yOab5WbD84bIRRUKOPAJnpka8Qj+CRt61wJfjsqpd/Rj7pD/3ubmdCNoBH7Xa6UlOb0tdYqRPsqfK7uEL0sw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.11", - "@angular-devkit/core": "9.1.11", - "@angular-devkit/schematics": "9.1.11", - "@schematics/angular": "9.1.11", - "@schematics/update": "0.901.11", + "@angular-devkit/architect": "0.901.12", + "@angular-devkit/core": "9.1.12", + "@angular-devkit/schematics": "9.1.12", + "@schematics/angular": "9.1.12", + "@schematics/update": "0.901.12", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.1.1", @@ -430,22 +399,22 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.901.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/architect/-/architect-0.901.11.tgz", - "integrity": "sha512-RmYOq1VEJdQLzwMno+C56WtgscAtoR/7i4tX5b5VxRa2RmQKTxowllYWwgrF5445VGUqzap9H6zJFXvlY2FA0w==", + "version": "0.901.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/architect/-/architect-0.901.12.tgz", + "integrity": "sha512-gLlsxa+3JPV1m1gRvRMujOs4xKox6I5BkYmOD1zfu+dB6y3LuBAvHfXA6FaTDVOMBrmSlWnE4PmOmB6xd7wxMA==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.11", + "@angular-devkit/core": "9.1.12", "rxjs": "6.5.4" } }, "@angular-devkit/core": { - "version": "9.1.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.11.tgz", - "integrity": "sha512-uiEkDvWfMgPHuO4jVgBEr9Kl/LuxHaWYGD2ZtKsOnnHYZyRGp61ot7UcDF+KNdXTiq01JJH84VTd3IttEewmhQ==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.12.tgz", + "integrity": "sha512-D/GnBeSlmdgGn7EhuE32HuPuRAjvUuxi7Q6WywBI8PSsXKAGnrypghBwMATNnOA24//CgbW2533Y9VWHaeXdeA==", "dev": true, "requires": { - "ajv": "6.12.0", + "ajv": "6.12.3", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", "rxjs": "6.5.4", @@ -453,9 +422,9 @@ } }, "ajv": { - "version": "6.12.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -516,12 +485,6 @@ "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true }, - "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, "uuid": { "version": "7.0.2", "resolved": "https://nexus.loafle.net/repository/npm-all/uuid/-/uuid-7.0.2.tgz", @@ -646,15 +609,6 @@ "p-locate": "^4.1.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "4.1.0", "resolved": "https://nexus.loafle.net/repository/npm-all/p-locate/-/p-locate-4.1.0.tgz", @@ -664,12 +618,6 @@ "p-limit": "^2.2.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/path-exists/-/path-exists-4.0.0.tgz", @@ -805,9 +753,9 @@ "dev": true }, "@babel/cli": { - "version": "7.8.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/cli/-/cli-7.8.4.tgz", - "integrity": "sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/cli/-/cli-7.10.5.tgz", + "integrity": "sha512-j9H9qSf3kLdM0Ao3aGPbGZ73mEA9XazuupcS6cDGWuiyAcANoguhP0r2Lx32H5JGw4sSSoHG3x/mxVnHgvOoyA==", "dev": true, "requires": { "chokidar": "^2.1.8", @@ -815,7 +763,7 @@ "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" @@ -947,13 +895,6 @@ "kind-of": "^3.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://nexus.loafle.net/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", @@ -982,6 +923,12 @@ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "to-regex-range": { "version": "2.1.1", "resolved": "https://nexus.loafle.net/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", @@ -996,47 +943,46 @@ } }, "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "version": "7.11.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/core/-/core-7.11.1.tgz", + "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.1", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.0", + "@babel/types": "^7.11.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/generator": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/generator/-/generator-7.11.0.tgz", + "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.11.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, @@ -1054,6 +1000,12 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -1067,319 +1019,336 @@ "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/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": "https://nexus.loafle.net/repository/npm-all/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.5.tgz", - "integrity": "sha512-IipaxGaQmW4TfWoXdqjY0TzoXQ1HRS0kPpEgvjosb3u7Uedcq297xFqDQiCcQtRRwzIMif+N1MLVI8C5a4/PAA==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-member-expression-to-functions": "^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" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" } }, "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", "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-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/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==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", "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-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "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-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.11.0" } }, "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "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/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.11.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/parser/-/parser-7.11.3.tgz", + "integrity": "sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/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==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", - "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", - "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.9.5" + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -1428,327 +1397,327 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/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==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "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/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.11.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", - "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.9.5", - "@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", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", - "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/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==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", "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/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "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/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", "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/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/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==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", - "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.9.0.tgz", - "integrity": "sha512-wXMXsToAUOxJuBBEHajqKLFWcCkOSLshTI2ChCFFj1zDd7od4IOxiwLCOObNUvOpkxLpjIuaIdBMmNt6ocCPAw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz", + "integrity": "sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.10.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { @@ -1819,64 +1788,77 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.11.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + } } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { "@babel/generator": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/generator/-/generator-7.11.0.tgz", + "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.11.0", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.11.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -1949,6 +1931,14 @@ "@emotion/unitless": "0.7.5", "@emotion/utils": "0.11.3", "csstype": "^2.5.7" + }, + "dependencies": { + "csstype": { + "version": "2.6.13", + "resolved": "https://nexus.loafle.net/repository/npm-all/csstype/-/csstype-2.6.13.tgz", + "integrity": "sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==", + "dev": true + } } }, "@emotion/sheet": { @@ -2085,9 +2075,9 @@ "dev": true }, "@reach/router": { - "version": "1.3.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@reach/router/-/router-1.3.3.tgz", - "integrity": "sha512-gOIAiFhWdiVGSVjukKeNKkCRBLmnORoTPyBihI/jLunICPgxdP30DroAvPQuf1eVfQbfGJQDJkwhJXsNPMnVWw==", + "version": "1.3.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@reach/router/-/router-1.3.4.tgz", + "integrity": "sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==", "dev": true, "requires": { "create-react-context": "0.3.0", @@ -2112,9 +2102,9 @@ } }, "@rollup/plugin-json": { - "version": "4.0.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@rollup/plugin-json/-/plugin-json-4.0.3.tgz", - "integrity": "sha512-QMUT0HZNf4CX17LMdwaslzlYHUKTYGuuk34yYIgZrNdu+pMEfqMS55gck7HEeHBKXHM4cz5Dg1OVwythDdbbuQ==", + "version": "4.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", "dev": true, "requires": { "@rollup/pluginutils": "^3.0.8" @@ -2134,14 +2124,14 @@ } }, "@rollup/pluginutils": { - "version": "3.0.9", - "resolved": "https://nexus.loafle.net/repository/npm-all/@rollup/pluginutils/-/pluginutils-3.0.9.tgz", - "integrity": "sha512-TLZavlfPAZYI7v33wQh4mTP6zojne14yok3DNSLcjoG/Hirxfkonn6icP5rrNWRn8nZsirJBFFpijVOJzkUHDg==", + "version": "3.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", - "micromatch": "^4.0.2" + "picomatch": "^2.2.2" }, "dependencies": { "@types/estree": { @@ -2149,36 +2139,26 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/@types/estree/-/estree-0.0.39.tgz", "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } } } }, "@schematics/angular": { - "version": "9.1.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/angular/-/angular-9.1.11.tgz", - "integrity": "sha512-nExcWmsQvcj9IrofXuHmXmvmehD36O93uFR/a2LisYxao7j6Pe31Qs4Xzk6K67Kxpbypicqr8wAN3LtCOuy20A==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/angular/-/angular-9.1.12.tgz", + "integrity": "sha512-r4+aPAGhstsKFMwW/kOen1ACnzuLpz+vMxEpndXOqqVXLkAMsuAbQUFYjIlMy6fH4zdhpI90EJZ1PbOrAXvKxA==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.11", - "@angular-devkit/schematics": "9.1.11" + "@angular-devkit/core": "9.1.12", + "@angular-devkit/schematics": "9.1.12" }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.11.tgz", - "integrity": "sha512-uiEkDvWfMgPHuO4jVgBEr9Kl/LuxHaWYGD2ZtKsOnnHYZyRGp61ot7UcDF+KNdXTiq01JJH84VTd3IttEewmhQ==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.12.tgz", + "integrity": "sha512-D/GnBeSlmdgGn7EhuE32HuPuRAjvUuxi7Q6WywBI8PSsXKAGnrypghBwMATNnOA24//CgbW2533Y9VWHaeXdeA==", "dev": true, "requires": { - "ajv": "6.12.0", + "ajv": "6.12.3", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", "rxjs": "6.5.4", @@ -2186,9 +2166,9 @@ } }, "ajv": { - "version": "6.12.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -2226,23 +2206,17 @@ "requires": { "tslib": "^1.9.0" } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } }, "@schematics/update": { - "version": "0.901.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/update/-/update-0.901.11.tgz", - "integrity": "sha512-btqcX1dFL0R+KrTCDu/W+jF19gmoXEC73HWvbhJhU5CvpOF4RC51msjAs9u3J45KyWC2RoYdQCxuasKQZ962lw==", + "version": "0.901.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/update/-/update-0.901.12.tgz", + "integrity": "sha512-SxGVYLTHhBC0rSF0OWSWPuJUB1Jhfqkl3o5bBgCC9//DutWiN6WoCCBTrCxR7F5vR2iiD7WqOe9CuvWYfvV8oQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.11", - "@angular-devkit/schematics": "9.1.11", + "@angular-devkit/core": "9.1.12", + "@angular-devkit/schematics": "9.1.12", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "npm-package-arg": "^8.0.0", @@ -2253,12 +2227,12 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.11.tgz", - "integrity": "sha512-uiEkDvWfMgPHuO4jVgBEr9Kl/LuxHaWYGD2ZtKsOnnHYZyRGp61ot7UcDF+KNdXTiq01JJH84VTd3IttEewmhQ==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.12.tgz", + "integrity": "sha512-D/GnBeSlmdgGn7EhuE32HuPuRAjvUuxi7Q6WywBI8PSsXKAGnrypghBwMATNnOA24//CgbW2533Y9VWHaeXdeA==", "dev": true, "requires": { - "ajv": "6.12.0", + "ajv": "6.12.3", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", "rxjs": "6.5.4", @@ -2266,9 +2240,9 @@ } }, "ajv": { - "version": "6.12.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -2312,12 +2286,6 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-7.1.3.tgz", "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } }, @@ -2328,17 +2296,17 @@ "dev": true }, "@storybook/addon-actions": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addon-actions/-/addon-actions-5.3.18.tgz", - "integrity": "sha512-jdBVCcfyWin274Lkwg5cL+1fJ651NCuIWxuJVsmHQtIl2xTjf2MyoMoKQZNdt4xtE+W9w+rS4bYt04elrizThg==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addon-actions/-/addon-actions-5.3.19.tgz", + "integrity": "sha512-gXF29FFUgYlUoFf1DcVCmH1chg2ElaHWMmCi5h7aZe+g6fXBQw0UtEdJnYLMOqZCIiWoZyuf1ETD0RbNHPhRIw==", "dev": true, "requires": { - "@storybook/addons": "5.3.18", - "@storybook/api": "5.3.18", - "@storybook/client-api": "5.3.18", - "@storybook/components": "5.3.18", - "@storybook/core-events": "5.3.18", - "@storybook/theming": "5.3.18", + "@storybook/addons": "5.3.19", + "@storybook/api": "5.3.19", + "@storybook/client-api": "5.3.19", + "@storybook/components": "5.3.19", + "@storybook/core-events": "5.3.19", + "@storybook/theming": "5.3.19", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", "global": "^4.3.2", @@ -2350,17 +2318,17 @@ } }, "@storybook/addon-knobs": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addon-knobs/-/addon-knobs-5.3.18.tgz", - "integrity": "sha512-X0WxGKoso3j5mS4c4enM8BvCjbO6Wwfxc++swQTqtANpBZ8k+w0piiEF1fiJf+ssgEAWe5brgIqnQ9kiBGLqKA==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addon-knobs/-/addon-knobs-5.3.19.tgz", + "integrity": "sha512-e7z6KhvVOUGjygK4VL5Un1U3t0XG0jkb/BOHVWQMtH5dWNn3zofD3LrZZy24eAsyre/ej/LGo/BzwDSXkKLTog==", "dev": true, "requires": { - "@storybook/addons": "5.3.18", - "@storybook/api": "5.3.18", - "@storybook/client-api": "5.3.18", - "@storybook/components": "5.3.18", - "@storybook/core-events": "5.3.18", - "@storybook/theming": "5.3.18", + "@storybook/addons": "5.3.19", + "@storybook/api": "5.3.19", + "@storybook/client-api": "5.3.19", + "@storybook/components": "5.3.19", + "@storybook/core-events": "5.3.19", + "@storybook/theming": "5.3.19", "@types/react-color": "^3.0.1", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", @@ -2373,39 +2341,55 @@ "react-color": "^2.17.0", "react-lifecycles-compat": "^3.0.4", "react-select": "^3.0.8" + }, + "dependencies": { + "qs": { + "version": "6.9.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==", + "dev": true + } } }, "@storybook/addon-links": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addon-links/-/addon-links-5.3.18.tgz", - "integrity": "sha512-rDpsAQUr60BEM83TBh7mwKjaZvqTR+CAAMLAxXN+J8DMoOjymjd2sjq4UVJsOQVTnw3wjIc4+xpAL/eYqkJAIQ==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addon-links/-/addon-links-5.3.19.tgz", + "integrity": "sha512-gn9u8lebREfRsyzxoDPG0O+kOf5aJ0BhzcCJGZZdqha0F6OWHhh8vJYZZvjJ/Qwze+Qt2zjrgWm+Q6+JLD8ugQ==", "dev": true, "requires": { - "@storybook/addons": "5.3.18", - "@storybook/client-logger": "5.3.18", - "@storybook/core-events": "5.3.18", + "@storybook/addons": "5.3.19", + "@storybook/client-logger": "5.3.19", + "@storybook/core-events": "5.3.19", "@storybook/csf": "0.0.1", - "@storybook/router": "5.3.18", + "@storybook/router": "5.3.19", "core-js": "^3.0.1", "global": "^4.3.2", "prop-types": "^15.7.2", "qs": "^6.6.0", "ts-dedent": "^1.1.0" + }, + "dependencies": { + "qs": { + "version": "6.9.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==", + "dev": true + } } }, "@storybook/addon-notes": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addon-notes/-/addon-notes-5.3.18.tgz", - "integrity": "sha512-P8d5P6+MErodRz2whP1f33ovhGMcOc/g4a+8qatiUotsPbg/2LKNRlY1QSfHWtm26NIGsgOTqSb0z1q6cyMNvQ==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addon-notes/-/addon-notes-5.3.19.tgz", + "integrity": "sha512-9dkUY5bPO/nux6zIXtE4h27AXgqz1Pogrbg7x0BwYWFdoMh7A8AWcnREfkjiPtrB/XGInlNRPqkU0KKk6tMi/w==", "dev": true, "requires": { - "@storybook/addons": "5.3.18", - "@storybook/api": "5.3.18", - "@storybook/client-logger": "5.3.18", - "@storybook/components": "5.3.18", - "@storybook/core-events": "5.3.18", - "@storybook/router": "5.3.18", - "@storybook/theming": "5.3.18", + "@storybook/addons": "5.3.19", + "@storybook/api": "5.3.19", + "@storybook/client-logger": "5.3.19", + "@storybook/components": "5.3.19", + "@storybook/core-events": "5.3.19", + "@storybook/router": "5.3.19", + "@storybook/theming": "5.3.19", "core-js": "^3.0.1", "global": "^4.3.2", "markdown-to-jsx": "^6.10.3", @@ -2415,29 +2399,29 @@ } }, "@storybook/addons": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addons/-/addons-5.3.18.tgz", - "integrity": "sha512-ZQjDgTUDFRLvAiBg2d8FgPgghfQ+9uFyXQbtiGlTBLinrPCeQd7J86qiUES0fcGoohCCw0wWKtvB0WF2z1XNDg==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/addons/-/addons-5.3.19.tgz", + "integrity": "sha512-Ky/k22p6i6FVNvs1VhuFyGvYJdcp+FgXqFgnPyY/OXJW/vPDapdElpTpHJZLFI9I2FQBDcygBPU5RXkumQ+KUQ==", "dev": true, "requires": { - "@storybook/api": "5.3.18", - "@storybook/channels": "5.3.18", - "@storybook/client-logger": "5.3.18", - "@storybook/core-events": "5.3.18", + "@storybook/api": "5.3.19", + "@storybook/channels": "5.3.19", + "@storybook/client-logger": "5.3.19", + "@storybook/core-events": "5.3.19", "core-js": "^3.0.1", "global": "^4.3.2", "util-deprecate": "^1.0.2" } }, "@storybook/angular": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/angular/-/angular-5.3.18.tgz", - "integrity": "sha512-vp1K9Rt7Zz/QuQTvAF+mDUMrtrb1peMw/xK0DNQGdYv8hfDtOkqFPdQK6rFlpO53oen9XAVMr6AE5778XoluoA==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/angular/-/angular-5.3.19.tgz", + "integrity": "sha512-ZRb/Gn/pWoZnIMSs4bxAdBiKzdcMJnkgkWiNS3TDerrgcNQbQzEgaPDSe2y3C7CAPmIEMSnBnT/o45rJIP6ZkQ==", "dev": true, "requires": { - "@storybook/addons": "5.3.18", - "@storybook/core": "5.3.18", - "@storybook/node-logger": "5.3.18", + "@storybook/addons": "5.3.19", + "@storybook/core": "5.3.19", + "@storybook/node-logger": "5.3.19", "@types/webpack-env": "^1.15.0", "core-js": "^3.0.1", "fork-ts-checker-webpack-plugin": "^3.0.1", @@ -2450,18 +2434,18 @@ } }, "@storybook/api": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/api/-/api-5.3.18.tgz", - "integrity": "sha512-QXaccNCARHzPWOuxYndiebGWBZmwiUvRgB9ji0XTJBS3y8K0ZPb5QyuqiKPaEWUj8dBA8rzdDtkW3Yt95Namaw==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/api/-/api-5.3.19.tgz", + "integrity": "sha512-U/VzDvhNCPmw2igvJYNNM+uwJCL+3teiL6JmuoL4/cmcqhI6IqqG9dZmMP1egoCd19wXEP7rnAfB/VcYVg41dQ==", "dev": true, "requires": { "@reach/router": "^1.2.1", - "@storybook/channels": "5.3.18", - "@storybook/client-logger": "5.3.18", - "@storybook/core-events": "5.3.18", + "@storybook/channels": "5.3.19", + "@storybook/client-logger": "5.3.19", + "@storybook/core-events": "5.3.19", "@storybook/csf": "0.0.1", - "@storybook/router": "5.3.18", - "@storybook/theming": "5.3.18", + "@storybook/router": "5.3.19", + "@storybook/theming": "5.3.19", "@types/reach__router": "^1.2.3", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", @@ -2478,38 +2462,38 @@ } }, "@storybook/channel-postmessage": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/channel-postmessage/-/channel-postmessage-5.3.18.tgz", - "integrity": "sha512-awxBW/aVfNtY9QvYZgsPaMXgUpC2+W3vEyQcl/w4ce0YVH+7yWx3wt3Ku49lQwxZwDrxP3QoC0U+mkPc9hBJwA==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/channel-postmessage/-/channel-postmessage-5.3.19.tgz", + "integrity": "sha512-Iq0f4NPHR0UVVFCWt0cI7Myadk4/SATXYJPT6sv95KhnLjKEeYw571WBlThfp8a9FM80887xG+eIRe93c8dleA==", "dev": true, "requires": { - "@storybook/channels": "5.3.18", - "@storybook/client-logger": "5.3.18", + "@storybook/channels": "5.3.19", + "@storybook/client-logger": "5.3.19", "core-js": "^3.0.1", "global": "^4.3.2", "telejson": "^3.2.0" } }, "@storybook/channels": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/channels/-/channels-5.3.18.tgz", - "integrity": "sha512-scP/6td/BJSEOgfN+qaYGDf3E793xye7tIw6W+sYqwg+xdMFO39wVXgVZNpQL6sLEwpJZTaPywCjC6p6ksErqQ==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/channels/-/channels-5.3.19.tgz", + "integrity": "sha512-38seaeyshRGotTEZJppyYMg/Vx2zRKgFv1L6uGqkJT0LYoNSYtJhsiNFCJ2/KUJu2chAJ/j8h80bpVBVLQ/+WA==", "dev": true, "requires": { "core-js": "^3.0.1" } }, "@storybook/client-api": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/client-api/-/client-api-5.3.18.tgz", - "integrity": "sha512-QiXTDUpjdyW19BlocLw07DrkOnEzVaWGJcRze2nSs29IKKuq1Ncv2LOAZt6ySSq0PmIKsjBou3bmS1/aXmDMdw==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/client-api/-/client-api-5.3.19.tgz", + "integrity": "sha512-Dh8ZLrLH91j9Fa28Gmp0KFUvvgK348aNMrDNAUdj4m4witz/BWQ2pxz6qq9/xFVErk/GanVC05kazGElqgYCRQ==", "dev": true, "requires": { - "@storybook/addons": "5.3.18", - "@storybook/channel-postmessage": "5.3.18", - "@storybook/channels": "5.3.18", - "@storybook/client-logger": "5.3.18", - "@storybook/core-events": "5.3.18", + "@storybook/addons": "5.3.19", + "@storybook/channel-postmessage": "5.3.19", + "@storybook/channels": "5.3.19", + "@storybook/client-logger": "5.3.19", + "@storybook/core-events": "5.3.19", "@storybook/csf": "0.0.1", "@types/webpack-env": "^1.15.0", "core-js": "^3.0.1", @@ -2522,31 +2506,45 @@ "stable": "^0.1.8", "ts-dedent": "^1.1.0", "util-deprecate": "^1.0.2" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "dev": true + }, + "qs": { + "version": "6.9.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==", + "dev": true + } } }, "@storybook/client-logger": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/client-logger/-/client-logger-5.3.18.tgz", - "integrity": "sha512-RZjxw4uqZX3Yk27IirbB/pQG+wRsQSSRlKqYa8KQ5bSanm4IrcV9VA1OQbuySW9njE+CexAnakQJ/fENdmurNg==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/client-logger/-/client-logger-5.3.19.tgz", + "integrity": "sha512-nHftT9Ow71YgAd2/tsu79kwKk30mPuE0sGRRUHZVyCRciGFQweKNOS/6xi2Aq+WwBNNjPKNlbgxwRt1yKe1Vkg==", "dev": true, "requires": { "core-js": "^3.0.1" } }, "@storybook/components": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/components/-/components-5.3.18.tgz", - "integrity": "sha512-LIN4aVCCDY7klOwtuqQhfYz4tHaMADhXEzZpij+3r8N68Inck6IJ1oo9A9umXQPsTioQi8e6FLobH1im90j/2A==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/components/-/components-5.3.19.tgz", + "integrity": "sha512-3g23/+ktlocaHLJKISu9Neu3XKa6aYP2ctDYkRtGchSB0Q55hQsUVGO+BEVuT7Pk2D59mVCxboBjxcRoPUY4pw==", "dev": true, "requires": { - "@storybook/client-logger": "5.3.18", - "@storybook/theming": "5.3.18", + "@storybook/client-logger": "5.3.19", + "@storybook/theming": "5.3.19", "@types/react-syntax-highlighter": "11.0.4", "@types/react-textarea-autosize": "^4.3.3", "core-js": "^3.0.1", "global": "^4.3.2", "lodash": "^4.17.15", - "markdown-to-jsx": "^6.9.1", + "markdown-to-jsx": "^6.11.4", "memoizerific": "^1.11.3", "polished": "^3.3.1", "popper.js": "^1.14.7", @@ -2563,9 +2561,9 @@ } }, "@storybook/core": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/core/-/core-5.3.18.tgz", - "integrity": "sha512-XQb/UQb+Ohuaw0GhKKYzvmuuh5Tit93f2cLZD9QCSWUPvDGmLG5g91Y9NbUr4Ap3mANT3NksMNhkAV0GxExEkg==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/core/-/core-5.3.19.tgz", + "integrity": "sha512-4EYzglqb1iD6x9gxtAYpRGwGP6qJGiU2UW4GiYrErEmeu6y6tkyaqW5AwGlIo9+6jAfwD0HjaK8afvjKTtmmMQ==", "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.7.0", @@ -2573,16 +2571,16 @@ "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-transform-react-constant-elements": "^7.2.0", "@babel/preset-env": "^7.4.5", - "@storybook/addons": "5.3.18", - "@storybook/channel-postmessage": "5.3.18", - "@storybook/client-api": "5.3.18", - "@storybook/client-logger": "5.3.18", - "@storybook/core-events": "5.3.18", + "@storybook/addons": "5.3.19", + "@storybook/channel-postmessage": "5.3.19", + "@storybook/client-api": "5.3.19", + "@storybook/client-logger": "5.3.19", + "@storybook/core-events": "5.3.19", "@storybook/csf": "0.0.1", - "@storybook/node-logger": "5.3.18", - "@storybook/router": "5.3.18", - "@storybook/theming": "5.3.18", - "@storybook/ui": "5.3.18", + "@storybook/node-logger": "5.3.19", + "@storybook/router": "5.3.19", + "@storybook/theming": "5.3.19", + "@storybook/ui": "5.3.19", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "autoprefixer": "^9.7.2", @@ -2644,31 +2642,18 @@ }, "dependencies": { "autoprefixer": { - "version": "9.7.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/autoprefixer/-/autoprefixer-9.7.6.tgz", - "integrity": "sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ==", + "version": "9.8.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, "requires": { - "browserslist": "^4.11.1", - "caniuse-lite": "^1.0.30001039", - "chalk": "^2.4.2", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.27", - "postcss-value-parser": "^4.0.3" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://nexus.loafle.net/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" - } - } + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" } }, "chalk": { @@ -2778,15 +2763,6 @@ "picomatch": "^2.0.5" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "4.1.0", "resolved": "https://nexus.loafle.net/repository/npm-all/p-locate/-/p-locate-4.1.0.tgz", @@ -2796,12 +2772,6 @@ "p-limit": "^2.2.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/path-exists/-/path-exists-4.0.0.tgz", @@ -2809,9 +2779,9 @@ "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.32", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -2840,30 +2810,42 @@ } } } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://nexus.loafle.net/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" - } } } }, + "qs": { + "version": "6.9.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://nexus.loafle.net/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" + } } } }, "@storybook/core-events": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/core-events/-/core-events-5.3.18.tgz", - "integrity": "sha512-uQ6NYJ5WODXK8DJ7m8y3yUAtWB3n+6XtYztjY+tdkCsLYvTYDXNS+epV+f5Hu9+gB+/Dm+b5Su4jDD+LZB2QWA==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/core-events/-/core-events-5.3.19.tgz", + "integrity": "sha512-lh78ySqMS7pDdMJAQAe35d1I/I4yPTqp09Cq0YIYOxx9BQZhah4DZTV1QIZt22H5p2lPb5MWLkWSxBaexZnz8A==", "dev": true, "requires": { "core-js": "^3.0.1" @@ -2879,9 +2861,9 @@ } }, "@storybook/node-logger": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/node-logger/-/node-logger-5.3.18.tgz", - "integrity": "sha512-Go/hdtaPTtjgJP+GYk8VXcOmecrdG7cXm0yyTlatd6s8xXI0txHme1/0MOZmEPows1Ec7KAQ20+NnaCGUPZUUg==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/node-logger/-/node-logger-5.3.19.tgz", + "integrity": "sha512-hKshig/u5Nj9fWy0OsyU04yqCxr0A9pydOHIassr4fpLAaePIN2YvqCqE2V+TxQHjZUnowSSIhbXrGt0DI5q2A==", "dev": true, "requires": { "@types/npmlog": "^4.1.2", @@ -2945,9 +2927,9 @@ } }, "@storybook/router": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/router/-/router-5.3.18.tgz", - "integrity": "sha512-6B2U2C75KTSVaCuYYgcubeJGcCSnwsXuEf50hEd5mGqWgHZfojCtGvB7Ko4X+0h8rEC+eNA4p7YBOhlUv9WNrQ==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/router/-/router-5.3.19.tgz", + "integrity": "sha512-yNClpuP7BXQlBTRf6Ggle3/R349/k6kvI5Aim4jf6X/2cFVg2pzBXDAF41imNm9PcvdxwabQLm6I48p7OvKr/w==", "dev": true, "requires": { "@reach/router": "^1.2.1", @@ -2959,17 +2941,25 @@ "memoizerific": "^1.11.3", "qs": "^6.6.0", "util-deprecate": "^1.0.2" + }, + "dependencies": { + "qs": { + "version": "6.9.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==", + "dev": true + } } }, "@storybook/theming": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/theming/-/theming-5.3.18.tgz", - "integrity": "sha512-lfFTeLoYwLMKg96N3gn0umghMdAHgJBGuk2OM8Ll84yWtdl9RGnzfiI1Fl7Cr5k95dCF7drLJlJCao1VxUkFSA==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/theming/-/theming-5.3.19.tgz", + "integrity": "sha512-ecG+Rq3hc1GOzKHamYnD4wZ0PEP9nNg0mXbC3RhbxfHj+pMMCWWmx9B2Uu75SL1PTT8WcfkFO0hU/0IO84Pzlg==", "dev": true, "requires": { "@emotion/core": "^10.0.20", "@emotion/styled": "^10.0.17", - "@storybook/client-logger": "5.3.18", + "@storybook/client-logger": "5.3.19", "core-js": "^3.0.1", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.19", @@ -2979,23 +2969,31 @@ "prop-types": "^15.7.2", "resolve-from": "^5.0.0", "ts-dedent": "^1.1.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "@storybook/ui": { - "version": "5.3.18", - "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/ui/-/ui-5.3.18.tgz", - "integrity": "sha512-xyXK53fNe9lkGPmXf3Nk+n0gz9gOgXI+fDxetyDLpX79k3DIN/jCKEnv45vXof7OQ45mTmyBvUNTKrNLqKTt5Q==", + "version": "5.3.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@storybook/ui/-/ui-5.3.19.tgz", + "integrity": "sha512-r0VxdWab49nm5tzwvveVDnsHIZHMR76veYOu/NHKDUZ5hnQl1LMG1YyMCFFa7KiwD/OrZxRWr6/Ma7ep9kR4Gw==", "dev": true, "requires": { "@emotion/core": "^10.0.20", - "@storybook/addons": "5.3.18", - "@storybook/api": "5.3.18", - "@storybook/channels": "5.3.18", - "@storybook/client-logger": "5.3.18", - "@storybook/components": "5.3.18", - "@storybook/core-events": "5.3.18", - "@storybook/router": "5.3.18", - "@storybook/theming": "5.3.18", + "@storybook/addons": "5.3.19", + "@storybook/api": "5.3.19", + "@storybook/channels": "5.3.19", + "@storybook/client-logger": "5.3.19", + "@storybook/components": "5.3.19", + "@storybook/core-events": "5.3.19", + "@storybook/router": "5.3.19", + "@storybook/theming": "5.3.19", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", "core-js-pure": "^3.0.1", @@ -3004,7 +3002,7 @@ "fuse.js": "^3.4.6", "global": "^4.3.2", "lodash": "^4.17.15", - "markdown-to-jsx": "^6.9.3", + "markdown-to-jsx": "^6.11.4", "memoizerific": "^1.11.3", "polished": "^3.3.1", "prop-types": "^15.7.2", @@ -3021,6 +3019,20 @@ "store2": "^2.7.1", "telejson": "^3.2.0", "util-deprecate": "^1.0.2" + }, + "dependencies": { + "qs": { + "version": "6.9.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "@szmarczak/http-timer": { @@ -3063,47 +3075,40 @@ "dev": true }, "@types/estree": { - "version": "0.0.44", - "resolved": "https://nexus.loafle.net/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": "https://nexus.loafle.net/repository/npm-all/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "version": "0.0.45", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/estree/-/estree-0.0.45.tgz", + "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", "dev": true }, "@types/fs-extra": { - "version": "8.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==", + "version": "8.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/fs-extra/-/fs-extra-8.1.1.tgz", + "integrity": "sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==", "dev": true, "requires": { "@types/node": "*" } }, "@types/glob": { - "version": "7.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "version": "7.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, "@types/history": { - "version": "4.7.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/history/-/history-4.7.5.tgz", - "integrity": "sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw==", + "version": "4.7.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/history/-/history-4.7.7.tgz", + "integrity": "sha512-2xtoL22/3Mv6a70i4+4RB7VgbDDORoWwjcqeNysojZA0R7NK17RbY5Gof/2QiFfJgX+KkWghbwJ+d/2SB8Ndzg==", "dev": true }, "@types/html-minifier-terser": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/html-minifier-terser/-/html-minifier-terser-5.0.0.tgz", - "integrity": "sha512-q95SP4FdkmF0CwO0F2q0H6ZgudsApaY/yCtAQNRn1gduef5fGpyEphzy0YCq/N0UFvDSnLg5V8jFK/YGXlDiCw==", + "version": "5.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz", + "integrity": "sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA==", "dev": true }, "@types/is-function": { @@ -3113,9 +3118,9 @@ "dev": true }, "@types/jasmine": { - "version": "3.5.10", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/jasmine/-/jasmine-3.5.10.tgz", - "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==", + "version": "3.5.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/jasmine/-/jasmine-3.5.12.tgz", + "integrity": "sha512-vJaQ58oceFao+NzpKNqLOWwHPsqA7YEhKv+mOXvYU4/qh+BfVWIxaBtL0Ck5iCS67yOkNwGkDCrzepnzIWF+7g==", "dev": true }, "@types/jasminewd2": { @@ -3127,6 +3132,12 @@ "@types/jasmine": "*" } }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://nexus.loafle.net/repository/npm-all/@types/json5/-/json5-0.0.29.tgz", @@ -3134,9 +3145,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.150", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/lodash/-/lodash-4.14.150.tgz", - "integrity": "sha512-kMNLM5JBcasgYscD9x/Gvr6lTAv2NVgsKtet/hm93qMyf/D1pt+7jeEZklKJKxMVmXjxbRVQQGfqDSfipYCO6w==", + "version": "4.14.159", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/lodash/-/lodash-4.14.159.tgz", + "integrity": "sha512-gF7A72f7WQN33DpqOWw9geApQPh4M3PxluMtaHxWHXEGSN12/WbcEk/eNSqWNQcQhF66VSZ06vCF94CrHwXJDg==", "dev": true }, "@types/lodash.debounce": { @@ -3164,9 +3175,9 @@ } }, "@types/node": { - "version": "12.12.37", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/node/-/node-12.12.37.tgz", - "integrity": "sha512-4mXKoDptrXAwZErQHrLzpe0FN/0Wmf5JRniSVIdwUrtDf9wnmEV1teCNLBo/TwuXhkK/bVegoEn/wmb+x0AuPg==", + "version": "12.12.54", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/node/-/node-12.12.54.tgz", + "integrity": "sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w==", "dev": true }, "@types/normalize-package-data": { @@ -3194,15 +3205,15 @@ "dev": true }, "@types/q": { - "version": "1.5.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "version": "1.5.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, "@types/reach__router": { - "version": "1.3.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/reach__router/-/reach__router-1.3.4.tgz", - "integrity": "sha512-DZgYfxUIlVSjvf0AvBbYNbpXLrTFNNpU1HrvCRbnMtx3nvGUUWC1/zlAe4dD4FCPFtc+LQuIPEsDiTb0zQkthg==", + "version": "1.3.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/reach__router/-/reach__router-1.3.5.tgz", + "integrity": "sha512-h0NbqXN/tJuBY/xggZSej1SKQEstbHO7J/omt1tYoFGmj3YXOodZKbbqD4mNDh7zvEGYd7YFrac1LTtAr3xsYQ==", "dev": true, "requires": { "@types/history": "*", @@ -3210,22 +3221,23 @@ } }, "@types/react": { - "version": "16.9.34", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/react/-/react-16.9.34.tgz", - "integrity": "sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow==", + "version": "16.9.45", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/react/-/react-16.9.45.tgz", + "integrity": "sha512-vv950slTF5UZ5eDOf13b8qC1SD4rTvkqg3HfaUKzr17U97oeJZAa+dUaIHn0QoOJflNTIt6Pem9MmapULs9dkA==", "dev": true, "requires": { "@types/prop-types": "*", - "csstype": "^2.2.0" + "csstype": "^3.0.2" } }, "@types/react-color": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/react-color/-/react-color-3.0.1.tgz", - "integrity": "sha512-J6mYm43Sid9y+OjZ7NDfJ2VVkeeuTPNVImNFITgQNXodHteKfl/t/5pAR5Z9buodZ2tCctsZjgiMlQOpfntakw==", + "version": "3.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/react-color/-/react-color-3.0.4.tgz", + "integrity": "sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw==", "dev": true, "requires": { - "@types/react": "*" + "@types/react": "*", + "@types/reactcss": "*" } }, "@types/react-syntax-highlighter": { @@ -3246,6 +3258,15 @@ "@types/react": "*" } }, + "@types/reactcss": { + "version": "1.2.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/reactcss/-/reactcss-1.2.3.tgz", + "integrity": "sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/resolve": { "version": "0.0.8", "resolved": "https://nexus.loafle.net/repository/npm-all/@types/resolve/-/resolve-0.0.8.tgz", @@ -3277,15 +3298,15 @@ "dev": true }, "@types/tapable": { - "version": "1.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/tapable/-/tapable-1.0.5.tgz", - "integrity": "sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ==", + "version": "1.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", "dev": true }, "@types/uglify-js": { - "version": "3.9.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/uglify-js/-/uglify-js-3.9.0.tgz", - "integrity": "sha512-3ZcoyPYHVOCcLpnfZwD47KFLr8W/mpUcgjpf1M4Q78TMJIw7KMAHSjiCLJp1z3ZrBR9pTLbe191O0TldFK5zcw==", + "version": "3.9.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/uglify-js/-/uglify-js-3.9.3.tgz", + "integrity": "sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -3300,9 +3321,9 @@ } }, "@types/webpack": { - "version": "4.41.12", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/webpack/-/webpack-4.41.12.tgz", - "integrity": "sha512-BpCtM4NnBen6W+KEhrL9jKuZCXVtiH6+0b6cxdvNt2EwU949Al334PjQSl2BeAyvAX9mgoNNG21wvjP3xZJJ5w==", + "version": "4.41.21", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/webpack/-/webpack-4.41.21.tgz", + "integrity": "sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA==", "dev": true, "requires": { "@types/anymatch": "*", @@ -3322,15 +3343,15 @@ } }, "@types/webpack-env": { - "version": "1.15.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/webpack-env/-/webpack-env-1.15.1.tgz", - "integrity": "sha512-eWN5ElDTeBc5lRDh95SqA8x18D0ll2pWudU3uWiyfsRmIZcmUXpEsxPU+7+BsdCrO2vfLRC629u/MmjbmF+2tA==", + "version": "1.15.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/webpack-env/-/webpack-env-1.15.2.tgz", + "integrity": "sha512-67ZgZpAlhIICIdfQrB5fnDvaKFcDxpKibxznfYRVAT4mQE41Dido/3Ty+E3xGBmTogc5+0Qb8tWhna+5B8z1iQ==", "dev": true }, "@types/webpack-sources": { - "version": "0.1.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/webpack-sources/-/webpack-sources-0.1.7.tgz", - "integrity": "sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw==", + "version": "0.1.8", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", + "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", "dev": true, "requires": { "@types/node": "*", @@ -3347,354 +3368,550 @@ } }, "@ucap/api": { - "version": "0.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api/-/api-0.0.2.tgz", - "integrity": "sha512-kRoFM6zxLQ8QYtYKopkTMkdIVa91SiyzpBPB63dkeTkFS7GOKD3MsIwcNeD7FUQ1mXR30ajAhKZcaDXLOgQ9gA==", + "version": "0.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api/-/api-0.0.5.tgz", + "integrity": "sha512-yG7bT2ybagzk6IcGHsoN/0yeeIRZyLcYLK9OJ9GhGFdlCQjv94pM5SvO370cV+2GRJHh6T2RtD//gbEo+/sXRw==", "dev": true }, "@ucap/api-common": { - "version": "0.0.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-common/-/api-common-0.0.11.tgz", - "integrity": "sha512-QAuFb6APPtL3og5s4z9n5X0ubLxmO4QobbPg6NoFlGGA9LBMwxDrA/8mUe+VF8+ni2lv3JdiqvdxzlzFCphmew==", + "version": "0.0.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-common/-/api-common-0.0.12.tgz", + "integrity": "sha512-Z89xsSrGRtnsjzVat3ekle1F5U0FzpIB7J1Ybz/QFwSS6wUH69PfdMpyHQjRkZIPo3sOkWkCKH+/t7y0Wg87zg==", + "dev": true + }, + "@ucap/api-contact": { + "version": "0.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-contact/-/api-contact-0.0.5.tgz", + "integrity": "sha512-TgLq645jDqo8B/1TOuuISFx1aSkogvBoWMTUIggC30owFsGuoJoifGOV51tg3n1XKMxBgKBW8NoTaidCJF2mQg==", "dev": true }, "@ucap/api-external": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-external/-/api-external-0.0.5.tgz", - "integrity": "sha512-sPhkJvEohBu2qotd8YAWqCZ6Mj9HrPf/qZnXQNPoJ/8byvR4npb/nykVohLk+4ITsBleb5p171wOwvqAfb4pZQ==", + "version": "0.0.8", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-external/-/api-external-0.0.8.tgz", + "integrity": "sha512-pmcBe4b0bn9avhwf8MP0Z2eh11tsBQ+HMuf3JzLB9vTUpAlOH9ly78s5qJOsUV6rVplxkIYIwFupPhRz9yxQFg==", "dev": true }, "@ucap/api-message": { - "version": "0.0.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-message/-/api-message-0.0.3.tgz", - "integrity": "sha512-0nNJPMphvYdFj43HIddf2YfAT60Df4KIo6QBTQxIA/g6iUp3fbuDXR0cxoXzKDTzyUp9rZGcvJrzZqZKXjL2hg==", + "version": "0.0.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-message/-/api-message-0.0.7.tgz", + "integrity": "sha512-QQ9/uLE3+ApBSvmuB+r39xTfmdhM7h7mDabeAEwDy4qvra6pzuOeQ+eYl0yCWXJQAn9PhqX9TyjIPmpSvKQ4uA==", "dev": true }, "@ucap/api-prompt": { - "version": "0.0.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-prompt/-/api-prompt-0.0.3.tgz", - "integrity": "sha512-tEomYKVFjB5AB1iWX9fRx4ViEht85XXJOkn3Hh8dI2wdA/QD0jw6DDZVzPJn7f8FeFypt6JXrsAmToWzdVw59g==", + "version": "0.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-prompt/-/api-prompt-0.0.6.tgz", + "integrity": "sha512-Jy1YF9WAocfURIMXpGYUabiT02jtHABTNikgybzdJh92jno0zd0KTZfbpI0wr9KOSrVFlUeK7hazuNfVF2M3NA==", "dev": true }, "@ucap/api-public": { - "version": "0.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-public/-/api-public-0.0.4.tgz", - "integrity": "sha512-LF20jyYzDcbgvNRLxY9hcrakGpEwpLo+ZkTVgVLPNO7PUIBSyPqTgT7VzQAmh0qqT3s2UCd2vWR2j7PD0E0g/g==", + "version": "0.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-public/-/api-public-0.0.6.tgz", + "integrity": "sha512-SfHwYzQnT+q197+KK1ZO2IOt5jPMpadMsiCTmNEajRpeasTqOvHjDNbbiG5m1plIFF+SAOgRJwsP2JoFcmbfxg==", + "dev": true + }, + "@ucap/api-webex": { + "version": "0.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-webex/-/api-webex-0.0.2.tgz", + "integrity": "sha512-0QzibiUZixqkPdR8QRpD7z1ztj6XkLT9OyD8mkLVX7rK4EH5KMCsg5e0XYa0i33s+szcqGAW90tTHamHZbnzTw==", "dev": true }, "@ucap/core": { - "version": "0.0.14", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/core/-/core-0.0.14.tgz", - "integrity": "sha512-7JuyGBTRYjzu5fPp0v0MBAW6KwweMCfhoPiTPhGkSpwjJByCWaX1h2QQgn23s1DhKMAZrOiasAZozw72m9fYtg==", + "version": "0.0.15", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/core/-/core-0.0.15.tgz", + "integrity": "sha512-120wS+yWp43NPmpYK/a9mWIO8T1oFFkHPhWnY4XMPgESDOZVo7b5YIYsp5KXPAowJPoJnFJGbJIGOFJumqMNAA==", + "dev": true + }, + "@ucap/domain-authentication": { + "version": "0.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-authentication/-/domain-authentication-0.0.4.tgz", + "integrity": "sha512-vZfjMqS2papsvf574NvbcJoHo3ri8sEQAm5KSOM+vTPbb+LylOL10gM/UnOqjXkndSDM+rOi+x/P9Ohx+1y3mg==", + "dev": true + }, + "@ucap/domain-authorization": { + "version": "0.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-authorization/-/domain-authorization-0.0.3.tgz", + "integrity": "sha512-SXEDZQbzOv+i7+W/H/OwGVLBO8fjPZHLUACuK+jAlj3cn/54ShEwtg+lujsyxl+sedmCSk5Cc2Mj55Ln/zaj8w==", + "dev": true + }, + "@ucap/domain-call": { + "version": "0.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-call/-/domain-call-0.0.4.tgz", + "integrity": "sha512-YrqrHqcKdB9LMmyHLjhXGplSV6lKwEWhL2vqfsvCL2NO81J4PRKnFm8sPpDoFUndUs1YbPtOASgXp8mm318Viw==", + "dev": true + }, + "@ucap/domain-chat": { + "version": "0.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-chat/-/domain-chat-0.0.3.tgz", + "integrity": "sha512-9mc13y5RErCuFrNssuqrTbt1AJSv8jOQOe0fvDFGJ5shaHI7OflfcE1BJVWKlu6AO2HSuc/HV0MitS0/Izx0VA==", + "dev": true + }, + "@ucap/domain-common": { + "version": "0.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-common/-/domain-common-0.0.1.tgz", + "integrity": "sha512-ebhT9Krf2bX5TfCv9H+NwKqghuR1FCDqmZAQtRgu7yZ2gmCWGu+J3pcLtJldGH7CkckkFCvq6jkutkudAT4R4A==", + "dev": true + }, + "@ucap/domain-group": { + "version": "0.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-group/-/domain-group-0.0.2.tgz", + "integrity": "sha512-zE6b5cgYrKYSnqalf2GKYfgZdYJtfpSz56vxpgUP2sDaNYrt+OUEcQGlnxpQcFEgJ3VYiSOIc+is0BbGVMYp4A==", + "dev": true + }, + "@ucap/domain-message": { + "version": "0.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-message/-/domain-message-0.0.1.tgz", + "integrity": "sha512-QWOSQ64XZ/9WhKJR5BXk6Xva0/ikcKljdrkLjNPSmneFhkmCpJkIIjsOufqpZFPVnLeHQMLQlhXyGwxo5fKB9Q==", + "dev": true + }, + "@ucap/domain-organization": { + "version": "0.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-organization/-/domain-organization-0.0.1.tgz", + "integrity": "sha512-xmiXDHyPiUQUaAIbibDIZoCJg47/DEy3WCY3LWtm/awDvhWdU6oRD3HkLAMGdowEXAVvd9ONdCS1vXPwOGIiPA==", + "dev": true + }, + "@ucap/domain-status": { + "version": "0.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/domain-status/-/domain-status-0.0.1.tgz", + "integrity": "sha512-axEBQkPqnJ9D6g0iytd+qaULwhmYAw5m0pZEe4ZEQ0dViO2tLvaqZ9pE7GLXtpTE85LtQVs0xjfUAGdXyAQziQ==", + "dev": true + }, + "@ucap/i18n": { + "version": "0.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/i18n/-/i18n-0.0.2.tgz", + "integrity": "sha512-oKNVgdXU7zvDIHnMhQkmRDK0EJ2eZbuXbjjMjLMa4UXyUE8urqCnQfFbpmgYw09q1KMtsNkZQno+FQ64J+4i8w==", "dev": true }, "@ucap/logger": { - "version": "0.0.12", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/logger/-/logger-0.0.12.tgz", - "integrity": "sha512-+Ta60lCIKEDQhvgHuIq9CcRsCxkv1m23V0qgpA4da5piPj4ZcWbuFEogIV4eZkWFnopt79WBEdkZP9J8hMsnOg==", + "version": "0.0.14", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/logger/-/logger-0.0.14.tgz", + "integrity": "sha512-KGXt5KSTQXJ0/z1dp4N3JSw2k8fOzXIIGj0AzCI24/d609nNeFvesmJdtgaGVxBZ67omUjJhZG7ipyvdyS+IGw==", "dev": true }, "@ucap/native": { - "version": "0.0.19", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/native/-/native-0.0.19.tgz", - "integrity": "sha512-IllRnQ4YDb1tfMJcu5W05CNz3tlp2IDrK3c1mL3aG5IF7BkbAaUQ2aens90uzBzJXngNLOIrtV5hMNzveLiWXQ==", + "version": "0.0.27", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/native/-/native-0.0.27.tgz", + "integrity": "sha512-VVaZYFxLKYqiv69JHPf6ewH/8FwRLGBr0NBqGTTekx2XpSgzShrMZwP+hGemH54fDlvSvjvLTfarLT3wXScxlA==", "dev": true }, "@ucap/ng-api-common": { "version": "file:pack/ucap-ng-api-common-0.0.1.tgz", - "integrity": "sha512-S8qB7jZNy1zkFfMHc+7CfymOamji1+85OJrDYgg8nBARC3MwVnq1rY9xNG+qpbvvieC3rAdLX4xioT3mrWI48w==", - "dev": true + "integrity": "sha512-jB3Is4xyQPi/LbpgBFZFGIoHNLeRk6R4YomR2OYgFXfON+2qQka3oD675PRlm1q7IZcww+E31wtx2B9LZkjUiw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } + }, + "@ucap/ng-api-contact": { + "version": "file:pack/ucap-ng-api-contact-0.0.2.tgz", + "integrity": "sha512-ZJQzkfg9M78GfNjZnDgJBtaCBx3+GiPKS/dMDDiOdzlBEtFnP9uD+2j2P6U6g61fx4TcvQ/GQGl/AhkOeo5MQw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-api-external": { "version": "file:pack/ucap-ng-api-external-0.0.1.tgz", - "integrity": "sha512-7af7yBuC6Up+sjITOEfFc/bsh1UFG7mouFZ6E3jDM29ej4D5YVyDdmGLiDUnoZzbRqLjzylEIMFGV+FKcxip2Q==", - "dev": true + "integrity": "sha512-sWWP13BYValoHtO1aCN+PyMVm8pw9pF7kDuc2QDcA0nTUFwOn6XuBLyNtFsZRnpfjsSKE17XHaCluw9JAfmiJQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-api-message": { "version": "file:pack/ucap-ng-api-message-0.0.1.tgz", - "integrity": "sha512-4swk8mIlgmH2z4UA3k+SwA/P29aDTRrDxxOQ3TWKWr5PizYXOo0JnPqdoQ5IpjSGCowgGVAfxQ4UllTUfrDsEw==", - "dev": true + "integrity": "sha512-+QfaUPT7gYbJYjhkU1/eSpoY7olR4dYhvhwWKpDwnKN2Apdp7I/RxjJz5tpCOdEgAy3pykN5lF6h4OSiD8ZMVQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-api-prompt": { "version": "file:pack/ucap-ng-api-prompt-0.0.1.tgz", - "integrity": "sha512-lAGM/UZzVG7dENdr6i5L8Ce8WH/7ZbwLX2mbJwI6/C23EfLQuEyujTcXviqGW16izF5Fpko3v1uFcFzRNpt5iA==", - "dev": true + "integrity": "sha512-Q6OE4ZTD5bHgWDLne22jMPwDK7a4qLVmiaVvKcpBsOUn0UyEqHfYDODhPtM4KjgQh5XN5En2Z/fgTN12cdEWiQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-api-public": { "version": "file:pack/ucap-ng-api-public-0.0.1.tgz", - "integrity": "sha512-9Zt6CmhR+PPyHSRRKiyOeizoCIanmLzfie9ExRgP49AXjMFfOgjXAVXncX1p5+9BouDxeGb/0fkEWI0hfDtD3Q==", - "dev": true + "integrity": "sha512-Yy2Oq+7hae9QnURWiKw5OkvaZRi9FMnoyVmABEu5juTin1nrMmFHeGVhFylNJFNrfycIgRh/VCAseFTcNsCMAg==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } + }, + "@ucap/ng-api-webex": { + "version": "file:pack/ucap-ng-api-webex-0.0.1.tgz", + "integrity": "sha512-vw/S00QYHe96oc4ApbluopakAZkQ3+lpJTrIsapNthjHul0ZmrZHQFHz0BuXk/oPXS+2zP7iRK/7BAbx3lNKzw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-core": { - "version": "file:pack/ucap-ng-core-0.0.7.tgz", - "integrity": "sha512-ZC6LE3A0bg+REGbzDI/i1ad7mGpKsw6X0UtZ+Q8TUthHNv0DfWEieHFCgfYTRY1u022XyQ4ViOsrq9KunU1vfw==", - "dev": true + "version": "file:pack/ucap-ng-core-0.0.9.tgz", + "integrity": "sha512-KSkoxRrV/W0L1Go+aR7efmAkbiyW8hAmrPveYEioYx3E5Vf8nVr3i3ioHydlUU3DIMVCrac5EN0rhAtjlGECpg==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-i18n": { - "version": "file:pack/ucap-ng-i18n-0.0.6.tgz", - "integrity": "sha512-tKzrN8PXFRtH4LrwCk230014SOnYToEyg94W1VtBoxzCgDWDJ2ION/c/KFfLo4xFXO67GuYMceiIBLEJSq6wgw==", - "dev": true + "version": "file:pack/ucap-ng-i18n-0.0.8.tgz", + "integrity": "sha512-dq9z+5jRa6kpvJLNwrSI1OcJX65PzI19ujtFxXX74bIxGKP1XI/46Ly2Ab+JT86OnaTcrd0FjKlBpzsLJP0GWw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-logger": { "version": "file:pack/ucap-ng-logger-0.0.2.tgz", - "integrity": "sha512-PR7CytdFclrGTd4ExGwctkXdEpgwjB0c4wOpCEbL7GmFxXO5dtNj0WS9tUzDZUpb/T/s5jfxS+ae5carMlUKvA==", - "dev": true + "integrity": "sha512-0ONKu82StVyOhDTuzZefuSL+YDq+6dFZrEGB725+2lOE8+35tUlHNBFtiTdU2s9aTAxZQqhUZyGgI7VQ4vF3cQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-native": { - "version": "file:pack/ucap-ng-native-0.0.5.tgz", - "integrity": "sha512-4HJ9AOTCRd7K1EtuvYhHBSB8a9HwjgYSLVxwEkh64AH8eFw4CRKnn4TWHkqX+q5uEuWRzKPBnH7mZBsM27m3IA==", - "dev": true + "version": "file:pack/ucap-ng-native-0.0.12.tgz", + "integrity": "sha512-MlAOMl9dtnQWRQ9bywMjyu/yhpkGv/p8tphU0SYlGqd8Z3MlSazPcF5/sbRY8OTV40gr7E1j9ezO1q+5PNC55A==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-pi": { "version": "file:pack/ucap-ng-pi-0.0.1.tgz", - "integrity": "sha512-bWCzolu60QM27Y5tx/19bv0Qq/nYPLSfBjM7X8okm5FhNOiirUD+YS/yky6BDnOnMWpLCXnJNURGCUEeA0TqYA==", - "dev": true + "integrity": "sha512-JAcIoIWkzIft9SvtAmeAO2RwBjvtRqcNQqU3CCRL8jWX8tU0odM5IssSob2j0PxO+SYgnljNs+iTk3ZxaNwGAw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol": { "version": "file:pack/ucap-ng-protocol-0.0.3.tgz", - "integrity": "sha512-qsbbaKXltMnrRe5jA6rDfs8Gyw877k92DMq+dSMaiYq2bHGsWp/Th0HGwr5rW5GWAd/HfVCjFJhtQ3Is6Ll2Lw==", - "dev": true + "integrity": "sha512-JTeC/+t9rqtz333fd4T+LfBqGIZ5wwdFFAcHHbPK1cZYTQAZ0qH1Brt41994pq8txkvkkPy5gWsVmV8C1OzD3g==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-authentication": { "version": "file:pack/ucap-ng-protocol-authentication-0.0.3.tgz", - "integrity": "sha512-UgSMRvl7/SY6t5f7XsqCsNwtOZg09arjByiUSF+Wag5VRiRzua8r5LE2tuGrRNkkt0DA8r5c89rU0DR27RjsoQ==", - "dev": true + "integrity": "sha512-aM8C4ashPnOo7mztzFYTSVUyVscfh5XIIIfCy87GpKchGW41HO8k8qAXwKBwDimM6NF5647tqkiwnE4U29UShw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-buddy": { "version": "file:pack/ucap-ng-protocol-buddy-0.0.3.tgz", - "integrity": "sha512-lo4GRfvTRDR+KzOn4fB1ZFaC4cgmx/llWY/JcRbRWRwYlLypCtkRg4bFy93ZS96v6gexmKbjZFj8Xuj2NtRDKg==", - "dev": true + "integrity": "sha512-vFIrkZiTv7HP7doXzayGtYcwbGOXgpPyBQsGT6HXHb3pZjav/QTHBUmiRhnBCmzri512NcYTU/FvM6nAQj1ujw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-event": { "version": "file:pack/ucap-ng-protocol-event-0.0.3.tgz", - "integrity": "sha512-48iBwAt/ku3f/OmOhqkkjKDW8Gbo421PB5yVHk5bK/NjgQX35XrrCwP9kGOupkrj8hHsDgnNYWL0H2PG9X5KrA==", - "dev": true + "integrity": "sha512-SH5ldFtFSXpcXxw+96HNC4psbn5mHs8xXO815960XL4srq0qL9EBrfW1QQu8ZBbLIOrTw2WRjhqO5OnWDG41Aw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-file": { "version": "file:pack/ucap-ng-protocol-file-0.0.3.tgz", - "integrity": "sha512-UBwHhkgh/JsOzQmNjfZnTAtVyfQhFbGk9kOGksPqJg9B4RlX99wmJ3XQ8A2+Zr2IyAYZGXHvzryiFvb9ghnXpQ==", - "dev": true + "integrity": "sha512-7q4KIX6mmCA4dPxLg/HIvFK5sXfOL5pC1uerJ9WP0jP9/uN68rISRnYD3rU7c9VuVFtlFpN0mOCvjqdsecw20w==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-group": { "version": "file:pack/ucap-ng-protocol-group-0.0.3.tgz", - "integrity": "sha512-X8a1Yjqhi53rLBxylrMF9uYDYHJT7HwUVEHHlXtRu1ZmIlU8tb2BgK0Wve9OZUYdJmxbihBXtdFxlUxCKChZjg==", - "dev": true + "integrity": "sha512-cpfB0zznoT3sYVWkXsoi299h8SrkL/PdeghkOS++R8Py2hCvY+0Zlwn7g7OAqDtmRuXxb/sQFqebxKQwUodKiA==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-info": { "version": "file:pack/ucap-ng-protocol-info-0.0.3.tgz", - "integrity": "sha512-1OHpo5VWiRtaalINbAke3obOvlmwFd0k0BhzoaLR0ZnLlxbfkp1g0Kb9BrJ7gdVWcLxM0ju7fnEGn2bXnzpzDQ==", - "dev": true + "integrity": "sha512-0tSltQnwVUKldh0x6d8s098z8ISSO+xSAdyFAytykjDaBhx6Oevi7l8NMHCMzycktJpfOzaVgxm3/6TRMX0Png==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-inner": { "version": "file:pack/ucap-ng-protocol-inner-0.0.3.tgz", - "integrity": "sha512-TQmshwYOzm/afB4zCT7elQKeonFqHw2opmbXBwUbTamaLQHnCHec1QGawmO9MNinLYxIQvo7qKcgAF2y2I3J5Q==", - "dev": true + "integrity": "sha512-TZIcGquoshwMf3W0KsNLu3UkQGT/3VtkjG8NnNB5f5wsv/OyyqQT8YEpH5LbN62TNeRslxFW/S8WtbspPo/Gpg==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-option": { "version": "file:pack/ucap-ng-protocol-option-0.0.3.tgz", - "integrity": "sha512-riTkXFryqG/N06l9H+dryUs8yN2RqEXiRxqHHhkZXO42PqMGwpkx0kbL7IC6GHNtMDnbtbKMflK+cE3NweLcHg==", - "dev": true + "integrity": "sha512-qnELHFcYgQe/1JVJAimNcdX2pVLoMa2g5/JSs+O5uciDjAZZNvrUFmmBwqcj0EN93dpG6OdWd0jz/fj4cK/8Tw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-ping": { "version": "file:pack/ucap-ng-protocol-ping-0.0.3.tgz", - "integrity": "sha512-lRe9HPn2VyEArm4jzrk/8PJKSvncwdTVADEITzTahjFlF2G2xjbxyjzGdvwg8QHM5S5sVE2sKqJ+RH5uSU3FJg==", - "dev": true + "integrity": "sha512-6fsikXbQ4WRtakLjMgLRWsUKUPP3GB7c+bKu0hjRh80nO8QwcSMHKaZp9A793+qCKeAF0LmMLJGZcCTgtA60Mg==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-query": { "version": "file:pack/ucap-ng-protocol-query-0.0.3.tgz", - "integrity": "sha512-0gB4xe4w6jYtEPyA7tzd9V6yZkjIbU/VkNh1P96WyktiM5kQ/3VDXtH/S/pa8jhCIZ7IPenwPyaL2/giMSa0GA==", - "dev": true + "integrity": "sha512-Un+uHVEyh3XZ2Iuw6WbzNAuSuNHIn3QigqqsmrxFvxwgZ8L2gbsII3REn9LsOWqUOc4hrQRYJx606X+PtO2ZUg==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-room": { "version": "file:pack/ucap-ng-protocol-room-0.0.3.tgz", - "integrity": "sha512-JOyRr8yt7Kq8LJzsea8z4A3i2nIAvxVMrd22fsQOUvNivEZH3BBCWZe7+4uSvnVtEUPY2eu6DYERB/UJn12HFg==", - "dev": true + "integrity": "sha512-aM/b1PItUkah3v9r/JLotz/BC3axHHf80HFlQRT4Bd/w/OgPFL5KoKdOO57HAg8xBpc/OhQckiLKXmK6apqYbQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-service": { "version": "file:pack/ucap-ng-protocol-service-0.0.3.tgz", - "integrity": "sha512-KS3jD4P2qkai8kPjqSHI2gNcxiHEr6RaLKaOhJuDiKUEzbM9VNwhqJ0p4ErkTdBoFOYuG2rzVOa42p3hcOVBYQ==", - "dev": true + "integrity": "sha512-W+UPT61LZRb5XuITAmJpvOJKv7aZ6/SMQPq21V1xNaf6XmALBj+mwQ/QNDQZfVR1OImPSCdCjLsY0zbgpTzZfQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-status": { "version": "file:pack/ucap-ng-protocol-status-0.0.3.tgz", - "integrity": "sha512-DRpHoSoZFu+6NGYKA2oAoI/RWr6sJiFpD9JkZ/1P5n5KZh+Ua973gbHqzG6HCsSuAW/H9gkvlcoHZQplr5tErw==", - "dev": true + "integrity": "sha512-LnqxxIRdcYeZCuyOu10exJ+AwE++mdJS2+DmfqcPYYhcYaP4UI8AEXpqxKNC0IL6fKZPq7kF5lk8w0d1CKavyQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-sync": { "version": "file:pack/ucap-ng-protocol-sync-0.0.3.tgz", - "integrity": "sha512-ouc1pHhv1LkDPxnWjF6fyDXcalfZHpHncfAcwk9bc1TbexcT5F9kwf60Jr8d/L7sRP3mC/JgxKfddYLSSerAJw==", - "dev": true + "integrity": "sha512-CoyXKZUnX4OL9U8JIMNCAJ4liJLV3tthqxbFbZM4Q/IxDii7E5AEA9/92IznX9AcDJ70qWqzAFr/aqTvu1008g==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-protocol-umg": { "version": "file:pack/ucap-ng-protocol-umg-0.0.3.tgz", - "integrity": "sha512-sYqaGxLICUEZECBB/YtOBRVr7yw6PIutIRCBCTa+HFmwzS7bxuHryIX/1bPoOlX5x+5szsJxUMM7mS0HxKUjWA==", - "dev": true + "integrity": "sha512-n8UfTamvtEPFl9F8uzgXB5Iw3S60+gBn4gsK20vwHwpeQBycy+3xBRVp421Hb5krLWDhef1QgSXvp1xuWJYEGA==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, - "@ucap/ng-store-authentication": { - "version": "file:pack/ucap-ng-store-authentication-0.0.14.tgz", - "integrity": "sha512-6GUU+lerlrwVB8mT3qDBO5rxo7S5OYaLAb2K5HLxx9T+ZfAC+3maTjc28xeJaVgPfoLapI0jFuGgTlmwlBL6dg==", - "dev": true - }, - "@ucap/ng-store-chat": { - "version": "file:pack/ucap-ng-store-chat-0.0.66.tgz", - "integrity": "sha512-fSbIfu0fVcITs+crcKLjcivJSaW0KOqps1TQ5QawZekaQlJYw36rA8TbOF/qL9g1L0Vw9NphKe85Wwm5t2yJOQ==", - "dev": true - }, - "@ucap/ng-store-group": { - "version": "file:pack/ucap-ng-store-group-0.0.22.tgz", - "integrity": "sha512-XRFBpmJ9SPPwvessI+fxyL4GdWF+p/TU7RSWm6abbBcA7YGO//2gH0ghY8iPwsNVh3UhECy5LxkJx3fOGsJdhA==", - "dev": true + "@ucap/ng-store-call": { + "version": "file:pack/ucap-ng-store-call-0.0.7.tgz", + "integrity": "sha512-GPmJeJRFE/rGgmUBZddrIADa6d6sVHzRS8iO1rPCbGPRtHlKCxs59ld/mfduL8J45dMfsGKAujqK2C2K+CULVw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-store-organization": { - "version": "file:pack/ucap-ng-store-organization-0.0.20.tgz", - "integrity": "sha512-YpM0+IP6yvv/3B01YHQ/abwK2enamA4Gx1IN2fpD0NyOu7DfFt6mV6EEz32IN0DpY1gZ8jyU/ESchnDbRmPu5w==", - "dev": true + "version": "file:pack/ucap-ng-store-organization-0.0.23.tgz", + "integrity": "sha512-SvvGq0CNcTAA1XZ29c6c8/MqVaCoEZ4wNfOzso8C/ZV7B8ID7Dg+A76ZIZFYQTYMtMhqwZrtareZ6r8uTDZPug==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-ui": { - "version": "file:pack/ucap-ng-ui-0.0.97.tgz", - "integrity": "sha512-bmrpdiA1qnDWviV91buXCTOLGb49zeyt3T7AnOrZ87/wuVZAWdGaNUbEJtwYjZxnO3w2I5WOsKFzttq2vYU2LQ==", - "dev": true + "version": "file:pack/ucap-ng-ui-0.0.108.tgz", + "integrity": "sha512-hEdCdKK8PoXDhambb7k7WoYSlj+N8Q2ycOo/0eYmFXtFGj17H0cGBOpTjhR8sUW+chxW3rvMIMeXFV8zRvunzA==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-ui-authentication": { - "version": "file:pack/ucap-ng-ui-authentication-0.0.29.tgz", - "integrity": "sha512-kSQFFqSmtf+8aOmMqL0U+aUzCSmnPaWcJcDQfxuYPdRvlAYd4kMOWRcd/klvUrCpSf7P8jPsI7557rwmYHt3jA==", - "dev": true + "version": "file:pack/ucap-ng-ui-authentication-0.0.32.tgz", + "integrity": "sha512-YFR5HhuPCqo+BXstuOkx9h9jiMvNF7H/FIrabpSwQWTjcd1tIa/MSKxgTTtsx/CGkZ6CVZi+emNm9bAgjO/5VA==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } + }, + "@ucap/ng-ui-call": { + "version": "file:pack/ucap-ng-ui-call-0.0.15.tgz", + "integrity": "sha512-uwfIQ88oITJEl0K9sauu0Hi0qFQQL5VqqHcefsaIc4bOxHl9kJrUrv9XHkgHaRKmprBdm1MWZPalmMdqkz+HSQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-ui-chat": { - "version": "file:pack/ucap-ng-ui-chat-0.0.72.tgz", - "integrity": "sha512-sA5+3/sD9EN2BB2D2HZ9qrpGbkssWN7GF/UAvd8x4ECnVZPXaadNgLsSfOuZkSOVuM+6nTSyuglmnkjrPQBb8w==", - "dev": true + "version": "file:pack/ucap-ng-ui-chat-0.0.80.tgz", + "integrity": "sha512-yquThvvwMZKPcz/NUWj/XFslaDWunn6y2h1k/BkWdVEXqtfozY03iW7TPYD62Yh9aHKuQGSSmh0Km+2qMIwSlA==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-ui-group": { - "version": "file:pack/ucap-ng-ui-group-0.0.78.tgz", - "integrity": "sha512-GhHevEcbJJEppdcLOPFSQiAhn0psqrbKHe1I/X+c2wRGeIaJ/+UfseJ5CEqif8IQzU5caigM+q8E0bEFXiSFgQ==", - "dev": true + "version": "file:pack/ucap-ng-ui-group-0.0.87.tgz", + "integrity": "sha512-xhtHwHFkpAeS06V0Tvm+TXLvlgzpTYFwTI4kBnrkjTY1NpAjzNoK16sIJx5t4vHVbYHif7fSTVeJnMv93UZ64g==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-ui-material": { "version": "file:pack/ucap-ng-ui-material-0.0.4.tgz", - "integrity": "sha512-ySPULAbP+nQ65hBG2VWZ2H5Hr7muuTGGNXs6A+S3lsxLaW452wM3GNyUBhvUopr8LaSsoOPpp4nK1JeC0fG6pA==", - "dev": true + "integrity": "sha512-qpJsuZ3XUSoj/EK+DEZtyhVIQadlnkys2adbZSKdmAkMKlljD8a1gBWngWktYapgd/0C+Buz1AVOAT2xoE48SA==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-ui-organization": { - "version": "file:pack/ucap-ng-ui-organization-0.0.202.tgz", - "integrity": "sha512-ibK62UXrEFvz5oauxAqsJmaXmu0+iqIqY1W01RNHgl6TrzcWv0ytB54j20viAEhD8rclKfUD8Wa6GvzLolCa6w==", - "dev": true + "version": "file:pack/ucap-ng-ui-organization-0.0.222.tgz", + "integrity": "sha512-GbISefMo9/Xzj1OB+6rEzhiTEd4ybabI/Mo6fu0alL0346d76QK/2IWRNmnZkw1hk+zRwXS4GVsFDUNZ2385VQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-ui-skin-default": { "version": "file:pack/ucap-ng-ui-skin-default-0.0.1.tgz", - "integrity": "sha512-xYq5hlNUjo39R1TLBaUR59GjgGyCzTdj5CWZyUIBbFicBirsSERoUX5704HlTa0L8YSjW7exOL8VWSgEsMng6g==", - "dev": true + "integrity": "sha512-zHOLCTuUGW4nKBQgEoyeyqW+k2eDPNfQfVWbagIyO/mE6YyDT0ImMr47rEwOFkUMNtxfdYBpIwqTF5lHyBet3w==", + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-web-socket": { "version": "file:pack/ucap-ng-web-socket-0.0.2.tgz", - "integrity": "sha512-4xN7Y2csn+SCiIjAl+V4u5OF/qKnA2Tz7Noh3flMdw+Rco7/2bE0fFBiSLe7mcRRw/caLT7gqoDxhRd7acc6HA==", - "dev": true + "integrity": "sha512-W3ftrnkYmTJlM7eVfsR0YSojGUjS3CPT0qKEExNsU7hn23RzBJz4UpbE3hNOqUe2lhKyhUf6i9Bx+R01M4irVA==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/ng-web-storage": { "version": "file:pack/ucap-ng-web-storage-0.0.3.tgz", - "integrity": "sha512-g2ruQpXcRsNgD+0eyFOvZoxj120Bk8XydCASj9qFNK/HnYGgJd8AGu5NPGxd9RAflr9vV36IgRTARJEVL5FvDg==", - "dev": true + "integrity": "sha512-bfzmjFN6jFA9K8TG+WF4xv5Y0WQducR3ghEBjga3qUwLJVFVpjmVzLqopI68XwSVxpL/dgOrCQo2ULf1ANzpOw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } }, "@ucap/pi": { - "version": "0.0.8", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/pi/-/pi-0.0.8.tgz", - "integrity": "sha512-exfW6CRRN3XyMrnmoXX0e3lv0ICNHbLeYSZN5/BBYXp+Rilu9UMYlbveotlVZuh6RuDSIUOHZG4xElRApYzzBg==", + "version": "0.0.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/pi/-/pi-0.0.9.tgz", + "integrity": "sha512-hvDx0GN/Z2KFbJEdLA3iifaKkAE4PE9hn4vwweMURFzZcENAuCpMay6MGhXkjSObc4U/sdPtzMt4ROoTzMO6+Q==", "dev": true }, "@ucap/protocol": { - "version": "0.0.17", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol/-/protocol-0.0.17.tgz", - "integrity": "sha512-+vJHIblZ6gqbnqF7s7pWuYuiMMJpnCGbtPlFanoKr1JtZXpyDKWaWp835Bx2vO70GWDj31zw5OsAes6tOaIelQ==", + "version": "0.0.20", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol/-/protocol-0.0.20.tgz", + "integrity": "sha512-fncBF6cNDybcw3ShfsDTjc7R/aD3Y2GkILw4VBVZaB54xFyFssZY2ISQKvcu+6O+S89EBkSccSLxo1nUnC8NlQ==", "dev": true }, "@ucap/protocol-authentication": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-authentication/-/protocol-authentication-0.0.5.tgz", - "integrity": "sha512-AUj/t0p0IeNPrh9hsjpO79aMmt9VW89+7gCZlhmXB4UAhdZdusRRl7jdvU4hf9EV8XzVFi+7OVmmM5thuHpvTg==", + "version": "0.0.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-authentication/-/protocol-authentication-0.0.7.tgz", + "integrity": "sha512-MOSAcDzoEmGwtpeatBa2/DizOCHtVFzoq8gMqdfZivbd8CdpZINGDmyEN9QZ+AQGXpBK3GT58om7PapIZ+Rx/w==", "dev": true }, "@ucap/protocol-buddy": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-buddy/-/protocol-buddy-0.0.5.tgz", - "integrity": "sha512-E3PwVPZt9qYZ0K0IaOuAFJMiVLRbxDmakEAdspQBYl+OTDSNDWojgYUhC109W7qOsX47VE/OZXNx4Ki6c7zmrA==", + "version": "0.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-buddy/-/protocol-buddy-0.0.6.tgz", + "integrity": "sha512-X+DgI5hO2254MAqEqJb+x+gZUl6GNrPfUCRsSiBR/LMnsz3FHeIwpLoaPK4YgSfK5zRE9AiYFXw8yWqoIEjZPw==", "dev": true }, "@ucap/protocol-event": { - "version": "0.0.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-event/-/protocol-event-0.0.6.tgz", - "integrity": "sha512-nFpNd2jTgzGlrtLWhuWnaPfP3DxxSprHy516BPASlD/iRY2TNmNgFJmZvUY1y5pbEv99azEGjvP5rhy6IECk7w==", + "version": "0.0.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-event/-/protocol-event-0.0.11.tgz", + "integrity": "sha512-QiaL7/3bWNkkKI+ggDANFFdAnaefqawGxyOCaHzrguIgKwYd1L5WD9b/ccHZTyCzP055D8Qn0XHLlrvtj++qzQ==", "dev": true }, "@ucap/protocol-file": { - "version": "0.0.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-file/-/protocol-file-0.0.6.tgz", - "integrity": "sha512-iJk/Y5QmAm7GSD0lVjK0EWFhRWWgxE49dBtfyIa04N9NrOHLi0wNlxrwPmiuW1+b8r2wih5OJoJo6zaUZ+KyIw==", + "version": "0.0.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-file/-/protocol-file-0.0.7.tgz", + "integrity": "sha512-/Gu/vRfyVC67w4RGmviYI0iUKFhn3l4BlVTHnToTkqH1SkGlnS9bp9elBmuVse8JlTapb3rjcvdyqLS3Xzf4Wg==", "dev": true }, "@ucap/protocol-group": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-group/-/protocol-group-0.0.5.tgz", - "integrity": "sha512-1igUXkO1pLOLbje203vcp62dAGDrqadKO1FEudu4L6PzzPIIuwUr5/tEgQAKMMvt7y3bpocLXBNUE48DahcT+Q==", + "version": "0.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-group/-/protocol-group-0.0.6.tgz", + "integrity": "sha512-gbjoJg/ZqYmE+8nmX5Qr0lVqVnvX0ZtXSUHSnKAssP9EMBEHm0AYoIFghoNYgxlFu/R3AgtI0iCttQ4hmU9ruA==", "dev": true }, "@ucap/protocol-info": { - "version": "0.0.9", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-info/-/protocol-info-0.0.9.tgz", - "integrity": "sha512-uRo+B5Xj9jsyVJ5w6Ec6L7a8HJ6PFc5DAzVPkgQEYeHbo6IGsom07udDFFS0/oV6bJNi3BjyL0eakKDTOMwTTA==", + "version": "0.0.10", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-info/-/protocol-info-0.0.10.tgz", + "integrity": "sha512-xhcdO91BVoYLdnE8E6TR01hGYb4j9AgtNaER9438aa/9qOyu5jATgwqYe/4Aty9BlFtwVQYAmULo0nCY7kSvTQ==", "dev": true }, "@ucap/protocol-inner": { - "version": "0.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-inner/-/protocol-inner-0.0.4.tgz", - "integrity": "sha512-RDafwwEuvDAiTrHSIRQKZ3/dviIFNiKMn2PGC2Dhv7ZF58uchKwtJdTA2JoyoV2bUuOhAnETbxO+pEcSziJZNw==", + "version": "0.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-inner/-/protocol-inner-0.0.5.tgz", + "integrity": "sha512-foAv8562WGJJLeJSIFwmsOgKrgkpEVDeWGFH6Kv7jMeKDGUPLhbaRwE4muKLoKh7QGZNLVXDO2q6tCekjznW4g==", "dev": true }, "@ucap/protocol-option": { - "version": "0.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-option/-/protocol-option-0.0.7.tgz", - "integrity": "sha512-MjegoPY12/MEeg9jAGKtwf0+W2U+oDwSP0gchHtdeCHKXHHJyO59ZxSzUy/FHEfk0Jd7gZNmdiTGzIvUpIcnmQ==", + "version": "0.0.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-option/-/protocol-option-0.0.9.tgz", + "integrity": "sha512-kKxZ+yCTdL/G0q2NpzAVqvNYGVstRRQLQQRoSE/TtXSK5M+uSeLKs4EPHPRX3nHeRVdo5yac1lLmTFId+pv5IQ==", "dev": true }, "@ucap/protocol-ping": { - "version": "0.0.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-ping/-/protocol-ping-0.0.6.tgz", - "integrity": "sha512-hdyYsHUPXg0f2uHzj6j+VdK4u9oQVUchn5MlS/RgtxsmWc8C/QHveLG9xJS/4CehDTtwU4GMnvo15mkRRgYPCQ==", + "version": "0.0.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-ping/-/protocol-ping-0.0.7.tgz", + "integrity": "sha512-9D2SQ97GPWp4MGY2kPEWhbqAs3OrkvZn0lIb8GQLADLc5yJb1pREulZYJGS+6/lJo/9ypZP79YhJbnxvQRKMpA==", "dev": true }, "@ucap/protocol-query": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-query/-/protocol-query-0.0.5.tgz", - "integrity": "sha512-m1fiNQcqCYgkQ6gvqPU8hM8hg9iJLVCWoLRQHOXNJi8cTYiyBri4Yaapq6F4YrMeTYLCcvxh8HA0toj5H6CvSg==", + "version": "0.0.8", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-query/-/protocol-query-0.0.8.tgz", + "integrity": "sha512-6zvF0rl9x09dVhvcFop4I9+abFauUehCkfCqMe1g1SlOroz+kEjHMQP4l6jn/QzztwPHbnNVvweC2t/G3lqghw==", "dev": true }, "@ucap/protocol-room": { - "version": "0.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-room/-/protocol-room-0.0.7.tgz", - "integrity": "sha512-vGTwAK31CbV49bj6UMpJ2WfxLbVkPDvZV1aaFmwvB0HqqqXgyyaM9Cvlm5xrMguLDE//t9uu1jVi8vBYgALdMA==", + "version": "0.0.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-room/-/protocol-room-0.0.9.tgz", + "integrity": "sha512-z8NZXmCKae/fSM2yXZzDlhLI5SEMKsqZuJuw+zlzvidJJzpjPCEGzOPlzUVo0Jn/PlL9UyhKIihUYgddkouQcA==", "dev": true }, "@ucap/protocol-service": { - "version": "0.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-service/-/protocol-service-0.0.4.tgz", - "integrity": "sha512-mMDcfJDrldb2/QYr3fz0Bt8nMSQE/SSbnj94h55uUnjiEOHrVksmzMZ3soKTx3D+4+1ypWgO3YoJD0pyKZUmLw==", + "version": "0.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-service/-/protocol-service-0.0.5.tgz", + "integrity": "sha512-sOW7IBXzcMN04LisE2gC07/YqYSu6Y3SYXlief7dEpEk3Z4p+Xovp5j/LBEIo+bG7NsM4JR05g3CGf6v+DEOGw==", "dev": true }, "@ucap/protocol-status": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-status/-/protocol-status-0.0.5.tgz", - "integrity": "sha512-GjTArtHbCCi9qCIyTu7ENznS61sQZ+zBxQXN6FzgqeXdtPBniG/Zonspqm0mvyp5EjU8yhsTe5o9h7cBu2KWoQ==", + "version": "0.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-status/-/protocol-status-0.0.6.tgz", + "integrity": "sha512-6S1Ggj1HW5juX1RA8arubCZHXdpoTYYmGLtcBb2bvxDTKhMyjWTEzcipVN7EiZFv2/8xi80pVAnvX7O/JMcHfA==", "dev": true }, "@ucap/protocol-sync": { - "version": "0.0.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-sync/-/protocol-sync-0.0.6.tgz", - "integrity": "sha512-gGraaSItVbJkgiIPMQ1RKQLVRdYD0B2h7Um00EWxHqHw9kXrHHmEGIGI7y+WnLjlF/ZaksdoWfOGPUmiJhaahQ==", + "version": "0.0.8", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-sync/-/protocol-sync-0.0.8.tgz", + "integrity": "sha512-pMBrC5QIS4/2jRrXxqHFJ3LIH3PMF500+1fprgMuVDE3zc+FnzPSPZj1w518Y0c2D0mnrp83JsRi8iVrxKc53w==", "dev": true }, "@ucap/protocol-umg": { "version": "0.0.5", "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-umg/-/protocol-umg-0.0.5.tgz", - "integrity": "sha512-BBZQ8qtp1UlvCr1rat84JqZRKd5Py3cnXGymuuIE4ttJyfccwZ1hu/ej2QGiJXVFxH2VYnIQAkzuUMLswt6pmQ==", + "integrity": "sha512-dOLB9R7ipnY1S2EE3ioFNUwqK/VLSKJTDiPcNQ795oRbZebc1Hg33On9vVM/L4NrR2BDecYzE6NWzHIXZVCBUw==", "dev": true }, "@ucap/ui-scss": { @@ -3706,13 +3923,13 @@ "@ucap/web-socket": { "version": "0.0.10", "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/web-socket/-/web-socket-0.0.10.tgz", - "integrity": "sha512-G88OxjN78vCvQGsWm3OS6mkxLWfLYhEnY0wq/ABYAj3oYxLPNQHSmpaU+pccTBtaPx5/ggHC4FhJAqJHawTd3g==", + "integrity": "sha512-wEhO2lPhrX3x45U39q0mD/Kl6Jeej/1w2Y/IYl2qy7R841M1YnJn3WLNZrvh4sC/GgmfJnbqu2W37brwlpuWsw==", "dev": true }, "@ucap/web-storage": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/web-storage/-/web-storage-0.0.5.tgz", - "integrity": "sha512-t1S+oWPEl82L1u/H0728H62KnyrBxwKJzm/GPt2oNhc2iXPfF74jjMVE1ygP0WT2+zWAodDF/FI9Rqz9BDo2aw==", + "version": "0.0.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/web-storage/-/web-storage-0.0.9.tgz", + "integrity": "sha512-0cZB5c6WonK7d9zo+VgTROxJ6rmDw4t3zd5vavCBtpeSgufIFvWX0RbiAJqf546JaQ5SxL9/Vw6wLu4Zc57L3Q==", "dev": true }, "@webassemblyjs/ast": { @@ -3930,15 +4147,15 @@ } }, "acorn": { - "version": "7.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "7.4.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", "dev": true }, "acorn-walk": { - "version": "7.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/acorn-walk/-/acorn-walk-7.1.1.tgz", - "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "version": "7.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, "address": { @@ -3948,9 +4165,9 @@ "dev": true }, "adm-zip": { - "version": "0.4.14", - "resolved": "https://nexus.loafle.net/repository/npm-all/adm-zip/-/adm-zip-0.4.14.tgz", - "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", + "version": "0.4.16", + "resolved": "https://nexus.loafle.net/repository/npm-all/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", "dev": true }, "after": { @@ -4031,9 +4248,9 @@ "dev": true }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "alphanum-sort": { @@ -4347,6 +4564,14 @@ "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "assert": { @@ -4464,9 +4689,9 @@ "dev": true }, "aws4": { - "version": "1.9.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "version": "1.10.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", "dev": true }, "axios": { @@ -4627,9 +4852,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -4645,9 +4870,9 @@ "dev": true }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "find-cache-dir": { @@ -4673,12 +4898,13 @@ } }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } } @@ -4715,6 +4941,14 @@ "escape-string-regexp": "^1.0.5", "find-root": "^1.1.0", "source-map": "^0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "babel-plugin-macros": { @@ -4726,6 +4960,55 @@ "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "parse-json": { + "version": "5.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/parse-json/-/parse-json-5.0.1.tgz", + "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==", + "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" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } } }, "babel-plugin-minify-builtins": { @@ -4995,12 +5278,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -5071,9 +5348,9 @@ "dev": true }, "binary-extensions": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "version": "2.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, "blob": { @@ -5098,9 +5375,9 @@ "dev": true }, "bn.js": { - "version": "4.11.8", - "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.1.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", "dev": true }, "body-parser": { @@ -5346,21 +5623,50 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "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" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://nexus.loafle.net/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" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "browserify-zlib": { @@ -5373,15 +5679,15 @@ } }, "browserslist": { - "version": "4.12.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.14.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/browserslist/-/browserslist-4.14.0.tgz", + "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "caniuse-lite": "^1.0.30001111", + "electron-to-chromium": "^1.3.523", + "escalade": "^3.0.2", + "node-releases": "^1.1.60" } }, "browserstack": { @@ -5520,14 +5826,6 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "cacheable-request": { @@ -5587,14 +5885,6 @@ "dev": true, "requires": { "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } } }, "caller-path": { @@ -5613,9 +5903,9 @@ "dev": true }, "callsites": { - "version": "3.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "version": "2.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true }, "camel-case": { @@ -5672,9 +5962,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001045", - "resolved": "https://nexus.loafle.net/repository/npm-all/caniuse-lite/-/caniuse-lite-1.0.30001045.tgz", - "integrity": "sha512-Y8o2Iz1KPcD6FjySbk1sPpvJqchgxk/iow0DABpGyzA1UeQAuxh63Xh0Enj5/BrsYbXtCN32JmR4ZxQTCQ6E6A==", + "version": "1.0.30001112", + "resolved": "https://nexus.loafle.net/repository/npm-all/caniuse-lite/-/caniuse-lite-1.0.30001112.tgz", + "integrity": "sha512-J05RTQlqsatidif/38aN3PGULCLrg8OYQOlJUKbeYVzC2mGZkZLIztwRlB3MtrfLmawUmjFlNJvy/uhwniIe1Q==", "dev": true }, "canonical-path": { @@ -5737,9 +6027,9 @@ "dev": true }, "chokidar": { - "version": "3.3.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "version": "3.4.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -5749,7 +6039,7 @@ "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "readdirp": "~3.4.0" }, "dependencies": { "glob-parent": { @@ -5820,12 +6110,6 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -5874,9 +6158,9 @@ } }, "cli-spinners": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/cli-spinners/-/cli-spinners-2.3.0.tgz", - "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", + "version": "2.4.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/cli-spinners/-/cli-spinners-2.4.0.tgz", + "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==", "dev": true }, "cli-table3": { @@ -5951,23 +6235,6 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://nexus.loafle.net/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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "clone-response": { @@ -6013,6 +6280,12 @@ "sprintf-js": "^1.1.2" }, "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "sprintf-js": { "version": "1.1.2", "resolved": "https://nexus.loafle.net/repository/npm-all/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -6066,6 +6339,12 @@ "simple-swizzle": "^0.2.2" } }, + "colorette": { + "version": "1.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "colors": { "version": "1.4.0", "resolved": "https://nexus.loafle.net/repository/npm-all/colors/-/colors-1.4.0.tgz", @@ -6183,9 +6462,9 @@ } }, "concurrently": { - "version": "5.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/concurrently/-/concurrently-5.1.0.tgz", - "integrity": "sha512-9ViZMu3OOCID3rBgU31mjBftro2chOop0G2u1olq1OuwRBVRw/GxHTg80TVJBUTJfoswMmEUeuOg1g1yu1X2dA==", + "version": "5.3.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/concurrently/-/concurrently-5.3.0.tgz", + "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -6222,55 +6501,12 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://nexus.loafle.net/repository/npm-all/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "require-main-filename": { "version": "2.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -6555,21 +6791,6 @@ "pkg-dir": "^3.0.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "rimraf": { "version": "2.7.1", "resolved": "https://nexus.loafle.net/repository/npm-all/rimraf/-/rimraf-2.7.1.tgz", @@ -6591,9 +6812,9 @@ } }, "core-js": { - "version": "3.6.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "version": "3.6.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", "dev": true }, "core-js-compat": { @@ -6634,19 +6855,26 @@ "requires": { "resolve-from": "^5.0.0", "webpack": "^4.38.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "5.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" } }, "coverage-istanbul-loader": { @@ -6663,9 +6891,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -6675,31 +6903,40 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } } } }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "create-hash": { @@ -6828,9 +7065,9 @@ } }, "css-loader": { - "version": "3.5.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/css-loader/-/css-loader-3.5.2.tgz", - "integrity": "sha512-hDL0DPopg6zQQSRlZm0hyeaqIRnL0wbWjay9BZxoiJBpbfOW4WHfbaYQhwnDmEa0kZUc1CJ3IFo15ot1yULMIQ==", + "version": "3.6.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -6838,20 +7075,20 @@ "icss-utils": "^4.1.1", "loader-utils": "^1.2.3", "normalize-path": "^3.0.0", - "postcss": "^7.0.27", + "postcss": "^7.0.32", "postcss-modules-extract-imports": "^2.0.0", "postcss-modules-local-by-default": "^3.0.2", "postcss-modules-scope": "^2.2.0", "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.3", - "schema-utils": "^2.6.5", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", "semver": "^6.3.0" }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -6861,15 +7098,15 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.32", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -6878,12 +7115,13 @@ } }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } }, @@ -6932,14 +7170,13 @@ "dev": true }, "css-selector-tokenizer": { - "version": "0.7.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", - "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", "dev": true, "requires": { "cssesc": "^3.0.0", - "fastparse": "^1.1.2", - "regexpu-core": "^4.6.0" + "fastparse": "^1.1.2" } }, "css-tree": { @@ -6961,9 +7198,9 @@ } }, "css-what": { - "version": "3.2.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "version": "3.3.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", "dev": true }, "cssauron": { @@ -6991,46 +7228,6 @@ "cssnano-preset-default": "^4.0.7", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://nexus.loafle.net/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" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } } }, "cssnano-preset-default": { @@ -7132,9 +7329,9 @@ } }, "csstype": { - "version": "2.6.10", - "resolved": "https://nexus.loafle.net/repository/npm-all/csstype/-/csstype-2.6.10.tgz", - "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", + "version": "3.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/csstype/-/csstype-3.0.2.tgz", + "integrity": "sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==", "dev": true }, "cuint": { @@ -7180,9 +7377,9 @@ } }, "date-fns": { - "version": "2.12.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/date-fns/-/date-fns-2.12.0.tgz", - "integrity": "sha512-qJgn99xxKnFgB1qL4jpxU7Q2t0LOn1p8KMIveef3UZD7kqjT3tpFNNdXJelEHhE+rUgffriXriw/sOSU+cS1Hw==", + "version": "2.15.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/date-fns/-/date-fns-2.15.0.tgz", + "integrity": "sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==", "dev": true }, "date-format": { @@ -7360,12 +7557,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -7470,9 +7661,9 @@ "dev": true }, "detect-browser": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/detect-browser/-/detect-browser-5.0.0.tgz", - "integrity": "sha512-jUaq/SAT9YMlmhq/8w7gnqqr8AMcc7iYG1eAp7vP/7xn2eLtlcnEmxOkh2PmTg2Q+jVSUO3XD4sZ/IldbGg3dA==", + "version": "5.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/detect-browser/-/detect-browser-5.1.1.tgz", + "integrity": "sha512-5n2aWI57qC3kZaK4j2zYsG6L1LrxgLptGCNhMQgdKhVn6cSdcq43pp6xHPfTHG3TYM6myF4tIPWiZtfdVDgb9w==", "dev": true }, "detect-node": { @@ -7481,6 +7672,12 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, + "detect-node-es": { + "version": "1.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/detect-node-es/-/detect-node-es-1.0.0.tgz", + "integrity": "sha512-S4AHriUkTX9FoFvL4G8hXDcx6t3gp2HpfCza3Q0v6S78gul2hKWifLQbeW+ZF89+hSm2ZIc/uF3J97ZgytgTRg==", + "dev": true + }, "detect-port": { "version": "1.3.0", "resolved": "https://nexus.loafle.net/repository/npm-all/detect-port/-/detect-port-1.3.0.tgz", @@ -7539,6 +7736,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "dir-glob": { @@ -7548,23 +7753,6 @@ "dev": true, "requires": { "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "dns-equal": { @@ -7602,13 +7790,13 @@ } }, "dom-helpers": { - "version": "5.1.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/dom-helpers/-/dom-helpers-5.1.4.tgz", - "integrity": "sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A==", + "version": "5.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/dom-helpers/-/dom-helpers-5.2.0.tgz", + "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", "dev": true, "requires": { "@babel/runtime": "^7.8.7", - "csstype": "^2.6.7" + "csstype": "^3.0.2" } }, "dom-serialize": { @@ -7719,9 +7907,9 @@ "dev": true }, "dotenv-webpack": { - "version": "1.7.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz", - "integrity": "sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw==", + "version": "1.8.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", + "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", "dev": true, "requires": { "dotenv-defaults": "^1.0.2" @@ -7774,9 +7962,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.415", - "resolved": "https://nexus.loafle.net/repository/npm-all/electron-to-chromium/-/electron-to-chromium-1.3.415.tgz", - "integrity": "sha512-GbtYqKffx3sU8G0HxwXuJFfs58Q7+iwLa5rBwaULwET6jWW8IAQSrVnu7vEfiUIcMVfbYyFg7cw3zdm+EbBJmw==", + "version": "1.3.526", + "resolved": "https://nexus.loafle.net/repository/npm-all/electron-to-chromium/-/electron-to-chromium-1.3.526.tgz", + "integrity": "sha512-HiroW5ZbGwgT8kCnoEO8qnGjoTPzJxduvV/Vv/wH63eo2N6Zj3xT5fmmaSPAPUM05iN9/5fIEkIg3owTtV6QZg==", "dev": true }, "element-resize-detector": { @@ -7789,9 +7977,9 @@ } }, "elliptic": { - "version": "6.5.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -7801,6 +7989,14 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "emoji-regex": { @@ -7993,9 +8189,9 @@ "dev": true }, "entities": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "version": "2.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", "dev": true }, "err-code": { @@ -8023,22 +8219,22 @@ } }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "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", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "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" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-array-method-boxes-properly": { @@ -8108,6 +8304,12 @@ "integrity": "sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg==", "dev": true }, + "escalade": { + "version": "3.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, "escape-goat": { "version": "2.1.1", "resolved": "https://nexus.loafle.net/repository/npm-all/escape-goat/-/escape-goat-2.1.1.tgz", @@ -8137,9 +8339,9 @@ } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "1.3.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "esprima": { @@ -8182,15 +8384,15 @@ "dev": true }, "eventemitter3": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "version": "4.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", "dev": true }, "events": { - "version": "3.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "version": "3.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, "eventsource": { @@ -8374,21 +8576,6 @@ "requires": { "is-plain-object": "^2.0.4" } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://nexus.loafle.net/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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -8550,9 +8737,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -8562,18 +8749,19 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } } @@ -8624,13 +8812,13 @@ } }, "file-type": { - "version": "14.1.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/file-type/-/file-type-14.1.4.tgz", - "integrity": "sha512-1n6FczX8n73Y/cLjTiMboeTGHfm/i2AWk2oQE7m9a/G5YTCZHCEHEGr32thhLm3iQNUYzTKVQUcYcNHtOLwqgQ==", + "version": "14.7.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/file-type/-/file-type-14.7.1.tgz", + "integrity": "sha512-sXAMgFk67fQLcetXustxfKX+PZgHIUFn96Xld9uH8aXPdX3xOp0/jg9OdouVTvQrf7mrn+wAa4jN/y9fUOOiRA==", "dev": true, "requires": { "readable-web-to-node-stream": "^2.0.0", - "strtok3": "^6.0.0", + "strtok3": "^6.0.3", "token-types": "^2.0.0", "typedarray-to-buffer": "^3.1.5" } @@ -8731,15 +8919,6 @@ "semver": "^6.0.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "4.1.0", "resolved": "https://nexus.loafle.net/repository/npm-all/p-locate/-/p-locate-4.1.0.tgz", @@ -8749,12 +8928,6 @@ "p-limit": "^2.2.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/path-exists/-/path-exists-4.0.0.tgz", @@ -8785,12 +8958,12 @@ "dev": true }, "find-up": { - "version": "2.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^3.0.0" } }, "flatted": { @@ -8810,30 +8983,16 @@ } }, "focus-lock": { - "version": "0.6.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/focus-lock/-/focus-lock-0.6.7.tgz", - "integrity": "sha512-KRo93U/afEqt7w5tBm4t0FHf/Li8tEYav3n4GUiZdeRlRfrtMbL8yQg0xRVnY/kmBRmQ4xkqIlbaMvuqlu53kg==", + "version": "0.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/focus-lock/-/focus-lock-0.7.0.tgz", + "integrity": "sha512-LI7v2mH02R55SekHYdv9pRHR9RajVNyIJ2N5IEkWbg7FT5ZmJ9Hw4mWxHeEUcd+dJo0QmzztHvDvWcc7prVFsw==", "dev": true }, "follow-redirects": { - "version": "1.11.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/follow-redirects/-/follow-redirects-1.11.0.tgz", - "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", - "dev": true, - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } + "version": "1.12.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/follow-redirects/-/follow-redirects-1.12.1.tgz", + "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==", + "dev": true }, "for-in": { "version": "1.0.2", @@ -8920,9 +9079,9 @@ } }, "fs-extra": { - "version": "9.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "version": "9.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "dev": true, "requires": { "at-least-node": "^1.0.0", @@ -9290,9 +9449,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "gud": { @@ -9324,13 +9483,33 @@ "dev": true }, "har-validator": { - "version": "5.1.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "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.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + } } }, "has": { @@ -9401,14 +9580,6 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "has-values": { @@ -9459,13 +9630,33 @@ "dev": true }, "hash-base": { - "version": "3.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://nexus.loafle.net/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" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "hash.js": { @@ -9603,9 +9794,9 @@ "dev": true }, "html-minifier-terser": { - "version": "5.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/html-minifier-terser/-/html-minifier-terser-5.0.5.tgz", - "integrity": "sha512-cBSFFghQh/uHcfSiL42KxxIRMF7A144+3E44xdlctIjxEmkEfCvouxNyFH2wysXk1fCGBPwtcr3hDWlGTfkDew==", + "version": "5.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", "dev": true, "requires": { "camel-case": "^4.1.1", @@ -9630,9 +9821,9 @@ "dev": true }, "terser": { - "version": "4.6.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/terser/-/terser-4.6.11.tgz", - "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "version": "4.8.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -9651,9 +9842,9 @@ } }, "html-webpack-plugin": { - "version": "4.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/html-webpack-plugin/-/html-webpack-plugin-4.2.0.tgz", - "integrity": "sha512-zL7LYTuq/fcJX6vV6tmmvFR508Bd9e6kvVGbS76YAjZ2CPVRzsjkvDYs/SshPevpolSdTWgaDV39D6k6oQoVFw==", + "version": "4.3.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz", + "integrity": "sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w==", "dev": true, "requires": { "@types/html-minifier-terser": "^5.0.0", @@ -9746,15 +9937,15 @@ } }, "http-parser-js": { - "version": "0.4.10", - "resolved": "https://nexus.loafle.net/repository/npm-all/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "version": "0.5.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", "dev": true }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { "eventemitter3": "^4.0.0", @@ -9849,12 +10040,12 @@ } }, "i18next": { - "version": "19.4.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/i18next/-/i18next-19.4.3.tgz", - "integrity": "sha512-mqjfrYnvoqh9s2yVnzUjMfELCOoRuiKbRYzICZozaHYZMpUx17MpWDCW6zC+E42CaveIet/Zh07j22GAo4CFqQ==", + "version": "19.6.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/i18next/-/i18next-19.6.3.tgz", + "integrity": "sha512-eYr98kw/C5z6kY21ti745p4IvbOJwY8F2T9tf/Lvy5lFnYRqE45+bppSgMPmcZZqYNT+xO0N0x6rexVR2wtZZQ==", "dev": true, "requires": { - "@babel/runtime": "^7.3.1" + "@babel/runtime": "^7.10.1" } }, "iconv-lite": { @@ -9931,21 +10122,13 @@ } }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "2.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, "import-from": { @@ -9955,14 +10138,6 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } } }, "import-lazy": { @@ -10034,10 +10209,13 @@ "dev": true }, "injection-js": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/injection-js/-/injection-js-2.3.0.tgz", - "integrity": "sha512-rhS6E5jv603kbaO72ylOt0hGF1LT03oqQ4GU5KOO0qSaRbIWmdUCHjXq+VT79jL6/NmXtw9ccfK6dh/CzjoYjA==", - "dev": true + "version": "2.3.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/injection-js/-/injection-js-2.3.1.tgz", + "integrity": "sha512-t+kpDAOL/DUZ68JncAhsb8C91qhJ6dXRMcOuvJfNA7sp63etdiQe6KQoxE/nZ5b2eTi0TQX6OothOCm89cLAJQ==", + "dev": true, + "requires": { + "tslib": "^1.9.3" + } }, "inquirer": { "version": "7.1.0", @@ -10166,9 +10344,9 @@ } }, "interpret": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/interpret/-/interpret-2.0.0.tgz", - "integrity": "sha512-e0/LknJ8wpMMhTiWcjivB+ESwIuvHnBSlBbmP/pSb8CQJldoj1p2qv7xGZ/+BtbTziYRFSz8OsvdbiX45LtYQA==", + "version": "2.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, "invariant": { @@ -10274,9 +10452,9 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-ci": { @@ -10360,9 +10538,9 @@ "dev": true }, "is-docker": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-docker/-/is-docker-2.0.0.tgz", - "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "version": "2.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", "dev": true }, "is-dom": { @@ -10505,44 +10683,30 @@ "dev": true }, "is-plain-object": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "version": "2.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "isobject": "^4.0.0" + "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, "is-reference": { - "version": "1.1.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - } + "@types/estree": "*" } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "is-resolvable": { @@ -10612,10 +10776,13 @@ "dev": true }, "is-wsl": { - "version": "2.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", - "dev": true + "version": "2.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } }, "is-yarn-global": { "version": "0.3.0", @@ -10645,9 +10812,9 @@ "dev": true }, "isobject": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "isstream": { @@ -10657,9 +10824,9 @@ "dev": true }, "istanbul-api": { - "version": "2.1.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/istanbul-api/-/istanbul-api-2.1.6.tgz", - "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", + "version": "2.1.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/istanbul-api/-/istanbul-api-2.1.7.tgz", + "integrity": "sha512-LYTOa2UrYFyJ/aSczZi/6lBykVMjCCvUmT64gOe+jPZFy4w6FYfPGqFT2IiQ2BxVHHDOvCD7qrIXb0EOh4uGWw==", "dev": true, "requires": { "async": "^2.6.2", @@ -10670,7 +10837,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", + "istanbul-reports": "^2.2.5", "js-yaml": "^3.13.1", "make-dir": "^2.1.0", "minimatch": "^3.0.4", @@ -10716,15 +10883,12 @@ } }, "istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "version": "4.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "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" @@ -10901,9 +11065,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -10995,9 +11159,9 @@ } }, "jszip": { - "version": "3.4.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/jszip/-/jszip-3.4.0.tgz", - "integrity": "sha512-gZAOYuPl4EhPTXT0GjhI3o+ZAz3su6EhLrKUoAivcKqyqC7laS5JEv4XWZND9BgcDcF83vI85yGbDmDR6UhrIg==", + "version": "3.5.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", "dev": true, "requires": { "lie": "~3.3.0", @@ -11042,9 +11206,9 @@ }, "dependencies": { "mime": { - "version": "2.4.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true }, "rimraf": { @@ -11093,9 +11257,9 @@ } }, "karma-jasmine-html-reporter": { - "version": "1.5.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.3.tgz", - "integrity": "sha512-ci0VrjuCaFj+9d1tYlTE3KIPUCp0rz874zWWU3JgCMqGIyw5ke+BXWFPOAGAqUdCJcrMwneyvp1zFXA74MiPUA==", + "version": "1.5.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", "dev": true }, "karma-source-map-support": { @@ -11214,9 +11378,9 @@ } }, "libphonenumber-js": { - "version": "1.7.50", - "resolved": "https://nexus.loafle.net/repository/npm-all/libphonenumber-js/-/libphonenumber-js-1.7.50.tgz", - "integrity": "sha512-FmdA2WvwdTgu1X05zBnAE+3UAA09o3hFxEaqR0J+x7tGPAt1AD7Dj54L58PTJodrFBve/AIThFtC/UGqfSLbBw==", + "version": "1.7.56", + "resolved": "https://nexus.loafle.net/repository/npm-all/libphonenumber-js/-/libphonenumber-js-1.7.56.tgz", + "integrity": "sha512-7ArN9sSVs9bzX72+HeryCrmI68w1ry3Sd67+BmbPxbaCU+ZpuB2R9YT/YTsTUFYbxkp933vpQUP5E/1TJ9WvTQ==", "dev": true, "requires": { "minimist": "^1.2.5", @@ -11260,16 +11424,6 @@ "strip-bom": "^3.0.0" }, "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, "pify": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", @@ -11296,19 +11450,19 @@ } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.15", - "resolved": "https://nexus.loafle.net/repository/npm-all/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, "lodash.clonedeep": { @@ -11574,9 +11728,9 @@ } }, "markdown-to-jsx": { - "version": "6.11.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/markdown-to-jsx/-/markdown-to-jsx-6.11.1.tgz", - "integrity": "sha512-FdtDAv8d9/tjyHxdCvWZxxOgK2icwzBkTq/dPk+XlQ2B+DYDcwE89FWGzT92erXQ0CQR/bQbpNK3loNYhYL70g==", + "version": "6.11.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", + "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", "dev": true, "requires": { "prop-types": "^15.6.2", @@ -11718,9 +11872,9 @@ "dev": true }, "merge2": { - "version": "1.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "version": "1.4.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "methods": { @@ -11828,12 +11982,6 @@ } } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "to-regex-range": { "version": "2.1.1", "resolved": "https://nexus.loafle.net/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", @@ -11854,6 +12002,14 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "mime": { @@ -11863,18 +12019,18 @@ "dev": true }, "mime-db": { - "version": "1.43.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "version": "1.44.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", "dev": true }, "mime-types": { - "version": "2.1.26", - "resolved": "https://nexus.loafle.net/repository/npm-all/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "version": "2.1.27", + "resolved": "https://nexus.loafle.net/repository/npm-all/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, "requires": { - "mime-db": "1.43.0" + "mime-db": "1.44.0" } }, "mimic-fn": { @@ -11962,9 +12118,9 @@ } }, "minipass": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -11989,9 +12145,9 @@ } }, "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "version": "1.2.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -12060,21 +12216,6 @@ "requires": { "is-plain-object": "^2.0.4" } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://nexus.loafle.net/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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -12088,15 +12229,15 @@ } }, "moment": { - "version": "2.24.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "version": "2.27.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", "dev": true }, "moment-timezone": { - "version": "0.5.28", - "resolved": "https://nexus.loafle.net/repository/npm-all/moment-timezone/-/moment-timezone-0.5.28.tgz", - "integrity": "sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==", + "version": "0.5.31", + "resolved": "https://nexus.loafle.net/repository/npm-all/moment-timezone/-/moment-timezone-0.5.31.tgz", + "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", "dev": true, "requires": { "moment": ">= 2.9.0" @@ -12232,23 +12373,23 @@ "dev": true }, "neo-async": { - "version": "2.6.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "ng-packagr": { - "version": "9.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/ng-packagr/-/ng-packagr-9.1.1.tgz", - "integrity": "sha512-20umbeklnsntUoTXBKuQQj4Oyw1tauVU7TZPRFC+n3bXuB29rb+91HIBtt8k7l0BuXN5G4HiXgmPW8xDGu7HWg==", + "version": "9.1.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/ng-packagr/-/ng-packagr-9.1.5.tgz", + "integrity": "sha512-biuNfM15uLkCW+Vvj8bnuwjX37oX7j5icGm+l71FhM6ydlEl+Cl7PdFXpy9rrIlKFYlYRiPiiiWazGwVGn1icQ==", "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", + "autoprefixer": "^9.7.6", + "browserslist": "^4.12.0", "chalk": "^4.0.0", "chokidar": "^3.2.1", "clean-css": "^4.1.11", @@ -12262,8 +12403,8 @@ "postcss-url": "^8.0.0", "read-pkg-up": "^5.0.0", "rimraf": "^3.0.0", - "rollup": "2.6.1", - "rollup-plugin-sourcemaps": "^0.5.0", + "rollup": "2.7.5", + "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "^6.5.0", "sass": "^1.23.0", "stylus": "^0.54.7", @@ -12271,24 +12412,91 @@ "update-notifier": "^4.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + } } }, "chalk": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "version": "4.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://nexus.loafle.net/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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/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": "https://nexus.loafle.net/repository/npm-all/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "color-convert": { @@ -12312,55 +12520,18 @@ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "parse-json": { + "version": "5.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/parse-json/-/parse-json-5.0.1.tgz", + "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "read-pkg": { "version": "5.2.0", "resolved": "https://nexus.loafle.net/repository/npm-all/read-pkg/-/read-pkg-5.2.0.tgz", @@ -12384,21 +12555,27 @@ } }, "rollup": { - "version": "2.6.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/rollup/-/rollup-2.6.1.tgz", - "integrity": "sha512-1RhFDRJeg027YjBO6+JxmVWkEZY0ASztHhoEUEWxOwkh4mjO58TFD6Uo7T7Y3FbmDpRTfKhM5NVxJyimCn0Elg==", + "version": "2.7.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/rollup/-/rollup-2.7.5.tgz", + "integrity": "sha512-xQSM8uzhgtF6tTnTVEvOQThrcG3LPUP3T/4l4EukzDp0kbTY1QRDuXjiwtYzs9odKj9Bj/PccRG6viFfS7DmCQ==", "dev": true, "requires": { "fsevents": "~2.1.2" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "supports-color": { - "version": "7.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "6.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" } }, "type-fest": { @@ -12498,9 +12675,9 @@ } }, "node-releases": { - "version": "1.1.53", - "resolved": "https://nexus.loafle.net/repository/npm-all/node-releases/-/node-releases-1.1.53.tgz", - "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "version": "1.1.60", + "resolved": "https://nexus.loafle.net/repository/npm-all/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", "dev": true }, "node-sass-tilde-importer": { @@ -12701,21 +12878,6 @@ "string.prototype.padend": "^3.0.0" }, "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, "read-pkg": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/read-pkg/-/read-pkg-3.0.0.tgz", @@ -12821,9 +12983,9 @@ } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { @@ -12849,14 +13011,6 @@ "dev": true, "requires": { "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "object.assign": { @@ -12872,14 +13026,13 @@ } }, "object.entries": { - "version": "1.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/object.entries/-/object.entries-1.1.1.tgz", - "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "version": "1.1.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.17.5", "has": "^1.0.3" } }, @@ -12912,14 +13065,6 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "object.values": { @@ -12965,9 +13110,9 @@ } }, "onetime": { - "version": "5.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/onetime/-/onetime-5.1.1.tgz", + "integrity": "sha512-ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -13179,21 +13324,21 @@ "dev": true }, "p-limit": { - "version": "1.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.3.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-map": { @@ -13215,9 +13360,9 @@ } }, "p-try": { - "version": "1.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "package-json": { @@ -13398,6 +13543,14 @@ "dev": true, "requires": { "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } } }, "parse-asn1": { @@ -13429,15 +13582,13 @@ } }, "parse-json": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "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" + "json-parse-better-errors": "^1.0.1" } }, "parse5": { @@ -13535,15 +13686,26 @@ "dev": true }, "path-type": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/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": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://nexus.loafle.net/repository/npm-all/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -13611,51 +13773,6 @@ "dev": true, "requires": { "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } } }, "pkg-up": { @@ -13665,6 +13782,51 @@ "dev": true, "requires": { "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://nexus.loafle.net/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": "https://nexus.loafle.net/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": "https://nexus.loafle.net/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": "https://nexus.loafle.net/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": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } } }, "pnp-webpack-plugin": { @@ -13677,12 +13839,12 @@ } }, "polished": { - "version": "3.5.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/polished/-/polished-3.5.2.tgz", - "integrity": "sha512-vWoRDg3gY5RQBtUfcj9MRN10VCIf4EkdUikGxyXItg2Hnwk+eIVtdBiLajN0ldFeT3Vq4r/QNbjrQdhqBKrTug==", + "version": "3.6.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/polished/-/polished-3.6.5.tgz", + "integrity": "sha512-VwhC9MlhW7O5dg/z7k32dabcAFW1VI2+7fSe8cE/kXcfL7mVdoa5UxciYGW2sJU78ldDLT6+ROEKIZKFNTnUXQ==", "dev": true, "requires": { - "@babel/runtime": "^7.8.7" + "@babel/runtime": "^7.9.2" } }, "popper.js": { @@ -13692,14 +13854,14 @@ "dev": true }, "portfinder": { - "version": "1.0.25", - "resolved": "https://nexus.loafle.net/repository/npm-all/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.28", + "resolved": "https://nexus.loafle.net/repository/npm-all/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "dev": true, "requires": { "async": "^2.6.2", "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "mkdirp": "^0.5.5" }, "dependencies": { "debug": { @@ -13748,9 +13910,9 @@ } }, "postcss-calc": { - "version": "7.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "version": "7.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss-calc/-/postcss-calc-7.0.3.tgz", + "integrity": "sha512-IB/EAEmZhIMEIhG7Ov4x+l47UaXOS1n2f4FBUk/aKllQhtSCxWhTzn0nJgkqN7fo/jcWySvWTSB6Syk9L+31bA==", "dev": true, "requires": { "postcss": "^7.0.27", @@ -13759,9 +13921,9 @@ }, "dependencies": { "postcss": { - "version": "7.0.27", - "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.32", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -13862,18 +14024,18 @@ } }, "postcss-flexbugs-fixes": { - "version": "4.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz", - "integrity": "sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ==", + "version": "4.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", "dev": true, "requires": { "postcss": "^7.0.26" }, "dependencies": { "postcss": { - "version": "7.0.27", - "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "version": "7.0.32", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -13926,46 +14088,6 @@ "requires": { "cosmiconfig": "^5.0.0", "import-cwd": "^2.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://nexus.loafle.net/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" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } } }, "postcss-loader": { @@ -14122,15 +14244,43 @@ } }, "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "version": "3.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", "dev": true, "requires": { "icss-utils": "^4.1.1", - "postcss": "^7.0.16", + "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://nexus.loafle.net/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-modules-scope": { @@ -14423,17 +14573,17 @@ }, "dependencies": { "mime": { - "version": "2.4.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true } } }, "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", - "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "version": "4.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, "prepend-http": { @@ -14465,20 +14615,14 @@ "dev": true }, "prismjs": { - "version": "1.20.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/prismjs/-/prismjs-1.20.0.tgz", - "integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==", + "version": "1.21.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/prismjs/-/prismjs-1.21.0.tgz", + "integrity": "sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw==", "dev": true, "requires": { "clipboard": "^2.0.0" } }, - "private": { - "version": "0.1.8", - "resolved": "https://nexus.loafle.net/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": "https://nexus.loafle.net/repository/npm-all/process/-/process-0.11.10.tgz", @@ -14561,9 +14705,9 @@ } }, "property-information": { - "version": "5.4.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/property-information/-/property-information-5.4.0.tgz", - "integrity": "sha512-nmMWAm/3vKFGmmOWOcdLjgq/Hlxa+hsuR/px1Lp/UGEyc5A22A6l78Shc2C0E71sPmAqglni+HrS7L7VJ7AUCA==", + "version": "5.5.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/property-information/-/property-information-5.5.0.tgz", + "integrity": "sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA==", "dev": true, "requires": { "xtend": "^4.0.0" @@ -14706,6 +14850,12 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "source-map-support": { "version": "0.4.18", "resolved": "https://nexus.loafle.net/repository/npm-all/source-map-support/-/source-map-support-0.4.18.tgz", @@ -14782,6 +14932,14 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "pump": { @@ -14845,9 +15003,9 @@ "dev": true }, "qs": { - "version": "6.9.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "version": "6.5.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "query-string": { @@ -14952,9 +15110,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -14964,18 +15122,19 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } } @@ -15022,9 +15181,9 @@ } }, "react-color": { - "version": "2.18.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/react-color/-/react-color-2.18.0.tgz", - "integrity": "sha512-FyVeU1kQiSokWc8NPz22azl1ezLpJdUyTbWL0LPUpcuuYDrZ/Y1veOk9rRK5B3pMlyDGvTk4f4KJhlkIQNRjEA==", + "version": "2.18.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/react-color/-/react-color-2.18.1.tgz", + "integrity": "sha512-X5XpyJS6ncplZs74ak0JJoqPi+33Nzpv5RYWWxn17bslih+X7OlgmfpmGC1fNvdkK7/SGWYf1JJdn7D2n5gSuQ==", "dev": true, "requires": { "@icons/material": "^0.2.4", @@ -15233,15 +15392,6 @@ "to-regex-range": "^2.1.0" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "fork-ts-checker-webpack-plugin": { "version": "1.5.0", "resolved": "https://nexus.loafle.net/repository/npm-all/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz", @@ -15325,12 +15475,6 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://nexus.loafle.net/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", @@ -15340,16 +15484,6 @@ "is-buffer": "^1.1.5" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, "mimic-fn": { "version": "1.2.0", "resolved": "https://nexus.loafle.net/repository/npm-all/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -15386,39 +15520,6 @@ "is-wsl": "^1.1.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, "pify": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", @@ -15486,9 +15587,9 @@ } }, "react-draggable": { - "version": "4.3.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/react-draggable/-/react-draggable-4.3.1.tgz", - "integrity": "sha512-m8QeV+eIi7LhD5mXoLqDzLbokc6Ncwa0T34fF6uJzWSs4vc4fdZI/XGqHYoEn91T8S6qO+BSXslONh7Jz9VPQQ==", + "version": "4.4.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/react-draggable/-/react-draggable-4.4.3.tgz", + "integrity": "sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w==", "dev": true, "requires": { "classnames": "^2.2.5", @@ -15502,19 +15603,19 @@ "dev": true }, "react-fast-compare": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/react-fast-compare/-/react-fast-compare-3.0.1.tgz", - "integrity": "sha512-C5vP0J644ofZGd54P8++O7AvrqMEbrGf8Ue0eAUJLJyw168dAX2aiYyX/zcY/eSNwO0IDjsKUaLE6n83D+TnEg==", + "version": "3.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==", "dev": true }, "react-focus-lock": { - "version": "2.3.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/react-focus-lock/-/react-focus-lock-2.3.1.tgz", - "integrity": "sha512-j15cWLPzH0gOmRrUg01C09Peu8qbcdVqr6Bjyfxj80cNZmH+idk/bNBYEDSmkAtwkXI+xEYWSmHYqtaQhZ8iUQ==", + "version": "2.4.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/react-focus-lock/-/react-focus-lock-2.4.1.tgz", + "integrity": "sha512-c5ZP56KSpj9EAxzScTqQO7bQQNPltf/W1ZEBDqNDOV1XOIwvAyHX0O7db9ekiAtxyKgnqZjQlLppVg94fUeL9w==", "dev": true, "requires": { "@babel/runtime": "^7.0.0", - "focus-lock": "^0.6.7", + "focus-lock": "^0.7.0", "prop-types": "^15.6.2", "react-clientside-effect": "^1.2.2", "use-callback-ref": "^1.2.1", @@ -15522,9 +15623,9 @@ } }, "react-helmet-async": { - "version": "1.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/react-helmet-async/-/react-helmet-async-1.0.5.tgz", - "integrity": "sha512-nqGA5a1HRZsw1lzDn+bYuUN2FyHRiY+DgjRVhEOKVBDTrrqJCpCIOuY/IRHdobr+KD1gGTP0WabZsTrIHnFKJA==", + "version": "1.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/react-helmet-async/-/react-helmet-async-1.0.6.tgz", + "integrity": "sha512-t+bhAI4NgxfEv8ez4r77cLfR4O4Z55E/FH2DT+uiE4U7yfWgAk7OAOi7IxHxuYEVLI26bqjZvlVCkpC5/5AoNA==", "dev": true, "requires": { "@babel/runtime": "^7.9.2", @@ -15652,9 +15753,9 @@ } }, "react-transition-group": { - "version": "4.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/react-transition-group/-/react-transition-group-4.3.0.tgz", - "integrity": "sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw==", + "version": "4.4.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", "dev": true, "requires": { "@babel/runtime": "^7.5.5", @@ -15724,16 +15825,6 @@ "pify": "^3.0.0" }, "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, "pify": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", @@ -15752,19 +15843,47 @@ "read-pkg": "^3.0.0" }, "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "find-up": { + "version": "2.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "pify": "^3.0.0" + "locate-path": "^2.0.0" } }, - "pify": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "locate-path": { + "version": "2.0.0", + "resolved": "https://nexus.loafle.net/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": "https://nexus.loafle.net/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": "https://nexus.loafle.net/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": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "read-pkg": { @@ -15814,12 +15933,12 @@ } }, "readdirp": { - "version": "3.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "version": "3.4.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "picomatch": "^2.2.1" } }, "rechoir": { @@ -15887,9 +16006,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", "dev": true }, "regenerate-unicode-properties": { @@ -15902,19 +16021,18 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.3", + "resolved": "https://nexus.loafle.net/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": "https://nexus.loafle.net/repository/npm-all/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -15952,9 +16070,9 @@ } }, "registry-auth-token": { - "version": "4.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/registry-auth-token/-/registry-auth-token-4.1.1.tgz", - "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "version": "4.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", "dev": true, "requires": { "rc": "^1.2.8" @@ -15970,9 +16088,9 @@ } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { @@ -16085,14 +16203,6 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - } } }, "require-directory": { @@ -16135,20 +16245,12 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } } }, "resolve-from": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, "resolve-url": { @@ -16237,23 +16339,32 @@ } }, "rollup-plugin-sourcemaps": { - "version": "0.5.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.5.0.tgz", - "integrity": "sha512-xp2vvRvgnYiXydgf/JFFFgYxrqMaQaOrK/g6yZvgwT9R1TSYjD3HKku1pD7iQNjQHkl5yGpokvJLp7cP/lR+aQ==", + "version": "0.6.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.2.tgz", + "integrity": "sha512-9AwTKg3yRykwzemfLt71ySe0LvrAci+bpsOL1LaTYFk5BX4HF6X7DQfpHa74ANfSja3hyjiQkXCR8goSOnW//Q==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.1", - "source-map-resolve": "^0.5.3" + "@rollup/pluginutils": "^3.0.9", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + } } }, "run-async": { - "version": "2.4.0", - "resolved": "https://nexus.loafle.net/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" - } + "version": "2.4.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true }, "run-queue": { "version": "1.0.3", @@ -16317,9 +16428,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -16329,18 +16440,19 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } } @@ -16406,9 +16518,9 @@ } }, "scss-bundle": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/scss-bundle/-/scss-bundle-3.1.1.tgz", - "integrity": "sha512-9nE6gJJmclkjtEatPL++RxU7KITjkZRsKYqR9W5zu2vzT4krdFiuiJVxcYeKGZz+/JGYMTUCUcDCE7Lo011sVg==", + "version": "3.1.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/scss-bundle/-/scss-bundle-3.1.2.tgz", + "integrity": "sha512-lvxTwCKDLgzmRWhGwJ834ggtnEhs0G9FxSJRWte+NwlshVvBcQ/kOHHkpAGDpCxIMNGz/Utl0yd/MWyQAOBhqg==", "dev": true, "requires": { "@types/archy": "^0.0.31", @@ -16490,9 +16602,9 @@ "dev": true }, "sass": { - "version": "1.26.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/sass/-/sass-1.26.3.tgz", - "integrity": "sha512-5NMHI1+YFYw4sN3yfKjpLuV9B5l7MqQ6FlkTcC4FT+oHbBRUZoSjHrrt/mE0nFXJyY2kQtU9ou9HxvFVjLFuuw==", + "version": "1.26.10", + "resolved": "https://nexus.loafle.net/repository/npm-all/sass/-/sass-1.26.10.tgz", + "integrity": "sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" @@ -16791,21 +16903,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://nexus.loafle.net/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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -16874,9 +16971,9 @@ "dev": true }, "shelljs": { - "version": "0.8.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "version": "0.8.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "dev": true, "requires": { "glob": "^7.0.0", @@ -16885,9 +16982,9 @@ }, "dependencies": { "interpret": { - "version": "1.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "version": "1.4.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true } } @@ -17009,6 +17106,12 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -17060,12 +17163,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -17302,9 +17399,9 @@ "dev": true }, "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, "source-map-loader": { @@ -17373,9 +17470,9 @@ "dev": true }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -17389,9 +17486,9 @@ "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -17529,9 +17626,9 @@ "dev": true }, "store2": { - "version": "2.11.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/store2/-/store2-2.11.1.tgz", - "integrity": "sha512-llZqXAXjG2E4FvWsZxFmBDfh6kqQuGFZm64TX23qW02Hf4dyElhDEbYx1IIVTEMKWrrDnDA9oqOjY8WHo2NgcA==", + "version": "2.11.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/store2/-/store2-2.11.2.tgz", + "integrity": "sha512-TQMKs+C6n9idtzLpxluikmDCYiDJrTbbIGn9LFxMg0BVTu+8JZKSlXTWYRpOFKlfKD5HlDWLVpJJyNGZ2e9l1A==", "dev": true }, "stream-browserify": { @@ -17685,28 +17782,6 @@ "es-abstract": "^1.17.5" } }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - } - }, "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://nexus.loafle.net/repository/npm-all/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", @@ -17754,20 +17829,19 @@ "dev": true }, "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "version": "3.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "strtok3": { - "version": "6.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/strtok3/-/strtok3-6.0.0.tgz", - "integrity": "sha512-ZXlmE22LZnIBvEU3n/kZGdh770fYFie65u5+2hLK9s74DoFtpkQIdBZVeYEzlolpGa+52G5IkzjUWn+iXynOEQ==", + "version": "6.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/strtok3/-/strtok3-6.0.4.tgz", + "integrity": "sha512-rqWMKwsbN9APU47bQTMEYTPcwdpKDtmf1jVhHzNW2cL1WqAxaM9iBb9t5P2fj+RV2YsErUWgQzHD5JwV0uCTEQ==", "dev": true, "requires": { "@tokenizer/token": "^0.1.1", "@types/debug": "^4.1.5", - "debug": "^4.1.1", "peek-readable": "^3.1.0" } }, @@ -17782,9 +17856,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -17794,18 +17868,19 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } } @@ -17865,12 +17940,6 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } }, @@ -17993,6 +18062,14 @@ "isobject": "^4.0.0", "lodash": "^4.17.15", "memoizerific": "^1.11.3" + }, + "dependencies": { + "isobject": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + } } }, "term-size": { @@ -18038,9 +18115,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -18050,9 +18127,9 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "find-cache-dir": { @@ -18083,9 +18160,9 @@ "dev": true }, "jest-worker": { - "version": "25.4.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/jest-worker/-/jest-worker-25.4.0.tgz", - "integrity": "sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw==", + "version": "25.5.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", "dev": true, "requires": { "merge-stream": "^2.0.0", @@ -18110,15 +18187,6 @@ "semver": "^6.0.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "4.1.0", "resolved": "https://nexus.loafle.net/repository/npm-all/p-locate/-/p-locate-4.1.0.tgz", @@ -18128,12 +18196,6 @@ "p-limit": "^2.2.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/path-exists/-/path-exists-4.0.0.tgz", @@ -18150,12 +18212,13 @@ } }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } }, @@ -18183,9 +18246,9 @@ "dev": true }, "throttle-debounce": { - "version": "2.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/throttle-debounce/-/throttle-debounce-2.1.0.tgz", - "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==", + "version": "2.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/throttle-debounce/-/throttle-debounce-2.2.1.tgz", + "integrity": "sha512-i9hAVld1f+woAiyNGqWelpDD5W1tpMroL3NofTz9xzwq6acWBlO2dC8k5EFSZepU6oOINtV5Q3aSPoRg7o4+fA==", "dev": true }, "through": { @@ -18425,9 +18488,9 @@ } }, "tsconfig-paths-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "version": "3.3.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.3.0.tgz", + "integrity": "sha512-MpQeZpwPY4gYASCUjY4yt2Zj8yv86O8f++3Ai4o0yI0fUC6G1syvnL9VuY71PBgimRYDQU47f12BEmJq9wRaSw==", "dev": true, "requires": { "chalk": "^2.3.0", @@ -18436,10 +18499,9 @@ } }, "tslib": { - "version": "1.11.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true + "version": "1.13.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" }, "tslint": { "version": "5.18.0", @@ -18723,12 +18785,6 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -18856,9 +18912,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -18868,24 +18924,25 @@ } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "mime": { - "version": "2.4.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } } @@ -18925,18 +18982,18 @@ "dev": true }, "use-callback-ref": { - "version": "1.2.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/use-callback-ref/-/use-callback-ref-1.2.3.tgz", - "integrity": "sha512-DPBPh1i2adCZoIArRlTuKRy7yue7QogtEnfv0AKrWsY+GA+4EKe37zhRDouNnyWMoNQFYZZRF+2dLHsWE4YvJA==", + "version": "1.2.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/use-callback-ref/-/use-callback-ref-1.2.4.tgz", + "integrity": "sha512-rXpsyvOnqdScyied4Uglsp14qzag1JIemLeTWGKbwpotWht57hbP78aNT+Q4wdFKQfQibbUX4fb6Qb4y11aVOQ==", "dev": true }, "use-sidecar": { - "version": "1.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/use-sidecar/-/use-sidecar-1.0.2.tgz", - "integrity": "sha512-287RZny6m5KNMTb/Kq9gmjafi7lQL0YHO1lYolU6+tY1h9+Z3uCtkJJ3OSOq3INwYf2hBryCcDh4520AhJibMA==", + "version": "1.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/use-sidecar/-/use-sidecar-1.0.3.tgz", + "integrity": "sha512-ygJwGUBeQfWgDls7uTrlEDzJUUR67L8Rm14v/KfFtYCdHhtjHZx1Krb3DIQl3/Q5dJGfXLEQ02RY8BdNBv87SQ==", "dev": true, "requires": { - "detect-node": "^2.0.4", + "detect-node-es": "^1.0.0", "tslib": "^1.9.3" } }, @@ -19094,14 +19151,25 @@ } }, "watchpack": { - "version": "1.6.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/watchpack/-/watchpack-1.6.1.tgz", - "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "version": "1.7.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "dev": true, "requires": { - "chokidar": "^2.1.8", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" }, "dependencies": { "anymatch": { @@ -19109,6 +19177,7 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, + "optional": true, "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -19119,6 +19188,7 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, + "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" } @@ -19129,13 +19199,15 @@ "version": "1.13.1", "resolved": "https://nexus.loafle.net/repository/npm-all/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true + "dev": true, + "optional": true }, "braces": { "version": "2.3.2", "resolved": "https://nexus.loafle.net/repository/npm-all/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -19154,6 +19226,7 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, + "optional": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -19174,6 +19247,7 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -19183,6 +19257,7 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -19202,6 +19277,7 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, + "optional": true, "requires": { "binary-extensions": "^1.0.0" } @@ -19211,21 +19287,17 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://nexus.loafle.net/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -19235,6 +19307,7 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -19246,6 +19319,7 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, + "optional": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -19377,6 +19451,15 @@ "glob": "^7.1.3" } }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.6.1.tgz", @@ -19393,16 +19476,16 @@ } }, "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "version": "1.4.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", "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", + "serialize-javascript": "^3.1.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -19412,9 +19495,9 @@ } }, "webpack-bundle-analyzer": { - "version": "3.7.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.7.0.tgz", - "integrity": "sha512-mETdjZ30a3Yf+NTB/wqTgACK7rAYQl5uxKK0WVTNmF0sM3Uv8s3R58YZMW7Rhu0Lk2Rmuhdj5dcH5Q76zCDVdA==", + "version": "3.8.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz", + "integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==", "dev": true, "requires": { "acorn": "^7.1.1", @@ -19456,9 +19539,9 @@ } }, "mime": { - "version": "2.4.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true } } @@ -19621,12 +19704,6 @@ "kind-of": "^3.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://nexus.loafle.net/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", @@ -19727,9 +19804,9 @@ } }, "webpack-virtual-modules": { - "version": "0.2.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/webpack-virtual-modules/-/webpack-virtual-modules-0.2.1.tgz", - "integrity": "sha512-0PWBlxyt4uGDofooIEanWhhyBOHdd+lr7QpYNDLC7/yc5lqJT8zlc04MTIBnKj+c2BlQNNuwE5er/Tg4wowHzA==", + "version": "0.2.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz", + "integrity": "sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==", "dev": true, "requires": { "debug": "^3.0.0" @@ -19747,20 +19824,20 @@ } }, "websocket-driver": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "version": "0.7.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", + "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "version": "0.1.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, "when": { @@ -19984,13 +20061,10 @@ "dev": true }, "yaml": { - "version": "1.9.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/yaml/-/yaml-1.9.2.tgz", - "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.9.2" - } + "version": "1.10.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true }, "yargs": { "version": "12.0.5", @@ -20010,51 +20084,6 @@ "which-module": "^2.0.0", "y18n": "^3.2.1 || ^4.0.0", "yargs-parser": "^11.1.1" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/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-try": { - "version": "2.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } } }, "yargs-parser": { diff --git a/package.json b/package.json index c59167e..10aed86 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,14 @@ "start": "ng serve", "build": "ng build", "build:all": "npm-run-all -s build:logger build:core build:util:all build:api:all build:protocol:all build:native:all build:store:all build:ui-material: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:all": "npm-run-all -s build:api-common build:api-external build:api-message build:api-prompt build:api-webex build:api-contact 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:api-webex": "node ./scripts/build.js api-webex", + "build:api-contact": "node ./scripts/build.js api-contact", "build:pi": "node ./scripts/build.js pi", "build:core": "node ./scripts/build.js core", "build:logger": "node ./scripts/build.js logger", @@ -39,28 +41,32 @@ "build:web-socket": "node ./scripts/build.js web-socket", "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-authentication build:store-organization build:store-group build:store-chat", + "build:store:all": "npm-run-all -s build:store-authentication build:store-organization build:store-group build:store-chat build:store-call", "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:store-call": "node ./scripts/build.js store-call", "build:ui-material:all": "npm-run-all -s build:ui-material", "build:ui-material": "node ./scripts/build.js ui-material useScssBundle", - "build:ui:all": "npm-run-all -s build:ui build:ui-organization build:ui-authentication build:ui-group build:ui-chat", + "build:ui:all": "npm-run-all -s build:ui build:ui-organization build:ui-authentication build:ui-group build:ui-chat build:ui-call", "build:ui": "node ./scripts/build.js ui useScssBundle", "build:ui-organization": "node ./scripts/build.js ui-organization useScssBundle", "build:ui-authentication": "node ./scripts/build.js ui-authentication useScssBundle", "build:ui-group": "node ./scripts/build.js ui-group useScssBundle", "build:ui-chat": "node ./scripts/build.js ui-chat useScssBundle", + "build:ui-call": "node ./scripts/build.js ui-call useScssBundle", "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:logger publish:core publish:util:all publish:api:all publish:protocol:all publish:native:all publish:store:all publish:ui-material: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:all": "npm-run-all -s publish:api-common publish:api-external publish:api-message publish:api-prompt publish:api-webex publish:api-contact 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:api-webex": "cd ./dist/api-webex && npm publish", + "publish:api-contact": "cd ./dist/api-contact && npm publish", "publish:pi": "cd ./dist/pi && npm publish", "publish:core": "cd ./dist/core && npm publish", "publish:logger": "cd ./dist/logger && npm publish", @@ -87,19 +93,21 @@ "publish:web-socket": "cd ./dist/web-socket && npm publish", "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:all": "npm-run-all -s publish:store-organization publish:store-authentication publish:store-group publish:store-chat publish:store-call", "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:store-call": "cd ./dist/store-call && npm publish", "publish:ui-material:all": "npm-run-all -s publish:ui-material", "publish:ui-material": "cd ./dist/ui-material && npm publish", - "publish:ui:all": "npm-run-all -s publish:ui publish:ui-organization publish:ui-authentication publish:ui-group publish:ui-chat", + "publish:ui:all": "npm-run-all -s publish:ui publish:ui-organization publish:ui-authentication publish:ui-group publish:ui-chat publish:ui-call", "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-group": "cd ./dist/ui-group && npm publish", "publish:ui-chat": "cd ./dist/ui-chat && npm publish", + "publish:ui-call": "cd ./dist/ui-call && 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", @@ -108,7 +116,9 @@ "storybook": "start-storybook -p 6006", "build-storybook": "build-storybook" }, - "dependencies": {}, + "dependencies": { + "tslib": "^1.10.0" + }, "devDependencies": { "@angular-devkit/build-angular": "^0.900.6", "@angular-devkit/build-ng-packagr": "^0.900.6", @@ -143,24 +153,38 @@ "@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.7", - "@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.14", - "@ucap/logger": "~0.0.12", - "@ucap/native": "~0.0.19", + "@ucap/api": "~0.0.5", + "@ucap/api-common": "~0.0.12", + "@ucap/api-contact": "~0.0.5", + "@ucap/api-external": "~0.0.8", + "@ucap/api-message": "~0.0.7", + "@ucap/api-prompt": "~0.0.6", + "@ucap/api-public": "~0.0.6", + "@ucap/api-webex": "~0.0.2", + "@ucap/core": "~0.0.15", + "@ucap/domain-authentication": "~0.0.4", + "@ucap/domain-authorization": "~0.0.3", + "@ucap/domain-call": "~0.0.4", + "@ucap/domain-chat": "~0.0.3", + "@ucap/domain-common": "~0.0.1", + "@ucap/domain-group": "~0.0.2", + "@ucap/domain-message": "~0.0.1", + "@ucap/domain-organization": "~0.0.1", + "@ucap/domain-status": "~0.0.1", + "@ucap/i18n": "~0.0.2", + "@ucap/logger": "~0.0.14", + "@ucap/native": "~0.0.27", "@ucap/ng-api-common": "file:pack/ucap-ng-api-common-0.0.1.tgz", + "@ucap/ng-api-contact": "file:pack/ucap-ng-api-contact-0.0.2.tgz", "@ucap/ng-api-external": "file:pack/ucap-ng-api-external-0.0.1.tgz", "@ucap/ng-api-message": "file:pack/ucap-ng-api-message-0.0.1.tgz", "@ucap/ng-api-prompt": "file:pack/ucap-ng-api-prompt-0.0.1.tgz", "@ucap/ng-api-public": "file:pack/ucap-ng-api-public-0.0.1.tgz", - "@ucap/ng-core": "file:pack/ucap-ng-core-0.0.7.tgz", - "@ucap/ng-i18n": "file:pack/ucap-ng-i18n-0.0.6.tgz", + "@ucap/ng-api-webex": "file:pack/ucap-ng-api-webex-0.0.1.tgz", + "@ucap/ng-core": "file:pack/ucap-ng-core-0.0.9.tgz", + "@ucap/ng-i18n": "file:pack/ucap-ng-i18n-0.0.8.tgz", "@ucap/ng-logger": "file:pack/ucap-ng-logger-0.0.2.tgz", - "@ucap/ng-native": "file:pack/ucap-ng-native-0.0.5.tgz", + "@ucap/ng-native": "file:pack/ucap-ng-native-0.0.12.tgz", "@ucap/ng-pi": "file:pack/ucap-ng-pi-0.0.1.tgz", "@ucap/ng-protocol": "file:pack/ucap-ng-protocol-0.0.3.tgz", "@ucap/ng-protocol-authentication": "file:pack/ucap-ng-protocol-authentication-0.0.3.tgz", @@ -178,39 +202,41 @@ "@ucap/ng-protocol-status": "file:pack/ucap-ng-protocol-status-0.0.3.tgz", "@ucap/ng-protocol-sync": "file:pack/ucap-ng-protocol-sync-0.0.3.tgz", "@ucap/ng-protocol-umg": "file:pack/ucap-ng-protocol-umg-0.0.3.tgz", - "@ucap/ng-store-authentication": "file:pack/ucap-ng-store-authentication-0.0.14.tgz", - "@ucap/ng-store-chat": "file:pack/ucap-ng-store-chat-0.0.66.tgz", - "@ucap/ng-store-group": "file:pack/ucap-ng-store-group-0.0.22.tgz", - "@ucap/ng-store-organization": "file:pack/ucap-ng-store-organization-0.0.20.tgz", - "@ucap/ng-ui": "file:pack/ucap-ng-ui-0.0.97.tgz", - "@ucap/ng-ui-authentication": "file:pack/ucap-ng-ui-authentication-0.0.29.tgz", - "@ucap/ng-ui-chat": "file:pack/ucap-ng-ui-chat-0.0.72.tgz", - "@ucap/ng-ui-group": "file:pack/ucap-ng-ui-group-0.0.78.tgz", + "@ucap/ng-store-authentication": "file:pack/ucap-ng-store-authentication-0.0.17.tgz", + "@ucap/ng-store-call": "file:pack/ucap-ng-store-call-0.0.7.tgz", + "@ucap/ng-store-chat": "file:pack/ucap-ng-store-chat-0.0.74.tgz", + "@ucap/ng-store-group": "file:pack/ucap-ng-store-group-0.0.25.tgz", + "@ucap/ng-store-organization": "file:pack/ucap-ng-store-organization-0.0.23.tgz", + "@ucap/ng-ui": "file:pack/ucap-ng-ui-0.0.108.tgz", + "@ucap/ng-ui-authentication": "file:pack/ucap-ng-ui-authentication-0.0.32.tgz", + "@ucap/ng-ui-call": "file:pack/ucap-ng-ui-call-0.0.15.tgz", + "@ucap/ng-ui-chat": "file:pack/ucap-ng-ui-chat-0.0.80.tgz", + "@ucap/ng-ui-group": "file:pack/ucap-ng-ui-group-0.0.87.tgz", "@ucap/ng-ui-material": "file:pack/ucap-ng-ui-material-0.0.4.tgz", - "@ucap/ng-ui-organization": "file:pack/ucap-ng-ui-organization-0.0.202.tgz", + "@ucap/ng-ui-organization": "file:pack/ucap-ng-ui-organization-0.0.222.tgz", "@ucap/ng-ui-skin-default": "file:pack/ucap-ng-ui-skin-default-0.0.1.tgz", "@ucap/ng-web-socket": "file:pack/ucap-ng-web-socket-0.0.2.tgz", "@ucap/ng-web-storage": "file:pack/ucap-ng-web-storage-0.0.3.tgz", - "@ucap/pi": "~0.0.8", - "@ucap/protocol": "~0.0.11", - "@ucap/protocol-authentication": "~0.0.5", - "@ucap/protocol-buddy": "~0.0.5", - "@ucap/protocol-event": "~0.0.6", - "@ucap/protocol-file": "~0.0.6", - "@ucap/protocol-group": "~0.0.5", - "@ucap/protocol-info": "~0.0.9", - "@ucap/protocol-inner": "~0.0.4", - "@ucap/protocol-option": "~0.0.7", - "@ucap/protocol-ping": "~0.0.4", - "@ucap/protocol-query": "~0.0.5", - "@ucap/protocol-room": "~0.0.7", - "@ucap/protocol-service": "~0.0.4", - "@ucap/protocol-status": "~0.0.5", - "@ucap/protocol-sync": "~0.0.6", + "@ucap/pi": "~0.0.9", + "@ucap/protocol": "~0.0.20", + "@ucap/protocol-authentication": "~0.0.7", + "@ucap/protocol-buddy": "~0.0.6", + "@ucap/protocol-event": "~0.0.11", + "@ucap/protocol-file": "~0.0.7", + "@ucap/protocol-group": "~0.0.6", + "@ucap/protocol-info": "~0.0.10", + "@ucap/protocol-inner": "~0.0.5", + "@ucap/protocol-option": "~0.0.9", + "@ucap/protocol-ping": "~0.0.7", + "@ucap/protocol-query": "~0.0.8", + "@ucap/protocol-room": "~0.0.9", + "@ucap/protocol-service": "~0.0.5", + "@ucap/protocol-status": "~0.0.6", + "@ucap/protocol-sync": "~0.0.8", "@ucap/protocol-umg": "~0.0.5", "@ucap/ui-scss": "~0.0.5", - "@ucap/web-socket": "~0.0.5", - "@ucap/web-storage": "~0.0.5", + "@ucap/web-socket": "~0.0.10", + "@ucap/web-storage": "~0.0.9", "autolinker": "^3.13.0", "axios": "^0.19.2", "babel-loader": "^8.1.0", diff --git a/projects/api-contact/README.md b/projects/api-contact/README.md new file mode 100644 index 0000000..34e6ace --- /dev/null +++ b/projects/api-contact/README.md @@ -0,0 +1,24 @@ +# ApiContact + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.11. + +## Code scaffolding + +Run `ng generate component component-name --project api-contact` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project api-contact`. +> Note: Don't forget to add `--project api-contact` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build api-contact` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build api-contact`, go to the dist folder `cd dist/api-contact` and run `npm publish`. + +## Running unit tests + +Run `ng test api-contact` 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-contact/karma.conf.js b/projects/api-contact/karma.conf.js new file mode 100644 index 0000000..007eefd --- /dev/null +++ b/projects/api-contact/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-contact'), + 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-contact/ng-package.json b/projects/api-contact/ng-package.json new file mode 100644 index 0000000..10ed991 --- /dev/null +++ b/projects/api-contact/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/api-contact", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/api-contact": "@ucap/api-contact", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/api-contact/package.json b/projects/api-contact/package.json new file mode 100644 index 0000000..3e6a20d --- /dev/null +++ b/projects/api-contact/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-api-contact", + "version": "0.0.2", + "publishConfig": { + "registry": "https://nexus.loafle.net/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/api-contact": "~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-contact/src/lib/config/token.ts b/projects/api-contact/src/lib/config/token.ts new file mode 100644 index 0000000..5091178 --- /dev/null +++ b/projects/api-contact/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng api-contact config of module' +); diff --git a/projects/api-contact/src/lib/contact-api.module.ts b/projects/api-contact/src/lib/contact-api.module.ts new file mode 100644 index 0000000..1842e96 --- /dev/null +++ b/projects/api-contact/src/lib/contact-api.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/api-contact'; + +import { _MODULE_CONFIG } from './config/token'; + +import { ContactApiService } from './services/contact-api.service'; + +const SERVICES = [ContactApiService]; + +@NgModule({}) +export class ContactApiRootModule {} + +@NgModule({}) +export class ContactApiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: ContactApiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/api-contact/src/lib/services/contact-api.service.spec.ts b/projects/api-contact/src/lib/services/contact-api.service.spec.ts new file mode 100644 index 0000000..3ae578b --- /dev/null +++ b/projects/api-contact/src/lib/services/contact-api.service.spec.ts @@ -0,0 +1,24 @@ +import { TestBed } from '@angular/core/testing'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +import { ContactApiService } from './contact-api.service'; +import { _MODULE_CONFIG } from '../config/token'; + +describe('ContactApiService', () => { + let service: ContactApiService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + { provide: _MODULE_CONFIG, useValue: _MODULE_CONFIG }, + { provide: AXIOS_INSTANCE, useValue: AXIOS_INSTANCE } + ] + }); + service = TestBed.inject(ContactApiService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/api-contact/src/lib/services/contact-api.service.ts b/projects/api-contact/src/lib/services/contact-api.service.ts new file mode 100644 index 0000000..04b88ae --- /dev/null +++ b/projects/api-contact/src/lib/services/contact-api.service.ts @@ -0,0 +1,24 @@ +import { Injectable, Inject } from '@angular/core'; + +import { AxiosInstance } from 'axios'; + +import { + ModuleConfig, + ContactApiService as UcapContactApiService +} from '@ucap/api-contact'; + +import { AXIOS_INSTANCE } from '@ucap/ng-core'; + +import { _MODULE_CONFIG } from '../config/token'; + +@Injectable({ + providedIn: 'root' +}) +export class ContactApiService extends UcapContactApiService { + constructor( + @Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig, + @Inject(AXIOS_INSTANCE) axios: AxiosInstance + ) { + super(moduleConfig, axios); + } +} diff --git a/projects/api-contact/src/public-api.ts b/projects/api-contact/src/public-api.ts new file mode 100644 index 0000000..d9aa6e3 --- /dev/null +++ b/projects/api-contact/src/public-api.ts @@ -0,0 +1,6 @@ +/* + * Public API Surface of api-contact + */ + +export * from './lib/services/contact-api.service'; +export * from './lib/contact-api.module'; diff --git a/projects/api-contact/src/test.ts b/projects/api-contact/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/api-contact/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-contact/tsconfig.lib.json b/projects/api-contact/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/api-contact/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-contact/tsconfig.lib.prod.json b/projects/api-contact/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/api-contact/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/api-contact/tsconfig.spec.json b/projects/api-contact/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/api-contact/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-contact/tslint.json b/projects/api-contact/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/api-contact/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-webex/README.md b/projects/api-webex/README.md new file mode 100644 index 0000000..d2b0968 --- /dev/null +++ b/projects/api-webex/README.md @@ -0,0 +1,24 @@ +# ApiWebex + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.11. + +## Code scaffolding + +Run `ng generate component component-name --project api-webex` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project api-webex`. +> Note: Don't forget to add `--project api-webex` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build api-webex` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build api-webex`, go to the dist folder `cd dist/api-webex` and run `npm publish`. + +## Running unit tests + +Run `ng test api-webex` 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-webex/karma.conf.js b/projects/api-webex/karma.conf.js new file mode 100644 index 0000000..bb53472 --- /dev/null +++ b/projects/api-webex/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-webex'), + 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-webex/ng-package.json b/projects/api-webex/ng-package.json new file mode 100644 index 0000000..3d75fba --- /dev/null +++ b/projects/api-webex/ng-package.json @@ -0,0 +1,11 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/api-webex", + "lib": { + "entryFile": "src/public-api.ts", + "umdModuleIds": { + "@ucap/api-webex": "@ucap/api-webex", + "@ucap/ng-core": "@ucap/ng-core" + } + } +} diff --git a/projects/api-webex/package.json b/projects/api-webex/package.json new file mode 100644 index 0000000..b2e853a --- /dev/null +++ b/projects/api-webex/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-api-webex", + "version": "0.0.1", + "publishConfig": { + "registry": "https://nexus.loafle.net/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/api-webex": "~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-webex/src/lib/config/token.ts b/projects/api-webex/src/lib/config/token.ts new file mode 100644 index 0000000..16b91f4 --- /dev/null +++ b/projects/api-webex/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-api-webex config of module' +); diff --git a/projects/api-webex/src/lib/services/conference.service.ts b/projects/api-webex/src/lib/services/conference.service.ts new file mode 100644 index 0000000..24e46d4 --- /dev/null +++ b/projects/api-webex/src/lib/services/conference.service.ts @@ -0,0 +1,17 @@ +import { Injectable, Inject } from '@angular/core'; + +import { + ModuleConfig, + ConferenceService as UcapConferenceService +} from '@ucap/api-webex'; + +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-webex/src/lib/webex-api.module.ts b/projects/api-webex/src/lib/webex-api.module.ts new file mode 100644 index 0000000..31e93c8 --- /dev/null +++ b/projects/api-webex/src/lib/webex-api.module.ts @@ -0,0 +1,24 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { ModuleConfig } from '@ucap/api-webex'; + +import { _MODULE_CONFIG } from './config/token'; + +import { ConferenceService } from './services/conference.service'; + +const SERVICES = [ConferenceService]; + +@NgModule({}) +export class WebexApiRootModule {} + +@NgModule({}) +export class WebexApiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: WebexApiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/api-webex/src/public-api.ts b/projects/api-webex/src/public-api.ts new file mode 100644 index 0000000..1429632 --- /dev/null +++ b/projects/api-webex/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of api-webex + */ + +export * from './lib/services/conference.service'; + +export * from './lib/webex-api.module'; diff --git a/projects/api-webex/src/test.ts b/projects/api-webex/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/api-webex/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-webex/tsconfig.lib.json b/projects/api-webex/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/api-webex/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-webex/tsconfig.lib.prod.json b/projects/api-webex/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/api-webex/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/api-webex/tsconfig.spec.json b/projects/api-webex/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/api-webex/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-webex/tslint.json b/projects/api-webex/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/api-webex/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/package.json b/projects/core/package.json index cb84913..363973f 100644 --- a/projects/core/package.json +++ b/projects/core/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-core", - "version": "0.0.7", + "version": "0.0.9", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, diff --git a/projects/core/src/lib/utils/string.util.ts b/projects/core/src/lib/utils/string.util.ts index 14d32d5..fa1be49 100644 --- a/projects/core/src/lib/utils/string.util.ts +++ b/projects/core/src/lib/utils/string.util.ts @@ -5,12 +5,43 @@ 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 - ); + // const forbidden = /[\{\}\[\]\/?.;:|\)*~`!^+<>@\#$%&\\\=\(\'\"]/g.test( + // control.value + // ); + const forbidden = new RegExp( + '[\\{\\}\\[\\]\\/?.;:|\\)*~`!^+<>@\\#$%&\\\\\\=\\(\\\'\\"|\\u00a1-' + + '\\u00ac|\\u00ae-\\u00ff|\\u0100-\\u017f|\\u0180-\\u024f|\\' + + 'u1e02-\\u1ef3|\\u0259-\\u0292|\\u02b0-\\u02ff|\\u0370-\\u' + + '03ff|\\u1f00-\\u1fff|\\u0400-\\u04ff|\\u2013-\\u204a|\\u2' + + '010-\\u206f|\\u2070-\\u209f|\\u20a0-\\u20bf|\\u2100-\\u21' + + '4f|\\u2150-\\u218f|\\u2190-\\u21ff|\\u2200-\\u22ff|\\u230' + + '0-\\u23ff|\\u2460-\\u24ff|\\u2500-\\u257f|\\u2580-\\u259f' + + '|\\u25a0-\\u25ff|\\u2600-\\u26ff|\\u3041-\\u309f|\\u30a0-' + + '\\u30ff|\\u3100-\\u312f|\\u2e80-\\u2eff|\\u31c0-\\u31ef|\\' + + 'u3000-\\u303f|\\u3200-\\u32ff|\\uff00-\\uffef|\\u3190-\\u' + + '319f|\\u2f00-\\u2fdf|\\u31f0-\\u31ff|\\ua4d0-\\ua4ff|\\ua' + + '700-\\ua71f|\\ufe50-\\ufe6f|\\ufe10-\\ufe1f|\\ua000-\\ua4' + + '8c|\\ua490-\\ua4cf|\\u33c2-\\u33d8]', + 'g' + ).test(control.value); return forbidden ? { groupName: { value: control.value } } : null; }; return fn; } + + public static getProfileSubDir(info: string): string { + let imgUrl: string; + const tempImgInfo: string = info.toLowerCase(); + const findIdx = tempImgInfo.indexOf('profileimage'); + + if (findIdx > -1) { + const startIdx = info.indexOf('/', findIdx); + imgUrl = info.substring(startIdx); + } else { + imgUrl = info; + } + + return imgUrl; + } } diff --git a/projects/i18n/ng-package.json b/projects/i18n/ng-package.json index 33898e4..39cfbf7 100644 --- a/projects/i18n/ng-package.json +++ b/projects/i18n/ng-package.json @@ -6,6 +6,7 @@ "umdModuleIds": { "i18next": "i18next", "@ucap/core": "@ucap/core", + "@ucap/i18n": "@ucap/i18n", "@ucap/ng-logger": "@ucap/ng-logger" } } diff --git a/projects/i18n/package.json b/projects/i18n/package.json index 7359097..182103a 100644 --- a/projects/i18n/package.json +++ b/projects/i18n/package.json @@ -1,12 +1,13 @@ { "name": "@ucap/ng-i18n", - "version": "0.0.6", + "version": "0.0.8", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, "peerDependencies": { "@angular/common": "^9.0.6", "@angular/core": "^9.0.6", + "@ucap/i18n": "~0.0.1", "i18next": "^19.3.2", "tslib": "^1.10.0" } diff --git a/projects/i18n/src/lib/i18n.module.ts b/projects/i18n/src/lib/i18n.module.ts index 575a276..8803c62 100644 --- a/projects/i18n/src/lib/i18n.module.ts +++ b/projects/i18n/src/lib/i18n.module.ts @@ -1,7 +1,8 @@ import { NgModule, ModuleWithProviders } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { ModuleConfig } from './config/module-config'; +import { ModuleConfig } from '@ucap/i18n'; + import { _MODULE_CONFIG } from './config/token'; import { I18nPipe } from './pipes/i18n.pipe'; diff --git a/projects/i18n/src/lib/services/i18n.service.ts b/projects/i18n/src/lib/services/i18n.service.ts index d2eb81e..dcfff73 100644 --- a/projects/i18n/src/lib/services/i18n.service.ts +++ b/projects/i18n/src/lib/services/i18n.service.ts @@ -1,254 +1,16 @@ -import { BehaviorSubject, Subject, Observable } from 'rxjs'; -import { share } from 'rxjs/operators'; +import { Injectable, OnDestroy, Inject } from '@angular/core'; -import { Injectable, OnDestroy } from '@angular/core'; +import { ModuleConfig, I18nService as UCAPI18nService } from '@ucap/i18n'; -import i18next, { - InitOptions, - Module, - Newable, - ThirdPartyModule, - TOptions, - StringMap -} from 'i18next'; - -import { LogService } from '@ucap/ng-logger'; - -import { I18nextEvents } from '../types/i18next.event'; +import { _MODULE_CONFIG } from '../config/token'; @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(private logService: LogService) { - 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()); +export class I18nService extends UCAPI18nService implements OnDestroy { + constructor(@Inject(_MODULE_CONFIG) moduleConfig: ModuleConfig) { + super(moduleConfig); } 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(options); - } - - changeLanguage(lng: string) { - const self = this; - return new Promise((resolve, reject) => { - if (lng === self.currentLng) { - resolve(); - return; - } - - i18next - .changeLanguage(lng) - .then(v => { - self.logService.info('changeLanguage', lng); - 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 }); - }); + this.destroy(); } } diff --git a/projects/i18n/src/lib/types/i18next.event.ts b/projects/i18n/src/lib/types/i18next.event.ts deleted file mode 100644 index 1008d46..0000000 --- a/projects/i18n/src/lib/types/i18next.event.ts +++ /dev/null @@ -1,9 +0,0 @@ -export enum I18nextEvents { - initialized = 'initialized', - loaded = 'loaded', - failedLoading = 'failedLoading', - languageChanged = 'languageChanged', - missingKey = 'missingKey', - added = 'added', - removed = 'removed' -} diff --git a/projects/i18n/src/public-api.ts b/projects/i18n/src/public-api.ts index 07d0cdb..b4a077a 100644 --- a/projects/i18n/src/public-api.ts +++ b/projects/i18n/src/public-api.ts @@ -2,13 +2,12 @@ * Public API Surface of i18n */ -export * from './lib/config/module-config'; +export * from './lib/config/token'; 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/native/ng-package.json b/projects/native/ng-package.json index c8eece6..470d23d 100644 --- a/projects/native/ng-package.json +++ b/projects/native/ng-package.json @@ -5,6 +5,7 @@ "entryFile": "src/public-api.ts", "umdModuleIds": { "@ucap/core": "@ucap/core", + "@ucap/domain-status": "@ucap/domain-status", "@ucap/native": "@ucap/native", "@ucap/ng-core": "@ucap/ng-core" } diff --git a/projects/native/package.json b/projects/native/package.json index 8d7f76e..46630bc 100644 --- a/projects/native/package.json +++ b/projects/native/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-native", - "version": "0.0.5", + "version": "0.0.12", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, @@ -8,6 +8,7 @@ "@angular/common": "^9.0.2", "@angular/core": "^9.0.2", "@ucap/core": "~0.0.1", + "@ucap/domain-status": "~0.0.1", "@ucap/native": "~0.0.1", "axios": "^0.19.2", "rxjs": "~6.5.4", diff --git a/projects/native/src/lib/services/browser-native.service.ts b/projects/native/src/lib/services/browser-native.service.ts index 23bf113..dfb7de7 100644 --- a/projects/native/src/lib/services/browser-native.service.ts +++ b/projects/native/src/lib/services/browser-native.service.ts @@ -2,7 +2,9 @@ import { Subject, BehaviorSubject } from 'rxjs'; import { AxiosInstance } from 'axios'; -import { StatusCode, FileUtil } from '@ucap/core'; +import { FileUtil } from '@ucap/core'; +import { StatusCode } from '@ucap/domain-status'; + import { NativeService, UpdateCheckConfig, @@ -11,7 +13,8 @@ import { WindowState, WindowIdle, NotificationRequest, - NotificationType + NotificationType, + AppInitInfo } from '@ucap/native'; import { NotificationService } from './notification.service'; @@ -228,34 +231,46 @@ export class BrowserNativeService extends NativeService { }); } + window_state(): Promise { + return new Promise((resolve, reject) => { + try { + resolve(undefined); + } catch (error) { + reject(error); + } + }); + } window_onState$(): BehaviorSubject { return super.window_onState$(); } + window_focused(): Promise { + return new Promise((resolve, reject) => { + try { + resolve(document.hasFocus()); + } catch (error) { + reject(error); + } + }); + } window_onFocus$(): BehaviorSubject { if (!this._window_onFocusSubject) { - // tslint:disable-next-line: variable-name - const __this = this; - const onFocus = (event: Event) => { - __this._window_onFocusSubject.next(true); - }; - const onBlur = (event: Event) => { - __this._window_onFocusSubject.next(false); - }; - window.addEventListener('focus', onFocus); - window.addEventListener('blur', onBlur); - - super.window_onFocus$().subscribe( - (focus) => {}, - (error) => {}, - () => { - window.removeEventListener('focus', onFocus); - window.removeEventListener('blur', onBlur); - } + window.addEventListener( + 'focus', + this._window_onFocus$CallBack.bind(this) ); + window.addEventListener('blur', this._window_onFocus$CallBack.bind(this)); + this.window_focused().then((focused) => { + this._window_onFocusSubject.next(focused); + }); } return super.window_onFocus$(); } + _window_onFocus$CallBack(event: Event) { + if (!!this._window_onFocusSubject) { + this._window_onFocusSubject.next(document.hasFocus()); + } + } window_close(): Promise { return new Promise((resolve, reject) => { try { @@ -274,7 +289,7 @@ export class BrowserNativeService extends NativeService { } }); } - window_maximize(): Promise { + window_maximize(altKey: boolean = false): Promise { return new Promise((resolve, reject) => { try { resolve(); @@ -293,28 +308,14 @@ export class BrowserNativeService extends NativeService { this._idle_checker = new WindowIdleChecker({ limitTime, - onIdle: () => { + onChange: (idle: WindowIdle) => { if (!!this._idle_onStateSubject) { - this._idle_onStateSubject.next(WindowIdle.Idle); - } - }, - onActive: () => { - if (!!this._idle_onStateSubject) { - this._idle_onStateSubject.next(WindowIdle.Active); - } - }, - onHide: () => { - if (!!this._idle_onStateSubject) { - this._idle_onStateSubject.next(WindowIdle.Idle); - } - }, - onShow: () => { - if (!!this._idle_onStateSubject) { - this._idle_onStateSubject.next(WindowIdle.Active); + this._idle_onStateSubject.next(idle); } } }); this._idle_checker.start(); + super.idle_onState$(); resolve(); } catch (error) { @@ -367,10 +368,10 @@ export class BrowserNativeService extends NativeService { } }); } - app_postInit(): Promise { - return new Promise((resolve, reject) => { + app_postInit(): Promise { + return new Promise((resolve, reject) => { try { - resolve(); + resolve({}); } catch (error) { reject(error); } @@ -510,12 +511,25 @@ export class BrowserNativeService extends NativeService { app_onShowSetting$(): Subject { return super.app_onShowSetting$(); } + app_onExit$(): Subject { + return super.app_onExit$(); + } - chat_onOpen$(): BehaviorSubject { + chat_openRoom(openUrl: string): Promise { + return new Promise((resolve, reject) => { + try { + window.open(openUrl); + resolve(); + } catch (error) { + reject(error); + } + }); + } + chat_onOpen$(): Subject { return super.chat_onOpen$(); } - message_onOpen$(): BehaviorSubject { + message_onOpen$(): Subject { return super.message_onOpen$(); } } @@ -523,49 +537,72 @@ export class BrowserNativeService extends NativeService { interface WindowIdleCheckerConfig { limitTime?: number; events?: string[]; - onIdle?: () => void; - onActive?: () => void; - visibilityEvents?: string[]; - onHide?: () => void; - onShow?: () => void; + onChange?: (idle: WindowIdle) => void; } const defaultWindowIdleCheckerConfig: WindowIdleCheckerConfig = { limitTime: 5 * 60 * 1000, events: ['mousemove', 'keydown', 'mousedown', 'touchstart'], - onIdle: () => {}, - onActive: () => {}, - onHide: () => {}, - onShow: () => {}, - visibilityEvents: [ - 'visibilitychange', - 'webkitvisibilitychange', - 'mozvisibilitychange', - 'msvisibilitychange' - ] + onChange: (idle: WindowIdle) => {} }; -const WEBKIT_HIDDEN = 'webkitHidden'; -const MOZ_HIDDEN = 'mozHidden'; -const MS_HIDDEN = 'msHidden'; +abstract class WindowListener { + // tslint:disable-next-line: variable-name + protected events: string[]; -class WindowIdleChecker { + constructor() {} + + start() { + // tslint:disable-next-line: variable-name + const __this = this; + this._addEventListerner(this.events, this._onEvent.bind(this)); + } + + stop() { + this._removeEventListerner(this.events, this._onEvent.bind(this)); + } + + protected abstract onEvent(event: Event): void; + + private _onEvent(event: Event) { + this.onEvent(event); + } + + private _addEventListerner( + events: string[], + callback: (event: Event) => void + ) { + events.forEach((e) => { + window.addEventListener(e, callback); + }); + } + + private _removeEventListerner( + events: string[], + callback: (event: Event) => void + ) { + events.forEach((e) => { + window.removeEventListener(e, callback); + }); + } +} + +class WindowIdleChecker extends WindowListener { // tslint:disable-next-line: variable-name private _timerId: any; // tslint:disable-next-line: variable-name private _status: WindowIdle; // tslint:disable-next-line: variable-name - private _visible: boolean; - // tslint:disable-next-line: variable-name private _started: boolean; constructor( // tslint:disable-next-line: variable-name private _config: WindowIdleCheckerConfig ) { + super(); this._config = Object.assign({}, defaultWindowIdleCheckerConfig, _config); this._status = WindowIdle.Active; - this._visible = true; + this.events = this._config.events; } start() { @@ -576,7 +613,7 @@ class WindowIdleChecker { this._timerId = setInterval(() => { if (WindowIdle.Active === this._status) { this._status = WindowIdle.Idle; - this._config.onIdle(); + this._config.onChange(this._status); } }, this._config.limitTime); @@ -584,14 +621,7 @@ class WindowIdleChecker { this._started = true; } - this._addEventListerner(this._config.events, this._onActive); - - if (!!this._config.onShow || !!this._config.onHide) { - this._addEventListerner( - this._config.visibilityEvents, - this._onVisibility - ); - } + super.start(); } stop() { @@ -601,14 +631,7 @@ class WindowIdleChecker { } if (!!this._started) { - this._removeEventListerner(this._config.events, this._onActive); - - if (!!this._config.onShow || !!this._config.onHide) { - this._removeEventListerner( - this._config.visibilityEvents, - this._onVisibility - ); - } + super.stop(); } } @@ -620,47 +643,10 @@ class WindowIdleChecker { this.start(); } - private _onActive(event: Event) { + protected onEvent(event: Event): void { if (WindowIdle.Idle === this._status) { this._status = WindowIdle.Active; - this._config.onActive(); + this._config.onChange(this._status); } } - - private _onVisibility(event: Event) { - if ( - !!document.hidden || - !!document[WEBKIT_HIDDEN] || - !!document[MOZ_HIDDEN] || - !!document[MS_HIDDEN] - ) { - if (this._visible) { - this._visible = false; - this._config.onHide(); - } - } else { - if (!this._visible) { - this._visible = true; - this._config.onShow(); - } - } - } - - private _addEventListerner( - events: string[], - callback: (event: Event) => void - ) { - events.forEach((e) => { - window.addEventListener(e, callback.bind(this)); - }); - } - - private _removeEventListerner( - events: string[], - callback: (event: Event) => void - ) { - events.forEach((e) => { - window.removeEventListener(e, callback.bind(this)); - }); - } } diff --git a/projects/store-authentication/ng-package.json b/projects/store-authentication/ng-package.json index 18c565a..4a18902 100644 --- a/projects/store-authentication/ng-package.json +++ b/projects/store-authentication/ng-package.json @@ -7,6 +7,7 @@ "@ngrx/store": "@ngrx/store", "@ngrx/effects": "@ngrx/effects", "@ucap/core": "@ucap/core", + "@ucap/domain-authentication": "@ucap/domain-authentication", "@ucap/api-public": "@ucap/api-public", "@ucap/api-external": "@ucap/api-external", "@ucap/pi": "@ucap/pi", diff --git a/projects/store-authentication/package.json b/projects/store-authentication/package.json index 577275c..d9d9d4e 100644 --- a/projects/store-authentication/package.json +++ b/projects/store-authentication/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-store-authentication", - "version": "0.0.14", + "version": "0.0.17", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, @@ -11,6 +11,7 @@ "@ngrx/entity": "^9.0.0", "@ngrx/store": "^9.0.0", "@ucap/core": "~0.0.1", + "@ucap/domain-authentication": "~0.0.1", "@ucap/api-public": "~0.0.1", "@ucap/api-external": "~0.0.1", "@ucap/pi": "~0.0.1", diff --git a/projects/store-authentication/src/lib/store/authorization/actions.ts b/projects/store-authentication/src/lib/store/authorization/actions.ts index 8b71c07..523268b 100644 --- a/projects/store-authentication/src/lib/store/authorization/actions.ts +++ b/projects/store-authentication/src/lib/store/authorization/actions.ts @@ -1,7 +1,10 @@ import { createAction, props } from '@ngrx/store'; -import { AuthRequest, AuthResponse } from '@ucap/protocol-query'; -import { RegViewRequest, RegViewResponse } from '@ucap/protocol-option'; +import { UserPermission } from '@ucap/domain-authorization'; + +import { AuthRequest } from '@ucap/protocol-query'; +import { RegViewRequest } from '@ucap/protocol-option'; +import { Settings } from '@ucap/domain-authentication'; /** * retrieve authorization information @@ -15,7 +18,7 @@ export const auth = createAction( */ export const authSuccess = createAction( '[ucap::authentication::authorization] auth Success', - props<{ res: AuthResponse }>() + props<{ userPermission: UserPermission }>() ); /** * Failure of auth request @@ -37,7 +40,7 @@ export const regView = createAction( */ export const regViewSuccess = createAction( '[ucap::authentication::authorization] regView Success', - props<{ res: RegViewResponse }>() + props<{ settings: Settings }>() ); /** * Failure of regView request diff --git a/projects/store-authentication/src/lib/store/authorization/effects.ts b/projects/store-authentication/src/lib/store/authorization/effects.ts index e954234..4ac5ee3 100644 --- a/projects/store-authentication/src/lib/store/authorization/effects.ts +++ b/projects/store-authentication/src/lib/store/authorization/effects.ts @@ -27,7 +27,7 @@ export class Effects { sessionCreatedForAuth$ = createEffect(() => { return this.actions$.pipe( ofType(LoginActions.sessionCreated), - map(action => + map((action) => auth({ req: { deviceType: action.loginSession.deviceType } }) ) ); @@ -36,15 +36,15 @@ export class Effects { auth$ = createEffect(() => this.actions$.pipe( ofType(auth), - map(action => action.req), - exhaustMap(req => { + map((action) => action.req), + exhaustMap((req) => { return this.queryProtocolService.auth(req).pipe( map((res: AuthResponse) => { return authSuccess({ - res + userPermission: res.userPermission }); }), - catchError(error => of(authFailure({ error }))) + catchError((error) => of(authFailure({ error }))) ); }) ) @@ -53,22 +53,22 @@ export class Effects { sessionCreatedForRegView$ = createEffect(() => { return this.actions$.pipe( ofType(LoginActions.sessionCreated), - map(action => regView({ req: {} })) + map((action) => regView({ req: {} })) ); }); regView$ = createEffect(() => this.actions$.pipe( ofType(regView), - map(action => action.req), - exhaustMap(req => { + map((action) => action.req), + exhaustMap((req) => { return this.optionProtocolService.regView(req).pipe( map((res: RegViewResponse) => { return regViewSuccess({ - res + settings: res.settings }); }), - catchError(error => of(regViewFailure({ error }))) + catchError((error) => of(regViewFailure({ error }))) ); }) ) diff --git a/projects/store-authentication/src/lib/store/authorization/reducers.ts b/projects/store-authentication/src/lib/store/authorization/reducers.ts index 481c3ca..397cb6b 100644 --- a/projects/store-authentication/src/lib/store/authorization/reducers.ts +++ b/projects/store-authentication/src/lib/store/authorization/reducers.ts @@ -8,18 +8,18 @@ export const reducer = createReducer( on(authSuccess, (state, action) => { return { ...state, - authResponse: { - ...state.authResponse, - ...action.res + userPermission: { + ...state.userPermission, + ...action.userPermission } }; }), on(regViewSuccess, (state, action) => { return { ...state, - regViewResponse: { - ...state.regViewResponse, - ...action.res + settings: { + ...state.settings, + ...action.settings } }; }) diff --git a/projects/store-authentication/src/lib/store/authorization/state.ts b/projects/store-authentication/src/lib/store/authorization/state.ts index 7a2cadc..a899c4c 100644 --- a/projects/store-authentication/src/lib/store/authorization/state.ts +++ b/projects/store-authentication/src/lib/store/authorization/state.ts @@ -1,27 +1,24 @@ import { Selector, createSelector } from '@ngrx/store'; -import { AuthResponse } from '@ucap/protocol-query'; -import { RegViewResponse } from '@ucap/protocol-option'; +import { Settings } from '@ucap/domain-authentication'; +import { UserPermission } from '@ucap/domain-authorization'; export interface State { - authResponse?: AuthResponse | null; - regViewResponse: RegViewResponse | null; + userPermission: UserPermission | null; + settings: Settings | null; } export const initialState: State = { - authResponse: null, - regViewResponse: null + userPermission: null, + settings: null }; export function selectors(selector: Selector) { return { - authResponse: createSelector( + userPermission: createSelector( selector, - (state: State) => state.authResponse + (state: State) => state.userPermission ), - regViewResponse: createSelector( - selector, - (state: State) => state.regViewResponse - ) + settings: createSelector(selector, (state: State) => state.settings) }; } diff --git a/projects/store-authentication/src/lib/store/configuration/actions.ts b/projects/store-authentication/src/lib/store/configuration/actions.ts index 400dfc2..9d9771c 100644 --- a/projects/store-authentication/src/lib/store/configuration/actions.ts +++ b/projects/store-authentication/src/lib/store/configuration/actions.ts @@ -1,7 +1,8 @@ import { createAction, props } from '@ngrx/store'; -import { VersionInfo2Response, VersionInfo2Request } from '@ucap/api-public'; -import { UrlInfoRequest, UrlInfoResponse } from '@ucap/api-external'; +import { VersionInfo2Request } from '@ucap/api-public'; +import { UrlInfoRequest } from '@ucap/api-external'; +import { VersionInfo, UrlInfo } from '@ucap/domain-authentication'; export const versionInfo2 = createAction( '[ucap::authentication::configuration] versionInfo2', @@ -10,7 +11,7 @@ export const versionInfo2 = createAction( export const versionInfo2Success = createAction( '[ucap::authentication::configuration] versionInfo2 Success', - props<{ res: VersionInfo2Response }>() + props<{ versionInfo: VersionInfo }>() ); export const versionInfo2Failure = createAction( @@ -25,7 +26,7 @@ export const urlInfo = createAction( export const urlInfoSuccess = createAction( '[ucap::authentication::configuration] urlInfo Success', - props<{ res: UrlInfoResponse }>() + props<{ urlInfo: UrlInfo }>() ); export const urlInfoFailure = createAction( diff --git a/projects/store-authentication/src/lib/store/configuration/reducers.ts b/projects/store-authentication/src/lib/store/configuration/reducers.ts index 3bafb90..3e6600b 100644 --- a/projects/store-authentication/src/lib/store/configuration/reducers.ts +++ b/projects/store-authentication/src/lib/store/configuration/reducers.ts @@ -7,18 +7,18 @@ export const reducer = createReducer( on(versionInfo2Success, (state, action) => { return { ...state, - versionInfo2Response: { - ...state.versionInfo2Response, - ...action.res + versionInfo: { + ...state.versionInfo, + ...action.versionInfo } }; }), on(urlInfoSuccess, (state, action) => { return { ...state, - urlInfoResponse: { - ...state.urlInfoResponse, - ...action.res + urlInfo: { + ...state.urlInfo, + ...action.urlInfo } }; }) diff --git a/projects/store-authentication/src/lib/store/configuration/state.ts b/projects/store-authentication/src/lib/store/configuration/state.ts index 756126c..af34af0 100644 --- a/projects/store-authentication/src/lib/store/configuration/state.ts +++ b/projects/store-authentication/src/lib/store/configuration/state.ts @@ -1,27 +1,20 @@ import { Selector, createSelector } from '@ngrx/store'; -import { VersionInfo2Response } from '@ucap/api-public'; -import { UrlInfoResponse } from '@ucap/api-external'; +import { VersionInfo, UrlInfo } from '@ucap/domain-authentication'; export interface State { - versionInfo2Response: VersionInfo2Response | null; - urlInfoResponse: UrlInfoResponse | null; + versionInfo: VersionInfo | null; + urlInfo: UrlInfo | null; } export const initialState: State = { - versionInfo2Response: null, - urlInfoResponse: null + versionInfo: null, + urlInfo: null }; export function selectors(selector: Selector) { return { - versionInfo2Response: createSelector( - selector, - (state: State) => state.versionInfo2Response - ), - urlInfoResponse: createSelector( - selector, - (state: State) => state.urlInfoResponse - ) + versionInfo: createSelector(selector, (state: State) => state.versionInfo), + urlInfo: createSelector(selector, (state: State) => state.urlInfo) }; } diff --git a/projects/store-authentication/src/lib/store/login/actions.ts b/projects/store-authentication/src/lib/store/login/actions.ts index c8c9078..912756f 100644 --- a/projects/store-authentication/src/lib/store/login/actions.ts +++ b/projects/store-authentication/src/lib/store/login/actions.ts @@ -1,12 +1,9 @@ import { createAction, props } from '@ngrx/store'; -import { LoginSession } from '@ucap/core'; +import { LoginSession, LoginInfo } from '@ucap/domain-authentication'; + import { Login2Response } from '@ucap/pi'; -import { - LoginRequest, - LoginResponse, - LogoutResponse -} from '@ucap/protocol-authentication'; +import { LoginRequest, LogoutResponse } from '@ucap/protocol-authentication'; /** * request of web login @@ -58,7 +55,7 @@ export const login = createAction( export const loginSuccess = createAction( '[ucap::authentication::login] login Success', props<{ - res: LoginResponse; + loginInfo: LoginInfo; loginSession: LoginSession; }>() ); @@ -95,7 +92,7 @@ export const logoutFailure = createAction( export const sessionCreated = createAction( '[ucap::authentication::login] session Created', props<{ - res: LoginResponse; + loginInfo: LoginInfo; loginSession: LoginSession; }>() ); diff --git a/projects/store-authentication/src/lib/store/login/effects.ts b/projects/store-authentication/src/lib/store/login/effects.ts index ae5169a..608ecab 100644 --- a/projects/store-authentication/src/lib/store/login/effects.ts +++ b/projects/store-authentication/src/lib/store/login/effects.ts @@ -30,22 +30,22 @@ export class Effects { () => this.actions$.pipe( ofType(loginSuccess), - map((params) => params.res), - tap((loginRes) => { + map((result) => result.loginInfo), + tap((loginInfo) => { this.store.dispatch( UserActions.init({ user: { - info: loginRes.userInfo, - companyCode: loginRes.companyCode, - departmentCode: loginRes.departmentCode, - statusMessage1: loginRes.statusMessage1, - statusMessage2: loginRes.statusMessage2, - statusMessage3: loginRes.statusMessage3, - madn: loginRes.madn, - hardPhoneSadn: loginRes.hardPhoneSadn, - fmcSadn: loginRes.fmcSadn, - pbxIndex: loginRes.pbxIndex, - talkWithMeBotSeq: loginRes.talkWithMeBotSeq + info: loginInfo.userInfo, + companyCode: loginInfo.companyCode, + departmentCode: loginInfo.departmentCode, + statusMessage1: loginInfo.statusMessage1, + statusMessage2: loginInfo.statusMessage2, + statusMessage3: loginInfo.statusMessage3, + madn: loginInfo.madn, + hardPhoneSadn: loginInfo.hardPhoneSadn, + fmcSadn: loginInfo.fmcSadn, + pbxIndex: loginInfo.pbxIndex, + talkWithMeBotSeq: loginInfo.talkWithMeBotSeq } }) ); diff --git a/projects/store-authentication/src/lib/store/login/reducers.ts b/projects/store-authentication/src/lib/store/login/reducers.ts index aee7688..15322c0 100644 --- a/projects/store-authentication/src/lib/store/login/reducers.ts +++ b/projects/store-authentication/src/lib/store/login/reducers.ts @@ -8,7 +8,7 @@ export const reducer = createReducer( on(loginSuccess, (state, action) => { return { ...state, - loginRes: action.res + loginInfo: action.loginInfo }; }), diff --git a/projects/store-authentication/src/lib/store/login/state.ts b/projects/store-authentication/src/lib/store/login/state.ts index d50a8a3..0bb9693 100644 --- a/projects/store-authentication/src/lib/store/login/state.ts +++ b/projects/store-authentication/src/lib/store/login/state.ts @@ -1,17 +1,17 @@ import { Selector, createSelector } from '@ngrx/store'; -import { LoginResponse } from '@ucap/protocol-authentication'; +import { LoginInfo } from '@ucap/domain-authentication'; export interface State { - loginRes: LoginResponse | null; + loginInfo: LoginInfo | null; } export const initialState: State = { - loginRes: null + loginInfo: null }; export function selectors(selector: Selector) { return { - loginRes: createSelector(selector, (state: State) => state.loginRes) + loginInfo: createSelector(selector, (state: State) => state.loginInfo) }; } diff --git a/projects/store-call/README.md b/projects/store-call/README.md new file mode 100644 index 0000000..b895f97 --- /dev/null +++ b/projects/store-call/README.md @@ -0,0 +1,24 @@ +# StoreCall + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.11. + +## Code scaffolding + +Run `ng generate component component-name --project store-call` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project store-call`. +> Note: Don't forget to add `--project store-call` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build store-call` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build store-call`, go to the dist folder `cd dist/store-call` and run `npm publish`. + +## Running unit tests + +Run `ng test store-call` 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-call/karma.conf.js b/projects/store-call/karma.conf.js new file mode 100644 index 0000000..f490de1 --- /dev/null +++ b/projects/store-call/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-call'), + 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-call/ng-package.json b/projects/store-call/ng-package.json new file mode 100644 index 0000000..caf80cd --- /dev/null +++ b/projects/store-call/ng-package.json @@ -0,0 +1,17 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/store-call", + "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/domain-call": "@ucap/domain-call", + "@ucap/api-contact": "@ucap/api-contact", + "@ucap/ng-api-contact": "@ucap/ng-api-contact" + } + } +} diff --git a/projects/store-call/package.json b/projects/store-call/package.json new file mode 100644 index 0000000..4ba4414 --- /dev/null +++ b/projects/store-call/package.json @@ -0,0 +1,16 @@ +{ + "name": "@ucap/ng-store-call", + "version": "0.0.7", + "publishConfig": { + "registry": "https://nexus.loafle.net/repository/npm-ucap/" + }, + "peerDependencies": { + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@ucap/core": "~0.0.1", + "@ucap/api-contact": "~0.0.1", + "@ucap/ng-api-contact": "~0.0.1", + "@ucap/domain-call": "~0.0.2", + "tslib": "^1.10.0" + } +} diff --git a/projects/store-call/src/lib/call-store.module.ts b/projects/store-call/src/lib/call-store.module.ts new file mode 100644 index 0000000..2f68f25 --- /dev/null +++ b/projects/store-call/src/lib/call-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 CallStoreRootModule {} + +@NgModule({}) +export class CallStoreModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: CallStoreRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }] + }; + } +} diff --git a/projects/store-call/src/lib/config/module-config.ts b/projects/store-call/src/lib/config/module-config.ts new file mode 100644 index 0000000..1b04cbf --- /dev/null +++ b/projects/store-call/src/lib/config/module-config.ts @@ -0,0 +1,6 @@ +import { ModuleConfig as CoreModuleConfig } from '@ucap/core'; + +// tslint:disable-next-line: no-empty-interface +export interface ModuleConfig extends CoreModuleConfig { + historyRequestDefaultCount?: number; +} diff --git a/projects/store-call/src/lib/config/token.ts b/projects/store-call/src/lib/config/token.ts new file mode 100644 index 0000000..6e5252c --- /dev/null +++ b/projects/store-call/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-store-call config of module' +); diff --git a/projects/store-call/src/lib/store/call/actions.ts b/projects/store-call/src/lib/store/call/actions.ts new file mode 100644 index 0000000..94967b9 --- /dev/null +++ b/projects/store-call/src/lib/store/call/actions.ts @@ -0,0 +1,55 @@ +import { createAction, props } from '@ngrx/store'; + +import { + CallHistoryInfoRequest, + CallHistoryInfoResponse, + CallHistoryDelRequest, + CallHistoryDelResponse +} from '@ucap/api-contact'; + +import { AuthRequest, AuthResponse } from '@ucap/protocol-query'; +// import { RegViewRequest, RegViewResponse } from '@ucap/protocol-option'; + +/** + * retrieve call history + */ +export const callHistory = createAction( + '[ucap::call::call] call history', + props<{ req: CallHistoryInfoRequest }>() +); +/** + * Success of call history request + */ +export const callHistorySuccess = createAction( + '[ucap::call::call] call history Success', + props<{ res: CallHistoryInfoResponse; remainHistory: boolean }>() +); +/** + * Failure of call history request + */ +export const callHistoryFailure = createAction( + '[ucap::call::call] call history Failure', + props<{ error: any }>() +); + +/** + * retrieve delete call history + */ +export const del = createAction( + '[ucap::call::call] delete call history', + props<{ req: CallHistoryDelRequest }>() +); +/** + * Success of delete call history request + */ +export const delSuccess = createAction( + '[ucap::call::call] delete call history Success', + props<{ callLogSeq: number }>() +); +/** + * Failure of delete call history request + */ +export const delFailure = createAction( + '[ucap::call::call] delete call history Failure', + props<{ error: any }>() +); diff --git a/projects/store-call/src/lib/store/call/effects.ts b/projects/store-call/src/lib/store/call/effects.ts new file mode 100644 index 0000000..08f1326 --- /dev/null +++ b/projects/store-call/src/lib/store/call/effects.ts @@ -0,0 +1,91 @@ +import { Injectable, Inject } from '@angular/core'; + +import { of } from 'rxjs'; +import { map, catchError, exhaustMap } from 'rxjs/operators'; +import { Actions, createEffect, ofType } from '@ngrx/effects'; + +import { + CallHistoryInfoResponse, + CallHistoryDelResponse +} from '@ucap/api-contact'; +import { ContactApiService } from '@ucap/ng-api-contact'; +import { StatusCode } from '@ucap/api'; + +import { + callHistory, + callHistorySuccess, + callHistoryFailure, + del, + delSuccess, + delFailure +} from './actions'; +import { ModuleConfig } from '../../config/module-config'; +import { _MODULE_CONFIG } from '../../config/token'; + +@Injectable() +export class Effects { + callHistory$ = createEffect(() => + this.actions$.pipe( + ofType(callHistory), + map((action) => action.req), + exhaustMap((req) => { + return this.contactApiService.callHistoryList(req).pipe( + map((res: CallHistoryInfoResponse) => { + if (res.statusCode === StatusCode.Success) { + const remainHistory = + !!res.historyList && + res.historyList.length >= + this.moduleConfig.historyRequestDefaultCount + ? true + : false; + return callHistorySuccess({ + res, + remainHistory + }); + } else { + return callHistoryFailure({ error: res.errorMessage }); + } + }), + catchError((error) => of(callHistoryFailure({ error }))) + ); + }) + ) + ); + + del$ = createEffect(() => + this.actions$.pipe( + ofType(del), + map((action) => action.req), + exhaustMap((req) => { + const callLogSeq = !!req.targetReceiverCallLogSeq + ? Number(req.targetReceiverCallLogSeq) + : !!req.targetSenderCallLogSeq + ? Number(req.targetSenderCallLogSeq) + : undefined; + + if (!!callLogSeq) { + return this.contactApiService.callHistoryDel(req).pipe( + map((res: CallHistoryDelResponse) => { + if (res.statusCode === StatusCode.Success) { + return delSuccess({ + callLogSeq + }); + } else { + return delFailure({ error: 'error statusCode' }); + } + }), + catchError((error) => of(delFailure({ error }))) + ); + } else { + return of(delFailure({ error: 'not target calllogseq' })); + } + }) + ) + ); + + constructor( + private actions$: Actions, + @Inject(_MODULE_CONFIG) private moduleConfig: ModuleConfig, + private contactApiService: ContactApiService + ) {} +} diff --git a/projects/store-call/src/lib/store/call/reducers.ts b/projects/store-call/src/lib/store/call/reducers.ts new file mode 100644 index 0000000..c232ded --- /dev/null +++ b/projects/store-call/src/lib/store/call/reducers.ts @@ -0,0 +1,29 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState, adapterCallHistory } from './state'; +import { callHistorySuccess, delSuccess } from './actions'; + +export const reducer = createReducer( + initialState, + + on(callHistorySuccess, (state, action) => { + return { + ...state, + searchDate: action.res.searchDate, + searchDirection: action.res.searchDirection, + historyList: adapterCallHistory.upsertMany(action.res.historyList, { + ...state.historyList + }), + remainHistory: action.remainHistory + }; + }), + + on(delSuccess, (state, action) => { + return { + ...state, + historyList: adapterCallHistory.removeOne(action.callLogSeq, { + ...state.historyList + }) + }; + }) +); diff --git a/projects/store-call/src/lib/store/call/state.ts b/projects/store-call/src/lib/store/call/state.ts new file mode 100644 index 0000000..8c57df1 --- /dev/null +++ b/projects/store-call/src/lib/store/call/state.ts @@ -0,0 +1,49 @@ +import { Selector, createSelector } from '@ngrx/store'; + +import { SearchDirectionByDateType, CallHistory } from '@ucap/domain-call'; +import { EntityState, createEntityAdapter } from '@ngrx/entity'; + +export interface CallHistoryState extends EntityState {} +export const adapterCallHistory = createEntityAdapter({ + selectId: (callHistory) => callHistory.callLogSeq, + sortComparer: (a, b) => { + return b.callLogSeq - a.callLogSeq; + } +}); +const callHistoryInitialState: CallHistoryState = adapterCallHistory.getInitialState(); +const { + selectAll: selectAllForCallHistory, + selectEntities: selectEntitiesForCallHistory, + selectIds: selectIdsForCallHistory, + selectTotal: selectTotalForCallHistory +} = adapterCallHistory.getSelectors(); + +export interface State { + searchDate?: string | null; + searchDirection?: SearchDirectionByDateType | null; + remainHistory?: boolean | null; + historyList: CallHistoryState; +} + +export const initialState: State = { + searchDate: null, + searchDirection: null, + remainHistory: null, + historyList: callHistoryInitialState +}; + +export function selectors(selector: Selector) { + const selectCallHistory = createSelector( + selector, + (state: State) => state.historyList + ); + + return { + callHistory: createSelector(selectCallHistory, selectAllForCallHistory), + searchDate: createSelector(selector, (state: State) => state.searchDate), + searchDirection: createSelector( + selector, + (state: State) => state.searchDirection + ) + }; +} diff --git a/projects/store-call/src/lib/store/common/actions.ts b/projects/store-call/src/lib/store/common/actions.ts new file mode 100644 index 0000000..4c386d6 --- /dev/null +++ b/projects/store-call/src/lib/store/common/actions.ts @@ -0,0 +1,3 @@ +import { createAction } from '@ngrx/store'; + +export const init = createAction('[ucap::call::common] init'); diff --git a/projects/store-call/src/lib/store/common/effects.ts b/projects/store-call/src/lib/store/common/effects.ts new file mode 100644 index 0000000..4306694 --- /dev/null +++ b/projects/store-call/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-call/src/lib/store/common/reducers.ts b/projects/store-call/src/lib/store/common/reducers.ts new file mode 100644 index 0000000..c02394c --- /dev/null +++ b/projects/store-call/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-call/src/lib/store/common/state.ts b/projects/store-call/src/lib/store/common/state.ts new file mode 100644 index 0000000..aacfe4f --- /dev/null +++ b/projects/store-call/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-call/src/lib/store/effects.ts b/projects/store-call/src/lib/store/effects.ts new file mode 100644 index 0000000..81fe0e6 --- /dev/null +++ b/projects/store-call/src/lib/store/effects.ts @@ -0,0 +1,6 @@ +import { Type } from '@angular/core'; + +import { Effects as CommonEffects } from './common/effects'; +import { Effects as CallEffects } from './call/effects'; + +export const effects: Type[] = [CommonEffects, CallEffects]; diff --git a/projects/store-call/src/lib/store/reducers.ts b/projects/store-call/src/lib/store/reducers.ts new file mode 100644 index 0000000..89812de --- /dev/null +++ b/projects/store-call/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 CallReducer } from './call/reducers'; + +export function reducers(state: any | undefined, action: Action) { + return combineReducers({ + common: CommonReducer, + call: CallReducer + })(state, action); +} diff --git a/projects/store-call/src/lib/store/state.ts b/projects/store-call/src/lib/store/state.ts new file mode 100644 index 0000000..b0708c4 --- /dev/null +++ b/projects/store-call/src/lib/store/state.ts @@ -0,0 +1,21 @@ +import { createFeatureSelector, createSelector } from '@ngrx/store'; + +import * as CommonState from './common/state'; +import * as CallState from './call/state'; + +export const KEY_FEATURE = 'call'; + +export interface State { + common: CommonState.State; + call: CallState.State; +} + +export const Selector = createFeatureSelector(KEY_FEATURE); + +export const CommonSelector = CommonState.selectors( + createSelector(Selector, (state: State) => state.common) +); + +export const CallSelector = CallState.selectors( + createSelector(Selector, (state: State) => state.call) +); diff --git a/projects/store-call/src/public-api.ts b/projects/store-call/src/public-api.ts new file mode 100644 index 0000000..7d44103 --- /dev/null +++ b/projects/store-call/src/public-api.ts @@ -0,0 +1,14 @@ +/* + * Public API Surface of store-call + */ + +import * as CommonActions from './lib/store/common/actions'; +import * as CallActions from './lib/store/call/actions'; + +export * from './lib/config/module-config'; + +export { CommonActions, CallActions }; + +export * from './lib/store/state'; + +export * from './lib/call-store.module'; diff --git a/projects/store-call/src/test.ts b/projects/store-call/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/store-call/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-call/tsconfig.lib.json b/projects/store-call/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/store-call/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-call/tsconfig.lib.prod.json b/projects/store-call/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/store-call/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/store-call/tsconfig.spec.json b/projects/store-call/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/store-call/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-call/tslint.json b/projects/store-call/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/projects/store-call/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/ng-package.json b/projects/store-chat/ng-package.json index be06674..8940746 100644 --- a/projects/store-chat/ng-package.json +++ b/projects/store-chat/ng-package.json @@ -8,6 +8,9 @@ "@ngrx/store": "@ngrx/store", "@ngrx/entity": "@ngrx/entity", "@ngrx/effects": "@ngrx/effects", + "@ucap/domain-common": "@ucap/domain-common", + "@ucap/domain-organization": "@ucap/domain-organization", + "@ucap/domain-chat": "@ucap/domain-chat", "@ucap/api": "@ucap/api", "@ucap/pi": "@ucap/pi", "@ucap/protocol-event": "@ucap/protocol-event", @@ -16,6 +19,7 @@ "@ucap/protocol-room": "@ucap/protocol-room", "@ucap/protocol-sync": "@ucap/protocol-sync", "@ucap/ng-i18n": "@ucap/ng-i18n", + "@ucap/ng-core": "@ucap/ng-core", "@ucap/ng-api-common": "@ucap/ng-api-common", "@ucap/ng-protocol-room": "@ucap/ng-protocol-room", "@ucap/ng-protocol-event": "@ucap/ng-protocol-event", diff --git a/projects/store-chat/package.json b/projects/store-chat/package.json index 10f2c79..f5de7be 100644 --- a/projects/store-chat/package.json +++ b/projects/store-chat/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-store-chat", - "version": "0.0.66", + "version": "0.0.74", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, @@ -8,12 +8,23 @@ "@angular/common": "^9.0.2", "@angular/core": "^9.0.2", "@ucap/core": "~0.0.1", + "@ucap/domain-common": "~0.0.1", + "@ucap/domain-organization": "~0.0.1", + "@ucap/domain-chat": "~0.0.1", + "@ucap/api": "~0.0.1", + "@ucap/api-common": "~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-i18n": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "@ucap/ng-api-common": "~0.0.1", + "@ucap/ng-protocol-event": "~0.0.1", "@ucap/ng-protocol-room": "~0.0.1", + "@ucap/ng-protocol-file": "~0.0.1", "@ucap/ng-protocol-sync": "~0.0.1", + "@ucap/ng-store-organization": "~0.0.1", "@ucap/ng-store-authentication": "~0.0.1", "tslib": "^1.10.0" } diff --git a/projects/store-chat/src/lib/store/chatting/actions.ts b/projects/store-chat/src/lib/store/chatting/actions.ts index 2abe134..47c1ba8 100644 --- a/projects/store-chat/src/lib/store/chatting/actions.ts +++ b/projects/store-chat/src/lib/store/chatting/actions.ts @@ -1,11 +1,16 @@ import { createAction, props } from '@ngrx/store'; -import { DeviceType } from '@ucap/core'; - +import { DeviceType } from '@ucap/domain-common'; import { Info, + FileDownloadInfo, + FileInfo, + EventJson, + RoomEventInfo +} from '@ucap/domain-chat'; + +import { InfoRequest as EventInfoRequest, - InfoResponse as EventInfoResponse, SendRequest as SendEventRequest, SendResponse as SendEventResponse, ReadRequest, @@ -17,7 +22,6 @@ import { ReadNotification, CancelNotification, DelNotification, - EventJson, ReadResponse, SendRequest } from '@ucap/protocol-event'; @@ -25,8 +29,6 @@ import { import { InfoRequest as FileInfoRequest, InfoResponse as FileInfoResponse, - FileDownloadInfo, - FileInfo, DownCheckRequest, DownCheckResponse } from '@ucap/protocol-file'; @@ -45,7 +47,7 @@ export const eventsSuccess = createAction( '[ucap::chat::chatting] events Success', props<{ eventInfoList: Info[]; - res: EventInfoResponse; + roomEventInfo: RoomEventInfo; remainEvent: boolean; }>() ); diff --git a/projects/store-chat/src/lib/store/chatting/effects.ts b/projects/store-chat/src/lib/store/chatting/effects.ts index 5c5bb1a..fb90f2a 100644 --- a/projects/store-chat/src/lib/store/chatting/effects.ts +++ b/projects/store-chat/src/lib/store/chatting/effects.ts @@ -7,7 +7,6 @@ import { exhaustMap, concatMap, withLatestFrom, - debounceTime, mergeMap, take } from 'rxjs/operators'; @@ -18,8 +17,22 @@ import { Store, select } from '@ngrx/store'; import { Actions, createEffect, ofType } from '@ngrx/effects'; import { Dictionary } from '@ngrx/entity'; +import moment from 'moment'; + +import { LocaleCode } from '@ucap/domain-common'; import { + Info, RoomType, + FileType, + EventType, + FileEventJson, + EventJson +} from '@ucap/domain-chat'; + +import { StatusCode } from '@ucap/api'; +import { FileTalkShareRequest, FileTalkShareResponse } from '@ucap/api-common'; + +import { OpenResponse as CreateResponse, Open3Response as CreateTimerResponse, ExitResponse as DeleteResponse, @@ -28,23 +41,12 @@ import { import { InfoRequest, ReadResponse, - FileType, - EventType, DelResponse, SendResponse, CancelResponse, - FileEventJson, - decodeFileEventJson, - Info, - EventJson + decodeFileEventJson } from '@ucap/protocol-event'; -import moment from 'moment'; - -import { LocaleCode } from '@ucap/core'; -import { StatusCode } from '@ucap/api'; -import { FileTalkShareRequest, FileTalkShareResponse } from '@ucap/api-common'; - import { I18nService } from '@ucap/ng-i18n'; import { CommonApiService } from '@ucap/ng-api-common'; import { EventProtocolService } from '@ucap/ng-protocol-event'; @@ -103,14 +105,14 @@ export class Effects { map((action) => action.req), switchMap((req) => { return this.eventProtocolService.info(req).pipe( - map((res) => { - if (!!res && !!res.res) { - const infoList = res.infoList; + map((result) => { + if (!!result && !!result.res) { + const infoList = result.infoList; this.store.dispatch( eventsSuccess({ eventInfoList: infoList, - res: res.res, + roomEventInfo: result.res.roomEventInfo, remainEvent: infoList.length === req.requestCount ? true : false }) @@ -135,7 +137,7 @@ export class Effects { this.store.dispatch( fileInfos({ req: { - roomId: res.res.roomId, + roomId: result.res.roomEventInfo.roomId, // { 파일타입 } cf) I : 이미지 V: 동영상 F: 파일 "" 빈값이면 모든 타입을 내려줌 type: FileType.All } @@ -488,9 +490,9 @@ export class Effects { ofType(forwarForFileEvent), withLatestFrom( this.store.pipe(select(UserSelector.user)), - this.store.pipe(select(LoginSelector.loginRes)) + this.store.pipe(select(LoginSelector.loginInfo)) ), - tap(([actionReq, user, loginRes]) => { + tap(([actionReq, user, loginInfo]) => { const fileEventJson: FileEventJson = decodeFileEventJson( actionReq.sendReq.sentMessage ); @@ -498,7 +500,7 @@ export class Effects { const req: FileTalkShareRequest = { userSeq: String(user.info.seq), deviceType: actionReq.deviceType, - token: loginRes.tokenString, + token: loginInfo.tokenString, attachmentsSeq: fileEventJson.attachmentSeq.toString(), roomId: actionReq.trgtRoomId, synapKey: '' @@ -690,7 +692,6 @@ export class Effects { () => { return this.actions$.pipe( ofType(RoomActions.selectedRoomSuccess), - debounceTime(300), tap((action) => { const requestCount = this.moduleConfig?.eventRequestInitCount || 50; const req: InfoRequest = { diff --git a/projects/store-chat/src/lib/store/chatting/reducers.ts b/projects/store-chat/src/lib/store/chatting/reducers.ts index 4eb83a5..a9d177f 100644 --- a/projects/store-chat/src/lib/store/chatting/reducers.ts +++ b/projects/store-chat/src/lib/store/chatting/reducers.ts @@ -1,7 +1,6 @@ import { createReducer, on } from '@ngrx/store'; -import { FileInfo } from '@ucap/protocol-file'; -import { Info, EventJson, EventType } from '@ucap/protocol-event'; +import { Info, FileInfo, EventType, EventJson } from '@ucap/domain-chat'; import * as RoomActions from '../room/actions'; @@ -29,7 +28,7 @@ export const reducer = createReducer( initialState, on(eventsSuccess, (state, action) => { - const roomId = action.res.roomId; + const roomId = action.roomEventInfo.roomId; const chatting = state.chattings.entities[roomId] || {}; let trgtChatting: Chatting = { @@ -82,7 +81,7 @@ export const reducer = createReducer( eventList: adapterEventList.upsertMany(trgtEventInfoList, { ...trgtChatting.eventList }), - eventStatus: action.res, + eventStatus: action.roomEventInfo, remainEvent: trgtChatting.remainEvent === false ? false : action.remainEvent, // 재조회를 위한 처리. eventListProcessing: false @@ -278,12 +277,13 @@ export const reducer = createReducer( }; // 파일이 회수되었을 경우 fileInfoList 에서도 삭제 한다. - if (chatting.eventList.entities[eventSeq].type === EventType.File) { + const currentEvent = chatting.eventList.entities[eventSeq]; + if (!!currentEvent && currentEvent.type === EventType.File) { const fileInfoList = chatting.fileInfoList; if (!!chatting && !!fileInfoList) { fileInfoList.ids.forEach((id) => { const fileInfo: FileInfo = fileInfoList.entities[id]; - if (action.eventSeq === fileInfo.eventSeq) { + if (!!fileInfo && action.eventSeq === fileInfo.eventSeq) { fileInfoSeq = id; } }); diff --git a/projects/store-chat/src/lib/store/chatting/state.ts b/projects/store-chat/src/lib/store/chatting/state.ts index 2329448..d761155 100644 --- a/projects/store-chat/src/lib/store/chatting/state.ts +++ b/projects/store-chat/src/lib/store/chatting/state.ts @@ -1,8 +1,13 @@ import { Selector, createSelector } from '@ngrx/store'; -import { EntityState, createEntityAdapter, Dictionary } from '@ngrx/entity'; +import { EntityState, createEntityAdapter } from '@ngrx/entity'; -import { InfoResponse, Info, EventJson } from '@ucap/protocol-event'; -import { FileInfo, FileDownloadInfo } from '@ucap/protocol-file'; +import { + Info, + FileInfo, + FileDownloadInfo, + EventJson, + RoomEventInfo +} from '@ucap/domain-chat'; export interface EventListState extends EntityState> {} export interface FileInfoListState extends EntityState {} @@ -63,7 +68,7 @@ export interface Chatting { eventListProcessing?: boolean; eventList?: EventListState; - eventStatus?: InfoResponse | null; + eventStatus?: RoomEventInfo | null; remainEvent?: boolean | null; fileInfoListProcessing?: boolean; diff --git a/projects/store-chat/src/lib/store/room/actions.ts b/projects/store-chat/src/lib/store/room/actions.ts index 23d69c5..d817af6 100644 --- a/projects/store-chat/src/lib/store/room/actions.ts +++ b/projects/store-chat/src/lib/store/room/actions.ts @@ -1,10 +1,9 @@ import { createAction, props } from '@ngrx/store'; -import { LocaleCode } from '@ucap/core'; +import { LocaleCode } from '@ucap/domain-common'; +import { RoomInfo, UserInfo, UserInfoShort } from '@ucap/domain-chat'; import { - RoomInfo, - UserInfo as RoomUserInfo, InfoRequest as RoomRequest, InviteNotification, OpenRequest as CreateRequest, @@ -23,8 +22,6 @@ import { ExitForcingResponse, UpdateTimerSetRequest, UpdateTimerSetResponse, - UserInfo, - UserInfoShort, InfoResponse } from '@ucap/protocol-room'; @@ -76,7 +73,7 @@ export const roomsSuccess = createAction( props<{ roomList: RoomInfo[]; roomUserInfoMap: { - [param: string]: RoomUserInfo[]; + [param: string]: UserInfo[]; }; syncDate: string; }>() @@ -100,7 +97,7 @@ export const rooms2Success = createAction( roomUserInfoMap: { [param: string]: { userInfoShortList: UserInfoShort[]; - userInfoList: RoomUserInfo[]; + userInfoList: UserInfo[]; }; }; syncDate: string; @@ -128,7 +125,7 @@ export const roomSuccess = createAction( '[ucap::chat::room] room Success', props<{ roomInfo: RoomInfo; - userInfoList: RoomUserInfo[]; + userInfoList: UserInfo[]; }>() ); /** @@ -148,7 +145,7 @@ export const room2Success = createAction( roomInfo: RoomInfo; roomUserInfo: { userInfoShortList: UserInfoShort[]; - userInfoList: RoomUserInfo[]; + userInfoList: UserInfo[]; }; }>() ); diff --git a/projects/store-chat/src/lib/store/room/effects.ts b/projects/store-chat/src/lib/store/room/effects.ts index 819f3f7..4514325 100644 --- a/projects/store-chat/src/lib/store/room/effects.ts +++ b/projects/store-chat/src/lib/store/room/effects.ts @@ -14,7 +14,10 @@ import { Injectable } from '@angular/core'; import { Store, select } from '@ngrx/store'; import { Actions, ofType, createEffect } from '@ngrx/effects'; -import { LocaleCode } from '@ucap/core'; +import { LocaleCode } from '@ucap/domain-common'; +import { UserInfoUpdateType } from '@ucap/domain-organization'; +import { UserInfoShort, UserInfo, RoomInfo } from '@ucap/domain-chat'; + import { OpenResponse as CreateResponse, Open3Response as CreateTimerResponse, @@ -24,13 +27,11 @@ import { InviteResponse, ExitForcingResponse, UpdateTimerSetResponse, - InfoRequest, - UserInfoShort, - UserInfo, - RoomInfo + InfoRequest } from '@ucap/protocol-room'; -import { UserNotification, UserInfoUpdateType } from '@ucap/protocol-info'; +import { UserNotification } from '@ucap/protocol-info'; +import { StringUtil } from '@ucap/ng-core'; import { I18nService } from '@ucap/ng-i18n'; import { RoomProtocolService } from '@ucap/ng-protocol-room'; import { SyncProtocolService } from '@ucap/ng-protocol-sync'; @@ -606,13 +607,7 @@ export class Effects { userInfoS?: UserInfoShort[]; }[] = []; - const findIdx = noti.info.indexOf('ProfileImage'); - let imgInfo: string = noti.info; - - if (findIdx > -1) { - const startIdx = noti.info.indexOf('/', findIdx); - imgInfo = noti.info.substring(startIdx); - } + const imgInfo = StringUtil.getProfileSubDir(noti.info); for (const ru of roomUsers) { ru.userInfos.every((u) => { diff --git a/projects/store-chat/src/lib/store/room/reducers.ts b/projects/store-chat/src/lib/store/room/reducers.ts index 9086ed3..f8458b9 100644 --- a/projects/store-chat/src/lib/store/room/reducers.ts +++ b/projects/store-chat/src/lib/store/room/reducers.ts @@ -1,7 +1,6 @@ import { createReducer, on } from '@ngrx/store'; -import { RoomInfo } from '@ucap/protocol-room'; -import { Info, EventJson } from '@ucap/protocol-event'; +import { Info, RoomInfo, EventJson } from '@ucap/domain-chat'; import * as ChattingActions from '../chatting/actions'; import { ChatUtil } from '../../utils/chat.util'; @@ -49,12 +48,42 @@ export const reducer = createReducer( // 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; + const matchedInfo = action.roomList.find( + (item) => item.roomId === value.roomId + ); + if (!!matchedInfo) { + unreadTotal += isNaN(matchedInfo.noReadCnt) ? 0 : matchedInfo.noReadCnt; + } else { + unreadTotal += isNaN(value.noReadCnt) ? 0 : value.noReadCnt; + } } + /** + * Correcting expiredFileStdSeq. + * 대화방이 열린 상태에서 새로고침 할 때 'RoomInfo' 보다 'SyncRoomInfo'가 나중에 유입되어 expiredFileStdSeq 값을 0으로 덮어쓰는 문제로 보정코드 삽입. + * 'SyncRoomInfo' 에서는 expiredFileStdSeq 값이 0으로 고정되어 내려온다.(DB 부하 문제) + */ + const trgtRoomList = action.roomList.map((roomInfo) => { + let rtnValue: RoomInfo = roomInfo; + + // tslint:disable-next-line: forin + for (const key in state.rooms.entities) { + const value = state.rooms.entities[key]; + if (value.roomId === roomInfo.roomId && value.expiredFileStdSeq > 0) { + rtnValue = { + ...rtnValue, + expiredFileStdSeq: value.expiredFileStdSeq + }; + break; + } + } + + return rtnValue; + }); + return { ...state, - rooms: adapterRoom.upsertMany(action.roomList, { + rooms: adapterRoom.upsertMany(trgtRoomList, { ...state.rooms, syncDate: action.syncDate }), @@ -92,13 +121,42 @@ export const reducer = createReducer( // 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; + const matchedInfo = action.roomList.find( + (item) => item.roomId === value.roomId + ); + if (!!matchedInfo) { + unreadTotal += isNaN(matchedInfo.noReadCnt) ? 0 : matchedInfo.noReadCnt; + } else { + unreadTotal += isNaN(value.noReadCnt) ? 0 : value.noReadCnt; + } } - action.roomList.map((item) => (unreadTotal += item.noReadCnt)); + + /** + * Correcting expiredFileStdSeq. + * 대화방이 열린 상태에서 새로고침 할 때 'RoomInfo' 보다 'SyncRoomInfo'가 나중에 유입되어 expiredFileStdSeq 값을 0으로 덮어쓰는 문제로 보정코드 삽입. + * 'SyncRoomInfo' 에서는 expiredFileStdSeq 값이 0으로 고정되어 내려온다.(DB 부하 문제) + */ + const trgtRoomList = action.roomList.map((roomInfo) => { + let rtnValue: RoomInfo = roomInfo; + + // tslint:disable-next-line: forin + for (const key in state.rooms.entities) { + const value = state.rooms.entities[key]; + if (value.roomId === roomInfo.roomId && value.expiredFileStdSeq > 0) { + rtnValue = { + ...rtnValue, + expiredFileStdSeq: value.expiredFileStdSeq + }; + break; + } + } + + return rtnValue; + }); return { ...state, - rooms: adapterRoom.upsertMany(action.roomList, { + rooms: adapterRoom.upsertMany(trgtRoomList, { ...state.rooms, syncDate: action.syncDate }), diff --git a/projects/store-chat/src/lib/store/room/state.ts b/projects/store-chat/src/lib/store/room/state.ts index 34eae34..2a67cf0 100644 --- a/projects/store-chat/src/lib/store/room/state.ts +++ b/projects/store-chat/src/lib/store/room/state.ts @@ -7,7 +7,7 @@ import { RoomInfo, UserInfo as RoomUserInfo, UserInfoShort as RoomUserInfoShort -} from '@ucap/protocol-room'; +} from '@ucap/domain-chat'; export interface RoomState extends EntityState { syncDate: string; diff --git a/projects/store-chat/src/lib/utils/chat.util.ts b/projects/store-chat/src/lib/utils/chat.util.ts index ddaf59e..10276b6 100644 --- a/projects/store-chat/src/lib/utils/chat.util.ts +++ b/projects/store-chat/src/lib/utils/chat.util.ts @@ -1,5 +1,4 @@ import { - EventJson, EventType, FileEventJson, FileType, @@ -9,8 +8,9 @@ import { TranslationEventJson, MassTranslationEventJson, PlanEventJson, - PlanContentType -} from '@ucap/protocol-event'; + PlanContentType, + EventJson +} from '@ucap/domain-chat'; export class ChatUtil { public static convertFinalEventMessage( diff --git a/projects/store-group/ng-package.json b/projects/store-group/ng-package.json index 5679a33..9231048 100644 --- a/projects/store-group/ng-package.json +++ b/projects/store-group/ng-package.json @@ -9,12 +9,14 @@ "@ngrx/effects": "@ngrx/effects", "moment": "moment", "@ucap/core": "@ucap/core", + "@ucap/domain-organization": "@ucap/domain-organization", "@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/protocol-info": "@ucap/protocol-info", + "@ucap/ng-core": "@ucap/ng-core", "@ucap/ng-protocol-buddy": "@ucap/ng-protocol-buddy", "@ucap/ng-protocol-group": "@ucap/ng-protocol-group", "@ucap/ng-protocol-sync": "@ucap/ng-protocol-sync", diff --git a/projects/store-group/package.json b/projects/store-group/package.json index 8a3b090..9a34d0a 100644 --- a/projects/store-group/package.json +++ b/projects/store-group/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-store-group", - "version": "0.0.22", + "version": "0.0.25", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, @@ -8,6 +8,7 @@ "@angular/common": "^9.0.2", "@angular/core": "^9.0.2", "@ucap/core": "~0.0.1", + "@ucap/domain-organization": "~0.0.1", "@ucap/protocol-buddy": "~0.0.1", "@ucap/protocol-group": "~0.0.1", "@ucap/protocol-query": "~0.0.1", @@ -16,9 +17,9 @@ "@ucap/ng-protocol-buddy": "~0.0.1", "@ucap/ng-protocol-group": "~0.0.1", "@ucap/ng-protocol-sync": "~0.0.1", + "@ucap/ng-protocol-info": "~0.0.1", "@ucap/ng-store-organization": "~0.0.1", "@ucap/ng-store-authentication": "~0.0.1", - "@ucap/ng-protocol-info": "~0.0.1", "tslib": "^1.10.0" } } diff --git a/projects/store-group/src/lib/store/buddy/actions.ts b/projects/store-group/src/lib/store/buddy/actions.ts index 99a612f..9f17a90 100644 --- a/projects/store-group/src/lib/store/buddy/actions.ts +++ b/projects/store-group/src/lib/store/buddy/actions.ts @@ -1,6 +1,6 @@ import { createAction, props } from '@ngrx/store'; -import { UserInfo } from '@ucap/protocol-sync'; +import { UserInfoF } from '@ucap/domain-organization'; import { AddRequest as BuddyAddRequest, AddResponse as BuddyAddResponse, @@ -24,7 +24,7 @@ export const buddy2 = createAction('[ucap::group::buddy] buddy2'); */ export const buddy2Success = createAction( '[ucap::group::buddy] buddy2 Success', - props<{ buddyList: UserInfo[]; syncDate: string }>() + props<{ buddyList: UserInfoF[]; syncDate: string }>() ); /** * Failure of buddy2 request diff --git a/projects/store-group/src/lib/store/buddy/effects.ts b/projects/store-group/src/lib/store/buddy/effects.ts index ffc97c2..345c88e 100644 --- a/projects/store-group/src/lib/store/buddy/effects.ts +++ b/projects/store-group/src/lib/store/buddy/effects.ts @@ -25,7 +25,7 @@ import { } from '@ucap/protocol-info'; import { SyncProtocolService } from '@ucap/ng-protocol-sync'; - +import { InfoProtocolService } from '@ucap/ng-protocol-info'; import { BuddyProtocolService } from '@ucap/ng-protocol-buddy'; import { @@ -62,7 +62,6 @@ import { BuddySelector, GroupSelector } from '../state'; import { ModuleConfig } from '../../config/module-config'; import { _MODULE_CONFIG } from '../../config/token'; -import { InfoProtocolService } from '@ucap/ng-protocol-info'; @Injectable() export class Effects { diff --git a/projects/store-group/src/lib/store/buddy/reducers.ts b/projects/store-group/src/lib/store/buddy/reducers.ts index ff0f236..f5359f3 100644 --- a/projects/store-group/src/lib/store/buddy/reducers.ts +++ b/projects/store-group/src/lib/store/buddy/reducers.ts @@ -1,7 +1,8 @@ import { createReducer, on } from '@ngrx/store'; -import { UserInfoUpdateType } from '@ucap/protocol-info'; -import { UserInfo } from '@ucap/protocol-sync'; +import { UserInfoUpdateType, UserInfoF } from '@ucap/domain-organization'; + +import { StringUtil } from '@ucap/ng-core'; import { initialState, adapterBuddy } from './state'; import { @@ -36,7 +37,7 @@ export const reducer = createReducer( on(updateSuccess, (state, action) => { const res = action.res; - const userInfo: UserInfo = { + const userInfo: UserInfoF = { ...state.buddies.entities[res.seq], isFavorit: res.isFavorit }; @@ -49,7 +50,7 @@ export const reducer = createReducer( on(nicknameSuccess, (state, action) => { const res = action.res; - const userInfo: UserInfo = { + const userInfo: UserInfoF = { ...state.buddies.entities[res.userSeq], nickName: res.nickname }; @@ -62,18 +63,12 @@ export const reducer = createReducer( on(buddyInfoUpdate, (state, action) => { const noti = action.noti; - let buddyInfo: UserInfo; + let buddyInfo: UserInfoF; switch (noti.type) { case UserInfoUpdateType.Image: { - const findIdx = noti.info.indexOf('ProfileImage'); - let imgInfo: string = noti.info; - - if (findIdx > -1) { - const startIdx = noti.info.indexOf('/', findIdx); - imgInfo = noti.info.substring(startIdx); - } + const imgInfo = StringUtil.getProfileSubDir(noti.info); buddyInfo = { ...state.buddies.entities[noti.SENDER_SEQ], diff --git a/projects/store-group/src/lib/store/buddy/state.ts b/projects/store-group/src/lib/store/buddy/state.ts index 8ba7a68..e54d2fd 100644 --- a/projects/store-group/src/lib/store/buddy/state.ts +++ b/projects/store-group/src/lib/store/buddy/state.ts @@ -1,12 +1,12 @@ import { Selector, createSelector } from '@ngrx/store'; import { EntityState, createEntityAdapter } from '@ngrx/entity'; -import { UserInfo } from '@ucap/protocol-sync'; +import { UserInfoF } from '@ucap/domain-organization'; -export interface BuddyState extends EntityState { +export interface BuddyState extends EntityState { syncDate: string; } -export const adapterBuddy = createEntityAdapter({ +export const adapterBuddy = createEntityAdapter({ selectId: (userInfo) => userInfo.seq }); diff --git a/projects/store-group/src/lib/store/group/actions.ts b/projects/store-group/src/lib/store/group/actions.ts index fb84ac2..cb88dc6 100644 --- a/projects/store-group/src/lib/store/group/actions.ts +++ b/projects/store-group/src/lib/store/group/actions.ts @@ -1,5 +1,6 @@ import { createAction, props } from '@ngrx/store'; -import { GroupRequest, GroupDetailData } from '@ucap/protocol-sync'; +import { GroupInfoDetail } from '@ucap/domain-group'; + import { AddResponse as GroupAddResponse, UpdateRequest as GroupUpdateRequest, @@ -17,7 +18,7 @@ export const groups = createAction('[ucap::group::group] groups'); */ export const groupsSuccess = createAction( '[ucap::group::group] groups Success', - props<{ groupList: GroupDetailData[]; syncDate: string }>() + props<{ groupList: GroupInfoDetail[]; syncDate: string }>() ); /** * Failure of groups request @@ -33,7 +34,7 @@ export const groupsFailure = createAction( export const updateMember = createAction( '[ucap::group::group] updateMember', props<{ - targetGroup: GroupDetailData; + targetGroup: GroupInfoDetail; targetUserSeqs: string[]; }>() ); @@ -43,7 +44,7 @@ export const updateMember = createAction( export const updateMemberSuccess = createAction( '[ucap::group::group] updateMember Success', props<{ - targetGroup: GroupDetailData; + targetGroup: GroupInfoDetail; targetUserSeqs: string[]; userSeqsForDelete?: string[]; }>() @@ -62,8 +63,8 @@ export const updateMemberFailure = createAction( export const moveMember = createAction( '[ucap::group::group] moveMember', props<{ - fromGroup: GroupDetailData; - toGroup: GroupDetailData; + fromGroup: GroupInfoDetail; + toGroup: GroupInfoDetail; targetUserSeq: string[]; }>() ); @@ -133,7 +134,7 @@ export const updateFailure = createAction( export const del = createAction( '[ucap::group::group] del', props<{ - group: GroupDetailData; + group: GroupInfoDetail; }>() ); /** diff --git a/projects/store-group/src/lib/store/group/reducers.ts b/projects/store-group/src/lib/store/group/reducers.ts index 3ceeb54..3be6d04 100644 --- a/projects/store-group/src/lib/store/group/reducers.ts +++ b/projects/store-group/src/lib/store/group/reducers.ts @@ -1,6 +1,6 @@ import { createReducer, on } from '@ngrx/store'; -import { GroupDetailData } from '@ucap/protocol-sync'; +import { GroupInfoDetail } from '@ucap/domain-group'; import { initialState, adapterGroup } from './state'; import { groupsSuccess, createSuccess, delSuccess } from './actions'; @@ -21,7 +21,7 @@ export const reducer = createReducer( /** 새 그룹 추가. */ on(createSuccess, (state, action) => { const res = action.res; - const groupInfo: GroupDetailData = { + const groupInfo: GroupInfoDetail = { seq: res.groupSeq, name: res.groupName, isActive: true, diff --git a/projects/store-group/src/lib/store/group/state.ts b/projects/store-group/src/lib/store/group/state.ts index 9a76a8d..aa74ceb 100644 --- a/projects/store-group/src/lib/store/group/state.ts +++ b/projects/store-group/src/lib/store/group/state.ts @@ -1,12 +1,12 @@ import { Selector, createSelector } from '@ngrx/store'; import { EntityState, createEntityAdapter } from '@ngrx/entity'; -import { GroupDetailData } from '@ucap/protocol-sync'; +import { GroupInfoDetail } from '@ucap/domain-group'; -export interface GroupState extends EntityState { +export interface GroupState extends EntityState { syncDate: string; } -export const adapterGroup = createEntityAdapter({ - selectId: groupDetailData => groupDetailData.seq +export const adapterGroup = createEntityAdapter({ + selectId: (groupDetailData) => groupDetailData.seq }); export interface State { @@ -35,7 +35,7 @@ export function selectors(selector: Selector) { groups: createSelector(selectGroups, selectAllForGroup), groupSyncDate: createSelector( selectGroups, - groupState => groupState.syncDate + (groupState) => groupState.syncDate ) }; } diff --git a/projects/store-organization/ng-package.json b/projects/store-organization/ng-package.json index 3259cf2..314b830 100644 --- a/projects/store-organization/ng-package.json +++ b/projects/store-organization/ng-package.json @@ -8,8 +8,11 @@ "@ngrx/effects": "@ngrx/effects", "@ngrx/entity": "@ngrx/entity", + "@ucap/domain-organization": "@ucap/domain-organization", + "@ucap/domain-status": "@ucap/domain-status", "@ucap/protocol-query": "@ucap/protocol-query", "@ucap/protocol-status": "@ucap/protocol-status", + "@ucap/ng-core": "@ucap/ng-core", "@ucap/ng-api-external": "@ucap/ng-api-external", "@ucap/ng-protocol-info": "@ucap/ng-protocol-info", "@ucap/ng-protocol-query": "@ucap/ng-protocol-query", diff --git a/projects/store-organization/package.json b/projects/store-organization/package.json index f72e221..918b5d3 100644 --- a/projects/store-organization/package.json +++ b/projects/store-organization/package.json @@ -1,17 +1,26 @@ { "name": "@ucap/ng-store-organization", - "version": "0.0.20", + "version": "0.0.23", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, "peerDependencies": { "@angular/common": "^9.0.0", "@angular/core": "^9.0.0", + "@ngrx/store": "^9.2.0", + "@ngrx/effects": "^9.2.0", "@ucap/core": "~0.0.1", + "@ucap/domain-organization": "~0.0.1", + "@ucap/domain-status": "~0.0.1", + "@ucap/api-external": "~0.0.1", + "@ucap/protocol-info": "~0.0.1", "@ucap/protocol-query": "~0.0.1", + "@ucap/protocol-status": "~0.0.1", "@ucap/ng-api-external": "~0.0.1", "@ucap/ng-protocol-info": "~0.0.1", "@ucap/ng-protocol-query": "~0.0.1", + "@ucap/ng-protocol-status": "~0.0.1", + "rxjs": "~6.5.4", "tslib": "^1.10.0" } } diff --git a/projects/store-organization/src/lib/store/common/effects.ts b/projects/store-organization/src/lib/store/common/effects.ts index aa700f0..ab38c6a 100644 --- a/projects/store-organization/src/lib/store/common/effects.ts +++ b/projects/store-organization/src/lib/store/common/effects.ts @@ -22,18 +22,11 @@ export class Effects { // my const noti = action.noti; - const findIdx = noti.info.indexOf('ProfileImage'); - let notInfo: string = noti.info; - - if (findIdx > -1) { - const startIdx = noti.info.indexOf('/', findIdx); - notInfo = noti.info.substring(startIdx); - } this.store.dispatch( modifyInfoSuccess({ res: { SENDER_SEQ: noti.SENDER_SEQ, - info: notInfo, + info: noti.info, type: noti.type } }) diff --git a/projects/store-organization/src/lib/store/company/state.ts b/projects/store-organization/src/lib/store/company/state.ts index 5d451ec..720d9d8 100644 --- a/projects/store-organization/src/lib/store/company/state.ts +++ b/projects/store-organization/src/lib/store/company/state.ts @@ -1,6 +1,6 @@ import { Selector, createSelector } from '@ngrx/store'; -import { Company } from '@ucap/api-external'; +import { Company } from '@ucap/domain-organization'; export interface State { companyList: Company[] | null; diff --git a/projects/store-organization/src/lib/store/department/actions.ts b/projects/store-organization/src/lib/store/department/actions.ts index abb5f5f..9d1dcd7 100644 --- a/projects/store-organization/src/lib/store/department/actions.ts +++ b/projects/store-organization/src/lib/store/department/actions.ts @@ -1,11 +1,8 @@ import { createAction, props } from '@ngrx/store'; -import { - DeptRequest, - DeptInfo, - DeptUserRequest, - UserInfoSS -} from '@ucap/protocol-query'; +import { DeptInfo, UserInfoSS } from '@ucap/domain-organization'; + +import { DeptRequest, DeptUserRequest } from '@ucap/protocol-query'; /** * retrieve department information list diff --git a/projects/store-organization/src/lib/store/department/effects.ts b/projects/store-organization/src/lib/store/department/effects.ts index b5aa8aa..b6285cd 100644 --- a/projects/store-organization/src/lib/store/department/effects.ts +++ b/projects/store-organization/src/lib/store/department/effects.ts @@ -6,6 +6,8 @@ import { Injectable } from '@angular/core'; import { Store } from '@ngrx/store'; import { Actions, ofType, createEffect } from '@ngrx/effects'; +import { DeptDivisionCode } from '@ucap/protocol-query'; + import { QueryProtocolService } from '@ucap/ng-protocol-query'; import { init as userInit } from '../user/actions'; @@ -18,7 +20,6 @@ import { myDeptUser, myDeptUserFailure } from './actions'; -import { DeptDivisionCode } from '@ucap/protocol-query'; @Injectable() export class Effects { diff --git a/projects/store-organization/src/lib/store/department/state.ts b/projects/store-organization/src/lib/store/department/state.ts index d2ffffd..c2ae225 100644 --- a/projects/store-organization/src/lib/store/department/state.ts +++ b/projects/store-organization/src/lib/store/department/state.ts @@ -1,5 +1,5 @@ import { Selector, createSelector } from '@ngrx/store'; -import { DeptInfo, UserInfoSS } from '@ucap/protocol-query'; +import { DeptInfo, UserInfoSS } from '@ucap/domain-organization'; export interface State { departmentInfoList: DeptInfo[] | null; diff --git a/projects/store-organization/src/lib/store/presence/actions.ts b/projects/store-organization/src/lib/store/presence/actions.ts index 3290a60..2197c7f 100644 --- a/projects/store-organization/src/lib/store/presence/actions.ts +++ b/projects/store-organization/src/lib/store/presence/actions.ts @@ -1,7 +1,9 @@ import { createAction, props } from '@ngrx/store'; + +import { StatusBulkInfo } from '@ucap/domain-status'; + import { BulkInfoRequest, - StatusBulkInfo, StatusNotification, StatusRequest, StatusResponse, diff --git a/projects/store-organization/src/lib/store/presence/effects.ts b/projects/store-organization/src/lib/store/presence/effects.ts index 52815a7..8836ca9 100644 --- a/projects/store-organization/src/lib/store/presence/effects.ts +++ b/projects/store-organization/src/lib/store/presence/effects.ts @@ -6,6 +6,8 @@ import { Injectable } from '@angular/core'; import { Actions, createEffect, ofType } from '@ngrx/effects'; import { Store } from '@ngrx/store'; +import { StatusProtocolService } from '@ucap/ng-protocol-status'; + import { status, statusSuccess, @@ -17,7 +19,6 @@ import { messageUpdateSuccess, messageUpdateFailure } from './actions'; -import { StatusProtocolService } from '@ucap/ng-protocol-status'; @Injectable() export class Effects { diff --git a/projects/store-organization/src/lib/store/presence/reducers.ts b/projects/store-organization/src/lib/store/presence/reducers.ts index 05a4e83..f963f92 100644 --- a/projects/store-organization/src/lib/store/presence/reducers.ts +++ b/projects/store-organization/src/lib/store/presence/reducers.ts @@ -4,7 +4,7 @@ import { StatusBulkInfo, TerminalStatusInfo, TerminalStatusNumber -} from '@ucap/protocol-status'; +} from '@ucap/domain-status'; import { initialState, State, adapterStatusBulkInfo } from './state'; import { diff --git a/projects/store-organization/src/lib/store/presence/state.ts b/projects/store-organization/src/lib/store/presence/state.ts index 63c19ad..5c1a79b 100644 --- a/projects/store-organization/src/lib/store/presence/state.ts +++ b/projects/store-organization/src/lib/store/presence/state.ts @@ -1,7 +1,7 @@ import { Selector, createSelector } from '@ngrx/store'; import { EntityState, createEntityAdapter } from '@ngrx/entity'; -import { StatusBulkInfo } from '@ucap/protocol-status'; +import { StatusBulkInfo } from '@ucap/domain-status'; export interface StatusBulkInfoState extends EntityState {} diff --git a/projects/store-organization/src/lib/store/user/actions.ts b/projects/store-organization/src/lib/store/user/actions.ts index 194ae8f..c559011 100644 --- a/projects/store-organization/src/lib/store/user/actions.ts +++ b/projects/store-organization/src/lib/store/user/actions.ts @@ -1,6 +1,8 @@ import { createAction, props } from '@ngrx/store'; -import { UserResponse, UserRequest, User } from '@ucap/protocol-info'; +import { User } from '@ucap/domain-organization'; + +import { UserResponse, UserRequest } from '@ucap/protocol-info'; /** * info user request diff --git a/projects/store-organization/src/lib/store/user/reducers.ts b/projects/store-organization/src/lib/store/user/reducers.ts index 9802fed..60c7b7c 100644 --- a/projects/store-organization/src/lib/store/user/reducers.ts +++ b/projects/store-organization/src/lib/store/user/reducers.ts @@ -1,12 +1,13 @@ import { createReducer, on } from '@ngrx/store'; -import { UserInfoUpdateType } from '@ucap/protocol-info'; -import { MessageIndexType } from '@ucap/protocol-status'; +import { UserInfoUpdateType } from '@ucap/domain-organization'; +import { MessageIndexType } from '@ucap/domain-status'; import { messageUpdateSuccess } from '../presence/actions'; import { init, modifyInfoSuccess } from './actions'; import { State, initialState } from './state'; +import { StringUtil } from '@ucap/ng-core'; export const reducer = createReducer( initialState, @@ -24,11 +25,12 @@ export const reducer = createReducer( switch (action.res.type) { case UserInfoUpdateType.Image: + const imgInfo = StringUtil.getProfileSubDir(action.res.info); user = { ...user, info: { ...user.info, - profileImageFile: action.res.info + profileImageFile: imgInfo } }; break; diff --git a/projects/store-organization/src/lib/store/user/state.ts b/projects/store-organization/src/lib/store/user/state.ts index 973f803..cd168cf 100644 --- a/projects/store-organization/src/lib/store/user/state.ts +++ b/projects/store-organization/src/lib/store/user/state.ts @@ -1,7 +1,8 @@ import { Selector, createSelector } from '@ngrx/store'; import { EntityState } from '@ngrx/entity'; -import { StatusBulkInfo } from '@ucap/protocol-status'; -import { User } from '@ucap/protocol-info'; + +import { StatusBulkInfo } from '@ucap/domain-status'; +import { User } from '@ucap/domain-organization'; export interface StatusBulkInfoState extends EntityState {} diff --git a/projects/ui-authentication/ng-package.json b/projects/ui-authentication/ng-package.json index a9fdb60..86b782d 100644 --- a/projects/ui-authentication/ng-package.json +++ b/projects/ui-authentication/ng-package.json @@ -6,6 +6,8 @@ "styleIncludePaths": ["./src/assets/scss"], "umdModuleIds": { "moment": "moment", + "@ucap/domain-organization": "@ucap/domain-organization", + "@ucap/domain-authentication": "@ucap/domain-authentication", "@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 index 382ac62..6e1c0c8 100644 --- a/projects/ui-authentication/package.json +++ b/projects/ui-authentication/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-ui-authentication", - "version": "0.0.29", + "version": "0.0.32", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, @@ -10,6 +10,8 @@ "@angular/core": "^9.0.2", "@angular/material": "^9.0.0", "@ucap/core": "~0.0.1", + "@ucap/domain-organization": "~0.0.1", + "@ucap/domain-authentication": "~0.0.1", "@ucap/ui-scss": "~0.0.1", "@ucap/ng-i18n": "~0.0.1", "@ucap/ng-ui": "~0.0.1", diff --git a/projects/ui-authentication/src/lib/authentication-ui.module.ts b/projects/ui-authentication/src/lib/authentication-ui.module.ts index 7e96d21..da373f3 100644 --- a/projects/ui-authentication/src/lib/authentication-ui.module.ts +++ b/projects/ui-authentication/src/lib/authentication-ui.module.ts @@ -12,8 +12,6 @@ import { MatInputModule } from '@angular/material/input'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; 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'; @@ -50,8 +48,7 @@ export class AuthenticationUiRootModule {} MatProgressSpinnerModule, MatSelectModule, - I18nModule, - UiModule + I18nModule ], exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], diff --git a/projects/ui-authentication/src/lib/components/login.component.spec.ts b/projects/ui-authentication/src/lib/components/login.component.spec.ts index a9ba1f3..59707e3 100644 --- a/projects/ui-authentication/src/lib/components/login.component.spec.ts +++ b/projects/ui-authentication/src/lib/components/login.component.spec.ts @@ -7,7 +7,7 @@ import { ChangeDetectorRef } from '@angular/core'; import { I18nService, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; import { AuthenticationUiModule } from '../authentication-ui.module'; import { MatSelectModule } from '@angular/material/select'; -import { Company } from '@ucap/api-external'; +import { Company } from '@ucap/domain-organization'; import { LogService } from '@ucap/ng-logger'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; diff --git a/projects/ui-authentication/src/lib/components/login.component.stories.ts b/projects/ui-authentication/src/lib/components/login.component.stories.ts index 8fbcb91..38b30a8 100644 --- a/projects/ui-authentication/src/lib/components/login.component.stories.ts +++ b/projects/ui-authentication/src/lib/components/login.component.stories.ts @@ -5,7 +5,7 @@ import { linkTo } from '@storybook/addon-links'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { Company } from '@ucap/api-external'; +import { Company } from '@ucap/domain-organization'; import { LogService } from '@ucap/ng-logger'; import { I18nService, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; diff --git a/projects/ui-authentication/src/lib/components/login.component.ts b/projects/ui-authentication/src/lib/components/login.component.ts index 4b7f11a..b7613f2 100644 --- a/projects/ui-authentication/src/lib/components/login.component.ts +++ b/projects/ui-authentication/src/lib/components/login.component.ts @@ -17,8 +17,9 @@ import { FormControl, ValidatorFn } from '@angular/forms'; -import { Company } from '@ucap/api-external'; -import { LoginTry } from '@ucap/pi'; + +import { Company } from '@ucap/domain-organization'; +import { LoginTry } from '@ucap/domain-authentication'; @Component({ selector: 'ucap-authentication-login', diff --git a/projects/ui-call/README.md b/projects/ui-call/README.md new file mode 100644 index 0000000..19f2522 --- /dev/null +++ b/projects/ui-call/README.md @@ -0,0 +1,24 @@ +# UiCall + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.11. + +## Code scaffolding + +Run `ng generate component component-name --project ui-call` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui-call`. +> Note: Don't forget to add `--project ui-call` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build ui-call` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build ui-call`, go to the dist folder `cd dist/ui-call` and run `npm publish`. + +## Running unit tests + +Run `ng test ui-call` 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-call/karma.conf.js b/projects/ui-call/karma.conf.js new file mode 100644 index 0000000..d859b3a --- /dev/null +++ b/projects/ui-call/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-call'), + 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-call/ng-package.json b/projects/ui-call/ng-package.json new file mode 100644 index 0000000..e994614 --- /dev/null +++ b/projects/ui-call/ng-package.json @@ -0,0 +1,23 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ui-call", + "lib": { + "entryFile": "src/public-api.ts", + "styleIncludePaths": ["./src/assets/scss"], + "umdModuleIds": { + "moment": "moment", + "ngx-perfect-scrollbar": "ngx-perfect-scrollbar", + "@ucap/core": "@ucap/core", + "@ucap/domain-call": "@ucap/domain-call", + "@ucap/api": "@ucap/api", + "@ucap/ng-logger": "@ucap/ng-logger", + "@ucap/ng-i18n": "@ucap/ng-i18n", + "@ucap/ng-ui": "@ucap/ng-ui", + "@ucap/ng-ui/core": "@ucap/ng-ui/core", + "@ucap/ng-ui/date": "@ucap/ng-ui/date", + "@ucap/ng-ui/phone": "@ucap/ng-ui/phone", + "@ucap/ng-ui/scrolling": "@ucap/ng-ui/scrolling", + "@ucap/ng-ui-organization": "@ucap/ng-ui-organization" + } + } +} diff --git a/projects/ui-call/package.json b/projects/ui-call/package.json new file mode 100644 index 0000000..0fe05c0 --- /dev/null +++ b/projects/ui-call/package.json @@ -0,0 +1,20 @@ +{ + "name": "@ucap/ng-ui-call", + "version": "0.0.15", + "publishConfig": { + "registry": "https://nexus.loafle.net/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/domain-call": "~0.0.2", + "@ucap/ui-scss": "~0.0.1", + "@ucap/ng-ui": "~0.0.1", + "@ucap/ng-ui-material": "~0.0.1", + "@ucap/ng-ui-organization": "~0.0.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/ui-call/scss-bundle.config.json b/projects/ui-call/scss-bundle.config.json new file mode 100644 index 0000000..a34ba38 --- /dev/null +++ b/projects/ui-call/scss-bundle.config.json @@ -0,0 +1,11 @@ +{ + "bundlerOptions": { + "entryFile": "./projects/ui-call/src/assets/scss/_theme.scss", + "rootDir": "./projects/ui-call/src/assets/scss/", + "outFile": "./dist/ui-call/_theme.scss", + "dedupeGlobs": [], + "includePaths": [], + "ignoreImports": ["~@ucap/.*", "~@angular/.*"], + "logLevel": "silent" + } +} diff --git a/projects/ui-call/src/assets/scss/_theme.scss b/projects/ui-call/src/assets/scss/_theme.scss new file mode 100644 index 0000000..cb59c18 --- /dev/null +++ b/projects/ui-call/src/assets/scss/_theme.scss @@ -0,0 +1,2 @@ +// @import '../../lib/components/room-expansion.component.theme.scss'; +// @import '../../lib/components/room-list-item-01.component.theme.scss'; diff --git a/projects/ui-call/src/lib/call-ui.module.ts b/projects/ui-call/src/lib/call-ui.module.ts new file mode 100644 index 0000000..1bda535 --- /dev/null +++ b/projects/ui-call/src/lib/call-ui.module.ts @@ -0,0 +1,113 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { FlexLayoutModule } from '@angular/flex-layout'; + +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatRippleModule } from '@angular/material/core'; +import { MatTreeModule } from '@angular/material/tree'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatGridListModule } from '@angular/material/grid-list'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; + +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +import { UiDateModule } from '@ucap/ng-ui/date'; +import { UiPhoneModule } from '@ucap/ng-ui/phone'; +import { UiscrollingModule } from '@ucap/ng-ui/scrolling'; + +import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { + HistoryExpansionComponent, + HistoryExpansionHeaderDirective, + HistoryExpansionNodeDirective +} from './components/history-expansion.component'; +import { HistoryListItemComponent } from './components/history-list-item.component'; +import { + CallTimelineItemListComponent, + CallTimelineItemListNodeDirective +} from './components/timeline-item-list.component'; +import { + CallTimelineItemList01Component, + CallTimelineItemList01NodeDirective +} from './components/timeline-item-list-01.component'; +import { TimelineItemComponent } from './components/timeline-item.component'; +import { DialpadComponent } from './components/dialpad.component'; + +const COMPONENTS = [ + DialpadComponent, + HistoryExpansionComponent, + HistoryListItemComponent, + CallTimelineItemListComponent, + CallTimelineItemList01Component, + TimelineItemComponent +]; +const DIALOGS = []; +const PIPES = []; +const DIRECTIVES = [ + CallTimelineItemListNodeDirective, + CallTimelineItemList01NodeDirective, + HistoryExpansionHeaderDirective, + HistoryExpansionNodeDirective +]; +const SERVICES = []; + +@NgModule({ + declarations: [], + imports: [], + exports: [] +}) +export class CallUiRootModule {} + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + FlexLayoutModule, + + MatButtonModule, + MatIconModule, + MatRippleModule, + MatTreeModule, + MatProgressBarModule, + MatTooltipModule, + MatFormFieldModule, + MatInputModule, + MatGridListModule, + + PerfectScrollbarModule, + + I18nModule, + + UiDateModule, + UiPhoneModule, + UiscrollingModule + ], + exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + entryComponents: [...DIALOGS], + providers: [ + { + provide: UCAP_I18N_NAMESPACE, + useValue: ['call', 'common'] + } + ] +}) +export class CallUiModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: CallUiRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/ui-call/src/lib/components/dialpad.component.html b/projects/ui-call/src/lib/components/dialpad.component.html new file mode 100644 index 0000000..dc2b34f --- /dev/null +++ b/projects/ui-call/src/lib/components/dialpad.component.html @@ -0,0 +1,78 @@ +
+
+ + + + + +
+ +
+ + + + + + + + + + + +
+
diff --git a/projects/ui-call/src/lib/components/dialpad.component.scss b/projects/ui-call/src/lib/components/dialpad.component.scss new file mode 100644 index 0000000..2b45051 --- /dev/null +++ b/projects/ui-call/src/lib/components/dialpad.component.scss @@ -0,0 +1,74 @@ +/*.bubble-main { + padding: 10px; + position: relative; + + .expired-text { + position: absolute; + background-color: rgb(255, 255, 255, 0.6); + width: calc(100% - 20px); + height: calc(100% - 20px); + text-align: center; + display: table; + + span { + color: #666666; + display: table-cell; + vertical-align: middle; + } + } +} +*/ +.ucap-call-dialpad { + height: calc(100% - 40px); + position: relative; + + .dialnumber-container { + height: calc((100% - 32vh) - 40px); + padding: 0 20px; + display: flex; + align-items: flex-end; + .input-dialnumber { + display: flex; + flex-flow: row; + width: 100%; + height: 70px; + } + } + .dialpad { + padding: 0 20px; + height: 32vh; + width: 100%; + position: absolute; + bottom: 0; + @media screen and (max-height: 700px) { + height: 36vh; + } + .mat-grid-list { + border: 1px solid #dddddd; + border-bottom: none; + .mat-grid-tile { + border-right: 1px solid #ddd; + border-bottom: 1px solid #ddd; + &:nth-child(3n) { + border-right: none; + } + button { + width: 100%; + height: 100%; + } + } + &.btns-frame { + border: none; + margin-top: 10px; + .mat-grid-tile { + border: none; + } + button { + width: 100%; + height: 100%; + border-radius: 4px; + } + } + } + } +} diff --git a/projects/ui-call/src/lib/components/dialpad.component.spec.ts b/projects/ui-call/src/lib/components/dialpad.component.spec.ts new file mode 100644 index 0000000..e3a2924 --- /dev/null +++ b/projects/ui-call/src/lib/components/dialpad.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 { DialpadComponent } from './dialpad.component'; + +describe('DialpadComponent', () => { + let component: DialpadComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [DialpadComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DialpadComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-call/src/lib/components/dialpad.component.ts b/projects/ui-call/src/lib/components/dialpad.component.ts new file mode 100644 index 0000000..b83bcad --- /dev/null +++ b/projects/ui-call/src/lib/components/dialpad.component.ts @@ -0,0 +1,148 @@ +import { + Component, + OnInit, + EventEmitter, + Output, + ViewChild, + ElementRef, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef +} from '@angular/core'; + +import { Subject, Subscription } from 'rxjs'; +import { debounceTime, takeUntil } from 'rxjs/operators'; + +import { MatDialog } from '@angular/material/dialog'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { + AlertDialogComponent, + AlertDialogData, + AlertDialogResult +} from '@ucap/ng-ui/core'; +import { PhoneNumberPipe } from '@ucap/ng-ui/phone'; + +@Component({ + selector: 'ucap-call-dialpad', + templateUrl: './dialpad.component.html', + styleUrls: ['./dialpad.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DialpadComponent implements OnInit, OnDestroy { + @Output() + sendCall = new EventEmitter(); + + @ViewChild('phoneInput', { static: false }) + phoneInput: ElementRef; + + inputSubscription: Subscription; + isShowRemoveBtn: boolean; + + private subject: Subject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); + constructor( + private dialog: MatDialog, + private i18nService: I18nService, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit() { + this.isShowRemoveBtn = false; + + this.inputSubscription = this.subject + .pipe(takeUntil(this.ngOnDestroySubject), debounceTime(400)) + .subscribe((num) => { + this._makePhoneNumber(num); + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + /** About Input field */ + onBlur(event): void { + this.phoneInput.nativeElement.focus(); + } + onKeyup(val): void { + this.subject.next(val.replace(/[^#*\d]/g, '')); + } + onClickAllRemove(): void { + this.phoneInput.nativeElement.value = ''; + this.isShowRemoveBtn = false; + } + onClickRemove(): void { + let curNumberStr = this.phoneInput.nativeElement.value; + curNumberStr = curNumberStr.substring(0, curNumberStr.length - 1); + this._makePhoneNumber(curNumberStr); + } + + /** About Dialpad */ + onClickNumber(num: string): void { + this._makePhoneNumber(this.phoneInput.nativeElement.value.concat(num)); + } + + onClickCall(): void { + const curNumberStr = this.phoneInput.nativeElement.value; + const phoneNum = curNumberStr.replace(/[^#*\d]/g, ''); + + if (!!phoneNum && phoneNum.length > 0) { + this.sendCall.emit(phoneNum); + } else { + this.dialog.open< + AlertDialogComponent, + AlertDialogData, + AlertDialogResult + >(AlertDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('call:label.error'), + message: this.i18nService.t('call:errors.inputCallNumber') + } + }); + return; + } + } + + private _makePhoneNumber(numberStr: string) { + if (numberStr.trim() === '') { + this.phoneInput.nativeElement.value = ''; + this.isShowRemoveBtn = false; + this.changeDetectorRef.markForCheck(); + return; + } + + this.isShowRemoveBtn = true; + if (this._getSpecialSymbol(numberStr)) { + this.phoneInput.nativeElement.value = numberStr; + } else { + this.phoneInput.nativeElement.value = `${new PhoneNumberPipe().transform( + numberStr + )}`; + } + this.changeDetectorRef.markForCheck(); + } + + private _getSpecialSymbol(num: string): boolean { + const curNumberStr = this.phoneInput.nativeElement.value; + + const asteriskIndex = curNumberStr.indexOf('*'); + const hashIndex = curNumberStr.indexOf('#'); + + if ( + asteriskIndex > -1 || + hashIndex > -1 || + 0 === num.localeCompare('*') || + 0 === num.localeCompare('#') + ) { + return true; + } else { + return false; + } + } +} diff --git a/projects/ui-call/src/lib/components/history-expansion.component.html b/projects/ui-call/src/lib/components/history-expansion.component.html new file mode 100644 index 0000000..11f6347 --- /dev/null +++ b/projects/ui-call/src/lib/components/history-expansion.component.html @@ -0,0 +1,67 @@ +
+ + + + + +
  • +
    + +
    +
  • +
    + + +
  • +
    + +
    + + +
    +
    +
      +
      +
      + +
      +
    +
  • +
    +
    +
    +
    diff --git a/projects/ui-call/src/lib/components/history-expansion.component.scss b/projects/ui-call/src/lib/components/history-expansion.component.scss new file mode 100644 index 0000000..6703e19 --- /dev/null +++ b/projects/ui-call/src/lib/components/history-expansion.component.scss @@ -0,0 +1,22 @@ +.ucap-call-history-expansion-container { +} + +.ucap-clickable { + display: flex; + min-height: 60px; + border-top: 10px solid #f1f2f6; + //border-bottom: 1px solid $gray-rec; + li { + width: 100%; + .path { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + .group-info { + justify-self: self-start; + flex-grow: 1; + } + } + } +} diff --git a/projects/ui-call/src/lib/components/history-expansion.component.spec.ts b/projects/ui-call/src/lib/components/history-expansion.component.spec.ts new file mode 100644 index 0000000..77d79a1 --- /dev/null +++ b/projects/ui-call/src/lib/components/history-expansion.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { HistoryExpansionComponent } from './history-expansion.component'; + +describe('ucap::chat::HistoryExpansionComponent', () => { + let component: HistoryExpansionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [HistoryExpansionComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HistoryExpansionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-call/src/lib/components/history-expansion.component.ts b/projects/ui-call/src/lib/components/history-expansion.component.ts new file mode 100644 index 0000000..28480ba --- /dev/null +++ b/projects/ui-call/src/lib/components/history-expansion.component.ts @@ -0,0 +1,199 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + Input, + ViewChild, + ContentChild, + TemplateRef, + ChangeDetectionStrategy, + ChangeDetectorRef, + Directive, + AfterViewInit +} from '@angular/core'; + +import { FlatTreeControl } from '@angular/cdk/tree'; + +import { MatTreeFlattener, MatTree } from '@angular/material/tree'; + +import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; + +import { + VirtualScrollTreeFlatDataSource, + VirtualScrollViewportComponent +} from '@ucap/ng-ui/scrolling'; +import { CallHistory } from '@ucap/domain-call'; + +export interface HistoryNode { + nodeType: string; + historyInfo?: CallHistory; + children?: HistoryNode[]; +} + +export interface FlatNode { + expandable: boolean; + level: number; + node: HistoryNode; +} + +@Directive({ + selector: '[ucapCallHistoryExpansionNode]' +}) +export class HistoryExpansionNodeDirective {} + +@Directive({ + selector: '[ucapCallHistoryExpansionHeader]' +}) +export class HistoryExpansionHeaderDirective {} + +@Component({ + selector: 'ucap-call-history-expansion', + templateUrl: './history-expansion.component.html', + styleUrls: ['./history-expansion.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class HistoryExpansionComponent + implements OnInit, OnDestroy, AfterViewInit { + @Input() + set historyGroup(list: { division: string; historyList: CallHistory[] }[]) { + if (!list || 0 === list.length) { + } else { + list.sort((a, b) => + a.division < b.division ? 1 : a.division > b.division ? -1 : 0 + ); + + for (const item of list) { + const nodeType = item.division; + const node: HistoryNode = { + nodeType, + children: [] + }; + + item.historyList.sort((a, b) => + a.callLogSeq < b.callLogSeq ? 1 : a.callLogSeq > b.callLogSeq ? -1 : 0 + ); + + item.historyList.forEach((historyInfo) => { + node.children.push({ + nodeType, + historyInfo + }); + }); + + if (!!this.nodeMap.get(item.division)) { + this.nodeMap.get(item.division)[0].children = node.children; + } else { + this.nodeMap.set(item.division, [node]); + } + } + + // deleted filtering. + this.nodeMap = new Map( + [...this.nodeMap.entries()].filter( + (map) => list.findIndex((item) => item.division === map[0]) > -1 + ) + ); + + // sorting. + this.nodeMap = new Map( + [...this.nodeMap.entries()].sort((a, b) => + b[0] > a[0] ? 1 : b[0] < a[0] ? -1 : 0 + ) + ); + } + this.refreshNodes(); + } + + @Input() + vsItemSize: number; + + @ViewChild('treeList', { static: false }) + treeList: MatTree; + + @ViewChild('cvsvList', { static: false }) + cvsvList: VirtualScrollViewportComponent; + + @ViewChild(PerfectScrollbarDirective, { static: false }) + psDirectiveRef?: PerfectScrollbarDirective; + + @ContentChild(HistoryExpansionNodeDirective, { + read: TemplateRef, + static: false + }) + nodeTemplate: TemplateRef; + + @ContentChild(HistoryExpansionHeaderDirective, { + read: TemplateRef, + static: false + }) + headerTemplate: TemplateRef; + + treeControl: FlatTreeControl; + treeFlattener: MatTreeFlattener; + dataSource: VirtualScrollTreeFlatDataSource; + + private nodeMap: Map = new Map(); + // tslint:disable-next-line: variable-name + private _ngOnDestroySubject: Subject = new Subject(); + + constructor(private changeDetectorRef: ChangeDetectorRef) { + this.treeControl = new FlatTreeControl( + (node) => node.level, + (node) => node.expandable + ); + + this.treeFlattener = new MatTreeFlattener( + (node: HistoryNode, level: number) => { + return { + expandable: !!node.children && node.children.length > 0, + level, + nodeType: node.nodeType, + node + }; + }, + (node) => node.level, + (node) => node.expandable, + (node) => node.children + ); + + this.dataSource = new VirtualScrollTreeFlatDataSource< + HistoryNode, + FlatNode + >(this.treeControl, this.treeFlattener); + } + + ngOnInit(): void { + this.dataSource.expandedData$ + .pipe(takeUntil(this._ngOnDestroySubject)) + .subscribe((datas) => { + if (!!this.psDirectiveRef) { + this.psDirectiveRef.update(); + } + }); + } + + ngOnDestroy(): void { + if (!!this._ngOnDestroySubject) { + this._ngOnDestroySubject.next(); + this._ngOnDestroySubject.complete(); + } + } + + ngAfterViewInit(): void { + this.dataSource.virtualScrollViewport = this.cvsvList; + } + + isHeader = (_: number, node: FlatNode) => 0 === node.level; + + private refreshNodes() { + const rootNode: HistoryNode[] = []; + this.nodeMap.forEach((node) => rootNode.push(...node)); + + this.dataSource.data = rootNode; + this.treeControl.expandAll(); + this.changeDetectorRef.detectChanges(); + } +} diff --git a/projects/ui-call/src/lib/components/history-list-item.component.html b/projects/ui-call/src/lib/components/history-list-item.component.html new file mode 100644 index 0000000..d75aa67 --- /dev/null +++ b/projects/ui-call/src/lib/components/history-list-item.component.html @@ -0,0 +1,46 @@ +
    +
    + +
    + + call_made + + + call_received + +
    +
    + call_missed_outgoing +
    +
    + call_missed +
    +
    + clear +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    {{ getName() }}
    +
    +
    +
    + {{ getPhoneNumber() | ucapPhoneNumber }} +
    +
    +
    + {{ historyInfo.startDate | ucapDate: 'LT' }} +
    + +
    diff --git a/projects/ui-call/src/lib/components/history-list-item.component.scss b/projects/ui-call/src/lib/components/history-list-item.component.scss new file mode 100644 index 0000000..0d07f4b --- /dev/null +++ b/projects/ui-call/src/lib/components/history-list-item.component.scss @@ -0,0 +1,11 @@ +@import '~@ucap/ng-ui-material/material'; + +.ucap-chat-item-list-container { + width: 100%; + height: 100%; + + ucap-virtual-scroll-viewport { + width: 100%; + height: 100%; + } +} diff --git a/projects/ui-call/src/lib/components/history-list-item.component.spec.ts b/projects/ui-call/src/lib/components/history-list-item.component.spec.ts new file mode 100644 index 0000000..027a989 --- /dev/null +++ b/projects/ui-call/src/lib/components/history-list-item.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; +import { HistoryListItemComponent } from './history-list-item.component'; + +describe('ucap::organization::HistoryListItemComponent', () => { + let component: HistoryListItemComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [HistoryListItemComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HistoryListItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-call/src/lib/components/history-list-item.component.ts b/projects/ui-call/src/lib/components/history-list-item.component.ts new file mode 100644 index 0000000..b5ad82f --- /dev/null +++ b/projects/ui-call/src/lib/components/history-list-item.component.ts @@ -0,0 +1,55 @@ +import { Subject } from 'rxjs'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input +} from '@angular/core'; + +import { CallHistory, CallResultType } from '@ucap/domain-call'; + +@Component({ + selector: 'ucap-call-history-list-item', + templateUrl: './history-list-item.component.html', + styleUrls: ['./history-list-item.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class HistoryListItemComponent implements OnInit, OnDestroy { + @Input() + historyInfo: CallHistory; + + CallResultType = CallResultType; + + private ngOnDestroySubject: Subject; + constructor(private changeDetectorRef: ChangeDetectorRef) {} + + ngOnInit(): void { + this.ngOnDestroySubject = new Subject(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + getName(): string { + if (!!this.historyInfo.sendYn && this.historyInfo.sendYn === true) { + return this.historyInfo.calledName; + } else { + return this.historyInfo.callingName; + } + } + + getPhoneNumber(): string { + if (!!this.historyInfo.sendYn) { + return this.historyInfo.calledMa; + } else { + return this.historyInfo.callingMa; + } + } +} diff --git a/projects/ui-call/src/lib/components/timeline-item-list-01.component.html b/projects/ui-call/src/lib/components/timeline-item-list-01.component.html new file mode 100644 index 0000000..e8f03ec --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item-list-01.component.html @@ -0,0 +1,25 @@ +
    + + + + + +
    diff --git a/projects/ui-call/src/lib/components/timeline-item-list-01.component.scss b/projects/ui-call/src/lib/components/timeline-item-list-01.component.scss new file mode 100644 index 0000000..0d07f4b --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item-list-01.component.scss @@ -0,0 +1,11 @@ +@import '~@ucap/ng-ui-material/material'; + +.ucap-chat-item-list-container { + width: 100%; + height: 100%; + + ucap-virtual-scroll-viewport { + width: 100%; + height: 100%; + } +} diff --git a/projects/ui-call/src/lib/components/timeline-item-list-01.component.spec.ts b/projects/ui-call/src/lib/components/timeline-item-list-01.component.spec.ts new file mode 100644 index 0000000..fa79e3e --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item-list-01.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; +import { CallTimelineItemList01Component } from './timeline-item-list-01.component'; + +describe('ucap::organization::CallTimelineItemList01Component', () => { + let component: CallTimelineItemList01Component; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CallTimelineItemList01Component] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CallTimelineItemList01Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-call/src/lib/components/timeline-item-list-01.component.ts b/projects/ui-call/src/lib/components/timeline-item-list-01.component.ts new file mode 100644 index 0000000..31ed35e --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item-list-01.component.ts @@ -0,0 +1,89 @@ +import { Subject } from 'rxjs'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Directive, + ContentChild, + TemplateRef, + ViewChild, + ElementRef +} from '@angular/core'; + +import { + VirtualScrollViewportComponent, + MeasureSizeVirtualScrollDirective +} from '@ucap/ng-ui/scrolling'; +import { CallHistory } from '@ucap/domain-call'; +import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; + +@Directive({ + selector: '[ucapCallTimelineItemList01Node]' +}) +export class CallTimelineItemList01NodeDirective {} + +@Component({ + selector: 'ucap-call-timeline-item-list-01', + templateUrl: './timeline-item-list-01.component.html', + styleUrls: ['./timeline-item-list-01.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class CallTimelineItemList01Component implements OnInit, OnDestroy { + @Input() + itemInfos: CallHistory[]; + + @Input() + maxBufferPx: number; + @Input() + minBufferPx: number; + + @ContentChild(CallTimelineItemList01NodeDirective, { + read: TemplateRef, + static: false + }) + nodeTemplate: TemplateRef; + + @ViewChild('vsList', { static: false }) + vsList: VirtualScrollViewportComponent; + + @ViewChild('vsList', { + static: true, + read: MeasureSizeVirtualScrollDirective + }) + measureSize: MeasureSizeVirtualScrollDirective; + + @ViewChild(PerfectScrollbarDirective, { + static: true, + read: PerfectScrollbarDirective + }) + psDirectiveRef: PerfectScrollbarDirective; + + private ngOnDestroySubject: Subject = new Subject(); + constructor(private changeDetectorRef: ChangeDetectorRef) {} + + ngOnInit(): void {} + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + /** About scrolling */ + keyOf = (item: CallHistory): number => { + return item.callLogSeq; + }; + + onMeasured() {} + + onContentSizeChanged(size: number) { + if (!!this.psDirectiveRef) { + this.psDirectiveRef.update(); + } + } +} diff --git a/projects/ui-call/src/lib/components/timeline-item-list.component.html b/projects/ui-call/src/lib/components/timeline-item-list.component.html new file mode 100644 index 0000000..d3ff1f2 --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item-list.component.html @@ -0,0 +1,17 @@ +
    + + +
    + +
    +
    +
    +
    diff --git a/projects/ui-call/src/lib/components/timeline-item-list.component.scss b/projects/ui-call/src/lib/components/timeline-item-list.component.scss new file mode 100644 index 0000000..0d07f4b --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item-list.component.scss @@ -0,0 +1,11 @@ +@import '~@ucap/ng-ui-material/material'; + +.ucap-chat-item-list-container { + width: 100%; + height: 100%; + + ucap-virtual-scroll-viewport { + width: 100%; + height: 100%; + } +} diff --git a/projects/ui-call/src/lib/components/timeline-item-list.component.spec.ts b/projects/ui-call/src/lib/components/timeline-item-list.component.spec.ts new file mode 100644 index 0000000..b13505e --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; +import { CallTimelineItemListComponent } from './timeline-item-list.component'; + +describe('ucap::organization::CallTimelineItemListComponent', () => { + let component: CallTimelineItemListComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CallTimelineItemListComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CallTimelineItemListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-call/src/lib/components/timeline-item-list.component.ts b/projects/ui-call/src/lib/components/timeline-item-list.component.ts new file mode 100644 index 0000000..f3a533d --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item-list.component.ts @@ -0,0 +1,64 @@ +import { Subject } from 'rxjs'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Directive, + ContentChild, + TemplateRef, + ViewChild, + ElementRef +} from '@angular/core'; + +import { VirtualScrollViewportComponent } from '@ucap/ng-ui/scrolling'; +import { CallHistory } from '@ucap/domain-call'; + +@Directive({ + selector: '[ucapCallTimelineItemListNode]' +}) +export class CallTimelineItemListNodeDirective {} + +@Component({ + selector: 'ucap-call-timeline-item-list', + templateUrl: './timeline-item-list.component.html', + styleUrls: ['./timeline-item-list.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class CallTimelineItemListComponent implements OnInit, OnDestroy { + @Input() + itemInfos: CallHistory[]; + + @Input() + vsItemSize: number; + + @ContentChild(CallTimelineItemListNodeDirective, { + read: TemplateRef, + static: false + }) + nodeTemplate: TemplateRef; + + @ViewChild('container', { static: true }) + container: ElementRef; + + @ViewChild('cvsvList', { static: true }) + cvsvList: VirtualScrollViewportComponent; + + private ngOnDestroySubject: Subject; + + constructor(private changeDetectorRef: ChangeDetectorRef) {} + + ngOnInit(): void { + this.ngOnDestroySubject = new Subject(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } +} diff --git a/projects/ui-call/src/lib/components/timeline-item.component.html b/projects/ui-call/src/lib/components/timeline-item.component.html new file mode 100644 index 0000000..a9ff4be --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item.component.html @@ -0,0 +1,42 @@ +
    +
    + {{ historyInfo.startDate | ucapDate: 'L dddd' }} +
    +
    +
    +
    + +
    + + call_made + + + call_received + +
    +
    + call_missed_outgoing +
    +
    + call_missed +
    +
    + clear +
    +
    +
    +
    +
    + {{ historyInfo.startDate | ucapDate: 'LT' }} +
    +
    + {{ getPhoneNumber() | ucapPhoneNumber }} +
    +
    +
    + {{ secondToTime(historyInfo.callTime) }} +
    +
    diff --git a/projects/ui-call/src/lib/components/timeline-item.component.scss b/projects/ui-call/src/lib/components/timeline-item.component.scss new file mode 100644 index 0000000..b209828 --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item.component.scss @@ -0,0 +1,34 @@ +.ucap-chat-room-list-item1 { + width: 100%; + height: 100%; + + display: flex; + flex-direction: row; + align-content: center; + justify-content: space-between; + + .ucap-chat-room-list-item1-profile-image { + display: inline-flex; + position: relative; + align-self: center; + } + .ucap-chat-room-list-item1-info { + display: flex; + flex-direction: column; + justify-content: center; + .roomName { + display: flex; + flex-direction: row; + .ico-chat-list { + .ico-off { + &-false { + display: inline-block; + } + &-true { + display: none; + } + } + } + } + } +} diff --git a/projects/ui-call/src/lib/components/timeline-item.component.spec.ts b/projects/ui-call/src/lib/components/timeline-item.component.spec.ts new file mode 100644 index 0000000..f63a408 --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TimelineItemComponent } from './timeline-item.component'; + +describe('ucap::chat::TimelineItemComponent', () => { + let component: TimelineItemComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [TimelineItemComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TimelineItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-call/src/lib/components/timeline-item.component.ts b/projects/ui-call/src/lib/components/timeline-item.component.ts new file mode 100644 index 0000000..b7904dc --- /dev/null +++ b/projects/ui-call/src/lib/components/timeline-item.component.ts @@ -0,0 +1,54 @@ +import { + Component, + OnInit, + ChangeDetectionStrategy, + Input, + OnDestroy, + EventEmitter, + Output, + ChangeDetectorRef +} from '@angular/core'; +import { CallHistory, CallResultType } from '@ucap/domain-call'; + +@Component({ + selector: 'ucap-call-timeline-item', + templateUrl: './timeline-item.component.html', + styleUrls: ['./timeline-item.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TimelineItemComponent implements OnInit, OnDestroy { + @Input() + historyInfo: CallHistory; + + @Input() + dateChanged: boolean; + + CallResultType = CallResultType; + + constructor(private changeDetectorRef: ChangeDetectorRef) {} + + ngOnInit(): void {} + + ngOnDestroy(): void {} + + getPhoneNumber(): string { + if (!!this.historyInfo.sendYn) { + return this.historyInfo.calledMa; + } else { + return this.historyInfo.callingMa; + } + } + + secondToTime(sec: number): string { + const duration = sec * 1000; + const seconds = Math.floor((duration / 1000) % 60); + const minutes = Math.floor((duration / (1000 * 60)) % 60); + const hours = Math.floor((duration / (1000 * 60 * 60)) % 24); + + const strHours = String(hours < 10 ? '0' + hours : hours); + const strMinutes = String(minutes < 10 ? '0' + minutes : minutes); + const strSeconds = String(seconds < 10 ? '0' + seconds : seconds); + + return strHours + ':' + strMinutes + ':' + strSeconds; + } +} diff --git a/projects/i18n/src/lib/config/module-config.ts b/projects/ui-call/src/lib/config/module-config.ts similarity index 100% rename from projects/i18n/src/lib/config/module-config.ts rename to projects/ui-call/src/lib/config/module-config.ts diff --git a/projects/ui-call/src/lib/config/token.ts b/projects/ui-call/src/lib/config/token.ts new file mode 100644 index 0000000..ab92959 --- /dev/null +++ b/projects/ui-call/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ui-call config of module' +); diff --git a/projects/ui-call/src/public-api.ts b/projects/ui-call/src/public-api.ts new file mode 100644 index 0000000..d77c8e3 --- /dev/null +++ b/projects/ui-call/src/public-api.ts @@ -0,0 +1,15 @@ +/* + * Public API Surface of ui-call + */ + +export * from './lib/components/dialpad.component'; +export * from './lib/components/history-expansion.component'; +export * from './lib/components/history-list-item.component'; +export * from './lib/components/timeline-item-list.component'; +export * from './lib/components/timeline-item-list-01.component'; +export * from './lib/components/timeline-item.component'; + +export * from './lib/config/module-config'; +export * from './lib/config/token'; + +export * from './lib/call-ui.module'; diff --git a/projects/ui-call/src/test.ts b/projects/ui-call/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/ui-call/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-call/tsconfig.lib.json b/projects/ui-call/tsconfig.lib.json new file mode 100644 index 0000000..4b5d4af --- /dev/null +++ b/projects/ui-call/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-call/tsconfig.lib.prod.json b/projects/ui-call/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/ui-call/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/ui-call/tsconfig.spec.json b/projects/ui-call/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/ui-call/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-call/tslint.json b/projects/ui-call/tslint.json new file mode 100644 index 0000000..bd4b8cf --- /dev/null +++ b/projects/ui-call/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [true, "attribute", "ucapCall", "camelCase"], + "component-selector": [true, "element", "ucap-call", "kebab-case"] + } +} diff --git a/projects/ui-chat/karma.conf.js b/projects/ui-chat/karma.conf.js index 92c3662..3dd90c1 100644 --- a/projects/ui-chat/karma.conf.js +++ b/projects/ui-chat/karma.conf.js @@ -16,7 +16,7 @@ module.exports = function (config) { clearContext: false // leave Jasmine Spec Runner output visible in browser }, coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/ui-organization'), + dir: require('path').join(__dirname, '../../coverage/ui-chat'), reports: ['html', 'lcovonly', 'text-summary'], fixWebpackSourcePaths: true }, diff --git a/projects/ui-chat/ng-package.json b/projects/ui-chat/ng-package.json index c072cd4..a0b01e8 100644 --- a/projects/ui-chat/ng-package.json +++ b/projects/ui-chat/ng-package.json @@ -8,12 +8,15 @@ "moment": "moment", "ngx-perfect-scrollbar": "ngx-perfect-scrollbar", "@ucap/core": "@ucap/core", + "@ucap/domain-common": "@ucap/domain-common", + "@ucap/domain-chat": "@ucap/domain-chat", "@ucap/api": "@ucap/api", - "@ucap/protocol-event": "@ucap/protocol-event", - "@ucap/protocol-room": "@ucap/protocol-room", "@ucap/ng-logger": "@ucap/ng-logger", "@ucap/ng-i18n": "@ucap/ng-i18n", "@ucap/ng-ui": "@ucap/ng-ui", + "@ucap/ng-ui/core": "@ucap/ng-ui/core", + "@ucap/ng-ui/date": "@ucap/ng-ui/date", + "@ucap/ng-ui/scrolling": "@ucap/ng-ui/scrolling", "@ucap/ng-ui-organization": "@ucap/ng-ui-organization" } } diff --git a/projects/ui-chat/package.json b/projects/ui-chat/package.json index 5674b47..0d1d781 100644 --- a/projects/ui-chat/package.json +++ b/projects/ui-chat/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-ui-chat", - "version": "0.0.72", + "version": "0.0.80", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, @@ -10,7 +10,9 @@ "@angular/core": "^9.0.2", "@angular/material": "^9.0.0", "@ucap/core": "~0.0.1", - "@ucap/protocol-room": "~0.0.1", + "@ucap/domain-common": "~0.0.1", + "@ucap/domain-chat": "~0.0.1", + "@ucap/api": "~0.0.1", "@ucap/ui-scss": "~0.0.1", "@ucap/ng-ui": "~0.0.1", "@ucap/ng-ui-material": "~0.0.1", diff --git a/projects/ui-chat/src/lib/chat-ui.module.ts b/projects/ui-chat/src/lib/chat-ui.module.ts index ef984d7..89a7f2f 100644 --- a/projects/ui-chat/src/lib/chat-ui.module.ts +++ b/projects/ui-chat/src/lib/chat-ui.module.ts @@ -15,7 +15,10 @@ import { MatMenuModule } from '@angular/material/menu'; import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; -import { UiModule } from '@ucap/ng-ui'; +import { UiCoreModule } from '@ucap/ng-ui/core'; +import { UiDateModule } from '@ucap/ng-ui/date'; +import { UiscrollingModule } from '@ucap/ng-ui/scrolling'; + import { OrganizationUiModule } from '@ucap/ng-ui-organization'; import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; @@ -126,8 +129,12 @@ export class ChatUiRootModule {} PerfectScrollbarModule, I18nModule, - OrganizationUiModule, - UiModule + + UiCoreModule, + UiDateModule, + UiscrollingModule, + + OrganizationUiModule ], exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], diff --git a/projects/ui-chat/src/lib/components/file-list-item-01.component.ts b/projects/ui-chat/src/lib/components/file-list-item-01.component.ts index 4a1bf66..62d221e 100644 --- a/projects/ui-chat/src/lib/components/file-list-item-01.component.ts +++ b/projects/ui-chat/src/lib/components/file-list-item-01.component.ts @@ -1,3 +1,5 @@ +import { Subject } from 'rxjs'; + import { Component, OnInit, @@ -9,14 +11,14 @@ import { Output } from '@angular/core'; -import { Subject } from 'rxjs'; +import { FileDownloadItem } from '@ucap/domain-common'; import { UserInfo as RoomUserInfo, - UserInfoShort as RoomUserInfoShort -} from '@ucap/protocol-room'; -import { FileInfo } from '@ucap/protocol-file'; -import { DateOptions } from '@ucap/ng-ui'; -import { FileDownloadItem } from '@ucap/api'; + UserInfoShort as RoomUserInfoShort, + FileInfo +} from '@ucap/domain-chat'; + +import { DateOptions } from '@ucap/ng-ui/date'; @Component({ selector: 'ucap-chat-file-list-item-01', diff --git a/projects/ui-chat/src/lib/components/file-list.component.ts b/projects/ui-chat/src/lib/components/file-list.component.ts index cbf2d9b..fc46131 100644 --- a/projects/ui-chat/src/lib/components/file-list.component.ts +++ b/projects/ui-chat/src/lib/components/file-list.component.ts @@ -9,10 +9,13 @@ import { Input, Directive, ContentChild, - TemplateRef + TemplateRef, + ViewChild } from '@angular/core'; -import { FileInfo } from '@ucap/protocol-file'; +import { FileInfo } from '@ucap/domain-chat'; + +import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; @Directive({ selector: '[ucapChatFileListNode]' @@ -32,6 +35,9 @@ export class FileListComponent implements OnInit, OnDestroy { @Input() vsItemSize: number; + @ViewChild(PerfectScrollbarDirective, { static: false }) + psDirectiveRef: PerfectScrollbarDirective; + @ContentChild(FileListNodeDirective, { read: TemplateRef, static: false diff --git a/projects/ui-chat/src/lib/components/image-list-item-01.component.ts b/projects/ui-chat/src/lib/components/image-list-item-01.component.ts index abb625f..796ed46 100644 --- a/projects/ui-chat/src/lib/components/image-list-item-01.component.ts +++ b/projects/ui-chat/src/lib/components/image-list-item-01.component.ts @@ -1,3 +1,5 @@ +import { Subject } from 'rxjs'; + import { Component, OnInit, @@ -9,10 +11,8 @@ import { Output } from '@angular/core'; -import { Subject } from 'rxjs'; -import { FileInfo } from '@ucap/protocol-file'; -import { FileDownloadItem } from '@ucap/api'; -import { FileEventJson } from '@ucap/protocol-event'; +import { FileDownloadItem } from '@ucap/domain-common'; +import { FileInfo, FileEventJson } from '@ucap/domain-chat'; @Component({ selector: 'ucap-chat-image-list-item-01', diff --git a/projects/ui-chat/src/lib/components/image-list.component.ts b/projects/ui-chat/src/lib/components/image-list.component.ts index caa5d4e..fe51bd0 100644 --- a/projects/ui-chat/src/lib/components/image-list.component.ts +++ b/projects/ui-chat/src/lib/components/image-list.component.ts @@ -9,10 +9,13 @@ import { Input, Directive, ContentChild, - TemplateRef + TemplateRef, + ViewChild } from '@angular/core'; -import { FileInfo } from '@ucap/protocol-file'; +import { FileInfo } from '@ucap/domain-chat'; + +import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; @Directive({ selector: '[ucapChatImageListNode]' @@ -32,6 +35,9 @@ export class ImageListComponent implements OnInit, OnDestroy { @Input() vsItemSize: number; + @ViewChild(PerfectScrollbarDirective, { static: false }) + psDirectiveRef: PerfectScrollbarDirective; + @ContentChild(ImageListNodeDirective, { read: TemplateRef, static: false diff --git a/projects/ui-chat/src/lib/components/item-list.component.ts b/projects/ui-chat/src/lib/components/item-list.component.ts index 078bf4a..8f40062 100644 --- a/projects/ui-chat/src/lib/components/item-list.component.ts +++ b/projects/ui-chat/src/lib/components/item-list.component.ts @@ -16,9 +16,9 @@ import { import { ObjectUtil } from '@ucap/core'; -import { UserInfo, UserInfoShort, RoomInfo } from '@ucap/protocol-room'; +import { UserInfo, UserInfoShort, RoomInfo } from '@ucap/domain-chat'; -import { VirtualScrollViewportComponent } from '@ucap/ng-ui'; +import { VirtualScrollViewportComponent } from '@ucap/ng-ui/scrolling'; export type ItemInfoTypes = UserInfo | UserInfoShort | RoomInfo; diff --git a/projects/ui-chat/src/lib/components/message-box/attach-file.component.ts b/projects/ui-chat/src/lib/components/message-box/attach-file.component.ts index 07be118..7e7eff4 100644 --- a/projects/ui-chat/src/lib/components/message-box/attach-file.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/attach-file.component.ts @@ -1,13 +1,22 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { FileEventJson } from '@ucap/protocol-event'; -import { DateOptions } from '@ucap/ng-ui'; -import { FileDownloadItem } from '@ucap/api'; -import { DeviceType } from '@ucap/core'; +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ChangeDetectionStrategy +} from '@angular/core'; + +import { DeviceType, FileDownloadItem } from '@ucap/domain-common'; +import { FileEventJson } from '@ucap/domain-chat'; + +import { DateOptions } from '@ucap/ng-ui/date'; @Component({ selector: 'ucap-chat-message-box-attach-file', templateUrl: './attach-file.component.html', - styleUrls: ['./attach-file.component.scss'] + styleUrls: ['./attach-file.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class AttachFileComponent implements OnInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/date-splitter.component.ts b/projects/ui-chat/src/lib/components/message-box/date-splitter.component.ts index a478df3..98dd486 100644 --- a/projects/ui-chat/src/lib/components/message-box/date-splitter.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/date-splitter.component.ts @@ -1,10 +1,17 @@ -import { Component, OnInit, Input } from '@angular/core'; -import { Info, EventJson } from '@ucap/protocol-event'; +import { + Component, + OnInit, + Input, + ChangeDetectionStrategy +} from '@angular/core'; + +import { Info, EventJson } from '@ucap/domain-chat'; @Component({ selector: 'ucap-chat-message-box-date-splitter', templateUrl: './date-splitter.component.html', - styleUrls: ['./date-splitter.component.scss'] + styleUrls: ['./date-splitter.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class DateSplitterComponent implements OnInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/file.component.ts b/projects/ui-chat/src/lib/components/message-box/file.component.ts index 875123a..f30caae 100644 --- a/projects/ui-chat/src/lib/components/message-box/file.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/file.component.ts @@ -1,14 +1,24 @@ -import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core'; -import { FileType, Info, FileEventJson } from '@ucap/protocol-event'; -import { RoomInfo } from '@ucap/protocol-room'; -import { FileDownloadItem, StatusCode } from '@ucap/api'; -import { SelectFileInfo } from '@ucap/ng-ui'; -import { DeviceType } from '@ucap/core'; +import { + Component, + OnInit, + Output, + Input, + EventEmitter, + ChangeDetectionStrategy +} from '@angular/core'; + +import { DeviceType, FileDownloadItem } from '@ucap/domain-common'; +import { FileType, Info, FileEventJson, RoomInfo } from '@ucap/domain-chat'; + +import { StatusCode } from '@ucap/api'; + +import { SelectFileInfo } from '@ucap/ng-ui/viewer'; @Component({ selector: 'ucap-chat-message-box-file', templateUrl: './file.component.html', - styleUrls: ['./file.component.scss'] + styleUrls: ['./file.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class FileComponent implements OnInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/image.component.ts b/projects/ui-chat/src/lib/components/message-box/image.component.ts index 1bf842e..67fe709 100644 --- a/projects/ui-chat/src/lib/components/message-box/image.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/image.component.ts @@ -1,10 +1,19 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { FileEventJson } from '@ucap/protocol-event'; +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ChangeDetectionStrategy +} from '@angular/core'; + +import { FileEventJson } from '@ucap/domain-chat'; @Component({ selector: 'ucap-chat-message-box-image', templateUrl: './image.component.html', - styleUrls: ['./image.component.scss'] + styleUrls: ['./image.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class ImageComponent implements OnInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/information.component.ts b/projects/ui-chat/src/lib/components/message-box/information.component.ts index 52ef7d3..9aa3dd2 100644 --- a/projects/ui-chat/src/lib/components/message-box/information.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/information.component.ts @@ -1,4 +1,10 @@ -import { Component, OnInit, Input } from '@angular/core'; +import { + Component, + OnInit, + Input, + ChangeDetectionStrategy +} from '@angular/core'; + import { EventType, Info, @@ -6,13 +12,15 @@ import { RenameRoomEventJson, GuideForRoomTimerChangedEventJson, JoinEventJson -} from '@ucap/protocol-event'; +} from '@ucap/domain-chat'; + import { I18nService } from '@ucap/ng-i18n'; @Component({ selector: 'ucap-chat-message-box-information', templateUrl: './information.component.html', - styleUrls: ['./information.component.scss'] + styleUrls: ['./information.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class InformationComponent implements OnInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/mass-translation.component.ts b/projects/ui-chat/src/lib/components/message-box/mass-translation.component.ts index c8952a7..7c7a4da 100644 --- a/projects/ui-chat/src/lib/components/message-box/mass-translation.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/mass-translation.component.ts @@ -6,14 +6,17 @@ import { EventEmitter, AfterViewInit, ElementRef, - Inject + Inject, + ChangeDetectionStrategy } from '@angular/core'; -import { Info, MassTranslationEventJson } from '@ucap/protocol-event'; + +import { Info, MassTranslationEventJson } from '@ucap/domain-chat'; @Component({ selector: 'ucap-chat-message-box-mass-translation', templateUrl: './mass-translation.component.html', - styleUrls: ['./mass-translation.component.scss'] + styleUrls: ['./mass-translation.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class MassTranslationComponent implements OnInit, AfterViewInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/mass.component.ts b/projects/ui-chat/src/lib/components/message-box/mass.component.ts index df55f91..24ef2d7 100644 --- a/projects/ui-chat/src/lib/components/message-box/mass.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/mass.component.ts @@ -6,15 +6,18 @@ import { EventEmitter, ElementRef, AfterViewInit, - Inject + ChangeDetectionStrategy } from '@angular/core'; -import { Info, MassTextEventJson } from '@ucap/protocol-event'; + +import { Info, MassTextEventJson } from '@ucap/domain-chat'; + import { StatusCode } from '@ucap/api'; @Component({ selector: 'ucap-chat-message-box-mass', templateUrl: './mass.component.html', - styleUrls: ['./mass.component.scss'] + styleUrls: ['./mass.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class MassComponent implements OnInit, AfterViewInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/read-here.component.ts b/projects/ui-chat/src/lib/components/message-box/read-here.component.ts index 74cb1b1..56ccf08 100644 --- a/projects/ui-chat/src/lib/components/message-box/read-here.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/read-here.component.ts @@ -1,9 +1,10 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'ucap-chat-message-box-read-here', templateUrl: './read-here.component.html', - styleUrls: ['./read-here.component.scss'] + styleUrls: ['./read-here.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class ReadHereComponent implements OnInit { constructor() {} diff --git a/projects/ui-chat/src/lib/components/message-box/recall.component.ts b/projects/ui-chat/src/lib/components/message-box/recall.component.ts index bb6553b..5f0aa2d 100644 --- a/projects/ui-chat/src/lib/components/message-box/recall.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/recall.component.ts @@ -1,9 +1,10 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'ucap-chat-message-box-recall', templateUrl: './recall.component.html', - styleUrls: ['./recall.component.scss'] + styleUrls: ['./recall.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class RecallComponent implements OnInit { constructor() {} diff --git a/projects/ui-chat/src/lib/components/message-box/reply.component.ts b/projects/ui-chat/src/lib/components/message-box/reply.component.ts index 039eca0..9f1852b 100644 --- a/projects/ui-chat/src/lib/components/message-box/reply.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/reply.component.ts @@ -4,13 +4,15 @@ import { Input, ElementRef, AfterViewInit, - Inject + Inject, + ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'ucap-chat-message-box-reply', templateUrl: './reply.component.html', - styleUrls: ['./reply.component.scss'] + styleUrls: ['./reply.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class ReplyComponent implements OnInit, AfterViewInit { constructor(private elementRef: ElementRef) {} diff --git a/projects/ui-chat/src/lib/components/message-box/schedule.component.ts b/projects/ui-chat/src/lib/components/message-box/schedule.component.ts index 6bd72cd..3306a80 100644 --- a/projects/ui-chat/src/lib/components/message-box/schedule.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/schedule.component.ts @@ -1,5 +1,13 @@ -import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core'; -import { Info, PlanEventJson, PlanContentType } from '@ucap/protocol-event'; +import { + Component, + OnInit, + Input, + EventEmitter, + Output, + ChangeDetectionStrategy +} from '@angular/core'; + +import { Info, PlanEventJson, PlanContentType } from '@ucap/domain-chat'; import { I18nService } from '@ucap/ng-i18n'; @@ -8,7 +16,8 @@ import moment from 'moment'; @Component({ selector: 'ucap-chat-message-box-schedule', templateUrl: './schedule.component.html', - styleUrls: ['./schedule.component.scss'] + styleUrls: ['./schedule.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class ScheduleComponent implements OnInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/sms.component.ts b/projects/ui-chat/src/lib/components/message-box/sms.component.ts index 90834ee..937eb72 100644 --- a/projects/ui-chat/src/lib/components/message-box/sms.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/sms.component.ts @@ -1,16 +1,16 @@ import { Component, OnInit, - Input, ElementRef, AfterViewInit, - Inject + ChangeDetectionStrategy } from '@angular/core'; @Component({ selector: 'ucap-chat-message-box-sms', templateUrl: './sms.component.html', - styleUrls: ['./sms.component.scss'] + styleUrls: ['./sms.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class SmsComponent implements OnInit, AfterViewInit { constructor(private elementRef: ElementRef) {} diff --git a/projects/ui-chat/src/lib/components/message-box/sticker.component.ts b/projects/ui-chat/src/lib/components/message-box/sticker.component.ts index 34eea45..71c8db2 100644 --- a/projects/ui-chat/src/lib/components/message-box/sticker.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/sticker.component.ts @@ -5,36 +5,29 @@ import { ElementRef, AfterViewInit, EventEmitter, - Output + Output, + ChangeDetectionStrategy } from '@angular/core'; -import { Info, StickerEventJson } from '@ucap/protocol-event'; + +import { Info, StickerEventJson } from '@ucap/domain-chat'; @Component({ selector: 'ucap-chat-message-box-sticker', templateUrl: './sticker.component.html', - styleUrls: ['./sticker.component.scss'] + styleUrls: ['./sticker.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class StickerComponent implements OnInit, AfterViewInit { @Input() message: Info; - // @Input() - // stickerImageRoot: string; - - // @Input() - // stickerDefaultImage: string; - @Output() openLink = new EventEmitter(); - // stickerUrl?: string; contents: string; constructor(private elementRef: ElementRef) {} ngOnInit() { - // if (!!this.message.sentMessageJson.file) { - // this.stickerUrl = `assets/sticker/sticker_s_${this.message.sentMessageJson.file}.png`; - // } if (!!this.message.sentMessageJson?.chat) { this.contents = this.message.sentMessageJson.chat; } diff --git a/projects/ui-chat/src/lib/components/message-box/text.component.ts b/projects/ui-chat/src/lib/components/message-box/text.component.ts index de9c3a8..39a5df0 100644 --- a/projects/ui-chat/src/lib/components/message-box/text.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/text.component.ts @@ -5,14 +5,17 @@ import { ElementRef, AfterViewInit, Output, - EventEmitter + EventEmitter, + ChangeDetectionStrategy } from '@angular/core'; -import { Info, EventJson } from '@ucap/protocol-event'; + +import { Info, EventJson } from '@ucap/domain-chat'; @Component({ selector: 'ucap-chat-message-box-text', templateUrl: './text.component.html', - styleUrls: ['./text.component.scss'] + styleUrls: ['./text.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class TextComponent implements OnInit, AfterViewInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/translation.component.ts b/projects/ui-chat/src/lib/components/message-box/translation.component.ts index 19fe408..5d5eab4 100644 --- a/projects/ui-chat/src/lib/components/message-box/translation.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/translation.component.ts @@ -5,14 +5,17 @@ import { EventEmitter, Output, AfterViewInit, - ElementRef + ElementRef, + ChangeDetectionStrategy } from '@angular/core'; -import { Info, TranslationEventJson } from '@ucap/protocol-event'; + +import { Info, TranslationEventJson } from '@ucap/domain-chat'; @Component({ selector: 'ucap-chat-message-box-translation', templateUrl: './translation.component.html', - styleUrls: ['./translation.component.scss'] + styleUrls: ['./translation.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class TranslationComponent implements OnInit, AfterViewInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/video-conference.component.ts b/projects/ui-chat/src/lib/components/message-box/video-conference.component.ts index 7ee330d..be06325 100644 --- a/projects/ui-chat/src/lib/components/message-box/video-conference.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/video-conference.component.ts @@ -1,15 +1,22 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ChangeDetectionStrategy +} from '@angular/core'; import { VideoConferenceEventJson, VideoConferenceContentsType, Info -} from '@ucap/protocol-event'; -import { AuthResponse } from '@ucap/protocol-query'; +} from '@ucap/domain-chat'; @Component({ selector: 'ucap-chat-message-box-video-conference', templateUrl: './video-conference.component.html', - styleUrls: ['./video-conference.component.scss'] + styleUrls: ['./video-conference.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class VideoConferenceComponent implements OnInit { @Input() diff --git a/projects/ui-chat/src/lib/components/message-box/video.component.ts b/projects/ui-chat/src/lib/components/message-box/video.component.ts index 2ed554c..14a2b63 100644 --- a/projects/ui-chat/src/lib/components/message-box/video.component.ts +++ b/projects/ui-chat/src/lib/components/message-box/video.component.ts @@ -1,13 +1,22 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { FileEventJson } from '@ucap/protocol-event'; -import { DateOptions } from '@ucap/ng-ui'; -import { FileDownloadItem } from '@ucap/api'; -import { DeviceType } from '@ucap/core'; +import { + Component, + OnInit, + Input, + Output, + EventEmitter, + ChangeDetectionStrategy +} from '@angular/core'; + +import { FileDownloadItem, DeviceType } from '@ucap/domain-common'; +import { FileEventJson } from '@ucap/domain-chat'; + +import { DateOptions } from '@ucap/ng-ui/date'; @Component({ selector: 'ucap-chat-message-box-video', templateUrl: './video.component.html', - styleUrls: ['./video.component.scss'] + styleUrls: ['./video.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class VideoComponent implements OnInit { @Input() diff --git a/projects/ui-chat/src/lib/components/room-expansion.component.ts b/projects/ui-chat/src/lib/components/room-expansion.component.ts index 1fe8790..f35626e 100644 --- a/projects/ui-chat/src/lib/components/room-expansion.component.ts +++ b/projects/ui-chat/src/lib/components/room-expansion.component.ts @@ -21,12 +21,12 @@ import { MatTreeFlattener, MatTree } from '@angular/material/tree'; import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; -import { RoomInfo } from '@ucap/protocol-room'; +import { RoomInfo } from '@ucap/domain-chat'; import { VirtualScrollTreeFlatDataSource, VirtualScrollViewportComponent -} from '@ucap/ng-ui'; +} from '@ucap/ng-ui/scrolling'; export interface RoomNode { nodeType: string; diff --git a/projects/ui-chat/src/lib/components/room-list-item-01.component.html b/projects/ui-chat/src/lib/components/room-list-item-01.component.html index 47bfbf8..3fa6009 100644 --- a/projects/ui-chat/src/lib/components/room-list-item-01.component.html +++ b/projects/ui-chat/src/lib/components/room-list-item-01.component.html @@ -36,7 +36,9 @@ -
    {{ roomInfo.finalEventDate | ucapDate: 'LT' }}
    +
    + {{ roomInfo.finalEventDate | ucapDate: (!!dateFormat ? dateFormat : 'LT') }} +
    diff --git a/projects/ui-group/src/lib/components/expansion.component.scss b/projects/ui-group/src/lib/components/expansion.component.scss index b100b4f..bd143f4 100644 --- a/projects/ui-group/src/lib/components/expansion.component.scss +++ b/projects/ui-group/src/lib/components/expansion.component.scss @@ -19,6 +19,7 @@ flex-direction: row; justify-content: space-between; align-items: center; + height: 100%; .group-info { justify-self: self-start; flex-grow: 1; diff --git a/projects/ui-group/src/lib/components/expansion.component.ts b/projects/ui-group/src/lib/components/expansion.component.ts index 9ec4df3..70ff633 100644 --- a/projects/ui-group/src/lib/components/expansion.component.ts +++ b/projects/ui-group/src/lib/components/expansion.component.ts @@ -21,16 +21,13 @@ import { FlatTreeControl } from '@angular/cdk/tree'; import { MatTreeFlattener, MatTree } from '@angular/material/tree'; -import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; -import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; -import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; +import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/domain-organization'; +import { GroupInfoDetail } from '@ucap/domain-group'; import { VirtualScrollTreeFlatDataSource, VirtualScrollViewportComponent -} from '@ucap/ng-ui'; +} from '@ucap/ng-ui/scrolling'; import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; @@ -44,8 +41,8 @@ export enum NodeType { export interface GroupNode { nodeType: NodeType; - userInfo?: UserInfo; - groupDetail?: GroupDetailData; + userInfo?: UserInfoF; + groupDetail?: GroupInfoDetail; children?: GroupNode[]; } @@ -89,10 +86,10 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { vsItemSize: number; @Input() - isAllExpand = false; + cacheSize = 0; @Input() - set profile(userInfo: UserInfo) { + set profile(userInfo: UserInfoF) { if (!userInfo) { this.nodeMap.set(NodeType.Profile, []); } else { @@ -109,7 +106,7 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { } @Input() - set favorites(userInfos: UserInfo[]) { + set favorites(userInfos: UserInfoF[]) { if (!userInfos || 0 === userInfos.length) { this.nodeMap.set(NodeType.Favorite, []); } else { @@ -120,7 +117,7 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { name: NodeType.Favorite, isActive: true, userSeqs: userInfos.map((userInfo) => String(userInfo.seq)) - } as GroupDetailData, + } as GroupInfoDetail, children: [] }; @@ -139,7 +136,7 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { } @Input() - set groupBuddies(list: { group: GroupDetailData; buddyList: UserInfo[] }[]) { + set groupBuddies(list: { group: GroupInfoDetail; buddyList: UserInfoF[] }[]) { if (!list || 0 === list.length) { this.nodeMap.set(NodeType.Default, []); this.nodeMap.set(NodeType.Buddy, []); @@ -193,7 +190,7 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { } @Input() - selectedGroupHeader: GroupDetailData; + selectedGroupHeader: GroupInfoDetail; @Input() checkable = false; @@ -202,11 +199,14 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { moreable = false; @Input() - selectedUserList?: (UserInfo | UserInfoSS | UserInfoF | UserInfoDN)[] = []; + selectedUserList?: (UserInfoF | UserInfoSS | UserInfoF | UserInfoDN)[] = []; + + @Input() + groupOpenInfo: { groupSeqs: number[]; lastGroupSeq: number }; @Input() unselectableUserList?: ( - | UserInfo + | UserInfoF | UserInfoSS | UserInfoF | UserInfoDN @@ -221,7 +221,7 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { @Output() checkGroup = new EventEmitter<{ isChecked: boolean; - groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; + groupBuddyList: { group: GroupInfoDetail; buddyList: UserInfoF[] }; }>(); @Output() @@ -236,9 +236,6 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { @ViewChild(PerfectScrollbarDirective, { static: false }) psDirectiveRef: PerfectScrollbarDirective; - @ViewChild(PerfectScrollbarDirective, { static: false }) - psDirectiveRef?: PerfectScrollbarDirective; - @ContentChild(ExpansionNodeDirective, { read: TemplateRef, static: false @@ -268,8 +265,7 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { dataSource: VirtualScrollTreeFlatDataSource; NodeType = NodeType; - groupList: { group: GroupDetailData; buddyList: UserInfo[] }[]; - groupOpenInfos: number[]; + groupList: { group: GroupInfoDetail; buddyList: UserInfoF[] }[]; private nodeMap: Map = new Map(); // tslint:disable-next-line: variable-name @@ -425,17 +421,18 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { this.clickNode.emit({ node, isExpand: this.treeControl.isExpanded(node) }); } - expand(groupSeqs: number[], lastGroupSeq: number) { - if (!this.treeControl.dataNodes || !groupSeqs || 0 === groupSeqs.length) { + expand(params: { groupSeqs: number[]; lastGroupSeq: number }) { + if ( + !this.treeControl.dataNodes || + !params.groupSeqs || + 0 === params.groupSeqs.length + ) { return; } - this.groupOpenInfos = groupSeqs; + this.groupOpenInfo = params; const flatNodes: FlatNode[] = []; - groupSeqs.forEach((s) => { - // const node = this.treeControl.dataNodes.find( - // (n) => n.node.groupDetail.seq === s - // ); + params.groupSeqs.forEach((s) => { let node: FlatNode; this.treeControl.dataNodes.every((n) => { @@ -456,24 +453,32 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { this.treeControl.expansionModel.select(...flatNodes); } - // setTimeout( - // () => { - // const curIndex = this.dataSource.expandedDataSubject.value.findIndex( - // (node) => node.node.groupDetail.seq === lastGroupSeq - // ); - // if (-1 < curIndex) { - // if ('vertical' === this.cvsvList.orientation) { - // this.psDirectiveRef.scrollToY( - // this.cvsvList.offsetForIndex(curIndex) - // ); - // } - // } - // }, - // 0 < flatNodes.length && - // 0 === this.dataSource.expandedDataSubject.value.length - // ? 100 - // : 0 - // ); + setTimeout( + () => { + const curIndex = this.dataSource.expandedDataSubject.value.findIndex( + (flatNode) => { + if ( + flatNode.node.nodeType !== NodeType.Profile && + flatNode.node.nodeType !== NodeType.None && + flatNode.node.groupDetail.seq === params.lastGroupSeq + ) { + return flatNode.node.groupDetail.seq === params.lastGroupSeq; + } + } + ); + if (-1 < curIndex) { + if ('vertical' === this.cvsvList.orientation) { + this.psDirectiveRef.scrollToY( + this.cvsvList.offsetForIndex(curIndex) + ); + } + } + }, + 0 < flatNodes.length && + 0 === this.dataSource.expandedDataSubject.value.length + ? 100 + : 0 + ); } private refreshNodes() { @@ -489,12 +494,8 @@ export class ExpansionComponent implements OnInit, OnDestroy, AfterViewInit { this.dataSource.data = rootNode; this.changeDetectorRef.markForCheck(); - if (!!this.groupOpenInfos && this.groupOpenInfos.length > 0) { - this.expand(this.groupOpenInfos, 0); - } - - if (!!this.isAllExpand) { - this.expandMore(); + if (!!this.groupOpenInfo && this.groupOpenInfo.groupSeqs.length > 0) { + this.expand(this.groupOpenInfo); } } } diff --git a/projects/ui-group/src/lib/group-ui.module.ts b/projects/ui-group/src/lib/group-ui.module.ts index 61188aa..14bd6bb 100644 --- a/projects/ui-group/src/lib/group-ui.module.ts +++ b/projects/ui-group/src/lib/group-ui.module.ts @@ -13,7 +13,7 @@ import { MatTreeModule } from '@angular/material/tree'; import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; -import { UiModule } from '@ucap/ng-ui'; +import { UiscrollingModule } from '@ucap/ng-ui/scrolling'; import { ModuleConfig } from './config/module-config'; import { _MODULE_CONFIG } from './config/token'; @@ -58,7 +58,8 @@ export class GroupUiRootModule {} MatTreeModule, PerfectScrollbarModule, - UiModule + + UiscrollingModule ], exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], diff --git a/projects/ui-group/src/lib/types/group-menu.type.ts b/projects/ui-group/src/lib/types/group-menu.type.ts new file mode 100644 index 0000000..f5520a8 --- /dev/null +++ b/projects/ui-group/src/lib/types/group-menu.type.ts @@ -0,0 +1,10 @@ +export enum GroupMenuType { + chat = 'CHAT', + message = 'MESSAGE', + rename = 'RENAME', + management = 'MANAGEMENT', + copyGroup = 'COPY_GROUP', + moveGroup = 'MOVE_GROUP', + deleteGroup = 'DELETE_GROUP', + divide = 'DIVIDE' +} diff --git a/projects/ui-group/src/public-api.ts b/projects/ui-group/src/public-api.ts index 7e1ac1c..888b53d 100644 --- a/projects/ui-group/src/public-api.ts +++ b/projects/ui-group/src/public-api.ts @@ -7,4 +7,6 @@ export * from './lib/components/expansion.component'; export * from './lib/config/module-config'; export * from './lib/config/token'; +export * from './lib/types/group-menu.type'; + export * from './lib/group-ui.module'; diff --git a/projects/ui-organization/ng-package.json b/projects/ui-organization/ng-package.json index 5abf0cf..08ee6df 100644 --- a/projects/ui-organization/ng-package.json +++ b/projects/ui-organization/ng-package.json @@ -7,10 +7,15 @@ "umdModuleIds": { "ngx-perfect-scrollbar": "ngx-perfect-scrollbar", "@ucap/core": "@ucap/core", + "@ucap/domain-common": "@ucap/domain-common", + "@ucap/domain-status": "@ucap/domain-status", "@ucap/api": "@ucap/api", "@ucap/ng-logger": "@ucap/ng-logger", "@ucap/ng-i18n": "@ucap/ng-i18n", - "@ucap/ng-ui": "@ucap/ng-ui" + "@ucap/ng-ui/core": "@ucap/ng-ui/core", + "@ucap/ng-ui/input": "@ucap/ng-ui/input", + "@ucap/ng-ui/phone": "@ucap/ng-ui/phone", + "@ucap/ng-ui/scrolling": "@ucap/ng-ui/scrolling" } } } diff --git a/projects/ui-organization/package.json b/projects/ui-organization/package.json index f23ff36..5b2d538 100644 --- a/projects/ui-organization/package.json +++ b/projects/ui-organization/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-ui-organization", - "version": "0.0.202", + "version": "0.0.222", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, @@ -10,6 +10,10 @@ "@angular/core": "^9.0.2", "@angular/material": "^9.0.0", "@ucap/core": "~0.0.1", + "@ucap/domain-common": "~0.0.1", + "@ucap/domain-organization": "~0.0.1", + "@ucap/domain-group": "~0.0.1", + "@ucap/domain-status": "~0.0.1", "@ucap/ui-scss": "~0.0.1", "@ucap/ng-ui": "~0.0.1", "@ucap/ng-ui-material": "~0.0.1", diff --git a/projects/ui-organization/src/lib/components/profile-01.component.html b/projects/ui-organization/src/lib/components/profile-01.component.html index 95c7d7e..be8d5c2 100644 --- a/projects/ui-organization/src/lib/components/profile-01.component.html +++ b/projects/ui-organization/src/lib/components/profile-01.component.html @@ -222,7 +222,10 @@ + + + + + + + + + + +
    + +
    + + + + + + diff --git a/projects/ui-organization/src/lib/components/profile-menu-02.component.scss b/projects/ui-organization/src/lib/components/profile-menu-02.component.scss new file mode 100644 index 0000000..45527a3 --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-menu-02.component.scss @@ -0,0 +1,6 @@ +@import '~@ucap/lg-scss/mixins'; + +.ucap-organization-profile-menu-02-container { + width: 100%; + height: 100%; +} diff --git a/projects/ui-organization/src/lib/components/profile-menu-02.component.spec.ts b/projects/ui-organization/src/lib/components/profile-menu-02.component.spec.ts new file mode 100644 index 0000000..1aa6768 --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-menu-02.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ProfileMenu02Component } from './profile-menu-02.component'; + +describe('app::ucap::group::ProfileMenu02Component', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [ProfileMenu02Component] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(ProfileMenu02Component); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(ProfileMenu02Component); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(ProfileMenu02Component); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/projects/ui-organization/src/lib/components/profile-menu-02.component.stories.ts b/projects/ui-organization/src/lib/components/profile-menu-02.component.stories.ts new file mode 100644 index 0000000..2518afe --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-menu-02.component.stories.ts @@ -0,0 +1,26 @@ +import { moduleMetadata } from '@storybook/angular'; +import { action } from '@storybook/addon-actions'; +import { linkTo } from '@storybook/addon-links'; + +import { BrowserModule } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + +import { OrganizationUiModule } from '../organization-ui.module'; + +import { ProfileMenu02Component } from './profile-menu-02.component'; + +export default { + title: 'ui-organization::ProfileMenu02Component', + component: ProfileMenu02Component, + decorators: [ + moduleMetadata({ + imports: [BrowserModule, BrowserAnimationsModule, OrganizationUiModule], + providers: [] + }) + ] +}; + +export const Default = () => ({ + component: ProfileMenu02Component, + props: {} +}); diff --git a/projects/ui-organization/src/lib/components/profile-menu-02.component.theme.scss b/projects/ui-organization/src/lib/components/profile-menu-02.component.theme.scss new file mode 100644 index 0000000..87e3156 --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-menu-02.component.theme.scss @@ -0,0 +1,20 @@ +@import '~@ucap/ng-ui-material/material'; + +@mixin ucap-organization-profile-menu-02-theme($theme) { + $is-dark-theme: map-get($theme, is-dark); + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .ucap-organization-profile-menu-02-container { + border-color: mat-color($foreground, secondary-text); + } +} + +@mixin ucap-organization-profile-menu-02-typography($config) { + .ucap-organization-profile-menu-01-container { + font-family: mat-font-family($config); + } +} diff --git a/projects/ui-organization/src/lib/components/profile-menu-02.component.ts b/projects/ui-organization/src/lib/components/profile-menu-02.component.ts new file mode 100644 index 0000000..93ca37b --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-menu-02.component.ts @@ -0,0 +1,178 @@ +import { Subject } from 'rxjs'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Output, + EventEmitter, + Input, + ElementRef, + Self, + ViewChildren, + QueryList +} from '@angular/core'; + +import { MatTooltip } from '@angular/material/tooltip'; + +import { + User, + UserInfo, + UserInfoSS, + UserInfoF, + UserInfoDN +} from '@ucap/domain-organization'; +import { UserPermission } from '@ucap/domain-authorization'; +import { GroupInfoDetail } from '@ucap/domain-group'; + +import { ProfileMenuType } from '../types/profile-menu.type'; + +export type UserInfoTypes = UserInfo | UserInfoSS | UserInfoF | UserInfoDN; + +@Component({ + selector: 'ucap-organization-profile-menu-02', + templateUrl: './profile-menu-02.component.html', + styleUrls: ['./profile-menu-02.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ProfileMenu02Component implements OnInit, OnDestroy { + /** + * 1: normal, 2: chat>roomuserlist, 3:call>organization>userlist + */ + @Input() + menuButtonType: string; + + @Input() + user: User; + + @Input() + userPermission: UserPermission; + + @Input() + userInfo: UserInfoTypes; + + @Input() + groupInfo: GroupInfoDetail; + + @Input() + isShowMoreMenu: boolean; + + @Input() + isMe: boolean; + + @Input() + isShowForce: boolean; + + @Output() + clickProfileMenu = new EventEmitter<{ + menuType: ProfileMenuType; + userInfo: UserInfoTypes; + }>(); + + @Output() + clickMoreMenu = new EventEmitter<{ + event: MouseEvent; + userInfo: UserInfoTypes; + group: GroupInfoDetail; + rect: any; + }>(); + + @ViewChildren(MatTooltip) + tooltipQueryList: QueryList; + + private ngOnDestroySubject: Subject = new Subject(); + + ProfileMenuType = ProfileMenuType; + + constructor( + private changeDetectorRef: ChangeDetectorRef, + @Self() private elementRef: ElementRef + ) {} + + ngOnInit(): void {} + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + + this._closeTooltip(); + } + + onClickProfileMenu(event: MouseEvent, menuType: ProfileMenuType) { + event.stopPropagation(); + this._closeTooltip(); + + this.clickProfileMenu.emit({ menuType, userInfo: this.userInfo }); + } + + onClickMoreMenu(event: MouseEvent) { + event.stopPropagation(); + this._closeTooltip(); + + const rect = this.elementRef.nativeElement.getBoundingClientRect(); + + this.clickMoreMenu.emit({ + event, + userInfo: this.userInfo, + group: this.groupInfo, + rect + }); + } + + getDisabledBtn(type: ProfileMenuType): boolean { + if (!this.user || !this.user.madn || this.user.madn.trim().length === 0) { + if (type === ProfileMenuType.office || type === ProfileMenuType.mobile) { + return true; + } + } + + if (type === ProfileMenuType.office) { + if ( + !!this.userInfo && + !!this.userInfo.lineNumber && + this.userInfo.lineNumber.trim().length > 0 + ) { + return false; + } else { + return true; + } + } else if (type === ProfileMenuType.mobile) { + if ( + !!this.userInfo && + !!this.userInfo.hpNumber && + this.userInfo.hpNumber.trim().length > 0 + ) { + return false; + } else { + return true; + } + } else if (type === ProfileMenuType.videoConference) { + if (!!this.userPermission && !!this.userPermission.canVideoConference) { + return false; + } else { + return true; + } + } + // else if (type === 'SMS') { + // const smsUtils = new smsUtils( + // this.sessionStorageService, + // this.nativeService + // ); + // return !smsUtils.getAuthSms(); + // } + + return true; + } + + private _closeTooltip() { + if (!!this.tooltipQueryList && this.tooltipQueryList.length > 0) { + this.tooltipQueryList.forEach((component) => { + component.hide(); + }); + } + } +} diff --git a/projects/ui-organization/src/lib/components/profile-selection-01.component.ts b/projects/ui-organization/src/lib/components/profile-selection-01.component.ts index b21983b..032c07f 100644 --- a/projects/ui-organization/src/lib/components/profile-selection-01.component.ts +++ b/projects/ui-organization/src/lib/components/profile-selection-01.component.ts @@ -14,9 +14,10 @@ import { TemplateRef } from '@angular/core'; -import { UserInfo } from '@ucap/protocol-sync'; import { MatChipEvent } from '@angular/material/chips'; +import { UserInfo } from '@ucap/domain-organization'; + export interface ProfileSelection { userInfo: UserInfo; color?: string; diff --git a/projects/ui-organization/src/lib/components/search-for-tenant.component.html b/projects/ui-organization/src/lib/components/search-for-tenant.component.html index ad784a8..f760377 100644 --- a/projects/ui-organization/src/lib/components/search-for-tenant.component.html +++ b/projects/ui-organization/src/lib/components/search-for-tenant.component.html @@ -34,6 +34,7 @@ matInput #inputSearchWord [value]="!!defaultSearchWord ? defaultSearchWord : ''" + (keyup.backspace)="onKeyupBackspace($event)" (keyup.enter)="onKeyupEnter($event)" (input)="changeSearchword(inputSearchWord.value)" /> diff --git a/projects/ui-organization/src/lib/components/search-for-tenant.component.ts b/projects/ui-organization/src/lib/components/search-for-tenant.component.ts index 5f7ba48..2a45667 100644 --- a/projects/ui-organization/src/lib/components/search-for-tenant.component.ts +++ b/projects/ui-organization/src/lib/components/search-for-tenant.component.ts @@ -13,9 +13,10 @@ import { ElementRef } from '@angular/core'; -import { Company } from '@ucap/api-external'; import { MatSelectChange, MatSelect } from '@angular/material/select'; +import { Company } from '@ucap/domain-organization'; + @Component({ selector: 'ucap-organization-search-for-tenant', templateUrl: './search-for-tenant.component.html', @@ -47,6 +48,9 @@ export class SearchForTenantComponent implements OnInit, OnDestroy { @Output() canceled: EventEmitter = new EventEmitter(); + @Output() + keyDownBackspace: EventEmitter = new EventEmitter(); + @ViewChild('selectSearchCompany', { static: true }) selectSearchCompany: MatSelect; @@ -72,6 +76,12 @@ export class SearchForTenantComponent implements OnInit, OnDestroy { onSelectionChangeTenant(event: MatSelectChange) { // this.changedSearchData(); } + onKeyupBackspace(event: Event) { + if (this.inputSearchWord.nativeElement.value === '') { + this.keyDownBackspace.emit(event); + } + event.stopPropagation(); + } onKeyupEnter(event: Event) { this.changedSearchData(); diff --git a/projects/ui-organization/src/lib/components/tree.component.ts b/projects/ui-organization/src/lib/components/tree.component.ts index 091c6b6..5b95ef9 100644 --- a/projects/ui-organization/src/lib/components/tree.component.ts +++ b/projects/ui-organization/src/lib/components/tree.component.ts @@ -1,5 +1,5 @@ -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { Subject, Observable } from 'rxjs'; +import { takeUntil, share } from 'rxjs/operators'; import { Component, @@ -22,13 +22,13 @@ import { MatTreeFlattener, MatTree } from '@angular/material/tree'; import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; -import { DeptInfo } from '@ucap/protocol-query'; +import { DeptInfo } from '@ucap/domain-organization'; import { LogService } from '@ucap/ng-logger'; import { VirtualScrollTreeFlatDataSource, VirtualScrollViewportComponent -} from '@ucap/ng-ui'; +} from '@ucap/ng-ui/scrolling'; export interface OrganizationNode { deptInfo: DeptInfo; @@ -154,15 +154,14 @@ export class TreeComponent implements OnInit, OnDestroy, AfterViewInit { @ViewChild(PerfectScrollbarDirective, { static: false }) psDirectiveRef?: PerfectScrollbarDirective; - @ViewChild(PerfectScrollbarDirective, { static: false }) - psDirectiveRef?: PerfectScrollbarDirective; - treeControl: FlatTreeControl; treeFlattener: MatTreeFlattener; dataSource: VirtualScrollTreeFlatDataSource; // tslint:disable-next-line: variable-name private _ngOnDestroySubject: Subject = new Subject(); + private vsvListChangedSubject: Subject = new Subject(); + public vsvListChanged$: Observable; constructor( private changeDetectorRef: ChangeDetectorRef, @@ -190,6 +189,10 @@ export class TreeComponent implements OnInit, OnDestroy, AfterViewInit { OrganizationNode, FlatNode >(this.treeControl, this.treeFlattener); + + this.vsvListChanged$ = this.vsvListChangedSubject + .asObservable() + .pipe(share()); } ngOnInit(): void { @@ -207,10 +210,16 @@ export class TreeComponent implements OnInit, OnDestroy, AfterViewInit { this._ngOnDestroySubject.next(); this._ngOnDestroySubject.complete(); } + + if (!!this.vsvListChangedSubject) { + this.vsvListChangedSubject.next(); + this.vsvListChangedSubject.complete(); + } } ngAfterViewInit(): void { this.dataSource.virtualScrollViewport = this.vsvList; + this.vsvListChangedSubject.next(); } hasChild = (_: number, node: FlatNode) => node.expandable; diff --git a/projects/ui-organization/src/lib/organization-ui.module.ts b/projects/ui-organization/src/lib/organization-ui.module.ts index 9df40f6..fa0bd60 100644 --- a/projects/ui-organization/src/lib/organization-ui.module.ts +++ b/projects/ui-organization/src/lib/organization-ui.module.ts @@ -18,7 +18,11 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; import { UCAP_I18N_NAMESPACE, I18nModule } from '@ucap/ng-i18n'; -import { UiModule } from '@ucap/ng-ui'; + +import { UiCoreModule } from '@ucap/ng-ui/core'; +import { UiInputModule } from '@ucap/ng-ui/input'; +import { UiPhoneModule } from '@ucap/ng-ui/phone'; +import { UiscrollingModule } from '@ucap/ng-ui/scrolling'; import { ModuleConfig } from './config/module-config'; import { _MODULE_CONFIG } from './config/token'; @@ -32,6 +36,8 @@ import { ProfileListNodeDirective } from './components/profile-list.component'; +import { ProfileMenu02Component } from './components/profile-menu-02.component'; + import { ProfileMenu01Component, ProfileMenu01IntroBelowDirective, @@ -59,6 +65,7 @@ const COMPONENTS = [ ProfileListComponent, ProfileImage01Component, ProfileMenu01Component, + ProfileMenu02Component, ProfileSelection01Component, SearchForTenantComponent, TreeComponent @@ -104,8 +111,12 @@ export class OrganizationUiRootModule {} PerfectScrollbarModule, - UiModule, - I18nModule + I18nModule, + + UiCoreModule, + UiInputModule, + UiPhoneModule, + UiscrollingModule ], exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], diff --git a/projects/ui-organization/src/lib/types/profile-menu.type.ts b/projects/ui-organization/src/lib/types/profile-menu.type.ts new file mode 100644 index 0000000..83a2b48 --- /dev/null +++ b/projects/ui-organization/src/lib/types/profile-menu.type.ts @@ -0,0 +1,14 @@ +export enum ProfileMenuType { + chat = 'CHAT', + message = 'MESSAGE', + mobile = 'MOBILE', + office = 'OFFICE', + videoConference = 'VIDEO_CONFERENCE', + profile = 'PROFILE', + exitForcing = 'EXIT_FORCING', + favorite = 'FAVORITE', + nickname = 'NICKNAME', + copyBuddy = 'COPY_BUDDY', + moveBuddy = 'MOVE_BUDDY', + removeBuddy = 'REMOVE_BUDDY' +} diff --git a/projects/ui-organization/src/lib/utils/presence.util.ts b/projects/ui-organization/src/lib/utils/presence.util.ts index 1b63e14..29485dd 100644 --- a/projects/ui-organization/src/lib/utils/presence.util.ts +++ b/projects/ui-organization/src/lib/utils/presence.util.ts @@ -1,6 +1,4 @@ -import { PresenceType, StatusCode } from '@ucap/core'; - -import { StatusBulkInfo } from '@ucap/protocol-status'; +import { PresenceType, StatusCode, StatusBulkInfo } from '@ucap/domain-status'; export class PresenceUtil { /** @@ -67,7 +65,7 @@ export class PresenceUtil { return false; } - return StatusCode.OnLine === statusCode; + return StatusCode.Offline !== statusCode; } /** diff --git a/projects/ui-organization/src/public-api.ts b/projects/ui-organization/src/public-api.ts index 5233cc5..e48603c 100644 --- a/projects/ui-organization/src/public-api.ts +++ b/projects/ui-organization/src/public-api.ts @@ -19,6 +19,7 @@ export * from './lib/pipes/translate.pipe'; export * from './lib/services/translate.service'; export * from './lib/types/call.type'; +export * from './lib/types/profile-menu.type'; export * from './lib/utils/presence.util'; diff --git a/projects/ui/breadcrumb/package.json b/projects/ui/breadcrumb/package.json new file mode 100644 index 0000000..0006bc1 --- /dev/null +++ b/projects/ui/breadcrumb/package.json @@ -0,0 +1,26 @@ +{ + "ngPackage": { + "lib": { + "entryFile": "src/public-api.ts", + "styleIncludePaths": [ + "../src/assets/scss" + ], + "umdModuleIds": { + "@ucap/ng-i18n": "@ucap/ng-i18n" + } + } + }, + "peerDependencies": { + "@angular/animations": "^9.0.2", + "@angular/cdk": "^9.0.0", + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@angular/material": "^9.0.0", + "@angular/platform-browser": "^9.0.2", + "@ucap/core": "~0.0.1", + "@ucap/ui-scss": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "@ucap/ng-ui-material": "~0.0.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/ui/src/lib/components/breadcrumb.component.html b/projects/ui/breadcrumb/src/lib/components/breadcrumb.component.html similarity index 100% rename from projects/ui/src/lib/components/breadcrumb.component.html rename to projects/ui/breadcrumb/src/lib/components/breadcrumb.component.html diff --git a/projects/ui/src/lib/components/breadcrumb.component.scss b/projects/ui/breadcrumb/src/lib/components/breadcrumb.component.scss similarity index 100% rename from projects/ui/src/lib/components/breadcrumb.component.scss rename to projects/ui/breadcrumb/src/lib/components/breadcrumb.component.scss diff --git a/projects/ui/src/lib/components/breadcrumb.component.spec.ts b/projects/ui/breadcrumb/src/lib/components/breadcrumb.component.spec.ts similarity index 100% rename from projects/ui/src/lib/components/breadcrumb.component.spec.ts rename to projects/ui/breadcrumb/src/lib/components/breadcrumb.component.spec.ts diff --git a/projects/ui/src/lib/components/breadcrumb.component.stories.ts b/projects/ui/breadcrumb/src/lib/components/breadcrumb.component.stories.ts similarity index 100% rename from projects/ui/src/lib/components/breadcrumb.component.stories.ts rename to projects/ui/breadcrumb/src/lib/components/breadcrumb.component.stories.ts diff --git a/projects/ui/src/lib/components/breadcrumb.component.theme.scss b/projects/ui/breadcrumb/src/lib/components/breadcrumb.component.theme.scss similarity index 100% rename from projects/ui/src/lib/components/breadcrumb.component.theme.scss rename to projects/ui/breadcrumb/src/lib/components/breadcrumb.component.theme.scss diff --git a/projects/ui/src/lib/components/breadcrumb.component.ts b/projects/ui/breadcrumb/src/lib/components/breadcrumb.component.ts similarity index 97% rename from projects/ui/src/lib/components/breadcrumb.component.ts rename to projects/ui/breadcrumb/src/lib/components/breadcrumb.component.ts index 4b4d20d..443afba 100644 --- a/projects/ui/src/lib/components/breadcrumb.component.ts +++ b/projects/ui/breadcrumb/src/lib/components/breadcrumb.component.ts @@ -20,6 +20,13 @@ import { forwardRef, HostBinding } from '@angular/core'; +import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations'; + +import { FocusableOption, FocusMonitor } from '@angular/cdk/a11y'; +import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'; +import { Platform } from '@angular/cdk/platform'; +import { Directionality } from '@angular/cdk/bidi'; +import { ViewportRuler } from '@angular/cdk/overlay'; import { CanDisable, @@ -30,18 +37,11 @@ import { mixinTabIndex, ThemePalette } from '@angular/material/core'; -import { FocusableOption, FocusMonitor } from '@angular/cdk/a11y'; -import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations'; -import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'; -import { Platform } from '@angular/cdk/platform'; -import { Directionality } from '@angular/cdk/bidi'; -import { ViewportRuler } from '@angular/cdk/overlay'; import { PaginatedHeaderDirective, PaginatedHeaderItem } from '../directives/paginated-header'; -import { DomService } from '../services/dom.service'; class BreadcrumbNodeMixinBase {} // tslint:disable-next-line: variable-name @@ -163,7 +163,6 @@ export abstract class _BreadcrumbBase extends PaginatedHeaderDirective private _indexToSelect: number | null = 0; constructor( - domService: DomService, elementRef: ElementRef, @Optional() dir: Directionality, ngZone: NgZone, @@ -173,7 +172,6 @@ export abstract class _BreadcrumbBase extends PaginatedHeaderDirective @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string ) { super( - domService, elementRef, changeDetectorRef, viewportRuler, @@ -259,7 +257,6 @@ export class BreadcrumbComponent extends _BreadcrumbBase { } constructor( - domService: DomService, elementRef: ElementRef, @Optional() dir: Directionality, ngZone: NgZone, @@ -272,7 +269,6 @@ export class BreadcrumbComponent extends _BreadcrumbBase { @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string ) { super( - domService, elementRef, dir, ngZone, diff --git a/projects/ui/src/lib/config/module-config.ts b/projects/ui/breadcrumb/src/lib/config/module-config.ts similarity index 100% rename from projects/ui/src/lib/config/module-config.ts rename to projects/ui/breadcrumb/src/lib/config/module-config.ts diff --git a/projects/ui/breadcrumb/src/lib/config/token.ts b/projects/ui/breadcrumb/src/lib/config/token.ts new file mode 100644 index 0000000..2ddc78d --- /dev/null +++ b/projects/ui/breadcrumb/src/lib/config/token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const _MODULE_CONFIG = new InjectionToken( + '@ucap/ng-ui-breadcrumb config of module' +); diff --git a/projects/ui/src/lib/directives/paginated-header.ts b/projects/ui/breadcrumb/src/lib/directives/paginated-header.ts similarity index 96% rename from projects/ui/src/lib/directives/paginated-header.ts rename to projects/ui/breadcrumb/src/lib/directives/paginated-header.ts index 6b70fbc..975a9bd 100644 --- a/projects/ui/src/lib/directives/paginated-header.ts +++ b/projects/ui/breadcrumb/src/lib/directives/paginated-header.ts @@ -1,11 +1,4 @@ -import { - merge, - of as observableOf, - Subject, - timer, - fromEvent, - Observable -} from 'rxjs'; +import { merge, of as observableOf, Subject, timer, fromEvent } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { @@ -24,6 +17,7 @@ import { Input, OnInit } from '@angular/core'; +import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations'; import { Direction, Directionality } from '@angular/cdk/bidi'; import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion'; @@ -35,9 +29,6 @@ import { normalizePassiveListenerOptions } from '@angular/cdk/platform'; -import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations'; -import { DomService } from '../services/dom.service'; - const passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true }) as EventListenerOptions; @@ -117,8 +108,6 @@ export abstract class PaginatedHeaderDirective protected _startWithLast = false; - private _windowResize$: Observable; - readonly selectFocusedIndex: EventEmitter = new EventEmitter< number >(); @@ -126,7 +115,6 @@ export abstract class PaginatedHeaderDirective readonly indexFocused: EventEmitter = new EventEmitter(); constructor( - protected _domService: DomService, protected _elementRef: ElementRef, protected _changeDetectorRef: ChangeDetectorRef, private _viewportRuler: ViewportRuler, @@ -155,14 +143,9 @@ export abstract class PaginatedHeaderDirective protected abstract _itemSelected(event: KeyboardEvent): void; - ngOnInit(): void { - this._windowResize$ = this._domService.attach('resize'); - } + ngOnInit(): void {} ngOnDestroy() { - this._domService.detach('resize'); - this._windowResize$ = undefined; - this._destroyed.next(); this._destroyed.complete(); this._stopScrolling.complete(); @@ -196,6 +179,7 @@ export abstract class PaginatedHeaderDirective const realign = () => { this.updatePagination(); }; + const windowResize = fromEvent(window, 'resize'); this._keyManager = new FocusKeyManager(this._items) .withHorizontalOrientation(this._getLayoutDirection()) @@ -207,7 +191,7 @@ export abstract class PaginatedHeaderDirective ? requestAnimationFrame(realign) : realign(); - merge(dirChange, resize, this._items.changes, this._windowResize$) + merge(dirChange, resize, this._items.changes, windowResize) .pipe(takeUntil(this._destroyed)) .subscribe(() => { realign(); diff --git a/projects/ui/breadcrumb/src/lib/ui-breadcrumb.module.ts b/projects/ui/breadcrumb/src/lib/ui-breadcrumb.module.ts new file mode 100644 index 0000000..6108fb2 --- /dev/null +++ b/projects/ui/breadcrumb/src/lib/ui-breadcrumb.module.ts @@ -0,0 +1,44 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { FlexLayoutModule } from '@angular/flex-layout'; + +import { MatRippleModule } from '@angular/material/core'; + +import { I18nModule } from '@ucap/ng-i18n'; + +import { ModuleConfig } from './config/module-config'; +import { _MODULE_CONFIG } from './config/token'; + +import { BreadcrumbComponent } from './components/breadcrumb.component'; +import { BreadcrumbNodeDirective } from './components/breadcrumb.component'; + +const COMPONENTS = [BreadcrumbComponent]; +const DIRECTIVES = [BreadcrumbNodeDirective]; +const PIPES = []; +const DIALOGS = []; +const SERVICES = []; + +@NgModule({ + declarations: [], + imports: [], + exports: [] +}) +export class UiBreadcrumbRootModule {} + +@NgModule({ + imports: [CommonModule, FlexLayoutModule, MatRippleModule, I18nModule], + exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], + declarations: [...COMPONENTS, ...DIALOGS, ...DIRECTIVES, ...PIPES], + entryComponents: [...DIALOGS] +}) +export class UiBreadcrumbModule { + public static forRoot( + config: ModuleConfig + ): ModuleWithProviders { + return { + ngModule: UiBreadcrumbRootModule, + providers: [{ provide: _MODULE_CONFIG, useValue: config }, ...SERVICES] + }; + } +} diff --git a/projects/ui/breadcrumb/src/public-api.ts b/projects/ui/breadcrumb/src/public-api.ts new file mode 100644 index 0000000..e8e6a26 --- /dev/null +++ b/projects/ui/breadcrumb/src/public-api.ts @@ -0,0 +1,12 @@ +/* + * Public API Surface of ui/breadcrumb + */ + +export * from './lib/config/module-config'; +export * from './lib/config/token'; + +export * from './lib/components/breadcrumb.component'; + +export * from './lib/directives/paginated-header'; + +export * from './lib/ui-breadcrumb.module'; diff --git a/projects/ui/button/package.json b/projects/ui/button/package.json new file mode 100644 index 0000000..0006bc1 --- /dev/null +++ b/projects/ui/button/package.json @@ -0,0 +1,26 @@ +{ + "ngPackage": { + "lib": { + "entryFile": "src/public-api.ts", + "styleIncludePaths": [ + "../src/assets/scss" + ], + "umdModuleIds": { + "@ucap/ng-i18n": "@ucap/ng-i18n" + } + } + }, + "peerDependencies": { + "@angular/animations": "^9.0.2", + "@angular/cdk": "^9.0.0", + "@angular/common": "^9.0.2", + "@angular/core": "^9.0.2", + "@angular/material": "^9.0.0", + "@angular/platform-browser": "^9.0.2", + "@ucap/core": "~0.0.1", + "@ucap/ui-scss": "~0.0.1", + "@ucap/ng-core": "~0.0.1", + "@ucap/ng-ui-material": "~0.0.1", + "tslib": "^1.10.0" + } +} diff --git a/projects/ui/src/lib/components/float-action-button.component.html b/projects/ui/button/src/lib/components/float-action-button.component.html similarity index 82% rename from projects/ui/src/lib/components/float-action-button.component.html rename to projects/ui/button/src/lib/components/float-action-button.component.html index 268e187..1e69141 100644 --- a/projects/ui/src/lib/components/float-action-button.component.html +++ b/projects/ui/button/src/lib/components/float-action-button.component.html @@ -4,7 +4,13 @@ (click)="onToggleFab()" >
    -